问一个逻辑

2019-08-17 08:30发布

执行状态0;满足条件状态置1,等待100ms,如果没有中断发生状态置0,有中断就执行状态1,,,,现在这个状态机在中断里面,所以延时不能放中断里面,有没有什么好办法
大概是这样
switch(state)
{
case 0:
         state=1;
         delay(100);
        state=0;
        break;
case  1:
        xxxx();
        break;
}   
     
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
30条回答
执迷
1楼-- · 2019-08-17 13:54
当然我可以再用一个中断来判断,但是这么小的一个东西用两个中断感觉会被打死
操作系统
2楼-- · 2019-08-17 19:36
 精彩回答 2  元偷偷看……
执迷
3楼-- · 2019-08-18 00:06
操作系统 发表于 2017-6-10 11:46
这种小逻辑问题自己解决.不然长不大.

好吧、、、、
MrXiong
4楼-- · 2019-08-18 04:31
我讲一下我的理解,我觉得直接在中断服务函数弄一个标志位,然后再主函数的循环体里面判断这个标志。假设中断产生,那么标志位置1,主函数判断标志是否为1,是的话改变状态位的值,即置位1,否则,相反!
simms01
5楼-- · 2019-08-18 07:46
任何中断服务函数里面  只置标志 不能做具体处理 要在大循环哪里判断标志   在中断服务函数放延时更是大忌
执迷
6楼-- · 2019-08-18 11:47
MrXiong 发表于 2017-6-10 13:32
我讲一下我的理解,我觉得直接在中断服务函数弄一个标志位,然后再主函数的循环体里面判断这个标志。假设中 ...

你说的这个我试过、、、、第一个中断进入判断延时100ms如果没有发生第二个中断是可以、、问题是如果在延时的100ms里如果发生了好几个中断,它不会重新判断有没有中断产生,也不会重新延时100ms、

一周热门 更多>