前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >蓝桥杯嵌入式之比赛总结

蓝桥杯嵌入式之比赛总结

作者头像
用户5935416
发布2019-08-01 10:12:44
2.2K0
发布2019-08-01 10:12:44
举报
文章被收录于专栏:IT界的小白帽IT界的小白帽

蓝桥杯比赛的项目有软件类和硬件类,软件类又分Java和c/c++,硬件类又分单片机和嵌入式。硬件类主要考客观题和程序设计题。客观题主要涉及对相应开发板的认识、数电、模电知识;程序设计题则是按要求在相应的开发板上实现相应的功能。蓝桥杯比赛分省赛和国赛。省赛一般是12月之前报名,3月底举行;国赛一般是5月前报名,5月份举行。但是如果想进国赛的话,需要在省赛拿一等奖。两次参赛都需报名费300元,由学院统一提交。接下来主要对硬件类的嵌入式进行比赛总结。

省赛总结

对于省赛来说,不管是客观题还是程序设计题都是一般的。今年客观题主要偏向模电的知识,对于嵌入式知识的考察基本上可以在比赛给的文档中查出。这主要得益于快捷键Crtl+F键的设计。程序设计题也相对于往年来说是比较简单的。主要考ADC、按键、LCD、LED的知识点。主要的难点是LED闪烁时间的控制,如果用delay延时的话会造成程序的整体混乱,因为按键和ADC需要实时的扫描。但是如果用SysTick的话,很容易使相应的变量无法自加自减。我当时用的是if语句的判断,和延时函数的方法一样。当相应变量大于零时,进行自减,在主函数中判断该变量是否为零,如果为零则进行相应的处理。但是烧写到开发板中发现变量根本没有进行自减(通过LED灯的状态查看的)。后来一直改,进行自加等方法还是不理想。最后把if语句去掉,发现功能实现了。其它的也没有需要注意的问题,也就是I/O时钟初始化函数容易用错。

国赛总结

对于国赛来说。虽然是在一个陌生的教室进行比赛,但是也并没有一丝的紧张感,不是自己心态好,而是国赛的难度和量度导致我没时间紧张。国赛跟省赛的考试流程差不多,也就是所给的资料包多一点,手中又多了一个小的扩展板。当我把试题下载出来后,发现客观题还可以,无非就是多了几道而已。但是对于程序设计题来说,简直就像在看小说,一直翻不到底。每句话都是要求,感觉代码量肯定很多。我一般是先做客观题的。按照以往的惯例,都是一边打开使用手册,一边看题,找出题中的关键字,Ctrl+C,转页面,Ctrl+F,答案出来了。前几道还行,都能找到答案,其实只有一道题吧,之后的就懵了。甚至还有有关信号、计算机三级嵌入式的知识都有。有关信号的题并不是太难,但是计算机三级嵌入式的知识忘得差不多了,尤其是考了难以分辨的知识点。虽然说不是太跑题,但是一般学嵌入式的,能用熟练的也没几个,更别说里面的结构了。

国赛的客观题总算解决,虽然还有几道不知答案的,但是可以放到最后蒙了。接下来就是看程序设计题了,LCD、按键、LED、数码管、ADC*2、USART、EEPROM、PWM输入捕获、DS18B20,共9个模块。看到DS18B20后,立马找比赛提供的驱动,发现只有IIC的,再找,还是没有。看来谁写出DS18B20的代码,谁就国一了,DS18B20的代码至少200行,谁能背的下来,尤其是其中的参数,参考手册又是英文的,看着都心烦,更别说找了。一会有人说给的驱动不够,于是老师又从新发了一个压缩包,上面特意标了一下是国赛的文档。赶紧打开看看DS18B20的代码,翻到最下面,好像少了一个函数,温度读取函数。感觉还不如不给,少了这个函数,DS18B20只能初始化,有啥意思。说好了的,第八届是全给的,只需调用就行,现在换成调包了。

由于程序设计题的要求实在是太多,所以我在演草纸上写出主副界面内容,要用到的模块及每个模块的使用方法。写了半个小时,发现只写了一半,之前写的还都是挑重点写的。什么也不管了,就开始各个模块的初始化代码的复制粘贴修改等。首先是EEPROM的初始化及使用,因为考虑到会考EEPROM,所以考前特意的记了一下。但是保存变量的最大数为65536,两字节的。EEPROM只能一字节一字节的寸。看来只能存两次了。代码写好,试运行。正如所想的那样,理想很美好,现实很残酷,结果很不理想,改了多次还是不行,就放弃它了,开始ADC*2的代码编写。ADC*2的代码编写已经很两费时间了,又在调试上下了很大的功夫、浪费了很长的时间。PWM输入捕获虽然代码很好修改,但是显示效果很不理想,改了半天,才发现用了一个很容易忽略的知识点,就是LCD显示屏如果不对某一行进行清除的话,很有可能在最后面显示之前的字符。大多数的模块初始化、读取等的代码写好,但是查看效果时发现LCD显示屏不亮。第一反应是某个模块初始化的时钟使能函数用错了,于是一行一行的对,发现没有错,很崩溃。开始实行第二步作战计划,一个一个的模块初始化函数一次一次的烧写到开发板上,反正也没事,就是浪费时间。后来发现USART的初始化代码又问题,立即跳转到USART的初始化代码,对按F12键的跳转速度很满意。开始一行一行的找错,但是也没有发现错误,无非是把接收和发送的初始化放一起了,也省略了一些共同的代码。为了减小损失,使自己没有白干活,所以部分的代码注释,看看哪些代码引发错误的。最终定位到是中断的代码有错误,注释掉它。一看时间,快1点了,除了一脸的惊讶就是一脸的危险感,那么多的功能还没实现呢,我还想看看英文呢。没办法,为了保全成绩,只能做好门面工作了。开始调试主副界面的切换及参数的修改。因为主副界面的切换及参数修改跟省赛的差不多。所以感觉没啥可怕的。但是调式也浪费了不少的时间。调式好,开始把写好的模块进一步完善。延时,又是延时,特定时间点的动作。原本高高兴兴的写,但是发现效果又不理想,这根省赛写的一样,难道国赛换板子了,不可能的。改代码,所有的方法都用过,就是结果不理想,投降。最后只剩20分钟的时间了。简单的再增加几个功能。好了,没剩多少时间了,交东西,走人,结果听天由命吧。

最后的总结是, 准备时间太短了,两周的时间不仅要复习基础板的内容还要学扩展板的内容。扩展板的内容虽然简单,但是参数多,尤其是数码管、ADC按键和ADC*2等。一时间容易记乱。

比赛建议

比赛前由于会提前进考场,坐在自己的座位后就可以写代码了,建议先查看自己的板子是否有问题,查看方法是把比赛给的LCD代码下载到板子上。然后就可以写一些简单且常用或记得不清的模块初始化及使用。节约时间,防止真正的比赛时候没时间调试。其它建议可以在上文总结。客观题不会的先空着,最后随便蒙,别把不会的选成多选的就行。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2019-05-31,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 IT界的小白帽 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档