此前也发了关于蓝桥杯的题目,昨天刚比完赛,放松了一下,没来得及整理,早上我就把我所有的思路整理了一下,发出来,希望能帮到大家。当然也有很多不足的地方,希望大家能提出,我们一起讨论。
首先,关于题目的功能,我基本全部实现,一开始发题目,花了10分钟读题整理逻辑,记得是在2小时左右,我基本上都编出来了,就是led那里出了点小bug,后面也是顺利找出来了,然后再把代码完善了一下,后面也是顺利交卷。
今年的题目不算太难,考的模块涉及主要是串口,定时器。附上框图
cubemx配置如下:
由于配置都很简单我就不做多讲,但是由于我用的是G431新板子,必须要配置PD2为输出,保证led的功能正常运行,详细的可以去看我上一篇停车场的介绍,那里有关于这个引脚的详细说明
我将从4个部分进行讲解:led_key--LCD--PWM--串口(uart)
详细的设计要求我就不发出来了,大家可以去官网找,13届蓝桥杯试题
目录
先附上main函数整体代码
整体代码
#include "main.h"
#include "lcd\lcd.h"
#include "ledkey\bsp_ledkey.h"
#include "tim\bsp_tim.h"
#include "uart\bsp_uart.h"
#include "stdio.h"
#include "string.h"
uint8_t B1='@',B2='@',B3='@';//密码初始化
uint8_t time=0,i=0;//控制报警灯参数
uint8_t mauce[30];//lcd显示数组
uint8_t ucled=0x00;
uint8_t lcd_land=0;//屏幕标志位
uint8_t vuale,key_up,key_down,key_old;//按键检测相关变量
uint16_t freqq_HZ,Duty;
__IO uint32_t uwTick_key=0,uwTick_pwm=0,uwTick_lcd=0,uwTick_led=0,uwTick_uart=0;//减速变量
uint8_t buffer;//缓冲接收字符
uint8_t scree=0;//密码是否正确
uint8_t buff[10];//接收的字符放在这里面
uint8_t cout=0;//计数变量
uint8_t yuan_mi[3]={1,2,3};
void SystemClock_Config(void);
void keyledjuel_project(void);
void lcd_project(void);
void uart_rx(void);
int main(void)
{
HAL_Init();
SystemClock_Config();
ledkey_Init();
TIM2_Init();
UART_Init();
LCD_Init();
led_paly(0x00);
LCD_SetTextColor(White);
LCD_SetBackColor(Black);
LCD_Clear(Black);
HAL_TIM_PWM_Start(&htim2,TIM_CHANNEL_