问题描述
- 如何编写延时函数,求指点迷津
-
cpu频率为400MHz,如何编写延时为1us的延时函数?请大哥门指点下。cpu为armv7架构的s5pv210处理器
解决方案
振荡频率为16MHZ,则Tcy=0.0625us。
编写us级延时函数如下:
void Delay_us(unsigned char nCount)
{
while(--nCount);
}
函数反汇编后如下:
push a
OFST: set 0
L13: dec(OFST+1,SP)
jrne L13
pop a
ret
主要是计算nCount
解决方案二:
400MHZ=400000000HZ,就是一秒钟震动的次数,
1S=1000ms=1000000μs,
1S/400MHZ=1000000μs/400000000HZ=0.0025μs,就是说一个频率周期需要0.0025μs,
那么,你要知道的是s5pv210芯片多少个时钟周期是一个机器周期,假设 是4个
那么一个机器周期等于4*0.0025μs=0.01us
你要求 延时1us 只需要 100个机器周期就行了
你循环里面的代码 转换成 100条汇编指令 就延时 1us了 ,
需要注意的是 取消编译器优化
时间: 2024-10-27 02:44:53