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 模式將會在打造超低功耗的產品中發揮非常重要的作用。
文檔中所用到的工具及版本
測試工具版本信息:
? IAR:8.50.1
? CubeMX:6.30.0
來源:STM32單片機
免責聲明:本文為轉載文章,轉載此文目的在于傳遞更多信息,版權歸原作者所有。本文所用視頻、圖片、文字如涉及作品版權問題,請聯系小編進行處理
審核編輯 黃宇
-
STM32
+關注
關注
2272文章
10923瀏覽量
357562 -
模式
+關注
關注
0文章
65瀏覽量
13431 -
CubeMx
+關注
關注
0文章
31瀏覽量
1379
發布評論請先 登錄
相關推薦
評論