野火电子论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 7048|回复: 4

whlie循环中串口通讯只执行一次

[复制链接]
发表于 2022-3-20 21:52:02 | 显示全部楼层 |阅读模式
while(1)
        {       
    /* 获取字符指令 */
    ch=getchar();
    printf("接收到字符:%c\n",ch);

    /* 根据字符指令控制RGB彩灯颜色 */
    switch(ch)
    {
      case '1':
        LED_RED;
      break;
      case '2':
        LED_GREEN;
      break;
      case '3':
        LED_BLUE;
      break;
      case '4':
        LED_YELLOW;
      break;
      case '5':
        LED_PURPLE;
      break;
      case '6':
        LED_CYAN;
      break;
      case '7':
        LED_WHITE;
      break;
      case '8':
        LED_RGBOFF;
      break;
      default:
        /* 如果不是指定指令字符,打印提示信息 */
        Show_Message();
        break;      
    }   
        }       
在while语句中,printf("接收到字符:%c\n",ch)为什么仅在串口发送数据时或者数据改变时才执行一次。
野火论坛202203202148548502..png
串口通讯2.jpg
回复

使用道具 举报

发表于 2022-3-21 08:22:35 | 显示全部楼层
因为getchar是阻塞式的,程序停在那了,你可以看看你重定向的getchar
回复 支持 反对

使用道具 举报

 楼主| 发表于 2022-3-21 10:42:43 | 显示全部楼层
a5820736 发表于 2022-3-21 08:22
因为getchar是阻塞式的,程序停在那了,你可以看看你重定向的getchar

感谢您的答复,那么日常使用怎么避免这种阻塞呢
回复 支持 反对

使用道具 举报

发表于 2022-3-21 11:17:01 | 显示全部楼层
本帖最后由 zkx182 于 2022-3-21 11:19 编辑

好像只能修改你的getchar了
回复 支持 反对

使用道具 举报

发表于 2022-3-21 12:19:43 | 显示全部楼层
正常嵌入式程序不会有getchar这种应用场景的
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

联系站长|手机版|野火电子官网|野火淘宝店铺|野火电子论坛 ( 粤ICP备14069197号 ) 大学生ARM嵌入式2群

GMT+8, 2024-11-24 02:54 , Processed in 0.044433 second(s), 26 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表