我想在 LPC1768 上的 SRAM 中有一个中断例程。我正在使用类似于 Yagarto 的 GCC 工具链。目前我可以从 C 执行以下操作:
NVIC_SetVector(TIMER0_IRQn, interruptTest);
...然后在我的汇编文件中:
.text
/* .section .fastcode */
.global interruptTest
.func interruptTest
.thumb_func
interruptTest:
ldr r0,=(LPC_TIM0 + IR) /* point to Timer 0's Interrupt Register */
mov r1,#(1 << 0) /* Interrupt Pending bit for MR0 int */
str r1,[r0] /* Clear it */
bx lr
.size interruptTest, . - interruptTest
.endfunc
现在这工作得很好,指向“interruptTest”函数的指针是奇数。但是,当我启用 '.section .fastcode' 位时,指向中断的指针变为even而不是odd。
我的问题是:如何正确地将中断例程识别为拇指功能?