STM32寄存器模式实现按键控制LED灯的状态
使用正点原子的开源代码,保证了程序的简洁性和可读性。
key.h文件:
#ifndef __KEY__HH__
#define __KEY__HH__
#include "sys.h"
//KEY端口初始化
#define KEY0 PHin(3)
#define KEY1 PHin(2)
#define KEY2 PCin(13)
#define WK_UP PAin(0)
//声明动作宏
#define KEY0_PRES 1 //KEY0按下
#define KEY1_PRES 2 //KEY1按下
#define KEY2_PRES 3 //KEY2按下
#define WKUP_PRES 4 //KEY_UP按下
//函数声明
void KEY_Init(void);
u8 KEY_Scan(u8);
#endif
key.c文件:
#include "key.h"
#include "delay.h"
void KEY_Init(void)
{
//使能时钟 PORTA、PORTC、 PORTH
RCC -> AHB1ENR |= 1 << 0; //A是首位
RCC -> AHB1ENR |= 1 << 2; //C是三位
RCC -> AHB1ENR |= 1 << 7;
//设置GPIOx模式 GPIOA、GPIOC、GPIOH
GPIO_Set(GPIOA, PIN0, GPIO_MODE_IN, GPIO_OTYPE_PP, GPIO_SPEED_2M, GPIO_PUPD_PD);
GPIO_Set(GPIOC, PIN13, GPIO_MODE_IN, GPIO_OTYPE_PP, GPIO_SPEED_2M, GPIO_PUPD_PU);
GPIO_Set(GPIOH, PIN2|PIN3, GPIO_MODE_IN, GPIO_OTYPE_PP, GPIO_SPEED