分类: 嵌入式
2013-06-30 22:18:25
拿到2440单板,首先把串口调通了,但是在调中断的时候一直有问题,主要是串口中断。不过最后还是调通了。下面是一些经验还有调试中遇到的问题,懂得其中的道理,2440其他中断都可调通
1、keil的__irq声明的作用
使用__irq声明后,编译器生成的代码首先保证R0-R3,R14至堆栈空间,在返回的时候使用subs pc,r14,#4完成返回值原程序运行处
subs的后缀s,表示完成计算后恢复spsr寄存器至cpsr,恢复普通模式,与LDMIA 的^后缀有着相同的效果。
2、清除中断顺序问题
依次为SUBSRCPND->SRCPND->INTPND
3、不使用__irq声明的中断函数,一定要保证STM与LDM 的栈增长方式向对应