首頁>Club>
4
回覆列表
  • 1 # 魚樂DIY

    1.程式碼bug導致出現硬中斷錯誤,程式停在此中斷函式不再執行(這個可以用模擬器線上模擬一段時間後檢視)

    2.硬體問題:晶振不起振、電源晶片輸出功率不足導致電壓不穩

    3.干擾,電磁干擾(emc)

  • 2 # 科技電小二

    Stm32出現宕機,程式跑飛這類的問題,我之前在開發過程中就遇到過,造成這種不良,有很多可能的原因,軟體硬體都有可能,需要從幾個方面去排查

    硬體方面:

    1 stm32的供電電壓是否穩定,是否在正常工作電壓範圍內。電源文波大小一定要小,一般Ldo供電在3.3v在幾個ma ,在stm32的vdda 和vssa引腳一定要接磁珠,各個電源硬體要接濾波電容

    2 晶振以及旁路電容,一定要儘可能的靠近微控制器,整個電路中是否有裸露的介面如usb io 口 這類的介面,因為冬天人體或者其他物體靜電很大,當瞬間大靜電透過接觸,傳導給微控制器時,很容易引起微控制器復位或者宕機,所以有這樣的介面需要做防靜電電路,或者專用防靜電晶片在保護微控制器不宕機。

    3微控制器復位電路,一定在設計的時候需要加旁路電容,同時需要保證復位電路電源穩定,這個與第一點原因說明一樣。

    4無線射頻訊號,當電路中有無線類如藍芽wifi gsm等無線射頻訊號時,也很容易因為無線輻射干擾造成微控制器宕機,這個就需要找專業測試天線的公司或者裝置或者人員去測試輻射狀態。無線射頻的電線一定要匹配好,否則很容易會有無法預測的不良狀態出現。

    硬體是軟體執行的載體,需要在設計時候就考慮好,增加抗干擾因素,

    硬體可以透過靜電臺 空氣放電一萬伏,接觸式採用八千伏,使用一定數量的機器,一定次數的測試,如果不出現宕機情況,就說明硬體基本沒有問題。

    軟體方面

    1考慮堆疊,編譯器預設啟動檔案中,有堆疊設定的程式碼,一般官方預設的堆疊設定的比較小,當你的專案程式碼量大的時候,需要調整這個檔案裡面堆疊大小

    2 檢查程式碼,是否有不合理死迴圈,檢查是否有定義的陣列溢位,造成程式跑飛

    3 是否有使用內部flash儲存,當不合理的flash記憶體操作時,也會造成宕機. 經過批次試產,機器宕機問題得到解決.

    4 不合理的中斷,當有多箇中斷處理時候,一定要設定清晰各個中斷不同的中斷優先順序,不合理的中斷設定,也有可能造成宕機情況的出現。

    5 定義的陣列不合理,在使用的過程中出現溢位,結果程式就在使用不可知的某一個flash 位置的資料進行處理,所以這點也很重要。

    以上是我根據自身專案經驗,對stm32宕機問題的分析與處理。

  • 3 # 嵌入式攻城獅

    1、陣列越界,野指標。

    2、棧溢位。

    3、暫存器配置錯誤。

    4、看門狗沒喂。

    5、晶振失效。

    6、串列埠溢位中斷。

  • 4 # 水牛

    stm32出現宕機情況分硬體引起的和軟體引起的,但是有時很難區分是硬體問題還是軟體問題。我在其他同學回答的問題基礎上再補充幾點。

    一、硬體問題

    1、硬體引起宕機一般都是被幹擾引起的。驅動的外設有高壓大功率電磁閥:這種情況引起的時間有兩種情況,一種是設計電路時沒有做抗干擾處理,比如沒有使用光耦隔離、沒有使用RC吸收電路,還有一種情況是將電池閥的電纜和低壓電纜捆綁到一根線速導致干擾耦合。如果電路中有AC220V電磁閥建議做抗干擾處理。分辨的方法就是經常出現閥門動作後出現宕機。

    2、EMC干擾引起宕機:工業產品都有EMC等級要求的,即使沒有也建議新產品樣機出來後做EMC測試,在樣機階段解決這類問題。

    3、通訊電路引入干擾:有些新手設計電路時微控制器io出來就是RS485介面晶片,一般RS485通訊線走的距離比較遠,半路很容易引入各種干擾訊號。

    二、軟體問題

    1、串列埠異常中斷:STM32的串列埠中斷開啟後有一個串列埠異常中斷是預設開啟的,串列埠如果出現異常導致異常中斷,如果程式中沒有處理,就會導致程式會一直進入串列埠中斷,看上去和宕機一樣。我當時遇見這個問題在裝置旁邊蹲守了一週才解決。

    2、IIC異常宕機:早期的stm32晶片IIC介面有缺陷,使用硬體IIC都會導致宕機,基本都是模擬IIC,這個問題比較容易發現。

    3、陣列越界:STM32程式有個特點,只要出現數組越界,就會進入系統異常中斷,一般這個中斷函式都是空的,所以出現數據越界就會宕機。使用陣列時最好做好防範措施。

    4、堆疊溢位:同樣堆疊溢位也會進入系統異常中斷函式,寫程式時儘量避免函式呼叫超過5層。

  • 中秋節和大豐收的關聯?
  • 手機連上wifi後顯示網際網路不可用怎麼辦啊?