STM32
登录
直播中
李宛蔓
7年用户
981经验值
私信
关注
[问答]
基于mini板的程序是如何去完成按键控制LED的功能呢
开启该帖子的消息推送
按键
程序
基于mini板的程序是如何去完成按键控制LED的功能呢?有哪些步骤?
回帖
(1)
李娜
2021-11-16 15:03:47
0.前言
基于正点原子mini板的程序设计,完成按键控制LED的功能。
在STM32F103实验一:点亮LED灯的基础下(已经建立好led.h和led.c文件),添加头文件key.h和源文件key.c到HARDWARE文件夹下。
1.原理图参照:
3.程序开发思路:
编写头文件key.h,声明相关调用和函数
在key.c文件中编写按键初始化函数
在key.c中编写按键检测函数
在主函数main()中编写按键控制led的程序
3.1编写key.h文件
#ifndef __KEY_H_
#define __KEY_H_
#include “stm32f10x.h”
#include “sys.h”
//声明按键返回值
#define KEY_0 1
#define KEY_1 2
#define WK_UP 3
//声明按键引脚
#define key_0 PCin(5)
#define key_1 PAin(15)
#define wk_up PAin(0)
void KEY_Init(void);
u8 KEY_Scan(void);
#endif
3.2编写key.c文件
#include “key.h”
#include “delay.h”
void KEY_Init(void)
{
GPIO_InitTypeDef GPIO_InitStructure;
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA|RCC_APB2Periph_GPIOC, ENABLE);
//WK_UP初始化
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPD; //下拉输入
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_Init(GPIOA, &GPIO_InitStructure);
//KEY_1初始化
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_15;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU; //上拉输入
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_Init(GPIOA, &GPIO_InitStructure);
//KEY_0初始化
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_5;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; //上拉输入
GPIO_Init(GPIOC, &GPIO_InitStructure);
}
//按键扫描函数
u8 KEY_Scan()
{
if(wk_up){
delay_ms(10);
if(wk_up){
while(wk_up);
return WK_UP;
}
}
if(!key_1){
delay_ms(10);
if(!key_1){
while(!key_1);
return KEY_1;
}
}
if(!key_0){
delay_ms(10);
if(!key_0){
while(!key_0);
return KEY_0;
}
}
return 0;//默认返回值
}
3.3编写主函数main()
#include “stm32f10x.h”
#include “led.h”
#include “delay.h”
#include “key.h”
int main(void)
{
u8 key;
LED_Init();
KEY_Init();
delay_init();
while(1){
key = KEY_Scan();
switch(key){
case KEY_0: LED0=!LED0 ; break;
case KEY_1: LED1=!LED1 ; break;
case WK_UP: LED1=!LED1, LED0=!LED0; break;
}
}
}
3.4效果
按下KEY_0键后,LED0的状态反转,按下KEY_1键后,LED1的状态反转,按下WK_UP后,LED0和LED1的状态都反转。
0.前言
基于正点原子mini板的程序设计,完成按键控制LED的功能。
在STM32F103实验一:点亮LED灯的基础下(已经建立好led.h和led.c文件),添加头文件key.h和源文件key.c到HARDWARE文件夹下。
1.原理图参照:
3.程序开发思路:
编写头文件key.h,声明相关调用和函数
在key.c文件中编写按键初始化函数
在key.c中编写按键检测函数
在主函数main()中编写按键控制led的程序
3.1编写key.h文件
#ifndef __KEY_H_
#define __KEY_H_
#include “stm32f10x.h”
#include “sys.h”
//声明按键返回值
#define KEY_0 1
#define KEY_1 2
#define WK_UP 3
//声明按键引脚
#define key_0 PCin(5)
#define key_1 PAin(15)
#define wk_up PAin(0)
void KEY_Init(void);
u8 KEY_Scan(void);
#endif
3.2编写key.c文件
#include “key.h”
#include “delay.h”
void KEY_Init(void)
{
GPIO_InitTypeDef GPIO_InitStructure;
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA|RCC_APB2Periph_GPIOC, ENABLE);
//WK_UP初始化
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPD; //下拉输入
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_Init(GPIOA, &GPIO_InitStructure);
//KEY_1初始化
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_15;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU; //上拉输入
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_Init(GPIOA, &GPIO_InitStructure);
//KEY_0初始化
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_5;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; //上拉输入
GPIO_Init(GPIOC, &GPIO_InitStructure);
}
//按键扫描函数
u8 KEY_Scan()
{
if(wk_up){
delay_ms(10);
if(wk_up){
while(wk_up);
return WK_UP;
}
}
if(!key_1){
delay_ms(10);
if(!key_1){
while(!key_1);
return KEY_1;
}
}
if(!key_0){
delay_ms(10);
if(!key_0){
while(!key_0);
return KEY_0;
}
}
return 0;//默认返回值
}
3.3编写主函数main()
#include “stm32f10x.h”
#include “led.h”
#include “delay.h”
#include “key.h”
int main(void)
{
u8 key;
LED_Init();
KEY_Init();
delay_init();
while(1){
key = KEY_Scan();
switch(key){
case KEY_0: LED0=!LED0 ; break;
case KEY_1: LED1=!LED1 ; break;
case WK_UP: LED1=!LED1, LED0=!LED0; break;
}
}
}
3.4效果
按下KEY_0键后,LED0的状态反转,按下KEY_1键后,LED1的状态反转,按下WK_UP后,LED0和LED1的状态都反转。
举报
更多回帖
rotate(-90deg);
回复
相关问答
按键
程序
如何
去
实现键盘中断
按键控制
led
流水灯的设计
呢
2021-11-08
990
如何
去
实现一种基于STM32G0的
按键控制
LED
亮灭设计
2021-10-08
2130
怎样通过411
板
上的
按键
去
控制
LED
的亮灭
呢
2021-11-17
834
请问如何
去
实现一种
按键控制
电机的正反转?
2021-06-29
2046
请问一下汇编语言是如何实现
按键控制
LED
亮灭的
呢
2022-01-20
4402
怎样
去
完成
GPIO
按键控制
的输入驱动实验
呢
2022-02-16
590
如何通过
按键控制
LED
灯和蜂鸣器?
2022-01-18
4029
按键控制
LED
流水灯不成功
2014-11-21
4785
通过一个
按键控制
LED
从
LED
到
LED
7亮灭移动,并有proteus图
2015-04-12
5692
SPI
程序
不能够实现
按键控制
读写的
功能
2019-05-10
936
发帖
登录/注册
20万+
工程师都在用,
免费
PCB检查工具
无需安装、支持浏览器和手机在线查看、实时共享
查看
点击登录
登录更多精彩功能!
首页
论坛版块
小组
免费开发板试用
ebook
直播
搜索
登录
×
20
完善资料,
赚取积分