大家在在學習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++)的定義中填寫