stm32l4 外部中断按键会卡死_STM32Cube04 | 使用GPIO扫描检测按键

本文介绍了如何使用STM32CubeMX配置STM32L4开发板的GPIO为输入,用于按键检测。通过选择芯片型号、配置时钟源、设置GPIO引脚并生成MDK工程,然后在MDK中编写代码实现按键控制LED灯亮灭。最后,预告将介绍外部中断的NVIC配置。
摘要由CSDN通过智能技术生成
bf27e9591b6505fe8099f98711e4f9c6.png 更多精彩~点击上面“蓝字”关注我们呀  3a9c0218da3365b71f4b4d4f5f78b35b.png

寻求更好的阅读体验,请点击阅读原文移步:Mculover666的个人博客。

1. 准备工作

硬件准备

首先需要准备一个开发板,这里我准备的是STM32L4的开发板(BearPi):

ac4bc77725667e0265b16e641db58446.png

软件准备

需要安装好Keil - MDK及芯片对应的包,以便编译和下载生成的代码。

2.生成MDK工程 — 初始化GPIO为输入

选择芯片型号

打开STM32CubeMX,打开MCU选择器:

0bce6e8d574c8b97a820df6dbed33ef4.png

搜索并选中芯片 STM32L431RCT6:
dc1c339e064d5739c2c32d1da6ae0ecd.png

配置时钟源

  • 如果选择使用外部高速时钟(HSE),则需要在System Core中配置RCC;

  • 如果使用默认内部时钟(HSI),这一步可以略过;

这里我都使用外部时钟:

d79637a476f72da441ab53e34202df0f.png

配置LED的GPIO引脚

查看小熊派开发板的原理图,如下:

8e2a334bb14e3c15f87522ac31395cac.png
mark

所以接下来我们选择配置PC13引脚:

f8da1b65a241af230fddea723bb30ac3.png
mark

设置用户标签为LED:
68e7281a898a0439cb457a718ac12462.png
mark

配置按键的GPIO引脚

在原理图上如下:

686ec4c6a5972553493095022c4881d2.png
=

所以接下来我们选择配置 PB2引脚和 PB3引脚:
a21a87aa49d99f402c64b44e3a1fb31c.png

因为没有设置硬件上拉,所以我们配置开启上拉电阻,并设置用户标签为 KEY1KEY2
fe85da4b3b7e4b874b9d4475b8cfae29.png

配置时钟树

STM32L4的最高主频到80M,所以配置PLL,最后使HCLK = 80Mhz即可:

3e1657e7ef6368c937f151652c3403ca.png

生成工程设置

6ef2c9a89e05d6d8aa5d601eb8079eff.png

代码生成设置

最后设置生成独立的初始化文件:

1f61703e6b52add8090d54a5e97b9868.png

生成代码

点击GENERATE CODE即可生成MDK-V5工程:

e4a6258ffe63cb0a95cdf701590814bd.png

3. 在MDK中编写、编译、下载用户代码

main.c中的main函数中编写简单的用户代码:

int main(void){

  HAL_Init();

  SystemClock_Config();

  MX_GPIO_Init();

  while (1)
  {
    /* USER CODE BEGIN 3 */
        if(0 == HAL_GPIO_ReadPin(KEY1_GPIO_Port, KEY1_Pin))
        {
            HAL_GPIO_WritePin(LED_GPIO_Port,LED_Pin,GPIO_PIN_SET);
        }
        if(0 == HAL_GPIO_ReadPin(KEY2_GPIO_Port, KEY2_Pin))
        {
            HAL_GPIO_WritePin(LED_GPIO_Port,LED_Pin,GPIO_PIN_RESET);
        }
  }
  /* USER CODE END 3 */
}

然后编译整个工程:

1298ff9ed021a31a5b8d7ff417cb8bcd.png

最后进行下载设置:
1bad98ec0a868f0bc54f260cac30adde.png
4ae932564f02829300b2c5f850595b5f.png

最后点击下载即可:
aff05796242334cf88259693b39223c8.png

实验现象如下:
  • 上电复位时LED处于熄灭状态;

  • 按下KEY1,LED点亮;

  • 按下KEY2,LED熄灭;

    1284eac599f7f065191d508b47fca6bd.png

至此,我们已经学会了如何使用STM32CubeMX快速生成MDK的工程,以及如何使用 STM32CubeMX初始化GPIO进行按键检测,下一节讲述如何配置NVIC使用外部中断检测按键。

9e4068f5c649cd748bbb0312bec5fee1.gif
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值