您的位置 首页 IOT

STM32固件库V3.5.0的CMSIS文件具体阐明

1首先选择启动文件:根据自己所用芯片的型号,选择正确的启动文件。例如选择STM32F107系列的处理器,我们就选择startup_stm32f10x_hds。

1.首要挑选发动文件:依据自己所用芯片的类型,挑选正确的发动文件。例如挑选STM32F107系列的处理器,咱们就挑选startup_stm32f10x_hd.s。在这个文件里首要要界说自己仓库的巨细,依据自己的需求确认。文件中现已界说好了中止向量的方位及仓库的初始化操作。

Reset_HandlerPROC

EXPORTReset_Handler[WEAK]

IMPORT__main

IMPORTSystemInit

LDRR0, =SystemInit

BLXR0

LDRR0, =__main

BXR0

ENDP

经过上面的代码能够看到先履行SystemInit()函数在进入main()函数。SystemInit()函数在文件system_stm32f10x.c中有界说。

2.:这个头文件包括了STM32的大部份界说:

① 界说了芯片的类型,例如:#define STM32F10X_CL

② 界说是否包括规范外设库,#definedUSE_STDPERIPH_DRIVER

③ 界说外部振荡器频率,#definedHSE_VALUE

上面的三个界说,最好在编译器选项中界说好,这样就不必修正stm32f10x.h文件,最好不要修正这个文件。

④ 选用枚举的方法界说中止号。

⑤ 包括core_cm3.h,system_stm32f10x.h。

#include “core_cm3.h”

#include “system_stm32f10x.h”

#include

⑥ 界说数据类型,例如:typedef uint32_tu32此外还界说了FlagStatus,ITStatus及ErrorStatus等。

⑦ 界说外设结构体,地址及用到的常量。

⑧ 包括stm32f10x_conf.h来装备外设。

#ifdef USE_STDPERIPH_DRIVER

#include “stm32f10x_conf.h”

#endif

⑨ 界说位操作的宏。

3.system_stm32f10x.h和system_stm32f10x.c,这两个文件中:

① 界说一个全局变量:extern uint32_t SystemCoreClock:体系时钟频率与此变量的挑选有关。

#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():这个函数便是发动文件中调用的函数。

③ SystemCoreClockUpdate():更新SystemCoreClock的值,与体系频率共同。

注:使用此文件设置体系的时钟具有必定的局限性,所以在编写程序时主张不要用他,而使用规范外设库中的stm32f10x_rcc中的函数进行设置。

4.stm32f10x_conf.h

装备需求的规范外设库,将不需求用到的外设库屏蔽掉。

界说assert_Param的形式,挑选#define USE_FULL_ASSERT时,断语输出问题所在的方位,在调试时很有用。

5.core_cm3:与CM3内核相关的操作

6. stm32f10x_it中止完成,在这里编写相应的中止服务函数。

7.还需求注意的一点是:进入main函数后,除了设置嘀嗒时钟和中止外,在操作各外设之前,调用:RCC_AHBPeriphClockCmd(),RCC_APB1PeriphClockCmd(),RCC_APB2PeriphClockCmd(),发动相应的时钟,不然外设就不能正常作业。

声明:本文内容来自网络转载或用户投稿,文章版权归原作者和原出处所有。文中观点,不代表本站立场。若有侵权请联系本站删除(kf@86ic.com)https://www.86ic.net/yingyong/iot/255976.html

为您推荐

联系我们

联系我们

在线咨询: QQ交谈

邮箱: kf@86ic.com

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

返回顶部