设置UART中断以在接收到字符时触发

时间:2012-11-20 21:12:46

标签: c interrupt uart

我正在尝试设置UART中断,以便在UART屏幕上输入字符时触发。事情是我设置它的方式似乎中断在发送和接收时触发。我已经阅读了数据表,并没有真正说明是否可以完成以及如何完成。它只是说串口的中断是可用的。 这就是我设置uart的方式

S0CON   =   0x50;      
PCON    |=  0x80;       /* Double Baud rate */
ADCON0  |=  0x80;       /* Use baudrate generator */
S0RELL  =   0xCC;       /* Baudrate = 9614 Baud @ 16Mhz */
S0RELH  =   0x03;
TI0     =   1;                /* Ready to transmit */
ES0 =1;

有没有人可能知道如何实现这一目标? 我正在使用Keil编译器和英飞凌C509 Datasheet **链接已修复

谢谢

1 个答案:

答案 0 :(得分:1)

不幸的是,看起来你不能干净利落地做你想做的事。查看用户手册 - 数据表通常不足以解决此类问题 - 请参见图7.4。由硬件为通道0,TI0和RI0设置的发送和接收中断标志都触发默认的串行通信中断,并且看起来不会被禁用。

可能还有其他选择,但我会考虑以下其中一项:

  • 轮询(与使用UART的任何中断相比)
  • 在你工作的时候使用中断,但是先检查串口通信中断是否设置了RI0,如果不是,请立即退出。 (只需确保没有任何与此有关的时序问题并清除接收标志以确保您没有任何丢弃字节的可能性。)

链接到C509-L用户手册(不确定它会持续多久):Infineon product site