主题中讨论的其他器件: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 ()永远不会退出: