#include <avr/io.h>
#define F_CPU 8000000UL
#include <util/delay.h>
double a=500;
int main(void)
{
_delay_ms(a);
while (1)
{
}
}
用Atmel Studio 7.0编译这段程序编译通不过,报错
__builtin_avr_delay_cycles expects a compile time integer constant
但是把double a=500;移到main函数内就可以编译通过
这个是什么原因,希望哪位高手解析一下。
此帖出自
小平头技术问答
变量是可以用的,把变量定义放到main函数内就可以用,认为三楼的说法靠谱
这与AS7无关,是C编译器的问题。为了得到最好的效率和精度,使用了汇编做延时,就只能使用常数。
如果需要使用变量,最好的方法是自己写一个延时函数,或者在自己的函数中调用系统的延时函数。
谢谢了
一周热门 更多>