用处:高优先级的中断可以强行中断低优先级的活动,结束后继续进行低优先级的活动
代码(基于HAL库):
初始化:
需要给中断优先级分组定个规则(怎么分配抢断优先级和次级优先级):参数为分组规则变量
HAL_NVIC_SetPriorityGrouping()
外部中断初始化(本次实验用的是GPIO口外部中断):模式(mode)选择上升沿触发
GPIO_InitStruct.Mode = GPIO_MODE_IT_FALLING;
需要给中断源设定中断优先级:参数为中断源、抢断优先级、次级优先级
HAL_NVIC_SetPriority()
使能中断:参数为中断源
HAL_NVIC_EnableIRQ();
中断函数:
EXTI0_IRQHandler() //检测到中断自动调用 { HAL_GPIO_EXTI_IRQHandler() ; //中断服务函数,清除中断标志位,然后自动调用召回函数 }
HAL_GPIO_EXTI_Callback() //参数为中断源端口 { //召回函数,中断期间需要完成的任务就写在这里 }
注意:
中断服务函数里面一般不加入延时函数,延时效果不能太久,不然会卡死
(目前还没找到解决方法,以后再学学)
标签:NVIC,HAL,函数,中断,学习,GPIO,优先级 From: https://www.cnblogs.com/toriyung/p/16721140.html