static inline void delay (unsigned long loops){__asm__ volatile ("1:\n""subs %0, %1, #1\n""bne 1b":"=r" (loops):"0" (loops));}
1 回答
慕桂英3389331
TA贡献2036条经验 获得超8个赞
就用延时的意思...只不过是内嵌汇编
static inline void delay (unsigned long loops)
{
//汇编的意思
1:
subs loops,loops, #1
bne 1b
//c语言的意思
while(--loops)
;
}
改成汇编部分就是上面这个意思
但是loops不是直接的寄存器.
gcc使用 %0, %1还有后面 =r的指向
会自动吧loops放入的可用寄存器里面进行操作
这样做主要的目的.估计是方便计算值延时周期吧.
- 1 回答
- 0 关注
- 190 浏览
添加回答
举报
0/150
提交
取消