打印
[AIROC™ 蓝牙]

【英飞凌CYW20829测评】2、串口控制板载LED

[复制链接]
761|7
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
lulugl|  楼主 | 2024-6-22 13:41 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
在上篇:【英飞凌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的显示。

使用特权

评论回复
沙发
中国龙芯CDX| | 2024-6-27 10:09 | 只看该作者
楼主使用的哪一款IDE?

使用特权

评论回复
板凳
tpgf| | 2024-6-27 16:03 | 只看该作者
上下位的通讯内容如何定义才比较的精简呢

使用特权

评论回复
地板
keaibukelian| | 2024-6-27 16:15 | 只看该作者
板载led的硬件上是如何连接的呢

使用特权

评论回复
5
paotangsan| | 2024-6-27 17:53 | 只看该作者
肉眼可见的led的变化的最小时间间隔是多少呢

使用特权

评论回复
6
heimaojingzhang| | 2024-6-27 19:45 | 只看该作者
如果使用这种字符串的话 我感觉有点浪费串口的资源啊

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

142

主题

690

帖子

8

粉丝