一、CubeMx配置
GPIO配置
定时器配置
USART串口通信配置
二、LED模块
三、LCD显示屏和脉冲模块
四、KEY模块
五、USART串口通信模块
在user.c里配置LED和KEY按键接口
user.c如下
#include "main.h"
void LED_disp(u8 led) //LED模块
{
HAL_GPIO_WritePin(GPIOD,GPIO_PIN_2,GPIO_PIN_SET); //把PD2引脚置高电平(不作用)
HAL_GPIO_WritePin(GPIOC,0xFF00,GPIO_PIN_SET); //PC8-PC15引脚置高电平
HAL_GPIO_WritePin(GPIOC,led<<8,GPIO_PIN_RESET); //RESET低电平有效
HAL_GPIO_WritePin(GPIOD,GPIO_PIN_2,GPIO_PIN_RESET); //PD2置低,锁存器有效
}
u8 key_up;
u8 key_down;
u8 key_old=0;
u8 key_value;
void KEY_read() //按键模块
{
if(HAL_GPIO_ReadPin(GPIOB,GPIO_PIN_0)==0)
{ HAL_Delay(10); //延时10MS消抖
key_value=1;
}
else if(HAL_GPIO_ReadPin(GPIOB,GPIO_PIN_1)==0)
{ HAL_Delay(10); //延时10MS消抖
key_value=2;
}
else if(HAL_GPIO_ReadPin(GPIOB,GPIO_PIN_2)==0)
{ HAL_Delay(10); //延时10MS消抖
key_value=3;
}
else if(HAL_GPIO_ReadPin(GPIOA,GPIO_PIN_0)==0)
{
HAL_Delay(10); //延时10MS消抖
key_value=4;
}
else key_value=0; //没有按键
key_up=~key_value&(key_value^key_old); //按键弹起
key_down=key_value&(key_value^key_old); //按键按下
key_old=key_value;
}
在main.c里实现比赛要求
main.c内容如下
#include "main.h"
#include "gpio.h"
#include "user.h"
#include "stdio.h" //sprintf头文件
#include "string.h" //strlen头文件
unsigned char ui=0; //LCD屏幕
unsigned char password[3]={'1','2','3'};
extern size_t strlen(const char *);
u8 error_num=0;//错误次数
u8 b1_value='@'; //按键B1的值
u8 b2_value='@';
u8 b3_value='@';
u32 lcd_tick=0;
u8 lcd_buf[30];
u8 pwm;
void LCD_proc()<