STM32Cude Tool

Preface 

上篇章針對STM32CubeMX做完介紹後,這章節會進入程式編譯CubeIDE與燒入方式CubeProgram做深入介紹

STM32CubeIDE

網路資源主要撰寫主要以MDK與CubeIDE為大宗,這邊以CubeIDE為主軸介紹。第一步來先介紹基本介面如下圖

  • 黃框:設定欄列表,主要最常使用到的是甲蟲符號的Debug與播放按鍵的燒入扭
  • 紅框:為已開的專案型態
  • 藍框:為程式編輯視窗
  • 綠框:在程式燒入後可以去跑RAM等使用比率但非Stack/Heap

Debug mode

這邊進入到Debug mode時候,可以看到分成3大區塊,最左手邊是可以看到目前程式運行到哪邊詳細確認,右邊眼鏡EXP位置可以即時去監控目前內部變數的狀況,中間程式區塊就是目前跑到的涵式區域。
紅框區域是主要用在程式執行下一步或停止Debug mode,而黃色區塊跟一般程式一樣可以設定斷點

STM32CubeProgram

目前CubeProgram主要是用到是在於燒入與option byte setting,在於配置Flash等等是一個相對方便的軟體,下面可以看一下基本操作介面
這邊注意一般ST給的公版都會支援ST-LINK,如果要使用SPI與I2C燒入等等就需要使用ST官方的ST-LinKV3

  • 紅框:連接或燒入方式選定方式
  • 黃框:燒入設定與實際燒入使用
  • 橘框(OB):option byte setting
  • 藍框:擦拭全部記憶體位置

中間區塊是顯示Flash位置與資料,且快按滑鼠左鍵2下可以直接修改內部數值

在燒入部分可以看到上圖,主要設定3個區塊

  1. 綠框:首先選擇要燒入的檔案,這邊可以選擇Bin檔或Hex檔
  2. 藍框:設定燒入的起始位置(一般是使用到雙Bank或切割APP才會需要設定此位置一般不特別設定)
  3. 紅框:開始燒入

下圖我們可以來看到Option Bytes設定(STM32與STM8最大不同在於Option Bytes已不會再額外生成檔案,因此再批量燒入時都會用Command line形式燒入)

上圖比較需要注意的設定是Read out Protection與User Configuration,這邊RDP一般是設定AA,設定BB可以防阻由外部程式讀取內部程式。
但這邊切記如果CC是不可逆,一但切成CC燒入MCU就等同燒斷,無法在讀取與燒入其他程式
PS:這邊設定BB切回AA時,會觸發Flash資料全部擦除,因此設定BB就不用怕程式被盜取
在User Configuration最常被使用到是Boot0/Boot1與IWDG設定,這邊每顆MCU在此區況設定都會有些許不同需詳細閱讀其reference manual
更動Option Bytes時切記中途不要斷電(會導致系統錯誤可能會使Option Bytes錯亂無法復歸),等修改完成後在斷電重新上電,讓系統確實吃到新的設定

STM32CubeProgram Command Line

這邊ST有給予2種版本可以開啟CubeProgram,其中CLI開啟如下圖,可以在Bin的資料夾中找到指令部分可以參考ST官網UM2237文件,這邊提供一個當設定IWDG設定出錯無法在正常修改Option Bytes時的解法(以G031為例)

.\STM32_Programmer_CLI.exe -c port=swd mode=UR -ob rdp=1              //RDP 設定為level1  (0xBB)

.\STM32_Programmer_CLI.exe -c port=swd mode=UR -ob rdp=0xAA       //再把RDP改回AA使其強制洗掉全部Flash內容

.\STM32_Programmer_CLI.exe -c port=swd mode=UR -ob WRP1A_STRT=31 WRP1A_END=0         //WRP 設定復歸

.\STM32_Programmer_CLI.exe -c port=swd mode=UR –ob NRST_MODE=3 // NRST_MODE設定復歸

.\STM32_Programmer_CLI.exe -c port=swd mode=UR –ob nBOOT0=1

.\STM32_Programmer_CLI.exe -c port=swd mode=UR –ob nBOOT1=1

.\STM32_Programmer_CLI.exe -c port=swd mode=UR –ob nBOOT_SEL=1

.\STM32_Programmer_CLI.exe -c port=swd mode=UR –ob WWDG_SW=1

.\STM32_Programmer_CLI.exe -c port=swd mode=UR –ob IWDG_STDBY=1

.\STM32_Programmer_CLI.exe -c port=swd mode=UR –ob IWDG_STOP=1

.\STM32_Programmer_CLI.exe -c port=swd mode=UR –ob IWDG_SW=1

執行完上面即可有機會復歸MCU

Leave a Comment

Your email address will not be published. Required fields are marked *

Shopping Cart