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.
尊敬的先生:
我的项目是,如果 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)数据)