ARM 2451中 想要延时2ms 应赋值多少 延时函数为void delay_c(unsigned int t) { while(--t); }

ARM 2451中 想要延时2ms 应赋值多少 延时函数为void delay_c(unsigned int t) { while(--t); },第1张

你给的算法误差大,不同的计算机运算速度不同,等待时间不同。暂停,可以用芦厅Windows.h里的Sleep()函数,也可以自己写。Sleep(1000)参数是1000毫秒,就是暂停1秒。一般人认为,Sleep函数,每秒可能有25毫秒误差。埋哗蠢自己写,可以利用clock()函数,clock()函数送返从程序开始运行到调用时的时间间隔,单位是毫秒。暂停开始,用clock()取开始时间,然后,只要用clock()再取时间,判断是否到结束时间,没到弯陪则继续暂停。//等待多少秒:voidwait(intseconds){clock_tendwaitendwait=clock()+seconds*CLOCKS_PER_SECwhile(clock()

这个是实现延时的。

其实这两句应该连一块儿看:

for(dly>0dly--)

for(i=0i<5000i++)

也就是延迟了dly个"for(i=0i<5000i++)"的执行时间

具体延迟了多久和很多因素相关,最主要的是和晶振相关。

当为40M时,

for(i=0i<5000i++)延时应哪则孙该是大约12~15MS左右吧

不过这么写不是很严谨,一般的需要精确处理的嵌入式开盯旅发(例如手机,CPF再开发等)中不会这么做的 ,李链一般是参照芯片式样书和嵌入式OS的Tick单位,进行精确计时

硬件平台:FS2410开发汪姿平台:MDK3.5程冲陵慎序散敬源码:GPFCON EQU 0x56000050 Port F control

GPFDAT EQU 0x56000054 Port F data

GPFUP EQU 0x56000058 Pull-up control F

AREA myarea, CODE

ENTRY LDR r0, =0x5500

LDR r1, = GPFCON

STR r0,[r1] LDR r0, = 0x0

LDR r1, =GPFUP

STR r0,[r1]

start_while

LDR r0, = 0x0

LDR r1, =GPFDAT

STR r0,[r1] LDR r0, =0xffffloop1

SUBS r0,r0, #1

BNE loop1 LDR r0, = 0xF0

LDR r1, =GPFDAT

STR r0,[r1] LDR r0, =0xffff

loop2

SUBS r0,r0, #1

BNE loop2 B start_whilestop

B stop

END


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/12341632.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-24
下一篇 2023-05-24

发表评论

登录后才能评论

评论列表(0条)

保存