C语言 设置 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数据表 **链接已修复

谢谢

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

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

  • 轮询(相对于对UART使用任何中断)
  • 使用中断,
  • 因为它可以工作,但检查串行通信中断中的第一件事是设置了 RI0,如果没有,请立即退出。 (只需确保对此没有任何计时问题,并清除接收标志以确保您没有任何删除字节的可能性。

链接到C509-L用户手册(不确定它会持续多久):英飞凌产品网站

最新更新