【发布时间】:2017-08-08 21:28:05
【问题描述】:
我正在尝试在 Atmel Studio 7 中为 Arduino 编写代码。为了使其与 Arduino IDE 相似,我正在尝试调整其库。
但是我已经被delay() 屏蔽了,它使用yield()。收益似乎没有在任何地方实施。所以我的编译器说“未定义对产量的引用”。
我不明白 Arduino IDE 是如何处理的?如何在 Atmel Studio 中使用 yield()?
这是我的尝试:
#ifndef F_CPU
#define F_CPU 16000000UL
#endif
#include <util/delay.h>
#include <avr/io.h>
#include <Arduino.h>
#include <wiring.c>
int main(void) {
DDRB = (1 << DDB5);
while(1) {
PORTB = (1 << DDB5);
delay(1000);
PORTB = (0 << DDB5);
delay(1000);
}
}
【问题讨论】:
-
我认为
yield()是scheduler的一部分...将scheduler.h从Arduino 库添加到您的项目中。 -
应不惜一切代价避免延误
-
如果您已经开始使用裸寄存器,那么使用愚蠢的 Arduino 东西有什么意义。继续这种方式,忘记arduino
-
另一句话——不要在你的代码中定义 F_CPU。在项目属性中执行此操作。它将帮助您避免愚蠢的错误,例如不同文件中的不同值。
-
谢谢,特别是 F_CPU 的提示,
标签: c++ arduino arduino-esp8266 atmelstudio