学习笔记7 | 您所在的位置:网站首页 › malloc库文件 › 学习笔记7 |
主要针对一些使用较多、但本人并不十分清楚其作用的stm32官方.c/.h文件进行系统的梳理。贴上官网标准库下载地址(操作如下图),或是直接下载这个附件。 首先要搞清楚文件之间的关系。上图。
CMSIS共三层:核内外设访问层Core Peripheral Access Layer(CPAL),中间件访问层Middleware Access Layer(MWAL),设备访问层Device Peripheral Access Layer(DPAL)。 CPAL用于访问内核的寄存器和组件,如NVIC,调试系统等。 MWAL用于对中间件的访问。 DPAL用于定义一些硬件寄存器的地址和一些外设访问函数。由芯片制造商实现。 CPAL层的实现——Core_cm3.c文件,DPAL层的实现——system_stm32f10x.c文件 STM32全部的标准外设名称如下表所示。 比较喜欢这样建工程 1、STARTUP----启动文件 startup_stm32f10x_hd.s 2、CMSIS------CMSIS标准文件 core_cm3.h 内核功能定义 system_stm32f1xx.c 系统,c文件 system_stm32f1xx.h 系统.h文件 stm32f10x.h 头文件 3、FWLIB------库文件 misc.c/.h stm32f10x_rcc.c/.h 库函数源文件及对应头文件 stm32f10x_gpio.c/.h .... 4、HARDWARE---外设文件 oled、key文件... 5、SYSTEM-----系统文件 位带操作函数sys文件、延时函数delay文件、串口操作函数usart文件... 6、USER-------用户文件 main.c 主源文件 stm32f1xx_it.c 中断源文件 stm32f1xx_it.h 中断.h文件 XXX 工程文件 1、misc.c/h一些版本的库函数中没有单独对于NVIC的外设驱动,而是放在了misc.c ,以替代原stm32f10x_nvic.c。 定义了中断优先级分组以及 Systick 定时器相关的函数。 .c路径:STM32F10x_StdPeriph_Lib_V3.5.0\Libraries\STM32F10x_StdPeriph_Driver\src 2、startup_stm32f10x_hd.s不同Flash容量不同启动文件(见下)。作用:设置堆栈、PC指针、初始化中断向量表、配置系统时钟等。 此段代码的作用是在系统复位后引导进入 main 函数,同时在进入 main 函数之前,首先要调用 SystemInit()系统初始化函数。 .c路径:STM32F10x_StdPeriph_Lib_V3.5.0\Libraries\CMSIS\CM3\DeviceSupport\ST\STM32F10x\startup\arm 3、system_stm32f10x.c/h初始化时钟的频率、系统时钟,设置中断向量表的基地址和偏移地址。(这里有一个非常重要的SystemInit( )函数申明,在系统启动时都会调用,以设置系统的整个系统和总线时钟) HSE=8M,经过PLL倍频为72M。 .c路径:STM32F10x_StdPeriph_Lib_V3.5.0\Libraries\CMSIS\CM3\DeviceSupport\ST\STM32F10x 5、stm32f10x_conf.h相当于包含了所有的ST的3.5库的头文件,用户在上层调用时只需要打开这个文件的注释即可。实际使用中,会根据不同项目做改动(可注释掉不需用到的文件)。 .c路径:STM32F10x_StdPeriph_Lib_V3.5.0\Project\STM32F10x_StdPeriph_Template 6、stm32f10x_it.c/h相当于所有中断函数入口,stm32f103的中断入口名称都固定,方便移植。事实上,用户也可以把各自的中断函数放在各自的模块中而不使用该文件,效果相同。实际使用会根据不同项目做改动。 .c路径:STM32F10x_StdPeriph_Lib_V3.5.0\Project\STM32F10x_StdPeriph_Template 7、core_cm3.c/h由ARM 公司提供。是CMSIS的核心文件,提供进入 M3 内核接口,实现了内核里面外设的寄存器映射。不需要修改这个文件。 1、NVIC相关的变量和函数。 中断向量的使能 中断向量的禁止 中断向量的挂起 清除挂起的中断 设置中断的优先级 读取中断的优先级 2、systick定时器的配置,static __INLINE uint32_t SysTick_Config(uint32_t ticks);用来使能中断、开启systick定时器。 .c路径:STM32F10x_StdPeriph_Lib_V3.5.0\Libraries\CMSIS\CM3\CoreSupport 8、stm32f10x.h十分重要的文件!主要功能: 定义各种中断向量表的顺序定义数据类型定义MCU外设相关的结构体定义外设在FLASH中的地址进行外设寄存器的位定义它实现了内核以外的外设的寄存器映射(映射到存储区),相当于51单片机中的。 typedef struct { __IO uint32_t CRL; __IO uint32_t CRH; __IO uint32_t IDR; __IO uint32_t ODR; __IO uint32_t BSRR; __IO uint32_t BRR; __IO uint32_t LCKR; } GPIO_TypeDef; //外设别名区的基地址 #define PERIPH_BASE ((uint32_t)0x40000000) //APB2外设总线上寄存器的基地址,GPIO挂在APB2总线上 #define APB2PERIPH_BASE (PERIPH_BASE + 0x10000) // GPIO外设的地址 #define GPIOA_BASE (APB2PERIPH_BASE + 0x0800) // 将外设地址强制转化为结构体的指针,然后就可以通过指针GPIOx区访问某个端口中的寄存器 #define GPIOA ((GPIO_TypeDef *) GPIOA_BASE).c路径:STM32F10x_StdPeriph_Lib_V3.5.0\Libraries\CMSIS\CM3\DeviceSupport\ST\STM32F10x 9、stm32f10x_xx.c/.hstm32f10x_xx.c:外设的驱动函数库文件 stm32f10x_xx.h:存放外设的初始化结构体,外设初始化结构体成员的参数列表、外设固件库函数的声明 参考文章:1、2、3、4 |
CopyRight 2018-2019 实验室设备网 版权所有 |