2019-07-21 01:35发布
nashui_sx 发表于 2019-4-19 19:26 假如能容忍执行完这当前循环再切换,这样最简单 volatile u8 zhuangtai=0; void 中断函数(void)
最多设置5个标签!
您的程序给了我很大启发,但是有些地方不明白:1、“容忍执行完这当前循环”是什么意思?循环是无限循环,永远也执行不完吧。2、另外不太明白程序中 中断函数里的zhuangtai=x, 这是把x赋给zhaugntai吗?
我按2中理解将按键中断实验的一个按键中断服务程序修改成如下://外部中断4服务程序
void EXTI4_IRQHandler(void)
{
u8 mode;
delay_ms(10); //消抖
if(KEY0==0)
{
mode=1;
EXTI_ClearITPendingBit(EXTI_Line4);//清除LINE4上的中断标志位
}
}
其他按键的中断服务程序类似,主函数如下:
int main(void)
{
u8 mode;
NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);//设置系统中断优先级分组2
delay_init(168); //初始化延时函数
uart_init(115200); //串口初始化
LED_Init(); //初始化LED端口
EXTIX_Init(); //初始化外部中断输入
LED0=0; //先点亮红灯
LED1=0;
while(1)
{
// printf("OK "); //打印OK提示程序运行
// delay_ms(1000); //每隔1s打印一次
while(mode==1)
{
MOVEFORWARD();
}
while(mode==2)
{
TURNLEFT();
}
while(mode==3)
{
TURNRIGHT();
}
while(mode==4)
{
STOP();
}
}
}
然后按键并没有反应。。。
好晕,这样怎么实现几个无限循环相互打断呢
一周热门 更多>