历史上的今天
今天是:2025年08月19日(星期二)
2021年08月19日 | 1.13.2_高精度延时函数_P
2021-08-19 来源:eefocus
在使用某些设备时,对延时时间的精度有很高的要求,这时候,就可以使用高精度的延时函数来实现精准延时。
实现方法
实现高精度的延时函数的方法主要有以下两种。
使用for循环
在for循环中循环自减,为0跳出,以此来实现延时;这种方法实现难度较高,需要不断测试才能确定一个比较精确的值,且移植性能很差(同样程序,比如在Nor和SDRAM上运行,花费的时间将不同,不同款的SDRAM设备,花费的时间又会不同)。

使用定时器
使用芯片内部的定时器可以实现微秒级的精准计时。
假设有一个定时器,设置一个初始值,每来一个CLK计数值就减一,减到0则重新计数。
假设Tclk = 0.1us,也就是每0.1us来一个时钟脉冲,那么我们只要不断的读计数值,计数值减少10,就说明过去1us了。

这种方法,会有下面两种情况发生:
两次读取中,计数器的值没有减为0,也就是说计数器的值没有被重置;
两次读取中,计数器的值被重置了;
第一种情况下,相差的时间就是最初的计数值pre-当前的计数值cur;
第二种情况下,相差的时间则是pre-0+5000-cur。
假设重载值为50000,时钟脉冲间隔为0.1us,50000*0.1=5000us=5ms,即这种方法延时的最大时间是5ms,如果超出5ms,这种方法就会出错。

首先将时钟脉冲改为0.2us,这样5个脉冲就是1us。

然后根据计数值实现延时,注意尽量少调用函数,因为调用函数需要浪费较多的时钟周期,还有读取计数值时从TCNTO0寄存器读,这个寄存器专门用于获取timer0的计数值。

延时1min进行测试,测试结果符合预期。
史海拾趣
|
我在分析解调移频信号的上下边频信息,可是边频精度总是不能达到要求,希望得到高人指点,报酬没有问题! 您可以直接和我联系,邮箱:liukaihuaaaa@163.com 我是在DSP(TI的28系列)上实现的。… 查看全部问答> |
|
一款功能强大的STM32F103ZE开发板(第2版,功能更强大)原理图和用户手册 http://item.taobao.com/auction/item_detail-0db2-bd07cdab392006dcd5619d61bdbff81c.jhtml 硬件资源: ■8M晶振作为MCU的时钟,32768晶振用于RTC ■1M字节SRAM,16M字节NOR Flash,128M字节NADN Flash ■2M字节串行Flash,256字 ...… 查看全部问答> |
|
目前在做1317测试,不知变压器是如何取值;输出3*1W和1×3W 的LED驱动; 还有是否可以附带一些安规,和EMI的一些资料谢谢 我之前沿用的是以下文档的计算方式;之前好像在论坛上发过;由于各个IC的供电电压不一致,可能绕法不会相同;… 查看全部问答> |
|
系统是WINCE NET 5.0CORE之前发贴不能回复了,所以再发贴问下! 系统是WINCE NET 5.0CORE 之前问过,没有人能帮忙,现在问下,这个功能能实现吗? 我想我复制到导航仪上的SD卡的文件别人不能复制出来,或者离开我这个SD卡不能够运行。和我的SD卡的ID号码或者别的什么特定的东西绑定。谁能帮忙下啊, 顺便问下 ...… 查看全部问答> |
|
各位大侠,小弟毕业设计布置了这个任务,老师进度抓地太紧,我有限的知识实在来不及了。 需要在模拟器下实现,TCPMP的0.72RC1源码我已经在EVC下编译好并能成功运行了,下面就是界面问题。 界面设计原型和切片的图片都有了,而且只需要实现音频播 ...… 查看全部问答> |
|
我定制了一个wince5.0操作系统映像,运行时用远程工具拷贝进去一个应用程序和一个动态库,应用程序调用动态库,在别人定制的设备上运行没有问题,但是在我定制的设备上就不行,加载动态库失败. 如果应用不加载动态库就没有问题.请问定制wince5.0映像时 ...… 查看全部问答> |




