有关单片机组的相关信息可以搜索到,这里是给已经决定参加单片机组的同学们一点大方向上的学习建议。
首先是基础知识——C语言与单片机以及模数电,已经学过更好,没有学过,也可以借这次比赛经历学习一下。我本人是学过的再参加的比赛,所以如何在准备比赛的过程顺带学习这些基础知识并没有经验,故不多讲。
另外一个基础知识也是能力就是阅读数据手册(板子一些外设芯片的数据手册),我也是在这次备赛中渐渐学会阅读。刚开始也是一头雾水,完全吸收不到手册里的信息。这里有必要说明一下,所谓数据手册就是教你如何使用这款芯片,你当然可以上网搜索找他人如何使用这款芯片模仿着用,但是最好还是自己拥有读手册的能力。手册包括硬件与软件部分,硬件部分信息是与选型相关,我们这个比赛完全不需要看;而软件包括芯片与单片机的通信方式(如pcf8591使用I2C协议与单片机通信)和芯片的使用方式(在达成通信的基础上如何发送指令使其工作)。一般芯片的文件就是先写初始化,然后是使用函数。一开始可以跟一些博主学习如何使用芯片,成功后便可以尝试自己看着手册的说明复现那些代码。当然这是很难的事情,可以多试几次。没时间的同学这部分可以不做,把代码背住就行了。
再说程序,这个比赛的程序架构(架构这词实在高级了,但我也想不到别的能表达我意思的词了)是底层部分+逻辑部分。前者是与题目要求无关的,就像stm32的标准库,写得好的话逻辑部分使用起来就非常方便。包括各种题目中用的芯片的初始化、使用代码等。不过我想把按键、数码管、LED也归入其中,虽然这些没有什么初始化函数。底层的话可以背一些博主的优秀代码,当然一定要理解。比赛不是为了拿奖而是为了提高。辑部分就是要实现题目功能了,一般现场就是思考这部分程序,不会涉及什么算法的。
此外,一份程序写出来了多多少少会有问题,这时候就要debug。我建议是写完一个功能就检验一次,这样出错好查。debug也是编程能力的一部分,我一般会分两步做,第一步先找寻信息,就是不只看出错的地方,也看看别的地方有无问题,比如试验一下代入别的数据或者做仿真调试(可以看到一些寄存器的值),信息多点方便做判断。这样初步判断后就开始第二步,注释掉一些看着有问题的代码看看是否就正常了,总之就是缩小范围最终找到问题。不过不否认有时候会遇到些问题怎么都解决不了,建议跳过算了太花时间了。