單片機程序死機跑飛六大原因
出處:電子產(chǎn)品世界 發(fā)布于:2017-04-10 18:04:06
單片機程序死機,跑飛了可以從以下幾個方面查找原因:
1.意外中斷。
是否打開了某個中斷,但是沒有響應(yīng)和**中端標(biāo)志,導(dǎo)致程序一直進入中斷,造成死機假象。
2. 中斷變量處理不妥。
若定義某些會在中斷中修改的全局變量,這時要注意兩個問題:首先為了防止編譯器優(yōu)化中斷變量,要在這些變量定義時前加 volatile,其次在主循環(huán)中讀取中斷變量前應(yīng)該首先關(guān)閉全局中斷,防止讀到一半被中斷給修改了,讀完之后再打開全局中斷;否則出現(xiàn)造成數(shù)據(jù)亂套。
3. 地址溢出,常見錯誤為指針操作錯誤。
我要著重說的是數(shù)組下標(biāo)使用循環(huán)函數(shù)中循環(huán)變量,如果循環(huán)變量沒控制好則會出現(xiàn)數(shù)組下標(biāo)越界,意外修改系統(tǒng)的寄存器造成死機,這種情況下如果死機說明運氣好,否則后面不知道發(fā)生什么頭疼的事。
4. 無條件的死循環(huán)。
比如使用while(x);等待電平變化,正常情況下x都會變成0,就怕萬一,因此加上時間限制;
5. 看門狗沒有關(guān)閉。
有的單片機即使沒使用看門狗開機時也有可能意外自動開啟了周期的看門狗,導(dǎo)致軟件不斷復(fù)位,造成死機,這個要看芯片手冊,在程序復(fù)位后首先應(yīng)該顯式**看門狗再關(guān)閉看門狗;
6. 堆棧溢出。
難查找的問題,對于容量小的單片機,盡量減少函數(shù)調(diào)用層級,減少局部變量,從而減少壓棧的時候所需的空間。當(dāng)你把以上幾條都試過不能解決問 題,試一試把你的被調(diào)用少函數(shù)直接內(nèi)置到調(diào)用的地方并且把占用RAM大的局部變量改成全局變量,試一試說不定就可以了。
版權(quán)與免責(zé)聲明
凡本網(wǎng)注明“出處:維庫電子市場網(wǎng)”的所有作品,版權(quán)均屬于維庫電子市場網(wǎng),轉(zhuǎn)載請必須注明維庫電子市場網(wǎng),http://www.hbjingang.com,違反者本網(wǎng)將追究相關(guān)法律責(zé)任。
本網(wǎng)轉(zhuǎn)載并注明自其它出處的作品,目的在于傳遞更多信息,并不代表本網(wǎng)贊同其觀點或證實其內(nèi)容的真實性,不承擔(dān)此類作品侵權(quán)行為的直接責(zé)任及連帶責(zé)任。其他媒體、網(wǎng)站或個人從本網(wǎng)轉(zhuǎn)載時,必須保留本網(wǎng)注明的作品出處,并自負(fù)版權(quán)等法律責(zé)任。
如涉及作品內(nèi)容、版權(quán)等問題,請在作品發(fā)表之日起一周內(nèi)與本網(wǎng)聯(lián)系,否則視為放棄相關(guān)權(quán)利。
- 單片機技術(shù)特性與嵌入式開發(fā)實踐指南2026/1/7 10:00:02
- 單片機(MCU)與數(shù)字信號處理器(DSP)分類及選型技術(shù)指南2025/12/30 10:02:37
- 工業(yè)級DSP信號處理系統(tǒng):硬件適配與抗干擾工程方案2025/12/15 14:41:00
- HOLTEK推出HT32F65533G/733G內(nèi)建N/N預(yù)驅(qū)電機專用SoC單片機2025/11/26 14:11:41
- 什么是C51數(shù)據(jù)類型擴充定義2025/10/27 13:59:22
- 高速PCB信號完整性(SI)設(shè)計核心實操規(guī)范
- 鎖相環(huán)(PLL)中的環(huán)路濾波器:參數(shù)計算與穩(wěn)定性分析
- MOSFET反向恢復(fù)特性對系統(tǒng)的影響
- 電源IC在惡劣環(huán)境中的防護設(shè)計
- 連接器耐腐蝕性能測試方法
- PCB電磁兼容(EMC)設(shè)計與干擾抑制核心實操規(guī)范
- 用于相位噪聲測量的低通濾波器設(shè)計與本振凈化技術(shù)
- MOSFET在高頻開關(guān)中的EMI問題
- 電源IC在便攜式設(shè)備中的設(shè)計要點
- 連接器結(jié)構(gòu)設(shè)計常見問題分析









