用IAR在单片调试时单步执行时,执行到__delay_cycles时就走不下去,跳过它就可以,程序下到单片机内测试__delay_cycles的时间还是很准的,不知道怎么回事,是不是__delay_cycles就不可以单步执行?
Peter_Zheng:
__intrinsic void __delay_cycles(unsigned long __cycles);意思是延时 __cycles 个机器周期. 当程序执行到此处就就等待n个时钟周期。
Hanson He:
由于__delay_cycles() 是内联函数,它是直接嵌入到代码中,不使用Jump/branch跳转或分支指令,而是多个单指令组成。正如您所说可以设置断点来跳过这个函数执行。