11

单片机基础——使用GPIO扫描检测按键

 4 years ago
source link: http://www.cnblogs.com/YuchuanHuaying/p/12492714.html
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

1. 准备工作

硬件准备

开发板

首先需要准备一个小熊派IoT开发板,并通过USB线与电脑连接。

MvM7ri7.png!web

软件准备

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

2.生成MDK工程

选择芯片型号

打开STM32CubeMX,打开MCU选择器:

rARVVbz.png!web

搜索并选中芯片 STM32L431RCT6 :

AZbMZvN.png!web

配置时钟源

  • 如果选择使用外部高速时钟(HSE),则需要在System Core中配置RCC;
  • 如果使用默认内部时钟(HSI),这一步可以略过;

这里我都使用外部时钟:

2MnA3iQ.png!web

配置LED的GPIO引脚

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

ANJFVfv.png!web

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

2mEBBrR.png!web

设置用户标签为LED:

7VBBziZ.png!web

配置按键的GPIO引脚

查看原理图,确定控制按键引脚,这里我们的F1按键接的是PB2,F2按键接的是PB3。

2yUzQjb.png!web

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

EVBZ3ij.png!web

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

f67vYbf.png!web

配置时钟树

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

6NJveuy.png!web

生成工程设置

bUVv6bb.png!web

代码生成设置

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

z6nyaaj.png!web

生成代码

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

7vm2uuv.png!web

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

编写用户代码

打开MDK工程,在main.c中的main函数中编写简单的用户代码,这里的代码意思为:一直循环读取按键引脚的电平,当读取到F1按键引脚为低电平时,LED灯引脚输出高电平;当读取到F2按键引脚为低电平时,LED灯引脚输出低电平,所以当按下KEY1,LED点亮,按下KEY2,LED熄灭。

 1 int main(void)
 2 {
 3 
 4   HAL_Init();
 5 
 6   SystemClock_Config();
 7 
 8   MX_GPIO_Init();
 9 
10   while (1)
11   {
12     /* USER CODE BEGIN 3 */
13         if(0 == HAL_GPIO_ReadPin(KEY1_GPIO_Port, KEY1_Pin))
14         {
15             HAL_GPIO_WritePin(LED_GPIO_Port,LED_Pin,GPIO_PIN_SET);
16         }
17         if(0 == HAL_GPIO_ReadPin(KEY2_GPIO_Port, KEY2_Pin))
18         {
19             HAL_GPIO_WritePin(LED_GPIO_Port,LED_Pin,GPIO_PIN_RESET);
20         }
21   }
22   /* USER CODE END 3 */
23 }

编译代码

点击如图所示的按钮编译工程

MZZrYrR.png!web

编译成功

QNji6n2.png!web

设置下载器

点击如图所示按钮打开设置页面

yui2q2m.png!web

进行下载设置,选择“ST-Link Debugger”,并点击“Settings”。

QNFra2B.png!web

在“Flash Download”菜单下勾选“Reset and Run”选项,已达到烧录程序后单片机自动复位并运行程序的目的。

aaU7vqr.png!web

下载运行

点击"LOAD"按钮即可烧录代码到单片机中。

UVRR3uQ.png!web

烧录成功

FziIruj.png!web

实验现象

下载运行后,实验现象如下:

  • 上电复位时LED处于熄灭状态;
  • 按下KEY1,LED点亮;
  • 按下KEY2,LED熄灭;

jm2uaye.png!web

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


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK