IAR for stm8 做一个一个非抢占式的RTOS
在定时器中断里调度任务, 我修改别人的代码, 在出栈入栈前增加了部分判断代码后,不能正常运行,一直重启,请问这个备注 “定时器中断时会多进栈3字节,调整SP ” ,定时器中断多入栈3个字节是什么意思?我在线debug时,追踪进定时器中断前后sp的值,没有差三个字节呀,而是多于三个字节。请大神指导一二,不胜感激。
asm("LDW X,SP");
asm("INCW X");//定时器中断时会多进栈3字节,调整SP
asm("INCW X");//这三个少不了
asm("INCW X");
asm("LDW SP,X");
Current_Ready_StackTop=(unsigned int)(&Task_TCB[Pri_Current].StackTop);
asm("ldw X,L:Current_Ready_StackTop");//保存到当前任务栈顶到任务表中.
asm("ldw Y,SP");
asm("ldw (X),Y");