STM32F103标准库开发:KEY按键实验
KEY按键实验程序源码链接
STM32F103标准库开发—目录
一、硬件电路分析
按键的具体硬件电路原理图如下:
大致就这两种:
- KEY1 带上拉电路的,按键按下,PB12接地,输入低电平。
- KEY2 不带上拉电路的,按键按下,PB13接地,输入低电平。
二、KEY按键配置
1. GPIO时钟配置
GPIO时钟配置函数
void RCC_APB2PeriphClockCmd(uint32_t RCC_APB2Periph, FunctionalState NewState);
本次配置如下
RCC_APB2PeriphClockCmd( RCC_APB2Periph_GPIOB, ENABLE); // 使能PB端口时钟
2. GPIO初始化配置
工作模式可以参考:STM32F103:GPIO八种工作原理详解
本次GPIO初始化配置工作模式为:GPIO_Mode_IPU 上拉输入,因为按键按下输入的电平是低电平,上拉输入会使低电平输入更加容易读取。
GPIO初始化函数
void GPIO_Init(GPIO_TypeDef* GPIOx, GPIO_InitTypeDef* GPIO_InitStruct);
本次配置如下:
GPIO_InitTypeDef GPIO_InitStructure;GPIO_InitStructure.GPIO_Pin = GPIO_Pin_12|GPIO_Pin_13; // PB14,PB15GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU; //上拉输入GPIO_Init(GPIOB, &GPIO_InitStructure); //初始化PB端口
3. GPIO输入读取配置
GPIO输入读取函数
返回值:低电平----0,高电平----1。
uint8_t GPIO_ReadInputDataBit(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin)
本次配置如下:
#define KEY1 GPIO_ReadInputDataBit(GPIOB,GPIO_Pin_12)//读取按键1
#define KEY2 GPIO_ReadInputDataBit(GPIOB,GPIO_Pin_13)//读取按键2
三、KEY按键实验
1. KEY按键实验功能介绍
本次实验主要实现的功能就是:
- 按KEY1,key加1,然后通过串口printf()函数,打印输出key值。
- 按KEY2,key减1,然后通过串口printf()函数,打印输出key值。
2. 配置程序
key.c
#include "KEY.h"/*************** 配置KEY用到的I/O口 *******************/
void KEY_GPIO_Config(void)
{RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE); // 使能PB端口时钟 GPIO_InitTypeDef GPIO_InitStructure;GPIO_InitStructure.GPIO_Pin = GPIO_Pin_12|GPIO_Pin_13; // PB12,PB13GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU; //上拉输入模式GPIO_Init(GPIOB, &GPIO_InitStructure); //初始化PB端口
}
key.h
#ifndef __KEY_H
#define __KEY_H#include "stm32f10x.h"#define KEY1 GPIO_ReadInputDataBit(GPIOB,GPIO_Pin_12)//读取按键1
#define KEY2 GPIO_ReadInputDataBit(GPIOB,GPIO_Pin_13)//读取按键2void KEY_GPIO_Config(void); //Key初始化#endif
3. 具体实现程序
main.c
#include "stm32f10x.h"
#include <stdio.h>
#include "delay.h"
#include "KEY.h"
#include "Uart1.h"int main (void)
{KEY_GPIO_Config(); //KEY初始化 Uart1_init(); //串口1初始化static u8 key_up=1; //按键松开标志int key=0; //按键计数while(1){if((key_up==1)&&(KEY1==0||KEY2==0)){delay_ms(10); //消抖key_up=0;if(KEY1==0) { key++;printf("Key=%d",key);}else if(KEY2==0) { key--;printf("Key=%d",key);}}else if(KEY1==1&&KEY2==1) //按键松开{key_up=1;}}
}
STM32F103标准库开发:KEY按键实验相关推荐
- STM32F103标准库开发---SPI实验---W25Qxx系列外部Flash芯片
STM32F103标准库开发----目录 STM32F103标准库开发----SPI实验----基本原理 STM32F103标准库开发----SPI实验----底层驱动程序 W25Qxx全系列---- ...
- STM32F103标准库开发----CAN总线通信实验----发送和接收
STM32F103标准库开发----目录 STM32F103标准库开发----CAN总线通信实验----基本原理 STM32F103标准库开发----CAN总线通信实验----初始化/波特率 STM3 ...
- STM32F103标准库开发:LED跑马灯实验
LED跑马灯实验程序源码链接 STM32F103标准库开发-目录 文章目录 一.硬件电路分析 二.LED灯GPIO配置 1. GPIO初始化配置 使能GPIO时钟 GPIO初始化配置信息 2. GPI ...
- STM32F103标准库开发:外部中断(EXTI)实验
STM32F103标准库开发----目录 STM32F103标准库开发----外部中断(EXTI)实验----程序源码 本文章技术信息均出自:STM32F103系列超详细参考手册-中文版 一.外部中断 ...
- STM32F103标准库开发---SPI实验---读写 W25Q128 外部 Flash
STM32F103标准库开发----目录 W25Q128读写----程序源码----点击下载 W25Qxx全系列数据手册-点击下载 一.实验前期准备 本次实验的 MCU 是 STM32F103C8T6 ...
- STM32F103标准库开发:Keil5新建STM32工程
STM32标准库版工程模板链接 STM32F103标准库开发-目录 首先需要搭建Keil5编译环境,才可以新建STM32工程. Keil5编译环境搭建流程----STM32和GD32 新建STM32工 ...
- STM32F103标准库开发:内部Flash的读写
本文章技术信息均出自:STM32F103系列超详细参考手册-中文版 STM32F103标准库开发-目录 一.STM32存储器介绍 STM32存储器分为以下两种: 1. 随机存储器-RAM RAM是与C ...
- vs2010c语言安装,VS2010 boost标准库开发环境安装教程
分享VS2010 boost标准库开发环境安装教程 1. BOOST编译过程非常复杂,目前为了学习BOOST,首先搭建基于VS2010的BOOST开发环境. Boost库是一个可移植.提供源代码的C+ ...
- 第2课【CMSIS和标准库开发】标准库 CMSIS 分层
目录 基本知识框架 课堂笔记 CMSIS CMSIS的分层关系和作用 CMSIS层文件结构 内核函数层文件 外设函数访问层文件 标准库开发 标准库开发 LED-GPIO 标准库开发 KEY-GPIO ...
最新文章
- Windows服务器SYSTEM权限Webshell无法添加3389账户情况突破总结
- Action请求后台出现Response already commited异常解决方法
- mysql 数据类型 int_MySQL数据类型 int(M) 表示什么意思?
- WCF 第四章 绑定 netMsmqBinding
- 深入学习用Go编写HTTP服务器
- 是时候重构下自己的博客了
- python绘图背景透明_如何在 Matplotlib 中更改绘图背景
- selenium03-三个简单的web自动化实例
- Java HTML转换为图片
- 信号与系统_严国志_第一章_绪论
- 非越狱逆向开发总结文档(含iOS Extension)
- 程序员技能与成长:程序员的必备工具箱(值得收藏)
- 打印收款单据(easypoi)Vue+springBoot+Mybatisplus
- 05.看板方法——在制品
- 抓包微信小程序openid的教程
- 高通项目端口每次跳出要求安装驱动解决方法
- PHP 简单汉字繁简数据转换
- VS2013打开ASP.NET网站管理工具
- 基于hls格式的光条检测纯c++代码——重心法
- java坐标代码_Java实现地理坐标判断
热门文章
- 哔哩哔哩 BV、AV互转 C#版
- 想进国企央企,一定要保存好所有工作履历证明材料,包括劳动合同、离职证明、社保记录等!...
- 免费开源ETL工具KETTLE
- 光端机连接示意图详细连接方式图解
- 微信小程序顶部标题栏仅保留右上角胶囊状按钮
- 阿里后端常用的 15 款开发工具,你不试试?
- 射频微波芯片设计7:详解基于ADS的低噪声放大器芯片设计
- #displaytag:一个简易的Java分页插件(无需其他的前端分页插件) @FDDLC
- qq音乐mp3解析php源码,QQ音乐API
- 设置固定IP后无法上网