Other Parts Discussed in Thread: MSPM0G3519
器件型号: MSPM0-SDK
主题: MSPM0G3519 中讨论的其他器件
我使用的是 mspm0g3519 和 SDK mspm0_sdk_2_10_00_04
如果您的 UART RX 引脚为低电平(可能来自另一台机器尚未通电的外部电缆)、则 SDK DL_UART_transmitDataBlocking () 传输调用将永远卡住。 它使用 DL_UART_isBusy () 作为忙检查、但这可以通过接收位的开头来设置。
被接收数据繁忙所阻止的发送功能从根本上是错误的。
看看 driverlib、这项繁忙检查自始至终都在使用。 它可能会阻止 UART 初始化、或者在检测到开始接收时阻止调用正常工作。
我只修补了阻塞传输问题、但几乎所有 UART 功能都有这个问题。
~~~μ s
//请注意、TI driverlib 函数 DL_UART_isBusy () 具有欺骗性、会报告正在进行的 TX 和 RX
//我认为低电平 RX 引脚将“启动“一位、并报告忙。
//它不应用于传输
void Fixed_DL_UART_transmitDataBlocking (UART_Regs *UART、uint8_t DATA)
{
while (DL_UART_isTXFIFOFull (UART)){
};
DL_UART_transmitData (UART、DATA);
//这是我能找到的唯一与 TX 相关的忙标志
while(!DL_UART_isTXFIFOEmpty (UART)){
};
//请注意、它可能仍在发送最后一个字节!
}
~~~μ s