自学内容网 自学内容网

STM32 EXTI的HAL库设置步骤(外部中断)

一, 使能GPIO时钟

__HAL_RCC_GPIOx_CLK_ENABLE()

二 、GPIO/AFIO(SYSCFG)/EXTI

 GPIO_InitTypeDef gpio_init_struct;   
 gpio_init_struct.Pin  = GPIO_PIN_3;                           //PH3
 gpio_init_struct.Mode = GPIO_MODE_IT_FALLING;     //下降沿触发
 gpio_init_struct.Pull = GPIO_PULLUP;                          //上拉
 HAL_GPIO_Init(GPIOH, &gpio_init_struct);

三、设置中断分组

使用HAL_NVIC_SetPriorityGrouping(); 此函数只需要设置一次

HAL_NVIC_SetPriorityGrouping(NVIC_PRIORITYGROUP_4);

四、设置中断优先级

void HAL_NVIC_SetPriority(IRQn_Type IRQn, uint32_t PreemptPriority, uint32_t SubPriority)

五、 使能中断

void HAL_NVIC_EnableIRQ(IRQn_Type IRQn)

六、 设计中断服务函数

void EXTI3_IRQHandler(void)
{
    HAL_GPIO_EXTI_IRQHandler(GPIO_PIN_3);    
}
void HAL_GPIO_EXTI_Callback(uint16_t GPIO_Pin)
{
    delay_ms(20);
    if (GPIO_Pin == GPIO_PIN_3)
    {
        if (HAL_GPIO_ReadPin(GPIOH, GPIO_PIN_3) == 0)
        {
            HAL_GPIO_TogglePin(GPIOB, GPIO_PIN_0);
        }        
    }
}

注意:STM32只有EXTI0~4, EXTI9_5, EXTI15_10 7个外部中断


原文地址:https://blog.csdn.net/weixin_41446932/article/details/142459453

免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!