当前位置:   article > 正文

江苏省第十届蓝桥杯嵌入式省赛赛后总结

江苏省第十届蓝桥杯嵌入式省赛赛后总结

2019.3.24

比赛地点是在常州的江苏理工学院,

先来吐槽一下把

作为参赛者来讲,感觉主办方非常的不用心,可能是不重视这种比赛,比赛地点在力行楼,靠近南门的地方,去的时候不让进,让我们把车开到北门进,北门的保安也不知情,直接说不让进,我们说是南门的保安让我们开到北门后,他才让我们下车走进去,但还是没让大巴开进去,于是我们要横跨校园去比赛地点,进学校后,没有导航的人不说,连醒目的导向牌都没有,于是我们只能开百度地图找地方,报单片机的比赛地点似乎百度地图还搜不到。终于到比赛机房后,也没有老师解释情况,有两个老师在整理考场,我们就在外面等,监考的老师对整个流程也不熟悉,比赛开始半个小时后才给我们发资料包,解压密码也半天才说,然后中途不知道什么时候(已经开始比赛,没在意)突然开始念起来比赛注意事项,最难受的是本校参赛的还当场发午饭,我是第一次参赛,没考虑到还可以带面包之类的进去中午充饥,因为比赛时间是早上9点到下午14点,共5个小时,不过问题不大,我3个小时左右的时候就写完了,检查了一下就出去点外卖了嘻嘻。话说常州外卖还挺实惠的,9块钱点了不少东西。

还有就是感觉省赛太水了,准备了很充分,串口、PWM输出、比较输出PWM、捕获输入、IIC等都准备了,然而考试只用到了ADC,,,看完题目的时候我心态就有些崩了,感觉都白准备了,,,题目没带回来

题目的要求大概就是 用ADC测量R37的电压,然后显示出来,然后有上下限,大于上限一个LED灯以0.2s间隔闪烁,小于下限另一个闪烁,中间就没有警报,然后上下限,具体哪个LED灯亮可以通过按键设置,LCD有两个界面,一个显示测量参数,另一个是设置界面。实现的功能就是这样,具体还有一些细节,比如两个LED灯不能相同,电压上下限范围为0-3.3V等。

相比于往年的题目感觉很简单,要配置的外设少,要设计的系统也很常规。

比赛时遇到的问题的话就是,

就是想让某一个LED灯亮的问题,赛前练习的时候一直是用GPIO_ResetBits(GPIOC,1<<(ledx+7));

这句代码来设置,一直没发现这跟直接用 GPIO_ResetBits(GPIOC,GPIO_Pin_8);其实是一样的,然后蓝桥杯的CT117板子8个LED灯的io口是跟LCD共用的,通过锁存器来控制,所以每次想亮一个灯的时候,应该是LCD的程序让这几个管脚都输出低电平,所以会8个灯全亮。

解决方法有两种,①是把1<<(ledx+7)取反后直接赋值给控制寄存器  ②是在 GPIO_ResetBits某个管脚前,先把所有管脚输出高电平,即 GPIO_SetBits(GPIOC,0xff00);,然后再把某个管脚输出低电平

第一种方法要去找寄存器,第二种方法虽然代码多,但编起来思路清晰,我采用了第二种方法。

还有就是延时问题,我采用系统滴答计时器来延时,在中断里设置了一个变量的自增,因为初始化后每1ms会进一次中断,所以可以用来延时,同时不影响程序运行,相关代码如下,但是设置完,LED差不多2s闪烁一次,我不知道是哪里卡了时间,我把Update_Time显示出来看,是正常的,差不多两秒加到2000,然后从头开始,但是LED就是不配合,最后我就缩小了100倍对2取余来判断了,现象来看差不多了,但是还是不知道问题出在哪。

  1. SysTick_Config(SystemCoreClock/1000); //初始化
  2. u16 Update_Time=0;//定义变量
  3. extern u16 Update_Time; //中断在stm32f10x_it.c里,要声明外部变量
  4. void SysTick_Handler(void) //滴答定时器的中断
  5. {
  6. TimingDelay--;
  7. Update_Time++;
  8. if(Update_Time==2001) Update_Time=1; //2000ms即2s一轮回
  9. }
  10. if(Update_Time%200==0) //判断0.2s了

最后,还有一点,就是做完题要提交的文件是确定的,有讲,一个是改动过的文件,还有就是.axe什么的文件,我没认真看规则,所以我整个工程文件夹压缩提交了,不知道会不会有什么问题。

总之,感觉比赛是挺水的,老师监考不严,也不重视,题目也不难,但是报了比赛可以成为自己学习stm32的动力,报了比赛就要好好准备参加,像参加这次蓝桥杯,虽然之前就已经学过了stm32,但是准备过程还是学到了很多新的编码方式以及算法等,还是挺值的。这次有我们学校好像有两个报了名没来参赛的,我觉得既然报了名,参赛的态度还是要有的,不然就是简直浪费钱。

想学东西还是得参加比赛,因为比赛相当于就是学以致用的过程,你会知道你需要学什么,你也会看到你学的东西可以怎么用,这是一个正反馈,学了用,还能拿奖,不然就自己光想着学一些技术,很难坚持下去。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/笔触狂放9/article/detail/440819
推荐阅读
相关标签
  

闽ICP备14008679号