1.malloc和free函式是由c庫實現,然後mdk做了適配,這就解釋了為什麼malloc函式知道堆區在**(為什麼它能準確的在堆區申請記憶體)。
2.當程式中沒有使用到malloc時堆區是不起作用的,此時mdk會將其省略,也就你heap_size設定多大都不起作用。
3.當函式的傳遞引數少於4個且總長度不大於16位元組時,編譯器會採用r0-r3來傳遞,不需要入棧出棧,也就不需要訪問記憶體,提高速度。
4.c的函式名能代表函式的起始位址,這點和彙編的label是一樣的。
5.當棧溢位的時候程式不會宕機,但是會執行不正常,因為堆區或全域性變數區的資料被改動過了;當記憶體訪問越界的時候才必然會宕機;所以要想知道堆疊是否溢位必須得自己新增溢位檢測**,對於ucos這類的嵌入式系統都有堆疊溢位檢測功能。
或者修改分散載入檔案,將棧區設定到記憶體的起始位置,這樣一旦棧溢位就記憶體訪問越界,進入hardfault_handler。
stm32(ARM)庫函式版 2
今天再次瀏覽了一些例程,加深了對庫函式的理解,在此整理一些看 瀏覽的基本常用的函式。void rcc apb1periphclockcmd uint32 t rcc apb2periph,functionalstate newstate 串列埠 io口定時器等外設都需要此函式使能 void gpio...
STM32 ARM常用彙編指令
arm常用彙編指令 1 equ 給數字常量取乙個符號名,相當於c語言中的define 2 area 彙編乙個新的 段或者資料段 3 space 分配記憶體空間 4 preserve8 當前檔案棧需要按照8位元組對齊 5 export 宣告乙個標號具有全域性屬性,可被外部的檔案使用 6 dcd 以字為...
STM32系列ARM微控制器介紹
如果你正為專案的處理器而進行艱難的選擇 一方面抱怨16位微控制器有限的指令和效能,另一方面又抱怨 32位處理器 的高成本和高功耗,那麼,基於arm cortex m3 核心的stm32系列處理器也許能幫你解決這個問題。使你不必在效能 成本 功耗等因素之間做出取捨和折衷。即使你還沒有看完stm32的產...