第十二届蓝桥杯物联网试题(省赛)

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

思路:

这个考了一个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在发送数据数组不为空的时候才发送,且发送完后立即将发送数据数组清空

串口通信也可以采用同样的方式,既可以避免通信矛盾也可以防止数据的重复发送

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/488234.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

纯前端调用本机原生Office实现Web在线编辑Word/Excel/PPT,支持私有化部署

在日常协同办公过程中,一份文件可能需要多次重复修改才能确定,如果你发送给多个人修改后再汇总,这样既效率低又容易出错,这就用到网页版协同办公软件了,不仅方便文件流转还保证不会出错。 但是目前一些在线协同Office…

好莱坞新风潮:OpenAI携手Sora AI视频生成工具探索电影制作新境界

每周跟踪AI热点新闻动向和震撼发展 想要探索生成式人工智能的前沿进展吗?订阅我们的简报,深入解析最新的技术突破、实际应用案例和未来的趋势。与全球数同行一同,从行业内部的深度分析和实用指南中受益。不要错过这个机会,成为AI领…

24.两两交换链表中的节点

给你一个链表,两两交换其中相邻的节点,并返回交换后链表的头节点。你必须在不修改节点内部的值的情况下完成本题(即,只能进行节点交换)。 示例 1: 输入:head [1,2,3,4] 输出:[2,1,4…

Qt|QStringList转QString

免责:百度搜索AI自动生成,如果侵权联系我删除。 AI生成有错误,已验证修改。 文章目录 1.使用join()方法:2.使用QTextStream:3.使用QString的arg()方法:4.使用std::for_each和lambda表达式:5.使…

elasticsearch 6.8.x 索引别名、动态索引扩展、滚动索引

文章目录 引言索引别名(alias)创建索引别名查询索引别名删除索引别名重命名索引别名 动态索引(index template,动态匹配生成索引)新建索引模板新建索引并插入数据索引sys-log-202402索引sys-log-202403索引sys-log-202…

android studio忽略文件

右键文件,然后忽略,就不会出现在commit里面了 然后提交忽略文件即可

【算法专题--双指针算法】leecode-15.三数之和(medium)、leecode-18. 四数之和(medium)

🍁你好,我是 RO-BERRY 📗 致力于C、C、数据结构、TCP/IP、数据库等等一系列知识 🎄感谢你的陪伴与支持 ,故事既有了开头,就要画上一个完美的句号,让我们一起加油 目录 前言1. 三数之和2. 解法&…

龙蜥 Anolis OS 7.9 一键安装 Oracle 11GR2(231017)单机版

前言 Oracle 一键安装脚本,演示 龙蜥 Anolis OS 7.9 一键安装 Oracle 11GR2(231017)单机版过程(全程无需人工干预):(脚本包括 ORALCE PSU/OJVM 等补丁自动安装) ⭐️ 脚本下载地址…

【编译tingsboard】出现gradle-maven-plugin:1.0.11:invoke (default)

出现的错误: [ERROR] Failed to execute goal org.thingsboard:gradle-maven-plugin:1.0.11:invoke (default) on project http: Execution default of goal org.thingsboard:gradle-maven-plugin:1.0.11:invoke failed: Plugin org.thingsboard:gradle-maven-plugi…

uni-app框架(项目创建)

1.学习说明 dcloud官方除uni-app外,还有新生的uni-app x(即下一代uni-app),如果是初学者或者刚入门同学,建议还是使用uni-app进行开发。 无论是vue还是uni,作为前端开发的一个框架学习方法是一致的&#…

了解一波经典的 I/O 模型

最近读了波网络 I/O 相关的文章,做下总结、摘录。(未完) 经典 I/O 模型 {% checkbox red checked, 阻塞式 I/O(blocking I/O) %}{% checkbox red checked, 非阻塞式 I/O(non-blocking I/O) %}…

【优质】「web开发网页制作」html+css+js导盲犬网页制作(5页面)

导盲犬网页目录 涉及知识写在前面一、网页主题二、网页效果Page1、首页Page2、关于导盲犬Page3、阶段Page4、宣传视频Page5、登录 三、网页架构与技术3.1 脑海构思3.2 整体布局3.3 技术说明书 四、网页源码HtmlCSSJS 五、源码获取5.1 获取源码包 作者寄语 涉及知识 导盲犬介绍…

flask_restful规范返回值之类型设置

大型的互联网项目中,返回的数据格式,有时是比较复杂的结构。 如:豆瓣电影 https://movie.douban.com/j/chart/top_list?type24&interval_id 100%3A90&action&start20&limit20 返回的值里有 json 或者列表数据&#xff0c…

基于nodejs+vue家装一体化平台python-flask-django-php

提高现下家装一体化平台的准确度,同时降低经济波动带来的不良影响,希望本文能对广大学者的研究提供参考。 前端技术:nodejsvueelementui, Express 框架于Node运行环境的Web框架, 语言 node.js 框架:Express 前端:Vue.js 数据库&am…

Nodejs沙盒逃逸

Buffer 在较早一点的node.js版本中 (8.0 之前),当 Buffer 的构造函数传入数字时, 会得到与数字长度一致的一个 Buffer,并且这个 Buffer 是未清零的。8.0 之后的版本可以通过另一个函数 Buffer.allocUnsafe(size) 来获得未清空的内存。 注:关…

elasticsearch 8.12+kibana 8.12

准备工作:1.下载相关的安装包放到/usr/local/ES下面 elasticsearch下载地址:Download Elasticsearch | Elastic elasticsearch-head-master下载地址:https://github.com/mobz/elasticsearch-head/archive/master.zip node下载地址:Index of /dist/ kibana地址:Downl…

CSS及javascript

一、CSS简介 css是一门语言&#xff0c;用于控制网页的表现。 cascading style sheet:层叠样式表 二、css的导入方式 css代码与html代码的结合方式 &#xff08;1&#xff09;css导入html有三种方式&#xff1a; 1.内联样式&#xff1a;<div style"color:red&quo…

C语言 | qsort()函数使用

目录&#xff1a; 1.qsort介绍 2.使⽤qsort函数 排序 整型数据 3.使⽤qsort函数 排序 结构体数据 4. qsort函数的模拟实现冒泡排序 qsort()函数 是一个 C语言编译器函数库自带的排序函数&#xff0c; 它可以对指定数组&#xff08;包括字符串&#xff0c;二维数组&#x…

Qt与编码

ASCII码:一个字节&#xff0c;256个字符。 Unicode:字母&#xff0c;汉字都占用两个字节。 utf-8:字母一个字节&#xff0c;汉字3个字节。 gbk:字母一个字节&#xff0c;汉字2个字节。 gb2312:可以表示汉字&#xff0c;gb2312<gbk。 编码查看&#xff1a; https://www.…

sonar+gitlab提交阻断 增量扫描

通过本文&#xff0c;您将可以学习到 sonarqube、git\gitlab、shell、sonar-scanner、sonarlint 一、前言 sonarqube 是一款开源的静态代码扫描工具。 实际生产应用中&#xff0c;sonarqube 如何落地&#xff0c;需要考虑以下四个维度&#xff1a; 1、规则的来源 现在规则的…