无法使用 Atmel 寄存器编译 Arduino 代码
Can not compile Arduino code with Atmel registers
我正在使用安装了Averudino扩展的VSCode编辑器。基本上,我有一个简单的程序,我在其中调用一个函数,该函数将设置一个计时器 5 毫秒然后运行。但是,在编辑器中,我收到错误:
"错误:未在此范围内声明'OCR3A'">
关于如何解决它的任何想法?
我应该指出,智能感知可以看到寄存器的定义。我也在使用Arduino Uno R3板。另外,这是代码:
void isr_int1(void) {
if(TCCR3B == 0)// Debug code if the timer is not running
{
startTimerValue = millis();
TCNT3 = 0;
OCR3A = 5000;
sei();
bitSet(TCCR3B, WGM32);
bitSet(TCCR3B, CS31);
bitSet(TIMSK3, OCIE3A);
detachInterrupt(1);
}
}
ISR(TIMER3_COMPA_vect)
{
TCCR3A = 0;
TCCR3B = 0
TCNT3 = 0;
OCR3A = 0;
lcd.setCursor(0,0);
lcd.print(millis() - startTimerValue);
attachInterrupt(1, isr_int1, FALLING);
}
void loop()
{
isr_int1();
}
主要问题是Arduino UNO没有Timer/Counter 3
,因为它使用ATMega328A
。例如,该T/C 3
可在Adruino Micro/Leonardo(基于ATMega32U4
(和Arduino MEGA 2560(ATMega2560
(上使用。
不同的MCU也可能有不同的寄存器名称。这就是为什么Arduino Core充满了#ifdefs
此外,由于目标MCU错误,您可能会收到这些错误。
至少它通常与MCU数据手册中使用的寄存器名称完全对应。当您尝试自己配置某些东西时,这也是您应该学习的第一个地方。
相关文章:
- vscode下的Arduino代码出现意外编译错误
- cmsis_compiler.h:在为 Arduino Due 编译 Arduino Tensorflow lite 库
- 奇怪的Arduino C++编译错误取决于文件位置
- Arduino-Makefile:编译器无法编译用户库 cpp 文件
- 如何调试无法编译的Arduino程序?
- Arduino makefile 无法编译
- 在编译时使用 gnu++11 过滤值列表,不使用 stdlib(Arduino 环境)
- Arduino IDE中自定义库类的.h文件编译错误的原因是什么
- C 代码可以编译,但在 arduino 草图中它不会
- 无法使用 Atmel 寄存器编译 Arduino 代码
- 在不同的机器上编译的是Arduino ESP8266项目的不同十六进制文件
- Atmel / Arduino:ISR(TIMER0_OVF_vect)无法编译("first defined"__vector_16)
- Teensy/arduino库编译错误
- 在eclipse中编译arduino时出现链接器分段错误
- 有可能在iOS上编译为Arduino编写的代码吗
- 编译错误:"undefined reference to AList<Pwm>::AList()" Arduino C++
- C++ Arduino 类文件中的字符串未编译
- Arduino Sketch编译,然后在上传时冻结
- Atmel Studio 7 如何编译和调试 Arduino 代码
- 如何用makefile编译arduino核心库