1. 程式人生 > >STM32之option bytes踩坑記錄

STM32之option bytes踩坑記錄

最近在做一個stm32專案,用的盜版jlink除錯,突然某次下完程式,stm32竟然開始無限重啟了,量了一下復位腳,發現有周期性的重啟脈衝輸出,一開始我以為是硬體壞了,重新焊了一套硬體,發現新焊的是好的,但是原來那塊板子,檢查來檢查去感覺也不像是硬體和程式的問題。

後來我查了一些資料,想到去檢查復位後的RCC_CSR暫存器,這裡會標識系統是由哪個訊號引發的reset,看了以後才發現是由於看門狗引起的,但是看門狗我軟體上都一直沒開過,感覺非常奇怪。

後來查了些資料才發現:

STM32的獨立看門狗可以是硬體使能或軟體使能,硬體使能是通過option bytes配置,軟體使能是通過軟體設定暫存器位配置。

 

硬體使能的看門狗,在系統上電之後就開始工作,一旦開始工作就沒有辦法讓它停止工作;而軟體使能的看門狗,只有在設定了相應的暫存器位後才能開始工作,一旦開始工作,只有系統復位才能讓它停止工作。

如果啟用了硬體使能,必須通過擦除相應的選擇位元組位關閉硬體看門狗功能,這時看門狗的功能可以通過軟體使能。

原來那麼高階的,竟然還有option bytes這種東西,再查閱了一些關於option bytes資料:

STM32 的 Flash information block 部分,包含有特殊的選項位元組,可以用於系統配置等資訊, 其中還有兩個有效位元組(實際四個位元組,兩個是校驗位元組)的使用者自定義資料位元組。用ST-LINK可以直接配置這些特殊的配置位。

原來如此,STM32也有類似51/AVR之類的熔絲位,但是一般來說平時手動設定會比較少,所以不太注意這一點,用ST-LINK Utility可以直接使用ST-LINK來配置熔絲位:

開啟以後介面如下:

可以看到WDG_SW位被清零了,這個位如果清零,看門狗上電就會由硬體使能,且關不掉,而另一塊板子,這個配置位是置1的。我這裡把WDG_SW位勾選上,然後寫入,無限自動重啟問題就解決了。看來盜版jlink確實容易用出問題來,能用正版還是儘量用正版吧。