蓝桥杯物联网遇见的重大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放一起会接收不到数据:

5、RTC获取到静止时间:

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

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

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

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

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

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

相关文章

基于java+springboot+vue实现的图书借阅系统(文末源码+Lw+ppt)23-328

摘 要 伴随着我国社会的发展,人民生活质量日益提高。于是对系统进行规范而严格是十分有必要的,所以许许多多的信息管理系统应运而生。此时单靠人力应对这些事务就显得有些力不从心了。所以本论文将设计一套“期待相遇”图书借阅系统,帮助商…

citus的快速开始

准备 dockercitus最新版本(docker pull citusdata/citus) docker网络 docker network create --subnet172.72.9.0/24 citus-test docker network ls启动citus服务 启动协调节点 docker run -dit --name citus-cod -p 5433:5432 -e POSTGRES_PASSWOR…

背景减除(1)--bgslibrary Windows编译和使用

入侵监控领域中,在固定场景下,需要检测和监控的入侵物体种类繁多,无法具体穷尽。传统的CV算法提取的特征应用场景有限,无法完成大量物体的监控;深度学习目标检测方法没法收集到无穷无尽的物体种类,因此监督…

MySQL数据库备份及恢复

一、数据库备份的分类 1.1 从物理与逻辑的角度 从物理与逻辑的角度,备份可分为物理备份、逻辑备份 物理备份:对数据库操作系统的物理文件(如数据文件日志文件等)的备份 物理备份方法 冷备份(脱机备份)是在关闭数据库的时候进行的 热备份(联机备份):数…

手撕算法-盛最多水的容器

描述 分析 两个板之间能盛下的水的量,取决于短板。想让两个板之间能盛下更多的水,需要改变短板的长度。就像水桶效应:那么用两个指针指向容器的两个板,然后每次移动较短的板即可。移动较短的板,可能会增大容积&#x…

Linux安装Oracle 11G

一、准备工作: 1、CentOS7自行安装(64位),网络自行配置; 2、下载Oracle安装包:linux.x64_11gR2_database_1of2.zip 和 linux.x64_11gR2_database_2of2.zip ; 3、HostName修改:ora…

ES6学习之路:迭代器Iterator和生成器Generator

迭代器 一、知识背景 什么是迭代器 迭代器就是在一个数据集合中不断取出数据的过程迭代和遍历的区别 遍历是把所有数据都取出迭代器注重的是依次取出数据,它不会在意有多少数据,也不会保证能够取出多少或者能够把数据都取完。比如斐波那契额数列&#…

深入解析Mybatis-Plus框架:简化Java持久层开发(十三)

🍀 前言 博客地址: CSDN:https://blog.csdn.net/powerbiubiu 👋 简介 本章节介绍下Mybatis-Plus框架的逻辑删除功能。 📖 正文 1 逻辑删除介绍 1.1 什么是逻辑删除? 首先我们先来了解下与逻辑删除对应…

面试八股——Redis——分布式锁——Redisson

1.看门狗机制 注意看门狗机制:redisson会监听持有锁的线程,并每隔一段时间(releaseTime/3,默认releaseTime为30s),如果线程还未释放锁的话,会给锁做一次续期。 2. 主从一致性 实际开发中我们会搭建多台redis服务器&a…

pytest+yaml+allure接口自动化测试框架

前言# 现在是2024年,自动化测试,是目前测试行业一项比较普遍的测试技术了,之前的以UI自动化测试为主,现在的以接口自动化测试为主,无论技术更迭,自动化测试总有他的重量,用机器代替手工工作&am…

C语言 青蛙跳台阶问题

1.问题描述 一只青蛙可以一次跳一级台阶,也可以一次跳两级台阶,如果青蛙要跳上n级台阶有多少种跳法? 2.问题分析 当台阶只有一级时,只能跳一级,所以只有一种跳法 当台阶有两级时,可以先跳一级&#xff…

【Flutter学习笔记】10.3 组合实例:TurnBox

参考资料:《Flutter实战第二版》 10.3 组合实例:TurnBox 这里尝试实现一个更为复杂的例子,其能够旋转子组件。Flutter中的RotatedBox可以旋转子组件,但是它有两个缺点: 一是只能将其子节点以90度的倍数旋转二是当旋转…

分治归并问题

“别让自我被拯救~” 谈谈归并与分治 当我们首次接触排序算法时,一定对所谓 "归并"方式排序的算法感到头疼~ 因为,我们难以形象出其不断 "分离"时,各个区域的状态。然而,即便 "归并"排序算法的学习…

哪些行业需要在线制作电子证书系统?

哪些行业需要在线制作电子证书系统? 1、教育机构:学校和培训机构需要为学生和培训者颁发证书,您的系统可以帮助他们快速生成和管理这些证书。 2、企业及政府部门:用于员工培训、资质认证等,提高内部管理效率。 3、专…

【C++】虚拟继承 组合

目录 一、虚拟继承 🌟【非虚拟内存分布】 🌟【虚拟继承内存分布】 🌟【虚拟继承读取】 🌟【练习检验】 🌟【继承的总结和反思】 二、组合 🌟【继承和组合】 🌟【前言回顾】 上一篇文章我们…

GL-15过流继电器 10A、5A 板前接线带附件 JOSEF约瑟

系列型号: GL-11过流继电器; GL-12过流继电器; GL-13过流继电器; GL-14过流继电器; GL-15过流继电器; GL-16过流继电器; GL-17过流继电器; 用途 GL-10系列过流继电器(以下简称继电器)具有反时限特性,应用于电机、变压器等主设备以及输配电系统的继电保…

PLC_博图系列☞P:扫描操作数的信号上升沿

PLC_博图系列☞P:扫描操作数的信号上升沿 文章目录 PLC_博图系列☞P:扫描操作数的信号上升沿背景介绍P:扫描操作数的信号上升沿说明参数示例 关键字: PLC、 西门子、 博图、 Siemens 、 p 背景介绍 这是一篇关于PLC编程的文章…

QT_day3:2024/3/22

作业1:设计界面 使用手动连接,将登录框中的取消按钮使用qt4版本的连接到自定义的槽函数中,在自定义的槽函数中调用关闭函数 将登录按钮使用qt5版本的连接到自定义的槽函数中,在槽函数中判断ui界面上输入的账号是否为"admin…

穿越地心:3D可视化技术带你领略地球内部奇观

在广袤无垠的宇宙中,地球是一颗充满生机与奥秘的蓝色星球。我们每天都生活在这颗星球上,感受着它的温暖与恩赐,却往往忽略了它深邃的内部世界。 想象一下,你能够穿越时空,深入地球的核心,亲眼目睹那些亿万年…

面向低成本巡线机器人的PID控制器优化——文末源码

目录 介绍 测试 电子元器件 系统特征 控制器设计 位置误差的计算 比例控制 积分控制 微分控制 改进的PID控制器 测试轨迹 源码链接 本文对经典PID控制器的改进和开环控制机制的发展进行了讨论,以提高差动轮式机器人的稳定性和鲁棒性。为了部署该算法&am…