學習了4天的stm32,用的是野火的板子,資料是野火的零死角玩轉系列,做點學習小總結,講講後面學習新外設的思路:
1、st庫的使用流程:配置時鐘 -> 初始化結構體賦值 -> 初始化。
在操作乙個不熟悉的外設時,需要多看官方幫助檔案和參考手冊,但最重要最有效的手段應該是在網路上搜尋該如何使用該外設,工作原理,工作模式等,但不需要具體到原始碼。在配置時鐘的時候看參考手冊的匯流排架構,確定所使用的外設是掛靠在哪條匯流排下的,以此去呼叫相應的rcc庫函式。初始化結構體賦值的時候,先看幫助檔案,基本上可以見名識字來賦值。另外,參考例程原始碼也是乙個非常好的方式,參考原始碼時候要注意抓重點,盡快找到核心函式,忽略具體實現具體埠等,提高效率。
2、庫函式的使用:資料輸入輸出,標誌位的查詢和設定
配置好庫的工作引數之後,就需要使用庫函式進行操作了。這個時候先不要急著去實現你想要的功能,先到庫幫助檔案裡面去整體瀏覽一下庫的各個函式,對整體有個了解。這裡需要區分一下的是事件標誌(flagstatus)和中斷標誌(itstatus),簡單來說如果遮蔽了中斷的話,發生了事件但不產生中斷,這種情況事件標誌置位但中斷標誌位不變。另外,在清除標誌位的時候,中斷內使用***_clearitpendingbit(),非中斷時採用***_clearflag()會更為嚴謹一些。 在對標誌位進行置位和清除操作時,也可以考慮直接操作暫存器,有時候需要直接操作管腳的話會比較方便。
ps:這裡的事件標誌和中斷標誌都是硬體上的標誌位,在軟體設計裡面常用的還有軟體上定義的標誌位:即在程式裡面定義乙個布林變數來表示狀態。需要確定工作狀態時,不要死腦筋只知道去查詢相應的硬體標誌,有時候轉變一下思路,設定乙個軟體標誌位反而效率更高,程式設計簡單,程式易懂。
3、中斷服務程式是否需要清除標誌位。中斷服務裡面除了需要寫相應的中斷服務之外,為了下次能正常中斷,對中斷的設定也是必不可少的。一般來說都是需要對中斷標誌位進行清除的,具體需要清除哪些標誌位可以參考例程**。
4、微控制器開發程式設計裡面,有很多是位操作運算。常見的位操作運算也需要補習。
1) a&= ~(1
<< 6) :將a的第七位(bit6)清 0,其它位不變。&= ~
2) a|=(1
<< 6): 將 a的第七位(bit6)置 1,其它位不變。|=
3)a ^= (1
<< 6):將 a的第七位(bit6)取反,其他位不變。 ^=
STM32學習日誌 2020 10 29
學習目標 學習內容 學習產出 技術文件 今日覆盤 博主今年大二,電賽降至,自己的電子設計領域知識極其匱乏,又甚是想去參加電賽,同時記錄下自己學習經歷,方便自我回顧和幫後來者踩坑。第一次正經寫部落格,想到哪寫到哪,希望各位不要見怪。寫作動機 除了記錄學習經歷之外,另外乙個就是自我督促。我一向以ddl為...
STM32學習筆記 4
條件編譯就是編譯時候的一種預處理命令 ifndef ifdef define elseif endif就是這些命令,在stm32應用的時候寫在.h檔案中,目的是防止出現倆個.c檔案同時呼叫同乙個.h檔案出現編譯錯誤。一般這麼寫 ifndef led h define led h void led v...
STM32學習部分4
1.stm32中有兩個中斷優先順序 搶占式優先順序 佔先式優先順序 和響應優先順序 副優先順序 也就是主優先順序和副優先順序。其中搶占式優先順序決定是否有中斷巢狀 高佔先優先順序的中斷事件會打斷當前的主程式或者是中斷程式的執行,也就是搶斷式優先響應 2.在佔先式優先順序相同的情況下,高副優先順序的中...