标题:
stm32 idle中断处理
[打印本页]
作者:
chenjienwei678
时间:
2016-10-26 10:13
标题:
stm32 idle中断处理
请注意IDLE中断是只检测到空闲帧时产生的中断。
而空闲帧的定义是:被视为完全由“1"组成的一个完整的数据帧,后面
跟着包含?数据的下一帧的开始位
。
关键是后面半句话,要求有
下一帧的开始位
,而你的情况恰巧没有下一帧的开始位(传输已经结束),当然不会有中断了。
举例:
如果连续发送一串字符串“123”会发生空闲中断吗?
不会,因为没有下一帧的开始位。
如果进了空闲中断不手动清零,会一直进入空闲中断。
所以用这个IDLEIE来结束DMA方式的接收,是合适的。唯一一个不合适的地方是:如果你发送一个字符串后,将DMA设置好接收传输方式,然后:对方没响应,你一个字符也收不到,这时候,IDLEIE是不会来的,必须有个总超时检测来结束DMA接收方式:因为IDLEIE中断必须要有字符串收到,然后有一个字符的时间没收下一个字符的起始位,才会发生。
另外,1个字符间隔的空闲就结束接收:是默认任何对方发送字节的间隔不大于1个字符间隔,是不符合Modbus-RTU协议的,RTU协议是3.5个字符时间,如果收到"a"后,停了2个字符时间,又收到"b",Modbus-RTU还是认为ab是同一帧的连续字符。
详解:
http://www.51hei.com/bbs/dpj-39885-1.html
作者:
sun664019227
时间:
2020-12-15 10:24
Modbus-RTU的情况,该如何使用这个空闲中断???
作者:
单片机爱好者223
时间:
2021-7-14 22:15
数据的下一帧的开始位? 这一句好像不需要吧??
欢迎光临 (http://www.51hei.com/bbs/)
Powered by Discuz! X3.1