ARM实现精确延时
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
ARM中怎么实现精确延时
我是用avr上转型过来的,我也遇到这样的困惑,后来发现arm实在太快了,延时函数很好写,这是我随手写的,精度在us级的表现都不错。
如果要验证的话在keil仿真看看就知道了。
头文件:
#ifndef __delay_H
#define __delay_H
#define Fclk 60000000
//**********************函数声明***************************
void delay_ns (unsigned long int t);
void delay_nms(unsigned long int t);
void delay_nus(unsigned long int t);
//*********************************************************
#endif
/****************************************************************
* * 延时函数
* *功能:产生软延时
* *芯片:LPC2148
* *作者:莫锦攀
* *时间:2007.10.23
* *备注:所有函数在12m频率以上都比较准确,注意头文件里Fclk的设置
****************************************************************/
#include "delay.h"
/**********************************************************************
**函数名称:delay_ns()
**函数功能:秒级延时,注意设置delay.h中的Fclk
**函数入口:t
**函数出口:无
***********************************************************************/
void delay_ns(unsigned long int t)
{
unsigned long int i;
unsigned long int j;
j=Fclk*t;
for(i = 0; i < j; i++);
}
/**********************************************************************
**函数名称:delay_nms()
**函数功能:毫秒级延时,注意设置delay.h中的Fclk
**函数入口:t
**函数出口:无
***********************************************************************/
void delay_nms(unsigned long int t)
{
unsigned long int i;
unsigned long int j;
j=Fclk/1000 * t;
for(i = 0; i < j; i++);
}
/********************************************************************** **函数名称:delay_ns()
**函数功能:微秒级延时,注意设置delay.h中的Fclk
**函数入口:t
**函数出口:无
***********************************************************************/ void delay_nus(unsigned long int t)
{
unsigned long int i;
unsigned long int j;
j=Fclk/1000000 * t;
for(i = 0; i < j; i++);
}。