STM32F4之按键(二)
STM32寄存器模式实现按键控制LED灯的状态
使用正点原子的开源代码,保证了程序的简洁性和可读性。
key.h文件:
#ifndef __KEY__HH__
#define __KEY__HH__#include "sys.h"
//KEY端口初始化
#define KEY0 PHin(3)
#define KEY1 PHin(2)
#define KEY2 PCin(13)
#define WK_UP PAin(0)//声明动作宏
#define KEY0_PRES 1 //KEY0按下
#define KEY1_PRES 2 //KEY1按下
#define KEY2_PRES 3 //KEY2按下
#define WKUP_PRES 4 //KEY_UP按下//函数声明
void KEY_Init(void);
u8 KEY_Scan(u8);
#endif
key.c文件:
#include "key.h"
#include "delay.h"void KEY_Init(void)
{//使能时钟 PORTA、PORTC、 PORTHRCC -> AHB1ENR |= 1 << 0; //A是首位RCC -> AHB1ENR |= 1 << 2; //C是三位RCC -> AHB1ENR |= 1 << 7;//设置GPIOx模式 GPIOA、GPIOC、GPIOHGPIO_Set(GPIOA, PIN0, GPIO_MODE_IN, GPIO_OTYPE_PP, GPIO_SPEED_2M, GPIO_PUPD_PD);GPIO_Set(GPIOC, PIN13, GPIO_MODE_IN, GPIO_OTYPE_PP, GPIO_SPEED_2M, GPIO_PUPD_PU);GPIO_Set(GPIOH, PIN2|PIN3, GPIO_MODE_IN, GPIO_OTYPE_PP, GPIO_SPEED_2M, GPIO_PUPD_PU);}//按键扫描函数
u8 KEY_Scan(u8 mode)
{//定义按键松开标志static u8 key_up = 1;//连按模式支持if(mode){key_up = 1;}if(key_up && (0 == KEY0 | 0 == KEY1 | 0 == KEY2 | 1 == WK_UP)){//去抖动delay_ms(10);key_up = 0;if(0 == KEY0){return 1;}else if(0 == KEY1){return 2;}else if(0 == KEY2){return 3;}else if(1 == WK_UP){return 4;}}else if(1 == KEY0 | 1 == KEY1 | 1 == KEY2 | 0 == WK_UP){key_up = 1;}return 0;
}
main.c文件:
#include "sys.h"
#include "delay.h"
#include "key.h"
#include "led.h"int main(void)
{//定义键值变量u8 key;//设置时钟Stm32_Clock_Init(360, 25, 2, 8);//初始化延时函数delay_init(180);//初始化LEDLED_Init();//初始化KEYKEY_Init();//点亮LED0LED0 = 0;while(1){//得到键值key = KEY_Scan(0);if(key){switch (key){case WKUP_PRES:LED1 = !LED1;LED0 = !LED1;break;case KEY2_PRES:LED1 = !LED1;break;case KEY1_PRES:LED0 = !LED0;break;case KEY0_PRES:LED1 = !LED1;LED0 = !LED0;break;}}else{delay_init(10);}}
}
STM32F4之按键(二)相关推荐
- 基于stm32f4的按键检测
基于stm32f4的按键检测 所谓按键检测,即是检测按键是长按,还是短按.(长按.短按由按键的时间的长短来衡量)通过查阅相关资料,找到了两种比较好理解的按键检测方法.一种是通过输入捕获的方式检测按键按 ...
- PIC单片机 按键检测识别
目录 按键和PIC单片机 一.按键 二.按键的物理连接与检测 三.PIC16F18854单片机 按键检测及显示实验 按键排布 预期效果 总体流程 中断服务程序 PIC汇编程序 按键和PIC单片机 一. ...
- Android:按键响应方式第一种onClick属性,第二种方法接口类,第三种方式匿名内部类,第四种方式Activity
一.在xml 中设置按键的onClick 绑定的函数 新建一个工程 然后在相关的页面添加一个Button 运行一下 实际上,现在这个按键一,我们去运行的时候,他是没有任何的反馈的,我们按完它,他没有任 ...
- Android按键响应的几种方式、安卓页面的跳转、页面跳转传参、页面自动跳转、Activity(页面)的生命周期
按键响应的第一种方式: 在XML文件里面设置按键的onClick绑定函数.就像下面的代码,给Button设置onClick属性,在按键被按下的时候,会调用java文件里面的onClickbtton1这 ...
- 案例分享:Qt+Arm+Fpga医疗肾镜(又名内窥镜)(实时影像、冻结、拍照、白平衡、九宫格、录像、背光调整、硬件光源调整、光源手动自动调整、物理按键)
若该文为原创文章,转载请注明原文出处 本文章博客地址:https://blog.csdn.net/qq21497936/article/details/111241205 长期持续带来更多项目与技术分 ...
- 【esp32-adf】按键服务源码分析
一.adc按键 二.源码分析 2.1 数据结构 设备集合 typedef struct esp_periph_sets {EventGroupHandle_t state_event_bits;xSe ...
- 【51单片机】独立按键,每个按键不同功能,数码管数值的加减,控制流水灯模式,包含按键消抖,数码显示,流水灯
实验内容: 利用所学的单片机知识及电路知识编程实现单片机 I/O 口检测按键输入电平. 1.选中 8 位数码管的其中 1 位数码管,当独立按键 1 每按下一次,数码管加一(按下期间加 1),范围为 0 ...
- 嵌入式STM32—第三天按键中断key实现控制led灯
1.软件及工程环境搭建 就不介绍了,可以直接用现成的 链接:https://pan.baidu.com/s/1GaSYpNm6yh-lZZmqRdXxvQ 提取码:dy63 相关库文件 链接:http ...
- 蓝桥杯嵌入式(G431RBT6):按键
文章目录 前言 一.单击按键 二.按键长短按 总结 前言 按键可以说是蓝桥杯嵌入式组必考的内容,按键简单,但却很重要.板子上的功能都是围着按键展开的. 本文主要讲解按键长短按,定义了一个结构体,用来存 ...
最新文章
- unity 200.8m yoy_没错,Unity双十一来了
- ABAP ALV检查单元格更新数据
- 信息学奥赛一本通(1312:【例3.4】昆虫繁殖)
- 【多线程】并发执行指定数量的线程
- python `__repr__`
- openCVPracticalExercise学习笔记03
- ADO.NET 2.0 功能一览
- 【软件使用技巧】二(Word文档损坏)
- kylin 维度优化,Aggregation Group,Joint,Hierachy,Mandatory等解析
- 传统项目管理 VS 敏捷项目管理
- python实现网页表单填写_python在网页中自动填充表单
- 解决win10下 Virtual Box USB功能无法使用问题
- Android AppWidget详解,内附详细注释
- 计算机与地球科学,地球科学与遥感
- Java——反射机制
- 个人计算机和家用计算机的区别,量子计算机和普通计算机的区别
- 用dreamweaver打开asp网页出现乱码怎么办
- 程序员修炼之道(通俗版)——第一章
- 2017年三月初大厂前端面试总结
- 《Custom Cursor for Chrome™》为Chrome换上可爱初音光标