在上篇点亮LED灯的基础上,增加检测按键输入。按键按下后,LED流水灯点亮,按键松开后,停止LED流水灯。
一、硬件电路图
1.1、按键部分电路图
按键对应的输入端口是PC13。
二、程序部分
2.1、main.c
int main(void)
{
CPU_CACHE_Enable();
HAL_Init();
SystemClock_Config();
LED_Init();
KEY_Init();
while (1)
{
if(KEY_Scan()!=0)
{
led1_tog();
HAL_Delay(100);
led2_tog();
HAL_Delay(100);
led3_tog();
HAL_Delay(100);
}
}
}
2.2、key.c
#include "config.h"
void KEY_Init(void)
{
GPIO_InitTypeDef gpio_init_structure;
__HAL_RCC_GPIOC_CLK_ENABLE();
gpio_init_structure.Pin = GPIO_PIN_13;
gpio_init_structure.Mode = GPIO_MODE_INPUT;
gpio_init_structure.Pull = GPIO_NOPULL;
HAL_GPIO_Init(GPIOC, &gpio_init_structure);
}
uint8_t KEY_Scan(void)
{
uint8_t ky=0;
ky=HAL_GPIO_ReadPin(GPIOC, GPIO_PIN_13);
if(ky==1)
{
HAL_Delay(5);
ky=HAL_GPIO_ReadPin(GPIOC, GPIO_PIN_13);
if(ky==1)
{
return 1;
}
}
return 0;
}
2.3、key.h
#ifndef __KEY_H
#define __KEY_H
void KEY_Init(void);
uint8_t KEY_Scan(void);
#endif