STM32固件庫V3.5.0的CMSIS文件詳細說(shuō)明
Reset_Handler
通過(guò)上面的代碼可以看到先執行SystemInit()函數在進(jìn)入main()函數。SystemInit()函數在文件system_stm32f10x.c中有定義。
2.:這個(gè)頭文件包含了STM32的大部份定義:
① 定義了芯片的類(lèi)型,例如:#define STM32F10X_CL
② 定義是否包含標準外設庫,#defined
③ 定義外部振蕩器頻率,#defined
上面的三個(gè)定義,最好在編譯器選項中定義好,這樣就不用修改stm32f10x.h文件,最好不要修改這個(gè)文件。
④ 采用枚舉的方式定義中斷號。
⑤ 包含core_cm3.h,system_stm32f10x.h。
#include "system_stm32f10x.h"
#include
⑥ 定義數據類(lèi)型,例如:typedef uint32_t
⑦ 定義外設結構體,地址及用到的常量。
⑧ 包含stm32f10x_conf.h來(lái)配置外設。
#endif
⑨ 定義位操作的宏。
3.system_stm32f10x.h和system_stm32f10x.c,這兩個(gè)文件中:
① 定義一個(gè)全局變量:extern uint32_t SystemCoreClock:系統時(shí)鐘頻率與此變量的選擇有關(guān)。
#ifdef SYSCLK_FREQ_HSE
#elif defined SYSCLK_FREQ_24MHz
#elif defined SYSCLK_FREQ_36MHz
#elif defined SYSCLK_FREQ_48MHz
#elif defined SYSCLK_FREQ_56MHz
#elif defined SYSCLK_FREQ_72MHz
#else
#endif
② SystemInit():這個(gè)函數就是啟動(dòng)文件中調用的函數。
③ SystemCoreClockUpdate():更新SystemCoreClock的值,與系統頻率一致。
注:利用此文件設置系統的時(shí)鐘具有一定的局限性,所以在編寫(xiě)程序時(shí)建議不要用他,而利用標準外設庫中的stm32f10x_rcc中的函數進(jìn)行設置。
①
②
5.core_cm3:與CM3內核相關(guān)的操作
6. stm32f10x_it中斷實(shí)現,在這里編寫(xiě)相應的中斷服務(wù)函數。
7.還需要注意的一點(diǎn)是:進(jìn)入main函數后,除了設置嘀嗒時(shí)鐘和中斷外,在操作各外設之前,調用:RCC_AHBPeriphClockCmd(),RCC_APB1PeriphClockCmd(),RCC_APB2PeriphClockCmd(),啟動(dòng)相應的時(shí)鐘,否則外設就不能正常工作。
評論