大家好我是华维蔵鹰,我从业单片机这个行业也有些年头了,刚开始我写的程序跑起来也像老爷车一样慢吞吞的,在整个程序的载入过程中大概要一分多钟,而同事做的另一个版本的比我快上20秒左右。我们都是参考老版本代码做出来的东西,这个差距无疑是非常大的。
后面通过在网上收集了很多的资料和查看一些大神的代码,我发现里面也是有一些门道的。大概在两三年前我写的程序里已经几乎找不到 delay() 了,因为程序中没有 delay 你会发现整个程序跑起来会明显的发现会比之前带有delay的快。下面我们来聊一下平时写单片机程序中一些可以让我们加速的地方。
我们的程序框架是 main 函数里先初始化,然后 while(1),前台程序是各种中断。
以下几种情况是导致我们程序运行久的常见原因:一种是按键程序判断会用到 delay 消抖,最典型的消抖需要耗时5ms。一种是动态显示时候显示一位数码管时候也会用到延时 5ms 左右。还有一种是等待串口发送完成。单片机处理的速度在“微秒”级,而按键抖动的时间至少在“毫秒”级,这对于单片机来说是一个非常“漫长”的过程。
像消抖和数码管的延时问题我们可以这样处理,我们可以在定时中断里面判断按键的状态,