问小白 wenxiaobai
资讯
历史
科技
环境与自然
成长
游戏
财经
文学与艺术
美食
健康
家居
文化
情感
汽车
三农
军事
旅行
运动
教育
生活
星座命理

STM32最小系统板按键检测实验详解

创作时间:
作者:
@小白创作中心

STM32最小系统板按键检测实验详解

引用
CSDN
1.
https://m.blog.csdn.net/2401_88862650/article/details/145536480

本文将详细介绍如何使用STM32最小系统板进行按键检测实验。通过本实验,读者将学习到如何配置GPIO引脚、读取按键状态并控制LED灯。实验内容包括硬件连接、软件配置和代码编程,适合初学者入门STM32开发。

实验所需用具

硬件部分

核心设备

  • STM32 最小系统板
  • 它是实验的核心,为整个系统提供计算和控制能力。常见的有 STM32F103C8T6、STM32F407VET6 等不同型号的最小系统板,可根据自己的学习需求和项目要求选择。本实验我使用的是stm32f103c8t6最小系统板
  • 按键模块
  • 用于产生输入信号,以触发相应的程序逻辑。可以使用独立的轻触按键,也可以使用带有多个按键的按键扩展板。轻触按键一般有两脚和四脚之分,四脚的按键稳定性更好。
  • 面包板和杜邦线
  • 面包板:方便搭建实验电路,不需要焊接即可将各个电子元件连接起来,便于快速验证和调试电路。
  • 杜邦线:分为公对公、公对母、母对母三种类型,用于连接 STM32 最小系统板、按键模块以及其他可能用到的外设,实现电气连接。
    辅助设备
  • USB 转串口模块
  • 用于将计算机的 USB 接口转换为串口通信接口,实现计算机与 STM32 最小系统板之间的通信,方便进行程序下载和调试信息的输出。常见的有 CH340、CP2102 等模块。
  • 电源适配器或 USB 线
  • 电源适配器:如果最小系统板需要外接电源,可以使用合适的电源适配器为其供电,要注意电源的电压和电流规格需与最小系统板匹配。
  • USB 线:通过 USB 线可以直接为 STM32 最小系统板供电,同时也能实现与计算机的数据传输。

软件部分

  • 开发环境
  • Keil MDK:一款专业的 ARM 微控制器开发工具,支持多种 ARM 芯片的开发,具有代码编辑、编译、调试等功能,是 STM32 开发中常用的集成开发环境(IDE)。
  • IAR Embedded Workbench:同样是一款功能强大的嵌入式开发工具,提供了高效的编译器和调试器,在嵌入式开发领域也有广泛的应用。
  • STM32 固件库或 HAL 库
  • 固件库:ST 公司提供的一套函数库,封装了 STM32 芯片的底层寄存器操作,方便开发者进行应用程序的开发。
  • HAL 库:即硬件抽象层库,是 ST 公司推出的新一代库函数,提供了更加简洁、易用的 API 接口,降低了开发难度,提高了开发效率。
  • 串口调试助手
  • 用于与 STM32 最小系统板进行串口通信,接收和发送数据,方便调试程序。常见的串口调试助手有串口调试精灵、XCOM 等。

实验原理

原理图
这是它的原理图。当我们松开按钮的时候,两侧的引脚是断开的,当我们按下按钮的时候,左右两边的引脚导通
现在我们将这枚按钮接在单位机的l引脚上。另一端接地,我们把l引脚配置为输入上拉模式
当按钮松开的时候l引脚悬空此时在这个上拉电阻的作用下lO引角上呈现高电平
如果我们去读一下lo引角的值这时候读到的值是1
当你按下的时候,lO引导通过这条线接地,所以引脚上是低电平,如果这时候我们去读取引角的值得到的值是零
所以我们根据IO引脚的值去判断当前按钮的状态

接线注意

最小系统板上有一个LED我们把它叫做板载LED,它连接在单片机的PC13引角上采用的是开漏接法
然后在单片机上随便选一个引角,比如说PA9把按钮接上去
将原理图转化为接线图
这里注意按钮方向,不要接反

编程设置

  1. 打开stm32cubemx
  2. 新建文件+最小系统板型号的选择+最基础的配置
    对引脚进行设置
    因为PC13连接的是板载LED,所以我们把它设置为输出。
    PA9连接的是按钮,所以我们把它设置为输入
    找到左侧GPIO
    对PC13
    对PA9选择上拉电阻

开始编程

分析如何编程

GPIO_PinState HAL_GPIO_ReadPin(GPIOx,GPIO_Pin)  

输入代码完成后先编译代码
确认无误后
下载代码到单片机里

if(HAL_GPIO_ReadPin(GPIOA,GPIO_PIN_9) == GPIO_PIN_SET)
     {
         HAL_GPIO_WritePin(GPIOC,GPIO_PIN_13,GPIO_PIN_SET);
     }
     else
     {
         HAL_GPIO_WritePin(GPIOC,GPIO_PIN_13,GPIO_PIN_RESET);
     }  

完成了

© 2023 北京元石科技有限公司 ◎ 京公网安备 11010802042949号