void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim) {
//添加回調后的程序邏輯 if (htim->Instance == htim2.Instance) //判斷是否定時器2 { } } void HAL_UART_RxCpltCallback(UART_HandleTypeDef *huart) {
//添加回調后的程序邏輯 if(huart->Instance == USART1) //判斷是否串口1 { } }
中斷回調函數是在某個中斷發生完成之后調用的,在用Cubemx生成的代碼中,其實已經有生成中斷回調函數了的,不過那個我們可以不用管,自己在項目里重寫中斷回調函數以及程序邏輯即可。
從上圖我們可以看到,自動生成的代碼中,中斷回調函數都有一個__weak 關鍵字,加上了__weak 修飾符的函數,用戶可以在用戶文件中重新定義一個同名函數,最終編譯器編譯的時候,會選擇用戶定義的函數,如果用戶沒有重新定義這個函數,那么編譯器就會執行__weak 聲明的函數,並且編譯器不會報錯。所以我們可以在別的地方定義一個相同名字的函數,而不必也盡量不要修改之前的函數。