學了一周多的STM32,從最開始的點亮一盞燈到中斷定時的使用,發現對於ST庫使用的一些使用方法,現作一小結:
1、初始化結構體
a、定義一個xxx—InitTypeDef 類型的結構體,比如GPIO—InitTypeDef類型的GPIO—InitStructure用來配置GPIO;
b、根據所使用的要求向這些結構體的成員中寫入特定的控制參數,如GPIO_initStructure.GPIO_Pin=GPIO_Pin_13;
c、將結構體作為輸入參數調用相應的外設庫函數xxx—Init(),實現向寄存器寫入控制參數;
2、數據的輸入與輸出
a、先通過輸入參數向函數制定要使用的外設是什麼,比如用(GPIOA,GPIO—Pin—5),選中PA5引腳進行控制;
b、進行寫或者讀數據操作,例如函數GPIO_WriteBit(GPIOA, u16 GPIO_Pin—5, Bit_RESE) ,是對PA5進行寫1操作;
c、如果是接收外部數據,則調用Read或Receive函數,讀取函數返回值來得到外部輸入數據。
3、狀態位、標志位
在程序運行的過程中當我們需要知道一些外設的工作狀態的時候,那麼就會涉及一系列的標志檢查函數:
a、名為 PPP_GetFlagStatus的函數,其功能為檢查外設 PPP某標志位被設置與否,例如:TIM_ GetFlagStatus ;
b、名為 PPP_ClearFlag 的函數,其功能為清除外設 PPP標志位,例如:TIM_ ClearFlag ;
c、名為 PPP_GetITStatus 的函數,其功能為判斷來自外設 PPP的中斷發生與否,例如:TIM_ GetITStatus ;
d、名為 PPP_ClearITPendingBit 的函數,其功能為清除外設 PPP 中斷待處理標志位,例如:TIM_ ClearITPendingBit 。
總結:
ST官方庫有許多共同特點,在此對外設主要的共同函數進行一個簡單的分類總結:
函數名 功能 輸入參數 返回值 XXX—Init() 對外設進行初始化
XXX—inirTypeDef類型結構體
voidXXX—DeInit()
以系統默認形式初始化外設 將要進行初始化的外設名 voidXXX—StructInit()
以默認的數據填充初始化結構體 將要進行默認填充的XXX—InitTypeDef類型結構體 voidXXX—SendData()
使用外設發送數據
XXX相應的外設名;將要發送的數據
void
XXX—ReceiveData()
獲取外設接收到的數據
XXX相應的外設名
返回接收到的數據
XXX_ GetFlagStatus ()
檢測外設事件標志位 要檢查的時間標志名 SET或RESETXXX_ GetITStatus ()
檢查中斷標志 要檢查的中斷標志名 SET或RESETXXX_ ClearFlag ()
清除事件標志位 要清除的事件標志名 voidXXX_ ClearITPendingBit ()
清除掛起的中斷標志位 要檢測的中斷標志名 voidXXX_ITConfig ()
設置外設的中斷 XXX相應得外設;選擇開啟外設的某中斷 voidXXX_Cmd ()
使能或失能外設 配置外設名;ENABLE或DISABLE voidXXX_ DMACmd ()
配置外是否可使用DMA請求 配置外設名;選擇要配置的DMA請求;ENABLE或DISABLE void