电子产业一站式赋能平台

PCB联盟网

搜索
查看: 1198|回复: 1
收起左侧

[作业已审核] 4.19 综合案例1按键开关灯

[复制链接]

4

主题

18

帖子

95

积分

一级会员

Rank: 1

积分
95
发表于 2021-4-19 21:13:41 | 显示全部楼层 |阅读模式
一、代码实现流程
打开CubeMx→新建工程→搜索芯片→在右边点击芯片→保存工程→点击RCC配置时钟→设置成Crystal→然后在Clock Configuration中设置为HSE、72→然后点击SYS→在Debug那里选择Senal Wire→然后配置IO口(输入输出还有名字)→然后再GPIO中查看自己所设置的东西→然后在对应位置敲代码
二、代码实现过程总结
①用到按键一班都会涉及消抖还有状态标志位,使用轮询计数可以更好地利用内部资源
②ctrl+k进行所选代码整体注释,Ctrl+shift+k进行整体取消注释
③一定要在系统规定我们写代码的地方写,不然下次生成还得再写一遍
④对于什么时候设置成输入输出,我的理解就是你要用某个引脚控制一个东西,比如说你想控制小灯,那这个引脚就得设置成输出。如果想知道某个引脚是高电平还是低电平,就设置成输入,比如我想知道按键所连的IO口的状态。
⑤对于上拉还是下拉,这是针对于输入而言,输出没有上下拉的概念,按键按下检测到低电平就是上拉输入,按键按下检测到高电平就是下拉输入。
⑥读取或者写入GPIO函数在GPIO库中,而按键名称定义在main.h里面
三、代码
  while (1)
  {
    switch(step)
    {
        case 0:
          {
            if(HAL_GPIO_ReadPin(KEY_GPIO_Port,KEY_Pin)==GPIO_PIN_RESET )//判断按键是否按下
            {
                count++;
               
                if(count>=10000)//真的按下了
                {
                    count = 0;//按键按下也要重新开始
                    //printf("按键按下了\n");
                    step = 1;//标志
                    flag = !flag;//按键标志状态
                }
               
            }
            else//抖动状态
             {
                count = 0;
             }
          }
          break;
         
        case 1:
          {
            if(HAL_GPIO_ReadPin(KEY_GPIO_Port,KEY_Pin)==GPIO_PIN_SET)//判断按键是否释放
            {
                //printf("按键已经释放\n");
                step = 0;
            }
          }
          break;
    }
   
    if(flag==0)
    {
      HAL_GPIO_WritePin(LED1_GPIO_Port, LED1_Pin, GPIO_PIN_RESET);//灯亮
      HAL_GPIO_WritePin(LED0_GPIO_Port, LED0_Pin, GPIO_PIN_RESET);//灯亮
    }
    else
    {
      HAL_GPIO_WritePin(LED1_GPIO_Port, LED1_Pin, GPIO_PIN_SET);//灯灭
      HAL_GPIO_WritePin(LED0_GPIO_Port, LED0_Pin, GPIO_PIN_SET);//灯灭
    }
    /* USER CODE END WHILE */

    /* USER CODE BEGIN 3 */
  }
回复

使用道具 举报

24

主题

355

帖子

1677

积分

版主

Rank: 3Rank: 3

积分
1677
QQ
发表于 2021-4-20 10:17:51 | 显示全部楼层
总结的很细致,不错
回复 支持 反对

使用道具 举报

发表回复

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

本版积分规则


联系客服 关注微信 下载APP 返回顶部 返回列表