'__vector_1' 的静态声明遵循非静态声明
Static declaration of '__vector_1' follows non-static declaration
我正在尝试创建一个在我按下按钮时会中断的程序。我有 Atmega8,我使用 Microchip studio 进行编码。
我在 atmega 的网站上查看了有关中断的文档,但我不能说我完全明白了。
这是我的代码:
#define F_CPU 1000000UL
#define IRQ1 INT0_vect
#define IRQ2 INT1_vect
#include <avr/io.h>
#include <util/delay.h>
#include <avr/interrupt.h>
void init()
{
DDRB=0b11111111;
PORTB=255;
_delay_ms(2000);
PORTB=0;
DDRD = 0b00000000;
GICR=0xc0;
MCUCR=0x08;
}
int main(void){
init();
volatile int mode = 0;
ISR(IRQ1){
_delay_ms(500);
if (mode<3)mode++; else mode = 0;
}
ISR(IRQ2){
_delay_ms(150);
}
}
我得到的错误:
Imgur
如果有任何管理员编辑我的问题并在此处添加图片,我会很高兴,网站不允许我添加照片,因为我需要至少 10 个声誉才能 post 图片
除非您真的知道自己在做什么,否则不要尝试在其他函数内部定义函数。您应该将 ISR 定义移动到文件的顶层,将它们放在 main
.
之外
我正在尝试创建一个在我按下按钮时会中断的程序。我有 Atmega8,我使用 Microchip studio 进行编码。
我在 atmega 的网站上查看了有关中断的文档,但我不能说我完全明白了。
这是我的代码:
#define F_CPU 1000000UL
#define IRQ1 INT0_vect
#define IRQ2 INT1_vect
#include <avr/io.h>
#include <util/delay.h>
#include <avr/interrupt.h>
void init()
{
DDRB=0b11111111;
PORTB=255;
_delay_ms(2000);
PORTB=0;
DDRD = 0b00000000;
GICR=0xc0;
MCUCR=0x08;
}
int main(void){
init();
volatile int mode = 0;
ISR(IRQ1){
_delay_ms(500);
if (mode<3)mode++; else mode = 0;
}
ISR(IRQ2){
_delay_ms(150);
}
}
我得到的错误: Imgur
如果有任何管理员编辑我的问题并在此处添加图片,我会很高兴,网站不允许我添加照片,因为我需要至少 10 个声誉才能 post 图片
除非您真的知道自己在做什么,否则不要尝试在其他函数内部定义函数。您应该将 ISR 定义移动到文件的顶层,将它们放在 main
.