主题中讨论的其他器件:SysConfig
我正在使用 MSPM0-1304、并且我想知道如何使用 TX 输出引脚 PA23打印到 UART。 我尝试将其打印到超级终端或与之类似的应用。 我要打印的是可以是任意数字的字符串和数字值。 我使用的是 Code Composure Studio Theia。
谢谢!
This thread has been locked.
If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.
我正在使用 MSPM0-1304、并且我想知道如何使用 TX 输出引脚 PA23打印到 UART。 我尝试将其打印到超级终端或与之类似的应用。 我要打印的是可以是任意数字的字符串和数字值。 我使用的是 Code Composure Studio Theia。
谢谢!
您是否尝试过 UARTEcho 示例? 可以帮助您快速入门。
我已经创建了一个简单的字符串打印功能、
您可以使用 sprintf ()来创建字符串-与 MSP430不同的是、MSPM0似乎对 Get 中的 float 有完整的 printf 支持。
我使用一个简单的 SysTick 计时器来实现延迟、您可能只是浪费一些周期。
void StartSerialTX(char *str) { while (TXChar != -1) { // wait for previous tx to finish Delay(10); } strcpy(TXData, str); TXChar = 0; DL_UART_Main_transmitData(UART_0_INST, TXData[TXChar++]); }
void UART_0_INST_IRQHandler(void) { switch (DL_UART_Main_getPendingInterrupt(UART_0_INST)) { case DL_UART_MAIN_IIDX_RX: RXdata = DL_UART_Main_receiveData(UART_0_INST); // DL_UART_Main_transmitData(UART_0_INST, RXdata); break; case DL_UART_MAIN_IIDX_TX: if (TXData[TXChar] != '\0') { DL_UART_Main_transmitData(UART_0_INST, TXData[TXChar++]); } else { TXChar = -1; } break; default: break; } }
#include "ti_msp_dl_config.h" #include "string.h" volatile uint8_t gEchoData = 0; volatile int TXChar = -1; char TXData[64]; void StartSerialTX(char *str) { while (TXChar != -1) { // wait for previous tx to finish delay_cycles(10000); } strcpy(TXData, str); TXChar = 0; DL_UART_Main_transmitData(UART_0_INST, TXData[TXChar++]); } int main(void) { SYSCFG_DL_init(); NVIC_ClearPendingIRQ(UART_0_INST_INT_IRQN); NVIC_EnableIRQ(UART_0_INST_INT_IRQN); DL_SYSCTL_enableSleepOnExit(); char *buf = "g_HEATERNTC = 2011"; StartSerialTX(buf); } void UART_0_INST_IRQHandler(void) { switch (DL_UART_Main_getPendingInterrupt(UART_0_INST)) { case DL_UART_MAIN_IIDX_RX: gEchoData = DL_UART_Main_receiveData(UART_0_INST); break; case DL_UART_MAIN_IIDX_TX: if (TXData[TXChar] != '\0') { DL_UART_Main_transmitData(UART_0_INST, TXData[TXChar++]); } else { TXChar = -1; } break; default: break; } }
您好、 Branden
通过 Github:GitHub - mpaland/printf 中的 tinyprintf 向 int/float 支持添加更多信息
e2e.ti.com/.../TinyPrintf_5F00_uart_5F00_rw_5F00_M0G3507_5F00_nortos_5F00_ticlang.zip
提供演示代码。
此致、
赫利克
这里正在执行多项操作。
一种是需要确保在 syscfg 中启用 UART 发送中断。
另一个是程序的编写方式,它在 main ()的结尾掉下来,并在所有字符被发送前被调试器捕获和停止。 我得到一个"G"。 只需点击"Continue"就会发送其他字符。
要真正修复它,请放入一个无限循环,以便 main ()永远不会退出: