STM32学习笔记——了解固件库文件

STM32学习笔记——了解固件库文件

1. 启动文件startup_stm32f10x_hd.s

  • 堆栈以及堆的初始化
    定义中断向量表
    调用Reset Handler
    为中断向量表成员赋值及中断服务程序定义(停止)
    堆栈以及堆的初始化行为
  • ARM m3 C是怎么调用startup_stm32f10x_hd.s文件的?
      startup_stm32f10x_hd.s大部分内容不是被C调用的,而是在C程序之前运行的。m3上电之后会先从0地址处读取MSP,然后从0x4地址处读取复位向量,接着跳转到复位异常服务程序Reset_Handler(这些是m3内核自动做的,不需要编程)。如果你用MDK的话,在工程设置Debug下的run to main()上的勾去掉,然后进入调试,你会发现你运行的第一句就是Reset_Handler的第一句。
      Reset_Handler就是在startup_stm32f10x_hd.s中定义的,它一般会对系统初始化,然后进入main函数。
      向量表也是在startup.s中定义的,至于为什么程序编译之后向量表一定在0地址处,是因为向量表的前面会有类似AREA RESET, CODE, READONLY的声明。在MDK生成的分散加载文件中,RESET被设置在flash的0地址处,这样就规定了向量表的地址。

2. 时钟配置文件system_stm32f10x.c
将外部时钟8M倍频为72M

3. 内核相关文件CMSIS
core_cm3.c

  • ARM定制的一个用于Cortex-M系列的一个标准,主要是为了提供通用api接口来访问内核和一些片上外设,提高代码的可移植性。
  • define compiler specific symbols定义编译器类型
    ARM公司__CC_ARM(也就是keil软件使用的编译类型)
  • 在Keil中使用了__asm关键字后,编译器不会为函数增加返回指令,所以需要自己编写返回命令,也就是每个函数后面的 bx lr。

core_cm3.h

  • 实现内核外设的寄存器映射

NVIC(嵌套向量中断控制器)、SysTick(系统滴答定时器)
misc.h
misc.c

4. 外设相关文件FWLIB
stm32f10x.h 实现内核之外的寄存器映射
stm32f10x_xx.c 外设驱动函数库文件
stm32f10x_xx.h 存放外设初始化结构体,外设初始化结构体成员参数列表,外设固件库函数声明
xx:GPIO、USART、I2C、SPI、FSMC

5. 头文件配置
stm32f10x_conf.h 将库函数头文件包含

6. 中断服务函数文件
stm32f10x_it.c
stm32f10x_it.h

参考:

  • 野火单片机教学视频: 链接.
  • starup_stm32f10x_hd.s的作用: 链接.
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值