笔记(STM32篇)day6——按键控制

这篇具有很好参考价值的文章主要介绍了笔记(STM32篇)day6——按键控制。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

目录

一、按键硬件图

1、硬件原理

2、输入方式选择

二、功能实现

1、按键GPIO配置

2、按键扫描函数

3、LED翻转宏定义

4、主程序

参考



一、按键硬件图

1、硬件原理

        按键的硬件原理图如图,右侧接3.3V,有电容并联作为硬件消抖,非按下状态时PA0接地为低电平,按下状态时导通接高电平。

stm32按键原理图,STM32基础知识,stm32,单片机,嵌入式硬件

2、输入方式选择

        GPIO端口基本结构如图,共有四种输入类型:模拟输入、浮空输入、上拉输入、下拉输入。

        模拟输入:外部的电压真实的读取到单片机的AD模块,我们既不能闭合上拉和下拉的开关,也不能让信号经过施密特触发器。

        浮空输入:VDD和VSS所在路径的两个开关同时断开,通过施密特触发器读取数字信号,此时没有上拉和下拉的情况,所以当IO口没有接输入的时候,此时的电平会是一个不确定的值,也就是我们所说的浮空。电平会处于一个跳变的状态,一会高,一会低。只有输入了一个高/低电平才会确定下来。因此一般有外部电路时使用浮空输入,比如此次用到的按键电路。

        上拉输入:VDD的开关闭合,VSS的开关断开,没有输入信号时一直读取到高电平。输入高电平,读取仍然是高电平,输入低电平时,由于上拉电阻存在,读取到低电平。好处是输入的电平不会上下浮动而导致输入信号不稳定,没有输入时稳定在高电平。

        下拉输入:VDD的开关断开,VSS的开关闭合,原理与上拉相反,用来读取高电平。好处也是不会受浮动影响,没有输入时稳定在低电平。

stm32按键原理图,STM32基础知识,stm32,单片机,嵌入式硬件

stm32按键原理图,STM32基础知识,stm32,单片机,嵌入式硬件 

二、功能实现

1、按键GPIO配置

        与LED的GPIO配置函数相同,对于按键1对应的PA0口也需要进行GPIO的初始化配置,包括初始化结构体变量、开启RCC对应APB2的时钟、引脚号配置、端口输入输出模式配置、最后调用初始化函数。

void Button_GPIO_Config(void)
{
	GPIO_InitTypeDef GPIO_InitStruct;					//初始化结构体变量
	RCC_APB2PeriphClockCmd(BUTTON_GPIO_CLK, ENABLE);    //RCC时钟使能
	GPIO_InitStruct.GPIO_Pin = BUTTON_GPIO_PIN;			//引脚
	GPIO_InitStruct.GPIO_Mode = GPIO_Mode_IN_FLOATING;  //浮空输入
	GPIO_Init(BUTTON_GPIO_PORT, &GPIO_InitStruct);		//初始化函数调用
}

2、按键扫描函数

        此处用到while函数作为松手检测,按下时PA0为1,不松手则退不出while循环,松手后退出循环返回1。

uint8_t Button_scan(GPIO_TypeDef* GPIOx,uint16_t GPIO_Pin)
{
	if(GPIO_ReadInputDataBit(GPIOx, GPIO_Pin) == KEY_ON)
	{
		//松手检测
		while(GPIO_ReadInputDataBit(GPIOx, GPIO_Pin) == KEY_ON);
		return KEY_ON;
	}
	else return KEY_OFF;
}

3、LED翻转宏定义

        和0异或保持不变,和1异或翻转,因为LED_G_GPIO_PIN的宏定义就是0x0001,利用这点,把ODR和引脚号异或,可以实现翻转操作。

#define LED_G_TOGGLE        {LED_G_GPIO_PORT->ODR ^= LED_G_GPIO_PIN;}

4、主程序

int main(void)
{
	Button_GPIO_Config();
	LED_GPIO_Config();
	GPIO_SetBits(GPIOB, GPIO_Pin_0);
	
	while(1)
	{
		if(Button_scan(BUTTON_GPIO_PORT,BUTTON_GPIO_PIN))
		LED_G_TOGGLE;
	}
}

参考

[野火®]STM32库开发实战指南——基于野火指南者开发板 — [野火]STM32库开发实战指南——基于野火指南者开发板 文档文章来源地址https://www.toymoban.com/news/detail-688701.html

到了这里,关于笔记(STM32篇)day6——按键控制的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • stm32实现按键控制

    目录 一、实现原理: 1.1 按键控制电路分析 二、程序部分: 1.1 按键控制电路分析     可以看见电路上key_up按键连接3.3v,K1、K2、K3下拉接地。按键检测的时候需要配置输入模式。key_up配置下拉输入:在默认状态下,读取的GPIO引脚为低电平,按键按下时,输入变为高电平。

    2024年02月15日
    浏览(35)
  • STM32按键控制LED

    1.利用模块化编程对LED 2.设置LED的几种状态(亮,灭,和利用按键反转电平) 3.按键 (1)按键初始化 (2)如果按键按下做什么(这里是控制LED) 4,主函数

    2024年02月12日
    浏览(33)
  • 【stm32----按键中断实验,按键控制LED灯】

    1、按下KEY1,LED1亮,再次按下KEY1,LED1灭; 2、按下KEY2,LED2亮,再次按下KEY2,LED2灭; 3、按下KEY3,LED3亮,再次按下KEY3,LED3灭; 一、头文件 1、gpio.h 2、key.h 二、初始化函数及功能函数 1、gpio.c 2、key.c 三、中断处理函数 do_irq.c 四、主函数 main.c 依次按下key3、key2、key1、key2

    2024年02月04日
    浏览(40)
  • STM-32:按键控制LED灯 程序详解

    左边是STM322里电路每一个端口均可以配置的电路部分,右边部分是外接设备 电路图。 配置为 上拉输入模式的意思就是,VDD开关闭合,VSS开关断开。 浮空输入模式的意思就是,VDD开关断开,VSS开关断开。 下拉输入模式的意思就是,VDD开关断开,VSS开关闭合。 在 按键控制LE

    2024年02月12日
    浏览(32)
  • stm32按键控制改变pwm占空比

    每次按下按键改变TIM_Setcompare函数中占空比值即可。 相关io口,占空比调节级数,是否支持连按根据自己需要自行修改。 main.c #include \\\"delay.h\\\" #include \\\"sys.h\\\" #include \\\"pwm.h\\\" #include \\\"stm32f10x_tim.h\\\" #include \\\"key.h\\\" int t=50;//占空比 void key_function(void)  {  static u8 key = 0;  key = KEY_Scan(0); if(key

    2024年02月08日
    浏览(35)
  • STM32 按键控制的灯亮或灭

    目录 1.STM32CubeMX的配置 2.轮询模式下的控制(代码) 3.上电烧录摁下复位键,摁下按键1 ,亮红灯,摁下按键2,亮绿灯,摁下按键3,亮蓝灯 1.STM32CubeMX的配置 按原理图去设置引脚状态  GPIO输入模式读取按键状态,输出模式控制灯的状态  右键进行重命名按键分别为,KEY1,KEY

    2024年02月07日
    浏览(28)
  • stm32按键控制LED灯亮灭(中断法)

    用按键控制STM32上的LED灯亮灭,可以采用轮询法和中断法。轮询法需要不断检测按键的状态,消耗MCU;而中断法只是在按下的那一刻触发中断,控制灯亮灭。轮询法相对于更常规,容易操作。因此我们这里讲的用中断法。关于中断的概述,这里不作介绍,只讲操作,分析代码

    2024年02月07日
    浏览(43)
  • STM32之通过按键控制LED灯亮灭

    之前我们已经实现了LED灯的亮灭,我们对LED灯的结构应该有一个大致的了解。接下来我们对按键控制led进行学习。 首先我们要了解一下按键的结构。按键结构如图。  由此可知,此处我们有两种按键,一种是普通的按键KEY0, KEY1(KEY2),他们连接的串口分别是PE4, PE3(PE2),对应

    2024年02月08日
    浏览(35)
  • STM32控制矩阵按键,HAL库,cubeMX配置

    我使用的是STM32F103RCT6这款单片机,HAL库,使用cubeMX配置。 使用矩阵按键实现功能的方法为轮询法 1.首先矩阵键盘原理图如下: 2.实物图 按照矩阵键盘接法,16个按键需要8个io口,我选择了PC口的0~7号引脚,前四个依次接矩阵键盘的行,后四个依次接矩阵键盘的列;矩阵键盘的

    2023年04月17日
    浏览(52)
  • STM32速成笔记—按键检测

    🎀 文章作者:二土电子 🌸 关注文末公众号获取其他资料和工程文件! 🐸 期待大家一起学习交流! 按键检测原理比较简单,按键按下和不按下,其连接引脚的电平是不一样的,按键检测正是通过检测按键引脚的电平变化来实现的。比如按键未按下时引脚电平为高电平,按

    2024年02月08日
    浏览(35)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包