对于这次已经是第二次参加蓝桥杯了,对于一些经验想在这里分享给一些参加蓝桥杯嵌入式的学弟。对于每次蓝桥杯虽然是有点水,但是可以打下STM32的基础,对于一些外设都可以进行尝试,为后面的电赛打下基础。对于蓝桥杯官方还是推荐使用CubeMax这个软件,但是我个人并不是非常推荐,即使当时我也是非常的喜欢这个软件,后面就不太喜欢了。因为有个学弟发现生成的代码非常不匹配,对于这个问题在比赛假如碰见是一个非常大的隐患。
那应该如何不使用CubeMax软件就能进行一个工程的搭建?比赛官方还是提供了STM32的官方资料和数据手册,在没有CubeMax的那个时代,我们都是使用这个进行代码参考和工程搭建的。
所以在这个幸运的时代,我们都是幸运的人。
对于打开第十二届蓝桥杯嵌入式的题目,我们可以看见一些基本要求和备注。这些我们都是要仔细的阅读。对于我们有一个优质选手就是因为准考证号没有弄对,就错失了省奖。也是一个非常严重的问题。
从硬件框图就可以看见,我们要做的就是LCD显示,串口通信,控制信号的输出,按键输入,LED显示。还是比较简单的。
主要的功能:
(1)停车计费系统,能够完成费率设置、费用计算等功能。
(2)使用串口获取车辆进、出停车场信息和时间,并能够输出计费信息。
(3)使用按键完成费率设置、调整功能。
(4)按照显示要求,通过LCD显示停车状态、费率参考。
(5)输出脉冲信息。
(6)有LED指示灯。
对于这一个框架我们首先有一个大概的认识,我们无非就只要搞好一些状态就可以了。
对于第一步,我们还是先搞好显示屏,显示屏和按键的搭配这些非常重要,对于按键响应时间要小于0.2秒这一步大家可以不用管。我也实在想不到为什么按键会占掉0.2秒,可能的原因就是代码不能存在死循环,或者循环次数太多,以至于切换到按键这一块就非常卡顿了。我们的代码一定要做超时处理,不能单纯的进行等待。可以说对于按键的实时性还是要保持的,虽然没有中断那么快,但是软实时还是在个人的容忍的状态下的。
一些外设还是非常简单,可以极速处理。
对于串口接收,这里还是比较推荐IDLE中断处理,因为他是没有回车和换行的,这样的话就不知道什么时候这个指令结束了。有了IDLE中断处理就能浪费一个停止位的时间进行判断是否结束。
感觉还是非常好用,方便检查该指令是否格式正确。否则一位一位过来,又不知道什么时候停止,只能通过判断已经接收到的一定数目的字符进行判断。通过RXNE中断只要指令不是太离谱,还是可以做出来的。
主要的还是这个串口接收的处理情况比较麻烦。头脑一个大概的框架要有,可以来说还是简单的。对于这里代码就不进行粘贴了,主要是博主是在main()函数实现的,写的还不是很清楚,又不写注释,可能只有博主一人看得懂了吧。在这里仅仅提供一个思路。