STMicroelectronics-标志

STMicroElectronics STM32WBA 系列入门

STMicroElectronics-STM32WBA-系列-入门-fig-1

产品信息

规格:

  • 产品名称: STM32CubeWBA MCU封装
  • 制造商: 意法半导体
  • 兼容性: STM32WBA系列微控制器
  • 许可: 开源 BSD 许可证

产品使用说明

STM32CubeWBA MCU封装的主要特点:
STM32CubeWBA MCU 软件包提供了在 STM32WBA 系列微控制器上开发应用程序所需的所有嵌入式软件组件。它在 STM32 系列中具有高度可移植性,并附带 HAL 和 LL API,例如amp文件和中间件组件。

架构结束view:
STM32CubeWBA MCU 包的架构由三个层次组成:应用程序、库和基于协议的组件、硬件抽象层、BSP 驱动程序、核心驱动程序和低层 API。

常问问题

  • STM32CubeWBA MCU 包中包含什么?
    该软件包包括低层 (LL) 和硬件抽象层 (HAL) API,例如amp文件、应用程序、中间件组件,例如 FileX/LevelX、NetX Duo、mbed-crypto 库等。
  • STM32CubeWBA MCU 软件包与 STM32CubeMX 代码生成器兼容吗?
    是的,该软件包与用于生成初始化代码的 STM32CubeMX 代码生成器完全兼容。

介绍

  • STM32Cube 是意法半导体的一项原创举措,旨在通过减少开发工作量、时间和成本来显着提高设计人员的工作效率。 STM32Cube 涵盖整个 STM32 产品组合。
    STM32Cube 包括:
    • 一套用户友好的软件开发工具,涵盖从概念到实现的项目开发,其中包括:
      • STM32CubeMX,一种图形软件配置工具,允许使用图形向导自动生成 C 初始化代码
      • STM32CubeIDE,一款集外设配置、代码生成、代码编译、调试功能于一体的开发工具
      • STM32CubeCLT,一款一体化命令行开发工具集,具有代码编译、电路板编程和调试功能
      • STM32CubeProgrammer (STM32CubeProg),图形和命令行版本的编程工具
      • STM32CubeMonitor(STM32CubeMonitor、STM32CubeMonPwr、STM32CubeMonRF、STM32CubeMonUCPD),强大的监控工具,可实时微调STM32应用程序的行为和性能
    • STM32Cube MCU 和 MPU 软件包,特定于每个微控制器和微处理器系列的综合嵌入式软件平台(例如 STM32WBA 系列的 STM32CubeWBA),其中包括:
      • STM32Cube 硬件抽象层 (HAL),确保 STM32 产品组合的最大可移植性
      • STM32Cube 底层 API,通过用户对硬件的高度控制确保最佳性能和占用空间
      • 一组一致的中间件组件,例如 ThreadX, FileX / LevelX、NetX Duo、USBX、触摸库、mbed-crypto、TFM、MCUboot、OpenBL 和 STM32_WPAN(包括蓝牙®低功耗 profile和服务、Mesh、Zigbee®、OpenThread、Matter 和 802.15.4 MAC 层)
      • 带有全套外围设备和应用程序的所有嵌入式软件实用程序amp莱斯
    • STM32Cube 扩展包,其中包含嵌入式软件组件,可通过以下方式补充 STM32Cube MCU 和 MPU 包的功能:
      • 中间件扩展和应用层
      • Examp在某些特定的 STMicroelectronics 开发板上运行的文件
  • 本用户手册介绍了如何开始使用 STM32CubeWBA MCU 软件包。
    • 第 2 节 STM32CubeWBA 主要特性介绍了 STM32CubeWBA MCU 封装的主要特性。
    • 第三节 STM3CubeWBA架构详解view 提供了一个结束view STM32CubeWBA架构和MCU封装结构。

一般信息

STM32CubeWBA MCU 软件包在基于带有 Arm® TrustZone® 和 FPU 的 Arm® Cortex®-M32 处理器的 STM32 33 位微控制器上运行。
笔记: Arm 和 TrustZone 是 Arm Limited(或其子公司)在美国和/或其他地方的注册商标。

STM32CubeWBA主要特点

  • STM32CubeWBA MCU 软件包在基于带有 TrustZone® 和 FPU 的 Arm® Cortex®-M32 处理器的 STM32 33 位微控制器上运行。
  • STM32CubeWBA 将开发 STM32WBA 系列微控制器应用程序所需的所有通用嵌入式软件组件收集在一个软件包中。根据 STM32Cube 计划,这套组件具有高度可移植性,不仅可以在 STM32WBA 系列微控制器内使用,还可以在其他 STM32 系列中使用。
  • STM32CubeWBA 与 STM32CubeMX 代码生成器完全兼容,可生成初始化代码。该软件包包括覆盖微控制器硬件的低层 (LL) 和硬件抽象层 (HAL) API,以及一组广泛的扩展amp在意法半导体主板上运行的文件。为了方便用户,HAL 和 LL API 以开源 BSD 许可证形式提供。
  • STM32CubeWBA MCU 软件包还包含围绕 Microsoft® Azure® RTOS 中间件以及其他内部和开源堆栈构建的综合中间件组件,以及相应的 examp莱斯。
  • 它们附带免费、用户友好的许可条款:
    • 集成且功能齐全的 Azure® RTOS:Azure® RTOS ThreadX
    • 使用 Azure® RTOS ThreadX 实施 CMSIS-RTOS
    • USB 主机和设备堆栈附带许多类:Azure® RTOS USBX
    • 先进的 file 系统和Flash翻译层: FileX / 等级X
    • 工业级网络堆栈:针对许多物联网协议的性能进行了优化:NetX Duo
    • 开放式引导装载程序
    • Arm® 可信固件-M (TF-M) 集成解决方案
    • mbed 加密库
    • ST网络库
    • STMTouch触摸传感库解决方案
  • STM32CubeWBA MCU 包中还提供了实现所有这些中间件组件的多个应用程序和演示。
  • STM32CubeWBA MCU 封装组件布局如图 1 所示。STM32CubeWBA MCU 封装组件。

    STMicroElectronics-STM32WBA-系列-入门-fig-2

STM32CubeWBA架构之上view

STM32CubeWBA MCU 封装解决方案围绕三个独立级别构建,这些级别可轻松交互,如图 2 所示。STM32CubeWBA MCU 封装架构。

STMicroElectronics-STM32WBA-系列-入门-fig-3

0 级

该层分为三个子层:

  • 主板支持包 (BSP)。
  • 硬件抽象层(HAL):
    • HAL 外设驱动程序
    • 低层驱动程序
  • 基本外设使用示例amp莱斯。

电路板支持包 (BSP)
该层提供了一组与硬件板中的硬件组件相关的 API(例如 LCD、音频、microSD™ 和 MEMS 驱动程序)。它由两部分组成:

  • 组件驱动程序:
    该驱动与板子上的外部设备相关,与STM32设备无关。组件驱动程序为 BSP 驱动程序外部组件提供特定的 API,并且可以移植到任何其他板上。
  • BSP 驱动程序:
    BSP驱动程序允许将组件驱动程序链接到特定的板,并提供一组用户友好的
    蜜蜂。 API命名规则为BSP_FUNCT_Action()。
    Examp文件:BSP_LED_Init()、BSP_LED_On()
    BSP 基于模块化架构,只需实现低级例程即可轻松移植到任何硬件上。

硬件抽象层 (HAL) 和低层 (LL)
STM32CubeWBA HAL 和 LL 是互补的,涵盖了广泛的应用需求:

  • HAL 驱动程序提供高级的面向功能的高度可移植的 API。它们向最终用户隐藏了 MCU 和外围设备的复杂性。
    HAL 驱动程序提供通用的多实例面向功能的 API,通过提供即用型流程来简化用户应用程序的实现。对于前amp例如,对于通信外设(I2S、UART 等),它提供了 API,允许初始化和配置外设,管理基于轮询、中断或 DMA 过程的数据传输,以及处理通信过程中可能出现的通信错误。 HAL 驱动程序 API 分为两类:
    1. 通用API,为所有STM32系列微控制器提供通用和通用功能。
    2. 扩展 API,为特定系列或特定部件号提供特定和定制的功能。
  • 低层API提供寄存器级别的低层API,优化较好,但可移植性较差。
    • 他们需要对 MCU 和外设规格有深入的了解。
    • LL 驱动程序旨在提供快速、轻量级、面向专家的层,该层比 HAL 更接近硬件。与 HAL 相反,LL API 不适用于优化访问不是关键功能的外设,或者需要繁重的软件配置或复杂的上层堆栈的外设。
    • LL 驱动程序具有以下特点:
      • 根据数据结构中指定的参数初始化外围主要功能的一组函数。
      • 一组函数,用于使用与每个字段对应的重置值填充初始化数据结构。
      • 外设去初始化功能(外设寄存器恢复为默认值)。
      • 一组用于直接和原子寄存器访问的内联函数。
      • 完全独立于 HAL 并能够在独立模式下使用(无需 HAL 驱动程序)。
      • 全面覆盖支持的外设功能。

基本外设使用示例amp莱斯
该层包含前amp仅使用 HAL 和 BSP 资源在 STM32 外设上构建的文件。

1 级

该层分为两个子层:

  • 中间件组件
  • Examp基于中间件组件的文件

中间件组件

  • 中间件是一组涵盖蓝牙®低功耗(Linklayer、HCI、Stack)、Thread®、Zigbee®、
  • Matter、OpenBootloader、Microsoft® Azure® RTOS、TF‑M、MCUboot 和 mbed-crypto。
  • 该层组件之间的横向交互是通过调用特色API来完成的。
  • 与低层驱动程序的垂直交互是通过库系统调用接口中实现的特定回调和静态宏来完成的。
  • 各个中间件组件的主要特点如下:
    • Microsoft® Azure® RTOS
      • Azure® RTOS ThreadX:一种实时操作系统 (RTOS),专为具有两种功能模式的嵌入式系统而设计。
        • 通用模式:通用 RTOS 功能,例如线程管理和同步、内存池管理、消息传递和事件处理。
        • 模块模式:一种高级用户模式,允许通过模块管理器即时加载和卸载预链接的 ThreadX 模块。
      • NetX双核
      • FileX
      • USBX
    • 低功耗蓝牙 (BLE):为链路层和堆栈层实施低功耗蓝牙协议。
    • MCUboot(开源软件)
    • 用于堆栈和相关集群的 Zigbee® 协议。
    • Thread® 协议栈和链路层。
    • Arm® 可信固件-M、TF‑M(开源软件):TrustZone® 的 Arm® 平台安全架构 (PSA) 的参考实现以及相关安全服务。
    • mbed-crypto(开源软件):mbed-crypto 中间件提供 PSA 加密 API 实现。
    • STM32 触摸感应库:强大的 STMTouch 电容式触摸感应解决方案,支持接近、触摸键、线性和旋转触摸传感器。它基于经过验证的表面电荷转移采集原理。

Examp基于中间件组件的文件
每个中间件组件都附带一个或多个 examp文件(也称为应用程序)展示了如何使用它。整合前amp还提供了使用多个中间件组件的文件。

STM32CubeWBA固件包完毕view

支持的STM32WBA系列器件和硬件

  • STM32Cube 提供围绕通用架构构建的高度可移植的硬件抽象层 (HAL)。它允许构建层原则,例如使用中间件层来实现其功能,而无需深入了解使用的 MCU。这提高了库代码的可重用性,并确保轻松移植到其他设备。
  • 此外,由于其分层架构,STM32CubeWBA提供对所有STM32WBA系列的全面支持。
  • 用户只需在 stm32wbaxx.h 中定义正确的宏即可。
  • 表 1 显示了根据所使用的 STM32WBA 系列器件定义的宏。该宏还必须在编译器预处理器中定义。
    表 1. STM32WBA 系列的宏
    stm32wbaxx.h中定义的宏 STM32WBA系列器件
    stm32wba52xx STM32WBA52CGU6, STM32WBA52KGU6, STM32WBA52CEU6, STM32WBA52KEU6
    stm32wba55xx STM32WBA55CGU6, STM32WBA55CGU6U, STM32WBA55CGU7, STM32WBA55CEU6, STM32WBA55CEU7

     

  • STM32CubeWBA具有丰富的扩展功能amp各个级别的文件和应用程序使您可以轻松理解和使用任何 HAL 驱动程序或中间件组件。这些前amp文件在表 2 列出的 STMicroelectronics 板上运行。
    表 2. STM32WBA 系列主板
    木板 板级 STM32WBA 支持的设备
    核-WBA52CG STM32WBA52CGU6
    核-WBA55CG STM32WBA55CGU6
    STM32WBA55-DK1 STM32WBA55CGU7
  • STM32CubeWBA MCU 包可以在任何兼容硬件上运行。用户只需更新 BSP 驱动程序即可移植提供的 examp如果后者具有相同的硬件功能(例如 LED、LCD 显示屏和按钮),则该文件位于板上。
固件包结束view
  • STM32CubeWBA 软件包解决方案以单个 zip 软件包形式提供,其结构如图 3 所示。STM32CubeWBA 固件软件包结构。

    STMicroElectronics-STM32WBA-系列-入门-fig-4

  • 对于每个板,一组前amp文件提供了 EWARM、MDK-ARM 和 STM32CubeIDE 工具链的预配置项目。
  • 图 4. STM32CubeWBA examp莱塞沃view 显示了 NUCLEO‑WBA52CG、NUCLEO-WBA55CG 和 STM32WBA55G-DK1 板的项目结构。

    STMicroElectronics-STM32WBA-系列-入门-fig-5

  • 前任amp文件根据其适用的STM32Cube级别进行分类,命名如下:
    • 0级前amples 被称为 Examp莱斯,前amples_LL 和 Examples_MIX。它们分别使用 HAL 驱动程序、LL 驱动程序以及 HAL 和 LL 驱动程序的混合,无需任何中间件组件。
    • 1级前amp文件称为应用程序。它们提供了每个中间件组件的典型用例。借助 Templates 和 Templates_LL 目录中提供的模板项目,可以快速构建给定板的任何固件应用程序。

TrustZone® 支持的项目

  • TrustZone® 启用 Examp文件名称包含 _TrustZone 前缀。该规则也适用于应用程序(TFM 和 SBSFU 除外,它们本身适用于 TrustZone®)。
  • 支持 TrustZone® 的 Examp文件和应用程序提供了由安全和非安全子项目组成的多项目结构,如图 5 所示。多项目安全和非安全项目结构。
  • 支持 TrustZone® 的项目是根据 CMSIS-5 设备模板开发的,并扩展为包括系统分区标头 file 分割_ .h,主要负责安全属性单元(SAU)、FPU的设置以及安全执行状态下的安全/非安全中断分配。
  • 此设置在安全 CMSIS SystemInit() 函数中执行,该函数在启动时在进入安全应用程序 main() 函数之前调用。请参阅 Arm® TrustZone®-M 软件指南文档。

    STMicroElectronics-STM32WBA-系列-入门-fig-6

  • STM32CubeWBA封装固件包提供了默认的内存分区_分区。H file位于:\Drivers\CMSIS\Device\ST\STM32WBAxx\Include\T emplates
  • 在这些分区中 files,SAU默认是关闭的。因此,IDAU内存映射用于安全属性。请参阅 RM0495 参考手册中的使用 TrustZone® 技术的安全/非安全分区图。
  • 如果用户启用 SAU,则会在分区中预定义默认的 SAU 区域配置 file如下:
    • SAU 区域 0:0x08080000 – 0x081FFFFF(闪存的非安全安全部分(512 KB))
    • SAU 区域 1:0x0BF88000 – 0x0BF97FFF(非安全系统内存)
    • SAU 区域 2:0x0C07E000 – 0x0C07FFFF(安全、非安全可调用)
    • SAU 区域 3:0x20010000 – 0x2001FFFF(非安全 SRAM2(64 KB))
    • SAU 区域 4:0x40000000 – 0x4FFFFFFF(非安全外设映射内存)
  • 为了匹配默认分区,STM32WBAxx 系列器件必须设置以下用户选项字节:
    • TZEN = 1(启用 TrustZone® 的设备)
    • SECWM1_PSTRT = 0x0 SECWM1_PEND = 0x3F(内部闪存的 64 页中的 128 页设置为安全) 注:默认情况下,TZEN = 1 时内部闪存是完全安全的。必须根据应用设置用户选项字节 SECWM1_PSTRT/SECWM1_PEND内存配置(SAU 区域,如果启用了 SAU)。安全/非安全应用程序项目链接器 files 也必须对齐。
  • 所有前amples 具有相同的结构:
    • \Inc 包含所有标头的文件夹 files.
    • 包含源代码的 Src 文件夹。
    • \EWARM、\MDK-ARM 和 \STM32CubeIDE 文件夹包含每个工具链的预配置项目。
    • readme.md 和 readme.html 描述 examp文件行为和使其发挥作用所需的环境。
    • 国际奥委会 file 允许用户打开大部分固件ampSTM32CubeMX 中的文件。

STM32CubeWBA 入门

运行第一个 HAL example

本节说明运行第一个 ex 有多么简单ampSTM32CubeWBA 内的文件。它使用在 NUCLEO-WBA52CG 板上运行的简单 LED 切换的生成作为说明:

  1. 下载STM32CubeWBA MCU包。
  2. 将其解压缩到您选择的目录中。
  3. 确保不要修改图 1 中所示的包结构。还建议将包复制到靠近根卷的位置(即 C:\ST 或 G:\Tests),因为某些 IDE 在路径设置时会遇到问题长度太长。

运行第一个启用 TrustZone® 的 example

  • 在加载和运行启用 TrustZone® 的 ex 之前ample,必须阅读 examp自述文件 file 对于任何特定配置,这可确保按照第 4.2.1 节 TrustZone® 启用项目(TZEN=1(用户选项字节))中所述启用安全性。
    1. 浏览到 \Projects\NUCLEO-WBA52CG\Examp莱斯。
    2. 打开 \GPIO,然后打开 \GPIO_IOToggle_TrustZone 文件夹。
    3. 使用您喜欢的工具链打开项目。快速结束view 关于如何打开、构建和运行 examp下面给出了具有支持的工具链的文件。
    4. 按顺序重建所有安全和非安全项目 file并将安全和非安全图像加载到目标内存中。
    5. 运行前ample:通常,安全应用程序每秒切换 LD2,而非安全应用程序切换 LD3 的速度是其两倍。有关更多详细信息,请参阅自述文件 file 前任的amp勒。
  • 打开、构建和运行 examp文件与支持的工具链,请按照以下步骤操作:
    • 温暖:
      1. 在前任之下ample 文件夹,打开 \EWARM 子文件夹。
      2. 启动 Project.eww 工作区
      3. 重建 xxxxx_S 安全项目 files:[项目]>[全部重建]。
      4. 将 xxxxx_NS 非安全项目设置为活动应用程序(右键单击 xxxxx_NS 项目 [设置为活动])
      5. 重建 xxxxx_NS 非安全项目 files:[项目]>[全部重建]。
      6. 使用 [Project]>[Download]>[Download active application] 刷新非安全二进制文件。
      7. 将 xxxxx_S 设置为活动应用程序(右键单击 xxxxx_S 项目 [设置为活动]。
      8. 使用 [下载和调试] (Ctrl+D) 刷新安全二进制文件。
      9. 运行程序:[调试]>[执行(F5)]
    • MDK-ARM:
      1. 打开 \MDK-ARM 工具链。
      2. 打开多项目工作区 file 项目.uvmpw。
      3. 选择 xxxxx_s 项目作为活动应用程序([设置为活动项目])。
      4. 构建 xxxxx_s 项目。
      5. 选择 xxxxx_ns 项目作为活动项目([设置为活动项目])。
      6. 构建 xxxxx_ns 项目。
      7. 加载非安全二进制文件 ([F8])。这会将 \MDK-ARM\xxxxx_ns\Exe\xxxxx_ns.axf 下载到闪存)
      8. 选择 Project_s 项目作为活动项目([设置为活动项目])。
      9. 加载安全二进制文件 ([F8])。这会将 \MDK-ARM\xxxxx_s\Exe\xxxxx_s.axf 下载到闪存)。
      10. 运行前amp勒。
    • STM32CubeIDE:
      1. 打开STM32CubeIDE工具链。
      2. 打开多项目工作区 file 。项目。
      3. 重建 xxxxx_Secure 项目。
      4. 重建 xxxxx_NonSecure 项目。
      5. 启动安全项目的 [Debug as STM32 Cortex-M C/C++] 应用程序。
      6. 在[编辑配置]窗口中,选择[启动]面板,添加加载非安全项目的图像和符号。
        重要的: 非安全项目必须在安全项目之前加载。
      7. 单击[确定]。
      8. 运行前ample 在调试角度。

运行第一个 TrustZone® 禁用 example

  • 在加载和运行 TrustZone® 禁用 ex 之前ample,必须阅读 examp自述文件 file 对于任何特定配置。如果没有具体提及,请确保板设备已禁用安全性(TZEN=0(用户选项字节))。请参阅常见问题解答,了解对 TZEN = 0 进行可选回归
    1. 浏览到 \Projects\NUCLEO-WBA52CG\Examp莱斯。
    2. 打开 \GPIO,然后打开 \GPIO_EXTI 文件夹。
    3. 使用您喜欢的工具链打开项目。快速结束view 关于如何打开、构建和运行 examp下面给出了具有支持的工具链的文件。
    4. 全部重建 files 并将图像加载到目标内存中。
    5. 运行前ample:每次按下 [USER] 按钮时,LD1 LED 就会切换。有关更多详细信息,请参阅自述文件 file 前任的amp勒。
  • 打开、构建和运行 examp文件与支持的工具链,请按照以下步骤操作:
    • 温暖:
      1. 在前任之下ample 文件夹,打开 \EWARM 子文件夹。
      2. 启动 Project.eww 工作区(工作区名称可能会从前一个更改为amp到另一个)。
      3. 全部重建 files:[项目]>[全部重建]。
      4. 加载工程镜像:[工程]>[调试]。
      5. 运行程序:[调试]>[执行(F5)]。
    • MDK-ARM:
      1. 在前任之下ample 文件夹中,打开 \MDK-ARM 子文件夹。
      2. 启动 Project.uvproj 工作区(工作区名称可能会从前一个更改为amp到另一个)。
      3. 全部重建 files:[项目]>[重建所有目标 files]。
      4. 加载项目映像:[调试]>[启动/停止调试会话]。
      5. 运行程序:[调试]>[运行(F5)]。
    • STM32CubeIDE:
      1. 打开STM32CubeIDE工具链。
      2. 点击 [File]>[切换工作空间]>[其他]并浏览到STM32CubeIDE工作空间目录。
      3. 点击 [File]>[导入],选择[常规]>[将现有项目导入工作区],然后单击[下一步]。
      4. 浏览至 STM32CubeIDE 工作区目录并选择项目。
      5. 重建所有项目 files:在[Project Explorer]窗口中选择项目,然后单击[Project]>[Build project]菜单。
      6. 运行程序:[运行]>[调试(F11)]
开发自定义应用程序

笔记: 软件必须启用指令缓存(ICACHE)才能从闪存获得0等待状态执行,并达到最大性能和更好的功耗。

使用STM32CubeMX开发或更新应用程序

  • 在STM32CubeWBA MCU包中,几乎所有项目都包含amp文件是使用 STM32CubeMX 工具生成的,用于初始化系统、外设和中间件。
  • 直接使用现有的项目exampSTM32CubeMX 工具中的文件需要 STM32CubeMX 6.10.0 或更高版本:
    • 安装 STM32CubeMX 后,打开并根据需要更新建议的项目。打开现有项目的最简单方法是双击 *.ioc file 以便STM32CubeMX自动打开项目及其源代码 files.
    • STM32CubeMX生成此类项目的初始化源代码。主要应用程序源代码包含在注释“USER CODE BEGIN”和“USER CODE END”中。如果 IP 选择和设置被修改,STM32CubeMX 会更新代码的初始化部分,但保留主要应用程序源代码。
  • 要在 STM32CubeMX 中开发自定义项目,请遵循分步过程:
    1. 选择与所需外设集匹配的 STM32 微控制器。
    2. 使用引脚冲突求解器、时钟树设置帮助器、功耗计算器以及执行 MCU 外设配置(例如 GPIO 或 USART)和中间件堆栈(例如 USB)的实用程序来配置所有必需的嵌入式软件。
    3. 根据所选配置生成初始化 C 代码。该代码可以在多种开发环境中使用。用户代码保留在下一次代码生成时。
  • 有关 STM32CubeMX 的更多信息,请参阅用于 STM32 配置和初始化 C 代码生成的用户手册 STM32CubeMX (UM1718)。
  • 有关可用项目的列表ampSTM32CubeWBA 的文件,请参阅应用笔记 STM32Cube 固件 exampSTM32WBA 系列 (AN5929) 的文件。

驱动程序应用

哈尔应用程序
本节介绍使用 STM32CubeWBA 创建自定义 HAL 应用程序所需的步骤:

  1. 创建项目
    • 要创建新项目,请从 \Projects\ 下为每个板提供的模板项目开始\Templates 或来自 \Projects\ 下的任何可用项目\示例或\项目\ \应用程序(其中指板名称,例如STM32CubeWBA)。
    • Template 项目提供了一个空的主循环函数。不过,这是了解 STM32CubeWBA 项目设置的一个很好的起点。该模板具有以下特点:
      • 它包含 HAL 源代码、CMSIS 和 BSP 驱动程序,它们是在给定板上开发代码所需的最小组件集。
      • 它包含所有固件组件的包含路径。
      • 它定义了支持的STM32WBA系列设备,允许正确配置CMSIS和HAL驱动程序。
      • 它为用户提供随时可用的 files 预配置如下所示:
        HAL 使用 Arm® 内核 SysTick 使用默认时基进行初始化。 SysTick ISR 是为了 HAL_Delay() 目的而实现的。
        笔记: 将现有项目复制到另一个位置时,请确保更新所有包含的路径。
  2. 将必要的中间件添加到用户项目中(可选)
    识别来源 file要添加到项目中 file 列表,请参阅为每个中间件提供的文档。参考\Projects\STM32xxx_yyy\Applications\下的应用程序(在哪里指的是中间件栈,比如ThreadX)来知道是哪个来源 file必须添加 s 和包含路径。
  3. 配置固件组件
    HAL 和中间件组件使用标头中声明的宏 #define 提供一组构建时配置选项 file。模板配置 file 在每个组件中提供,必须将其复制到项目文件夹(通常是配置 file 名为xxx_conf_template.h,复制到项目文件夹时需要去掉_template一词)。配置 file 提供足够的信息来了解每个配置选项的影响。为每个组件提供的文档中提供了更详细的信息。
  4. 启动HAL库
    跳转到主程序后,应用程序代码必须调用 HAL_Init() API 来初始化 HAL 库,该库执行以下任务:
    • 配置闪存预取和 SysTick 中断优先级(通过 st m32wbaxx_hal_conf.h 中定义的宏)。
    • 配置 SysTick 以按照 stm32wbaxx_hal_conf.h 中定义的 SysTick 中断优先级 TICK_INT_PRIO 每毫秒生成一个中断。
    • 将 NVIC 组优先级设置为 0。
    • 调用stm32wbaxx_hal_msp.c用户定义的HAL_MspInit()回调函数 file 执行全局低级硬件初始化。
  5. 配置系统时钟
    系统时钟配置是通过调用下面描述的两个API来完成的:
    • HAL_RCC_OscConfig(): 该 API 配置内部和外部振荡器。用户选择配置一个或所有振荡器。
    • HAL_RCC_ClockConfig(): 该 API 配置系统时钟源、闪存延迟以及 AHB 和 APB 预分频器。
  6. 初始化外设
    • 首先编写外设HAL_PPP_MspInit函数。请按如下方式进行:
      • 启用外设时钟。
      • 配置外设 GPIO。
      • 配置 DMA 通道并启用 DMA 中断(如果需要)。
      • 启用外设中断(如果需要)。
    • 如果需要,编辑 stm32xxx_it.c 以调用所需的中断处理程序(外设和 DMA)。
    • 如果计划使用外设中断或 DMA,请编写过程完成回调函数。
    • 在用户main.c中 file,初始化外设句柄结构体,然后调用函数HAL_PPP_Init()来初始化外设。
  7. 开发应用程序
    • 此时tage、系统准备就绪,可以开始用户应用代码开发。
    • HAL 提供直观且随时可用的 API 来配置外设。它支持轮询、中断和 DMA 编程模型,以满足任何应用要求。关于如何使用各个外设的更多详细信息,请参考丰富的exampSTM32CubeWBA MCU 包中提供了文件集。
      警告: 在默认的 HAL 实现中,SysTick 定时器用作时基:它以固定的时间间隔生成中断。如果从外设 ISR 进程调用 HAL_Delay(),请确保 SysTick 中断的优先级高于外设中断(数字上低于外设中断)。否则,调用者 ISR 进程将被阻塞。影响时基配置的函数被声明为 __weak,以便在用户进行其他实现时可以覆盖 file (使用通用定时器,例如ample,或其他时间源)。有关更多详细信息,请参阅 HAL_TimeBase examp勒。

法学硕士申请
本节介绍使用 STM32CubeWBA 创建自定义 LL 应用程序所需的步骤。

  1. 创建项目
    • 要创建新项目,请从 \Projects\ 下为每个板提供的 Templates_LL 项目开始\Templates_LL,或来自 \Projects\ 下的任何可用项目\前任amp莱斯_LL(指板名称,例如 NUCLEO-WBA32CG)。
    • 模板项目提供了一个空的主循环函数,这是了解 STM32CubeWBA 项目设置的良好起点。模板主要特点如下:
      • 它包含 LL 和 CMSIS 驱动程序的源代码,它们是在给定板上开发代码所需的最小组件集。
      • 它包含所有必需固件组件的包含路径。
      • 它选择支持的 STM32WBA 系列器件并允许正确配置 CMSIS 和 LL 驱动程序。
      • 它为用户提供了即用型 file预先配置如下:
        ◦ main.h:LED 和 USER_BUTTON 定义抽象层。
        ◦ main.c:最大频率的系统时钟配置。
  2. 将现有项目移植到另一个板
    要支持另一个目标板上的现有项目,请从为每个板提供的 Templates_LL 项目开始,该项目位于 \Projects\ 下\Templates_LL。
    • 选择 LL 前任ample:查找 LL ex 所在的主板amp文件已部署,请参阅 LL ex 列表amp文件 STM32CubeProjectsList.html。
  3. 移植 LL examp乐:
    • 复制/粘贴 Templates_LL 文件夹 - 以保留初始源 - 或直接更新现有的 Templates_LL 项目。
    • 然后移植主要包括替换 Templates_LL file前任的amples_LL 目标项目。
    • 保留所有电路板特定部件。为了清楚起见,电路板特定部件用特定标记 tags:

      STMicroElectronics-STM32WBA-系列-入门-fig-7

    • 因此,主要的移植步骤如下:
      • 替换stm32wbaxx_it.h file
      • 替换stm32wbaxx_it.c file
      • 替换main.h file 并更新它:将 LL 模板的 LED 和用户按钮定义保留在板特定配置下 tags.
      • 替换main.c file 并更新它:
    • 将 SystemClock_Config() LL 模板函数的时钟配置保留在 BOARD SPECIFIC CONFIGURATION 下 tags.
    • 根据 LED 定义,将每个 LDx 替换为 main.h 中可用的另一个 LDy file.
    • 通过这些修改,前ample 现在在目标板上运行

安全应用
该软件包与安全应用程序一起提供。

SBSFU应用

  • SBSFU 提供信任根解决方案,包括安全启动和安全固件更新功能(基于 MCUboot)。
  • 该解决方案在执行应用程序之前使用。
  • 该解决方案提供了一个前amp安全服务(GPIO 切换)的文件,与非安全应用程序隔离。运行时的非安全应用程序仍然可以使用此解决方案。

全聚焦方式应用
TFM 提供信任根解决方案,包括安全启动和安全固件更新功能
(基于MCUboot)。该解决方案在执行应用程序之前使用。该解决方案提供与非安全应用程序隔离的 TFM 安全服务。运行时的非安全应用程序仍然可以使用此解决方案。

射频应用
本应用笔记中描述了 RF 应用:使用 STM32WBA 系列微控制器 (AN5928) 构建无线应用。

获取 STM32CubeWBA 版本更新
STM32WBA 系列提供了最新的 STM32CubeWBA MCU 软件包版本和补丁。可以通过 STM32CubeMX 中的“检查更新”按钮检索它们。有关更多详细信息,请参阅用户手册 STM3CubeMX 的第 32 节,了解 STM32 配置和初始化 C 代码生成 (UM1718)。

常问问题

  • 什么时候应该使用 HAL 而不是 LL 驱动程序?
    • HAL 驱动程序提供高级且面向功能的 API,具有高度的可移植性。对于最终用户来说,产品或外围设备的复杂性是隐藏的。
    • LL 驱动程序提供低层寄存器级 API,具有更好的优化但可移植性较差。他们需要深入了解产品或 IP 规范。
  • 我可以同时使用 HAL 和 LL 驱动程序吗?如果可以的话,有什么限制吗?
    • 可以同时使用 HAL 和 LL 驱动程序。使用 HAL 进行 IP 初始化阶段,然后使用 LL 驱动程序管理 I/O 操作。
    • HAL 和 LL 之间的主要区别在于 HAL 驱动程序需要创建和使用句柄进行操作管理,而 LL 驱动程序直接操作外设寄存器。前任amples_MIX 前amp文件说明了如何混合 HAL 和 LL。
  • 如何启用 LL 初始化 API?
    • LL 初始化 API 和关联资源(结构、文字和原型)的定义由 USE_FULL_LL_DRIVER 编译开关决定。
    • 为了能够使用 LL 初始化 API,请在工具链编译器预处理器中添加此开关。
  • STM32CubeMX如何生成基于嵌入式软件的代码?
    STM32CubeMX 具有 STM32 微控制器的内置知识,包括其外设和软件,允许向用户提供图形表示并生成 *.h 或 *.c file基于用户配置。

重要通知——请仔细阅读

  • STMicroelectronics NV 及其子公司 (“ST”) 保留随时更改、更正、增强、修改和改进 ST 产品和/或本文档的权利,恕不另行通知。购买者应在下订单前获取有关 ST 产品的最新相关信息。ST 产品根据订单确认时有效的 ST 销售条款和条件销售。
  • 购买者对 ST 产品的选择、挑选和使用负全部责任,ST 对应用协助或购买者产品的设计不承担任何责任。
  • ST 在​​此不授予任何明示或暗示的知识产权许可。
  • 如果转售的 ST 产品的规定与此处所述的信息不同,则 ST 对该产品授予的任何保证将失效。
  • ST 和 ST 标志是 ST 的商标。 有关 ST 商标的更多信息,请参阅 www.st.com/trademarks。 所有其他产品或服务名称均为其各自所有者的财产。
  • 本文档中的信息取代并替换了该文档之前任何版本中提供的信息。
  • © 2023 STMicroelectronics – 保留所有权利

文件/资源

STMicroElectronics STM32WBA 系列入门 [pdf] 用户手册
STM32WBA系列入门,入门,入门

参考

发表评论

您的电子邮件地址不会被公开。 必填字段已标记 *