<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

EEPW首頁(yè) > 嵌入式系統 > 設計應用 > stm32程序下載成功但是不運行

stm32程序下載成功但是不運行

作者: 時(shí)間:2016-11-10 來(lái)源:網(wǎng)絡(luò ) 收藏
調試stm32程序,發(fā)現如下問(wèn)題:

STM32編寫(xiě)程序,當程序中沒(méi)有sd卡部分時(shí),程序正常下載,正常運行。當程序中運行sd卡加文件系統時(shí)程序能正常下載但是不能正常的運行。發(fā)現問(wèn)題就要解決問(wèn)題呀,好了大家一起來(lái)和我解決問(wèn)題吧!?

本文引用地址:http://dyxdggzs.com/article/201611/317094.htm

根據自己?jiǎn)?wèn)題,上網(wǎng)查找解決辦法,最終將問(wèn)題鎖定在堆棧設置問(wèn)題上。(堆棧設置的空間不夠大)

解決辦法:在?stm32的程序目錄下查找STM32F10x.s(或者是startup_stm32f10x_hd,這取決于你是用的寄存器還是函數庫)

在打開(kāi)文件,在文件的開(kāi)頭很醒目的位置,發(fā)現了關(guān)于堆棧的設置。??

從中我們可以看出來(lái)對于棧(stack)的大小設置為0x200,堆(heap)的大小為0x0,當修改程序為棧(stack)的大小設置為0x800,堆(heap)的大小為0x400。再試一下,沒(méi)錯,程序可以正常的運行了!

?

注意:我曾嘗試單純的修改?;蛘邌渭兊男薷亩训拇笮〉浅绦蜻€都是不運行。這似乎說(shuō)明程序中即有棧溢出,也有堆不夠的情況。

分析:原來(lái)的設置棧stack的數量是0x200即512個(gè)字節。在Fatfs操作過(guò)程中,他的每一個(gè)寫(xiě)操作的單位就是512字節,堆棧也是512字節,自然會(huì )溢出沒(méi)得說(shuō),然后程序就會(huì )跳到硬件中斷那里歇著(zhù)去了。所以我們把他改成了2048個(gè)字節。(大點(diǎn)應該沒(méi)有壞處吧。。)

另外,??棧溢出不一定會(huì )死機,比如棧只生長(cháng)到堆區,或者稍微進(jìn)入變量區,而且溢出整個(gè)過(guò)程不對這些區域做寫(xiě)入操作,不對這些區域做取指操作,就可以完美避免hardfault,但溢出還是溢出了,數據還是被修改了.最"直接"的表現是函數調用后,還沒(méi)看到執行用戶(hù)代碼就發(fā)現某些不相干的數據被修改,不過(guò)這也足夠隱蔽了.而且,hardfault也不一定是棧溢出的直接結果,只是入棧后數據被修改,出棧時(shí)跳轉錯誤(最容易出現),導致指令訪(fǎng)問(wèn)錯誤,或者數據訪(fǎng)問(wèn)錯誤。



關(guān)鍵詞: stm32程序下

評論


技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>