硬件:stm32f106vc
操作系统:ucosii
实现功能:按键中断
现象:配置完按键、中断后,进入中断死机。
原代码如下:
void EXTI0_IRQHandler(void)//WK_UP KEY3 PA0
{
delay_ms(10);
if(KEY3==1)
{
//BEEP=!BEEP;
}
EXTI_ClearITPendingBit(EXTI_Line0);
}
跑飞如下:
void HardFault_Handler(void)
{
/* Go to infinite loop when Hard Fault exception occurs */
while (1)
{
}
}
原因:没有在中断中加入操作系统有关语句。
修改程序如下后正常运行:
void EXTI0_IRQHandler(void)//WK_UP KEY3 PA0
{
OSIntEnter();
delay_ms(10);
if(KEY3==1) //WK_UP
{
//BEEP=!BEEP;
}
EXTI_ClearITPendingBit(EXTI_Line0);
OSIntExit();
}
本文介绍了一种使用STM32F106VC微控制器和UC/OS-II操作系统实现按键中断的方法。文章详细描述了在不正确配置中断导致系统死机的问题及解决过程。通过在中断服务程序中加入操作系统特有的上下文切换函数(OSIntEnter()与OSIntExit()),确保了系统的稳定运行。
455

被折叠的 条评论
为什么被折叠?



