OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 3730|回复: 1

请问这么写的外部中断可以打断这个while循环吗?

[复制链接]

13

主题

51

帖子

0

精华

初级会员

Rank: 2

积分
95
金钱
95
注册时间
2015-12-28
在线时间
17 小时
发表于 2016-1-24 21:08:59 | 显示全部楼层 |阅读模式
3金钱
[mw_shl_code=c,true]void EXTI15_10_IRQHandler(void)                   //外部中断10【15:10】中断服务函数
{
        if(EXTI_GetITStatus(EXTI_Line10) != RESET)
        {
     
                delay_ms(50);//消抖
        if(KEY5==0)         //按键KEY0
        {//添加中断处理程序
//        daomangmode=1-daomangmode;
//        printf("%d",daomangmode);
                jiedianmode++;
        }
                 EXTI_ClearFlag(EXTI_Line10);                                  //清除中断标志(必须)
             EXTI_ClearITPendingBit(EXTI_Line10);                          //清除中断挂起位
         }
}[/mw_shl_code]
[mw_shl_code=c,true]                        while(jiedianmode==0)
                        {
                                read_hmc5883l();
                                printf("现在的角度为%d\n",angle);
                                delay_ms(40);
                                zhendongpanduan();
                        }[/mw_shl_code]
就是想在while循环中一直判断角度是否在范围内,防止跑偏,然后怎么才能让它不再进while了?用按键外部中断可以吗?

最佳答案

查看完整内容[请看2#楼]

2.用于循环语句中,从循环体内直接退出当前循环。 unsigned char i, j=50; for(i=0;ij) break; } j=i; 当程序循环到i=51时,执行break语句,跳出for循环,开始执行j=i这条语句。
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

13

主题

51

帖子

0

精华

初级会员

Rank: 2

积分
95
金钱
95
注册时间
2015-12-28
在线时间
17 小时
 楼主| 发表于 2016-1-24 21:09:00 | 显示全部楼层
2.用于循环语句中,从循环体内直接退出当前循环。
unsigned char i, j=50;
for(i=0;i<100;i++)
{
      if(i>j) break;
}
j=i;
当程序循环到i=51时,执行break语句,跳出for循环,开始执行j=i这条语句。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-6-21 21:12

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表