我正在尝试设置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用户手册(不确定它会持续多久):英飞凌产品网站