第十二届蓝桥杯嵌入式——赛后总结
目录
- 前言
- 主观题分析
- LED
- 按键
- 串口
- 数据处理
- 查询与存储
- 停车费计算
- 其它部分
- 按键切屏
- 空闲车位亮灯
- PWM和低电平切换亮灯
- 赛后总结
前言
本人系第一年参加蓝桥杯嵌入式,本文仅作为自己的赛后总结,写的不好还请海涵。使用的开发板是新板(STM32G431)。
主观题分析
这次的主观题难度不很大,要求你设计一个八车位的停车场管理系统,具有显示车位占用状态、收费标准调整、通过串口存储车牌信息并进行处理、自动计算停车费并通过串口反馈等功能。设计到的外设主要有:LED、按键、串口、LCD、定时器。
因为在准备其他比赛,所以暂时没空复现完整代码,这里只写思路,有空补上。
LED
点灯人,点灯魂,点灯是考的基础的GPIO输出应用。通过查看资源包中的原理图,可以很快判断:GPIO输出低电平&先拉低再拉高PD2,即可点亮LED。
但是,每次更新LED对应IO口时,必须对所有LED的IO进行电平设定,原因大概是操作LCD时,会把PC8~PC15拉低(在蓝桥杯群里看见的,之前都没注意这个问题)
按键
按键就是简单的GPIO输入应用,题目要求对按键进行消抖处理,且响应时间小于0.2s(200ms)。实现起来也非常简单,直接使用查询的方式,对应IO口读到低电平,HAL_Delay,再读到低电平则可判断按键被按下。延时我写的是100ms,效果挺不错的,没出现过重复触发的情况。
串口
串口需要注意的是题目中要求的波特率是9600。剩下的就没啥了,根据协议长度,定义buffer,开启中断接受,重写串口中断回调函数,记不得的话可以ctrl+f直接搜索,但一定别复制错了(《关于我复制错了函数名然后一个小时没找出协议解析失败原因这件事》)。
数据处理
先上协议:
停车类型(4位):车牌号(4位):YYMMDDhhmmss,加起来一共22位,冒号做分隔符。
查询与存储
计算停车费,首先得记录该车的车牌、入场时间、停车类型这三项信息。看见这个需求,我第一反应就是——上链表!灵活的增加、删除数据,感觉很不错,但是我忘了咋写(dbq马上重新去学数据结构)。无奈之下采用了一个二维数组和几个一维数组来存储信息。还好只有8个车位,存储和查询直接遍历问题都不会很大。
在存储数据前,我们应先查询该车是出场还是入场——即检查数组中是否有该车牌信息。这部分可以通过遍历解决,先判断读取的停车类型是否与当前的类型吻合,若吻合,则判断车牌号,否则继续查询,同时记录下最后一个空闲状态的车位地址,若该车是入场则可以直接进行存储。
停车费计算
当查询到吻合的车牌号后,便可以判定是出场了。首先将多位uint8_t型的时间信息转换为具体的小时,其中分和秒单独计算,因为不满一小时按一小时计。然后直接根据停车类型和收费标准干就完事了,最后HAL_UART_Transmit,解决。
其它部分
下述部分全部放在while里就行。
按键切屏
检测到按键按下,调用给的函数重新输出LCD信息即可。
空闲车位亮灯
和按键一样,不断查询。
PWM和低电平切换亮灯
这部分当时没来得及做(本来应该最先做的),设定个定时器,输出PWM,通过改变占空比在方波和低电平间切换。
赛后总结
第一次参加蓝桥杯,也是蓝桥杯嵌入式第一年用新板+HAL库。看往年的标准库经验都是找到官方例程–>复制–>粘贴,所以没大上心,只留了一个晚上熟悉板子。在考场上随便看了两眼题目觉得不难,一开始慢悠悠的边写边测外设,浪费了不少时间。坐我隔壁看着挺老练的哥们看着比我还闲,更加坚定了我对题目量很小的错觉(到最后发现原来是他不会)。
通过本次“力争省四”的经历,总结如下。
1.因为HAL库代码量很大,所以先读题,然后把所有用到的IO和外设都在Cube里先配好,一次生成,节省时间。
2.赛前一定要能熟练编写相关外设代码(实际上也没几个),上了赛场可以很快的复现出来,减少测试外设代码的时间。中断回调函数函数名一定别敲错。
3.提前一天看客观题。
4.心态要稳,别漏提交文件
5.早饭一定要吃,同时确保自己的水杯杯盖能扭开(关于我泡了热茶结果场上扭不开然后嗓子冒了五小时烟这件事)
发布本文时离省赛出结果大概还有一个星期左右,PWM没写费用没测试+最后一分钟提交并在一天后想起漏交main.h的我觉得自己已经可以参加省四争夺赛了。
2021.05.26更新:
结果出了,意外拿了个省二,回本基础上还能赚点小钱钱造车,这波不亏。明年时间较为充裕(大概不做RM了),好好准备一手,争取搞个省一回来。
2022.03.12更新:
沉迷造车的鸽子终于想起来还有一个月不到就省赛了,把板子和题目翻出来又做了一遍。脱离生产环境好久手速也不行了,前前后后做了好久。。。尝试了之前想的链表方案,写出来相对有点复杂,而且有点bug不想修了,就用遍历法简单写了一个。大体测试了下没啥问题,下面附上链接:
du盘:https://pan.baidu.com/s/14M4SYPv-Ja8wXI1zMRcKTQ?pwd=paay
提取码: paay
LED部分还在有点问题,暂时把文件先删了,编译的时候需要自己补上led代码
第十二届蓝桥杯嵌入式——赛后总结相关推荐
- 蓝桥杯嵌入式——第十二届蓝桥杯嵌入式国赛
蓝桥杯嵌入式--第十二届蓝桥杯嵌入式国赛 之前准备省赛的时候用的是旧版的STM32F103,从准备国赛开始就用新版STM32G431平台了,主要是想经过新版的准备学习一下HAL库以及CubeMX的使用 ...
- 【蓝桥杯嵌入式】第十二届蓝桥杯嵌入式省赛客观题及详细题解
题1 解析: 波特率,指每秒钟传输码元符号的个数,对符号传输速率的一种度量,单位为1baud/s. 由于串口只有高低电平之分,即1码元等于1bit,即波特单位1baud和1bit等效,因此,此时的波特 ...
- 第十二届蓝桥杯C++赛后感
文章目录 A 空间 卡片 直线 货物摆放 路径 时间显示 G砝码称重 H杨辉三角形 双向排列 J括号序列 注:有些代码忘了考试时怎么写的了,(我也懒得重新写),所以很多题的代码是acwing蓝桥杯讲解 ...
- 【蓝桥杯嵌入式】第十二届蓝桥杯嵌入式省赛程序设计试题以及详细题解
原题展示 通读本试题后,可以知本试题所涉及到的模块有LCD显示.LED指示.按键切换.串口收发.定时器的PWM输出五个部分,试题的总体变化不大.在试题要求的所有功能中,串口这部分是侧重点,它既 ...
- 第十二届蓝桥杯电子类嵌入式设计与开发省、国赛经验分享
文章目录 前言 一.嵌入式省赛 二.嵌入式国赛 1.前期准备 2.国赛考试 总结 前言 已经考完差不多两周时间了,自己也一直想找个时间写一篇关于蓝桥杯的总结,所以今天就来啦,希望可以帮到后面想参加蓝桥 ...
- 蓝桥杯单片机——第十二届蓝桥杯单片机第一场省赛
蓝桥杯单片机--第十二届蓝桥杯单片机第一场省赛 目录 蓝桥杯单片机--第十二届蓝桥杯单片机第一场省赛 一.赛题分析 二.问题总结 三.代码 一.赛题分析 前两天实验室的学妹把开发板还给我了,刚好今天没 ...
- 报!!第十二届蓝桥杯大赛报名启动!!
蓝桥杯全国软件和信息技术专业人才大赛是由工业和信息化部人才交流中心举办的全国性IT学科赛事.共有北京大学.清华大学.上海交通大学等全国1200余所高校参赛,累计参赛人数超过40万人. 2020年,蓝桥 ...
- 2021第十二届蓝桥杯B组省赛C/C++做题过程与反思
2021第十二届蓝桥杯B组省赛C/C++做题过程与反思 鄙人大一,第一次有幸参加蓝桥杯b组c.以下是本人的做题全过程,注意了!!!!不一定是正确答案!! 如果有误,还请大佬们指点指点. 试题 A: ...
- 十二届蓝桥杯省赛B组C++解析(填空题部分)
十二届蓝桥杯省赛B组C++解析(填空题部分) 目录 十二届蓝桥杯省赛B组C++解析(填空题部分) A:空间 B:卡片 C:直线 D:货物摆放 E:路径 A:空间 该题是一道计算机基础原理题,这里需要了 ...
最新文章
- 字符串转换成utf-8编码
- PMCAFF | 别学东学西了,先建立自己的知识体系吧
- 8086算术移位指令SAL和SAR
- 雅虎、领英接连退出中国,GitHub 会受到影响吗?
- C语言学习笔记---枚举类型enum
- 如何手绘表格_Word2010中怎样用画笔绘制表格
- bzoj 2962: 序列操作
- 《线性代数》(同济版)——教科书中的耻辱柱
- 微机实验报告2 显示程序实验
- IAR 软件的安装教程
- 晶振封装与频率对照表
- PLC编程时三个注意事项
- java 学习资料 分享
- html5 简单实例源代码
- 软考c语言题库,【中级】软考题库每日一练|4.4
- 清理git本地帐户信息
- Vmware中win7联网
- 给出问题一个临时解决方案(110224)
- Java TemplateProcessingException之Cannot execute subtraction: operands are null and #1234
- python生兔子问题(递归算法)_python 实现兔子生兔子示例