野火电子论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 8063|回复: 2

请教火哥,跟着视频做串口通信控制RGB,但是有一段代码想不通

[复制链接]
发表于 2017-12-15 11:04:21 | 显示全部楼层 |阅读模式
本帖最后由 initial 于 2017-12-15 11:06 编辑

火哥,我跟着视频学习通过串口发指令来控制RBG灯的颜色,程序基本上能理解了,但是有一个小问题想不明白,想请教一下火哥。我的问题就是这个死循环里面不是有一个  printf语句吗,为什么可以我发给单片机一个指令,然后单片机发上来一个,而单片机不会一直执行  printf来向上位机发送数据。难道是getchar接收到一次数据之后,会自动清除,然后printf这个函数就不能执行了吗?请火哥指点一下。
  1.   while(1)
  2.   {        
  3.     /* 获取字符指令 */
  4.     ch=getchar();
  5.     printf("接收到字符:%c\n",ch);
  6.    
  7.     /* 根据字符指令控制RGB彩灯颜色 */
  8.     switch(ch)
  9.     {
  10.       case '1':
  11.         LED_RED;
  12.       break;
  13.       case '2':
  14.         LED_GREEN;
  15.       break;
  16.       case '3':
  17.         LED_BLUE;
  18.       break;
  19.       case '4':
  20.         LED_YELLOW;
  21.       break;
  22.       case '5':
  23.         LED_PURPLE;
  24.       break;
  25.       case '6':
  26.         LED_CYAN;
  27.       break;
  28.       case '7':
  29.         LED_WHITE;
  30.       break;
  31.       case '8':
  32.         LED_RGBOFF;
  33.       break;
  34.       default:
  35.         /* 如果不是指定指令字符,打印提示信息 */
  36.         Show_Message();
  37.         break;      
  38.     }   
复制代码

回复

使用道具 举报

发表于 2017-12-15 14:40:18 | 显示全部楼层
getchar(); 应该是这个函数里有个死循环,我不收到串口信息我就不返回。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-12-17 11:04:58 | 显示全部楼层
wqy_1000 发表于 2017-12-15 14:40
getchar(); 应该是这个函数里有个死循环,我不收到串口信息我就不返回。

嗯嗯,好的,谢谢,这样就理解了
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-5-31 22:06 , Processed in 0.035265 second(s), 23 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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