蓝桥杯物联网遇见的重大BUG及其产生原因和解决方法

BUG列表

  • 1、ADC的RP2显示一直为0:
  • 2、LORX_Tx发送数据乱码:
  • 3、strcmp比较char a[2] = {'1', '2'}与“12”字符串是否相等板子会死机:
  • 4、LORA_Tx和LORA_Rx放一起会接收不到数据:
  • 5、RTC获取到静止时间:
  • 6、ADC获取RP1和RP2模拟量同步:
  • 7、调用串口中断回调函数板子卡机:
  • 8、串口中断中断回调函数和主函数中的OLED_Show函数无法显示:
  • 9、串口助手发送数据卡机无响应:

1、ADC的RP2显示一直为0:

现象:

在扭动RP1和RP2电位器的时候RP1对应电位器正常显示,RP2对应电位器显示一直是0

原因及解决方案:

在这里插入图片描述
因为上述函数返回一个float数组,所以一定要在局部变量数组前面加上static!!!,因为AdcValue是局部变量在这个函数结束之后其生存周期就会结束,也就是说其存的值也会随着生存周期的结束被初始化,如果调用这个函数获取其返回的数组,刚好在这之后其周期结束,那么获取的数组也会被初始化成0这也就是为什么RP2电位器对应值一直是0因为其对饮值生存周期结束被初始化,加上static使这个数组一直保持,直到程序结束

2、LORX_Tx发送数据乱码:

现象:

在用LORA_Tx发送一个字符串char* a = "1213sdafa"等等的时候接收端LORA_RX收到的数据会是一部分数据然后,后面会乱码

原因及解决方案:

这个原因真是无法知道,应该是LORA通信代码的问题,解决方法到有很多用char a[] = {'1', '2', '1'......}储存数据,然后用LORA_Tx发送接收端就不会乱码,或者用sprintf将数据char * a = "....."转换到另一个数组char b[20]中,发送b接收端也不会乱码,反正不管怎么直接传char* a都会乱码,在接收端怎么处理都没啥效果,问题出在发送过程

3、strcmp比较char a[2] = {‘1’, ‘2’}与“12”字符串是否相等板子会死机:

现象:

当程序中有两个或两个以上上述定义的数组,程序调用strcmp让其中一个数组和另一个字符串比较板子就会死机

原因及解决方案:

这是我目前认为最离奇的bug,差点没给我整破防

在这里插入图片描述
在这里插入图片描述
原因很简单,没有以'\0'结尾,C中字符串数组都是以'\0'结尾,这个和JAVA是不一样的上述我的操作导致整个数据的长度变得不确定,区别的是devc++是虚拟地址,而板子里的是物理地址,也就是说我定义的数组的长度更是无法确定的,strcmp检测字符串是否相同的时候如果“123”和“12”只是前两个相同那么strcmp会遍历到'3'再结束,而我的数组因为没有给’\0‘结尾所以长度是未知,所以strcmp会一直遍历下去直到找到物理地址中的一个'\0',这就导致这个程序运行了很长时间,导致黑屏现象

所以说定义C的数组一定要多留一位存’\0’结束符!!!

———— 2024/3/25

4、LORA_Tx和LORA_Rx放一起会接收不到数据:

现象:

一个程序的主函数在LORA_Tx发送完数据后紧接着接收数据LORA_Rx会出现数据能发送但是接收不了数据的现象

原因及解决方案:

原因在于调用LORA_Tx的时候会清空数据线上的接收且未被即时取出的数据,同时发送数据的时候并不会接收数据,接收数据可以放入主函数一直接收并即时取出数据,发送数据在需要的时候发送,并避免重复发送

5、RTC获取到静止时间:

现象:

RTC配置没有问题但获取的数据是静止的

原因及解决方案:

原因是取RTC的时间的时候是不够的,必须要将时间和日期全部取出来才可以

6、ADC获取RP1和RP2模拟量同步:

现象:

扭动RP1电位器两个ADC都会变动且一样的数值

原因及解决方案:

原因在于 Discontinous conversion mode 不连续转换模式要ENABLE,这一步不做RP2对应的ADC会来不及转换

7、调用串口中断回调函数板子卡机:

现象:

用串口中断接收数据板子会卡机

原因及解决方案:

原因在于在中断回调函数中加了延时,导致响应不够快,卡机,千万不要在中断回调函数加延时!!!

8、串口中断中断回调函数和主函数中的OLED_Show函数无法显示:

现象:

主函数中有显示函数显示信息,中断函数也有显示函数,导致两个显示函数都不能用,或者说中断函数中的显示函数不能用

原因及解决方案:

原因在于主函数oled如果显示数据显示一半此时中断响应到回调函数中显示他的数据,此时显示指针不在原点位置,导致显示函数无法进行,再回到主函数中会继续将主函数的数据显示完,才将显示指针归位,解决方案是在主函数加延时,但最好还是不要在中断回调函数和主函数中同时加显示函数,还有千万不要在回调函数加延时!!!

9、串口助手发送数据卡机无响应:

现象:

串口助手发送消息卡死,无响应

原因及解决方案:

串口号或者波特率不匹配

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Vue 03 组件通信

Vue学习 Vue 0301 浏览器本地存储localStorageSessionStorage案例 todolist的完善 02 组件自定义事件Custom Events基本使用解绑自定义事件注意事项①② 总结案例 todolist的完善 03 全局事件总线GlobalEventBus案例 todolist的完善 04 消息的订阅与发布案例 todolist的完善 05…

网络原理-传输层-UDP报文结构

本文介绍UDP报文 有很多友友搞不清楚UDP报文的详细结构还有TCP的详细结构,所以专门分开来讲 以免弄混. 首先我们先看一下整个UDP结构,让大家有一个全方面的认识 下面我们来详细解释UDP报 16位源端口号(本机):就是2字节大小,16个二进制位. 16位目的端口号(目的机):也是2字节…

SQL Server 数据库常见提权总结

前面总结了linux和Windows的提权方式以及Mysql提权,这篇文章讲讲SQL Server数据库的提权。 目录 基础知识 权限判定 系统数据库 存储过程 常见系统存储过程 常见扩展存储过程 xp_cmdshell扩展存储过程提权 xp_dirtree写入文件提权 sp_oacreate提权 xp_re…

Linux安装redis(基于CentOS系统,Ubuntu也可参考)

前言:本文内容为实操记录,仅供参考! 一、下载并解压Redis 1、执行下面的命令下载redis:wget https://download.redis.io/releases/redis-6.2.6.tar.gz 2、解压redis:tar xzf redis-6.2.6.tar.gz 3、移动redis目录&a…

和数集团董事长唐毅一行参加香港加密峰会

2024年3月26日-27日,和数集团董事长唐毅、UM Company CEO Rubens、QUANTIX CAPITAL风险投资基金CEO Jake一行,参加了亚太地区重要的Web3会议“WOW Summit HongKong 2024”。 UM Company CEO Rubens、和数集团董事长唐毅、QUANTIX CAPITAL风险投资基金 CE…

【Java八股面试系列】中间件-Redis

目录 Redis 什么是Redis Redis解决了什么问题 Redis的实现原理 数据结构 String 常用命令 应用场景 List(列表) 常用命令 应用场景 Hash(哈希) 常用命令 应用场景 set(集合) 常见命令​编辑 应用场景 Sorted Set(有序集合) 常见命令​编辑 应用场景 数据持…

Day46:WEB攻防-注入工具SQLMAPTamper编写指纹修改高权限操作目录架构

目录 数据猜解-库表列数据&字典 权限操作-文件&命令&交互式 提交方法-POST&HEAD&JSON 绕过模块-Tamper脚本-使用&开发 分析拓展-代理&调试&指纹&风险&等级 知识点: 1、注入工具-SQLMAP-常规猜解&字典配置 2、注入…

助力低碳出行 | 基于ACM32 MCU的电动滑板车方案

前言 随着智能科技的快速发展,电动滑板车的驱动系统也得到了长足的发展。国内外的电动滑板车用电机驱动系统分为传统刷式电机和无刷电机两种类型。其中,传统的刷式电机已经逐渐被无刷电机所取代,无刷电机的性能和寿命都更出色,已成…

pandas数据保存与加载

安装操作Excel模拟数据写入编辑读取切片操作 统计 安装 pip install pandas pip install numpyExcel环境安装 pip install xlrd pip install xlwt pip install openpyxi操作Excel import pandas as pd 模拟数据 写入 import pandas as pd# 模拟需要写入的数据 dic{name:[…

【计算机网络篇】数据链路层(4.2)可靠传输的实现机制

文章目录 🍔可靠传输的实现机制⭐停止 - 等待协议🗒️注意 🔎停止 - 等待协议的信道利用率🗃️练习题 ⭐回退N帧协议🎈回退N帧协议的基本工作流程🔎无传输差错的情况🔎超时重传的情况&#x1f5…

大话设计模式之迪米特法则

迪米特法则,也称为最少知识原则(Law of Demeter),是面向对象设计中的一个重要原则,其核心思想是降低耦合度、减少对象之间的依赖关系,从而使系统更加灵活、易于维护和扩展。 根据迪米特法则,一…

【考研数学】线代跟张宇,还是李永乐?

干吗要做选择,你可以全部都要的嘛! 基础阶段选张宇,强化阶段选李永乐,这样搭配可以说是最佳了。 先来说下两位老师各自的特点,张宇老师,讲线代通俗易懂,技巧运用得溜溜的。他的课,…

samba实现linux共享文件夹

一、samba安装 sudo apt install samba 二、配置Samba 编辑Samba配置文件sudo vi /etc/samba/smb.conf 在文件末尾添加以下内容,设置一个简单的共享目录(替换path_to_share为实际的共享目录路径): [Share] path /path_to_sha…

Linux:详解TCP协议段格式

文章目录 认识TCPTCP协议段格式 本篇主要总结的是TCP协议的一些字段 认识TCP TCP协议全称是传输控制协议,也就是说是要对于数据的传输进行一个控制 以上所示的是对于TCP协议进行数据传输的一个理解过程 全双工 至此就可以对于TCP协议是全双工的来进行理解了&…

【计算机图形学】3D Implicit Transporter for Temporally Consistent Keypoint Discovery

对3D Implicit Transporter for Temporally Consistent Keypoint Discovery的简单理解 文章目录 1. 现有方法限制和文章改进2. 方法2.1 寻找时间上一致的3D特征点2.1.1 3D特征Transporter2.1.2 几何隐式解码器2.1.3 损失函数 2.2 使用一致特征点的操纵 1. 现有方法限制和文章改…

[2023] 14届

1.日期统计 题意 1.日期统计 - 蓝桥云课 (lanqiao.cn) 思路 用dfs扫 对每一个位进行限制 花了一个小时 注意把答案枚举出来 对应一下看到底对不对 code #include<iostream> #include<cstdio> #include<stack> #include<vector> #include<al…

VSCode 如何同步显示网页在手机或者平板上

首先要确保 ①电脑上安装了VsCode ②VsCode安装插件LiveServer 安装成功之后 连续按住 Alt L 、Alt O 会跳转到对应的html页面上 http://127.0.0.1:5500/....... 是这个开头的 然后打开网络 如果桌面有网上邻居的可以直接点桌面的网上邻居 进来找到WLAN这个…

为什么我的微信小程序 窗口背景色backgroundColor设置参数 无效的问题处理记录!

当我们在微信小程序 json 中设置 backgroundColor 时&#xff0c;实际在电脑的模拟器中根本看不到效果。 这是因为 backgroundColor 指的窗体背景颜色&#xff0c;而不是页面的背景颜色&#xff0c;即窗体下拉刷新或上拉加载时露出的背景。在电脑的模拟器中是看不到这个动作的…

智能工具管理系统-智能工具柜系统

智能工具管理系统-智能工具柜系统 智能工具可视化管理系统(智工具DW-S308)是依托互3D技术、云计算、大数据、RFID技术、数据库技术、AI、视频分析技术对RFID工具进行统一管理、分析的信息化、智能化、规范化的系统。 一、工具管理现状 东识RFID工具管理系统是一种便捷化的工具…

C# 高级文件操作与异步编程探索(初步)

文章目录 文本文件的读写探秘StreamReader 类深度剖析StreamWriter 类细节解读编码和中文乱码的解决方案 二进制文件的读写BinaryReader 类全面解析BinaryWriter 类深度探讨 异步编程与C#的未来方向同步与异步&#xff1a;本质解读Task 的神奇所在async/await 的魔法 在现代编程…