<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

EEPW首頁(yè) > 嵌入式系統 > 設計應用 > 實(shí)戰經(jīng)驗 | STM32G071 從 standby 模式退出后的 SRAM 數據保留

實(shí)戰經(jīng)驗 | STM32G071 從 standby 模式退出后的 SRAM 數據保留

作者: 時(shí)間:2023-12-28 來(lái)源:STM32單片機 收藏

01 問(wèn)題的描述

本文引用地址:http://dyxdggzs.com/article/202312/454333.htm

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

02 問(wèn)題的復現

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

圖片

基于例程

......STM32CubeRepositorySTM32Cube_FW_G0_V1.6.1ProjectsNUCLEOG071RBExamplesPWRPWR_STANDBYEWARM 

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

圖片

03 問(wèn)題的排查

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

究竟是什么原因導致了數據沒(méi)有保持住呢,再次查看參考手冊,確定了只要使能 PWR_CR3的 RRS 比特位即能保持住,對比了 PWR_CR3 的 RRS 比特位的說(shuō)明,在 standby 模式下,SRAM 的數據可以保持,但是當退出 standby 模式呢?

圖片

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

圖片

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

04 問(wèn)題的解決

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

圖片

并將想要保持的 SRAM 中的數據前面加關(guān)鍵字__no_init :

圖片

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

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

圖片

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



關(guān)鍵詞: STM32G071 standby SRAM

評論


相關(guān)推薦

技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>