STM32的按键实验工程

一、按键输入的原理

我们能使用按键能做很多事,比如说按键控制LED的亮灭,这是最简单的,但是我们可以写一个通用的工程,作为底层驱动。

  • 按键的原理图

    在这里插入图片描述
    相对应的引脚
    KEY0 ------------>PE4
    KEY1 ------------>PE3
    LED0 ------------>PB5
  • 按键的原理

    按键相对的引脚,在这儿我举个例子,就拿PE3引脚来说,按键另一端是地GND,所以我们设置引脚属性为上拉,让芯片快速读取,我们采用一个按键扫描函数,我们定时读取PE3引脚的电平,这样我们就得到了按键是否按下了。
  • 按键的消抖

    在这里插入图片描述
    当按键按下的时候会受到抖动,我们可以采用短暂的延时程序进行消抖,约等10ms的时间,延时完就再做一次判断,看看按键是否真的按下。

二、按键的代码

1.代码工程整合

新建BSP文件夹,新建LED文件夹,BEEP文件夹,KEY文件夹

下面的是主函数的代码
代码如下(示例):

#include "stm32f10x.h"
#include "delay.h"
#include "led.h"
#include "key.h"

int main(void)
 {	
	 u8 key;
	 LED_Init();
	 delay_init();
	 KEY_Init();
  while(1)
	{
		key=Key_Scan();	
		if(key==1)
		{
			LED0_ON;
		}
		else if(key==2)
		{
			LED0_OFF;
		}
	}
 }

LED的.c文件
代码如下:

#include "led.h"

//初始化PB5和PE5为输出口.并使能这两个口的时钟		    
//LED IO初始化
void LED_Init(void)
{
 
 GPIO_InitTypeDef  GPIO_InitStructure;
 	
 RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB|RCC_APB2Periph_GPIOE, ENABLE);	 //使能PE口时钟
	
 GPIO_InitStructure.GPIO_Pin = GPIO_Pin_5;				 //LED0-->PB.5 端口配置
 GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; 		 //推挽输出
 GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;		 //IO口速度为50MHz
 GPIO_Init(GPIOB, &GPIO_InitStructure);					 //根据设定参数初始化GPIOB.5
 GPIO_SetBits(GPIOB,GPIO_Pin_5);						 //PB.5 输出高
}
 

key.c文件内容

#include "stm32f10x.h"
#include "key.h"
#include "delay.h"

//按键初始化函数
void KEY_Init(void) //IO初始化
{ 
 	GPIO_InitTypeDef GPIO_InitStructure;
 
 	RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOE,ENABLE);//使能PORTA,PORTE时钟

	GPIO_InitStructure.GPIO_Pin  = GPIO_Pin_4|GPIO_Pin_3;//KEY0-KEY1
	GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU; //设置成上拉输入
 	GPIO_Init(GPIOE, &GPIO_InitStructure);//初始化GPIOE4,3
}

//按键扫描函数
//如果KEY0按下返回值是1
//KEY1按下返回值是2
u8 Key_Scan(void)
{
	if(GPIO_ReadInputDataBit(GPIOE,GPIO_Pin_4)==0)
	{
		delay_ms(10);
		if(GPIO_ReadInputDataBit(GPIOE,GPIO_Pin_4)==0)
		{
				return 1;
		}
	}
	/
	if(GPIO_ReadInputDataBit(GPIOE,GPIO_Pin_3)==0)
	{
		delay_ms(10);
		if(GPIO_ReadInputDataBit(GPIOE,GPIO_Pin_3)==0)
		{
			return 2;
		}
	}
	return 0;
}


总结

实验结果为
在这里插入图片描述
在这里插入图片描述
![在这里插入图片描述](https://img-blog.csdnimg.cn/ebc4eeb3919e4150a74354222a243b07.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBA6YeR5Y2O5Y2D6L-56JC956u5,size_19,color_FFFFFF,t_70,g_se,x_16#pic_center

在这里插入图片描述

在这里插入图片描述

相关的代码资料在 这儿:
链接:https://pan.baidu.com/s/1QoglZk_x7LWhG3tjULhMRg
提取码:y8by

### 回答1: 好的,下面是proteus仿真stm32按键实验的回复: 首先,我们需要在proteus中添加stm32的模型和按键模型。然后,将按键连接到stm32的GPIO引上。接下来,我们需要编写stm32的程序,使其能够检测按键的状态,并根据按键的状态控制LED的亮灭。最后,我们可以在proteus中运行仿真,测试按键实验的效果。 具体的步骤和代码实现可以参考以下链接: https://www.jianshu.com/p/9b1f3d3a3d3c 希望对您有帮助! ### 回答2: Proteus是一款十分强大的电子仿真软件,可以进行各种模拟电路的设计、分析和验证。在STM32按键实验中,我们可以使用Proteus来模拟按键的输入和输出。 首先,我们需要将STM32的开发板和按键模块添加到Proteus中。在Proteus的库中,可以找到STM32F407VG开发板和按键模块。将它们拖入工作区,并进行连接。 接下来,我们需要进行编程,定义按键的输入和输出。通过STM32的GPIO口,我们可以将按键的输入连接到相应的输入引上,将LED的输出连接到输出引上。在编程时,需要定义输入引和输出引的状态,根据按键的状态来控制LED的亮灭。 在编程完成后,进行仿真测试。在Proteus中,可以使用虚拟示波器来观测输入引和输出引的状态变化。同时,也可以通过LED的亮灭来验证按键操作是否正确。 总的来说,Proteus仿真STM32按键实验可以帮助我们更好地了解STM32的工作原理和使用方法,同时也可以避免实验过程中出现的电路短路等意外情况,确保实验的安全性和准确性。 ### 回答3: Proteus是一款功能强大的电路仿真软件,能够模拟各种电路元件的工作情况。其中,STM32是一款高性能的微控制器,有着广泛的应用领域。本文将介绍如何在Proteus中仿真STM32按键实验。 首先,我们需要在Proteus中添加STM32F4系列微控制器模块。在Proteus主界面中,点击右上角的“P”图标,打开元件库管理器窗口。在搜索框中输入“STM32F4”,选择合适的型号,将其拖入电路图中。接着,需要添加按键元件。同样,在元件库管理器中搜索“按键”或其他相关关键词,选择适合的元件,拖入电路图中。 接下来,需要将按键STM32进行连接。在Proteus中,我们可以使用虚拟接口来模拟实际的硬件接口。选择STM32微控制器,进入属性窗口,找到相应的引,并分别连接到按键的两个接口上,如图所示。 完成连接之后,可以编写相应的程序代码,并将其烧录到STM32芯片中。在Proteus中,可以使用Keil软件对程序进行编译和烧录。启动Keil,选择STM32F4系列的芯片型号,创建新工程,编写程序代码,编译生成HEX文件,再将其烧录到Proteus中的STM32芯片中。 最后,点击Proteus界面中的“运行”按钮,即可开始仿真。此时,可以手动按下连接到STM32按键,观察程序是否正常运行、LED是否点亮等情况。如果存在问题,可以对程序代码进行调试和修改,反复测试,直到程序正常运行为止。 总之,使用Proteus进行STM32按键实验,可以使我们更方便地学习和掌握STM32的工作原理和应用方法,提高自己的电路设计和调试能力。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值