0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內(nèi)不再提示

STM32G071從standby模式退出后的SRAM數(shù)據(jù)保留

STM32單片機 ? 來源:STM32單片機 ? 2023-12-20 09:31 ? 次閱讀

01問題的描述

某客戶使用 STM32G071 芯片從 standby 模式下喚醒,想要 SRAM 的數(shù)據(jù)在退出 standby模式后得以保持。根據(jù)手冊的描述,配置了相應的比特位,但是發(fā)現(xiàn)數(shù)據(jù)仍然保持不了。

02問題的復現(xiàn)

根據(jù)客戶的描述,以及 STM32G071 的最新版參考手冊 RM0444 發(fā)現(xiàn),在 standby 模式下,可以通過設置 PWR_CR3 的 RRS 比特位去控制 SRAM 的保持能力,相應的 API 接口函數(shù)為HAL_PWREx_EnableSRAMRetention()、HAL_PWREx_DisableSRAMRetention() ;

63553056-9ed7-11ee-8b88-92fbcf53809c.png

基于例程

......STM32CubeRepositorySTM32Cube_FW_G0_V1.6.1ProjectsNUCLEOG071RBExamplesPWRPWR_STANDBYEWARM

以及相應的 NUCLEO-G071 開發(fā)板,修改部分代碼,根據(jù) LED4 的閃爍頻率去判斷從 Standby 模式退出后,SARM 里面的數(shù)據(jù)是否能夠保持住。

63647b1a-9ed7-11ee-8b88-92fbcf53809c.png

03問題的排查

基于上述的配置,簡單的測試了一下,發(fā)現(xiàn)即使 HAL_PWREx_EnableSRAMRetention() 使能了,但是測試代碼中的 sram_magic_word 的值沒有保持住,顯示的是 LED4 的閃爍頻率為1s。

究竟是什么原因?qū)е铝藬?shù)據(jù)沒有保持住呢,再次查看參考手冊,確定了只要使能 PWR_CR3的 RRS 比特位即能保持住,對比了 PWR_CR3 的 RRS 比特位的說明,在 standby 模式下,SRAM 的數(shù)據(jù)可以保持,但是當退出 standby 模式呢?

63687e7c-9ed7-11ee-8b88-92fbcf53809c.png

由于測試的是從 standby 模式退出,standby 模式退出后會進行 reset,該復位導致了 SRAM的數(shù)據(jù)被覆蓋或丟失?通過查閱資料,發(fā)現(xiàn)是編譯器的配置導致的。以 IAR 為例,查看其默認的腳本文件 icf;

6379c9b6-9ed7-11ee-8b88-92fbcf53809c.png

也就是說,在程序執(zhí)行的時候,會將 readwrite 的數(shù)據(jù)進行自動的初始化,而具有.noint 性質(zhì)的塊則不初始化,所以這兒還需要將 SRAM 里面要保持的數(shù)據(jù)放置在.noinit 的 section 中。

04問題的解決

知道原因之后,相應的措施也就明朗了,修改 icf 文件如下:

638ed84c-9ed7-11ee-8b88-92fbcf53809c.png

并將想要保持的 SRAM 中的數(shù)據(jù)前面加關鍵字__no_init :

63a72500-9ed7-11ee-8b88-92fbcf53809c.png

再次下載程序,發(fā)現(xiàn) LED4 的閃爍頻率跟隨 RRS 比特位值的不同而不同,符合預期。另外在實現(xiàn)的過程中,需要說明兩點的是:

1、修改 icf 后,可以通過 map 文件查看,應如下文所示,如果發(fā)現(xiàn)“P2”mismatch 之類的提示,檢查下該 section 中的變量,如上面提到的 sram_magic_word,可能被編譯器優(yōu)化了,在map 中也搜索不到該名稱,則可以在實際的代碼中使用該變量進行一些運算或判斷,然后重新編譯即可解決。

63aed7d2-9ed7-11ee-8b88-92fbcf53809c.png

2、當調(diào)試器連著 IAR 調(diào)試界面運行的時候,無論 RRS 的值設置為 0 或 1,G071 從standby 模式下退出后,SRAM 中的內(nèi)容均可以保持,如果需要驗證 RRS 的值的影響,則建議斷開調(diào)試器,讓程序 free-running ,可以通過比如 LED 的閃爍頻率去判斷結果。

審核編輯:湯梓紅

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學習之用,如有內(nèi)容侵權或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 芯片
    +關注

    關注

    455

    文章

    50816

    瀏覽量

    423674
  • 接口
    +關注

    關注

    33

    文章

    8598

    瀏覽量

    151166
  • sram
    +關注

    關注

    6

    文章

    767

    瀏覽量

    114691
  • STM32
    +關注

    關注

    2270

    文章

    10900

    瀏覽量

    356046
  • 代碼
    +關注

    關注

    30

    文章

    4788

    瀏覽量

    68616

原文標題:實戰(zhàn)經(jīng)驗 | STM32G071 從 standby 模式退出后的 SRAM 數(shù)據(jù)保留

文章出處:【微信號:STM32_STM8_MCU,微信公眾號:STM32單片機】歡迎添加關注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏

    評論

    相關推薦

    請問STM32G071如何通過DWT實現(xiàn)us精準定時?

    STM32G071怎樣通過DWT實現(xiàn)us精準定時?,各位大佬有實現(xiàn)的嗎?
    發(fā)表于 03-20 06:59

    STM32G071G070在未燒寫程序時,MCU上電其PB7腳輸出的是個高電平,為什么?

    STM32G071G070在未燒寫程序時,MCU上電其PB7腳輸出的是個高電平,因為此腳接的是一個蜂鳴器,MCU上電一直在響,燒寫程序蜂鳴器工作邏輯正常,PB7腳并不是jlink或SW的調(diào)試引腳(調(diào)試引腳MCU硬件內(nèi)部有上拉
    發(fā)表于 03-29 08:13

    嵌入式系統(tǒng)的核心器件:STM32G071開發(fā)事項

    STM32G071的PD0,PD2作為外部中斷使用,外部接10K上拉電阻拉到3.3V。外部設備被觸發(fā)電平為低電平,正常無信號?!締栴}】在以上背景下,按道理外部設備正常時(未觸發(fā)中斷),IO口輸入電平應該是
    發(fā)表于 12-06 09:39

    時鐘小部件是不是不適用于STM32G071應用程序模板呢

    你好 !對于我的 TouchGFX 設計器,數(shù)字小部件和模擬時鐘小部件不適用于 STM32G071 應用程序模板(至少在模擬器中,我無法與板確認)。當我說它不起作用時,我的意思是它顯示得很好,但值(或動畫)永遠不會更新。小部件被凍結為原始值。
    發(fā)表于 12-02 11:02

    沒有VREF+ 輸入的STM32G071設備的參考是什么?

    在我的 NUCLEO-G071RB 板上,我能夠使用 CubeMX 設置 VREFBUF 模式以使用 VREF+ 輸入引腳、內(nèi)部 2.5V 或 2.048V 作為 ADC 和 DAC 的參考。但是我
    發(fā)表于 12-05 06:57

    如何為stm32g071板開發(fā)一種Keil環(huán)境呢?

    我正在為 stm32g071 核板使用 Keil 開發(fā)環(huán)境。我應該選擇哪種設備?stm32g071rbIx 還是 stm32g071rbTx? 我如何決定哪一個適合我?
    發(fā)表于 01-04 08:11

    STM32G071 NUCLEO使用flash >30%時位圖渲染不正確怎么解決?

    的項目,選擇 STM32G071 演示加載一些額外的圖像到項目(拆分的 .gif 文件發(fā)出的一系列 40 png 總大?。?50kb連接板生成代碼和閃存目標結果:GUI 的一些圖像丟失(黑線),例如
    發(fā)表于 01-09 07:32

    如何用STM32G071輸出比較計算1KHz頻率?

    我有 NUCLEO-G071RB 板。如何用STM32G071輸出比較計算1KHz頻率?我的系統(tǒng)時鐘頻率是 64 MHz 。 --
    發(fā)表于 01-10 07:36

    如何連接STM32G071進行USB Type-C PD充電?

    和 D- 以允許 5V 負載以更高的功率(DCP)充電?我們的計劃是自主 USB PD 充電 IC 切換到 STM32G071。
    發(fā)表于 01-10 07:45

    STM32G071GB HSE引腳可用嗎?

    我計劃在 STM32G071GB(UFQFPN28 - 28 引腳封裝)上使用 HSE第 41 頁上的數(shù)據(jù)STM32G071 確實明確說明 HSE 引腳是否可用于小型封裝(28 引腳)數(shù)據(jù)
    發(fā)表于 02-08 07:34

    MCU退出standby模式時歷史數(shù)據(jù)會丟失嗎?

    MCU退出standby模式時歷史數(shù)據(jù)會丟失嗎?喚醒=重置?S32K3是否有專門的待機模式數(shù)據(jù)
    發(fā)表于 05-10 06:06

    一文知道STM32G071 PD0 PD2引腳使用注意事項

    STM32G071的PD0,PD2作為外部中斷使用,外部接10K上拉電阻拉到3.3V。外部設備被觸發(fā)電平變?yōu)榈碗娖剑匠13指唠娖叫盘枴?/div>
    的頭像 發(fā)表于 07-21 10:30 ?1.5w次閱讀
    一文知道<b class='flag-5'>STM32G071</b> PD0 PD2引腳使用注意事項

    STM32G071 PD0 PD2引腳使用注意事項

    STM32G071的PD0,PD2作為外部中斷使用,外部接10K上拉電阻拉到3.3V。外部設備被觸發(fā)電平變?yōu)榈碗娖?,平常保持高電平信號?/div>
    發(fā)表于 02-10 10:27 ?1次下載
    <b class='flag-5'>STM32G071</b> PD0 PD2引腳使用注意事項

    STM32G071最小系統(tǒng)板原理圖與PCb源文件

    STM32G071最小系統(tǒng)板原理圖與PCb源文件
    發(fā)表于 09-26 14:20 ?0次下載

    DS12232_STM32G071x8,STM32G071xB單片機數(shù)據(jù)手冊

    DS12232_STM32G071x8,STM32G071xB單片機數(shù)據(jù)手冊
    發(fā)表于 11-23 08:35 ?1次下載
    DS12232_<b class='flag-5'>STM32G071</b>x8,<b class='flag-5'>STM32G071</b>xB單片機<b class='flag-5'>數(shù)據(jù)</b>手冊