你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

如何从 STM32F10xxx 固件库 V2.0.3 升级为 STM32F10xxx 标准外设库 V3.0.0

[复制链接]
STMCU小助手 发布时间:2022-7-15 21:23
介绍
本文的目的是介绍如何把基于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结构

}I61[8V)CD53GWT4`H_6SH9.png

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)


FUXEHCENRNWEJN(3PO`J2LF.png


完整版请查看:附件



CD00228916_ZHV1.pdf

下载

1.28 MB, 下载次数: 4

收藏 评论0 发布时间:2022-7-15 21:23

举报

0个回答

所属标签

相似分享

官网相关资源

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
st-img 微信公众号
st-img 手机版