日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Cortex-M3-建立堆栈

發布時間:2024/4/13 编程问答 53 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Cortex-M3-建立堆栈 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

Cortex-M3-建立堆棧

  • 當開發的程序比較簡單時,可以從頭到尾都只使用 MSP。這時,只需要保證開出一個容量夠大的堆棧,再把 MSP 初始化到其頂即可——這也是單片機開發最常見的做法。堆棧用穿是非常致命的錯誤,必須非常嚴肅地計算安全容量。在計算時,除了要計入最深函數調用時對堆棧的需求,還需要判定最多可能有多少級中斷嵌套。一個笨方法(但是很保險)是假設每個中斷都可以嵌套。對于每一級嵌套的中斷,至少需要 8 個字(32 字節),而且如果 ISR 過于復雜,還可能有更多的堆棧需求。
  • 因為 CM3 中的堆棧是以“向下生長的滿棧”來操作 SP 的。在簡單的場合中,經常可以把 SP 初始化為 SRAM 的末尾,這么一來就使所有的空閑內存都能為堆棧所用——反正不用白不用,用了也白用.如下圖
存儲器的分配
  • 從圖中我們可以看出,這種分配方式能給堆棧區留下最大的容量——所有剩余內存,而有省事又省心——省去了令人頭痛的堆棧需求計算了。
  • 然而,對于比較大型的或者是有高性能指標的嵌入式系統,往往需要兩個堆棧配合使用。這時,就只好勇敢地面對。必須保證各堆棧都有足夠的容量,尤其是主堆棧,最容易栽在它上面。要注意的是,進程堆棧除了要滿足本進程最大需求量,還需要額外留出 8 個字,用于容納第一級中斷時被保護的寄存器。
  • 事實上,準確計算主堆棧需求往往是不可能的任務,也容易過于保守而浪費寶貴的血液資源。在調試階段時,最好先選用內存更大點的器件,然后開出足夠大的內存給主堆棧。然后在調試程序時,允許隨時把主堆棧曾經的最大用量輸出(通過調試串口或仿真器等),這樣時間長了就能估算對主堆棧的需求,正如上圖中邊界的作用。?
超強干貨來襲 云風專訪:近40年碼齡,通宵達旦的技術人生

總結

以上是生活随笔為你收集整理的Cortex-M3-建立堆栈的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。