问一个逻辑

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-19 11:26
安尚科技 发表于 2017-6-10 14:39
你这中断是多长时间进一次,根据进中断的时间和延时100ms的关系写函数,贸然写肯定不对。

恩,就是接受完数据中断建立连接处理数据,100ms没接到下个数据就断开连接
dozm
2楼-- · 2019-08-19 14:10
用定时器做延时,不要用delay。
执迷
3楼-- · 2019-08-19 15:19
dozm 发表于 2017-6-10 14:45
用定时器做延时,不要用delay。

我是用的定时器做的延时,,,,
来俩不甜的
4楼-- · 2019-08-19 17:22
本帖最后由 来俩不甜的 于 2017-6-10 14:53 编辑

你想实现什么功能,为什么要连续触发2次中断才允许执行。你这个写法肯定有问题的。有可能你的方向都是错的,说下功能,没必要强行状态机
执迷
5楼-- · 2019-08-19 20:00
 精彩回答 2  元偷偷看……
dozm
6楼-- · 2019-08-20 01:26
执迷 发表于 2017-6-10 14:50
我是用的定时器做的延时,,,,

中断置位,函数放在while里,延时用定时器中断,设置个计数变量。第一次中断建立连接,计数变量赋值延时100ms,时间到就断开,假设100ms内再次进入中断,一直重新赋值计数变量就可以了。

一周热门 更多>