STM32 基础系列教程 2 - GPIO 按键输入

前言

学习stm32 GPIO 的使用,实现简单的按键输入功能,用按键的高低来控制LED的亮灭!

 

示例详解

基于硬件平台: STM32F10C8T6最小系统板, MCU 的型号是 STM32F103c8t6, 使用stm32cubemx 工具自动产生的配置工程,使用KEIL5编译代码。将PA0引脚设置成输入引脚,程序得到PA0引脚的(按键操作)输入状态,并根据其输入电平的高低来控制PC13输出,来控制LED,实现按一次LED亮,再按一下,LED灭的功能。

 

STM32 基础系列教程 2 - GPIO 按键输入_第1张图片

 

本示例所用的最小系统板原理图:

STM32 基础系列教程 2 - GPIO 按键输入_第2张图片

 

    1. 新建STM32 CUBEMX 工程,
      1. 双击桌面STM32CubeMX工具

      1. 在CubeMX中菜单中点 File à New Project …

STM32 基础系列教程 2 - GPIO 按键输入_第3张图片

      1. 在新弹出的界面中的搜索框中输入 “stm32f103c8” ,并双击右侧栏中列出的STM32F103C8

STM32 基础系列教程 2 - GPIO 按键输入_第4张图片

 

      1. 弹出如下图所示界面,至此工程创建完成!!接下是就是配置工程:

STM32 基础系列教程 2 - GPIO 按键输入_第5张图片

    1. 配置STM32 CUBEMX 工程
      1. 配置系统伏仿真调试接口, 在System Core 目录下单击SYS选项,将其中的Debug选项选为Serial Wire, 此时PA13 PA14引脚会被占用,配置图如下:

STM32 基础系列教程 2 - GPIO 按键输入_第6张图片

      1. 配置系统时钟源,在System Core 目录下单击RCC选项,将其中的High Speed Clock( HSE )选项选为Crystal/ceramic resona…, 此时PD0 PD1引脚会被占用,配置图如下:

STM32 基础系列教程 2 - GPIO 按键输入_第7张图片

 

      1. 配置GPIO PA0 及 PC13引脚,详细配置如下。

STM32 基础系列教程 2 - GPIO 按键输入_第8张图片STM32 基础系列教程 2 - GPIO 按键输入_第9张图片STM32 基础系列教程 2 - GPIO 按键输入_第10张图片

      1. 配置系统时钟树,将工程界面切换到Clock Configureation 界面,完成如下配置。

STM32 基础系列教程 2 - GPIO 按键输入_第11张图片

      1. 配置代码生成,工程界面切换到Project Manager 界面,在界面左侧单击Project项,将其设置成如下图所示( 设置工程路径在E:\Stm32cubePrj目录,工程名为stm32_key, 开发环境为 MDK-ARM v5 )。

 

STM32 基础系列教程 2 - GPIO 按键输入_第12张图片

在界面左侧单击Code Generator项,将其设置成如下图所示( 只拷贝所需文件到工程,为每个接口生成独立的初始化头文件和源文件,将所有未使用的引脚设为模拟输入)。

STM32 基础系列教程 2 - GPIO 按键输入_第13张图片

 

    1. 生成代码,单击工程界面中”GENERATE TOOL” 开始生成代码,代码生成后弹出是否打开工程对话框,单击“Open Project”打开创建的工程。

 

STM32 基础系列教程 2 - GPIO 按键输入_第14张图片

STM32 基础系列教程 2 - GPIO 按键输入_第15张图片

 

    1. 在代码工程(MDK/keil)中的 main.c 中 man函数中如下红框中代码:

 

STM32 基础系列教程 2 - GPIO 按键输入_第16张图片

    1. 编译工程

STM32 基础系列教程 2 - GPIO 按键输入_第17张图片

    1. 烧录代码,在代码工程中单击“Options for Target” 图标,在弹出的窗口中选中“Debug”页,选择相应的烧录工具(如本示例所用是jlink工具),然后单击右侧“Setting”按钮,将Port 设为“SW”, 最大速度建议不要超过5M(有此仿真调式工具接线过长,可以将最大速度设为100K,这样可以保证烧录成功),

STM32 基础系列教程 2 - GPIO 按键输入_第18张图片

接着选“flash Download”页,勾选“Reset and Run”,并确保其它内容如下图所示:

STM32 基础系列教程 2 - GPIO 按键输入_第19张图片

设置完上述设置后,便可进行下载操作,将调试仿真工具中的与最小系统板连接好,在工程中点Download 按钮,或按F8快捷键进入下载,下载完成后会出现如下图所示提示信息。

STM32 基础系列教程 2 - GPIO 按键输入_第20张图片

    1. 到此,操作GPIO引脚按键功能演示完成,实现了按一下按键(PA0引脚由高变低一次),LED输出PC13状态实现一次反转。

if( HAL_GPIO_ReadPin(GPIOA,GPIO_PIN_0) == GPIO_PIN_RESET )

{

      HAL_Delay(50);  // 按键消抖延时

      if( HAL_GPIO_ReadPin(GPIOA,GPIO_PIN_0) == GPIO_PIN_RESET )

      {

           HAL_GPIO_TogglePin(GPIOC,GPIO_PIN_13);

           // 等待按键释放

           while(HAL_GPIO_ReadPin(GPIOA,GPIO_PIN_0) == GPIO_PIN_RESET);

      }

}

 

 

OK,本期实验完成!下期见!同时如果大家有什么疑问或是有想了解的其它内容,也欢迎大家留言!!最后喜欢这个公众号的同学们记得加关注了,每天都会有技术干货推出!!

 

文中资料下载,在公众号里给十三发消息:

下载|STM32基础系列教程2

STM32 基础系列教程 2 - GPIO 按键输入_第21张图片

 

关注十三公众号

STM32 基础系列教程 2 - GPIO 按键输入_第22张图片

 

 

 

你可能感兴趣的:(嵌入式软件,STM32CUBE,STM32)