attribute( at(絕對位址) )的作用分兩個,乙個是絕對定位到flash,另個一是絕對定位到ram。
1、定位到flash中,一般用於固化的資訊,如出廠設定的引數,上位機配置的引數,id卡的id號,flash標記等等
const u16 gflashdefvalue[512] __attribute__((at(0x0800f000))) = ;//定位在flash中,其他flash補充為00
const u16 gflashdata__attribute__((at(0x0800f000))) = 0xffff;
2、定位到ram中,一般用於資料量比較大的快取,如串列埠的接收快取,再就是某個位置的特定變數
u8 usart2_rx_buf[usart2_rec_len] __attribute__ ((at(0x20001000)));//接收緩衝,最大usart_rec_len個位元組,起始位址為0x20001000.
注意:
1、絕對定位不能在函式中定義,區域性變數是定義在棧區的,棧區由mdk自動分配、釋放,不能定義為絕對位址,只能放在函式外定義。
2、定義的長度不能超過棧或flash的大小,否則,造成棧、flash溢位。
c語言中關鍵字
static 修飾區域性變數,改變變數的生命週期和儲存空間,但是不改變作用域,仍然是乙個區域性變數,作用域僅限於該 修飾全域性變數,改變變數的作用域只能在當前檔案訪問,不能在其他檔案訪問 修飾函式,改變函式的作用域,函式只能在本檔案中被呼叫,不能在其他檔案被呼叫。extern 可以修飾變數和函式,表...
C語言中的關鍵字
register 作用 請求編譯器盡可能地將變數存在cpu記憶體暫存器中。而不是通過記憶體定址訪問的 方法,好處 省去了cpu處理訪問記憶體資料的時間。注意事項 1,register修飾變數的型別必須是cpu能夠接受,register變數 必須是乙個單個的值,並 且長度應該小於或者等於整型的長度,2...
C語言中的關鍵字!
今天總結一下c中的關鍵字 資料型別關鍵字 12個 1 char 宣告字元型變數或函式 2 double 宣告雙精度變數或函式 3 enum 宣告列舉型別 4 float 宣告浮點型變數或函式 5 int 宣告整型變數或函式 6 long 宣告長整型變數或函式 7 short 宣告短整型變數或函式 8...