微控制器下靜態變數的問題

2021-04-19 19:21:05 字數 435 閱讀 3199

c語言中靜態全域性變數的儲存區是內存在程式編譯的時候就已經分配好,而微控制器c51的程式編譯和執行的環境不是一樣的,編譯的時候是在windows整合開發環境uvision2下,而執行要程式在微控制器中.  

問題是我上述語句是要求它在外部ram中分配乙個靜態全域性陣列,那麼按c的說法,它應該在編譯的時候就分配了靜態儲存區,但語句要求它在外部ram中分配靜態儲存區,編譯的時候是沒有實際的外部ram的,如何能在編譯的時候就能得到在外部ram中分配的靜態儲存區??  

編譯是無需實際的環境的,變數的分配是程式載入的時候實現的,mcu這類無os的應用,程式自己管理記憶體,分配空間。一般編譯時編譯器將自己的啟動模組鏈結到程式中。

static是c裡的乙個宣告,表明些變數在全域性資料區.任意的函式都能訪問,但是具體是放在機器的什麼地方,這是跟據編譯自己計算的,但是你可以通過區域宣告它的位置或用_at_來規定它放的地方...

微控制器之靜態區域性變數static

hl 1慧靜電子 上程式 main.c include include timer.h p1口低有效 void main void timer.h ifndef timer h define timer h extern void init void endif timer.c include in...

求教微控制器問題

求教這個怎麼做,at89c52的微控制器 題 目 計程車里程計時系統設計 基礎條件 微控制器開發板 pc機及相關應用軟體 主要完成的任務 1 用四個按鍵 矩陣按鍵四個 控制汽車前進檔位變化,分別是1檔 2檔 3檔 4檔 檔位不同體現在直流電機 選做 的轉速變化,檔位值顯示在數碼管上 2 根據檔位值,...

C 靜態變數問題

今天實現乙個函式的時候第一思路就是靜態變數 eg templateint puttreeinarray gtnode t1,elem a 而這個函式的目的是將乙個普通樹的結點值放入陣列中,並返回結點數,而我將在下面乙個函式呼叫這個函式兩次。eg templatebool isequaltree gt...