蓝桥杯2022年第十三届嵌入式详解

本文详细介绍了参与蓝桥杯第十三届嵌入式比赛的实战经验,包括STM32单片机的使用,实现了LED、按键、LCD、PWM和串口(UART)等模块。通过代码和配置,阐述了关键功能的实现,如错误输入报警、LCD字符切换、PWM波形生成以及串口通信的逻辑。文章鼓励读者一起讨论和学习。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

        此前也发了关于蓝桥杯的题目,昨天刚比完赛,放松了一下,没来得及整理,早上我就把我所有的思路整理了一下,发出来,希望能帮到大家。当然也有很多不足的地方,希望大家能提出,我们一起讨论。

首先,关于题目的功能,我基本全部实现,一开始发题目,花了10分钟读题整理逻辑,记得是在2小时左右,我基本上都编出来了,就是led那里出了点小bug,后面也是顺利找出来了,然后再把代码完善了一下,后面也是顺利交卷。

今年的题目不算太难,考的模块涉及主要是串口,定时器。附上框图

cubemx配置如下:

由于配置都很简单我就不做多讲,但是由于我用的是G431新板子,必须要配置PD2为输出,保证led的功能正常运行,详细的可以去看我上一篇停车场的介绍,那里有关于这个引脚的详细说明

我将从4个部分进行讲解:led_key--LCD--PWM--串口(uart)

详细的设计要求我就不发出来了,大家可以去官网找,13届蓝桥杯试题

目录

整体代码

key和led

LCD

PWM

串口(uart


先附上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_
评论 30
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值