本帖最后由 lhjmy 于 2020-5-8 16:31 编辑
今天给大家看一个小项目,主要用到了之前讲的定时器,利用它的定时功能,结合先前学过的声光报警功能,制作出了一个OLED定时提示器。该项目结合了OLED显示和电容触摸键,大家可以先看一下这个功能,通过对定时器的学习,可以自己来实现一下这个功能,并且可以扩展很多好玩的功能,这个电路板自己也可以亲自制作,之前AD教程有过介绍。 也分享一个 Systick滴答定时器,这个定时器有别于教程中介绍的定时器。有兴趣的同学也可以多了解一些。
相关问题总结如下,同学们可以自行参考: 1、 Q:老师,我看好多例程上的延迟函数,都用的是滴答定时器,这个也是么?为什么不用通用定时器? A:滴答定时器和其他定时器都可以用作延时,也可以用作定时,滴答定时器用起来方便一些,从资源上来说,滴答定时器更经济。通用定时器 高级定时器,我们一般用作其他更复杂的功能,不会单纯的实现一个延时功能,但是滴答定时器相对来说,更适合实现延时这个功能,这样的话就不用占用其他定时器了,节约了一些资源,项目如果复杂的话,节约这一个资源对硬件要求会有很大改善的。有时候对资源的合理利用,也非常关键,大家现在学习的时候可能还没有多少体会,以后做的项目多了就会体会到,什么功能用什么资源最好,最优。
2、 Q:老师,c语言可以自己写库吗,然后装好在写其他程序时调用? A:没问题啊,keil编译器可以将你写的代码编译成库文件,供其他工程调用。如果你的一些功能代码是固定的,成熟的,模块化的,完全能把它封装成库的形式,供大家调用,这样非常好。
3、 Q:就初学者的水平来说,用定时最多的就是中断和pwm? A:这个不针对初学者,定时的话,用定时器和中断来实现,用的最多。
4、 Q:如果仅仅单纯的实现一个功能的话就比较简单,如果5—6个功能往一起链接,就会出现想不到的问题。比如上次说的充电桩项目,我设计了手机启动,按键,IC卡启动三种方式,设计了一个显示屏,就这样几个功能还一直出问题,很苦恼。 A:像这种情况,不要直接写代码,前期花一些时间去想,怎么结合,用笔把流程图画出来,不断的改进,直到自己觉得差不多了,再开始编码实现,编码之前是设计,编码就是搬砖的过程,苦力活,编码完成了,就是调试,调试也要占很多时间,也是最难的阶段。
5、 Q:在调试的过程中,在debug中打断点可以执行下去,但是退出debug模式它就不可以执行了,这是什么原因? A:这种现象,很可能就是:实际上也执行了,但是逻辑上有问题,导致断点停下来再执行正常,和全速执行就不正常。也就是说,上电后第一次执行了,这个地方需要结合其他模块的信号才能出结果,但是全速执行,很快的,有可能这个地方时序发生了问题,导致出不了结果;debug的时候,你在这个地方是停下来的,这样就影响了时序,最后结果出来了;所以这个问题应该就是时序、逻辑的问题,也不是简单延时就能解决的,需要找出问题根源,否则,系统工作起来就会不稳定,时好时坏。不过作为调试,是可以尝试加上一个延时,看结果对不对,然后去分析问题的根源,这样也是可以的。
(完)
|