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.

[参考译文] MSP430F5528:ISR问题

Guru**** 2535750 points


请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/microcontrollers/msp-low-power-microcontrollers-group/msp430/f/msp-low-power-microcontroller-forum/665279/msp430f5528-isr-problem

部件号:MSP430F5528

您好,

我遇到了中断处理程序的问题。 维修中断后,它不会持续返回主程序,而是运行同一个ISR。

#include <MSP430.h>***********************************

//LCD初始化
//////////////


LCD功能声明
***********************************
CHAR数据;
int main (void)
{
WDTCTL = WDTPW + WDTHOLD; //停止WDT
LCD_init();
P4SEL = BIT4+BIT5; // WFP 3.4 ,5 = USI_A0 TXD/RXD
UCA1CTL1 |= UCSWRST; //**将状态机置于复位**
UCA1CTL1 || UCSSEL_2; // SMCLK
UCA1BR0 = 6; // 1MHz 9600 (请参阅用户指南)
UCA1BR1 = 0; // 1MHz 9600
UCA1MCTL = UCBRS_0 + UCBRF_13 + UCOS16;// Modln UCBRSx=0,UCBRFx=0,
//过度采样
UCA1CTL1 &=~UCSWRST; //**初始化USCI状态机**
UCA1IE |= UCRXIE; //启用USI_A0 RX中断

__bis_sr_register (LPM0_bits + GIE); //输入LPM0,中断启用
send_string(data);

}//

回显RXed字符,确认TX缓冲区已就绪,先
#if defined(__TI_Compiler_version__)|| defined(__IAR_systems_icc__)
#pragma vector=USI_A1_Vector
__interrupt USI_A1_ISR(#Elify_usiver_)




#endif
{
SWITCH(__EIN_RANGE(UCA1IV,4)){

案例0:break; //矢量0-无中断
情况2:
数据= UCA1RXBUF; //矢量2 - RXIFG
同时(!(UCA1IFG&UCTXIFG)); // USI_A0 TX缓冲器就绪?
UCA1TXBUF = 52; // TX -> RXed字符
中断;
情况4:中断; //矢量4 - TXIFG
默认值:中断;
}__BIC_SR_REGISTER
(LPM0_bits);
}

在上述程序中,我只想在LCD上显示接收到的数据,但它不执行该指令,

 

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好,Pabel,

    您的代码很可能退出main函数,因为您没有main循环。 通过USI_A1_ISR退出LPM0后,您的代码似乎设置为通过send_string函数发送字符串。 之后,代码将退出main,应通过在main的末尾放置一个forever循环来避免这种情况。

    此致,
    Caleb Overbay