STM韌體庫中assert param的作用

2021-08-22 16:37:25 字數 2384 閱讀 8495

在學習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官網經常會卡著顯示不了後續內容,這時可以...