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.

[参考译文] SW-EK-TM4C129EXL:TM4C129EXL Launch Pad

Guru**** 2035740 points
请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/983440/sw-ek-tm4c129exl-tm4c129exl-launch-pad

器件型号:SW-EK-TM4C129EXL

尊敬的先生:

我的项目是,如果 UART5模块的 RX5引脚上接收到的字符为‘A’,LED 将亮起,如果接收到的消息为‘B’,LED 将熄灭。 对于任何其他字符、LED 将保持其当前状态。  

但是、当使用此 API (MAP_UARTCharGetNonBlocking (UART0_BASE);)(返回 Int32_t 值)通过 UART 接收字符时、我会遇到问题。 如何获得字符? 我在端子中键入它 、如 A

空 UARTIntHandler (空)

uint32_t ui32Status;
int32_t 数据、a;

//
//获取中断状态。
//
ui32Status = MAP_UARTIntStatus (UART0_BASE、TRUE);

//
//清除已发出的中断。
//
MAP_UARTIntClear (UART0_BASE、ui32Status);

//
//在接收 FIFO 中有字符时循环。
//
while (MAP_UARTCharsAvail (UART0_BASE))

//
//从 UART 读取下一个字符并将其写回 UART。
//
数据= MAP_UARTCharGetNonBlocking (UART0_BASE);

if (a=data)(如果(a==data)

MAP_UARTCharPutNonBlocking (UART0_BASE、
数据);
MAP_GPIOPinWrite (GPIO_PORTN_BASE、GPIO_PIN_0、GPIO_PIN_0);

// map_UARTCharPutNonBlocking (UART0_BASE、
//数据);

//
//闪烁 LED 以显示字符传输正在发生。
//
// map_GPIOPinWrite (GPIO_PORTN_BASE、GPIO_PIN_0、GPIO_PIN_0);


//
//延迟1毫秒。 每个 SysCtlDelay 大约为3个时钟。
//
//SysCtlDelay (g_ui32SysClock /(1000 * 3));

//
//关闭 LED
//
否则为 MAP_GPIOPinWrite (GPIO_PORTN_BASE、GPIO_PIN_0、0);

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好!

      [引用 user="imtiaj Hossain"]我的项目是 UART5模块的 RX5引脚上接收到的字符[/quot]

    您说过要使用 UART5。 但在中断例程代码中、您在任何地方都引用 UART0。  我认为这是问题所在。 请参阅以下代码段。

    数据= MAP_UARTCharGetNonBlocking (UART0_BASE);

    if (a=data)(如果(a==data)

    MAP_UARTCharPutNonBlocking (UART0_BASE
    数据);
    MAP_GPIOPinWrite (GPIO_PORTN_BASE、GPIO_PIN_0、GPIO_PIN_0);

    编辑:

    解决问题 UART0 -> UART5后、您可以屏蔽不需要的位、并在比较之前将拼写错误设置为8位。 另请注意、您应该与'A'进行比较、而不是变量 A  

     如果('a'== data)

     如果('B'==数据)

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的先生:

    实际上、我使用 uart0而不是 uart5。 问题得到解决。  

    谢谢主席先生,

    Imtiaj

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的先生:

    如何将 int32_t 改为8位? 这是什么简单的过程吗?

    请告诉我。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好!

     请尝试如下所示的操作。 "A"是一个8位字符、数据是 uint32_t

     if ('a'==(char) data)(如果('a'==(char) data)

    或  

     if ('a'==(uint8_t)数据)