野火电子论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 1323|回复: 2

新人求解答-面试问题

[复制链接]
发表于 2024-5-9 15:24:27 | 显示全部楼层 |阅读模式
如何避免在中断里面执行长时间的操作
串口通信的时候怎么避免丢包的情况
串口通信为什么不可以一次发送1000bit或者10000bit 也就是说一帧数据为 一位起始位 10000bit数据位 一位停止位 (面试官说在物理层面会出现什么问题 假设不会丢包)


回复

使用道具 举报

发表于 2024-5-14 15:32:00 | 显示全部楼层
1.长时间操作,可以在主函数通过全局变量作为标志位的方法,在中断中只操作标志位和一些必要操作,将时间较长的操作通过主函数读取标志位后进行操作.
2.增加软件中的响应机制,a发送数据后,b返回一组数据表示收到数据,同时也可以在数据前加入数据包编号,同时响应数据加上这个编号,如果无响应或是数据包编号错误,进行重新发送.

3.因为UART是通过时间定时读取RX上数据,如果一直连续发送,两端因为晶振,工作频率等,定时会存在误差,例如一个a端定时1us发送1bit数据,b端1.01us接收一个数据,连续通讯会导致误差累积,当误差超过1bit的发送时间后,数据便乱掉了.而通讯一段数据后停止,重新发送起始位,相当于两端重新对时,这样就会消除这个误差.

回复 支持 1 反对 0

使用道具 举报

 楼主| 发表于 2024-6-14 16:22:51 | 显示全部楼层
Nalimca 发表于 2024-5-14 15:32
1.长时间操作,可以在主函数通过全局变量作为标志位的方法,在中断中只操作标志位和一些必要操作,将时间较长 ...

感谢大佬
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

联系站长|手机版|野火电子官网|野火淘宝店铺|野火电子论坛 ( 粤ICP备14069197号 ) 大学生ARM嵌入式2群

GMT+8, 2024-11-23 01:30 , Processed in 0.095244 second(s), 24 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表