已经简单的学习了GPIO,NVIC,EXTI,SYSTICK这几个方面的大概;通过点亮LED灯,通过按键控制灯的亮灭,按键中断,LED延时等等,虽说只是些小程序,但这些小程序其实是依靠了ST和ARM成熟的技术支持才得以实现出现的,下面就看看他们具体做了什么?
ARM处理器相关函数:
启动文件:
- 初始化堆栈指针
- 初始化程序计数器(Reset_handler)
- 初始化中断向量表
- 配置系统时钟
- 调用C库函数_main初始化用户堆栈,从而最终调用main函数去执行C代码
core_cm3.h文件:
- 封装内核外设的寄存器,抽象成为结构体(NVIC_Type)
- 内核外设寄存器的定义
- 内核外设的内存映射及声明
- 内核外设的相关函数的具体实现(主要是NVIC和SysTICk等)
- 不同编译器的具体设置
Core_cm3.c文件:
- 一些汇编级函数的具体实现
stm32f10x.h文件:
- 处理器及片上外设的中断号定义
- 封装片上外设的寄存器,抽象成为结构体(TIM_TypeDef)
- 片上外设的内存映射及声明 #define TIM2 ((TIM_TypeDef *) TIM2_BASE)
- 内核及片上外设的寄存器的位定义
- 包含了所有外设的头文件
system_stm32f10x.h
- 声明系统时钟初始化和更新函数
system_stm32f10x.h
- 定义时钟的相关函数
ST库函数:
misc.h文件 :
- 定义NVIC初始化结构体
- Vector_Table_Base,System_Low_Power,Preemption_Priority_Group,SysTick_clock_source
- 声明NVIC相关函数,SysTick相关函数
misc.c文件:
- 定义NVIC相关函数,SysTick相关函数
stm32f10x_片上外设.h文件:
- 定义外设模式配置结构体
- 定义外设初始化结构体(GPIO_InitTypeDef包含结构0个或多个结构体1)
- 声明相关函数
stm32f10x_片上外设.c文件:
- 定义相关函数
以上仅为对应文件的部分概括。