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)!