学习笔记7 您所在的位置:网站首页 malloc库文件 学习笔记7

学习笔记7

2023-08-25 17:33| 来源: 网络整理| 查看: 265

主要针对一些使用较多、但本人并不十分清楚其作用的stm32官方.c/.h文件进行系统的梳理。贴上官网标准库下载地址(操作如下图),或是直接下载这个附件。在这里插入图片描述

目录 简介工程目录1、misc.c/h2、startup_stm32f10x_hd.s3、system_stm32f10x.c/h5、stm32f10x_conf.h6、stm32f10x_it.c/h7、core_cm3.c/h8、stm32f10x.h9、stm32f10x_xx.c/.h

简介

首先要搞清楚文件之间的关系。上图。

在这里插入图片描述 打开固件库文件。Libraries 文件夹下面有CMSIS和 STM32F1xx_StdPeriph_Driver 两个目录,这两个目录包含固件库核心的所有子文件夹和文件。 Libraries 1)CMSIS存放的是符合CMSIS规范的文件。包括STM32F1核内外设访问层代码,DSP 软件库,RTOS API,以及 STM32F1 片上外设访问层代码等。 2)STM32F1xx_StdPeriph_Driver放的是 STM32F1 标准外设固件库源码文件和对应的头文件。inc 目录存放的是 stm32f1xx_ppp.h 头文件,无需改动。src 目录下面放的是 stm32f1xx_ppp.c 格式的固件库源码文件。每一个.c 文件和一个相应的.h 文件对应,每个外设对应一组文件。 ***Project *** 1)STM32F1xx_StdPeriph_Examples 文件夹下面存放的的 ST 官方提供的固件实例源码,日后开发可修改这个官方提供的实例来快速驱动自己的外设。 2)STM32F1xx_StdPeriph_Template 文件夹下面存放的是工程模板。 Utilities 存放官方评估板的对应源码。

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 函数。Reset_Handler 中断函数是唯一实现了的中断处理函数,其他的中断函数基本都是死循环。Reset_handler 在系统启动的时候会调用。

; Reset handler Reset_Handler PROC EXPORT Reset_Handler [WEAK] IMPORT __main IMPORT SystemInit LDR R0, =SystemInit BLX R0 LDR R0, =__main BX R0 ENDP

此段代码的作用是在系统复位后引导进入 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库的头文件,用户在上层调用时只需要打开这个文件的注释即可。实际使用中,会根据不同项目做改动(可注释掉不需用到的文件)。 在这里插入图片描述 stm32f10x.h头文件中包含了stm32f10x_conf.h 。

.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/.h

stm32f10x_xx.c:外设的驱动函数库文件 stm32f10x_xx.h:存放外设的初始化结构体,外设初始化结构体成员的参数列表、外设固件库函数的声明

参考文章:1、2、3、4



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有