STMCU小助手
发布时间:2022-5-7 11:56
|
1、前言 LPBAM 全称为 low-power background autonomous mode,系统时钟可以在进入低功耗模式之后打开或关闭,可以触发 DMA 请求,可以在 stop0,stop1,stop2 模式下使用。在 stop 模式下除了 LSI 和 LSE 以外其他时钟都会关闭,但 MSIK 和 HSI16 可以被临时使能,以支持 DMA 传输,这就是 LPBAM 的特点。 另外,LPBAM 需要 DMA 来进行配合,U5 系列的 DMA 有 Linked List 功能,也就是说DMA 可以完成链表设计好的任务。在初始化的时候,以链表模式设置好 DMA 相关寄存器,可以通过链表模式完成内存到内存,或者内存和外设寄存器之间的数据传输。 由于 LBAM 的特性,在进行低功耗应用设计时,可以使用 LPBAM 大大减少功耗,提升产品的低功耗性能。比如,可以在 stop2 模式下进行串口收发,ADC 采集任务等等。 本文将介绍如何使用 CubeMX,配置 DMA Linked List,在低功耗模式下,使用LPBAM 进行 GPIO Toggle。 2. 准备工作 2.1 环境准备 测试硬件:B-U585I-IOT02A 开发板 测试开发环境:IAR 8.50.1 CubeMX 版本:6.30.0
2.2 设计思路 如图所示,我们先在内存中定义好需要写入 GPIO 寄存器的数值,其中 Set GPIO 就将数据写入 BSRR 寄存器,Reset GPIO 就将数据写入 BRR 寄存器。LPDMA 设置两个节点,一个去 Set GPIO,另一个 Reset GPIO,然后由软件触发,由 LPTIM1 CH1 的上升沿触发 LPDMA 第一个节点进行动作,LPTIM1 CH1 的下降沿触发 LPDMA 第二个节点进行动作。 LPTIM1 设置使用 LSI 32KHz 为时钟,频率为 32KHz,占空比为 50%的 PWM 波输出,也就是说 GPIO 会以 500ms 的频率进行 toggle。
3.Step By Step
STEP10-1:代码修改 main.c
STEP10-2:代码修改 main.h
STEP10-3:代码修改 stm32u5xx_it.c
STEP10-4:代码修改 linked_list.c
STEP10-5:stm32u5xx_hal_msp.c
STEP11: link file 修改 : stm32u585xx_flash.icf
修改完后,编译工程,在按下 USER BUTTON 后,系统将进入 STOP2 模式, 板载 LED 会停止toggle,但是 LPGPIO 控制的 LED 仍然会继续 toggle。 4、总结 本文介绍了 LPBAM 模式,以及如何使用 CubeMX 方便地配置 DMA Linked List,最后完成了在 CPU 进入 Stop2 模式下的 GPIO toggle 任务。LPBAM 模式将会在打造超低功耗的产品中发挥非常重要的作用。 |
【经验分享】STM32 HAL库移植FreeModbus详细步骤
【逢7发帖赢大礼】STM32开发之IC门禁卡UID读取方法!
实战经验 | Keil工程使用NEAI库的异常问题
经验分享 | FDCAN数据段波特率增加后发送失败的问题分析
STM32几种流行开发环境的优缺点
好用软件推荐-TouchGFX Designer
OpenSTLinux 6.1发布:M33-TD加持+安全升级,STM32MPU开发效率翻倍!
【经验分享】STM32CubeIDE汉化
手把手教你VSCode搭建STM32开发环境
RTOS在STM32中的应用
微信公众号
手机版