Kendryte K210 关于CTM2210LB的通讯

我们目前的项目里面有无线开关这么一个功能,那么我们就用到CTM2210LB(接收)和CTM2150L(发送)的模块,接收模块与K210的IO连接

默认CTM2210LB与CTM2150L就可以配对,如果需要修改其他的,需要用烧录器去修改,这里就不详细说如何修改了,因为我自己都没修改过

然后CTM2210LB是标准的EV1527协议,需要使用IO去解

之前想得比较复杂,想着用定时器加外部中断去做,但是仔细想想以及参考了各位博主的资料,最后决定只用定时器就可以搞定

原理其实很简单,就是定一个50us的定时器进去中断,然后查询IO的高低电平,如果为低电平就+1,然后去计算时间

以我这个为例子,低电平的时间:

bit0:500us左右

bit1:200us左右

同步码:6ms左右

这里要注意一点,只要是在中断里面的变量,都需要加volatile,包括修改寄存器之类的,都需要加,不要问我为什么,我不会告诉你们因为没加这个搞了我好几天,后面还是专业大神提醒

其实是这样的,加上volatile之后你的值会及时得到更新,因为读取值是在缓存的,有些时候没及时更新,就会导致你读取的值不正常,就会出现问题

可能是我比较菜吧,所以我这里记录一下,防止以后出现这种错误。修改寄存器,中断,甚至是线程之间,有变量最好还是加上,以防万一。

话不多说,先上代码:

猜你喜欢

转载自blog.csdn.net/smile_5me/article/details/109390046