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

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

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

工程師筆記 | STM32G0 復(fù)位后死機(jī)

jf_pJlTbmA9 ? 來源:STM32單片機(jī) ? 作者:STM32單片機(jī) ? 2023-10-17 15:23 ? 次閱讀

引言

有客戶反映,STM32G071RBT6 在使用 STM32CubeProgrammer 燒錄完程序后只能運(yùn)行一次,復(fù)位后,程序無法運(yùn)行,如果掉電后重新上電,程序恢復(fù)正常。

問題描述

根據(jù)客戶描述,該問題可通過以下步驟復(fù)現(xiàn):

2.1. 測(cè)試代碼的功能流程圖

準(zhǔn)備測(cè)試代碼 App1 和 App2:

“STM32G0

“STM32G0

2.2. 問題復(fù)現(xiàn)步驟

操作步驟

(1) 在 STM32CubeProgrammer 中下載

應(yīng)用程序 App1(如圖 3),并設(shè)置 RDP=1(如圖 4);然后斷開 STM32CubeProgrammer 的連接,板子斷電后重新上電;

“STM32G0

“STM32G0

(2) 根據(jù) log 提示(如圖 5),按下用戶按鍵,板子會(huì)在 RDP 降級(jí)的過程中,產(chǎn)生全片擦除的動(dòng)作,等待 10s,確保芯片擦除完成后從板子再斷電并重新上電;

“STM32G0

(3) 使用 STM32CubeProgrammer 重新連接板子,在下載界面選中“Run afterprogramming”后,下載應(yīng)用程序 App2(如圖 6),下載完成后,可以看到板子執(zhí)行閃燈的效果,并從 App2 的 log 信息可知,此時(shí)的 empty check 位被置起(如圖 7)。

“STM32G0

“STM32G0

(4) 在不斷電的情況下,如果直接按下外部復(fù)位按鈕,程序?qū)⒊霈F(xiàn)無法執(zhí)行的現(xiàn)象。

問題解決

通過問題的復(fù)現(xiàn),我們注意到,程序無法正常運(yùn)行時(shí),實(shí)際進(jìn)入了內(nèi)置的 ISP 程序,即內(nèi)置的 bootloader 程序。為什么會(huì)進(jìn)入 bootloader 呢?在 G0 的參考手冊(cè)中,我們注意到 empty check 的描述如下:

“STM32G0

這里的描述有兩點(diǎn)是很重要的。

A :出廠的芯片,因?yàn)槭菦]有程序的空片,empty check 位是被置位的,但實(shí)際電路中因 boot 管腳定義的程序從 Main Flash 啟動(dòng)的場(chǎng)景時(shí),程序會(huì)由于 empty check 位而強(qiáng)制從內(nèi)置的 bootloader 啟動(dòng)。

B :empty check 只會(huì)在加載 OptionByte 時(shí)更新,所以在空片上下載完程序后,應(yīng)當(dāng)通過 power on reset 或者手動(dòng)清除該位,程序才可以正常運(yùn)行。

我們來驗(yàn)證一下,在復(fù)現(xiàn)問題的第(4)步中,如果先按下用戶按鈕,應(yīng)用程序 App2會(huì)通過軟件清除 empty check 位,再通過外部復(fù)位按鈕,則程序正常運(yùn)行, 根據(jù) log 信息可以看到 empty check 位被清除(如圖 9),且程序運(yùn)行恢復(fù)正常。

“STM32G0

小結(jié)

本文描述的問題雖然隱藏的比較深,但規(guī)律還是很明顯的,只要重新上電即可恢復(fù),說明很可能和 power on reset 有關(guān)。在參考手冊(cè)中搜索 power on reset 關(guān)鍵字,可以很快的找到一些線索。所以分析問題時(shí),要多關(guān)注這樣的有規(guī)律的問題信息。

來源:STM32單片機(jī)
免責(zé)聲明:本文為轉(zhuǎn)載文章,轉(zhuǎn)載此文目的在于傳遞更多信息,版權(quán)歸原作者所有。本文所用視頻、圖片、文字如涉及作品版權(quán)問題,請(qǐng)聯(lián)系小編進(jìn)行處理


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

    關(guān)注

    2257

    文章

    10828

    瀏覽量

    352468
  • 死機(jī)
    +關(guān)注

    關(guān)注

    0

    文章

    17

    瀏覽量

    8575
  • 復(fù)位
    +關(guān)注

    關(guān)注

    0

    文章

    166

    瀏覽量

    24124
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    關(guān)于STM32G0將會(huì)在今年爆發(fā)嗎?

    STM32G0將會(huì)在今年爆發(fā)嗎?
    的頭像 發(fā)表于 03-04 11:21 ?4509次閱讀

    STM32G0復(fù)位死機(jī)

    有客戶反映,STM32G071RBT6 在使用 STM32CubeProgrammer 燒錄完程序只能運(yùn)行一次,復(fù)位,程序無法運(yùn)行,如果
    的頭像 發(fā)表于 03-17 10:56 ?6980次閱讀

    AN5096_介紹STM32G0系列硬件開發(fā)

    AN5096_介紹STM32G0系列硬件開發(fā)
    發(fā)表于 11-21 08:11 ?4次下載
    AN5096_介紹<b class='flag-5'>STM32G0</b>系列硬件開發(fā)

    STM32G0學(xué)習(xí)資料

    STM32G0學(xué)習(xí)資料
    發(fā)表于 11-21 08:11 ?16次下載
    <b class='flag-5'>STM32G0</b>學(xué)習(xí)資料

    AN5145_從STM32F0系列遷移到STM32G0系列的應(yīng)用

    AN5145_從STM32F0系列遷移到STM32G0系列的應(yīng)用
    發(fā)表于 11-21 17:06 ?17次下載
    AN5145_從<b class='flag-5'>STM32F0</b>系列遷移到<b class='flag-5'>STM32G0</b>系列的應(yīng)用

    AN5145_從STM32F0系列到 STM32G0 系列的應(yīng)用移手冊(cè)

    AN5145_從STM32F0系列到 STM32G0 系列的應(yīng)用移手冊(cè)
    發(fā)表于 11-21 17:06 ?13次下載
    AN5145_從<b class='flag-5'>STM32F0</b>系列到 <b class='flag-5'>STM32G0</b> 系列的應(yīng)用移手冊(cè)

    PM0223_STM32L0STM32G0單片機(jī)編程手冊(cè)

    PM0223_STM32L0STM32G0單片機(jī)編程手冊(cè)
    發(fā)表于 11-24 08:29 ?13次下載
    PM0223_<b class='flag-5'>STM32L0</b>和<b class='flag-5'>STM32G0</b>單片機(jī)編程手冊(cè)

    STM32G0開發(fā)筆記:FreeRTOS和FreeModbus庫使用

    使用Platformio平臺(tái)的libopencm3開發(fā)框架來開發(fā)STM32G0,以下為FreeRTOS和FreeModbus庫使用。
    的頭像 發(fā)表于 01-16 14:44 ?5048次閱讀
    <b class='flag-5'>STM32G0</b>開發(fā)<b class='flag-5'>筆記</b>:FreeRTOS和FreeModbus庫使用

    STM32G0開發(fā)筆記:FreeRTOS和CLI組件使用

    使用Platformio平臺(tái)的libopencm3開發(fā)框架來開發(fā)STM32G0,以下為FreeRTOS和CLI組件使用。
    的頭像 發(fā)表于 01-16 14:47 ?3088次閱讀
    <b class='flag-5'>STM32G0</b>開發(fā)<b class='flag-5'>筆記</b>:FreeRTOS和CLI組件使用

    STM32G0開發(fā)筆記:使用FreeRTOS系統(tǒng)

    使用Platformio平臺(tái)的libopencm3開發(fā)框架來開發(fā)STM32G0,下面為使用FreeRTOS系統(tǒng)。
    的頭像 發(fā)表于 01-16 15:07 ?2132次閱讀
    <b class='flag-5'>STM32G0</b>開發(fā)<b class='flag-5'>筆記</b>:使用FreeRTOS系統(tǒng)

    STM32G0開發(fā)筆記:SPI接口的基本使用

    使用Platformio平臺(tái)的libopencm3開發(fā)框架來開發(fā)STM32G0,下面介紹SPI接口的基本使用。
    的頭像 發(fā)表于 01-17 10:38 ?2890次閱讀
    <b class='flag-5'>STM32G0</b>開發(fā)<b class='flag-5'>筆記</b>:SPI接口的基本使用

    STM32G0開發(fā)筆記:多通道ADC與DMA的使用

    使用Platformio平臺(tái)的libopencm3開發(fā)框架來開發(fā)STM32G0,以下為多通道ADC與DMA的使用。
    的頭像 發(fā)表于 01-17 10:41 ?6409次閱讀
    <b class='flag-5'>STM32G0</b>開發(fā)<b class='flag-5'>筆記</b>:多通道ADC與DMA的使用

    STM32G0開發(fā)筆記:串口中斷的使用

    使用Platformio平臺(tái)的libopencm3開發(fā)框架來開發(fā)STM32G0,以下為串口中斷的使用。
    的頭像 發(fā)表于 01-17 10:46 ?2148次閱讀

    STM32G0開發(fā)筆記:LED燈示例

    使用Platformio平臺(tái)的libopencm3開發(fā)框架來開發(fā)STM32G0,下面為L(zhǎng)ED燈示例。
    的頭像 發(fā)表于 01-17 10:52 ?1276次閱讀
    <b class='flag-5'>STM32G0</b>開發(fā)<b class='flag-5'>筆記</b>:LED燈示例

    STM32G0系列安全手冊(cè)

    電子發(fā)燒友網(wǎng)站提供《STM32G0系列安全手冊(cè).pdf》資料免費(fèi)下載
    發(fā)表于 07-31 16:25 ?0次下載
    <b class='flag-5'>STM32G0</b>系列安全手冊(cè)