打印
[STM32L0]

都来说说stm32串口空闲中断

[复制链接]
25686|26
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
最近做一个项目,想用串口空闲中断,最后发现根本进不去!甚是迷惑:
1.串口空闲中断,所说“空闲”指的是什么? 空闲帧?还是什么?
2.一般空闲中断是用在接收中。是否可用在发送完后,通过空闲中断进接收呢?
大伙都来说说!求各位大牛指教
沙发
lanmp| | 2014-5-8 17:17 | 只看该作者
没用过STM32,不过一般这种都是缓冲区发完提示可以继续发的意思吧

使用特权

评论回复
板凳
luofeng2g|  楼主 | 2014-5-9 08:15 | 只看该作者
lanmp 发表于 2014-5-8 17:17
没用过STM32,不过一般这种都是缓冲区发完提示可以继续发的意思吧

你说的这个不是发送完成中断?

使用特权

评论回复
地板
witant| | 2014-5-9 14:27 | 只看该作者
IDLE line detection中断和你说的发送完成之后的产生的中断
stm32f1xx单片机的数据手册中说USART有9种中断事件,咱们常用的有两个:
1.TXE(Transmit data register empty),单字节数据发完了
2.RXNE(Received data ready to be read),接收缓存区有数据
IDLE中断没用过,不过大概是串口连接成总线形式时候用的一种中断(猜测),并不是没接收到数据产生的中断。
手册中提到了在Mute mode下当检测到Idle frame会被唤醒(It wakes up when an Idle frame is detected)
所以Idle应该指楼主所说的“空闲帧”
不太理解“发送完后,通过空闲中断进接收”的意思,接收到数据时用接收中断(RXNE)就可以。

使用特权

评论回复
5
luofeng2g|  楼主 | 2014-5-9 16:08 | 只看该作者
witant 发表于 2014-5-9 14:27
IDLE line detection中断和你说的发送完成之后的产生的中断
stm32f1xx单片机的数据手册中说USART有9种中断 ...

因为用的是485通信,主机发送一帧之后,从机应答。所以,就是上面所说的,发送完后,在空闲中断中进入接受(主机)。

使用特权

评论回复
6
witant| | 2014-5-9 16:59 | 只看该作者
luofeng2g 发表于 2014-5-9 16:08
因为用的是485通信,主机发送一帧之后,从机应答。所以,就是上面所说的,发送完后,在空闲中断中进入接 ...

一帧数据发送完成后判断TXE标志就可以,发送寄存器为空就说名最后一个字节发送完成了。
这时切换485方向控制引脚就可以,没必要使用中断。

使用特权

评论回复
7
luofeng2g|  楼主 | 2014-5-10 08:23 | 只看该作者
witant 发表于 2014-5-9 16:59
一帧数据发送完成后判断TXE标志就可以,发送寄存器为空就说名最后一个字节发送完成了。
这时切换485方向 ...

嗯,目前是这么做的!只是现在想弄懂空闲中断到底该怎么用?。。。该怎么进入?

使用特权

评论回复
8
john_lee| | 2014-5-10 10:20 | 只看该作者
空闲中断与“发送”无关。

使用特权

评论回复
9
限量_个性。| | 2014-5-10 10:44 | 只看该作者
总线空闲中断是在检测到在接收数据后,数据总线上一个字节的时间内,没有再接到数据后发生。也就是RXNE位被置位之后,才开始检测,只被置位一次,除非再次检测到RXNE位被置位,然后才开始检测下一次的总线空闲。

使用特权

评论回复
10
限量_个性。| | 2014-5-10 10:45 | 只看该作者
完美的处理方式应该是总线空闲+DMA接收数据

使用特权

评论回复
11
luofeng2g|  楼主 | 2014-5-10 12:42 | 只看该作者
限量_个性。 发表于 2014-5-10 10:45
完美的处理方式应该是总线空闲+DMA接收数据

谢谢版主,也谢谢楼上各位的回复。原来是这个样子的!那版主有没有这方面的例子啊,参考参考

使用特权

评论回复
12
john_lee| | 2014-5-10 20:41 | 只看该作者
问度娘,会让你满意的。

使用特权

评论回复
13
hwl1023| | 2014-5-19 23:12 | 只看该作者
串口的发送总线空闲+DMA的确很好用。

使用特权

评论回复
14
okhuojia| | 2014-5-20 10:41 | 只看该作者
空闲很有用吗?

使用特权

评论回复
15
hnjylijunz| | 2015-8-10 15:19 | 只看该作者

我的理解不是知道师傅正确高手指点一二?

使用特权

评论回复
16
huangqi412| | 2015-8-12 21:30 | 只看该作者
接收停顿超过一字节时间  认为桢收完

使用特权

评论回复
17
我是土匪| | 2015-9-28 17:08 | 只看该作者
huangqi412 发表于 2015-8-12 21:30
接收停顿超过一字节时间  认为桢收完

这样接收不定长的串口数据,还是很方便的。

使用特权

评论回复
18
springvirus| | 2015-12-15 14:59 | 只看该作者
现在已进入串口1空闲中断,查DMA1->ISR的值为0x00 07 50 00,通道5的传输完成也置位,但是DMA指定的buffer里没有值啊,另外是否进入空闲中断,就认为DMA接收到数了?

使用特权

评论回复
19
Harvard| | 2016-4-18 10:43 | 只看该作者
mark一下 ARM单片机和8位MCU的区别一下子就出来了

使用特权

评论回复
20
liyang477| | 2016-7-11 10:56 | 只看该作者
springvirus 发表于 2015-12-15 14:59
现在已进入串口1空闲中断,查DMA1->ISR的值为0x00 07 50 00,通道5的传输完成也置位,但是DMA指定的buffer ...

怎样就进入空闲中断了,我这里还迷茫着呢,帮助解释一下,谢谢

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

24

主题

824

帖子

5

粉丝