在上篇:【英飞凌CYW20829测评】1、开发环境建立 - 英飞凌MCU技术论坛 - 21ic电子技术开**坛
在其工程基础之上,添加串口接收与LED交互。
1、新建一个接收字符串数组,用于存放接到的数据
//添加接收buff长度
#define RECVE_MAX_LEN 64
//添加接收缓冲区
char recv_buff[RECVE_MAX_LEN] = {0};
uint8_t recv_cnt = 0;
2、声明两个字符串,用于命令的判断
const char blinkoff[] = "LEDBLINKSTOP";
const char blinkon[] = "LEDBLINKSTART";
3、每接收一个字符,判断是否为结束符,如果不是,将接收的字符串放于缓冲区:
if(recv_cnt >= RECVE_MAX_LEN)
{
recv_cnt = 0;
}
recv_buff[recv_cnt] = uart_read_value;
recv_cnt++;
4、如果接收到的回车符,则进行命令判断,判断后清空缓冲区,并把计数器归零。
if (uart_read_value == '\n' || uart_read_value == '\r' )
{
printf("recv cmd:%s\r\n",recv_buff);
if (0 == strcmp(recv_buff,blinkoff))
{
cyhal_timer_stop(&led_blink_timer);
printf("LED blinking paused \r\n");
}
else if(0 == strcmp(recv_buff,blinkon))
{
cyhal_timer_start(&led_blink_timer);
printf("LED blinking start\r\n");
}
printf("recv cmd:%s\r\n",recv_buff);
memset(recv_buff,0,RECVE_MAX_LEN);
recv_cnt = 0;
【实验现象】
发送停止与开始命令,从串口返回相应的指令,并同时更新LED的显示。
|