找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 333|回复: 4
打印 上一主题 下一主题
收起左侧

关于单片机串口中断的问题

[复制链接]
跳转到指定楼层
楼主
ID:1100367 发表于 2023-11-19 15:54 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
大佬们,我在出中断程序之前将TI置零了,为什么除了程序后又会继续回到中断程序?我说下想法,是不是出了中断程序后数据才会被发送,这个时候TI就被硬件置1,所以会回到中断程序。那这样的话TI置零不就没意义了吗?想了好久想不清楚,SOS
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:50694 发表于 2023-11-19 19:03 | 只看该作者
这要具体到用的什么架构品牌型号的单片机啊,看TI应该是51的吧,TI和RI共用的一个中断,如果调用了printf函数,可能还会被软件置位。另外,发送中断是在数据发送完成之后才会产生的,而不是先中断再发送。希望对你有用
回复

使用道具 举报

板凳
ID:1073939 发表于 2023-11-20 08:47 | 只看该作者
是不是出了中断程序后数据才会被发送,这个时候TI就被硬件置1

你这想法是错误的。

TI被硬件置1,表示数据发送完成。
RI被硬件置1,表示有接收数据要处理。
发生了这2种情形会继续回到中断程序。

回复

使用道具 举报

地板
ID:123289 发表于 2023-11-20 09:27 | 只看该作者
1、保证不会再有串行数据收发行为发生,即中断服务退出后,没有新的中断产生了。
2、清除TI不是唯一,还要清除RI。收、发共用一个中断源。
这样就不会再来了。
你清了TI。如果串行发送还在进行,则发送数据拼装完成后,系统会置位TI!
回复

使用道具 举报

5#
ID:161164 发表于 2023-11-20 11:42 | 只看该作者
先贴代码
回复

使用道具 举报

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

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

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