主题中讨论的其他器件:MSPM0G3507
嗨、大家好!
我在 使用 LP-MSPM0G3507评估板时遇到了一些 UART 问题。
为了简化操作、我使用 uart_echo_interrupts_standby 的示例代码来解释我的问题。
我将 uart_echo_interrupts_standby 修改了一点点、以回显接收到的值+1。 例如、用户输入"1"并通过 UART 接收"2"。 该部件运行良好。
问题是我不能在 main()函数中使用接收到的数据。
变量"volatile uint8_t gEchoData "存储通过 UART 接收的数据。 我使用新 变量 gEchoData2 只是为了显示问题。
在行14 gEchoData2 =gEchoData;
现在、我从 PC 端输入任何数据后、我可以看到回波、但 gEchoData2 和 gEchoData 都始终为零、没有改变。
奇怪的是,如果我在第14行设置一个断点,在重新启动后开始,程序总是按预期停止。
我禁用了 断点并从 PC 输入了一些内容、然后 再次启用断点、但 程序不会再停在这里。 此外、如上所述、 gEchoData2和 gEchoData 的变量保持为零。 同时回波仍在工作。 这意味着中断是好的,但无法返回 main ()。
我试图降低优化级别、但没有帮助。
感谢您的任何评论。
莱奥
#include "ti_msp_dl_config.h"
volatile uint8_t gEchoData = 0;
uint8_t gEchoData2 = 0;
int main(void)
{
SYSCFG_DL_init();
NVIC_ClearPendingIRQ(UART_0_INST_INT_IRQN);
NVIC_EnableIRQ(UART_0_INST_INT_IRQN);
DL_SYSCTL_enableSleepOnExit();
while (1) {
gEchoData2 =gEchoData;
//__WFI();
}
}
void UART_0_INST_IRQHandler(void)
{
switch (DL_UART_Main_getPendingInterrupt(UART_0_INST)) {
case DL_UART_MAIN_IIDX_RX:
DL_GPIO_togglePins(GPIO_LEDS_PORT,
GPIO_LEDS_USER_LED_1_PIN | GPIO_LEDS_USER_TEST_PIN);
gEchoData = DL_UART_Main_receiveData(UART_0_INST);
gEchoData++;
DL_UART_Main_transmitData(UART_0_INST, gEchoData);
break;
default:
break;
}
}