[STM32F1] STM32CUBEMX关于按键和LED的实验分享

[复制链接]
474|2
 楼主| 王小琪 发表于 2020-10-22 14:36 | 显示全部楼层 |阅读模式
代码如下,用的STM32CUBEMX做按键控制灯闪烁实验,功能可以实现,有一个地方发出来和大家分享一下。一个是把while判断放在led翻转的前面,一个是把while放在led翻转的后面,结果就是一个现象是我按下的那一刻,led翻转,松开手没反应;一个现象是按下的那一刻没反应,松手才翻转。


  1.     if(KEY2 == GPIO_PIN_RESET)
  2.     {
  3.         HAL_Delay(5);
  4.         if(KEY2 == GPIO_PIN_RESET)
  5.         {
  6.             HAL_GPIO_TogglePin(GPIOB,GPIO_PIN_5);
  7.             while(KEY2 == GPIO_PIN_RESET);
  8.         }
  9.     }
  10.     if(KEY3 == RESET)
  11.     {
  12.         HAL_Delay(5);
  13.         if(KEY3 == RESET)
  14.         {
  15.             while(KEY3 == RESET);
  16.             HAL_GPIO_TogglePin(GPIOB,GPIO_PIN_5);
  17.         }
  18.     }
有两点要注意
1.while(KEY3 == RESET);后面的分号不能去掉。加上分号就说明是阻塞,在while里面空跑。如果去掉分号的话,就变成了在while里面执行翻转了,可能出现的现象就是led非常快的闪烁,快到眼睛都跟不上的那种
2.之所以会出现一个是按下去灯就改变状态,一个是松开才改变状态。原因在于while的位置,while的作用即为“阻塞”,正是因为这个原因才造成了两个不一样的现象。
PS:吐槽下21ic的插入代码,竟然不能用Tab缩进,难受~






isageko 发表于 2020-10-22 17:16 | 显示全部楼层
谢谢分享 之前就试过没加分号出现的问题 以后还是要多注意一些
 楼主| 王小琪 发表于 2020-10-22 17:24 | 显示全部楼层
isageko 发表于 2020-10-22 17:16
谢谢分享 之前就试过没加分号出现的问题 以后还是要多注意一些

这是一些小细节,稍不注意就会被坑
您需要登录后才可以回帖 登录 | 注册

本版积分规则

232

主题

585

帖子

7

粉丝
快速回复 在线客服 返回列表 返回顶部