目前本人已经不再写代码了,只是想把自己走过的弯路,踩过的坑分享出来,希望更多的小伙伴能看到,少走弯路,仅供参考哈!
回想起来核桃已经很多年没有敲代码了,这么多年一直从事硬件工程师这个岗位,相比于软件的ABCD,我更倾向于原理图的设计与PCB,喜欢折腾,喜欢松香的味道。
但是,刚毕业那会,要想得到更多的机会,只能硬着头皮学硬件和软件,大概有一年左右的时间吧,都是一个人兼顾软件和硬件,自己画板,自己调代码!
说实话,只有自己写代码调试自己的板子,才能更加清楚的认识到自己的板卡还有哪些可以优化地方,对于以后从事硬件工程师的岗位益处良多!
我们先来看一段51单片机的点灯程序,如下:
程序是非常简单的,相信很多小伙伴刚开始学的时候都是这样写的,程序一样是可以正常运行的,那这段程序有什么问题呢?
可以看的出来,整个大循环里面除了LED=0和LED=1外,剩下的就是 delayms(100);这个延时函数,是一直让CPU处于等待的状态,啥事都干不了,一直空耗着CPU的资源。
思考问题:如果只是为了点亮一颗LED,这样写是没问题的,但是实际的项目中不可能用一个CPU啥事都不干,就为了点灯,我相信没有哪个老板肯让你这么浪费,所以我们首要做的就是:
把CPU释放出来,哪怕让它一遍一遍的扫描有什么任务可以执行,也不要让它一直在空等待!
那该如何实现?
具体思路:
从上面的程序可以知道,延时的时间是delayms(100),也就是100ms,那我们可以为系统加入一个1ms的基准时间,然后再对这个基准时间进行计数100次,达到100次后,清理该计数值,再对LED的状态进行转换即可!
大概程序如下:
由于核桃很长时间没有写代码了,有不对的地方望小伙伴们能指出来!
还有核桃不是专业写代码的,以上仅供参考哈!
好了,这章就先写到这吧!我们下一章接着唠!