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之按键(二)相关推荐

  1. 基于stm32f4的按键检测

    基于stm32f4的按键检测 所谓按键检测,即是检测按键是长按,还是短按.(长按.短按由按键的时间的长短来衡量)通过查阅相关资料,找到了两种比较好理解的按键检测方法.一种是通过输入捕获的方式检测按键按 ...

  2. PIC单片机 按键检测识别

    目录 按键和PIC单片机 一.按键 二.按键的物理连接与检测 三.PIC16F18854单片机 按键检测及显示实验 按键排布 预期效果 总体流程 中断服务程序 PIC汇编程序 按键和PIC单片机 一. ...

  3. Android:按键响应方式第一种onClick属性,第二种方法接口类,第三种方式匿名内部类,第四种方式Activity

    一.在xml 中设置按键的onClick 绑定的函数 新建一个工程 然后在相关的页面添加一个Button 运行一下 实际上,现在这个按键一,我们去运行的时候,他是没有任何的反馈的,我们按完它,他没有任 ...

  4. Android按键响应的几种方式、安卓页面的跳转、页面跳转传参、页面自动跳转、Activity(页面)的生命周期

    按键响应的第一种方式: 在XML文件里面设置按键的onClick绑定函数.就像下面的代码,给Button设置onClick属性,在按键被按下的时候,会调用java文件里面的onClickbtton1这 ...

  5. 案例分享:Qt+Arm+Fpga医疗肾镜(又名内窥镜)(实时影像、冻结、拍照、白平衡、九宫格、录像、背光调整、硬件光源调整、光源手动自动调整、物理按键)

    若该文为原创文章,转载请注明原文出处 本文章博客地址:https://blog.csdn.net/qq21497936/article/details/111241205 长期持续带来更多项目与技术分 ...

  6. 【esp32-adf】按键服务源码分析

    一.adc按键 二.源码分析 2.1 数据结构 设备集合 typedef struct esp_periph_sets {EventGroupHandle_t state_event_bits;xSe ...

  7. 【51单片机】独立按键,每个按键不同功能,数码管数值的加减,控制流水灯模式,包含按键消抖,数码显示,流水灯

    实验内容: 利用所学的单片机知识及电路知识编程实现单片机 I/O 口检测按键输入电平. 1.选中 8 位数码管的其中 1 位数码管,当独立按键 1 每按下一次,数码管加一(按下期间加 1),范围为 0 ...

  8. 嵌入式STM32—第三天按键中断key实现控制led灯

    1.软件及工程环境搭建 就不介绍了,可以直接用现成的 链接:https://pan.baidu.com/s/1GaSYpNm6yh-lZZmqRdXxvQ 提取码:dy63 相关库文件 链接:http ...

  9. 蓝桥杯嵌入式(G431RBT6):按键

    文章目录 前言 一.单击按键 二.按键长短按 总结 前言 按键可以说是蓝桥杯嵌入式组必考的内容,按键简单,但却很重要.板子上的功能都是围着按键展开的. 本文主要讲解按键长短按,定义了一个结构体,用来存 ...

最新文章

  1. unity 200.8m yoy_没错,Unity双十一来了
  2. ABAP ALV检查单元格更新数据
  3. 信息学奥赛一本通(1312:【例3.4】昆虫繁殖)
  4. 【多线程】并发执行指定数量的线程
  5. python `__repr__`
  6. openCVPracticalExercise学习笔记03
  7. ADO.NET 2.0 功能一览
  8. 【软件使用技巧】二(Word文档损坏)
  9. kylin 维度优化,Aggregation Group,Joint,Hierachy,Mandatory等解析
  10. 传统项目管理 VS 敏捷项目管理
  11. python实现网页表单填写_python在网页中自动填充表单
  12. 解决win10下 Virtual Box USB功能无法使用问题
  13. Android AppWidget详解,内附详细注释
  14. 计算机与地球科学,地球科学与遥感
  15. Java——反射机制
  16. 个人计算机和家用计算机的区别,量子计算机和普通计算机的区别
  17. 用dreamweaver打开asp网页出现乱码怎么办
  18. 程序员修炼之道(通俗版)——第一章
  19. 2017年三月初大厂前端面试总结
  20. 《Custom Cursor for Chrome™》为Chrome换上可爱初音光标

热门文章

  1. Self-augmented Unpaired Image Dehazing via Density and Depth Decomposition程序运行记录
  2. 一个简单的猜数字游戏(附带关机惩罚)
  3. PHPStudy环境下phpmyadmin卡顿延迟不流畅解决办法
  4. Python利用PCA压缩图片
  5. Redis缓存的雪崩、穿透、击穿
  6. Python爬虫——你们要的王者荣耀高清图
  7. 设备远程监管可以做到什么?
  8. 如何删除windows的WSL
  9. 全新 Google Pixel Watch 重磅上线 | 着手为 Wear OS 构建应用!
  10. 咸鱼笔记—Socket 通信