我是靠谱客的博主 健康航空,最近开发中收集的这篇文章主要介绍第九届蓝桥杯嵌入式类比赛赛后总结,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

今天是周末,我们刚刚结束了蓝桥杯的省赛。现在是身心疲惫啊。
早上 6点25 闹钟刚响就爬起来了,这是这学期以来第一次这么早起,算上整个寒假还有上个学期,可以说是大半年来起的最早的一次了。加上我昨天晚上没睡好,原因很复杂,中途起来一次换了内衣,很尴尬。多的不说,草草收拾完就出门了,按规定时间刚刚好赶上校车。
这是我第一次参加这种比赛吧,省级的,要到别的学校去的。但是说实话一点感觉也没有,在车上就是想再睡一次,没办法旁边的同学都拿出自己的笔记来背,我也最后再看了自己总结的网易云笔记。心想只要不出什么意外不会有问题的。
大概是8点刚过我们就到扬州大学了,果然是别人的大学,看起来就是比我们学校好看。老师给我们分了这半天的干粮之后我们就进去了,不过这个分的夹心面包也太难吃了。我们等待了大概十五分钟才进场的。我的乖乖,嵌入式总共十个人,我们学校就占了一大半。就是由于人少,我们被安排到另一个机房了。
碰到鼠标想到的第一件事就是翻资料,找 keil。结果出乎意料,委员会并没有像去年那样给例子程序,给的是官方库和一个LCD的参考程序,还有一个去年题目的答案,不过咋一看资料也不缺什么了。当我还在庆幸还好前两天把去年的题模拟做了一遍的时候,出事情了!官方给的keil的版本古远,4.11版!这是什么年代的东西,首先没有自动排版,当你换行它不会给你空两个空格,当你想使用TAB的时候它又是四个空格,当你语句结束敲反括号的时候,它不会自动删除前面的空白,哇,实在令人捉急,我这个强迫症啊,我可以说整个比赛5小时,我至少花了半个小时在排版上。
比赛开始,我很熟练的下载题目并且解压缩,很快拿到题目。旁边的人还在纠结理论题在哪做的时候我已经上传完三道题了。这个理论题对我来说还是挺难的,这种东西平时又用不到,谁会去记啊,我写stm32这么久了,就没认真数过ADC有几个外通道有几个内通道,还好可以直接翻看手册。还有就是数电和模电的知识,考前也正好都没看。大概用了 20 分钟才把理论题做完,可能大概也是凉了。
进入编程题,我想着进来第一件事新建一个自己的工程,把名字、文件路径都指定成自己想要的,因为我自己模拟的时候也是这样做的。于是问题就来了,4.11的建立工程和4.74,5.24的根本不同,或者说有区别,4.11版的选好 RBT6 之后给的汇编程序和以前的不一样,我也根本没见过,这就尴尬了,很着急,解决不了。结果没办法了,我只好用现有工程来改造了,我首先想到的是用官方给的 Test 工程,这说白了就是去年国赛的题目,在我印象中好像所有模块都用上了吧,除了那个万恶的蜂鸣器。说到蜂鸣器不得不吐槽,他们单片机组的蜂鸣器也太吵了,整个比赛下来就没停过,这边响完那边接着响。
用着 Test 写好了 LCD 的主界面,和按键扫描,编译通过,下载也都出来了。挺顺利,然后当我写完 TIM2 的中断程序的时候,问题来了,去年的题,这个 Test 压根没用上中断!本来想着自己加上去吧,才发现这个 Test 用的不知道哪来的 LIB ,原来的固件库 *.c 的文件全打不开,按 F12 也跳不过去程序定义。心想完了,这可怎么办,没办法啊。只能再换工程,自己建是不可能了,建了也编译不通过。当时也没犹豫,直接就复制了给的 LCD 例子工程,经过一番折腾,让它大概变成自己想要的模样,也用上了自己最喜欢的 BSP 来管理模块。
时间真的过的很快,我才刚开始写逻辑部分,先说一下我写模块的顺序,LCD, EEPROM, KEY, TIM, RTC, PWM, LED。我刚开始逻辑部分,后面几个老师就开始用午餐了,那香味......没办法,忍了吧。可能因为比较着急,时间过去一半了,加之肚子不舒服,膀胱也难受,我写逻辑部分并不是那么顺畅,写一点忘一点,又回去补。前前后后测试了好多次,主要的还是这次的省赛加入了短按和长按的区别,这个区别的加入,就意味着逻辑部分由原来4个点,变成了现在7个点,其中按键1不需要长按。还有一个问题就是它需要存储时间,印象中时间应该是32位的,比赛的时候不记得了,全弄成16位的了,而且存储的时候,给的例子是一次存储8位数据的,这意味着16位和8位之间又要进行转换了,对于当时的我,无疑是巨大的挑战。就算是平时我也要思路非常清晰才能完全理顺。就这样,这个地方成为了我最大的遗憾,它让我的存储EEPROM这一块没有做好,按键加加满回零这个地方也没有写出来。
前面的都大概测试的差不多之后,放弃了一些,决定把最后的 PWM 和 LED 写出来,当时剩下大概1个半5小时。PWM 实在是写了太多次了,要去哪复制都太清楚了,复制粘贴修改运行。很快完成,但是波形没有出来,哇,好难受。由从头检查了一遍,并且又把频率占空比计算了一次,再运行,示波器上还是没出来波形,于是我在想是不是我不会用这个示波器了,我平时做 PWM 都是从这个引脚输出,到另一个引脚测量的啊。弄了半个小时,我决定把该写的程序写上,测试就不测试了。赶紧写 LED 模块,LED 模块这个地方可是我特别注意过的,之前在这里碰过壁。由于 LED 和 LCD 的数据线用了相同的引脚,在 LCD 运行的时候会影响到 LED。这个当然,官方给出了解决办法,就是用了一个锁存器,具体型号可以看原理图。我练习的时候发现,我写的 LED 之所以会被影响,是因为我每次点亮或者熄灭 LED 灯都是一个个来的,比如当我点亮 LED1 的时候,人家 LCD 也在传数据,改变了其他引脚的电平,这就出现了为什么 LED 总不受控制的感觉。我给出的解决方法是,每次控制都控制所有的 LED 亮灭,用 uint8_t 来初始一个数,转换成二进制并通过移位与上1,来判断灯的亮灭。结果符合设想。LED 很听话,这个模块可能是我做的最有信心的一个了。
至此蓝桥杯已经结束,自己吐槽了这么多,结果也别太在意了吧。哦对了,我还要吐槽的是 XP 系统,当我把窗口最小化的时候,鼠标是动不了的,这又得浪费多少时间啊,用了 XP 才发现原来win10 是这么好用的系统。自己吐槽了这么多,其实最大的问题还是自身的问题,嵌入式并不是我想的那样只要调用库函数,改改已有的程序。一个合格的嵌入式工程师,我认为是能够熟练的写底层,也能灵活的使用库函数,根据自己的逻辑来编写程序,切勿浅尝辄止。这五个小时做没做出来并不能代表什么,这是比赛又不是实际应用,学习嵌入式就是能够自己设计硬件自己编写软件来实现想要的功能,而不仅仅局限于比赛。对于能够调用官方的程序来实现,我觉得这也是一种技能,也不是这样并不好,别人写好让你用的东西为什么不用呢?刨根问底,未雨绸缪。喜欢和工程师交流,也想要成为合格的工程师。
最后给出的比赛建议就是
① 自己平时模拟的时候要用 4.11版本的。
② 数电模电的知识一定要掌握好。
③ 一定要多写些逻辑,意思就是多模拟整套题,能写好一个程序用好一个模块并不代表能写好整个程序。
④ 知识掌握不好,比赛将是一种煎熬。
⑤ 有机会多用用示波器。

最后

以上就是健康航空为你收集整理的第九届蓝桥杯嵌入式类比赛赛后总结的全部内容,希望文章能够帮你解决第九届蓝桥杯嵌入式类比赛赛后总结所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(54)

评论列表共有 0 条评论

立即
投稿
返回
顶部