我将 TM4C1294NCPDT 与 CCS 6.1.2和 TIRTOS 2.16.0.08搭配使用。
在 TM4C1294NCPDT 上、我正在使用 UART0、并希望使用 FIFO 和 IRQ 从 RS232器件接收数据。 在我的测试中、我看到、如果 FIFO 关闭、我每次从 RS232设备获取字符时都可以启用 IRQ 并获得中断。 如果我打开 FIFO、我可以将 FIFO 的级别设置为在生成 IRQ 之前达到的级别。 如果我使用将 FIFO 设置为最低级别
#define UART_FIFO_TX1_8 0x00000000 // 1/8满时的发送中断
我在每个其他字符上都有 IRQ、因此、如果我收到一个奇数或字符、我将不会获得中断来了解如何读取 RS232器件的最后一个字符。
目前、我通过禁用 FIFO 来使其工作、但如果由于任何原因软件在接收到下一个字符之前延迟读取数据、那么禁用 FIFO 会导致缺少字符的风险。
一些代码:
ROM_SysCtlPeripheralEnable (SYSCTL_Periph_UART0);
ROM_SysCtlPeripheralEnable (SYSCTL_Periph_GPIOA);
GPIOPinConfigure (GPIO_PA0_U0RX);
GPIOPinConfigure (GPIO_PA1_U0TX);
ROM_GPIOPinTypeUART (GPIO_Porta_base、GPIO_PIN_0 | GPIO_PIN_1);
ROM_UARTConfigSetExpClk (UART0_BASE、g_ui32SysClock、
EE_prom_rs232GenCfg.baudate、// 19200、//115200、//9600、
(UART_CONFIG_WLEN_8 | UART_CONFIG_STOP_ONE | UART_CONFIG_PAR_NONE);
UARTFIFODisable (UART0_BASE);//如果 FIFO 关闭、这将中断每个字符。
UARTFIFOLevelSet (UART0_BASE、UART_FIFO_TX1_8、UART_FIFO_RX1_8);//如果使用 FIFO、这将每2个字符中断一次。
ERROR_INIT (&EB);
Hwi_Params_init (hwiParams);
myHwi = Hwi_create (INT_UART0_TM4C129、RX232_IrqCallback、&hwiParams、&EB);
UARTIntEnable (UART0_BASE、UART_INT_RX | UART_INT_TX);
我更喜欢使用 IRQ 和 FIFO、并且能够在接收到的每个字符上获得 IRQ。
我缺少什么吗?
谢谢、
道格