EDA365电子论坛网
标题:
【问题解答】串口收发控制LED的亮灭,代码怎么写?
[打印本页]
作者:
leo539
时间:
2022-5-17 00:48
标题:
【问题解答】串口收发控制LED的亮灭,代码怎么写?
本帖最后由 jacky401 于 2022-11-28 11:03 编辑
请教老师们,从QCOM发送命令“LED_ON”,则PC13所控LED点亮; 发送命令“LED_OFF”,则PC13所控LED熄灭。
这个代码应该怎么写,找不到思路
用串口发送10位字节的代码改可以吗,大概知道用HAL GPIO Writen函数点亮灯,但怎么检测判断输入的字符LED_ON和LED_OFF,检测的时候要输出打印语句吗?
作者:
芦根苏木
时间:
2022-5-17 09:06
需要打印语句的
作者:
jacky401
时间:
2022-5-18 13:25
本帖最后由 jacky401 于 2022-5-18 13:30 编辑
可参考如下代码:
printf("\r\n *** weclome to Elec-Nest! ***\r\n");
printf("请发送命令 LED_ON 或 LED_OFF: \r\n");
HAL_UART_Transmit(&huart2,(uint8_t *)"32372E3036362E30",16,0xff); //发送模拟数据
while(__HAL_UART_GET_FLAG(&huart2,UART_FLAG_TC)!=SET); //等待发送结束
printf("\r\n"); //掺入换行
HAL_Delay(1000);
if(USART2_RX_STA&0x8000)
{
len = USART2_RX_STA&0x3FFF; //得到此次接收到的数据长度
printf("\r\n 你发送的命令是: \r\n");
HAL_UART_Transmit(&huart2,(uint8_t *)USART2_RX_BUF,len,0xff); //接收到的数据
while(__HAL_UART_GET_FLAG(&huart2,UART_FLAG_TC)!=SET); //等待发送结束
printf("\r\n"); //掺入换行
USART2_RX_STA=0;
if(strcmp((const char*)USART2_RX_BUF, "LED_ON") == 0)
{
HAL_GPIO_WritePin(GPIOC, GPIO_PIN_13, GPIO_PIN_SET);
}
else if(strcmp(USART2_RX_BUF, "LED_OFF") == 0)
{
HAL_GPIO_WritePin(GPIOC, GPIO_PIN_13, GPIO_PIN_RESET);
}
}
复制代码
欢迎光临 EDA365电子论坛网 (https://bbs.eda365.com/)
Powered by Discuz! X3.2