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

 找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開(kāi)始

搜索
查看: 7985|回復(fù): 0
收起左側(cè)

原創(chuàng)IAR MSP430 “the stack pointer for stack is outside"錯(cuò)誤處理

[復(fù)制鏈接]
ID:282850 發(fā)表于 2019-12-14 23:43 | 顯示全部樓層 |閱讀模式
    前天晚上修改調(diào)試程序,出錯(cuò):
    The stack pointer for stack‘stack’ (currently Memory:0x252) is outside the stack range(Memory:02B0 toMemory:0x300)錯(cuò)誤,見(jiàn)圖1。
此時(shí)程序指針跑飛,不能再繼續(xù)運(yùn)行下行,再運(yùn)行也是可樣出錯(cuò)。見(jiàn)圖2
   接好同樣兩塊水表板,先懷疑硬件問(wèn)題,換板下載同樣程序。1#的F413換成F415,1#不會(huì)outside(選用device沒(méi)改,還是F413)。2#板會(huì)outside,且只能運(yùn)行一次程序即停止(指針跑飛)。
   當(dāng)時(shí)立即問(wèn)dog 太陽(yáng)的度婆,找到兩文章說(shuō)此事,一是《IAR MSP430設(shè)置合理堆棧大小(the stack pointer for stack isoutside the stack range)》被轉(zhuǎn)了n多次。文章最后是沒(méi)有解決,用文章說(shuō)的改Stack/heap設(shè)置,一點(diǎn)用都沒(méi)有。
    另外有討論說(shuō)“此時(shí),唯一的辦法就是重新設(shè)計(jì)程序了。在單片機(jī)上跑uC/OS,可以通過(guò)以下方法來(lái)減少內(nèi)存使用”
    后找到了問(wèn)題原因及解決辦法。
問(wèn)題原因:Init_Timer_A();打開(kāi)了中斷,但是TA中斷程序#pragma vector=TIMERA0_VECTOR
__interrupt void TimerA0()全注釋掉(怕影響長(zhǎng)定時(shí)發(fā)示波器信號(hào))。
    原因明確了,因?yàn)槌跏蓟?strong>打開(kāi)了TA中斷,但是沒(méi)有中斷響應(yīng)程序,導(dǎo)致的堆棧溢出。
解決方法:
     1 、開(kāi)啟#pragma vector=TIMERA0_VECTOR中斷程序響應(yīng),OK。BasicTimer中的長(zhǎng)定時(shí)發(fā)IO口電平信號(hào)給示波器,不受TA中斷影響。
    2、不執(zhí)行Init_Timer_A();此方法可以不用注釋中斷響應(yīng)程序。

  驗(yàn)證:再次開(kāi)TA中斷,不響應(yīng)中斷(注釋掉),問(wèn)題再次出現(xiàn),證明錯(cuò)誤的來(lái)源是對(duì)的。


圖1

圖1

圖2,多次運(yùn)行還是錯(cuò)誤,無(wú)法回程序中

圖2,多次運(yùn)行還是錯(cuò)誤,無(wú)法回程序中

解決了

解決了

評(píng)分

參與人數(shù) 1黑幣 +50 收起 理由
admin + 50 共享資料的黑幣獎(jiǎng)勵(lì)!

查看全部評(píng)分

回復(fù)

使用道具 舉報(bào)

ID:505032 發(fā)表于 2020-1-1 08:56
建議網(wǎng)站管理員將樓主的Debug調(diào)試經(jīng)驗(yàn)作為一個(gè)單獨(dú)板塊獨(dú)立出來(lái),否則會(huì)有黃金被渣土淹沒(méi)。

本版積分規(guī)則

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

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

快速回復(fù) 返回頂部 返回列表