在ccs中使用了TI-RTOS,这种情况下是不是不能够自定义中断函数呢?
如果可以的话,interrupt void prdTick(void);
还是__interrupt void prdTick(void);,似乎两个都不行,报错
Shine:
加interrupt关键字与不加的区别是函数的返回方式不一样。
#1. 用DSP BIOS的dispatcher才不用写interrupt关键字,不用dispatcher,还是要写interrupt关键字的。因为中断ISR的返回指令不一样,是B IRP,也就是从中断ISR返回时用的记录返回指针的寄存器不一样。这个你可以通过编译产生的汇编代码确认一下的。
#2. 如果不dispatcher,则首先是进入dispatcher函数,它是一个加了interrupt关键字的ISR,自己的ISR只是它调用一个普通函数,所以不用interrupt关键字。
user4941429:
回复 Shine:
问题是:我现在写了interrupt void prdTick(void);ccs显示
expected '=', ',', ';', 'asm' or '__attribute__' before 'void'
这个问题怎么解决呢?如果不用dispatcher的话
Shine:
回复 user4941429:
请问用的是哪款芯片?哪个版本的CCS?方便发个简单的测试工程吗?
user4941429:
回复 Shine:
原来是编译器的问题,如果用GNU编译器好像不能这样,但是TI的编译器是可以这样做的
Shine:
回复 user4941429:
TI编译器手册里有专门讲interrupt关键字的。