Toriyung

导航

中断的学习

用处:高优先级的中断可以强行中断低优先级的活动,结束后继续进行低优先级的活动

 

代码(基于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() //参数为中断源端口
{
    //召回函数,中断期间需要完成的任务就写在这里
}

 

 

注意:

  中断服务函数里面一般不加入延时函数,延时效果不能太久,不然会卡死

  (目前还没找到解决方法,以后再学学)

  

 

posted on 2022-09-22 22:47  Toriyung  阅读(25)  评论(0编辑  收藏  举报