1、机电工程学院 STM32 实践 张华林 MDK环境下利用环境下利用STM32库库 V3.5创建工程创建工程并调试并调试的方法的方法 STM32 标准外设库标准外设库及说明及说明 1.解压解压 STM32F10 x_StdPeriph_Lib_V3.5.0 库到硬盘(如库到硬盘(如 F 盘盘)2.库中自带的库中自带的 MDK 模板示例模板示例 1)位置)位置 机电工程学院 STM32 实践 张华林 2)工程工程组织结构组织结构 3)详细结构)详细结构 机电工程学院 STM32 实践 张华林 机电工程学院 STM32 实践 张华林 3.库文件结构库文件结构 1)Chm 中的目录树中的目录树 2)W
2、indows 资源管理器中的结构资源管理器中的结构 机电工程学院 STM32 实践 张华林 机电工程学院 STM32 实践 张华林 表:表:STM32F10 x_StdPeriph_Lib_V3.5.0文件夹描述文件夹描述 _htmresc 本文件夹包含了所有的 html 页面资源 Libraries CMSIS 文件路径较深 STM32F10 x_StdPeriph_Driver inc 标准外设库驱动头文件 src 标准外设库驱动源文件 Project Examples 标准外设库驱动的完整例程 Template MDK-ARM KEIL RVMDK 的项目模板示例 Utilities S
3、TM32-EVAL 本文件夹包含了用于STM32100B-EVAL 等评估板的专用驱动 标准外设库的第一部分是 CMSIS 和 STM32F10 x_StdPeriph_Driver,是 STM32F10 x CPU 资源的总括:CMSIS 是独立于供应商的 Cortex-M 处理器系列硬件抽象层,为芯片厂商和中间件供应商提供了简单的处理器软件接口,简化了软件复用工作,降低了Cortex-M 上操作系统的移植难度,并减少了新入门的微控制器开发者的学习曲线和新产品的上市时间;STM32F10 x_StdPeriph_Driver 则包括了分别对应包括了所有外设对应驱动函数,这些驱动函数均使用 C
4、 语言编写,并提供了统一的易于调用的函数接口,供开发者使用。Project 文件夹中则包括了 ST 官方的所有例程和基于不同编译器的项目模板,这些例程是学习和使用 STM32 的重要参考。Utilities 包含了相关评估板的示例程序和驱动函数,供使用官方评估板的开发者使用,很多驱动函数同样可以作为学习的重要参考。机电工程学院 STM32 实践 张华林 CMSIS 中中 内核设备访问层:内核设备访问层:(CM3/CoreSupport)core_cm3.h:CMSIS 的 Cortex-M3 内核设备访问层头文件 core_cm3.c:CMSIS 的 Cortex-M3 内核设备访问层源文件
5、微控制器外设访问层:(CM3/DeviceSupport/ST/STM32F10X)stm32f10 x.h:CMSIS 的 Cortex-M3 STM32f10 xxx 微控制器外设访问层头文件 system_stm32f10 x.h:CMSIS 的 Cortex-M3 STM32f10 xxx 微控制器外设访问层头文件 system_stm32f10 x.c:CMSIS 的 Cortex-M3 STM32f10 xxx 微控制器外设访问层源文件 机电工程学院 STM32 实践 张华林 STM32F10 xxx 标准外设库体系结构标准外设库体系结构 文件功能说明文件功能说明 文件名 功能描述
6、 具体功能说明 core_cm3.h core_cm3.c Cortex-M3内核及其设备文件 访问 Cortex-M3内核及其设备:NVIC,SysTick 等 访问 Cortex-M3的 CPU 寄存器和内核外设的函数 stm32f10 x.h 微控制器专用头文件 这个文件包含了 STM32F10 x 全系列所有外设寄存器的定义(寄存器的基地址和布局)、位定义、中断向量表、存储空间的地址映射等 system_stm32f10 x.h system_stm32f10 x.c 微控制器专用系统文件 函数 SystemInit,用来初始化微控制器 函数 Sysem_ExtMemCtl,用来配置外
7、部存储器控制器。它位于文件startup_stm32f10 x_xx.s/.c,在跳转到main 前调用 SystemFrequncy,该值代表系统时钟频率 startup_stm32f10 x_Xd.s 编译器启动代码 微控制器专用的中断处理程序列表(与头文件一致)弱定义(Weak)的中断处理程序默认函数(可以被用户代码覆盖)该文件是与编译器相关的 stm32f10 x_conf.h 固件库配置文件 通过更改包含的外设头文件来选择固件库所使用的外设,在新建程序和进行功能变更之前应当首先修改对应的配置。stm32f10 x_it.h stm32f10 x_it.c 外设中断函数文件 用户可以相
8、应的加入自己的中断程序的代码,对于指向同一个中断向量的多个不同中断请求,用户可以通过判断外设的中断标志位来确定准确的中断源,执行相应的中断服务函数。stm32f10 x_ppp.h stm32f10 x_ppp.c 外设驱动函数文件 包括了相关外设的初始化配置和部分功能应用函数,这部分是进行编程功能实现的重要组成部分。Application.c 用户文件 用户程序文件,通过标准外设库提供的接口进行相应的外设配置和功能设计。机电工程学院 STM32 实践 张华林 在实际开发过程中,根据应用程序的需要,可以采取 2 2 种方法使用标准外设库种方法使用标准外设库(StdPeriph_Lib):(1)
9、使用外设驱动:这时应用程序开发基于外设驱动的 API(应用编程接口)。用户只需要配置文件”stm32f10 x_conf.h”,并使用相应的文件”stm32f10 x_ppp.h/.c”即可。(2)不使用外设驱动:这时应用程序开发基于外设的寄存器结构和位定义文件。标准外设库(StdPeriph_Lib)支持 STM32F10 xxx 系列全部成员:大容量,中容量和小容量产品。实际开发中根据使用的 STM32 产品具体型号,用户可以通过文件”stm32f10 x.h”中的预处理 define 或者通过开发环境中的全局设置来配置标准外设库(StdPeriph_Lib),一个 define 对应一个
10、产品系列。STM32F10 x_LD:STM32 小容量产品 STM32F10 x_MD:STM32 中容量产品 STM32F10 x_HD:STM32 大容量产品 在库文件中这些 define 的具体作用是:l 文件“stm3210f.h”中的中断 IRQ 定义 l 启动文件中的向量表,小容量,中容量,大容量产品各有一个启动文件 l 外设存储器映像和寄存器物理地址 l 产品设置:外部晶振(HSE)的值等 l 系统配置函数 通过宏定义这种方式,可以使标准外设库适用于不同系列的产品,同时也方便与不同产品之间的软件移植,极大的方便了软件的开发。STM32F10XXXSTM32F10XXX 标准外设
11、库的使用标准外设库的使用 标准外设库中包含了众多的变量定义和功能函数,如果不能了解他们的命名规范和使用规律将会给编程带来很大的麻烦,本节将主要叙述标准外设库中的相关规范,通过这些规范的学习可以更加灵活的使用固件库,同时也将极大增强程序的规范性和易读性,同时标准外设库中的这种规范也值得我们在进行其他相关的开发时使用和借鉴。1.缩写定义缩写定义 标准外设库中的主要外设均采用了缩写的形式,通过这些缩写可以很容易的辨认对应的外设。缩写 外设/单元 ADC 模数转换器 BKP 备份寄存器 CAN 控制器局域网模块 CEC CRC CRC 计算单元 DAC 数模转换器 机电工程学院 STM32 实践 张华
12、林 DBGMCU 调试支持 DMA 直接内存存取控制器 EXTI 外部中断事件控制器 FLASH 闪存存储器 FSMC 灵活的静态存储器控制器 GPIO 通用输入输出 I2C I2C 接口 IWDG 独立看门狗 PWR 电源/功耗控制 RCC 复位与时钟控制器 RTC 实时时钟 SDIO SDIO 接口 SPI 串行外设接口 TIM 定时器 USART 通用同步/异步收发器 WWDG 窗口看门狗 2.命名规则命名规则 标准外设库遵从以下命名规则 PPP表示任一外设缩写,例如:ADC。源程序文件和头文件命名都以“stm32f10 x_”作为开头,例如:stm32f10 x_conf.h。常量仅被
13、应用于一个文件的,定义于该文件中;被应用于多个文件的,在对应头文件中定义。所有常量都由英文字母大写书写。寄存器作为常量处理。他们的命名都由英文字母大写书写。在大多数情况下,他们采用与缩写规范一致。外设函数的命名以该外设的缩写加下划线为开头。每个单词的第一个字母都由英文字母大写书写,例如:SPI_SendData。在函数名中,只允许存在一个下划线,用以分隔外设缩写和函数名的其它部分。对于函数命名,总的来说有以下规则:l 名为 PPP_Init 的函数,其功能是根据 PPP_InitTypeDef 中指定的参数,初始化外设 PPP,例如TIM_Init.l 名为 PPP_DeInit 的函数,其功
14、能为复位外设 PPP 的所有寄存器至缺省值,例如 TIM_DeInit.l 名为 PPP_Init 的函数,其功能为通过设置 PPP_InitTypeDef 结构中的各种参数来定义外设的功能,例如:USART_Init.l 名为 PPP_Cmd 的函数,其功能为使能或者失能外设 PPP,例如:SPI_Cmd.机电工程学院 STM32 实践 张华林 l 名为 PPP_ITConfig 的函数,其功能为使能或者失能来自外设 PPP 某中断源,例如:RCC_ITConfig.l 名为 PPP_DMAConfig 的函数,其功能为使能或者失能外设 PPP 的 DMA 接口,例如:TIM1_DMACon
15、fig.l 用以配置外设功能的函数,总是以字符串“Config”结尾,例如 GPIO_PinRemapConfig.l 名为 PPP_GetFlagStatus 的函数,其功能为检查外设 PPP 某标志位被设置与否,例如:I2C_GetFlagStatus.l 名为 PPP_ClearFlag 的函数,其功能为清除外设 PPP 标志位,例如:I2C_ClearFlag.l 名为 PPP_GetITStatus 的函数,其功能为判断来自外设 PPP 的中断发生与否,例如:I2C_GetITStatus.l 名为 PPP_ClearITPendingBit 的函数,其功能为清除外设 PPP 中断待
16、处理标志位,例如:I2C_ClearITPendingBit.3.3.变量变量类型类型定义定义 在早期的版本中有 24 个变量类型定义,在 Keil 的安装根目录下,可以找到对应的定义,路径为:KeilARMINCSTSTM32F10 xstm32f10 x_type.h/*Includes-*/*Exported types-*/typedef signed long s32;typedef signed short s16;typedef signed char s8;typedef signed long const sc32;/*Read Only*/typedef signed short const sc16;/*Read Only*/typedef signed char const sc8;/*Read Only*/typedef volatile signed long vs32;typedef volatile signed short vs16;typedef volatile signed char vs8;typedef volatile signed lon
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1