EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
单片机嵌入式产生精确延时的一种方法
7 N+ ?" V9 {1 s& ^' l+ ?8 a
9 |. m& u5 }, V; T8 N前段时间在编写延时程序时遇到了个定时器计数器回绕的问题,也就是计数器达到最大值后溢出,想找个简单的解决方案一直想不出来,函数如下: void Delay(Uint16 ms) { Uint16 currcnt; currcnt = TCNT; //get current cnt register val while(TCNT < currcnt+ms); } TCNT为硬件的寄存器值,在做单片机程序时,精确的延时很常用,也很方便,可以用一个定时器来实现精确延时,上面为实现原理,但遇到一个问题就是上面简单的 处理后有个计数器溢出回绕的问题,利用变量可以解决但是感觉想找一个通用简单的方法一直没找到,突然看到Linux内核上关于时间比较的代码,激动呀,问题的答案 1 T' }* i+ u h/ G- Z( p
|