模块的封装&GPIO的输入
#include "stm32f10x.h" // Device header
void LED_Init(void)
{
//使能GPIOA的时钟
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA,ENABLE);
//GPIOA模式初始化
GPIO_InitTypeDef GPIO_InitStruct;
GPIO_InitStruct.GPIO_Mode = GPIO_Mode_AF_PP;
GPIO_InitStruct.GPIO_Pin = GPIO_Pin_1 | GPIO_Pin_2;
GPIO_InitStruct.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_Init(GPIOA,&GPIO_InitStruct);
//GPIO的值初始化
GPIO_SetBits(GPIOA,GPIO_Pin_1 | GPIO_Pin_2);
}
void LED1_ON(void)
{
GPIO_ResetBits(GPIOA,GPIO_Pin_1);
}
void LED1_OFF(void)
{
GPIO_SetBits(GPIOA,GPIO_Pin_1);
}
void LED2_ON(void)
{
GPIO_ResetBits(GPIOA,GPIO_Pin_2);
}
void LED2_OFF(void)
{
GPIO_SetBits(GPIOA,GPIO_Pin_2);
}
#ifndef _LED_H
#define _LED_H
void LED_Init(void);
void LED1_ON(void);
void LED1_OFF(void);
void LED2_ON(void);
void LED2_OFF(void);
#endif
#include "stm32f10x.h" // Device header
#include "Delay.h"
#include "LED.h"
int main(void)
{
//GPIO初始化
LED_Init();
while(1)
{
//流水灯的效果
LED1_ON();
Delay_ms(500);
LED1_OFF();
Delay_ms(500);
LED2_ON();
Delay_ms(500);
LED2_OFF();
Delay_ms(500);
}
}
GPIO的读取函数
#include "stm32f10x.h" // Device header
#include "Delay.h"
void KEY_Inint(void)
{
//初始化时钟
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB,ENABLE);
//初始GPIO配置
GPIO_InitTypeDef GPIO_InitStruct;
GPIO_InitStruct.GPIO_Mode = GPIO_Mode_IPU;
GPIO_InitStruct.GPIO_Pin = GPIO_Pin_1 | GPIO_Pin_11;
GPIO_InitStruct.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_Init(GPIOB,&GPIO_InitStruct);
}
uint8_t KEY_GetNum(void)
{
uint8_t key_num;
if(GPIO_ReadInputDataBit(GPIOB,GPIO_Pin_1) == 0)//如果按键被按下
{
Delay_ms(20);
while(GPIO_ReadInputDataBit(GPIOB,GPIO_Pin_1) == 0);
Delay_ms(20);
key_num = 1;
}
if(GPIO_ReadInputDataBit(GPIOB,GPIO_Pin_11) == 0)//如果按键被按下
{
Delay_ms(20);
while(GPIO_ReadInputDataBit(GPIOB,GPIO_Pin_11) == 0);
Delay_ms(20);
key_num = 2;
}
return key_num;
}
#ifndef _KEY_H
#define _KEY_H
void KEY_Inint(void);
uint8_t KEY_GetNum(void);
#endif
#include "stm32f10x.h" // Device header
#include "Delay.h"
#include "LED.h"
#include "KEY.h"
uint8_t Key_num;//定义一个全局变量
int main(void)
{
LED_Init();
KEY_Inint();
while(1)
{
Key_num = KEY_GetNum();
if(Key_num == 1)//如果按键1被按下
{
LED1_ON();
}
if(Key_num == 2)
{
LED1_OFF();
}
}
}