STM32标准外设库迁移至STM32Cube底层库 5 t/ T$ V) D+ i% T a( u: o 引言 STM32价值主张倡导提供完整和全面的固件库,为开发人员提供构建嵌入式应用程序的初始框架。 9 g' d8 }! p' u ' A' I0 O1 F c. I/ V5 d 该框架的核心是众所周知的标准外设库(SPL),所有中间件组件都使用SPL来访问STM32外设。 . \% A, Y, {% x4 Q 多年来,STM32产品不断发展,为开发人员提供各种解决方案以平衡成本,功耗和性能,其中尤为出名的是STM32Cube底层(LL)驱动程序。 , C7 l8 a5 k0 p5 f5 g# S9 P 对于STM32微控制器应用的设计人员而言,轻松地升级微控制器型号和/或更换为另一种固件解决方案是一件至关重要的事情。由于SPL已经停止研发,随着产品需求和规格不断增长,对所使用的各种外设提出了额外的要求,因此,这种迁移通常必不可少。 $ Y3 M) _1 K! D4 r- b2 F- V, j 本应用笔记介绍了从现有使用STM32 SPL开发的基于STM32的应用程序迁移到使用STM32Cube LL驱动程序的任何其他类型的微控制器的步骤。 8 f6 j: m$ O+ {* y3 x4 v9 ] + Y. @- ~" T* e% Z; I 本应用笔记汇总了将基于STM32 SPL的应用程序成功迁移到使用STM32Cube LL API所需的所有最重要信息。 它包含三个部分。
1 STM32 SPL与STM32Cube LL架构概述 7 c* y# u9 l( V# U, v 6 h$ [1 s% N8 z B# q 本节介绍STM32标准外设库(SPL)和STM32Cube LL的架构,对两种解决方案之间的主要差异进行对比和总结。 1 K; Q- S+ {% M3 }" c 1.1 STM32 SPL 1.1.1 概述 : }, G. n8 V d3 t CMSIS STM32 SPL的CMSIS由两层组成:第一层是内核外设访问层,包含名称定义、地址定义和辅助API,用于访问内核Cortex-Mx寄存器和外设。第二层是STM32外设访问层,定义了设备的所有外设寄存器、位域和存储器映射。 % v8 _0 U5 D2 R @6 o + W7 D' r) A) |& H, ]2 z STM32 SPL驱动程序 该库基于模块化编程方法构建,确保构建主应用程序的多个组件之间保持独立。使用此库即可在广泛的产品系列和评估板上实现轻松移植,只需对公共部分的代码进行最小的更改。 " A' C ^9 F! V3 D* i STM32 SPL驱动程序为每个外设提供驱动程序和头文件。每个驱动程序都包含一组涵盖所有外设功能的API。 # _$ m( f; z( T. y1 A1 v 通过检查所有库函数的输入值,还可以实现运行时故障检测。此类动态检查有助于增强软件的稳健性。因此,它适用于开发和调试用户应用程序。 : F. Z0 k: |2 R) [ 1.1.2 包含模型 0 [& O2 Q% O; J% F1 |- Y! b1 s# K 0 L* J* t0 B5 p3 ? w- }( x 图 1 基于STM32 SPL的默认用户应用程序,介绍了文件包含模型。 % a. t/ t9 E ?+ X3 K 每个STM32嵌入式外设都有一个源代码文件stm32yyxx_ppp.c和一个头文件stm32yyxx_ppp.h。 stm32yyxx_ppp.c文件包含使用PPP外设所需的所有固件API。 8 [1 F3 r! c- @; _5 } stm32yyxx_conf.h文件被视为用户文件,根据应用程序中使用的外设进行自定义和定制。在运行任何应用程序之前,使用此文件指定与库驱动程序连接的参数集。 2 r: w! I( D$ Z/ @ 表 1对用户基于STM32 SPL的应用程序所引用的上述文件进行重新分组和介绍 1.2 STM32Cube底层驱动程序 2 z, u9 G) B# @0 o1.2.1 概述 作为STM32Cube固件HAL的一部分,底层(LL)驱动程序旨在提供面向专家的快速轻量级层,与HAL相比,更接近硬件。与HAL相反的是,对于不关注优化访问的外设而言,LL API并不适用。 * h6 a7 m. D! G7 E3 E底层(LL)驱动程序旨在提供:
.............. # h1 Z3 M3 v& O* |3 `" Y. a 想了解更多,请下载原文阅读 |
值得收藏 |
这个需要好好读一下 |
mark一下 |