STM32單片機IO中斷實現步驟

STM32推出了全新的HAL驅動源碼,本文給出GPIO中斷代碼實現的步驟:

步驟1)類似下方初始化用GPIO_InitStruct結構體初始化需要的GPIO,注意Mode參數和NVIC的中斷使能:

    GPIO_InitTypeDef GPIO_InitStruct;

    /* Configure GPIO pins : PB6 */

    __GPIOB_CLK_ENABLE();

    GPIO_InitStruct.Pin =  GPIO_PIN_6;// 

    GPIO_InitStruct.Mode = GPIO_MODE_IT_RISING; // interrupt mode , rising

    GPIO_InitStruct.Pull = GPIO_NOPULL;

    GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_VERY_HIGH;

    HAL_GPIO_Init(GPIOB, &GPIO_InitStruct);

    HAL_NVIC_SetPriority(EXTI4_15_IRQn,0,0);

    HAL_NVIC_EnableIRQ(EXTI4_15_IRQn);


步驟2)類似下方,根據GPIO相連的EXIT線實現中斷處理函數,記得內部調用HAL_GPIO_EXTI_IRQHandler()函數:

void EXTI4_15_IRQHandler(void)

{

  HAL_GPIO_EXTI_IRQHandler(GPIO_PIN_6);

}

步驟3)類似下方實現(替換)weak回調函數HAL_GPIO_EXTI_Callback(),這個函數是STM代碼框架自動調用的:

 void HAL_GPIO_EXTI_Callback(uint16_t GPIO_Pin)
{

// 內部實現自己的處理邏輯。

}


完畢!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章