这两天心绪来潮,想把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
欢迎大家发表意见