使用 xc8 的 ATtiny 中断服务例程编译错误
Compiling Error with interrupt service routines for ATtiny using xc8
我正在使用 ATtiny 202 进行一个项目,我的编程快要完成了,但是我 运行 遇到了一个大问题。我无法创建任何 ISR,因为我总是遇到编译器错误。
我正在使用最新版本的 MPLABX IDE (5.35)(是的,它适用于 pic 和 avr mcus)和第二个最新版本的 xc8 编译器 (v2.10)。我不能使用最新版本的编译器,因为出于某种原因,它缺少用于 ATtiny 202 的设备 header。(我刚才有一个关于这个问题的不同线程)
我已经完全按照 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 蓝色并正确识别它,因为它在设备 header 中定义。
当我尝试编译它时,收到此错误消息,并且构建失败:
main.c:864:19: error: expected declaration specifiers or '...' before numeric constant
void __interrupt (RTC_PIT_vect_num) pit_int(void){
^
我不知道到底是什么问题以及如何解决。
为了进行比较,下面是“AVR 的 XC8 用户指南”第 83 页中的示例:
void __interrupt(SPI_STC_vect_num) spi_Isr(void) {
process(SPI_SlaveReceive());
return;
}
如你所见,函数结构和我自己的ISR中完全一样
有人知道问题是什么或可能是什么以及如何解决吗?
固定:
这个问题我也在microchip论坛上发过,好像没人能帮忙。
于是我发现问题出在
下的项目属性中
XC8 全局选项 -> XC8 编译器 -> 选项类别:预处理和消息
“使用 CCI 语法”选项已禁用。这需要启用 __interrupt 才能工作。
我正在使用 ATtiny 202 进行一个项目,我的编程快要完成了,但是我 运行 遇到了一个大问题。我无法创建任何 ISR,因为我总是遇到编译器错误。
我正在使用最新版本的 MPLABX IDE (5.35)(是的,它适用于 pic 和 avr mcus)和第二个最新版本的 xc8 编译器 (v2.10)。我不能使用最新版本的编译器,因为出于某种原因,它缺少用于 ATtiny 202 的设备 header。(我刚才有一个关于这个问题的不同线程)
我已经完全按照 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 蓝色并正确识别它,因为它在设备 header 中定义。
当我尝试编译它时,收到此错误消息,并且构建失败:
main.c:864:19: error: expected declaration specifiers or '...' before numeric constant
void __interrupt (RTC_PIT_vect_num) pit_int(void){
^
我不知道到底是什么问题以及如何解决。
为了进行比较,下面是“AVR 的 XC8 用户指南”第 83 页中的示例:
void __interrupt(SPI_STC_vect_num) spi_Isr(void) {
process(SPI_SlaveReceive());
return;
}
如你所见,函数结构和我自己的ISR中完全一样
有人知道问题是什么或可能是什么以及如何解决吗?
固定:
这个问题我也在microchip论坛上发过,好像没人能帮忙。
于是我发现问题出在
下的项目属性中XC8 全局选项 -> XC8 编译器 -> 选项类别:预处理和消息
“使用 CCI 语法”选项已禁用。这需要启用 __interrupt 才能工作。