嵌入式C語言總結

2021-06-16 05:32:38 字數 1257 閱讀 7705

這幾天花了兩天時間看了一些嵌入式c語言方面的內容,以下是一些讀書筆記,記錄一下。

1、不能有返回值

2、不能向isr

傳遞引數

3、isr盡可能的短

4、printf有重入問題

1、中斷服務程式isr

2、硬體初始化

1、某io

晶元被定為在

cpu的儲存空間而非

io空間,而且暫存器對應於某特定位址

2、兩個cpu

之間以雙埠

ram通訊,

cpu需要在雙埠

ram的特定單元書寫內容以在對段

cpu產生中斷

3、讀取在rom

或flash

的特定單元所燒錄到漢字或英文本模

在使用絕對位址指標是,自增自減操作的結果取決於指標所指向的資料型別

p++ => p += sizeof(typeof(*p))

cpu以位元組為單位編址,

c語言指標以指向的資料型別長度作自增自減

函式只是乙個位址,可以如下使用。

typedef void (*func)();

func ifunc = (func)0xf000fff0;

ifunc();

1、盡可能選用陣列

2、動態申請,malloc

和free

成對出現

const意味著唯讀

const int a; a唯讀

int const a; a唯讀

const int *a; 指標

a指向的唯讀

int * const a; a本身唯讀

int const *a const; 綜合上面兩個

1、並行裝置的硬體暫存器

2、乙個中斷服務子程式會訪問到的非自動變數

3、多執行緒應用中幾個執行緒共享的

cpu字長和儲存器位寬不一致處理

1、使用巨集定義

2、使用暫存器變數

3、內嵌彙編

4、或用位操作

1、二維轉換為一維

2、去掉浮點運算

3、用移位替代除法

4、預先計算查表

5、依賴硬體實現

6、inline asm

1、陣列名的內涵在於其指代實體是一種資料結構

2、陣列名的外延在於其可以轉換為指向其指代實體的指標,而且是乙個指標常量

3、指向陣列的指標則是另外一種變數型別,僅意味著陣列存放位址

4、陣列名作為函式型參時,淪為普通指標

嵌入式學習(二) 嵌入式系統C 語言

1 從 cpu 復位時的指定位址開始執行 2 跳轉至彙編 startup 處執行 3 跳轉至使用者主程式 main 執行,在 main 中完成 a.初試化各硬體裝置 b.初始化各軟體模組 c.進入死迴圈 無限迴圈 d呼叫各模組的處理函式 下面是幾個 著名 的死迴圈 1 作業系統是死迴圈 2 win3...

嵌入式c語言優化

一.演算法和資料結構優化 1.針對應用的演算法優化,比如,在音訊編譯碼中,用fft實現時頻變換。2.c語言級別的優化,如排序演算法的選擇。3.資料結構的選擇,如果需要隨機訪問,則盡量選擇陣列,如果需要隨機插入刪除,則可以選擇鍊錶。4.盡量用指標代替資料操作,大部分編譯對於指標會生成更小更快的 5.盡...

嵌入式C語言程式設計小知識總結

嵌入式c語言程式設計小知識 1.流水線被指令填滿時才能發揮最大效能,即每時鐘週期完成一條指令的執行 僅指單週期指令 如果程式發生跳轉,流水線會被清空,這將需要幾個時鐘才能使流水線再次填滿。因此,盡量少的使用跳轉指令可以提高程式執行效率,解決發案就是盡量使用指令的 條件執行 功能。2.在lpc2200...