发新帖我要提问
12
返回列表
打印
[其他ST产品]

STM32Cube HAL库——GPIO介绍及应用(按键控制灯的闪烁)

[复制链接]
楼主: 自动化陈稳
手机看帖
扫描二维码
随时随地手机跟帖
21
自动化陈稳|  楼主 | 2023-12-27 16:18 | 只看该作者 回帖奖励 |倒序浏览
在gpio.h文件中加入宏定义和函数声明相关代码:#define KEY_ON      1
#define KEY_OFF     0
uint8_t Key_Scan(GPIO_TypeDef *GPIOx,uint16_t GPIO_Pin);

使用特权

评论回复
22
自动化陈稳|  楼主 | 2023-12-27 16:18 | 只看该作者
在main.h文件中的while循环中加入以下代码:          if(Key_Scan(KeyUser_GPIO_Port, KeyUser_Pin)==KEY_OFF)
          {                A = A + 1;

          HAL_Delay(100);
          }

          if(A % 2 == 1)
          {
                  HAL_GPIO_TogglePin(LED1_GPIO_Port,LED1_Pin);//电平跳转
                  HAL_Delay(1000);
          }
          else
          {
                  HAL_GPIO_TogglePin(LED1_GPIO_Port,LED1_Pin);
                  HAL_Delay(300);
          }

使用特权

评论回复
23
自动化陈稳|  楼主 | 2023-12-27 16:18 | 只看该作者
注意这里请在while循环外面单独定义A为一个整数(如:int A=1;)。
运行烧录后,现象为:灯以1秒的频率进行闪烁,按下按键松手后灯以0.3秒的频率进行闪烁,再次按下按键松手后又以1秒的频率闪烁。
(注意:以上两种控制不一样,一种是按下后不松手产生频率变化,一种是按下后松手产生频率变化)

使用特权

评论回复
24
自动化陈稳|  楼主 | 2023-12-27 16:18 | 只看该作者
小结
以上是关于GPIO输入输出的相关介绍和应用实践。GPIO是stm32最基础的内容,初学者只需要了解推挽输出,上拉输入和下拉输入,理解每一句代码就达到GPIO学习的效果了。同样,把LED灯换成其它外设(如蜂鸣器)也是一样的过程。
对于初学者要熟悉使用CubeMX和CubeIDE这两个软件。知道代码在IDE中编写的位置(必须放置在Begin和end之间),如果位置错误,再次生成代码时原有代码将被移除(在本例中,while循环中的语句位置有意错误,你发现了吗?自行调整)。

使用特权

评论回复
25
自动化陈稳|  楼主 | 2023-12-27 16:18 | 只看该作者
    /* USER CODE END WHILE */
    //while循环中代码位置
    /* USER CODE BEGIN 3 */
至此,GPIO输入输出的内容已经讲完。大家一起学习一起进步,希望大家点赞和关注,下期将带来OLED显示屏的内容。

使用特权

评论回复
26
中国龙芯CDX| | 2023-12-28 08:59 | 只看该作者
STM32Cube HAL库还是很容易上手的

使用特权

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

本版积分规则