郑州做定制网站的公司,郑州网站建设公司qq,企业网站公司单位有哪些,怎样做产品推广思路#xff1a;
这个考了一个RTC的配置#xff0c;RTC我只配过一次#xff0c;所以有些生疏#xff0c;还是不能大意#xff0c;一些偏僻的考点还是要多练#xff0c;在获取RTC时间的时候也遇到一些bug,这个后续会用一篇博客将最近遇到的BUG都总结一下
主要的难点还是… 思路
这个考了一个RTC的配置RTC我只配过一次所以有些生疏还是不能大意一些偏僻的考点还是要多练在获取RTC时间的时候也遇到一些bug,这个后续会用一篇博客将最近遇到的BUG都总结一下
主要的难点还是通信协议问题因为B板在收到串口的通信的时候要立即给A板发指令A板还要将信息传递给B板B板子还要接收消息然后用串口发送给用户这个通信之间要处理适当不要产生通信干扰
其中串口通信和接收就比较宽松只要程序不陷入死循环串口发出的数据一般都是能收到的串口通信的发送和接收都采用等待阻塞如果有数据传输那么就会阻塞住直到数据被全部接收完如果这个时间没有数据程序也会等待一会一般设置的是0xff也就是255ms 即:串口会阻塞255ms在这期间数据能被接收完整即可如果只是一条简单的if语句那么电脑执行时间大概是ns级的当串口波特率为9600的时候传输一个数据所要的时间大概是1/9600大概104us换算成ns大概是104000ns如果程序中没有其他延时的话够整个程序执行一个周期了。所以串口收发时间是很充裕的串口发送是有数据在255ms内发送完没数据直接跳过不阻塞
那么问题的关键自然就来到LORA收发了LORA通信原理之前我已经详细说过不再多赘述重点在于LORA一般情况下都处于接收数据的状态数据传递过来会被放到FIFO数据线上LORA_RX只是取数据线上的数据所以本质上讲LORA不是实时传输,数据传输过来会被储存起来等待LORA_Rx取出 但是要注意在调用LORA_Tx的时候整个系统会在这期间进入发送状态发送的时候也需要将数据放入FIFO数据线上这就意味着如果数据没有被取出LORA_Tx会清除之前的数据将自己发送的数据放入数据线且发送过程中不接收别的设备发送的数据 所以有FIFO中数据必须要即时取出且LORA_Rx和LORA_Tx不能同时在主函数中循环因为LORA_Tx会破坏接收到但还未取出的数据所以必须要将LORA_Tx与前者分开
解决通信冲突的方法
主函数一直调用LORA_Rx确保数据能被即时取出LORA_Tx在发送数据数组不为空的时候才发送且发送完后立即将发送数据数组清空
串口通信也可以采用同样的方式既可以避免通信矛盾也可以防止数据的重复发送