嵌入式软件开发的基础知识(3)位移操作-巧妙的计数
在嵌入式开发中,总会遇到IO口电平需要滤波。常见的方法就是连续出现N个高/低电平,才认为数据有效。
一般来说,常见的操作就是用一个变量来计数累加。连续出现到判定阈值就输出信号。如下面代码所示,当电平变化(0变1或者1变0),且稳定45个周期才能够输出。
位移计数:
位移计数是将uint类型数据看作bit序列。每一次循环,数据都会整体的左移一位(高位抛弃)低位进来一个数据(就是传进来的IO电平数据)所以判定方式就是低位是否全1/0。比如阈值为5,那么只要最低的五个bit全都是1,就可以说明连续进来五个电平都是1,就可以输出1。低电平也是同理,检测最低的5个 bit是否全是0。(就是阈值在1-32的情况)
以上就是计数的两种方法。高低电平变化都需要稳定一定的时间(累计一定的次数)才会被判定生效。如果只是电平或者按键消抖的话,一般常用的方法就可以了。如果是某些信号需要一个较长时间的脉冲才能够触发。那么可以尝试使用一下位移计数法。(保证让人看得很迷惑哈哈哈)。
小知识:static关键字。上面定义的局部变量都使用了static关键字,因为:①这些变量只在本函数使用。②而且这个变量每一个循环都会用到。所以变量只需要申请一次,就可以一直使用它。如果不加这个static,这些变量每次循环都会重新声明定义这么一个变量(值会变成0)。那么这计数器是不是得声明全局变量才能起到作用呢?全局变量满天飘可不是什么好习惯。
2024最新激活全家桶教程,稳定运行到2099年,请移步至置顶文章:https://sigusoft.com/99576.html
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。 文章由激活谷谷主-小谷整理,转载请注明出处:https://sigusoft.com/90960.html