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

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

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

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

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

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

在編寫單片機程序的時候,由于中斷服務程序?qū)懙牟缓?,導致單片機程序總是跑飛,最后費了好長時間,花了很大功夫才找到問題原因,由此總結了單片機程序跑飛的三種現(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個元素,從而導致賦值語句中不知道把0x1a放到什么地方,從而導致程序跑飛。

解決方法:

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

0

2

中斷服務程序缺失

現(xiàn)象:

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

原因:

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

解決方法:

檢查程序中是否存在打開了某個中斷,但是沒有相對應的中斷服務程序。

0

3

看門狗復位

現(xiàn)象:

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

原因:

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

解決方法:

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

責任編輯:haq

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

    關注

    6037

    文章

    44561

    瀏覽量

    635664
  • 看門狗
    +關注

    關注

    10

    文章

    565

    瀏覽量

    70820
  • 程序
    +關注

    關注

    117

    文章

    3787

    瀏覽量

    81076

原文標題:單片機程序又跑飛?

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

收藏 人收藏

    評論

    相關推薦

    單片機怎么寫入程序

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

    什么原因會導致單片機程序

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

    keil可以讀出單片機程序

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

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

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

    單片機燒錄程序可以重新燒嗎

    單片機(Microcontroller Unit, MCU)是一種集成電路芯片,它將計算機的CPU、存儲器、輸入/輸出接口等集成在一塊芯片上,用于控制各種電子設備。單片機燒錄程序是指將編寫
    的頭像 發(fā)表于 09-02 10:04 ?1261次閱讀

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

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

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

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

    stm32單片機燒錄程序會擦除原來的程序

    在STM32單片機燒錄程序的過程中, 通常情況下會擦除原來的程序 ,并將新程序寫入單片機的閃存(Flash)中。這一過程是通過燒錄工具(如S
    的頭像 發(fā)表于 09-02 09:42 ?2060次閱讀

    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系列的單片機多核程序應該怎么配置?

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

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

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

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

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

    風機軸磨損怎么辦

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

    單片機芯片怎么寫入程序

    單片機芯片的程序寫入是通過將程序代碼寫入單片機芯片的非易失性存儲器(如Flash)中實現(xiàn)的。 在計算機科學和電子工程領域,單片機是一種集成電
    的頭像 發(fā)表于 01-05 14:06 ?8393次閱讀