希望能够有人给我讲解一下这个函数,谢谢各位了

static inline void delay (unsigned long loops)
{
__asm__ volatile ("1:\n"
"subs %0, %1, #1\n"
"bne 1b":"=r" (loops):"0" (loops));
}

弑天下
浏览 288回答 1
1回答

慕桂英3389331

就用延时的意思...只不过是内嵌汇编static inline void delay (unsigned long loops){//汇编的意思1:subs loops,loops, #1bne 1b//c语言的意思while(--loops);}改成汇编部分就是上面这个意思但是loops不是直接的寄存器.gcc使用 %0, %1还有后面 =r的指向会自动吧loops放入的可用寄存器里面进行操作这样做主要的目的.估计是方便计算值延时周期吧.
打开App,查看更多内容
随时随地看视频慕课网APP