嵌入式STM32学习——按键的基础知识
3.5 按键基础知识
1.深入理解GPIO输入
GPIO的特点:
- 具有内部上拉或下拉的功能
- 可以使用外部下拉或上拉
按键连接示意图:
按键控制LED灯
灯的电路图:
软件设计流程:
- 初始化系统
初始化GPIO外设时钟
初始化按键和LED的引脚
- 检测按键输入电平来控制LED灯
运行代码:
key.c
#include "key.h"
#include "stm32f10x.h"void Key_Init(void)
{//初始化按键外设GPIO_InitTypeDef Key_Initsturct; //初始化按键结构体//初始化按键时钟RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA | RCC_APB2Periph_GPIOC, ENABLE);
//打开APB2总线下GPIOA和GPIOC的时钟Key_Initsturct.GPIO_Pin=GPIO_Pin_0; //初始化A0引脚Key_Initsturct.GPIO_Mode=GPIO_Mode_IPU; //初始化A0为上拉输入模式GPIO_Init(GPIOA, &Key_Initsturct); //初始化A0结构体Key_Initsturct.GPIO_Pin =GPIO_Pin_13; //初始化C13引脚Key_Initsturct.GPIO_Mode=GPIO_Mode_IPU; /初始化C13为上拉输入模式GPIO_Init(GPIOC, &Key_Initsturct); //初始化C13结构体
}
key.h
void Key_Init(void); //函数声明
led.c和led.h
嵌入式STM32学习——GPIO控制之 固件库实现LED点灯-CSDN博客
main.c
#include "stm32f10x.h"
#include "main.h"
#include "led.h"
#include "bear.h"
#include "key.h"int main()
{//1.初始化灯和按键配置//bear_Init();Key_Init();LED_Init();GPIO_SetBits( GPIOA, GPIO_Pin_1); //初始化led为熄灭状态while(1){if(GPIO_ReadInputDataBit(GPIOA, GPIO_Pin_0)==0) //如果A0口对应的SW2按键按下{GPIO_ResetBits(GPIOA, GPIO_Pin_1); //A1输出低电平,led亮}if(GPIO_ReadInputDataBit(GPIOC, GPIO_Pin_13)==0) //如果C13口对应的SW3按键按下{GPIO_SetBits( GPIOA, GPIO_Pin_1); //C13输出高电平,led灭}}
}