问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

stm32中Delay()函数延时的时间是怎么计算的?2

发布网友 发布时间:2023-11-06 20:10

我来回答

3个回答

热心网友 时间:2024-11-30 07:59

单片机编程过程中经常用到延时函数,最常用的莫过于微秒级延时delay_us(

)和毫秒级delay_ms(

)。1.普通延时法这个比较简单,让单片机做一些无关紧要的工作来打发时间,经常用循环来实现,不过要做的比较精准还是要下一番功夫。下面的代码是在网上搜到的,经测试延时比较精准。//粗延时函数,微秒

void delay_us(u16 time)

{

u16 i=0;

while(time--)

{

i=10; //自己定义

while(i--) ;

}

}

//毫秒级的延时

void delay_ms(u16 time)

{

u16 i=0;

while(time--)

{

i=12000; //自己定义

while(i--) ;

}

}2.SysTick 定时器延时CM3 内核的处理器,内部包含了一个SysTick

定时器,SysTick 是一个24 位的倒计数定时器,当计到0 时,将从RELOAD

寄存器中自动重装载定时初值。只要不把它在SysTick

控制及状态寄存器中的使能位清除,就永不停息。SysTick 在STM32

的参考手册里面介绍的很简单,其详细介绍,请参阅《Cortex-M3 权威指南》。

这里面也有两种方式实现:a.中断方式

如下,定义延时时间time_delay,SysTick_Config()定义中断时间段,在中断中递减time_delay,从而实现延时。

volatile unsigned long time_delay; //

延时时间,注意定义为全局变量

//延时n_ms

void delay_ms(volatile unsigned long nms)

{

//SYSTICK分频--1ms的系统时钟中断

if (SysTick_Config(SystemFrequency/1000))

{

while (1);

}

time_delay=nms;//读取定时时间

while(time_delay);

SysTick->CTRL=0x00; //关闭计数器

SysTick->VAL =0X00; //清空计数器

}

//延时nus

void delay_us(volatile unsigned long nus)

{

//SYSTICK分频--1us的系统时钟中断

if (SysTick_Config(SystemFrequency/1000000))

{

while (1);

}

time_delay=nus;//读取定时时间

while(time_delay);

SysTick->CTRL=0x00; //关闭计数器

SysTick->VAL =0X00; //清空计数器

} //在中断中将time_delay递减。实现延时void

SysTick_Handler(void)

{

if(time_delay)

time_delay--;

热心网友 时间:2024-11-30 07:59

以SysTick的初值是720为例,系统时钟为72m。SysTick记720个数产生一次中断。这样算也就是1秒产生100000次中断(1次10us)。当Delay(x)中x大于0时会将x传给一个全局的变量使他在每发生一次中断之后自减1.系统卡在等待这个变量变为零的死循环上直到这个全局来量变为零。

热心网友 时间:2024-11-30 08:00

根据你的时钟频率计算的,1个延时差不多运算一次,减一次数,比如48MHZ,延时10000就是(10000/48MHZ)秒
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
导购什么字 店面导购员是什么意思 HKEY_LOCAL_MACHINE\SOFTWARE\Macromedia\FlashPlayer\SafeVersions... 无法安装adobeflashplayer,说无法注册ACTIVEX的控件 无法注册flash player的activex怎么办 omniverse create 他总说无法注册Flash player的Active控件 然后什么访问以下链接。不要... excel如何用进度条的形式表示完成率 买了件速干衣,北面的,求大神看一下真假。 秦皇岛银谷全城热恋是不是要预定票啊 买一支基金放十年不动会不会赚钱72 牛鞭怎么做能去骚腥味19 后备箱带了很多食用油安全吗 密室逃脱2攻略80 一类医疗器械进国家医保不同品名同样规格可以用同一批文备案吗_百度知 ... 怎么区别zcs和zhchsh? 拼音zcs zhchsh怎么读怎么区别22 拼音zcs和zh ch sh的区别13 上海普陀区中心医院常规体检多少钱?几点到几点?10 我家现代简欧风格装修,用什么地板比较配 上海普陀区中心医院体检复查严格吗1 在上海普陀区中心人民医院的入职体检项目中包含查乙肝这项不? 请问nds密室逃脱2..船舱那关的问题..高手请进!4 腰眼疼痛怎么回事啊,是有什么原因? 美少女的谎言第五季22集40分钟左右汉娜进监狱与艾丽森对视时那首插曲... 医保查医疗器械产品名称不一致但内涵一样 四月是你的谎言22集片尾插曲叫什么? 同一个手机号注册两个,新的刚注销,旧的怎么找回? 美少女的谎言第三季 汉娜与加勒分手是哪一集 新出的索尼相机RX100M7性能怎么样?知道的说下。1 关于普陀区中心医院体检站17 在上海普陀区中心医院做全身检查需要多少钱7 内向,没安全感,对人有防备心很难接近,而且不会轻易表达自己的内心世界... 请问治疗霍奇金淋巴瘤需不需要服用中药????【霍奇金淋巴瘤】 经典霍奇金淋巴瘤在中药治疗下,淋巴减少缩小常伴症状消失,是不...1 党校学习心得,1500字左右现在就要急需62 我想选一只基金定投,年限5年。但是我是新手,有几个问题想请教...19 巴西最大河是亚马孙河,为什么巴西最大的水电站在巴西和巴拉圭之...6 简欧风格配什么颜色的木地板 (汇款时选“收款人支付手续费”,每笔2元)汇款时有这个选项吗...16 广州那里有聋哑学校2 广州有没有聋人学院11 怎么换掉尤里的复仇中的背景音乐15 索尼RX100M7在专业摄影方面表现如何?1 索尼RX100M7硬件设备怎么样?好不好用? 霍奇金淋巴瘤放化疗结束后要中药调理吗?1 庐江金牛屠宰场地址 我一个手机号注册了两个,另外一个登不上了,身边没有亲友,不想... 怎么申请查分· 考研5 水草鱼缸放什么药预防疾病