at91sam7:中断接收新的字符uart

时间:2014-09-21 16:18:13

标签: c embedded

我尝试使用uart协议接收一个字符但是在收到第一个字符后Receiver Holding Register(RHR)存储它并在读取之后它的值不会改变。但我怎么知道收到一个新角色让它成为之前收到的同一个角色。

我正在使用这个循环:

while((AT91C_BASE_US0->US_CSR & AT91C_US_RXRDY) == AT91C_US_RXRDY) 
buffer=AT91C_BASE_US0->US_RHR;

并且只要条件为true并且接收器没有收到新字符,则缓冲区存储接收到的前一个字符并保持相同,直到接收到新字符并且此过程继续进行并且上...!

1 个答案:

答案 0 :(得分:0)

我得到了答案,我只需要遵循以下条件:

while(!(AT91C_BASE_US0->US_CSR & AT91C_US_RXRDY){}
 buffer=AT91C_BASE_US0->US_RHR;

说明:没有可以使用的中断,我不得不不断检查它们(CSR和RXRDY)两者都变为真时的情况,这表明收到了新字符。 (基本上是手写中断)