一、实现流程
1、配置GPIO端口时钟
2、初始化GPIO目标引脚为浮空输入
3、编写测试程序,检测按键状态,实现LED翻转
二、具体代码
main.c:
#include "stm32f10x.h"
#include "LED.h"
#include "Key.h"
int main(void)
{
LED_Init();
Key_Init();
while(1)
{
if(KeyScan() == 1)
LED_Turn();
}
}
key.c:
#include "Key.h"
void Key_Init(void)
{
RCC_APB2PeriphClockCmd(GPIO_CLK,ENABLE);
GPIO_InitTypeDef GPIO_InitStruct;
GPIO_InitStruct.GPIO_Pin = GPIO_PIN;
GPIO_InitStruct.GPIO_Mode = GPIO_Mode_IN_FLOATING;
GPIO_InitStruct.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_Init(GPIO_PORT, &GPIO_InitStruct);
}
uint8_t KeyScan(void)
{
if (GPIO_ReadInputDataBit(GPIO_PORT,GPIO_PIN) == 0)
{
while (GPIO_ReadInputDataBit(GPIO_PORT,GPIO_PIN) == 0);
return 1;
}
else
return 0;
}
key.h:
#ifndef __KEY_H
#define __KEY_H
#include "stm32f10x.h" // Device header
//引脚定义,这里根据实际情况更改
#define GPIO_CLK RCC_APB2Periph_GPIOA
#define GPIO_PORT GPIOA
#define GPIO_PIN GPIO_Pin_1
//函数声明
void Key_Init(void);
uint8_t KeyScan(void);
#endif