这两天心绪来潮,想把uCosII烧到MSP430上,经过查阅网上教程,移算是成功了,在开发板上可以运行几个任务。
但做到中断实验时,却遇到了麻烦,一直难以解决。大家知道用IAR写程序时,中断函数是直接用C写的,是因为
编译器支持,可这又违背uCos中断函数必须用汇编写。本人对汇编只是能看懂的地步,所以仿照网上例程,它是用
看门狗定时器中断作为程序的时钟源,可我的程序一直不能调试成功,请各位提提意见!!!
他的看门狗中断函数:
WDT_ISR ; //看门狗定时器中断服务程序 PUSHALL ; //保护所有寄存器 bic.b #0x01, IE1 ; //关闭看门狗定时器中断 cmp.b #0, &OSIntNesting ; if (OSIntNesting == 0) jne WDT_ISR_1 mov.w &OSTCBCur, R13 ; //保存任务堆栈 mov.w SP, 0(R13)
mov.w &OSISRStkPtr, SP ; //载入中断堆栈
WDT_ISR_1 inc.b &OSIntNesting ; OSIntNesting++ bis.b #0x01, IE1 ; //开看门狗定时器中断 EINT ; //开中断允许中断嵌套
call #OSTimeTick ; //调用节拍处理函数 mov.b #0x99 ,&TXBUF0
DINT ; //这一点非常重要,调用函数OSIntExit()前关闭中断
call #OSIntExit ; //调用退出中断函数
cmp.b #0, &OSIntNesting ; if (OSIntNesting == 0) jne WDT_ISR_2
mov.w &OSTCBHighRdy, R13 ; //恢复任务堆栈 mov.w @R13, SP WDT_ISR_2 POPALL ; //恢复所有寄存器 reti
;******************************************************************************************************** ; //保存和恢复状态寄存器SR ; ;********************************************************************************************************
OSCPUSaveSR MOV.W SR,R12 DINT RET
OSCPURestoreSR MOV.W R12,SR RET
;******************************************************************************************************** ; //看门狗定时器中断向量 ; ; //AQ430头文件定义的是各中断向量的偏移量,故看门狗中断向量为0xFFE0+WDT_VECTOR ;******************************************************************************************************** ;====================================================== COMMON INTVEC ;Interrup vector ;====================================================== ORG WDT_VECTOR DW WDT_ISR
END
、
我仿照写的Uart接收中断:
U0RX_ISR PUSHALL //bic.b #0x01, IE1 cmp.b #0, &OSIntNesting jne U0RX_ISR_1 mov.w &OSTCBCur, R13 mov.w SP, 0(R13)
mov.w &OSISRStkPtr, SP
U0RX_ISR_1 inc.b &OSIntNesting bis.b #URXIE0, IE1 EINT
call #OSTimeTick
DINT
call #OSIntExit mov.b #0xc0,&TXBUF0 mov.b &RXBUF0,&TXBUF0
cmp.b #0, &OSIntNesting jne WDT_ISR_2
mov.w &OSTCBHighRdy, R13 mov.w @R13, SP
POPALL reti
OSCPUSaveSR MOV.W SR,R12 DINT RET
OSCPURestoreSR MOV.W R12,SR RET
COMMON INTVEC
ORG UART0RX_VECTOR DW U0RX_ISR
END
欢迎大家发表意见
|