STMCU小助手
发布时间:2022-7-15 21:23
|
介绍3 A, ], e) v% S, V7 ] 本文的目的是介绍如何把基于STM32F10xxx固件库V2.0.3(FWLib)开发的应用程序升级到STM32F10xxx标准外设库V3.0.0。本文的目的不是提供2个版本的详细信息,而是重点介绍2个+ R, @- f0 A6 `- s Q2 y, t+ V 版本之间的差异。9 }+ h3 D9 E: `$ C$ U+ b 注意:文中,除非特别指明,固件库(FWLib)代表STM32F10xxx固件库V2.0.3,而标准外设库(StdPeriph_Lib)代表STM32F10xxx标准外设库V3.0.0。术语表 小容量产品是指闪存存储器容量在16K至32K字节之间的STM32F101xx,STM32F102xx和STM32F103xx微控制器。% ]% e* d( c& f 中容量产品是指闪存存储器容量在64K至128K字节之间的STM32F101xx,STM32F102xx和STM32F103xx微控制器。- e8 m) T/ ]" w/ M 大容量产品是指闪存存储器容量在256K至512K字节之间的STM32F101xx和STM32F103xx微控制器。 1 O3 ]) B" p' T1 _' b& c 1.为什么把STM32F10xxx固件库(FWLib)V2.0.3升级为标准外设库(StdPeriph_Lib)V3.0.0 STM32F10xxx固件库(FWLib)V2.0.3是一个完整的固件包,它适用于STM32F10xxx小容量,中容量和大容量产品。固件库由程序,数据结构和宏组成,覆盖了所有外设的特征,还包括了全部标准外设的驱动和一系列示例程序。5 Q8 A# x% S7 U- P7 z2 @" T STM32F10xxx标准外设库(StdPeriph_Lib)V3.0.0由固件库(FWLib)V2.0.3升级而来: ● 它使库与CortexTM微控制器软件接口标准(CMSIS)兼容 ● 改进了库包的体系结构 ● 源代码符合Doxygen格式! y, P3 l$ P* v L. Z+ n ● 升级不影响STM32外设驱动的API(应用编程接口) 注意:标准外设库(StdPeriph_Lib)V3.0.0只对STM32F10xxx CAN驱动进行了升级,目的是支持即将面世的STM32F10xxx连接型产品(带双CAN)。 要升级到STM32F10xxx标准外设库V3.0.0,用户只需要更新: ● 与工具链相关的文件( E( k; U- R) B$ M1 r( ] ● 项目(project)设置 ● 库文件的位置 ● 用户无需改变或者更新应用程序的代码; M5 \1 s! q8 k9 n0 e 下文详细描述了标准外设库(StdPeriph_Lib)的所有更新细节。" p" R, W2 ]4 D+ _& h5 p 1 V; U3 L; G7 Q 1.1 兼容ARM® Cortex-M3TM微控制器软件接口标准(CMSIS) 9 u, q# H2 w/ G3 r7 f- y CMSIS可以解决用户在基于Cortex-M0/Cortex-M1或者Cortex-M3内核的微控制器上进行软件开发时可能遇到的种种问题。CMSIS还可以扩展,应用在将来的Cortex-M系列处理器内核上(标准称为Cortex-Mx)。CMSIS是ARM公司与多家不同的芯片和软件供应商一起紧密合作定义的,提供了内核与外设、实时操作系统和中间设备之间的通用接口。5 S8 A5 a3 t2 j0 h8 c" u7 m2 y 1.1.1 CMSIS描述 CMSIS可以分为多个软件层次,ARM提供了下列部分,可用于多种编译器: E1 r$ J0 b2 R2 Z$ X/ ]: i) v ● 内核设备访问层:包含了用来访问内核的寄存器设备的名称定义,地址定义和助手函数。 同时也为RTOS(实时操作系统)定义了独立于微控制器的接口,该接口包括调试通道定义。 ● 中间设备访问层:为软件提供了访问外设的通用方法。芯片供应商应当修改中间设备访问层,以适应中间设备组件用到的微控制器上的外设。目前中间设备访问层仍处于开发过程中,本文不做详述。5 w+ S- S6 U3 T/ D+ f 芯片供应商扩展下列软件层:1 ^' n+ v* B G6 ` ● 微控制器外设访问层:提供片上所有外设的定义。 ● 外设的访问函数(可选):为外设提供额外的助手函数。 CMSIS为Cortex-Mx微控制器系统定义了:7 q, d+ J5 Z" s9 h! i ● 访问外设寄存器的通用方法和定义异常向量的通用方法。 ● 内核设备的寄存器名称和内核异常向量的名称 ● 独立于微控制器的RTOS接口,带调试通道( _! G5 ~& v4 q$ p9 V ● 中间设备组件接口(TCP/IP协议栈,闪存文件系统) & b6 k$ L9 u' ^7 @) K: l ' v: O( X! E/ `. O" g 1.1.2 CMSIS结构 ) C6 H6 J7 i# o2 E* d; R7 I: S
/ I) g. q# X0 N& u$ ^; Q. q& v CMSIS-外设访问层的文件4 o! Q( M) w/ q2 h' m5 b+ S; P 独立于编译器的文件:* t: E- ^) j8 L* ~; x& j, k1 z ● Cortex-M3内核及其设备文件(core_cm3.h + core_cm3.c) ( p' c2 F4 A% {# }# Y. G' A ─ 访问 Cortex-M3 内核及其设备:NVIC,SysTick 等 ) }% M$ K% e2 F ─ 访问 Cortex-M3 的 CPU 寄存器和内核外设的函数6 e: v6 k' X5 r ● 微控制器专用头文件(device.h) ─ 指定中断号码(与启动文件一致) % U8 a! S8 Q% J9 `2 A( S ─ 外设寄存器定义(寄存器的基地址和布局) ! `; K. f0 G$ w1 F ─ 控制微控制器其他特有的功能的函数(可选) " d# m0 Y O( `; a W9 _( C ● 微控制器专用系统文件(system_device.c) ─ 函数 SystemInit,用来初始化微控制器8 [' `3 Y. `1 y: A% } ─ 函数 Sysem_ExtMemCtl,用来配置外部存储器控制器。它位于文件startup_stm32f10x_xx.s /.c,在跳转到 main 前调用8 o) O) z& H+ D3 u1 N ─ SystemFrequncy,该值代表系统时钟频率 ─ 微控制器的其他功能(可选) 编译器供应商+微控制器专用启动文件 ● 编译器启动代码(汇编或者C)(startup_device.s) 9 h4 W$ o2 b6 j$ } ─ 微控制器专用的中断处理程序列表(与头文件一致) ─ 弱定义(Weak)的中断处理程序默认函数(可以被用户代码覆盖) 注意:关键字weak指示编译器弱导出符号。该关键字可以用于函数和变量的声明,以及函数的定义。 使用 __weak 定义的函数将弱导出其符号。除非将相同名称的非弱定义函数链接到相同映像上,否则弱定义函数的行为与正常定义的函数类似。 如果非弱定义函数和弱定义函数位于相同映像中,则会将对弱定义函数的所有调用解析为对非弱函数的调用。如果有多个可用的弱定义,链接器将选择其中的一个弱定义供所有调用使用。& _ N) d6 j( k7 {- Y 1.1.3 STM32 固件库V2.0.3 和CMSISV1.10 对比9 _7 l" s3 T4 B CMSIS对STM32F10xxx固件库(FWLib)的某些功能采用了不同的实现方法。下面列出主要的区别: ● 使用标准C类型,文件<stdint.h> ● 对每一个Cortex-M3异常和STM32的IRQ,有: ─ 异常服务程序带后缀_Handler,中断服务程序带后缀_IRQHandler。 # z9 _1 e/ F% ]# a ─ 弱定义(Weak)的默认异常/中断服务程序,包含一个无限循环* i1 [: I: c$ ~* ]) |6 {3 H: g, ` ─ 带_IRQn 后缀的中断号码“#define” ● 启动文件更名为”startup_stm32f10x_xx.s/.c”,其中xx可以是hd,md或者ld,分别对应大容量,中容量,小容量产品。2 E9 n( O8 G" r, x ● 只提供精简的NVIC和SysTick函数,其他一些常用函数作为一个新的驱动加入STM32F10xxx标准外设库,文件命名为misc.h/.c。 ● 某些宏的名字与STM32F10xxx固件库V2.0.3中的相同功能宏不同(见表1) , Z; b2 _$ c+ T2 f8 k% W
完整版请查看:附件, |2 I+ D' R$ T0 V. C# b8 F, p" m6 e 3 o- n6 G, I g5 j3 i: D& I; r |
CD00228916_ZHV1.pdf
下载1.28 MB, 下载次数: 4
DMA 原理从 0 到 1:为什么它能解放 CPU?一文讲透 DMA 的工作流程
【福利三:雨露均沾·逢7狂欢】之五:STM32系统时钟PLL故障排除1例
【福利三:雨露均沾·逢7狂欢】之三:AI帮我查BUG
福利三:雨露均沾·逢7狂欢】之二:STM32F407VG串口通信乱码故障的排除
基于STM32F103的I2C主从机通信
OpenBLT移植到STM32F103战舰开发板上适用于所有STM32F103系列的Bootloader
TFT LCD 与 FSMC 的硬件连接大容量 STM32F10xxx FSMC 接口
单片机:初学者该了解的STM32F103基础知识
2025软件工具兔哥知道
STM32之继电器模块
微信公众号
手机版