STM32F103按键控制LED程序
按键的key.h和KEY.C
按键KEY1为GPIOA的0脚
按键KEY1为GPIOA的1脚
key.h
#ifndef __KEY_H
#define __KEY_H
#include "sys.h"
//#define KEY1 PAin(0)// PA0
//#define KEY2 PAin(1)// PA1
#define KEYPORT GPIOA //定义IO接口组
#define KEY1 GPIO_Pin_0 //定义IO接口按键KEY1为GPIOA的0脚
#define KEY2 GPIO_Pin_1 //定义IO接口按键KEY1为GPIOA的1脚
void KEY_Init(void);//初始化#endif
KEY.C
#include "key.h"void KEY_Init(void){ //微动开关的接口初始化GPIO_InitTypeDef GPIO_InitStructure; //定义GPIO的初始化枚举结构 RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA,ENABLE); GPIO_InitStructure.GPIO_Pin = KEY1 | KEY2; //选择端口号(0~15或all) GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU; //选择IO接口工作方式 //上拉电阻
// GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; //设置IO接口速度(2/10/50MHz) 输入模式不需要设置端口速率 GPIO_Init(KEYPORT,&GPIO_InitStructure);
}
/****************************************************
程序名: 按键控制LED程序
硬件支持: STM32F103C8 外部晶振8MHz RCC函数设置主频72MHz 说明:# 本模板加载了STM32F103内部的RCC时钟设置,并加入了利用滴答定时器的延时函数。# 可根据自己的需要增加或删减。*********************************************************************************************/
#include "stm32f10x.h" //STM32头文件
#include "sys.h"
#include "delay.h"
#include "led.h"
#include "key.h" int main (void){//主程序//初始化程序RCC_Configuration(); //时钟设置LED_Init();//LED初始化KEY_Init();//按键初始化while(1){ //主循环//示例1:无锁存
// if(GPIO_ReadInputDataBit(KEYPORT,KEY1)){ //读按键接口的电平
// GPIO_ResetBits(LEDPORT,LED1); //LED灯都为低电平(0)
// }else{
// GPIO_SetBits(LEDPORT,LED1); //LED灯都为高电平(1)
// }//示例2:无锁存
// GPIO_WriteBit(LEDPORT,LED1,(BitAction)(!GPIO_ReadInputDataBit(KEYPORT,KEY1))); //示例3:有锁存//key1if(!GPIO_ReadInputDataBit(KEYPORT,KEY1)){ //读按键接口的电平delay_ms(20); //延时去抖动if(!GPIO_ReadInputDataBit(KEYPORT,KEY1)){ //读按键接口的电平GPIO_WriteBit(LEDPORT,LED1,(BitAction)(1-GPIO_ReadOutputDataBit(LEDPORT,LED1))); //LED取反while(!GPIO_ReadInputDataBit(KEYPORT,KEY1)); //等待按键松开 }}//key2if(!GPIO_ReadInputDataBit(KEYPORT,KEY2)){ //读按键接口的电平delay_ms(20); //延时去抖动if(!GPIO_ReadInputDataBit(KEYPORT,KEY2)){ //读按键接口的电平GPIO_WriteBit(LEDPORT,LED2,(BitAction)(1-GPIO_ReadOutputDataBit(LEDPORT,LED2))); //LED取反while(!GPIO_ReadInputDataBit(KEYPORT,KEY2)); //等待按键松开 }}//示例4:有锁存
// if(!GPIO_ReadInputDataBit(KEYPORT,KEY1)){ //读按键接口的电平
// delay_ms(20); //延时20ms去抖动
// if(!GPIO_ReadInputDataBit(KEYPORT,KEY1)){ //读按键接口的电平
// //在2个LED上显示二进制加法
// a++; //变量加1
// if(a>3){ //当变量大于3时清0
// a=0;
// }
// GPIO_Write(LEDPORT,a); //直接数值操作将变量值写入LED(LED在GPIOB组的PB0和PB1上)
// while(!GPIO_ReadInputDataBit(KEYPORT,KEY1)); //等待按键松开
// }
// }}
}
STM32F103按键控制LED程序相关推荐
- 单片机按键控制数码管c语言程序,基于单片机的按键控制LED数码管共阴极动态显示电路设计报告(毕业论文).doc...
基于单片机的按键控制LED数码管共阴极动态显示电路设计报告(毕业论文) 物理与电子工程学院2014级课程设计 PAGE IV 物理与电子工程学院 <单片机原理与接口技术> 课程设计报告书 ...
- 按键控制led灯python程序_树莓派使用threading函数实现多按键控制LED灯
讲两个知识点.一个是关于上拉和下拉,另一个是关于threading函数. 1.上拉电阻和下拉电阻 上拉就是把一个不确定的信号通过一个电阻连接到高电位,这样在开关断开是信号为高电位,开关合上时信号为低电 ...
- 单片机汇编语言:我的第一个汇编语言程序(汇编语言实现按键控制LED灯)
汇编语言实现按键控制LED亮灭 Proteus仿真图 源码 源码1 源码2 源码注释 Proteus仿真图 源码 源码1 这个与Proteus仿真逻辑相同 源码2 这个与仿真逻辑相反 源码注释 MAI ...
- STM32F103系列之按键控制LED灯
上篇已经介绍了点灯的操作了,本篇主要介绍按键控制LED灯进行相关操作. 同样,我们需要对GPIO进行相关的初始化配置,这里我们将LED相关的代码全部放在LED.C和LED.H文件里面. LED.C文件 ...
- STM32f103 CubeMX封装 led程序
本文代码使用 HAL 库. 文章目录 前言 一.LED 原理图 二.CubeMX创建工程 三.LED 相关函数 1. 输出电平函数: 2. 延时函数: 3. 翻转电平函数: 四.详细代码 实验现象 : ...
- led计数电路实验报告_「正点原子FPGA连载」第八章 按键控制LED灯实验
1)实验平台:正点原子开拓者FPGA开发板 2)本实例源码下载:请移步正点原子官网 第八章 按键控制LED灯实验 按键是常用的一种控制器件.生活中我们可以见到各种形式的按键,由于其结构简单,成本低廉等 ...
- STM32按键控制led四种方法
文章目录 回顾按键电路 按照之前文章方法在工程文件下加入Hardware中的key.c和key.h 打开固件库用户手册查询io读取相关的函数 第一种方式实现按键控制 第二种方式实现按键控制led 第三 ...
- 03独立按键控制LED移动
51单片机学习记录04 一.独立按键控制LED单向移动 单项右移 单项左移 二.独立按键控制LED移动 总结 一.独立按键控制LED单向移动 代码分为两个部分:"主函数"+&quo ...
- 记录1——stm32f411CEU6之点亮一盏LED灯+按键控制LED灯
文章目录 前言 一.准备工作 二.点亮一盏LED灯 1.配置工程 2.代码实现 3.程序烧录注意 三.按键控制LED灯 1.配置工程 2.代码实现 按键控制 按键进阶1: 按键进阶2 3.基于自己理解 ...
- FPGA 双按键控制LED呼吸灯实现
FPGA &&双按键控制&&LED呼吸灯实现 文章目录 FPGA &&双按键控制&&LED呼吸灯实现 1.按键脉冲设计 1.1按键脉冲信 ...
最新文章
- 使用 $.grep() 方法
- Laravel增加自定义助手函数
- linux下安装nginx,php,mysql
- Oracle官方并发教程之中断
- 设计模式:简单工厂模式(C++)【看不懂算我输】
- Spring boot 2.4开启静态资源缓存
- mysql查询图书复本量_SQL语句在图书管理数据库中实现下列查询S1:在借阅表中查询哪些 爱问知识人...
- 面经——华为联发科小米兆易创新(2020年秋招嵌入式软件)
- 轻量型目标检测算法一次看个够
- KB kb KB大小写
- Python 转义字符与原字符
- 用python做小黑屋的游戏
- SNF开发平台-SNF.CodeGenerator-升级生成BS页面代码-支持视图-数据库配置-快速开发者的利器...
- How to make seperate debuginfo file
- android 禁止获得焦点,防止EditText自动获取焦点
- COBOL 知识点集锦(下)
- 【转】博弈论中的几个经典问题
- tomcat使用详解(week4_day2)--技术流ken
- Ae和Pr有什么不一样
- NISI脚本中对环境变量赋值