本帖最后由 一叶倾城wwq 于 2018-6-13 10:09 编辑
比如定义一个整型全局变量a,然后在其他地方有事件导致增加a++(我是在MCU的中断里面),怎样才能知道这个变量不再连续增加了?就比如增加到某一个数值时,不再连续增加,而是有停顿(时间可能长可短),就是得知道它在某一时刻停止增加了,也许到程序跑完也不会再出现增加的情况。不知道我说清楚了没?欢迎各位前辈来指点迷津和讨论可以这样理解下图:这是一个信号,当它不稳定时出现波动导致a++,稳定是a是固定的,确定不会有任何地方在引起自增,所以我想知道何时是稳定的,也就是a不再自增了(停顿)。能不能弄个a的当前值和上次值来进行比较,就知道了,但这个操作思路没想好,所以来求助各位前辈
以下是经过思考后的解决方法,但只验证并使用了第二种方法(感谢各位前辈的热心帮助):
1.在a++的同时,置一个自增标志(bool)为true,注意初始化为false,避免一上电运行就增加不必要的判断;而后就是各位前辈都提过的定时,定时500ms(比如)把自增标志置为false,而后在主程序里判断if(!自增标志),注意这儿可能有两种情况,一是确实为假,a并未在中断里增加,二是为真,在自增;在主程序检测为假时,说明确实稳定了,这段时间不再增加(可以执行事件)。
2.直接使用定时器一段时间将a清空,把控好这个定时时间,需多次检测调试,因为信号并不是经常出现波动。
3.就是我一开始所想的当前值和上次值,但若有好几个地方对a++就不太适用,在每一次进入检测时将last=a;而后在a++后new=a;这样在程序中来判断什么时候last=new;那么说明没有再自增(h或许应有个比较间隔)。
注:不对的地方还请前辈们赐教
|