跳转到主内容
Knowledgebase
Home
Renesas Electronics China - Knowledgebase

在UART传输中不考虑一个8位定时器的中断标志是否被设置,无8位的定时器中断发生。为什么?怎么解决?

最新更新:2011年10月 04日

Question:

在 UART 传输中不考虑一个8位定时器的中断标志是否被设置,没有8位的定时器中断发生。
这是为什么?解决方法是什么?

 
[Program]
    do {
    } while (STYF==0);

Answer:

这个问题在于系统一直等待,直到 STIF 被设置时的指令。

这个 do ... while 指令被 BF 指令替代,导致跳转到本身的循环。
另一方面,当访问中断请求标志时,中断保持被挂起状态。
换句话说,当系统正在等待设置 STIF 时,中断保持挂起,没有中断被响应。

在 do { } 中写一条空指令以使在此间隔中断可以被响应。

例如,在程序的开始写
#pragma NOP
并做如下改变。
Suitable Products