【发布时间】:2012-11-22 15:02:57
【问题描述】:
对不起,英语不好。
我需要编写一段使用延迟的时间关键型代码(通过 bit-bang 实现软件协议的严格部分)。 C 预处理器在编译时可以计算延迟的时钟周期数(使用F_CPU 宏),因此我需要实现一个汇编器延迟代码以实现 unknown 周期数。
但是 GCC 提供了非常有用的函数 __builtin_avr_delay_cycles(unsigned long cycles),它可以精确地延迟 cycles 时钟周期为定义的 F_CPU 频率。
问题。有没有办法使用__builtin_avr_delay_cycles within inline-assembler 代码?
注意。绕过方式是这样的:
__asm__ (...);
__builtin_avr_delay_cycles(...);
__asm__ (...);
但是编译器可以围绕__asm__ 生成一些代码。对我不好,我需要控制每个时钟周期。
【问题讨论】:
标签: gcc inline-assembly avr avr-gcc