TI 工程师好,我用MSP430FR6972开发调试时总是在调用子程序时会跳入reset位置即复位,不知道是不是仿真器不支持FR6972芯片?这个程序时用MSP430F425移植过来的。用早期的IAR4.0版本和F425调试就没问题,现在移植到FR6972调试时开中断(EINT)就总是自动复位).请指点,查了下FR6972的仿真器是MSP-FET,不知是否我用MSP-FET430UIF不支持FR6972芯片引起出现的问题?谢谢
This thread has been locked.
If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.
TI 工程师好,我用MSP430FR6972开发调试时总是在调用子程序时会跳入reset位置即复位,不知道是不是仿真器不支持FR6972芯片?这个程序时用MSP430F425移植过来的。用早期的IAR4.0版本和F425调试就没问题,现在移植到FR6972调试时开中断(EINT)就总是自动复位).请指点,查了下FR6972的仿真器是MSP-FET,不知是否我用MSP-FET430UIF不支持FR6972芯片引起出现的问题?谢谢
MSP-FET430UIF Supports all programmable MSP430 and CC430 devices (F1xx, F2xx, F4xx, F5xx, F6xx, G2xx, L092, FR57xx, FR59xx, MSP430TCH5E)
具体信息可以参考 http://www.ti.com.cn/cn/lit/ug/slau278v/slau278v.pdf
Susan, 谢谢你的回复,现在有个问题是总是在TIMEB中断里循环,跳不出来,从RETI直接跳到入口处TIMER0_B0_Interrupt:我用的XP系统,这个程序是从MSP430F423移植过来的,用IAR 4.0版本就没问题,移植到FR6972芯片 IAR630版本(TI官网下载的免费8K)就有这个问题。
;---------------------------------------------
TIMER0_B0_Interrupt:
BIT.B #Sleep_First,&ACTIVE_Flag
JNZ BasicTimerInterruptReturn
INC.B &PRESS_COUNTER ;KEY
INC.B &TIME_COUNTER0
INC.B TIME_COUNTER2
INC.B TIME_COUNTER3
INC.B &MotorRunTime
INC.B &RESET_PressTime
INC.B &AUTO_PressTime
INC.B &Key10_PressTime
INC.B &Key1_PressTime
INC.B &Key01_PressTime
INC.B Time_Clear_Count
INC.W wSleep_Timer1
JMP BasicTimerInterruptReturn
SleepTimerInterrupt:
BIT.B #Sleep_Second,&ACTIVE_Flag
JNZ BasicTimerInterruptReturn
INC.W sSleep_Timer1
CMP.W #089H,&sSleep_Timer1
JL BasicTimerInterruptReturn
BIS.B #Sleep_Second,&ACTIVE_Flag
BasicTimerInterruptReturn:
RETI
;******************************************************************************
; Interrupt Vector Table
;******************************************************************************
哪位工程师能否帮我解决这个问题?我用TI的DEMO例子来测试也是一样总是在中断程序里循环,跳不出中断程序, DEMO例子如下:
#include "msp430fr6972.h"
;-------------------------------------------------------------------------------
RSEG CSTACK ; Define stack segment
;-------------------------------------------------------------------------------
RSEG CODE
;-------------------------------------------------------------------------------
RESET mov.w #SFE(CSTACK),SP ; Initialize stackpointer
StopWDT mov.w #WDTPW+WDTHOLD,&WDTCTL ; Stop WDT
SetupGPIO bis.b #BIT0,&P1DIR
bis.b #BIT0,&P1OUT
UnlockGPIO bic.w #LOCKLPM5,&PM5CTL0 ; Disable the GPIO power-on default
; high-impedance mode to activate
; previously configured port settings
mov.w #CCIE,&TB0CCTL0 ; TBCCR0 interrupt enabled
mov.w #50000,&TB0CCR0
mov.w #TBSSEL__SMCLK+MC__UP,&TB0CTL ; SMCLK, UP mode
NOP
EINT
// bis.w #LPM0+GIE,SR ; Enter LPM0 w/ interrupt
nop
MAIN:
CALL #DELAY_100mS
JMP MAIN
;--------------------------------------------------
DELAY_100mS:
MOV #0100H,R6
DELAY_100mSLoop:
DEC R6
JNZ DELAY_100mSLoop
RET
;------------------------------------------------------------------------------
TIMER0_B0_ISR; Timer0_B7 CC0 Interrupt Service Routine
;------------------------------------------------------------------------------
xor.b #BIT0,&P1OUT
reti
;-------------------------------------------------------------------------------
COMMON INTVEC ; Interrupt Vectors
;-------------------------------------------------------------------------------
ORG RESET_VECTOR ; Reset Vector
DW RESET
ORG TIMER0_B0_VECTOR ; Timer0_B7 CC0 Interrupt Vector
DW TIMER0_B0_ISR
END
程序运行后,单步运行时程序一直在TIMER0_B0_ISR:
xor.b #BIT0,&P1OUT
reti
这里循环跳不出这中断TIMER0_B0_ISR程序,仿真器不论是MSP_FET还是MSP-FET430UIF,系统不论是XP32还是WIN7 32都会这样,哪位工程师能否指教下这是什么原因?