
介绍 本文的目的是介绍如何把基于STM32F10xxx固件库V2.0.3(FWLib)开发的应用程序升级到STM32F10xxx标准外设库V3.0.0。本文的目的不是提供2个版本的详细信息,而是重点介绍2个 版本之间的差异。 注意:文中,除非特别指明,固件库(FWLib)代表STM32F10xxx固件库V2.0.3,而标准外设库(StdPeriph_Lib)代表STM32F10xxx标准外设库V3.0.0。术语表 小容量产品是指闪存存储器容量在16K至32K字节之间的STM32F101xx,STM32F102xx和STM32F103xx微控制器。 中容量产品是指闪存存储器容量在64K至128K字节之间的STM32F101xx,STM32F102xx和STM32F103xx微控制器。 大容量产品是指闪存存储器容量在256K至512K字节之间的STM32F101xx和STM32F103xx微控制器。 1.为什么把STM32F10xxx固件库(FWLib)V2.0.3升级为标准外设库(StdPeriph_Lib)V3.0.0 STM32F10xxx固件库(FWLib)V2.0.3是一个完整的固件包,它适用于STM32F10xxx小容量,中容量和大容量产品。固件库由程序,数据结构和宏组成,覆盖了所有外设的特征,还包括了全部标准外设的驱动和一系列示例程序。 STM32F10xxx标准外设库(StdPeriph_Lib)V3.0.0由固件库(FWLib)V2.0.3升级而来: ● 它使库与CortexTM微控制器软件接口标准(CMSIS)兼容 ● 改进了库包的体系结构 ● 源代码符合Doxygen格式 ● 升级不影响STM32外设驱动的API(应用编程接口) 注意:标准外设库(StdPeriph_Lib)V3.0.0只对STM32F10xxx CAN驱动进行了升级,目的是支持即将面世的STM32F10xxx连接型产品(带双CAN)。 要升级到STM32F10xxx标准外设库V3.0.0,用户只需要更新: ● 与工具链相关的文件 ● 项目(project)设置 ● 库文件的位置 ● 用户无需改变或者更新应用程序的代码 下文详细描述了标准外设库(StdPeriph_Lib)的所有更新细节。 1.1 兼容ARM® Cortex-M3TM微控制器软件接口标准(CMSIS) CMSIS可以解决用户在基于Cortex-M0/Cortex-M1或者Cortex-M3内核的微控制器上进行软件开发时可能遇到的种种问题。CMSIS还可以扩展,应用在将来的Cortex-M系列处理器内核上(标准称为Cortex-Mx)。CMSIS是ARM公司与多家不同的芯片和软件供应商一起紧密合作定义的,提供了内核与外设、实时操作系统和中间设备之间的通用接口。 1.1.1 CMSIS描述 CMSIS可以分为多个软件层次,ARM提供了下列部分,可用于多种编译器: ● 内核设备访问层:包含了用来访问内核的寄存器设备的名称定义,地址定义和助手函数。 同时也为RTOS(实时操作系统)定义了独立于微控制器的接口,该接口包括调试通道定义。 ● 中间设备访问层:为软件提供了访问外设的通用方法。芯片供应商应当修改中间设备访问层,以适应中间设备组件用到的微控制器上的外设。目前中间设备访问层仍处于开发过程中,本文不做详述。 芯片供应商扩展下列软件层: ● 微控制器外设访问层:提供片上所有外设的定义。 ● 外设的访问函数(可选):为外设提供额外的助手函数。 CMSIS为Cortex-Mx微控制器系统定义了: ● 访问外设寄存器的通用方法和定义异常向量的通用方法。 ● 内核设备的寄存器名称和内核异常向量的名称 ● 独立于微控制器的RTOS接口,带调试通道 ● 中间设备组件接口(TCP/IP协议栈,闪存文件系统) 1.1.2 CMSIS结构 ![]() CMSIS-外设访问层的文件 独立于编译器的文件: ● Cortex-M3内核及其设备文件(core_cm3.h + core_cm3.c) ─ 访问 Cortex-M3 内核及其设备:NVIC,SysTick 等 ─ 访问 Cortex-M3 的 CPU 寄存器和内核外设的函数 ● 微控制器专用头文件(device.h) ─ 指定中断号码(与启动文件一致) ─ 外设寄存器定义(寄存器的基地址和布局) ─ 控制微控制器其他特有的功能的函数(可选) ● 微控制器专用系统文件(system_device.c) ─ 函数 SystemInit,用来初始化微控制器 ─ 函数 Sysem_ExtMemCtl,用来配置外部存储器控制器。它位于文件startup_stm32f10x_xx.s /.c,在跳转到 main 前调用 ─ SystemFrequncy,该值代表系统时钟频率 ─ 微控制器的其他功能(可选) 编译器供应商+微控制器专用启动文件 ● 编译器启动代码(汇编或者C)(startup_device.s) ─ 微控制器专用的中断处理程序列表(与头文件一致) ─ 弱定义(Weak)的中断处理程序默认函数(可以被用户代码覆盖) 注意:关键字weak指示编译器弱导出符号。该关键字可以用于函数和变量的声明,以及函数的定义。 使用 __weak 定义的函数将弱导出其符号。除非将相同名称的非弱定义函数链接到相同映像上,否则弱定义函数的行为与正常定义的函数类似。 如果非弱定义函数和弱定义函数位于相同映像中,则会将对弱定义函数的所有调用解析为对非弱函数的调用。如果有多个可用的弱定义,链接器将选择其中的一个弱定义供所有调用使用。 1.1.3 STM32 固件库V2.0.3 和CMSISV1.10 对比 CMSIS对STM32F10xxx固件库(FWLib)的某些功能采用了不同的实现方法。下面列出主要的区别: ● 使用标准C类型,文件<stdint.h> ● 对每一个Cortex-M3异常和STM32的IRQ,有: ─ 异常服务程序带后缀_Handler,中断服务程序带后缀_IRQHandler。 ─ 弱定义(Weak)的默认异常/中断服务程序,包含一个无限循环 ─ 带_IRQn 后缀的中断号码“#define” ● 启动文件更名为”startup_stm32f10x_xx.s/.c”,其中xx可以是hd,md或者ld,分别对应大容量,中容量,小容量产品。 ● 只提供精简的NVIC和SysTick函数,其他一些常用函数作为一个新的驱动加入STM32F10xxx标准外设库,文件命名为misc.h/.c。 ● 某些宏的名字与STM32F10xxx固件库V2.0.3中的相同功能宏不同(见表1) ![]() 完整版请查看:附件 |
CD00228916_ZHV1.pdf
下载1.28 MB, 下载次数: 4