大家在在学习stm32仿真时遇到过这个问题?
以前就遇到但是没有去想,开始仿真时自动进入main函数调试。如图所示
按下仿真工具栏的“复位”后,
仿真走到了起动文件中,在 LDR R0, =__main BX R0两个汇编语句怎么按都进不了main函数中。然后就想到了在设置main断点,再点击执行到断点就可以轻松地进入主函数中调试了。
如图所示
问题的确很奇怪,
最后发现配置时没有把微库勾
打√后再调试仿真
现在都正常了,复位后可以进去main函数了
再看这个
STM32F10xxx_Keil中添加的预定义宏
其中USE_STDPERIPH_DRIVER和STM32F10X_HD什么意思?
(1)USE_STDPERIPH_DRIVER
to use or not the peripheral’s drivers in application code (i.e. code will be based on direct access to peripheral’s registers rather than drivers API) , this option is controlled by the #define USE_STDPERIPH_DRIVER
即这个定义控制了是否在应用中启用外设驱动。我们使用标准外设库本来就为了方便控制外设,所以要添加这个定义,以启用外设驱动。
(2)STM32F10X_HD
如果你使用stm32f10x_stdperiph_lib,会发现在stm32f10x.h文件会有一段关于宏选择的代码,每种类别都有所区别,例如sram或者flash或者外设数量不一样,所以stm32标准外设库必须根据你使用的处理器来做相应的预处理。如:
我们可以更改stm32f10x.h中的定义,这样,就不用在项目(C/C++)的定义中填写