那曲檬骨新材料有限公司

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

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

3天內不再提示

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

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

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

在編寫單片機程序的時候,由于中斷服務程序寫的不好,導致單片機程序總是跑飛,最后費了好長時間,花了很大功夫才找到問題原因,由此總結了單片機程序跑飛的三種現象、原因以及解決方法。

01數組越界/溢出

現象:

單片機程序在函數中運行時,總是在運行到函數末尾,要跳出函數時,程序跑飛。

原因:

數組越界(數組溢出),函數中定義的數組元素的個數小于程序中實際使用的數組元素的個數,例如在函數中定義了一個數組ucDataBuff[10],這個數組只有10個元素,但是在函數中卻有這樣的語句ucDataBuff[10]=0x1a,這個語句是給數組的第11個元素賦值,:由于定義的數組只有10個元素,從而導致賦值語句中不知道把0x1a放到什么地方,從而導致程序跑飛。

解決方法:

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

0

2

中斷服務程序缺失

現象:

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

原因:

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

解決方法:

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

0

3

看門狗復位

現象:

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

原因:

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

解決方法:

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

責任編輯:haq

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

    關注

    6043

    文章

    44621

    瀏覽量

    638614
  • 看門狗
    +關注

    關注

    10

    文章

    566

    瀏覽量

    70949
  • 程序
    +關注

    關注

    117

    文章

    3796

    瀏覽量

    81419

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

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

收藏 人收藏

    評論

    相關推薦

    基于單片機的磁伸縮位移傳感器的應用

    伸縮位移傳感器高精度、長壽命,適用于惡劣環境,但存在信號干擾等問題。采用單片機處理后,實現遠程傳輸和高精度測量。未來發展方向是模塊化、數字化、抗強干擾和溫度補償技術。
    的頭像 發表于 02-05 14:27 ?68次閱讀
    基于<b class='flag-5'>單片機</b>的磁<b class='flag-5'>致</b>伸縮位移傳感器的應用

    單片機怎么寫入程序

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

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

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

    想通過單片機來控制PGA280芯片,總是無法達到預期效果,為什么?

    本人使用TI公司的MSP430g2553型號的單片機,想通過單片機來控制PGA280芯片。在按照“PGA280 Communication via SPI”這個文檔給PGA280寫程序時,
    發表于 09-18 07:44

    keil可以讀出單片機程序

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

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

    單片機燒錄程序單片機開發過程中的一個重要環節,涉及到將編寫好的程序代碼通過燒錄器寫入單片機的ROM中,以實現對
    的頭像 發表于 09-02 10:05 ?1663次閱讀

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

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

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

    單片機燒錄原理 單片機燒錄是指將編寫好的程序代碼通過一定的方式傳輸到單片機的存儲器中,使其能夠按照程序的指令運行。這個過程通常需要使用燒錄器
    的頭像 發表于 09-02 09:54 ?613次閱讀

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

    單片機燒錄程序單片機開發過程中非常重要的一步,它涉及到將編寫好的程序代碼通過一定的方式傳輸到單片機內部的存儲器中,使
    的頭像 發表于 09-02 09:47 ?1439次閱讀

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

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

    G0B1CET6擦除bank1的flash會,為什么?

    G0B1CET6,擦除bank1的flash會,單步運行ok,全速運行會卡死。 有兩個項目雖然程序有些不一樣,但是大體方案一。他倆的區別是一個用了bank2,擦了bank2。一個
    發表于 06-04 09:22

    HC32L136 M0+內核在寫FLASH時程序的原因?

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

    調試FreeRTOS程序,通過IAP升級后程序的原因?

    最近調試FreeRTOS程序,發現直接用IAR下載APP后程序運行正常,但是通過IAP升級后卻發現程序(因為是IAP升級,無法調試App
    發表于 04-08 06:25

    單片機Freertos怎么樣?

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

    AURIX2G系列的單片機多核程序應該怎么配置?

    AURIX2G系列的單片機多核程序應該怎么配置,感覺沒有頭緒
    發表于 02-20 06:15
    百家乐官网怎么看单| 聚众玩百家乐的玩法技巧和规则| 威尼斯人娱乐场安全吗| 澳门百家乐官网皇冠网| 金花百家乐官网娱乐城| 百家乐社区| 金花百家乐官网的玩法技巧和规则 | 大赢家即时比分| 麻将百家乐筹码| 百家乐官网博娱乐平台赌百家乐官网| 腾飞国际娱乐城| 大发888娱乐城送钱| 太阳神百家乐官网的玩法技巧和规则 | 聚宝盆百家乐官网的玩法技巧和规则 | 百家乐官网光纤洗牌机如何做弊| 网上百家乐公| 五星百家乐官网的玩法技巧和规则| 大发888客服qq号| 网络百家乐游赌博| 皇冠百家乐官网在线游戏| 大发888黄金版下载| 网上百家乐洗码技巧| 陵川县| 大发888游戏平台 送1688元现金礼金领取| 澳门百家乐现场视频| 百家乐官网注码投注论坛| 大发888网上支付| 蓝盾百家乐平台| 百家乐有没有稳赢| 同乐城百家乐官网娱乐城| 百家乐官网的必赢术| 全讯网.com| 传奇百家乐的玩法技巧和规则 | 百家乐官网登封代理| 全讯网777| 雅加达百家乐的玩法技巧和规则 | 鸿运国际娱乐城| 大发888在线| 大发888游戏平台dafa888 gw| 桃园县| 临桂县|