这几日蓝桥杯省赛的结果也陆续出来了,我也看到了自己的名单
看了名单直接绷不住了,再差几名直接就蹦到省四了 
 回顾自己的参赛作品,主要的问题有两个:
-
** LCD格式
** -
** PWM速度的按键切换 **
关于LCD格式的属于是脑子犯浑了,当时没有注意到对于格式的要求,是比赛结束后看到的关于格式要求。 关于比赛的文件中是有展示LCD的界面显示部分
虽然我当时没有意识到这里的数字是格式要求~~ 然后听朋友说LCD的显示分数是会扣很多很多分数的。
虽然我觉得将LCD的显示功能占分提高到很大的比重有点不太应该,不过没办法硬规则如下。
其次是按键的问题,题目要求的切换频率的按键要求是按键2(结果不知道为什么我做到按键三去了可能是当时锁定的按键是四,我以为俩个在一起然后写的快就写到按键三去了)
不过从总体的情况来看,失败的点还是蛮多的,侧面也凸显出这些赛道的竞争激烈程度(还有学弟的EDA赛道沉没了) 赛后回顾以及些许话
回顾这次比赛有许多的地方值得反思,第一肯定是审题了,不过这点我觉得是题目的表述也有问题。
题目也并没有明确对LCD显示屏的格式规范进行规定,不过不知道蓝桥杯的批阅过程,但是如果是机器批卷的话,就可能对格式会有强烈的要求,甚至格式要求被排在了首位。
其次是 编程方式的问题 。
在之前的文章中提到了为什么选择使用状态机,类似FreeRTOS的思想但是不敢使用的FreeRTOS的原因。
这点不知道是不是赛方批卷方式的问题,因为好像是有检查点的情况,所以大概率的可能是机器批卷,不过个人认为对于嵌入式方向的编程来说,不同于软件赛,结果是一个百分百正确的答案,对于嵌入式来说很多事情没有百分百正确的答案。
例如在ADC转换成占空比的过程中
首先这里的x由于是int类型的(就算不是,到时候修改占空比的时候也必须是整形)那么必然会遇到向下取整的问题。
虽然理论上的ADC电压是3.3V但是事实上并不会真正的测到3.3V(实测滑动变阻器的拉满测得的电压是3.27V)那么如果照着正常公式计算的话,最后滑动旋钮的占空比将会是99%而不会到达100%,因为就会面临着向下取整的问题,所以也无法满足保持高电平的要求,这点如果使用机器阅卷的话,不知道会怎么判。
ADC_Ave[num%5] = HAL_ADC_GetValue(&hadc1); HAL_ADC_Start(&hadc1); if(num % 5 == 4)//100ms { ADC_Value = 0; for(int i = 0;i<4;i++) { ADC_Value += ADC_Ave[i]; } ADC_Value/=4; ADCf = ADC_Value*3.3/4095; if(ADCf>TrueP[0]||ADCf<TrueP[1]) { ADCError = 1; } else { ADCError = 0; } }
还有就是电压采集部分,这里定时器10ms为周期,这里本来是正常的10HZ的采样频率,但是后来加上了采样取平均,虽然数据依旧是10HZ的刷新率,但是实际采样率是50HZ
这里也是一点十分疑惑的地方,因为事实上采样使用多次取平均的方式还是非常常见的,但是不知道这样子是不是不符合题目规定的10HZ的要求。
因此个人认为对于嵌入式来说改卷方式也是值得考究的,机器批改虽然会大幅度的节省人力,但是也会忽略实际使用场景的情况,这也是
大部分比赛相较于PPT大赛,更注重现场的验收与评估 吧,所以这次蓝桥杯的结束也是希望后续的朋友能够有所收获。