如果觉得不错就点个赞吧~

目录

一  元件相关

二 面包板上的连线

三 具体代码

LED.c

Key.c

main.c

四 实现效果


一  元件相关

需要准备元件:32板,杜邦线,跳线,几个LED灯,几个电阻,ST-Link,面包板,四角独立按键

二 面包板上的连线

32和Link,的连接我写在了另一篇中,需要的同学可以自己去看[stm32] Start Tour-LED灯闪烁

以下是四角独立按键的连线图,四个角连三个地方,其中VCC和GND在同一边,GND那要加一个电阻

三 具体代码

代码我分模块进行编写:

LED.c

#include "stm32f10x.h"                  // Device headervoid LED_Init(void)
{RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA,ENABLE);//打开时钟GPIO_InitTypeDef GPIO_InitStructure;GPIO_InitStructure.GPIO_Mode=GPIO_Mode_Out_PP;GPIO_InitStructure.GPIO_Pin=GPIO_Pin_0|GPIO_Pin_1;GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;GPIO_Init(GPIOA,&GPIO_InitStructure);GPIO_ResetBits(GPIOA,GPIO_Pin_0|GPIO_Pin_1);//初始LED不亮
}void LED_On()//打开LED
{GPIO_SetBits(GPIOA,GPIO_Pin_0|GPIO_Pin_1);//输出低电平
}void LED_Off()//关闭LED
{GPIO_ResetBits(GPIOA,GPIO_Pin_0|GPIO_Pin_1);//输出高电平
}void LED_Turn(void)//LED取反
{if(GPIO_ReadOutputDataBit(GPIOA,GPIO_Pin_0|GPIO_Pin_1)==0)//GPIO_ReadOutputDataBit函数,可实现要求LED取反{                                                          //该函数在_gpio.h中第355行GPIO_SetBits(GPIOA,GPIO_Pin_0|GPIO_Pin_1);}else{GPIO_ResetBits(GPIOA,GPIO_Pin_0|GPIO_Pin_1);}
}

Key.c

#include "stm32f10x.h"                  // Device header
#include "Delay.h"void Key_Init(void)//按键初始化,跟LED初始化一样的结构
{RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA,ENABLE);//打开时钟,我这里定义跟LED一样是GPIOAGPIO_InitTypeDef GPIO_InitStructure;//结构体定义,GPIO_InitStructure为随便起的名字GPIO_InitStructure.GPIO_Mode=GPIO_Mode_IPU;//上拉输入GPIO_InitStructure.GPIO_Pin=GPIO_Pin_2;//PA2GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;GPIO_Init(GPIOA,&GPIO_InitStructure);
}//读取按键值
unsigned char Key_GetNum(void)
{unsigned char KeyNum=0;//按键是否按下判断if(GPIO_ReadInputDataBit(GPIOA,GPIO_Pin_2)==0)//GPIO_ReadInputDataBit函数{                                             //该函数在_gpio.h中第353行Delay_ms(20);while(GPIO_ReadInputDataBit(GPIOA,GPIO_Pin_2)==0);Delay_ms(20);KeyNum=1;}return KeyNum;
}

main.c

#include "stm32f10x.h"
#include "Delay.h"
#include "LED.h"
#include "Key.h"unsigned char KeyNum;int main(void)
{LED_Init();Key_Init();while(1){KeyNum=Key_GetNum();if(KeyNum==1)//按键按下{LED_Turn();}}
}

四 实现效果

按一下亮,按一下暗,一开始灯不亮

[stm32] Start Tour-按键控制LED相关推荐

  1. STM32学习:按键控制LED

    STM32学习:按键控制LED 文章目录 前言 一.所用知识点复习 1.stm32工作模式(*注意上下拉输入的区别*) 2.按键抖动与常见按键接法 按键抖动: 按键消抖: 常见按键接法: 3.GPIO ...

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

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

  3. STM32按键控制LED灯亮灭(四)

    编程要点: 1)使能GPIO端口时钟: 2)初始化GPIO目标引脚为输入模式(浮空输入): 3)编写简单测试程序,检测按键的状态,实现按键控制LED灯: bsp_led.h文件 #ifndef T_L ...

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

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

  5. 嵌入式系统开发设计——按键控制LED灯实现

    一.实验目的 掌握STM32固件库的使用方法: 掌握基于库函数模板的开发方法: 掌握基于固件库进行GPIO端口编程的方法: 4.规范编程格式. 二.实验内容 1.查阅STM32-V5开发板按键.LED ...

  6. FPGA(1)基础入门 -- 按键控制led灯

    目录 效果说明 1.配置输入输出变量 2.变量赋值 3.配置引脚(输入输出变量) 代码 效果说明 key1按键按下,led1被点亮. key2按键按下,led2被点亮. 1.配置输入输出变量 inpu ...

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

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

  8. 8个独立按键控制LED

    8个独立按键控制LED

  9. 按键控制LED实现启动、停止按钮

    按键控制LED实现启动.停止按钮

  10. 简单的按键控制LED

    简单的按键控制LED

最新文章

  1. 抽象工厂和工厂设计模式之间有什么区别?
  2. 安德鲁斯Launcher得到的装在手机的应用程序列表
  3. SAP ABAP MARD和MARDH计算逻辑
  4. Arthas - 开源 Java 诊断工具
  5. java 插入mysql 日期_Java日期-插入数据库
  6. linux卸载设备驱动命令,Linux设备驱动程序加载/卸载方法 insmod和modprobe命令
  7. 【干货分享】用AI工具设计一款吸引人的字体效果
  8. 微信收款码应该怎么申请呢?详细教程在这里
  9. lldb调试mysql 插件命令
  10. imo与slack竞品分析报告
  11. 解决手机端微信公众号内input输入框获取焦点后,底部导航栏显示在输入法软键盘上面的问题
  12. 少儿培训python
  13. Vue单页面中进行业务数据的上报
  14. 使用MATLAB提取图片中特定颜色
  15. onenote打开闪退平板_OneNote应用在win10电脑无法运行闪退
  16. 使用 Tkprof 分析 ORACLE 跟踪文件
  17. Gradle-Eclipse插件安装
  18. CLICKHOUSE函数使用经验(arrayJoin与arrayMap函数应用场景)
  19. JavaSE_day14Map集合和Map集合的实现类
  20. 短视频应用应该如何打造技术架构?

热门文章

  1. 【论文笔记】Forensic Similarity for Digital Images
  2. Mac如何清理DNS缓存
  3. 用计算机命令合成机械头像,合成的机械头像 [2]
  4. win7 64位下安装oracle 10g(10.2.1)切身体会,不需要安装oracle客户端,实现navicat和plsql连接数据库
  5. 2018北邮网研机试-D 的更好解法
  6. wangEditor自动获取焦点
  7. Discuz!NT高并发解决方案整理
  8. 初学miniui之miniui的使用
  9. 我的金工实习心得(三):铸工第二天
  10. uploadify使用中遇到flash文件上传按钮加载不出来