接上篇LED点亮;http://t.csdnimg.cn/9r6z7
目录
一.硬件设计
二.软件设计
三.完整代码
四.结束语
一.硬件设计
按钮接电源插入PB0引脚,如上图所示
二.软件设计
void key_init()
{
GPIO_InitTypeDef GPIO_InitStruct;
//使能时钟
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE);
//B1 B11
GPIO_InitStruct.GPIO_Mode = GPIO_Mode_IPU; //上拉输入
GPIO_InitStruct.GPIO_Pin = GPIO_Pin_0 ;
GPIO_InitStruct.GPIO_Speed = GPIO_Speed_50MHz; //对于输入用途不大
GPIO_Init(GPIOB, &GPIO_InitStruct);
}
首先就是初始化,输入引脚.开打相应时钟,初始化相应引脚,
GPIO_ReadInputDataBit(GPIOB, GPIO_Pin_0) == 0; 读取相应变化,就可以了
三.完整代码
key.c
#include "key.h"
/*
函数功能:按键初始化
硬件连接:PA1
特性: 按下为低电平---没按下高电平
*/
void Delay_s()
{
unsigned char i;
for(i=0;i<=200;i++) ;
}
void key_init()
{
GPIO_InitTypeDef GPIO_InitStruct;
//使能时钟
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE);
//B1 B11
GPIO_InitStruct.GPIO_Mode = GPIO_Mode_IPU; //上拉输入
GPIO_InitStruct.GPIO_Pin = GPIO_Pin_0 ;
GPIO_InitStruct.GPIO_Speed = GPIO_Speed_50MHz; //对于输入用途不大
GPIO_Init(GPIOB, &GPIO_InitStruct);
}
u8 key_scan( )
{
u8 ret = 0;
if (GPIO_ReadInputDataBit(GPIOB, GPIO_Pin_0) == 0)
{
ret = 1;
}
return ret;
}
key.h
#ifndef __KEY_H__
#define __KEY_H__
//标准头文件
#include "stm32f10x.h"
void Delay_s(void);
void key_init(void);
u8 key_scan(void);
#endif
led.c
#include "led.h"
//LED 初始化程序
void led_init(void)
{
GPIO_InitTypeDef GPIO_LED; //定义GPIO结构体变量
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE); //使能GPIOB端口的时钟
GPIO_LED.GPIO_Pin = GPIO_Pin_1; //LED端口配置
GPIO_LED.GPIO_Mode = GPIO_Mode_Out_PP; //推挽输出
GPIO_LED.GPIO_Speed = GPIO_Speed_2MHz; //IO口速度为2MHz
GPIO_Init(GPIOA, &GPIO_LED); //根据设定参数初始化GPIOB0
GPIO_SetBits(GPIOA,GPIO_Pin_1); //GPIOB0输出高电平,初始化LED灭
}
led.h
#ifndef __LED_H__
#define __LED_H__
//标准头文件
#include "stm32f10x.h"
void led_init(void);
#endif
main.h
#ifndef __MAIN_H
#define __MAIN_H
//用户自定义头文件
#include "led.h"
#include "key.h"
void delay_ms(void);
#endif
main.c
#include "main.h"
void Delay(){
unsigned char i;
for(i=0;i<=200;i++) ;
}
int main(void)
{
led_init(); //LED初始化
key_init();//按键初始化
while(1)
{
if (key_scan() == 0)
{
GPIO_ResetBits(GPIOA,GPIO_Pin_1); //点亮LED
}
else
{
GPIO_SetBits(GPIOA,GPIO_Pin_1); //关闭
}
}
}
四.结束语
以上就是STM32仿真按键点灯的全部了.