欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 3621|回復: 2
打印 上一主題 下一主題
收起左側

程序跑死原因查找

[復制鏈接]
跳轉到指定樓層
樓主
ID:379720 發(fā)表于 2018-7-27 09:38 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
程序跑死原因查找:
    1. 意外中斷。是否打開了某個中斷,但是沒有響應和清除中端標志,導致程序一直進入中斷,造成死機假象
    2. 中斷變量處理不妥。若定義某些會在中斷中修改的全局變量,這時要注意兩個問題:首先為了防止編譯器優(yōu)化中斷變量,要在這些變量定義時前加volatile,其次在主循環(huán)
中讀取中斷變量前應該首先關閉全局中斷,防止讀到一半被中斷給修改了,讀完之后再打開全局中斷;否則出現(xiàn)造成數(shù)據(jù)亂套。
    3. 地址溢出,常見錯誤為指針操作錯誤。我要著重說的是數(shù)組下標使用循環(huán)函數(shù)中循環(huán)變量,如果循環(huán)變量沒控制好則會出現(xiàn)數(shù)組下標越界,意外修改系統(tǒng)的寄存器造成死機
,這種情況下如果死機說明運氣好,否則后面不知道發(fā)生什么頭疼的事。
    4. 無條件的死循環(huán);比如使用while(x);等待電平變化,正常情況下x都會變成0,就怕萬一,因此最好加上時間限制;
    5. 看門狗沒有關閉。有的單片機即使沒使用看門狗開機時也有可能意外自動開啟了最小周期的看門狗,導致軟件不斷復位,造成死機,這個要看芯片手冊,最好在程序復位后
首先應該顯式清除看門狗再關閉看門狗;
    6. 堆棧溢出。最難查找的問題,對于容量小的單片機,盡量減少函數(shù)調用層級,減少局部變量,從而減少壓棧的時候所需的空間。當你把以上幾條都試過不能解決問題,試一
試把你的被調用少函數(shù)直接內(nèi)置到調用的地方并且把占用RAM大的局部變量改成全局變量,試一試說不定就可以了。

今天在編寫單片機程序的時候,由于中斷服務程序寫的不好,導致單片機程序總是跑飛,最后費了好長時間,花了很大功夫才找到問題原因,由此總結了單片機程序跑飛的三種現(xiàn)
象、原因及解決方法。
一、數(shù)組越界(數(shù)組溢出)
現(xiàn)象:單片機程序在函數(shù)中運行時,總是在運行到函數(shù)末尾,要跳出函數(shù)時,程序跑飛。
原因:數(shù)組越界(數(shù)組溢出),函數(shù)中定義的數(shù)組元素的個數(shù)小于程序中實際使用的數(shù)組元素的個數(shù),例如在函數(shù)中定義了一個數(shù)組ucDataBuff[10],這個數(shù)組只有10個元素,但
是在函數(shù)中卻有這樣的語句ucDataBuff[10]=0x1a,這個語句是給數(shù)組的第11個元素賦值,:由于定義的數(shù)組只有10個元素,從而導致賦值語句中不知道把0x1a放到什么地方,從而
導致程序跑飛。
解決方法:如果在調試程序時,發(fā)現(xiàn)程序總是在函數(shù)執(zhí)行完畢時跑飛,多數(shù)情況是發(fā)生了數(shù)組越界(數(shù)組溢出)的錯誤,仔細檢查函數(shù)中調用的數(shù)組是否存在越界(溢出)的情況。
二、中斷服務程序缺失
現(xiàn)象:程序運行過程中總是跑飛。
原因:程序中打開了某個中斷,但是卻沒有相應的中斷服務程序,從而導致在中斷發(fā)生后,找不到中斷服務程序入口,從而導致程序跑飛。
解決方法:檢查程序中是否存在打開了某個中斷,但是沒有相對應的中斷服務程序。
三:看門狗復位
現(xiàn)象:在執(zhí)行一段較為好費時間的程序時,程序跑飛,并且總是跳到復位位置處。
原因:程序中使用了看門狗,但是沒有及時“喂狗”,從而導致看門狗復位,使程序直接跳到復位位置。
解決方法:根據(jù)程序運行時間,尤其是一定要計算清楚最耗時的那段程序的運行時間,然后準確設置看門狗的復位時長,定時“喂狗”,尤其是如果有死循環(huán)的情況,一定要在死
循環(huán)中記得“喂狗”。
四:啟用了中斷,就一定要設置中斷函數(shù),并要關閉中斷標志。
五:亂用指針也可能造成這種
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏1 分享淘帖 頂 踩
回復

使用道具 舉報

沙發(fā)
ID:107079 發(fā)表于 2019-4-23 09:51 | 只看該作者
樓主您好,不知您是否遇到過這種情況:程序刷寫進去后,正常工作了很久,但突然有一天無法工作。復位后也不行,重新燒錄程序才恢復正常。
回復

使用道具 舉報

板凳
ID:520297 發(fā)表于 2019-4-25 15:07 | 只看該作者
謝謝分享
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網(wǎng)

快速回復 返回頂部 返回列表