一:按键连接示意图
按键控制LED灯
软件设计流程
· 初始化系统
o 初始化GPIO外设时钟
o 初始化按键和LED的引脚
• 检测按键输入电平来控制LED灯
o SW2控制灯开
。 SW3控制灯关
1:key.c工程
#include"key.h"
#include"stm32f10x.h"void Key_Init(void)//按键的初始化函数
{//有两个步骤1:初始化按键外设 2:初始化按键时钟GPIO_InitTypeDef Key_Initstruct;//初始化按键结构体RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA | RCC_APB2Periph_GPIOC, ENABLE );//打开APB2总线下GPIOA和GPIOC的时钟Key_Initstruct.GPIO_Pin=GPIO_Pin_0;//初始化A0引脚Key_Initstruct.GPIO_Mode=GPIO_Mode_IPU;//初始化A0为上拉输入模式,因为上拉模式默认为高电平,按下开关会变为低电平GPIO_Init(GPIOA,&Key_Initstruct);//初始化A0的结构体Key_Initstruct.GPIO_Pin=GPIO_Pin_13;//初始化C13引脚Key_Initstruct.GPIO_Mode=GPIO_Mode_IPU;//初始化C13为上拉输入模式GPIO_Init(GPIOC,&Key_Initstruct);//初始化C13的结构体}
2:key.h工程
void Key_Init(void);//声明函数
3:主函数main.c工程
#include "stm32f10x.h"
#include "main.h"
#include "led.h"
#include "Bear.h"
#include "key.h"void delay(uint16_t time)//延时1ms 软件延时粗延时
{uint16_t i=0;while(time --){i=12000;while(i --);}}int main()
{LED_Init();Bear_Init();//初始化蜂鸣器的引脚GPIO A3Key_Init();//初始化按键的时钟和引脚配置GPIO_SetBits(GPIOA, GPIO_Pin_1); //初始化灯为灭while(1){if(GPIO_ReadInputDataBit(GPIOA, GPIO_Pin_0)==0)//如果按键SW2 PA0等于0就是按下按键{GPIO_ResetBits(GPIOA, GPIO_Pin_1);//A1输出低电平,灯亮}if(GPIO_ReadInputDataBit(GPIOC, GPIO_Pin_13)==0)//如果按键SW3 PC13等于0就是按下按键{GPIO_SetBits(GPIOA, GPIO_Pin_1);//A1输出高电平,灯灭}}}