stm32中断优先级

请问 在中断函数里添加按键消抖就会卡在中断出不来,试了一下是delay延时函数的问题,有没有什么解决办法。可不可以修改delay的中断优先级,怎么修改

在中断处理函数中使用延时函数(比如delay()函数)是不建议的,因为延时函数会阻塞CPU的执行,导致其他中断无法得到及时处理。更好的方法是使用硬件定时器或者软件定时器来实现延时功能。

针对消抖问题,可以在中断服务函数中添加一个简单的状态机,通过记录按键状态的变化来判断按键是否被按下。例如,可以在中断服务函数中添加一个静态变量,记录上一次按键状态,然后在新的按键状态到来时进行比较。如果两次状态不同,说明按键状态有变化,此时再进行消抖处理。

关于修改delay()函数的中断优先级,这通常是不必要的,因为delay()函数本身并没有使用中断。如果你的程序中使用了其他中断,而这些中断的优先级比delay()函数的优先级高,那么在这些中断服务函数中调用delay()函数时,delay()函数会被中断。在这种情况下,你需要调整其他中断服务函数的优先级,让delay()函数的优先级更高。但是,这样做可能会对系统的响应时间和稳定性产生负面影响,因此需要谨慎使用。