有关MSP430单片机移植uCOS的问题!!

小的他   2012-7-19 21:04 楼主

这两天心绪来潮,想把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           

 

欢迎大家发表意见  
  

回复评论 (3)

自己顶一下
点赞  2012-7-19 23:26
没人愿意指导小弟吗?谢特
点赞  2012-7-19 23:27

回复 板凳 小的他 的帖子

关于UCOS在MSP430上的移植,在TI官网上有相关的资料,是基于MSP430F5438A的移植,您可以去查找相关方面的资料。
点赞  2012-7-20 04:08
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 京公网安备 11010802033920号
    写回复