STM32程式設計常踩的地雷

2021-10-02 13:12:19 字數 1069 閱讀 2782

1:宣告資料, 但沒賦值就被使用, 如下面的 u8 i;

for(u8 i;i<8;i++)
上面的示例**, 絕大部分時候, 會如期輸出 0, 1, 2, 3, 4, 5, 6, 7

但是! 但是! 但是! 某個時候值不是這樣的, 什麼值? 什麼時候? 

2:先清中斷, 後清中斷

void tim6_dac_irqhandler(void)

a位和b位, 只是示例, 現實中當然是只使用其中的一行.

這就是常見的: 先清中斷和後清中斷最清晰的示例了,延時差了一倍時間, 不管是us, 還是ms, 注意, 並不是因為執行中間的**花了時間, 而是內部處理機制. 曾在這個先後順序上費了近一天時間.

**上是沒錯的, 邏輯也沒錯,  任你查也根本發現不.

3: 巨集識別符號

#define  24l01_spi_cs_gpio       gpioh

#define 24l01_spi_cs_pin pin5

上面這種引腳的巨集定義方法,很多人天天用著.  但,這個很多人裡面,絕大部分不知道上面問題在哪。

別想了,度娘.............不能以數字開頭, 就這簡單, 只是那錯誤提示帶著你繞遠路了。

4:中斷處理函式裡呼叫函式

這個,你一定中過槍! 不論多簡單的程式,不要在中斷裡面呼叫函式!!!

因為:  它出錯時,你根本不會得到錯誤提示,查詢中斷類錯誤是個喪氣事。

鐵律:5:低於1ms的中斷

如果,晶元剛啟動時工作正常,過一會就不正常了,程式查無錯誤,那麼......

查查程式中有沒有低於1ms的中斷。中斷進出過於頻繁時,晶元消耗資源過多......用手摸摸晶元,看是不是有點發燙了。

有什麼事,必須要1秒處理1000次以上的?才十元八塊的晶元現在這麼牛叉了嗎?

用過freertos的同學都知道,最小計時單位:1ms.

不是小於1ms的中斷能設,只是要特別小心特別小心。

stm32程式設計學習

今天學習了stm 32程式設計引用按鍵 按鍵 如下 ifndef key h define key h include sys.h define key0 gpio readinputdatabit gpioe,gpio pin 4 讀取按鍵0 define key1 gpio readinputd...

STM32彙編程式設計

1.實驗環境 1.野火stm32指南者 stm32f103vet6 2.keil5 2.環境搭建新建工程 新增原始檔 s 連線開發板,開始debug 生成的hex檔案 原始碼led0 equ 0x40010c00 rcc apb2enr equ 0x40021018 gpioa crh equ 0x...

stm32多級選單程式設計

定義選單結構體變數 struct menuitem void display struct menuitem menupoint,short selectitem 顯示函式 我自己定義的選單結構體變數 struct menuitem mainmenu 3 struct menuitem setmen...