- 积分
- 12
贡献34
飞刀1 FD
注册时间2015-11-3
在线时间2 小时

|
发表于 2015-12-29 15:20:37
|
显示全部楼层
简延时还是精确延时?简单延时,用while循环就可以了。
精确延时的话,用定时器。(几年前玩51用过,ARM裸机还没玩过)汇编也可以做吧。一条指令一个时钟周期,跳转除外,跳转是三个时钟周期,然后自己去计算一下,这个我用过。下面这个是1GHz计算出来的udelay。
void _udelay(unsigned int nCount)
{
__asm__ __volatile__(
"000:\n"
"ldr r1,=250\n"
"111:\n"
"subs r1,r1,#1\n" //one arm clock
"bne 111b\n" //three arm clock
"subs r0,r0,#1\n"
"bne 000b\n" //three arm clock
);
}
|
|