说明:
????????这里说明一下,STM32有很多文件,我这里上传的只是部分配置文件,不是所有的文件。
代码:
main.c文件
#include "system.h"
#include "SysTick.h"
#include "led.h"
#include "key.h"
int main()
{
SysTick_Init(72);
LED_Init();
KEY_Init();
while(1)
{
if(KEY0==0)
{
delay_ms(10);
if(KEY0==0)
{
while(KEY0!=0);
LED1=!LED1;
}
}
if(KEY1==0)
{
delay_ms(10);
if(KEY1==0)
{
while(KEY1!=0);
LED2=!LED2;
}
}
}
}
key.c文件
#include "key.h"
#include "SysTick.h"
/*******************************************************************************
* 函 数 名 : KEY_Init
* 函数功能 : 按键初始化
* 输 入 : 无
* 输 出 : 无
*******************************************************************************/
void KEY_Init(void)
{
GPIO_InitTypeDef GPIO_InitStructure; //定义结构体变量
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA|RCC_APB2Periph_GPIOE,ENABLE); //开启外设时钟
GPIO_InitStructure.GPIO_Pin=KEY0_PIN|KEY1_PIN; //定义了三个引脚
GPIO_InitStructure.GPIO_Mode=GPIO_Mode_IPU; //上拉输入
GPIO_Init(KEY_PORT,&GPIO_InitStructure);
}
key.h文件
#ifndef _key_H
#define _key_H
#include "system.h"
#define KEY0_PIN GPIO_Pin_4 //定义KEY0管脚
#define KEY1_PIN GPIO_Pin_3 //定义KEY1管脚
#define KEY_PORT GPIOE //定义端口
#define KEY_UP_PORT GPIOA //定义端口
//使用位操作定义
#define KEY0 PEin(4)
#define KEY1 PEin(3)
void KEY_Init(void);
#endif
运行结果:
按键按一下LED取反一下。但是效果不是特别的好,不是特别的准,下次看看怎么改进。
|