国产久操视频-国产久草视频-国产久热精品-国产久热香蕉在线观看-青青青青娱乐-青青青青在线成人视99

  • 正文
  • 推薦器件
  • 相關(guān)推薦
申請入駐 產(chǎn)業(yè)圖譜

如何在低功耗模式下debug MCU?

2022/09/30
882
加入交流群
掃碼加入
獲取工程師必備禮包
參與熱點(diǎn)資訊討論
正常情況下,通過SWD在線調(diào)試時,一旦芯片進(jìn)入低功耗模式(Stop或者Standby),調(diào)試就會斷開。原因是進(jìn)入Stop或者Standby模式后,內(nèi)核時鐘就停止了。如果想在調(diào)試低功耗代碼時還可以正常通過調(diào)試接口debug,有沒有什么辦法呢?

以STM32F030 Stop模式為例,方法是將DBGMCU_CR寄存器的DBG_STOP位置1。

可以看到DBG_STOP置1時,F(xiàn)CLK和HCLK將處于開啟狀態(tài),由內(nèi)部RC振蕩器提供時鐘,所以還可以繼續(xù)debug。

之前在調(diào)試低功耗功能時,我都是通過加打印信息來調(diào)試的。所以在看到此功能時,就迫不及待的去試了一下。

使用官方HAL庫ExamplesPWRPWR_CurrentConsumption 工程,將原例程簡化了下,使能 DBG_STOP,之后通過WFI方式進(jìn)入stop模式,然后while(1)里翻轉(zhuǎn)LED,通過按鍵方式喚醒。

理論上述代碼應(yīng)該是先進(jìn)入低功耗,之后按鍵喚醒的話,LED才開始閃爍。

但是實(shí)際現(xiàn)象卻是LED直接就閃爍了,這是怎么回事呢?

后來經(jīng)過分析,是因?yàn)镠AL庫在初始化時,使用了systick同時開啟了中斷,當(dāng)DBG_STOP設(shè)置位1時,systick 因?yàn)闀r鐘在,所以還繼續(xù)正常運(yùn)行,導(dǎo)致了systick中斷喚醒了MCU,所以進(jìn)入了到while(1)里,

當(dāng)我們把systick中斷關(guān)掉

這時就進(jìn)入了低功耗。因?yàn)镠AL_Delay 函數(shù)也使用了systcik,所以這里也注釋掉,或者也可以換成其他的延時函數(shù)。HAL庫在時鐘初始化前就開啟了systick,原因是后面的延時函數(shù)用的就是systcik實(shí)現(xiàn)的。

這時我們?nèi)龠\(yùn)行,可以看到debug連接沒有斷掉,也沒有再進(jìn)入while(1)里,此時進(jìn)入了低功耗函數(shù),可以通過調(diào)試窗口的stop來驗(yàn)證,可以看到一直停在下面WFI里,需要注意的是,stop之后再單步或者全速運(yùn)行,就會從WFI跳出繼續(xù)向下運(yùn)行。所以執(zhí)行_WFI()函數(shù)時,必須是全速執(zhí)行,不可以單步執(zhí)行。

重新復(fù)位全速運(yùn)行后,在while(1)里加斷點(diǎn),可以看到?jīng)]有進(jìn)入到斷點(diǎn),這時按一下按鍵喚醒MCU,就跳入到斷點(diǎn)里了。這樣現(xiàn)象就正確了。

最后總結(jié)一下:

1) 通過將DBG_STOP置1,可以支持在低功耗模式下debug MCU。

2) HAL庫里使用systick中斷,使用WFI進(jìn)入低功耗前,需要注意將中斷關(guān)掉。如果使用WFE進(jìn)入低功耗,需要將systick使能計數(shù)標(biāo)志位置0。

關(guān)注公眾號,掃碼加入嵌入式交流群:

推薦器件

更多器件
器件型號 數(shù)量 器件廠商 器件描述 數(shù)據(jù)手冊 ECAD模型 風(fēng)險等級 參考價格 更多信息
NC7WZ17P6X 1 onsemi TinyLogic UHS Dual Buffer with Schmitt Trigger Inputs, 3000-REEL

ECAD模型

下載ECAD模型
$0.12 查看
SMD2440-011 1 Honeywell Microelectronics & Precision Sensors Photo Transistor Detector, Surface Mount, 3.81 X 2.54 X 2.10 MM, CERAMIC PACKAGE-SME2440
$8.61 查看
KSZ8081MLXIA 1 Microchip Technology Inc DATACOM, ETHERNET TRANSCEIVER, PQFP48

ECAD模型

下載ECAD模型
$1.86 查看

相關(guān)推薦

登錄即可解鎖
  • 海量技術(shù)文章
  • 設(shè)計資源下載
  • 產(chǎn)業(yè)鏈客戶資源
  • 寫文章/發(fā)需求
立即登錄

TopSemic,讓芯片使用更簡單。 專注分享:嵌入式,單片機(jī),STM32,ARM,RTOS,Linux, 軟硬件,半導(dǎo)體,電子技術(shù)等相關(guān)內(nèi)容。

通道| 宽甸| 新安县| 大姚县| 来安县| 合川市| 辛集市| 灵宝市| 安西县| 辽阳市| 沾化县| 永新县| 民勤县| 怀柔区| 博兴县| 浏阳市| 乐至县| 朝阳县| 南木林县| 镇赉县| 余江县| 长沙县| 社旗县| 井冈山市| 虎林市| 阳曲县| 化德县| 安义县| 郓城县| 西平县| 西贡区| 老河口市| 治多县| 马关县| 阳泉市| 湘潭县| 武穴市| 永昌县| 本溪| 临颍县| 凤冈县|