打印

请问这个问题是否有明确的结论了?

[复制链接]
1954|1
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
xhtwork|  楼主 | 2007-10-6 00:08 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
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:回复旧贴后看不见显示,所以复制到新贴里了。
沙发
浪淘沙| | 2007-10-6 10:50 | 只看该作者

请问这是哪一款芯片?根本不讲清楚是什么芯片,如何尽快

尽管不知你讲的具体是哪一款芯片,但从原理上讲Timeout的标志不是轻易就可以清除的。试想超时之后即使能够清除标志但超时条件依然存在,此时超时中断的功能仍然开启,却因为标志被清除而不产生中断,这样的逻辑本身就是矛盾的。

因此我认为只有两种情况可以清除超时标志:1)保持超时中断功能继续有效,重置超时计数器即可清除超时标志;2)关闭超时中断功能,超时标志自然失效。

使用特权

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

本版积分规则

38

主题

154

帖子

4

粉丝