搜索
ST MCU Finder
安装免费手机应用,
寻找理想的ST MCU

[开发工具] STM32CubeMX_04 | 使用GPIO进行按键检测

[复制链接]
239|22
 楼主 | 2020-3-29 18:37 | 显示全部楼层 |阅读模式
本篇文章主要介绍如何使用STM32CubeMX初始化STM32L431RCT6的GPIO,并扫描检测按键。

使用特权

评论回复
 楼主 | 2020-3-29 18:38 | 显示全部楼层
1. 准备工作
硬件准备
开发板
首先需要准备一个开发板,这里我准备的是STM32L4的开发板(BearPi):
397525e807a9734d49.png

使用特权

评论回复
 楼主 | 2020-3-29 18:38 | 显示全部楼层
软件准备
需要安装好Keil - MDK及芯片对应的包,以便编译和下载生成的代码;

Keil MDK和串口助手Serial Port Utility 的安装包都可以在文末关注公众号获取,回复关键字获取相应的安装包:
906325e807abbd94ce.png

使用特权

评论回复
 楼主 | 2020-3-29 18:39 | 显示全部楼层
2.生成MDK工程
选择芯片型号
打开STM32CubeMX,打开MCU选择器:
437415e807adb4d125.png
搜索并选中芯片STM32L431RCT6:
337455e807aee8c58f.png

使用特权

评论回复
 楼主 | 2020-3-29 18:40 | 显示全部楼层
配置时钟源
如果选择使用外部高速时钟(HSE),则需要在System Core中配置RCC;
如果使用默认内部时钟(HSI),这一步可以略过;
这里我都使用外部时钟:
15775e807b0caa813.png

使用特权

评论回复
 楼主 | 2020-3-29 18:40 | 显示全部楼层
配置LED的GPIO引脚
查看小熊派开发板的原理图,如下:
430135e807b26e17e5.png

使用特权

评论回复
 楼主 | 2020-3-29 18:41 | 显示全部楼层
所以接下来我们选择配置PC13引脚:

256255e807b4dc2f2d.png

使用特权

评论回复
 楼主 | 2020-3-29 18:41 | 显示全部楼层
设置用户标签为LED:

646695e807b6e3e01f.png

使用特权

评论回复
 楼主 | 2020-3-29 18:42 | 显示全部楼层
给PC13引脚设置一个user_label:

613895e807b8dd23bd.png

使用特权

评论回复
 楼主 | 2020-3-29 18:43 | 显示全部楼层
这里给PC13引脚添加一个user_label后,cubemx软件会在main.h文件中添加一个宏定义,如图,我们可以使用LED_GPIO_Port, LED_Pin来表示这个引脚,提高了程序的可移植性。如果没有该user_label,就需要使用GPIOC,GPIO_PIN_13 来表示这个引脚。

747885e807bb49f647.png

使用特权

评论回复
 楼主 | 2020-3-29 18:43 | 显示全部楼层
配置按键的GPIO引脚
查看小熊派开发板的原理图,如下:
218065e807bd235803.png

使用特权

评论回复
 楼主 | 2020-3-29 18:44 | 显示全部楼层
所以接下来我们选择配置PB2引脚和PB3引脚:

54545e807bfdb6576.png

使用特权

评论回复
 楼主 | 2020-3-29 18:44 | 显示全部楼层
因为没有设置硬件上拉,所以我们配置开启上拉电阻,并设置用户标签为KEY1和KEY2:

694905e807c19c4e8d.png

使用特权

评论回复
 楼主 | 2020-3-29 18:45 | 显示全部楼层
配置时钟树
STM32L4的最高主频到80M,所以配置PLL,最后使HCLK = 80Mhz即可:

16155e807c3c3331b.png

使用特权

评论回复
 楼主 | 2020-3-29 18:46 | 显示全部楼层
生成工程设置

4055e807c6488962.png

使用特权

评论回复
 楼主 | 2020-3-29 18:46 | 显示全部楼层
代码生成设置
最后设置生成独立的初始化文件:

742485e807c82c909e.png

使用特权

评论回复
 楼主 | 2020-3-29 18:47 | 显示全部楼层
生成代码
点击GENERATE CODE即可生成MDK-V5工程:

400845e807ca3176f4.png

使用特权

评论回复
 楼主 | 2020-3-29 18:47 | 显示全部楼层
3. 在MDK中编写、编译、下载用户代码
编写用户代码
进入MDK-ARM目录,打开工程,在main.c中的main函数中编写简单的用户代码:

  1. int main(void)
  2. {

  3.   HAL_Init();

  4.   SystemClock_Config();

  5.   MX_GPIO_Init();

  6.   while (1)
  7.   {
  8.     /* USER CODE BEGIN 3 */
  9.         if(0 == HAL_GPIO_ReadPin(KEY1_GPIO_Port, KEY1_Pin))
  10.         {
  11.             HAL_GPIO_WritePin(LED_GPIO_Port,LED_Pin,GPIO_PIN_SET);
  12.         }
  13.         if(0 == HAL_GPIO_ReadPin(KEY2_GPIO_Port, KEY2_Pin))
  14.         {
  15.             HAL_GPIO_WritePin(LED_GPIO_Port,LED_Pin,GPIO_PIN_RESET);
  16.         }
  17.   }
  18.   /* USER CODE END 3 */
  19. }
复制代码

使用特权

评论回复
 楼主 | 2020-3-29 18:48 | 显示全部楼层
编译代码
编译整个工程:

105465e807ce730bfb.png

使用特权

评论回复
 楼主 | 2020-3-29 18:48 | 显示全部楼层
设置下载器

315995e807d06c141f.png

350435e807d11a405d.png

使用特权

评论回复
扫描二维码,随时随地手机跟帖
您需要登录后才可以回帖 登录 | 注册

本版积分规则

我要发帖 投诉建议 创建版块 申请版主

快速回复

您需要登录后才可以回帖
登录 | 注册
高级模式

论坛热帖

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