按键的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程序相关推荐

  1. 单片机按键控制数码管c语言程序,基于单片机的按键控制LED数码管共阴极动态显示电路设计报告(毕业论文).doc...

    基于单片机的按键控制LED数码管共阴极动态显示电路设计报告(毕业论文) 物理与电子工程学院2014级课程设计 PAGE IV 物理与电子工程学院 <单片机原理与接口技术> 课程设计报告书 ...

  2. 按键控制led灯python程序_树莓派使用threading函数实现多按键控制LED灯

    讲两个知识点.一个是关于上拉和下拉,另一个是关于threading函数. 1.上拉电阻和下拉电阻 上拉就是把一个不确定的信号通过一个电阻连接到高电位,这样在开关断开是信号为高电位,开关合上时信号为低电 ...

  3. 单片机汇编语言:我的第一个汇编语言程序(汇编语言实现按键控制LED灯)

    汇编语言实现按键控制LED亮灭 Proteus仿真图 源码 源码1 源码2 源码注释 Proteus仿真图 源码 源码1 这个与Proteus仿真逻辑相同 源码2 这个与仿真逻辑相反 源码注释 MAI ...

  4. STM32F103系列之按键控制LED灯

    上篇已经介绍了点灯的操作了,本篇主要介绍按键控制LED灯进行相关操作. 同样,我们需要对GPIO进行相关的初始化配置,这里我们将LED相关的代码全部放在LED.C和LED.H文件里面. LED.C文件 ...

  5. STM32f103 CubeMX封装 led程序

    本文代码使用 HAL 库. 文章目录 前言 一.LED 原理图 二.CubeMX创建工程 三.LED 相关函数 1. 输出电平函数: 2. 延时函数: 3. 翻转电平函数: 四.详细代码 实验现象 : ...

  6. led计数电路实验报告_「正点原子FPGA连载」第八章 按键控制LED灯实验

    1)实验平台:正点原子开拓者FPGA开发板 2)本实例源码下载:请移步正点原子官网 第八章 按键控制LED灯实验 按键是常用的一种控制器件.生活中我们可以见到各种形式的按键,由于其结构简单,成本低廉等 ...

  7. STM32按键控制led四种方法

    文章目录 回顾按键电路 按照之前文章方法在工程文件下加入Hardware中的key.c和key.h 打开固件库用户手册查询io读取相关的函数 第一种方式实现按键控制 第二种方式实现按键控制led 第三 ...

  8. 03独立按键控制LED移动

    51单片机学习记录04 一.独立按键控制LED单向移动 单项右移 单项左移 二.独立按键控制LED移动 总结 一.独立按键控制LED单向移动 代码分为两个部分:"主函数"+&quo ...

  9. 记录1——stm32f411CEU6之点亮一盏LED灯+按键控制LED灯

    文章目录 前言 一.准备工作 二.点亮一盏LED灯 1.配置工程 2.代码实现 3.程序烧录注意 三.按键控制LED灯 1.配置工程 2.代码实现 按键控制 按键进阶1: 按键进阶2 3.基于自己理解 ...

  10. FPGA 双按键控制LED呼吸灯实现

    FPGA &&双按键控制&&LED呼吸灯实现 文章目录 FPGA &&双按键控制&&LED呼吸灯实现 1.按键脉冲设计 1.1按键脉冲信 ...

最新文章

  1. 使用 $.grep() 方法
  2. Laravel增加自定义助手函数
  3. linux下安装nginx,php,mysql
  4. Oracle官方并发教程之中断
  5. 设计模式:简单工厂模式(C++)【看不懂算我输】
  6. Spring boot 2.4开启静态资源缓存
  7. mysql查询图书复本量_SQL语句在图书管理数据库中实现下列查询S1:在借阅表中查询哪些 爱问知识人...
  8. 面经——华为联发科小米兆易创新(2020年秋招嵌入式软件)
  9. 轻量型目标检测算法一次看个够
  10. KB kb KB大小写
  11. Python 转义字符与原字符
  12. 用python做小黑屋的游戏
  13. SNF开发平台-SNF.CodeGenerator-升级生成BS页面代码-支持视图-数据库配置-快速开发者的利器...
  14. How to make seperate debuginfo file
  15. android 禁止获得焦点,防止EditText自动获取焦点
  16. COBOL 知识点集锦(下)
  17. 【转】博弈论中的几个经典问题
  18. tomcat使用详解(week4_day2)--技术流ken
  19. Ae和Pr有什么不一样
  20. NISI脚本中对环境变量赋值

热门文章

  1. 计算机保研择校,择校一定要看的保研率,千万别忘记了
  2. 第02课:数字和运算符
  3. python心脏线绘制代码_用python绘制爱心的基本步骤
  4. 卷积神经网络 图像识别,卷积神经网络车辆识别
  5. UE4.21 CodeWorksforAndroid-1R7u1
  6. 如何批量查询快递物流
  7. Python爬虫可以赚钱吗
  8. XML 第三篇(解析)
  9. Oracle数据库中的锁
  10. python 数字爆炸 number boom 小程序