在上篇:【英飞凌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的显示。
|