我正在使用 ATtiny 202 进行一个项目,我的编程几乎完成了,但我遇到了一个大问题。我无法创建任何 ISR,因为我总是遇到编译器错误。
我正在使用最新版本的 MPLABX IDE (5.35)(是的,它适用于 pic 和 avr mcus)和第二个最新版本的 xc8 编译器(v2.10)。我不能使用最新版本的编译器,因为由于某种原因缺少 ATtiny 202 的设备头。(我前段时间有一个关于这个问题的不同线程)
我已经完全按照 XC8 手册中的描述创建了 ISR,并且 IDE 也没有将其标记为问题,但是当我尝试编译程序时,我总是会遇到编译器错误。这是我的 ISR 之一:
void __interrupt (RTC_PIT_vect_num) pit_int(void){
onPIT(); //Run the function
RTC.PITINTFLAGS = 0x0; //and clear the interrupt flags
}
IDE 将 RTC_PIT_vect_num 标记为蓝色并正确识别它,因为它在设备标头中定义。
当我尝试编译它时,我收到此错误消息,并且构建失败:
main.c:864:19: error: expected declaration specifiers or '...' before numeric constant
void __interrupt (RTC_PIT_vect_num) pit_int(void){
^
我不知道究竟是什么问题以及如何解决它。
为了进行比较,下面是“XC8 User Guide for AVR”中的一个示例,第 83 页:
void __interrupt(SPI_STC_vect_num) spi_Isr(void) {
process(SPI_SlaveReceive());
return;
}
如您所见,函数的结构与我自己的 ISR 中的完全一样。
有人知道问题是什么或可能是什么以及如何解决它?