lxy001 发表于 2006-10-28 11:04 ST MCU ←返回版面
楼主: 怎么使用UART_TimeOutIdle中断?
用UART_ItConfig(UART0,UART_TimeOutIdle,ENABLE);启动中断后, Uart0口没有收到任何数据,程序不停的执行UART_TimeOutIdle中断,查看SR中的TimeOutIdle位始终为高,请问怎么清除,如何使用好UART_TimeOutIdle中断。
grant_jx 发表于 2006-10-28 11:19 ST MCU ←返回版面
2楼: Reference Manual
在P249有如下内容:
UARTn_SR(TimeoutIdle) is ‘1’ exactly whenever the RxFIFO is empty and the timeout counter is zero.
The effect of this is that whenever the RxFIFO has got something in it, the timeout counter will decrement until something happens to the RxFIFO. If nothing happens, and the timeout counter reaches zero, the UARTn_SR(TimeoutNotEmpty) flag will be set.
When the software has emptied the RxFIFO, the timeout counter will reset and start decrementing. If no more characters arrive, when the counter reaches zero the UARTn_SR(TimeoutIdle) flag will be set.
UARTn_SR(TimeoutIdle)该位为只读,“超时且非空”?如果中断发生后进入中断将FIFO软件清空结果会不会清该位?在数据手册中暂时没有发现有类似读写组合寄存器的操作可清该标志位的提示。
xhtwork 发表于 2007-10-5 23:54 ST MCU ←返回版面
3楼: 请问这个问题是否有明确的结论了?
参考手册上肯定是没有明确写清楚如何清除timeoutidle中断标志。
只说uart中断标志因为是只读的,必须通过fifo清除。
是复位rxFifo?读rxFifo?读空rxFifo?重置超时的定时? 还有,在什么条件下操作?(接收允许时/不允许时/无关?)
不明白为何资料里不把这样的问题写清楚。
ps:回复旧贴后看不见显示,所以复制到新贴里了。
|