【蓝桥杯嵌入式】STM32G431——十三届第一场省赛真题及程序设计代码详解


前言

本次分享的内容是关于第十三届蓝桥杯嵌入式省赛的解题思路和经验总结。这也是我自上月以来的首次更新,希望能够为大家提供一些有用的参考和指导。

一、题目介绍

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

二、相关模块介绍和重难点分析

1.相关模块

第十三届比赛主要有:LED、KEY、LCD、TIM、USART。

2.重难点分析

这届的目的是做一个密码锁,主要是对按键和屏幕处理的考查。通过按键输入密码,并且通过是否正确输入密码来改变PA1脉冲的输出状态和LED的闪烁情况,以及通过串口发送正确的指令来改变原有的密码。
**难点1:**按键从ASCII码@变成ASCII码0然后在依次增加变成9在变回0如此循环。
**难点2:**对LED1灯持续亮五秒和PWM脉冲持续输出2KHZ五秒再变回1KHZ的处理,这可能是本届最易出错的点。

三.题解

1、代码相关定义与函数声明:

char view;//LCD显示界面 0是输入密码界面 1是PWM输出界面
char temp[20];//LCD显示参数数组
char mark='@';//ASCII@变量
char secret_one,secret_sec,secret_thir;//定义3位输入参数变量
uint8_t judge;//判断串口数据是否合法
uint8_t uled;//LED显示参数
uint8_t pwm;//PWM输出状态界面 0是PWM输出1KHZ 1是PWM输出2KHZ
uint8_t flag;//输入密码超过三次报警标志位
uint8_t wordnum=0;//密码输入次数
uint8_t keynum=0;//按键值
uint8_t arr[7];//接受串口数据数组
uint8_t word[3]={
   '1','2','3'};//初始化密码,储存密码数组
extern struct Chword New_word;
extern char Cword;
__IO uint32_t LED_tick;//LED计时时间
__IO uint32_t PWM_tick;//PWM计时时间

......函数声明......
void pro_view(void);//界面处理函数
void key_pro(uint8_t keyword);安检处
void dis_chword(void);
void LED_dis(void);

2、主函数代码:

int main(void)
{
   
  /* USER CODE BEGIN 1 */

  /* USER CODE END 1 */

  /* MCU Configuration--------------------------------------------------------*/

  /* Reset of all peripherals, Initializes the Flash interface and the Systick. */
  HAL_Init();

  /* USER CODE BEGIN Init */
	
  /* USER CODE END Init */

  /* Configure the system clock */
  SystemClock_Config();
  /* USER CODE BEGIN SysInit */
  
  /* USER CODE END SysInit */
  /* Initialize all configured peripherals */
  MX_GPIO_Init();
  MX_USART1_UART_Init();
  MX_TIM2_Init();
  /* USER CODE BEGIN 2 */
  	secret_one=mark;//初始化输入密码界面的参数
	secret_sec=mark;
	secret_thir=mark;
  	LCD_Init();      
	LCD_Clear(Black);
	LCD_SetBackColor(Black);
	LCD_SetTextColor(White);
	LED_pro(0x00);//使LED全部熄灭
	HAL_UART_Receive_IT(&huart1,arr,7);//开启串口接收中断
  /* USER CODE END 2 */

  /* Infinite loop */
  /* USER CODE BEGIN WHILE */
  while (1)
  {
   
	 
    /* USER CODE END WHILE */

    /* USER CODE BEGIN 3 */
	  keynum=Key_Read(
评论 9
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

嵌入式-小博

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值