0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

致單片機程序總是跑飛怎么辦

Q4MP_gh_c472c21 ? 來源:個人圖書館 ? 作者:xpxys99 ? 2021-09-26 10:45 ? 次閱讀

單片機中有看門狗,長時間不喂狗,程序就會復(fù)位。為什么長時間不喂狗呢?這是因為程序跑飛了,拋開外部因素不談。今天就和大家分享一下,單片機程序跑飛的幾個原因。

在編寫單片機程序的時候,由于中斷服務(wù)程序?qū)懙牟缓茫瑢?dǎo)致單片機程序總是跑飛,最后費了好長時間,花了很大功夫才找到問題原因,由此總結(jié)了單片機程序跑飛的三種現(xiàn)象、原因以及解決方法。

01數(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個元素,從而導(dǎo)致賦值語句中不知道把0x1a放到什么地方,從而導(dǎo)致程序跑飛。

解決方法:

如果在調(diào)試程序時,發(fā)現(xiàn)程序總是在函數(shù)執(zhí)行完畢時跑飛,多數(shù)情況是發(fā)生了數(shù)組越界(數(shù)組溢出)的錯誤,仔細(xì)檢查函數(shù)中調(diào)用的數(shù)組是否存在越界(溢出)的情況。

0

2

中斷服務(wù)程序缺失

現(xiàn)象:

程序運行過程中總是跑飛。

原因:

程序中打開了某個中斷,但是卻沒有相應(yīng)的中斷服務(wù)程序,從而導(dǎo)致在中斷發(fā)生后,找不到中斷服務(wù)程序入口,從而導(dǎo)致程序跑飛。

解決方法:

檢查程序中是否存在打開了某個中斷,但是沒有相對應(yīng)的中斷服務(wù)程序。

0

3

看門狗復(fù)位

現(xiàn)象:

在執(zhí)行一段較為耗費時間的程序時,程序跑飛,并且總是跳到復(fù)位位置處。

原因:

程序中使用了看門狗,但是沒有及時“喂狗”,從而導(dǎo)致看門狗復(fù)位,使程序直接跳到復(fù)位位置。

解決方法:

根據(jù)程序運行時間,尤其是一定要計算清楚最耗時的那段程序的運行時間,然后準(zhǔn)確設(shè)置看門狗的復(fù)位時長,定時“喂狗”,尤其是如果有死循環(huán)的情況,一定要在死循環(huán)中記得“喂狗”。

責(zé)任編輯:haq

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 單片機
    +關(guān)注

    關(guān)注

    6030

    文章

    44491

    瀏覽量

    632045
  • 看門狗
    +關(guān)注

    關(guān)注

    10

    文章

    558

    瀏覽量

    70713
  • 程序
    +關(guān)注

    關(guān)注

    116

    文章

    3762

    瀏覽量

    80757

原文標(biāo)題:單片機程序又跑飛?

文章出處:【微信號:gh_c472c2199c88,微信公眾號:嵌入式微處理器】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏

    評論

    相關(guān)推薦

    單片機怎么寫入程序

    程序通常涉及以下幾個步驟: 選擇單片機和開發(fā)環(huán)境 : 確定項目需求,選擇合適的單片機型號。 安裝相應(yīng)的開發(fā)環(huán)境,如Keil、IAR、MPLAB等。 硬件連接 : 將單片機連接到開發(fā)板或
    的頭像 發(fā)表于 10-21 11:21 ?222次閱讀

    什么原因會導(dǎo)致單片機程序

    ______________________________________ 什么原因會導(dǎo)致單片機程序
    發(fā)表于 10-16 22:31

    keil可以讀出單片機程序

    Keil是一款廣泛應(yīng)用于單片機程序開發(fā)的軟件,它提供了包括C編譯器、宏匯編、連接器、庫管理和一個功能強大的仿真調(diào)試器等在內(nèi)的完整開發(fā)方案。然而,關(guān)于Keil是否能直接“讀出”單片機程序
    的頭像 發(fā)表于 09-02 10:32 ?604次閱讀

    單片機燒錄程序用什么軟件

    單片機燒錄程序單片機開發(fā)過程中的一個重要環(huán)節(jié),涉及到將編寫好的程序代碼通過燒錄器寫入單片機的ROM中,以實現(xiàn)對
    的頭像 發(fā)表于 09-02 10:05 ?748次閱讀

    單片機燒錄程序的線比單片機上的少還能燒錄嗎

    單片機燒錄原理 單片機燒錄是指將編寫好的程序代碼通過一定的方式傳輸?shù)?b class='flag-5'>單片機的存儲器中,使其能夠按照程序的指令運行。這個過程通常需要使用燒錄器
    的頭像 發(fā)表于 09-02 09:54 ?371次閱讀

    單片機燒錄程序的基本步驟是什么

    單片機燒錄程序單片機開發(fā)過程中非常重要的一步,它涉及到將編寫好的程序代碼通過一定的方式傳輸?shù)?b class='flag-5'>單片機內(nèi)部的存儲器中,使
    的頭像 發(fā)表于 09-02 09:47 ?707次閱讀

    HC32L136 M0+內(nèi)核在寫FLASH時程序的原因?

    使用一款華大的HC32L136單片機M0+的內(nèi)核64k的flash,在0x0-0x8000放入bootloader 在0x8000-0xFFFF放入用戶代碼,在全速 執(zhí)行用戶代碼中FLASH操作
    發(fā)表于 04-18 06:04

    單片機Freertos怎么樣?

    單片機Freertos好移植么?參考資料好不好找?
    發(fā)表于 03-25 15:22

    AURIX2G系列的單片機多核程序應(yīng)該怎么配置?

    AURIX2G系列的單片機多核程序應(yīng)該怎么配置,感覺沒有頭緒
    發(fā)表于 02-20 06:15

    單片機RAM不夠用怎么解決?

    來自一位用戶的咨詢,麻煩幫忙解答。越詳細(xì)越好,有圖有真相。如有相關(guān)的視頻、文檔也可以輔助說明,謝謝。 單片機RAM不夠用怎么辦? 單片機都有RAM,如果我們一下子定義了一大堆的變量,使得變量占的空間大于RAM,這樣
    發(fā)表于 02-02 07:35

    分享一下用ST-LINK Utility識別單片機程序是否

    最近有網(wǎng)友大概問了這樣的問題:單片機項目偶爾經(jīng)常出現(xiàn)異常,不知道是程序飛了,還是進(jìn)入某個死循環(huán)了。
    的頭像 發(fā)表于 01-09 11:40 ?2898次閱讀
    分享一下用ST-LINK Utility識別<b class='flag-5'>單片機</b><b class='flag-5'>程序</b>是否<b class='flag-5'>跑</b><b class='flag-5'>飛</b>

    風(fēng)機軸磨損怎么辦

    電子發(fā)燒友網(wǎng)站提供《風(fēng)機軸磨損怎么辦.docx》資料免費下載
    發(fā)表于 01-07 11:04 ?0次下載

    4260紙烘缸軸磨損怎么辦

    電子發(fā)燒友網(wǎng)站提供《4260紙烘缸軸磨損怎么辦.docx》資料免費下載
    發(fā)表于 12-18 10:38 ?0次下載

    漏電開關(guān)總是跳閘怎么辦?

    漏電開關(guān)總是跳閘怎么辦?? 漏電開關(guān)的跳閘問題一直是家庭和辦公室電氣安全的隱患之一。當(dāng)漏電開關(guān)頻繁跳閘時,我們必須采取恰當(dāng)?shù)姆椒▉斫鉀Q這個問題,以確保電氣安全和正常的用電。本文將詳細(xì)介紹跳閘的原因
    的頭像 發(fā)表于 12-15 11:33 ?1901次閱讀

    pcb鉆孔偏孔了怎么辦?

    pcb鉆孔偏孔了怎么辦?
    的頭像 發(fā)表于 11-22 11:10 ?3200次閱讀
    pcb鉆孔偏孔了<b class='flag-5'>怎么辦</b>?