在學習stm32庫函式過程中,筆者遇到大量的assert_param語句。經查明,assert_param的作用就是用來判斷傳遞給函式的引數是否是有效值。
以下是從韌體庫中複製貼上的:
void rcc_apb2periphclockcmd(uint32_t rcc_apb2periph, functionalstate newstate)
else
}
筆者用keil中的滑鼠右鍵「go to definition ******"" 檢視assert_param(is_rcc_apb2_periph(rcc_apb2periph));語句中is_rcc_apb2_periph的定義,得到如下結果:
/** @defgroup apb2_peripheral
* @{
*/#define rcc_apb2periph_afio ((uint32_t)0x00000001)
#define rcc_apb2periph_gpioa ((uint32_t)0x00000004)
#define rcc_apb2periph_gpiob ((uint32_t)0x00000008)
#define rcc_apb2periph_gpioc ((uint32_t)0x00000010)
#define rcc_apb2periph_gpiod ((uint32_t)0x00000020)
#define rcc_apb2periph_gpioe ((uint32_t)0x00000040)
#define rcc_apb2periph_gpiof ((uint32_t)0x00000080)
#define rcc_apb2periph_gpiog ((uint32_t)0x00000100)
#define rcc_apb2periph_adc1 ((uint32_t)0x00000200)
#define rcc_apb2periph_adc2 ((uint32_t)0x00000400)
#define rcc_apb2periph_tim1 ((uint32_t)0x00000800)
#define rcc_apb2periph_spi1 ((uint32_t)0x00001000)
#define rcc_apb2periph_tim8 ((uint32_t)0x00002000)
#define rcc_apb2periph_usart1 ((uint32_t)0x00004000)
#define rcc_apb2periph_adc3 ((uint32_t)0x00008000)
#define rcc_apb2periph_tim15 ((uint32_t)0x00010000)
#define rcc_apb2periph_tim16 ((uint32_t)0x00020000)
#define rcc_apb2periph_tim17 ((uint32_t)0x00040000)
#define rcc_apb2periph_tim9 ((uint32_t)0x00080000)
#define rcc_apb2periph_tim10 ((uint32_t)0x00100000)
#define rcc_apb2periph_tim11 ((uint32_t)0x00200000)
以這個函式為例:
void rcc_apb2periphclockcmd(uint32_t rcc_apb2periph, functionalstate newstate)的作用就是使能apb2外設時鐘,而當我們呼叫這個函式的時候,所給它的引數必須是以上規定的幾個數值中的乙個,不可隨意填乙個未定義的值進去。
assert_param()函式有效的解決了這個問題,它在函式執行之初,便判斷工程師所給的值是否為這個函式的有效值,以達到糾錯報錯的功能。當我們不知道這個函式該填入什麼樣的值的時候,就可以使用keil中提供的右鍵「go to definition ***x"檢視assert_param()括號中的定義。
STM32韌體庫模版
開發工具 keil4 剛開始用這個庫的時候很無助,因為第一次用韌體庫 以下是我建立模版的步驟和注意事項 1.解壓韌體庫後先觀察目錄的整體結構,可以知道韌體庫裡面要弄出來的東西是libraries目錄,project目錄是韌體庫的應用,可以為今後開發專案做參考。2.現在建立乙個keil4的新工程,規劃...
STM32韌體庫介紹
前言 主要內容 htmresc 資料夾 libraries 資料夾 project 資料夾 utilities 資料夾 stm32f10x stdperiph lib um.chm 前言 本文以stm32f1韌體庫包為例,其他的資料夾目錄結構一樣的。解壓後出現四個資料夾,乙個幫助文件,乙個網頁鏈結。...
STM32 HAL庫 韌體庫 公升級
1 使用官方提供的新功能。2 上個版本有bug,下個版本bug解決了的情況是可能的。不過,上個版本沒bug,下個版本有bug的情況是有的 微小概率事件 開啟 stm32h7xx.h ctrl f搜尋 version 1 通過官網獲取最新hal庫 1 2keil官網經常會卡著顯示不了後續內容,這時可以...