无法读取 UART 数据
Cannot Read UART data
我想做的很简单,从 UART 读取 ASCII 数据。我正在使用 NXP kl27 并使用 Kinetis 1.2.0。我有一个 GPS(tx 引脚)连接到引脚 PTD2,并将该引脚配置为 UART2_Rx。
PORT_HAL_SetMuxMode(PORTD,2u,kPortMuxAlt3); //UART2_Rx
PORT_HAL_SetMuxMode(PORTE,22u,kPortMuxAlt4); //UART2_Tx (unused)
UART对象配置如下:
uart_user_config_t g_uartConfig= {
.baudRate = 9600u,
.parityMode = kUartParityDisabled,
.stopBitCount = kUartOneStopBit,
.bitCountPerChar = kUart8BitsPerChar,
};
最后,这是我用来尝试接收 UART 数据的代码:
uart_state_t g_uartState;
UART_DRV_Init(2u, &g_uartState, &g_uartConfig);
uint8_t rxChar
// Uart #, return data, data count, timeout in miliseconds
UART_DRV_ReceiveDataBlocking(2u, &rxChar, 1u,1000u);
问题是UART_DRV_RecieveDataBlocking从来没有returns。
如果有帮助的话,这里是原理图的相关部分:
我试过的
- 我确认GPS正在输出数据
- 我已确认 PTD2 引脚确实已连接并正在接收数据(感谢示波器)
- 用pin PTE22发送串口数据,看看是不是串口对象的问题。数据发送成功。
- 正在使用 GDB 进行调试。这很快变成了一个兔子洞,过了一会儿我就放弃了。我发现的是,在 fsl_uart_hal.c (line 325)
中调用 UART_SET_C3 之后,代码会在调试器中永远等待
- 正在更改配置对象(更改 parityMode)。
据我所知,我正在关注我看到的每一个 example/demo 读取 UART 数据。如果有人对正在发生的事情有任何想法,我很想听听。
确实是软件问题。我的 cmakeLists 文件缺少这个:
"${ProjDirPath}/KSDK_1.2.0/platform/drivers/src/uart/fsl_uart_irq.c"
此文件正确设置了 UART 中断。
我想做的很简单,从 UART 读取 ASCII 数据。我正在使用 NXP kl27 并使用 Kinetis 1.2.0。我有一个 GPS(tx 引脚)连接到引脚 PTD2,并将该引脚配置为 UART2_Rx。
PORT_HAL_SetMuxMode(PORTD,2u,kPortMuxAlt3); //UART2_Rx
PORT_HAL_SetMuxMode(PORTE,22u,kPortMuxAlt4); //UART2_Tx (unused)
UART对象配置如下:
uart_user_config_t g_uartConfig= {
.baudRate = 9600u,
.parityMode = kUartParityDisabled,
.stopBitCount = kUartOneStopBit,
.bitCountPerChar = kUart8BitsPerChar,
};
最后,这是我用来尝试接收 UART 数据的代码:
uart_state_t g_uartState;
UART_DRV_Init(2u, &g_uartState, &g_uartConfig);
uint8_t rxChar
// Uart #, return data, data count, timeout in miliseconds
UART_DRV_ReceiveDataBlocking(2u, &rxChar, 1u,1000u);
问题是UART_DRV_RecieveDataBlocking从来没有returns。
如果有帮助的话,这里是原理图的相关部分:
我试过的
- 我确认GPS正在输出数据
- 我已确认 PTD2 引脚确实已连接并正在接收数据(感谢示波器)
- 用pin PTE22发送串口数据,看看是不是串口对象的问题。数据发送成功。
- 正在使用 GDB 进行调试。这很快变成了一个兔子洞,过了一会儿我就放弃了。我发现的是,在 fsl_uart_hal.c (line 325) 中调用 UART_SET_C3 之后,代码会在调试器中永远等待
- 正在更改配置对象(更改 parityMode)。
据我所知,我正在关注我看到的每一个 example/demo 读取 UART 数据。如果有人对正在发生的事情有任何想法,我很想听听。
确实是软件问题。我的 cmakeLists 文件缺少这个:
"${ProjDirPath}/KSDK_1.2.0/platform/drivers/src/uart/fsl_uart_irq.c"
此文件正确设置了 UART 中断。