久久精品99久久_亚洲一区二区综合_狠狠色伊人亚洲综合成人_亚洲综合爱爱久久网

你好!歡迎來到深圳市穎特新科技有限公司!
語言
當前位置:首頁 >> 技術中心 >> 單片機入門 >> 單片機編程中關于堆棧的一些問題

單片機編程中關于堆棧的一些問題

關鍵字:單片機編程 堆棧 作者:admin 來源:不詳 發布時間:2018-05-19  瀏覽:41

編譯器在生成代碼使用兩個堆棧:一個是用于子程序調用和中斷操作的硬件堆棧,一個是用于以堆棧結構傳遞的參數臨時變量和局部變量的軟件堆棧。硬件堆棧是從數據內存的頂部開始分配的,在硬件堆棧下面再分配一定數量的字節作為軟件堆棧。硬件堆棧和軟件堆棧均為向下生長型的堆棧(注意:這與51單片機相反)。

通常如果你的程序沒有子程序調用也不調用象帶有%f 格式的printf()等庫函數,那么默認的16 字節應該在大多數的例子中能良好工作。在絕大多數程序中除了很繁重的遞歸調用程序再入式函數,最多40 個字節的硬件堆棧應該是足夠的。

如果函數的調用層次太深,有可能會發生硬件堆棧溢出到軟件堆棧中,改變了軟件堆棧中數據的內容,同樣,當定義了太多的局部變量或一個局部集合變量太多也有可能出現軟件堆棧溢出到動態分配的數據區,兩個堆棧都有可能溢出,如果堆棧溢出,會引起不可預測的錯誤。可以使用堆棧檢查函數檢測兩個堆棧是否溢出。

在Target的頁面中有一個Return Stack Sizi選項,用于指定硬件堆棧(保存函數返回值)的大小,通常如果子程序調用嵌套不深(不超過4層),那么使用默認的16字節就足夠了,如果使用了浮點函數,則至少應設定為30個字節。在一般情況下,除了層次很深的遞歸調用及使用了%f格式說明符外,設定為40個字節就足夠了。

硬件堆棧是從數據內存的頂部開始分配的,而軟件堆棧是在它下面一定數量字節處分配。硬件堆棧和數據內存的大小是受在編譯器選項中的目標裝置項設定限制的。數據區從0x60 開始分配。在IO 空間后面是正確的。允許數據區和軟件堆棧彼此相向生長。

如果你選擇的目標裝置帶有32K 或64K 的外部SRAM,那么堆棧是放在內部SRAM的頂部而且向低內存地址方向生長。參考程序和數據內存的使用。任意一個程序失敗的重要原因是堆棧溢出到其它數據內存的范圍,兩個堆棧中的任意一個都可能溢出,并且當一個堆棧溢出時會偶然產生壞的事情,你可以使用堆棧檢查函數檢測溢出情況 。

關于堆棧檢查函數:

啟動代碼在硬件堆棧和軟件堆棧的最低字節分別寫進一個代碼(0xaa),把這個代碼稱為警戒線。如果硬件堆棧和軟件堆棧如果溢出過,則警戒字節的代碼(0xaa)就會被改變,堆棧檢查函數就是通過檢查這兩個堆棧的最低字節的代碼是否被改變來判斷兩個堆棧是否溢出。通過調用_StackCheck(void)函數來檢查堆棧溢出,如果警戒線字節中的代碼仍然保持正確的值,那么函數檢查通過,沒有溢出。如果堆棧溢出,那么警戒線字節將可能被破壞,_StackCheck(void)函數檢查到警戒線判斷字節中的代碼被改變,就判斷相應的堆棧溢出(當程序堆棧溢出,程序可能運行不正常或偶然崩潰),該函數再調用函數_StackOverflowed(char c),如果參數是1,那么硬件堆棧有過溢出;如果參數是0,那么軟件堆棧曾經溢出。

在使用堆棧檢查函數時應注意以下幾點:

1、在使用堆棧檢查函數時,前必須用#i nclude "macros.h"預處理。

2、如果使用自己的啟動文件,在ICCAVR6.20以后的版中,如果使用的啟動文件中沒有警戒線的內容,ICCAVR也會自動添加警戒線。而在ICCAVR6.20以前的版本中,必須自己添加該部分內容,否則生成的代碼中堆棧分配將不帶警戒線。

3、如果使用動態內存分配,必須跳過警戒線字節_bss_end來分配您的堆(即增加一個字節),詳見內存分配函數說明

4、當_StackCheck(void)函數檢測到警戒線字節被改變,則會調用一個默認的_StackOverflowed 函數來跳轉到程序存儲器0的位置(復位向量地址)。可以指定或重新編寫一個新的函數來代替它,例如可以用新函數來指示是哪個堆棧溢出等,但這個函數也不可能執行太多的功能或讓程序恢復到正常狀態。因為堆棧溢出后,會更改掉一些有用的數據,引起不可預測的錯誤,甚至使程序死機。

下面用一個簡單的實例來說明堆棧檢查函數的作用:

main( )

{

init( ) //調用初始化程序

float a,b;

a=1.0;

b=1.0;

printf("a = %fn", a);

printf("b = %fn", b);

_StackCheck( ); //調用堆棧檢查函數

}

_StackOverflowed(char c)

{

if (c == 1)

puts("trashed HW stack"); //硬件堆棧溢出

else

puts("trashed SW stack"); //軟件堆棧溢出

}

擴展閱讀:AVR單片機一些學習筆記

編輯:admin  最后修改時間:2018-05-19

聯系方式

0755-82591179

郵箱:ivy@yingtexin.net

地址:深圳市南山區桃源街道平山社區平山一路2號南山云谷創業園二期11棟410-411

Copyright © 2014-2026 穎特新科技有限公司 All Rights Reserved.  粵ICP備14043402號-4

久久精品99久久_亚洲一区二区综合_狠狠色伊人亚洲综合成人_亚洲综合爱爱久久网
男插女免费视频| 中文字幕亚洲乱码| 自拍一级黄色片| 欧美一级特黄aaa| a天堂资源在线观看| 国内自拍中文字幕| 4444亚洲人成无码网在线观看| 日韩不卡一二三| 成 人 黄 色 小说网站 s色| 一区二区三区国产好的精华液| 日本在线播放一区二区| 国产精品jizz在线观看老狼| 四季av一区二区三区| 日韩av中文字幕第一页| 国产奶头好大揉着好爽视频| 欧美a在线视频| 欧洲精品在线播放| 亚洲欧美一区二区三区不卡| 国产三级三级三级看三级| 成人av在线播放观看| 黄瓜视频免费观看在线观看www | 天天爽天天爽夜夜爽| 国产免费黄色小视频| 欧美日韩中文字幕在线播放| 国产精品99久久久久久大便| 中文字幕亚洲影院| 国产一区一区三区| japanese在线视频| xxxxxx在线观看| 国产白丝袜美女久久久久| 97在线国产视频| 国产原创popny丨九色 | 国产 国语对白 露脸 | 久久亚洲a v| 日本高清视频免费在线观看| 国产在线视频综合| 大香煮伊手机一区| 男人天堂成人网| 成年人看的毛片| 男人的天堂最新网址| 欧美大片在线播放| 乱熟女高潮一区二区在线| 日韩视频在线免费播放| 91亚洲精品久久久蜜桃借种| 日本久久精品一区二区| 亚洲18在线看污www麻豆| av动漫在线播放| 国产二区视频在线播放| 日韩欧美在线播放视频| 九九热免费在线观看| 波多野结衣激情| 奇米影视亚洲色图| 欧美中文字幕在线观看视频| 国产精品无码av无码| 精品少妇人妻av免费久久洗澡| 熟女熟妇伦久久影院毛片一区二区| 久草青青在线观看| 欧美日韩黄色一级片| 久久视频这里有精品| 四虎4hu永久免费入口| 欧美少妇一级片| 日本xxxxx18| 成人av在线播放观看| 成人免费aaa| 手机在线看福利| 天天爱天天做天天操| 水蜜桃色314在线观看| 日本在线观看a| 手机在线观看日韩av| 欧美久久久久久久久久久久久久| 国产成人永久免费视频| 欧美日韩怡红院| 性猛交ⅹ×××乱大交| 男人搞女人网站| 日本一二三区视频在线| 国产91在线视频观看| 国内av免费观看| 91人人澡人人爽人人精品| 福利在线小视频| 精品999在线| 韩国视频一区二区三区| 被灌满精子的波多野结衣| 特级黄色录像片| 国产成人在线综合| 成人免费xxxxx在线视频| 国产午夜福利100集发布| www.激情网| 国产青草视频在线观看| 最新av网址在线观看| 超碰在线免费av| 日本特级黄色大片| 亚洲第一狼人区| 四季av一区二区三区| 日韩肉感妇bbwbbwbbw| wwwwxxxx日韩| 一级黄色录像免费看| 国产日韩欧美精品在线观看| 粉嫩av一区二区三区天美传媒 | 日产精品久久久久久久蜜臀| 亚洲国产午夜精品| 激情五月婷婷六月| 无码少妇一区二区三区芒果| 久久久久久三级| 麻豆视频传媒入口| 成人在线观看黄| aaaaaaaa毛片| 国产又黄又猛又粗又爽的视频| 香蕉视频999| www.av毛片| 免费网站在线观看视频| 日本三级黄色网址| av天堂永久资源网| 毛片毛片毛片毛片毛| 美女喷白浆视频| av免费观看网| 国产精品一色哟哟| 成年人黄色在线观看| 中文字幕第36页| 日韩人妻精品无码一区二区三区| 午夜啪啪福利视频| 亚洲综合123| 97人人模人人爽人人澡| 在线视频日韩一区| 亚洲国产高清av| 欧美在线aaa| 国产精品一二三在线观看| www.午夜av| 青青草精品视频在线| 青青青免费在线| 国产三区在线视频| 想看黄色一级片| 和岳每晚弄的高潮嗷嗷叫视频 | av片在线免费| 91看片就是不一样| 国内自拍中文字幕| 欧美黄色免费影院| 日本香蕉视频在线观看| 亚洲中文字幕无码av永久| 黑森林精品导航| 亚洲熟妇无码一区二区三区| 日韩大片一区二区| 污网站在线免费| av片在线免费| 91 视频免费观看| 久草热视频在线观看| 一级黄色在线播放| 激情综合在线观看| youjizz.com在线观看| 亚洲欧美自偷自拍另类| 国产精品va无码一区二区| 一级黄色录像在线观看| 男人揉女人奶房视频60分 | 91日韩精品视频| 久久精品国产99久久99久久久| 手机av在线网| 奇米777在线| www精品久久| 欧美成人福利在线观看| 中文字幕欧美人妻精品一区| 无码aⅴ精品一区二区三区浪潮 | 超碰10000| 中文国产在线观看| 在线免费看v片| 五月天丁香花婷婷| 日韩极品视频在线观看| 欧在线一二三四区| 日韩极品视频在线观看| 9999在线观看| 欧美日韩视频免费| 成人在线免费在线观看| 300部国产真实乱| 91aaa精品| 国产农村妇女精品久久| 午夜免费一区二区| 成人羞羞国产免费网站| 国产性生活一级片| 爱爱爱视频网站| 国产精品区在线| 91视频免费版污| 久久久精品在线视频| 特级黄色录像片| 亚洲一区二区三区四区五区xx| 精品无码av无码免费专区| 一区二区三区日韩视频| 亚洲午夜精品一区| 亚洲第一精品区| 黄色手机在线视频| 99中文字幕在线观看| 少妇人妻大乳在线视频| 日本特级黄色大片| 国产一二三四五| 日韩av一卡二卡三卡| 欧美日韩亚洲一| 日韩在线一级片| 午夜精品久久久久久久99热影院| 天天色综合天天色| 一区二区传媒有限公司| 欧美女人性生活视频| 国产精品无码乱伦| 欧美激情精品久久久久久小说|