SYD8811串口全双工自动回传测试问题和解决办法[卡死在发送函数的while中]

本文主要是介绍SYD8811串口全双工自动回传测试问题和解决办法[卡死在发送函数的while中],希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

原来串口中断的写法如下:
在这里插入图片描述
这里接收到数据的时候填充进buff中:
在这里插入图片描述
然后主循环中发送出去:
在这里插入图片描述
在这里插入图片描述
现在测试到上面的代码一段时间后就不会自动回复了:
在这里插入图片描述
现在修改中断的逻辑如下:
在这里插入图片描述
这时候长时间测试串口都是有回复的,所以一定要先读数据再清除标志位!
本文源码请从如下地址下载:https://download.csdn.net/download/chengdong1314/87105011

卡死在发送函数的while中

经过上面的修改依旧会存在长时间老化测试卡死在发送函数的while中,这个现象应该是硬件在某种是否不会设置TI标志位,造成软件卡死

void uart_1_write(uint8_t data)
{UART_1_CTRL->TX_DATA = data;while(UART_1_CTRL->TI == 0);UART_1_CTRL->TI = 0;
}

按照如下方式增加超时发送自动退出的功能:

void uart_1_write(uint8_t data)
{uint32_t j=0x10000;UART_1_CTRL->TX_DATA = data;//while(UART_1_CTRL->TI == 0);while((UART_1_CTRL->TI == 0) && j) j--;UART_1_CTRL->TI = 0;
}

由于不是硬件设置的标志位,所以担心会造成数据丢失,所以这里做了这样的老化测试,定时100MS串口发送一个数据给SYD8811然后SYD8811把数据原封不动的返回.经过一个晚上,65万个数据包的交互,可以判断如上面加超时推出的方式并不会影响数据的发送,也就是说硬件已经发送出去了但是没有回来设置标志位:
在这里插入图片描述
在这里插入图片描述
代码和数据请看如下资源(串口数据:老化测试一晚上2022_11_23_13-03-40.DAT):https://download.csdn.net/download/chengdong1314/87141120

这篇关于SYD8811串口全双工自动回传测试问题和解决办法[卡死在发送函数的while中]的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/252937

相关文章

IDEA自动生成注释模板的配置教程

《IDEA自动生成注释模板的配置教程》本文介绍了如何在IntelliJIDEA中配置类和方法的注释模板,包括自动生成项目名称、包名、日期和时间等内容,以及如何定制参数和返回值的注释格式,需要的朋友可以... 目录项目场景配置方法类注释模板定义类开头的注释步骤类注释效果方法注释模板定义方法开头的注释步骤方法注

Python运行中频繁出现Restart提示的解决办法

《Python运行中频繁出现Restart提示的解决办法》在编程的世界里,遇到各种奇怪的问题是家常便饭,但是,当你的Python程序在运行过程中频繁出现“Restart”提示时,这可能不仅仅是令人头疼... 目录问题描述代码示例无限循环递归调用内存泄漏解决方案1. 检查代码逻辑无限循环递归调用内存泄漏2.

pytorch自动求梯度autograd的实现

《pytorch自动求梯度autograd的实现》autograd是一个自动微分引擎,它可以自动计算张量的梯度,本文主要介绍了pytorch自动求梯度autograd的实现,具有一定的参考价值,感兴趣... autograd是pytorch构建神经网络的核心。在 PyTorch 中,结合以下代码例子,当你

如何解决idea的Module:‘:app‘platform‘android-32‘not found.问题

《如何解决idea的Module:‘:app‘platform‘android-32‘notfound.问题》:本文主要介绍如何解决idea的Module:‘:app‘platform‘andr... 目录idea的Module:‘:app‘pwww.chinasem.cnlatform‘android-32

Python如何自动生成环境依赖包requirements

《Python如何自动生成环境依赖包requirements》:本文主要介绍Python如何自动生成环境依赖包requirements问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑... 目录生成当前 python 环境 安装的所有依赖包1、命令2、常见问题只生成当前 项目 的所有依赖包1、

kali linux 无法登录root的问题及解决方法

《kalilinux无法登录root的问题及解决方法》:本文主要介绍kalilinux无法登录root的问题及解决方法,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,... 目录kali linux 无法登录root1、问题描述1.1、本地登录root1.2、ssh远程登录root2、

shell编程之函数与数组的使用详解

《shell编程之函数与数组的使用详解》:本文主要介绍shell编程之函数与数组的使用,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录shell函数函数的用法俩个数求和系统资源监控并报警函数函数变量的作用范围函数的参数递归函数shell数组获取数组的长度读取某下的

SpringBoot应用中出现的Full GC问题的场景与解决

《SpringBoot应用中出现的FullGC问题的场景与解决》这篇文章主要为大家详细介绍了SpringBoot应用中出现的FullGC问题的场景与解决方法,文中的示例代码讲解详细,感兴趣的小伙伴可... 目录Full GC的原理与触发条件原理触发条件对Spring Boot应用的影响示例代码优化建议结论F

MySQL高级查询之JOIN、子查询、窗口函数实际案例

《MySQL高级查询之JOIN、子查询、窗口函数实际案例》:本文主要介绍MySQL高级查询之JOIN、子查询、窗口函数实际案例的相关资料,JOIN用于多表关联查询,子查询用于数据筛选和过滤,窗口函... 目录前言1. JOIN(连接查询)1.1 内连接(INNER JOIN)1.2 左连接(LEFT JOI

MySQL 中查询 VARCHAR 类型 JSON 数据的问题记录

《MySQL中查询VARCHAR类型JSON数据的问题记录》在数据库设计中,有时我们会将JSON数据存储在VARCHAR或TEXT类型字段中,本文将详细介绍如何在MySQL中有效查询存储为V... 目录一、问题背景二、mysql jsON 函数2.1 常用 JSON 函数三、查询示例3.1 基本查询3.2