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.

[参考译文] MSP-EXP430G2:TimerA 中断内的 UART 传输

Guru**** 2524460 points


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

https://e2e.ti.com/support/microcontrollers/msp-low-power-microcontrollers-group/msp430/f/msp-low-power-microcontroller-forum/703599/msp-exp430g2-uart-transmission-inside-timera-interrupt

器件型号:MSP-EXP430G2
主题中讨论的其他器件:MSP430G2553

您好!

我尝试了在 Timer A 模块中断服务例程中发送单个字符的代码、但它无法正常工作、请帮助我解决此问题

#include
#define TXLED BIT0
#define RXLED BIT6
#define RXD BIT1
#define TXD BIT2

void UART_init();
void timerA_init();
void GPIO_init();

int x =0;

int main()


WDTCTL = WDTPW + WDTHOLD;
BCSCTL1 = CALBC1_1MHz;
DCOCTL = CALDCO_1MHz;


GPIO_init();
UART_INIT();
timerA_init();

_BIS_SR (LPM0_Bits + GIE);

while (1)


返回0;


void GPIO_init()

P1DIR |=(TXLED + RXLED);
P1OUT &=~(TXLED + RXLED);
P1SEL |= RXD + TXD;
P1SEL2 |= RXD + TXD;


void timerA_init()

TACCTL0 = CCIE;
TACTL = tassel_2 + ID_3 + MC_1;//SMCLK/3、向上计数模式125KHz;
TACCR0 = 125;//1msec

#pragma vector=TIMER0_A0_VECTOR
_interrupt void Timer_A (void)

UCA0TXBUF ='A';
P1OUT ^= TXLED;
_DELAY_CYCLES (50000);
while (!(IFG2 & UCA0TXIFG));

空 UART_INIT()

UCA0CTL1 |= UCSWRST;
UCA0CTL1 = UCSSEL_2;//SMCLK
UCA0BR0 = 8;
UCA0BR1=0;
UCA0CTL1 &=~Ω UCSWRST;// USCI 复位被释放以执行操作
// UCA0MCTL = UCBRS0;

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    Harikrishnan、您好!
    它无法正常工作意味着什么?

    您是否在使用范围查看 TX 线上的任何活动?

    TXLED 是否闪烁?

    另外、while (!(IFG2 & UCA0TXIFG))应在加载 TX 缓冲区之前到达。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好!
    感谢您提供的信息、代码现在按我的预期工作
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    实际上问题是我的串行接口(cutecom)问题得到了解决。