自學《stm32庫開發實戰指南》的筆記
基礎知識
stm32庫是對stm32提供的函式介面,api。通過呼叫函式介面來配置stm32暫存器。
為解決不同晶元廠商生產的cortex微控制器軟體的相容性,建立了cmsis標準。cmsis層提供的是硬體抽象層,對軟體移植有好處。
使用者層是要進行刪減(條件編譯)和改動的檔案,cmsis層的檔案直接包含進工程。
c語言複習
1.位操作
清零:& 設值: |
移位操作:gpioa->odr|=1<<5; 輸出高,不改變其他位
這樣我們一目了然,5 告訴我們是第 5 位也就是第 6 個埠,1 告訴我們是設定為 1 了。
~取反操作:sr 暫存器的每一位都代表乙個狀態,某個時刻我們希望去設定某一位的值為 0,同時其他位都保留為 1,
timx->sr = (uint16_t)~tim_flag;#definetim_flag ((uint16_t)0x0001))
2.define 巨集定義
3.ifdef 條件編譯
#ifdef 識別符號
程式段 1
#else
程式段 2
#endif
4.extern 變數宣告
5.typedef 型別別名
struct _gpio
;struct _gpio gpioa;//定義結構體變數 gpioa
使用型別別名的**如下:
typedef struct
gpio_typedef;
gpio_typedef gpioa;//定義結構體變數 gpioa
6.結構體
宣告結構體型別:
struct 結構體名變數名列表;
引用:結構體變數名字.成員名 若是結構體指標 usart->baudrate;
stm32系統架構
stm32時鐘系統
埠復用stm32的內建外設的外部引腳是與gpio復用的。復用埠初始化有幾個步驟:
1) gpio 埠時鐘使能。要使用到埠復用,當然要使能埠的時鐘了。
rcc_apb2periphclockcmd(rcc_apb2periph_gpioa, enable);
2) 復用的外設時鐘使能。比如你要將埠 pa9,pa10 復用為串列埠,所以要使能串列埠時鐘。
rcc_apb2periphclockcmd(rcc_apb2periph_usart1, enable);
3) 埠模式配置。 在 io 復用位內建外設功能引腳的時候,必須設定 gpio 埠的模式。
埠重對映
乙個外設的引腳除了具有預設的埠外,還可以通過設定重對映暫存器的方式,把這個外設的引腳對映到其它的埠。具體對應關係檢視《stm32 中文參考手冊 v10》的 p116 頁「8.3 復用功能和除錯配置」。
所以重對映我們同樣要使能復用功能的時候講解的 2 個時鐘外,還要使能 afio 功能時鐘,然後要呼叫重對映函式。詳細步驟為:
1)使能 gpiob 時鐘:
rcc_apb2periphclockcmd(rcc_apb2periph_gpiob, enable);
2)使能串列埠 1 時鐘:
rcc_apb2periphclockcmd(rcc_apb2periph_usart1, enable);
3)使能 afio 時鐘:
rcc_apb2periphclockcmd(rcc_apb2periph_afio, enable);
4)開啟重對映:
gpio_pinremapconfig(gpio_remap_usart1, enable);
stm32庫開發實戰指南讀書筆記(二)
編寫自己的庫函式 c檔案 具體實現機理 該部分主要是函式功能的實現,如按鍵點亮led的相應知識點。主要實現目錄如下 乙個基本的stm32應該包含如下 博主使用的是正點原子的stm32 mini開發板,實際開發過程中,引腳的巨集定義應根據實際電路來設定 基本硬體如下 該部分包括了rs232轉ttl電路...
STM32開發入門及實戰
本部落格的編寫目的 一 自我總結,記錄。二 分享,輸出,加深思考。三 不作細緻如書本般編排,儘管那樣的排版很好看,但是過於耗費時間,還有很多東西沒有必要說明,完全可以自己去解決,但還是盡量做好排版,便於閱讀。四 盡可能舉一反三,做到真正能夠處理實際問題。12 345stm32開發實戰 1 目錄一 概...
STM32 庫開發 位址對映
1.stm32有ahb,apb2,apb1匯流排。其中apb2外設位址空間是從0x40010000至0x40013fff位址。第乙個位址稱為基位址。gpio typedef gpiox gpiox gpioa gpiox crl 0xffffffff 3.配置gpio的暫存器要開啟外設時鐘!區別於5...