完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
电子发烧友论坛|
已经通过中断方式发送数据
|
|
|
|
|
|
发送不要用中断。。
|
|
|
|
|
|
为什么不能用中断,如果不用中断,还要等待数据发送完再继续处理接下来的程序,不是很浪费时间吗
|
|
|
|
|
|
|
|
|
|
|
|
发送没有必要用中断,多此一举。
第一次发送的时候,送数据到寄存器就完事了;然后下一次发送数据之前,检查上一次的是否发送完成,没有那么久等,如果发送完成就将本次需要发送的数据送寄存器。 对于楼主的问题可以设计一个小通信协议:发送任何一个字符串的时候,都要求以rn结尾,或者是以 这样的非ASCII可显示字符结尾。接收端接收到数据时,先存放到一个数组中暂存;然后不断检测是否连续收到了rn,如果是的话就认为当前的这个字符串接收完成,可以通过全局变量给其他程序一个信号,告诉他们我串口接收这里已经完整地接收到了一个字符串了。 |
|
|
|
|
|
在实际的工程实用中,发送接收必须用中断
|
|
|
|
|
|
1、很多UART都是半双工通信,也就是说,它的发送和接收都是用的同一条信道。
2、由第1条可知,发送和接收是不允许同时进行的。如果主机和从机同时嚷嚷,结果只能是谁也听不到对方说什么。。。 3、所以我们通常会人工切换UART的状态,令其处于发送或者接收状态,以免收发撞车。 4、如果你是主机,而且是硬件UART,通常的做法是将发送动作在主程序中完成,然后设定一个发送完中断,当消息发送完成后,就会激活这个中断。在这个中断程序里,你将UART状态切换为接收,然后返回主程序,一边干活一边等从机的消息。 5、从机消息发过来,主机接收完了,会触发一个接收完中断。在这个中断当中,你又把UART状态切换为发送(也可以等发送的时候再切),然后干点消息处理的活,完事就可以回主程序了。回到主程序之后,等待下一次主动发送就好了。 6、如果你是用IO脚软件模拟的UART,那就要注意一下收发周期的问题了,特别是有看门狗的,要记得喂狗,要不狗会拆家。。。 |
|
|
|
|
只有小组成员才能发言,加入小组>>
2043 浏览 0 评论
imx6ull 和 lan8742 工作起来不正常, ping 老是丢包
4791 浏览 0 评论
4273 浏览 9 评论
3861 浏览 16 评论
4433 浏览 1 评论
4261浏览 3评论
3435浏览 0评论
1202浏览 0评论
2888浏览 0评论
3952浏览 0评论
/9
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2025-12-14 08:12 , Processed in 0.820035 second(s), Total 88, Slave 68 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191

淘帖
29062