标题: 关于单片机串口中断的问题 [打印本页]

作者: 无骨狗    时间: 2023-11-19 15:54
标题: 关于单片机串口中断的问题
大佬们,我在出中断程序之前将TI置零了,为什么除了程序后又会继续回到中断程序?我说下想法,是不是出了中断程序后数据才会被发送,这个时候TI就被硬件置1,所以会回到中断程序。那这样的话TI置零不就没意义了吗?想了好久想不清楚,SOS

作者: 电控mmbd    时间: 2023-11-19 19:03
这要具体到用的什么架构品牌型号的单片机啊,看TI应该是51的吧,TI和RI共用的一个中断,如果调用了printf函数,可能还会被软件置位。另外,发送中断是在数据发送完成之后才会产生的,而不是先中断再发送。希望对你有用
作者: ydatou    时间: 2023-11-20 08:47
是不是出了中断程序后数据才会被发送,这个时候TI就被硬件置1

你这想法是错误的。

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


作者: yzwzfyz    时间: 2023-11-20 09:27
1、保证不会再有串行数据收发行为发生,即中断服务退出后,没有新的中断产生了。
2、清除TI不是唯一,还要清除RI。收、发共用一个中断源。
这样就不会再来了。
你清了TI。如果串行发送还在进行,则发送数据拼装完成后,系统会置位TI!
作者: lkc8210    时间: 2023-11-20 11:42
先贴代码




欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1