目录
1-汇编编写的启动文件
startup_stm32f10x_hd.s:设置堆栈指针、设置PC指针、初始化中断向量表、配置系统时钟、对用C库函数_main最终去到C的世界
解析:
STM32程序运行前是先进入这个staatup_stm32f10x_hd.s这个汇编程序的,在这里面完成一系列的操作,比如设置堆栈指针、设置PC指针、初始化中断向量、配置系统时钟(注:虽然设置好了这些,但是并没有启动,所以我们要用的时候还是的自己去写程序启动的),最后就是进入到我们编写的main函数中去。
2-时钟配置文件
system_stm32f10x.c:把外部时钟HSE=8M,经过PLL倍频为72M。
解析:
这个文件是已经写好的,并且包含汇编程序中,所以待程序进入main函数时,时钟倍频已经安排好了。
至于为什么要使用这个把时钟频率加倍呢?
为了达到系统要求。
3-外设相关的
stm32f10x.h:实现了内核之外的外设的寄存器映射
xxx:GPIO、USRAT、I2C、SPI、FSMC
stm32f10x_xx.c:外设的驱动函数库文件
stm32f10x_xx.h:存放外设的初始化结构体,外设初始化结构体成员的参数列表,外设固件库函数的声明
解析:
stmf10x.h这个文件中就是很多的地址,寻找出要使用的寄存器,然后让他们分别对应着相应的功能。
头文件就是.h结尾的,在这里面放的就是我们需要使用的结构体、宏定义参数、结构成员参数(可使用枚举类型),还有就是.c文件里函数的声明。
而.c文件中存放的是针对外设的驱动配置 。
4-内核相关的
CMSIS - Cortex 微控制器软件接口标准
core_cm3.h:实现了内核里面外设的寄存器映射
core_cm3.c:内核外设的驱动固件库
NVIC(嵌套向量中断控制器)、SysTick(系统滴答定时器)
misc.h
misc.c
解析:
这些是固件库提供的相应函数,如果是初学的话,没必要搞那么清楚,待学到后面就是明白啥意思。
5-头文件的配置文件
stm32f10x_conf.h:头文件的头文件
//stm32f10x_usart.h
//stm32f10x_i2c.h
//stm32f10x_spi.h
//stm32f10x_adc.h
//stm32f10x_fsmc.h
......
解析:
为了避免引用函数时,多次引用头文件,也就是为了避免头文件过多的情况出现,我们编写一个头文件,里面包含着所以的头文件,那么以后调用的时候就只需要调用一个头文件就可以了。该头文件就叫做头文件的头文件。
6-专门存放中断服务函数的C文件
stm32f10x_it.c
stm32f10x_it.h
中断服务函数你可以随意放在其他的地方,并不是一定要放在stm32f10x_it.c
#include "stm32f10x.h" // 相当于51单片机中的 #include <reg51.h>
int main(void)
{
// 来到这里的时候,系统的时钟已经被配置成72M。
}
解析:
因为中断是经常要使用的一个功能,所以就单独为它开辟一个函数;
注:参考野火STM32