<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

EEPW首頁(yè) > 嵌入式系統 > 設計應用 > STM32固件庫V3.5.0的CMSIS文件詳細說(shuō)明

STM32固件庫V3.5.0的CMSIS文件詳細說(shuō)明

作者: 時(shí)間:2016-11-28 來(lái)源:網(wǎng)絡(luò ) 收藏
1.首先選擇啟動(dòng)文件:根據自己所用芯片的型號,選擇正確的啟動(dòng)文件。例如選擇STM32F107系列的處理器,我們就選擇startup_stm32f10x_hd.s。在這個(gè)文件里首先要定義自己堆棧的大小,根據自己的需要確定。文件中已經(jīng)定義好了中斷向量的位置及堆棧的初始化操作。

Reset_HandlerPROC

本文引用地址:http://dyxdggzs.com/article/201611/322716.htm

EXPORTReset_Handler[WEAK]

IMPORT__main

IMPORTSystemInit

LDRR0, =SystemInit

BLXR0

LDRR0, =__main

BXR0

ENDP

通過(guò)上面的代碼可以看到先執行SystemInit()函數在進(jìn)入main()函數。SystemInit()函數在文件system_stm32f10x.c中有定義。

2.:這個(gè)頭文件包含了STM32的大部份定義:

① 定義了芯片的類(lèi)型,例如:#define STM32F10X_CL

② 定義是否包含標準外設庫,#definedUSE_STDPERIPH_DRIVER

③ 定義外部振蕩器頻率,#definedHSE_VALUE

上面的三個(gè)定義,最好在編譯器選項中定義好,這樣就不用修改stm32f10x.h文件,最好不要修改這個(gè)文件。

④ 采用枚舉的方式定義中斷號。

⑤ 包含core_cm3.h,system_stm32f10x.h。

#include "core_cm3.h"

#include "system_stm32f10x.h"

#include

⑥ 定義數據類(lèi)型,例如:typedef uint32_tu32此外還定義了FlagStatus,ITStatus及ErrorStatus等。

⑦ 定義外設結構體,地址及用到的常量。

⑧ 包含stm32f10x_conf.h來(lái)配置外設。

#ifdef USE_STDPERIPH_DRIVER

#include "stm32f10x_conf.h"

#endif

⑨ 定義位操作的宏。

3.system_stm32f10x.h和system_stm32f10x.c,這兩個(gè)文件中:

① 定義一個(gè)全局變量:extern uint32_t SystemCoreClock:系統時(shí)鐘頻率與此變量的選擇有關(guān)。

#ifdef SYSCLK_FREQ_HSE

uint32_t SystemCoreClock= SYSCLK_FREQ_HSE;

#elif defined SYSCLK_FREQ_24MHz

uint32_t SystemCoreClock= SYSCLK_FREQ_24MHz;

#elif defined SYSCLK_FREQ_36MHz

uint32_t SystemCoreClock= SYSCLK_FREQ_36MHz;

#elif defined SYSCLK_FREQ_48MHz

uint32_t SystemCoreClock= SYSCLK_FREQ_48MHz;

#elif defined SYSCLK_FREQ_56MHz

uint32_t SystemCoreClock= SYSCLK_FREQ_56MHz;

#elif defined SYSCLK_FREQ_72MHz

uint32_t SystemCoreClock= SYSCLK_FREQ_72MHz;

#else

uint32_t SystemCoreClock= HSI_VALUE;

#endif

② SystemInit():這個(gè)函數就是啟動(dòng)文件中調用的函數。

③ SystemCoreClockUpdate():更新SystemCoreClock的值,與系統頻率一致。

注:利用此文件設置系統的時(shí)鐘具有一定的局限性,所以在編寫(xiě)程序時(shí)建議不要用他,而利用標準外設庫中的stm32f10x_rcc中的函數進(jìn)行設置。

4.stm32f10x_conf.h

配置需要的標準外設庫,將不需要用到的外設庫屏蔽掉。

定義assert_Param的模式,選擇#define USE_FULL_ASSERT時(shí),斷言輸出問(wèn)題所在的位置,在調試時(shí)很有用。

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í)鐘,否則外設就不能正常工作。



關(guān)鍵詞: STM32固件庫CMSIS文

評論


技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>