第十二届蓝桥杯嵌入式国赛总结
Posted FILWY_M
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了第十二届蓝桥杯嵌入式国赛总结相关的知识,希望对你有一定的参考价值。
第十二届蓝桥杯嵌入式国赛总结
目录
一、说一些废话
蓝桥杯嵌入式之旅结束了,准备了也有这么久,终于结束了。到此参加了两届的蓝桥杯比赛了,上一次是蓝桥杯单片机,这一次是嵌入式组。两次都进了国赛,害,多期望能够靠这个比赛去一次北京的,两次都因为疫情的原因去不了,下一届估计可以去了,但是大三的老选手不准备参加了。
今天成绩出来了,u1s1,蓝桥杯的圈了这么多钱,出成绩还一年比一年慢,受不了。这一次查成绩比上一次查单片机的成绩更紧张,最后查出来是国一,其实感觉还是可以了,不过心里还是有一丢丢的遗憾,感觉排名还是可以再高一些。
来说一说比赛的一些操蛋的玩意儿吧,比赛之前其实我是比较有信心的,直接8点五十多踩点到的。 然后就是我们学校的电脑直接教我做人,首先是那个keil软件我开了好几分钟才打开,还有浏览器用的还是ie,ie也就算了,刚打开就卡死,好不容易打开了,然后每过一两分钟,ie就卡死,所以每次卡死了我都只能去任务管理器强制退出然后再登陆一遍系统。然后就是cubemx,学校电脑真的是辣鸡啊,打开用了好几分钟,本来想自己建一个新的工程的,不想直接用官方给的模板,然后我也不知道这个用的是哪一
个版本的cubemx,最后生成的代码居然没有HAL库。所以就只能安安心心的用官方的啦,最后时间就消逝了快一个小时了,才能正式开始写代码。然而这并没有结束,在写到串口模块的时候,资源包里面是给了两个串口助手的,其中一个串口居然是坏的,我搞了很久以为是代码的问题,然后换了另外一个串口助手,发现是正常的。最后勉强将功能实现完,大概是一点五十左右,准备再检查一下,这个时候我发现串口接收不到数据了,我感觉应该是电脑的问题,因为我串口调试好之后根本就没有动过,检查了两分钟,实在是没有时间,只能交代码了,希望是电脑的问题,这也是我查成绩这么紧张的原因,最后成绩出来了,那应该就是电脑的问题无疑了,所以,我就想说学校机房的电脑,可不可以升级一下了。。。。
二、备赛须知
1 调整心态
经过这次的嵌入式的国赛,我发现嵌入式的难度确实是比单片机的难度难上不少。 可能很多人是先参加了单片机再参加的嵌入式,单片机或许成绩不错,但是嵌入式就不一定哦。有人说这比赛有手就行,如果就单纯拿个省奖来说,稍微准备两天就可以那个省三,确实是有手就行,毕竟蓝桥杯是圈钱杯哒嘛,但是想要拿到省一甚至是国一得话,也不是这么容易的哦,所以看见群里有人天天瞧不起说是有手就行的,最后也就是个优秀奖。所以摆正自己的心态很重要。
2 赛题难度和趋势
就今年的省赛和国赛的难度来说, 都是比前些年的每一届都要难的。我预感以后的难度可能会逐渐增加。并且从省赛和国赛嵌入式的赛题来说,开始注重赛题的逻辑,并加入算法,省赛考察了对串口接收到的字符串进行提取和解析。国赛还考察了相当于队列的先进先出,可以用环形数组来实现,国赛还考察了排序的算法,我写了一个冒泡排序。至于以后会考察什么,不太清除,就趋势来说,会考察一些基础的算法。
3 文件上传说明
比赛的时候不要犯低级错误,赛题中明确说明比赛压缩包和axf的命名规则。最终要的就是axf,这个是评审依据,然后就是修改过的c和h文件,这个主要就是查询作弊的证据吧,对代码进行查重,所以将axf和修改过的c和h文件打包压缩即可,按下面的要求命名。
4 新版和旧版的平台如何选择?
因为现在处于新旧版的过渡时期,新版和旧版都可以使用的。很有可能十三届之后就取消使用旧版了,即使可以使用旧版,我在这里还是建议使用新版,现在新版的资料也开始多了起来了,并且使用的是HAL库,只要是HAL库的资料都可以参考的,不一定非要找G431的资料,HAL库网上的资料已经非常多了,所以不存在什么学习的门槛。现在的题目更加偏向考察逻辑和算法,但是模块的配置也不见得变少,所以呢,如果使用旧版写模块的驱动会浪费很多的时间,新版使用cubemx很快就可以把模块的驱动配置完成,会节约很多写驱动的时间,可以把更多的时间放在程序的调试上。
三、零基础如何备赛?
1 程序题如何准备
1 STM32学习建议
如果没有stm32的基础的话,我推荐可以看野火的stm32的标准库的教程,从头脚踏实地的开始学习,建工程以及使用寄存器操作GPIO等都不要错过。新版的STM32G431已经没有标准库了, 可以入手一块F103的板子。至于为什么要学标准库,我觉得这样才能更好的理解嵌入式,理解底层的工作原理。当然一百多集的视频不需要全部学完,着重需要学习的有,GPIO的操作,中断,定时器中断,定时器捕获,定时器PWM的输出,STM32时钟系统RCC,串口通信等。
如果零基础的话,这个阶段其实是最难熬的,但是一定要坚持,这个是基础,基础打好了,后面都没有问题。熬过了这个阶段, 后面再准备蓝桥杯的考点的时候会发现其实很简单了。
2 针对蓝桥杯嵌入式的考点进行学习
下面列举出了蓝桥杯嵌入式的大部分的考点,大家就可以根据考点涉及到的知识进行学习。还有就是由于现在使用新版的STM32G4平台,新版平台支持DAC,后面很有可能将不能再使用老板的平台,所以后面很有可能会考到DAC方面的知识,这一大家也应该准备一下。
在这一阶段,其实大家就可以开始熟悉CubeMx了(如果是老板的话还是老老实实的用标准库吧)。然后会发现,CubeMx真香啊,这些模块直接用鼠标点一点,然后在工程中加几句初始化的代码就OK了。对于EEPROM、DS18B20、DHT11、加速度计这些模块,比赛的赛点资源包都会提供驱动的代码的,只需要实现上层的代码即可。
分类 | 省赛主要考点 |
---|---|
LED | LED的开关,闪烁 |
LCD | LCD显示、LCD的高亮显示 |
按键 | 按键的消抖,长按、短按的识别,按键双击、单击的判断 |
定时器 | 定时,PWM输出(单个定时器输出占空比可变,频率可调的方波),输入捕获 |
USART | 数据的发送,数据的接收,接收不定长的数据 |
RTC | 实时时钟 |
ADC | 读取ADC通道的数据,对读取的数据进行滤波 |
EEPEOM | eeprom的读写,存储字符串,double,uint32等类型的数据(使用共用体) |
分类 | 国赛扩展板考点 |
---|---|
SEG | 数码管,74HC595的工作原理 |
DS18B20 | 整数、小数温度获取 |
DHT11 | 温湿度读取 |
PULSE | 定时器输入捕获频率 |
PWM | 定时器输入捕获占空比 |
加速度计 | 获取x,y,z轴的角度 |
ADC按键 | ADC读取,检测按键 |
光敏电阻 | ADC读取,检测光强 |
双通道ADC读取 | 同时读取ADC按键和光敏电阻的值 |
3 刷题
把以往的赛题,能多做几套就多做几套,一定要自己动手做,其实蓝桥杯这个比赛还是有一定程度是应试考试的模样,可以通过刷以前的题来提高自己的水平。刚开始可能会遇到一些大大小小的问题,大家一定要去从根本上找原因,如果出现了不是自己预料中的现象的话,要一步一步分析程序,搞清楚为什么会出现这样的现象,这样自己的硬件编程能力才能提升。要学会分模块来实现自己的代码,把每一个模块都分开来写,比如我在写程序的时钟,涉及到lcd显示的程序我都放在lcd_proc()函数里面,涉及到按键的程序,我都放在key_proc()里面,只需要在主程序中进行调用即可。不要把各个模块杂糅到一堆,不要认为这样很麻烦,在代码量比较大,程序逻辑比较复杂的时候,这样其实是很有好处的,这也需要我们多练习,慢慢体会,慢慢进行提升。
遇到自己不会的大家也可以参考一下我写的代码,以及一些博客,蓝桥杯嵌入式——题目总结及文章汇总。
4 加强C语言的功底,提升算法能力
之前也说到了,现在嵌入式组开始考察一些简单的算法方面的知识,这个就要求我们对C语言的基础要扎实,不需要学习多难得算法,毕竟我们也不是参加的软件组的,但是对字符串的基本操作,以及基本的排序方法等要比较熟悉。我推荐大家可以去OJ平台刷一些简单的题目,既可以巩固C语言的基础,也可以提升自己的思维逻辑,很有效果。
2 客观题如何准备
相比于程序题的话,客观题就比较简单了。客观题会考察一些数模电方面的基础知识,也不需要我们又去复习一遍数模电的教材,只需要把以往的客观题都拿来做一做基本上就差不多了。除此之外可能还会考察一些关于STM32方面的知识,这方面的知识大部分都可以从所给的参考手册中找到答案,所以要学会如何根据关键字去查找stm32的参考手册。
下面附上蓝桥杯所有客观题汇总(第八届到第十二届)。
四、写在最后
大学参加蓝桥杯的比赛就次结束了, 这一过程中,写了很多篇的博客,其中有我刷的历届的赛题,也有关于一些在我学习的过程中遇到的一些困惑的记录,和比较重要的一些模块的讲解,大家可以进我的主页查看,在这里也把我所有的程序全部开源出来, 其中省赛都是用的旧版的STM32F103RBT6写的,新版都是用的STM32G431RBT6写的,除了模块的配置方面不一样,其他程序逻辑方面都是一样的。希望能够帮助到大家。新版STM32G431程序,旧版STM32F103程序。
以上是关于第十二届蓝桥杯嵌入式国赛总结的主要内容,如果未能解决你的问题,请参考以下文章