首页 > 其他分享 >STM32笔记(3) 按键驱动

STM32笔记(3) 按键驱动

时间:2023-07-13 10:34:51浏览次数:37  
标签:Delay 20 val KEY3 IDR 笔记 STM32 按键

include "key.h"

define KEY1 (GPIOA->IDR & (0X1<<0))

define KEY2 (GPIOC->IDR & (0X1<<4))

define KEY3 (GPIOC->IDR & (0X1<<5))

define KEY4 (GPIOC->IDR & (0X1<<6))

void KEY_Config(void)//key1 按键
{
//1.开启时钟
RCC->APB2ENR &= ~(1<<2);//清零
RCC->APB2ENR |= (1<<2);//致1

  RCC->APB2ENR &= ~(1<<4);//清零 PC4
	RCC->APB2ENR |= (1<<4);//致1

//2.配置io 0100
GPIOA->CRL &= ~(0xf<<0);//将0-3置零
GPIOA->CRL |=(0x4<<0);

GPIOC->CRL &= ~(0xf<<16);//将0-3置零
GPIOC->CRL |=(0x4<<16);
GPIOC->CRL &= ~(0xf<<20);//将0-3置零
GPIOC->CRL |=(0x4<<20);
GPIOC->CRL &= ~(0xf<<24);//将0-3置零
GPIOC->CRL |=(0x4<<24);

}

uint8_t Get_KeyVal(void) //uint8_t 无符号整型数据
{
uint8_t val=0;
if(KEY1)//按下得到高电平
{
Delay_ms(20);//按键消抖
if(KEY1)
{
while(KEY1){}//等待按键抬起
val=1;
}
}
if(!KEY2)
{
Delay_ms(20);//按键消抖
if(!KEY2)
{
while(!KEY2){}//等待按键抬起
val=2;
}
}
if(!KEY3)
{
Delay_ms(20);//按键消抖
if(!KEY3)
{
while(!KEY3){}//等待按键抬起
val=3;
}
return val;
}
if(!KEY4)
{
Delay_ms(20);//按键消抖
if(!KEY4)
{
while(!KEY4){}//等待按键抬起
val=4;
}

}
return val;

}

标签:Delay,20,val,KEY3,IDR,笔记,STM32,按键
From: https://www.cnblogs.com/lmkjava/p/17549725.html

相关文章

  • STM32笔记(2)时钟源 NOP延时
    时钟用哪个外设就要开他对应的时钟例子:RCC->APB2ENR|=(0x01<<3);//时钟需要在APB2上开启对应的时钟拓展:系统时钟如何配置staticvoidSetSysClockTo72(void){__IOuint32_tStartUpCounter=0,HSEStatus=0;/*SYSCLK,HCLK,PCLK2andPCLK1configuration----......
  • Golang学习笔记-数据类型
    目录整型有符号整型无符号整型栗子浮点型栗子布尔型栗子字符型栗子字符串型栗子字符串<-->其他类型转换数组栗子切片创建切片通过数组的方式创建切片读取/修改切片元素追加元素-append合并多个切片删除元素字典栗子字典读、写、删除指针栗子方法栗子结构体结构体继承接口栗子类型......
  • ISIS(中间系统到中间系统)学习笔记
    ISIS(中间系统到中间系统)笔记:介绍:49开头表示这是一个私有地址,使用每四个数为一段分开的,如49.0001,这是区域号,这部分是变长,后面的一部分是定长的,比如:0000.0000.0001.00,这部分是系统ID,最后的八位二进制数用00填充。网络实体名称nat地址。ISIS和ospf的区别:ISIS的路由器只能有一个......
  • CPU - 为小宋整理的笔记
     CPU,中央处理器,负责指挥电脑的其他零部件干活。 CPU是计算机的中央处理器,它是由多个核心组成的。在Linux中,可以通过以下命令查看CPU型号、核数和个数:查看CPU型号:cat/proc/cpuinfo|grep"modelname"查看物理CPU个数:cat/proc/cpuinfo|grep"physicalid"|sort|u......
  • ST 表学习笔记与总结
    ST表学习笔记与总结目录ST表定义/作用什么是可重复贡献问题ST算法流程模板提ST表定义/作用什么是可重复贡献问题ST算法流程模板提luoguP3865【模板】ST表我的代码#include<iostream>usingnamespacestd;constintN=1e5+10,logN=21;intn,......
  • Java面试高频技术线程池,源码笔记答案全纪录
    有一定的java基础(线程),尤其是正要或正准备找工作的童鞋如果想在众多面试者中脱颖而出,你就需要多准备一些知识点,多刷一些面试题。而对于企业而言,有这么多的选择那我们就提高面试门槛,可能我需要的仅仅是CRUD的初中级,但我也希望你能了解JVM、多线程、Spring源码、Sql优化、分布......
  • STM32笔记 晶振 GPIO 寄存器
    晶振:在各种电路中,产生震荡频率的元器件(频率越高,单片机运行的速度越快)。2个外部:通过晶振高速:HSE--4~16MHz(咱们使用8MHz)--整个单片机提供时钟低速:LSE--32.768KHz--RTC提供(实时时钟)2个内部:通过RC振荡电路高速:HSI--8MHz低速:LSI--40KHz--看门狗定时器GPIO:管......
  • 二分图学习笔记
    定义对于一个无向图\(G=(V,E)\),如果存在点集\(A,B\),满足\(a\neq\varnothing\),\(b\neq\varnothing\),\(A\capB=\varnothing\),\(A\cupB=V\),且\(\forallu,v\inA\)或\(u,v\inB\),都有\((u,v)\notinE\),则称这个图是一个二分图,\(A\)称为这个二分图的左部,\(B\)称为右部。......
  • 2023烟台7天编程集训笔记3
    次小生成树:第二小的生成树。次小生成树:删掉一条边,再加上一条边,使得差值尽量小,并且要是一个树。次小生成树:如果一条边在最小生成树上,我们就叫他树边,如果不在最小生成树上就叫他非树边。次小生成树:删掉一条树边,加上一条非树边。次小生成树:倍增LCA询问环上最大的值(章鱼图)。从......
  • 2023烟台7天编程集训笔记2
    倍增点击查看代码//最大值不支持减法操作//倍增代码,求区间的最大值#include<bits/stdc++.h>usingnamespacestd;intn,a[1000000],f[100000][20];//f的j次方开到20就可以达到1000000intx[100010];//x[i]代表长度为i的区间,用两个长度为2^x[i]的区间能够覆盖intmain()......