你好。 我计划 在 Launchpad 中的项目中实施 UART。 使用 SDK 中 cc13x2_cc26x2的可用 driverlib。 我打算使用禁用 FIFO 的标准 UART 设置(这是一个小问题、因为只有一个用于 TX 和 Rx 数据的寄存器、UART DR)、我尝试传输单个测试字节、它起作用。
//*****************************************************************************
//
// Waits to send a character from the specified port
//
//*****************************************************************************
void
UARTCharPut(uint32_t ui32Base, uint8_t ui8Data)
{
// Check the arguments.
ASSERT(UARTBaseValid(ui32Base));
// Wait until space is available.
while(HWREG(ui32Base + UART_O_FR) & UART_FR_TXFF)
{
}
// Send the char.
HWREG(ui32Base + UART_O_DR) = ui8Data;
}
我还尝试了 Rx 端、每500ms 定期发送一个字节、但未接收到任何数据。 标志会被置为有效一次、但在 DR 寄存器中仍然无法读取任何数据、之后在下一次迭代中会在 while 循环中捕获到该数据。
//*****************************************************************************
//
// Waits for a character from the specified port
//
//*****************************************************************************
int32_t
UARTCharGet(uint32_t ui32Base)
{
// Check the arguments.
ASSERT(UARTBaseValid(ui32Base));
// Wait until a char is available.
while(HWREG(ui32Base + UART_O_FR) & UART_FR_RXFE)
{
}
// Now get the character.
return(HWREG(ui32Base + UART_O_DR));
}
我尝试启用 Rx 中断来识别读取 DR 寄存器的确切时间(TX 中断正常工作)。 但是、当中断启用时、程序会突然进入中断处理程序、而不会产生任何屏蔽中断。 我是否错过了任何设置、或者实施时是否出错? 感谢你的帮助
电源 我不打算使用任何 RTOS