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

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

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

單片機(jī)程序死機(jī)跑飛的原因盤(pán)點(diǎn)

貿(mào)澤電子設(shè)計(jì)圈 ? 來(lái)源:陳翠 ? 2019-07-21 10:28 ? 次閱讀

1、意外中斷。是否打開(kāi)了某個(gè)中斷,但是沒(méi)有響應(yīng)和清除中端標(biāo)志,導(dǎo)致程序一直進(jìn)入中斷,造成死機(jī)假象。

2、中斷變量處理不妥。定義某些在中斷期間會(huì)被修改的全局變量時(shí),需要注意兩個(gè)問(wèn)題:首先為了防止編譯器優(yōu)化中斷變量,要在定義這些變量時(shí)加volatile,其次在主循環(huán)中讀取中斷變量前應(yīng)該首先關(guān)閉全局中斷,防止讀到一半被中斷修改,讀完之后再打開(kāi)全局中斷,否則會(huì)造成數(shù)據(jù)混亂。

3、地址溢出,常見(jiàn)錯(cuò)誤為指針操作錯(cuò)誤。我要著重說(shuō)的是數(shù)組下標(biāo)使用循環(huán)變量的情況,如果循環(huán)變量沒(méi)控制好則會(huì)出現(xiàn)數(shù)組下標(biāo)越界,意外修改系統(tǒng)的寄存器造成死機(jī),這種情況下如果死機(jī)說(shuō)明運(yùn)氣好,否則根本無(wú)法預(yù)計(jì)后面會(huì)發(fā)生什么令人頭疼的事。

4、無(wú)條件的死循環(huán)。比如使用while(x),等待電平變化,正常情況下x都會(huì)變成0,就怕萬(wàn)一,因此最好加上時(shí)間限制。

5、看門(mén)狗沒(méi)有關(guān)閉。有的單片機(jī)即使沒(méi)使用看門(mén)狗開(kāi)機(jī),也有可能意外自動(dòng)開(kāi)啟了最小周期的看門(mén)狗,導(dǎo)致軟件不斷復(fù)位,造成死機(jī),這個(gè)要看芯片手冊(cè),最好在程序復(fù)位后先清除看門(mén)狗再關(guān)閉看門(mén)狗。

6、堆棧溢出。最難查找的問(wèn)題,對(duì)于容量小的單片機(jī),盡量減少函數(shù)調(diào)用層級(jí),減少局部變量,從而減少壓棧的時(shí)候所需的空間。

當(dāng)你把以上幾條都試過(guò)后仍不能解決問(wèn)題,可以嘗試將調(diào)用次數(shù)較少的函數(shù)直接放到調(diào)用位置,并且把占用RAM大的局部變量改成全局變量,也許問(wèn)題就解決了。

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

    關(guān)注

    6030

    文章

    44489

    瀏覽量

    631996
  • 單片機(jī)程序
    +關(guān)注

    關(guān)注

    1

    文章

    12

    瀏覽量

    9543

原文標(biāo)題:?jiǎn)纹瑱C(jī)程序死機(jī)跑飛,可能是因?yàn)檫@幾個(gè)原因

文章出處:【微信號(hào):Mouser-Community,微信公眾號(hào):貿(mào)澤電子設(shè)計(jì)圈】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏

    評(píng)論

    相關(guān)推薦

    單片機(jī)程序?小技巧幫你忙

    經(jīng)常接觸單片機(jī)的朋友,肯定遇到過(guò)單片機(jī)程序的問(wèn)題。由于程序較為復(fù)雜,所以一旦出現(xiàn)
    發(fā)表于 04-02 09:58 ?8577次閱讀

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

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

    單片機(jī)程序死機(jī)原因

    轉(zhuǎn)帖:單片機(jī)程序死機(jī)原因單片機(jī)
    發(fā)表于 10-13 20:49

    單片機(jī)/ARM死機(jī)的診斷療法

    有時(shí),在寫(xiě)ARM時(shí)會(huì)遇到經(jīng)常死機(jī)的情況,莫名其妙,在這里我總結(jié)了一些單片機(jī)/ARM死機(jī)或者的一些常見(jiàn)的查找方法和我對(duì)此的一些拙見(jiàn)希望對(duì)大
    發(fā)表于 08-26 16:16

    單片機(jī)/ARM死機(jī)的診斷療法

    經(jīng)常出現(xiàn)的程序現(xiàn)象。 在單片機(jī)系統(tǒng)中,因?yàn)楦蓴_的原因,在非預(yù)期的情況下,使得程序計(jì)數(shù)器PC
    發(fā)表于 05-06 15:10

    是什么原因造成單片機(jī)程序為什么會(huì)死機(jī)

    單片機(jī)程序為什么會(huì)死機(jī)呢?有哪些原因?
    發(fā)表于 11-09 06:01

    單片機(jī)程序原因是什么

    中有看門(mén)狗,長(zhǎng)時(shí)間不喂狗,程序就會(huì)復(fù)位。為什么長(zhǎng)時(shí)間不喂狗呢?這是因?yàn)?b class='flag-5'>程序飛了,拋開(kāi)外部因素不談。今天就和大家分享一下,單片機(jī)程序
    發(fā)表于 12-13 07:17

    單片機(jī)程序的幾種原因

    單片機(jī)現(xiàn)象是指程序計(jì)數(shù)器(PC)的值出乎咱們所需求的,產(chǎn)生了反常的偏移,脫離了本來(lái)設(shè)定好的程序要履行的方位,進(jìn)入原定
    發(fā)表于 11-30 12:57

    你的單片機(jī)程序為什么會(huì)飛了?單片機(jī)程序死機(jī)的六大原因

    單片機(jī)程序死機(jī)飛了可以從以下幾個(gè)方面查找原因: 1. 意外中斷。是否打開(kāi)了某個(gè)中斷,但是沒(méi)有響應(yīng)和清除中端標(biāo)志,導(dǎo)致
    的頭像 發(fā)表于 09-24 14:41 ?1.1w次閱讀
    你的<b class='flag-5'>單片機(jī)</b><b class='flag-5'>程序</b>為什么會(huì)<b class='flag-5'>跑</b>飛了?<b class='flag-5'>單片機(jī)</b><b class='flag-5'>程序</b><b class='flag-5'>死機(jī)</b><b class='flag-5'>跑</b><b class='flag-5'>飛</b>的六大<b class='flag-5'>原因</b>

    單片機(jī)程序死機(jī),可能是這幾個(gè)原因

    單片機(jī)程序死機(jī),可能是這幾個(gè)原因
    的頭像 發(fā)表于 06-19 17:18 ?8718次閱讀
    <b class='flag-5'>單片機(jī)</b><b class='flag-5'>程序</b><b class='flag-5'>死機(jī)</b>,可能是這幾個(gè)<b class='flag-5'>原因</b>

    單片機(jī)程序為什么會(huì)死機(jī)資料下載

    電子發(fā)燒友網(wǎng)為你提供單片機(jī)程序為什么會(huì)死機(jī)資料下載的電子資料下載,更有其他相關(guān)的電路圖、源代碼、課件教程、中文資料、英文資料、參考設(shè)計(jì)、
    發(fā)表于 04-23 08:50 ?11次下載
    <b class='flag-5'>單片機(jī)</b><b class='flag-5'>程序</b>為什么會(huì)<b class='flag-5'>死機(jī)</b><b class='flag-5'>跑</b><b class='flag-5'>飛</b>資料下載

    單片機(jī)程序總是怎么辦

    單片機(jī)中有看門(mén)狗,長(zhǎng)時(shí)間不喂狗,程序就會(huì)復(fù)位。為什么長(zhǎng)時(shí)間不喂狗呢?這是因?yàn)?b class='flag-5'>程序飛了,拋開(kāi)外部因素不談。今天就和大家分享一下,單片機(jī)
    的頭像 發(fā)表于 09-26 10:45 ?6473次閱讀

    單片機(jī)意外死機(jī),意外復(fù)位,程序

    單片機(jī)意外死機(jī),意外復(fù)位,程序原因有以下幾種。一、數(shù)組越界。? ? ? ?特別是使用指針操
    發(fā)表于 11-24 18:06 ?14次下載
    <b class='flag-5'>單片機(jī)</b>意外<b class='flag-5'>死機(jī)</b>,意外復(fù)位,<b class='flag-5'>程序</b><b class='flag-5'>跑</b><b class='flag-5'>飛</b>

    單片機(jī)程序的三種現(xiàn)象、原因及解決方法

    在編寫(xiě)單片機(jī)程序的時(shí)候,由于中斷服務(wù)程序寫(xiě)的不好,導(dǎo)致單片機(jī)程序總是
    發(fā)表于 02-08 15:47 ?8次下載
    <b class='flag-5'>單片機(jī)</b><b class='flag-5'>程序</b><b class='flag-5'>跑</b><b class='flag-5'>飛</b>的三種現(xiàn)象、<b class='flag-5'>原因</b>及解決方法

    單片機(jī)程序?從這6個(gè)方面查找原因

    單片機(jī)程序?從這6個(gè)方面查找原因
    的頭像 發(fā)表于 10-26 16:43 ?970次閱讀