工具与软件:
您好!
我将使用示例代码 为 MSP430F249启用 uart msp430x24x_uscia1_uart_05_9600.c
当我通过 IAR 运行代码时、示例代码运行正常。
我可以看到在 Teraterm 端口中输入字符的输出(9600波特率)。
当我使用 HEX 映像和闪存并使用 FETPro 工具时、它无法正常工作。 我的意思是、RX 输入会回送至 TX。
请帮助确定问题。
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.
工具与软件:
您好!
我将使用示例代码 为 MSP430F249启用 uart msp430x24x_uscia1_uart_05_9600.c
当我通过 IAR 运行代码时、示例代码运行正常。
我可以看到在 Teraterm 端口中输入字符的输出(9600波特率)。
当我使用 HEX 映像和闪存并使用 FETPro 工具时、它无法正常工作。 我的意思是、RX 输入会回送至 TX。
请帮助确定问题。
//
// MSP430x24x 演示- USCI_A1、超低功耗 UART 9600 Echo ISR、32kHz ACLK
//
//说明:回显接收到的字符、使用 RX ISR。 正常模式为 LPM3、
// USCI_A1 RX 中断触发 TX Echo。
// ACLK = BRCLK = LFXT1 = 32768Hz、MCLK = SMCLK = DCO ~1.045Mhz
//波特率分频器为32768Hz XTAL @9600 = 32768Hz/9600 = 3.41
//=> UCBRx = 0x03;在 UCA1MCTL 中:UCBRSx = round (0.41*8)= 0x03
//////*对于 ACLK、XIN XOUT 上需要外接一个手表晶体*//
//
// MSP430F249
//-------
///|\| XIN|-
//|||| 32kHz
//--|RST XOUT|-
//|
//| P3.6/UCA1TXD|----- >
//|| 9600 - 8N1
//|P3.7/UCA1RXD|<---
//
// B. Nisarga.
// Texas Instruments Inc.
// 2007年9月
//构建 CCE 版本:3.2.0和 IAR 嵌入式工作平台版本:3.42A
//
#include
int main (void)
{
WDTCTL = WDTPW + WDTHOLD;//停止 WDT
P1DIR = 0xFF;//所有 P1.x 输出
P1OUT = 0;//所有 P1.x 复位
P2DIR = 0xFF;//所有 P2.x 输出
P2OUT = 0;//全部 P2.x 复位
P3SEL = 0x0C0;// P3.6、7 = USCI_A1 TXD/RXD
P3DIR = 0xFF;//所有 P3.x 输出
P3OUT = 0;//所有 P3.x 复位
P4DIR = 0xFF;//所有 P4.x 输出
P4OUT = 0;//全部 P4.x 复位
P5DIR = 0xFF;//所有 P5.x 输出
P5OUT = 0;//所有 P5.x 复位
P6DIR = 0xFF;//所有 P6.x 输出
P6OUT = 0;//所有 P6.x 复位
UCA1CTL1 |= UCSSEL_1;// CLK = ACLK
UCA1BR0 = 0x03;// 32kHz/9600 = 3.41
UCA1BR1 = 0x00;//
UCA1MCTL = UCBRS1 + UCBRS0;//调制 UCBRSx = 3
UCA1CTL1 &=~UCSWRST;//**初始化 USCI 状态机**
UC1IE |= UCA1RXIE;//启用 USCI_A1 RX 中断
__bis_SR_register (LPM3_bits + GIE);//进入 LPM3、中断被启用
}
//回送 RXed 字符、确认 TX 缓冲区首先就绪
#if defined (__TI_Compiler_version__)|| defined (__IAR_SYSTEMS_ICC__)
#pragma VECTOR=USCIAB1RX_VECTOR
__interrupt void USCI1RX_ISR (void)
#elif defined (_GNUC__)
void __attribute__(((interrupt (USCIAB1RX_VECTOR))) USCI1RX_ISR (void)
#else
错误编译器不受支持!
#endif
{
while (! (UC1IFG&UCA1TXIFG);// USCI_A1 TX 缓冲器是否就绪?
UCA1TXBUF = UCA1RXBUF;// TX -> RXED 字符
}
尊敬的 Swarna:
十六进制没有变化。 [报价]那么、当您使用 IAR 调试模式、然后退出调试模式并复位器件时、这是否正常呢?
[/quote]我尚未进行任何晶体设置。 这就是应用没有得到任何时钟的原因吗? [报价]您共享的示例配置了 CLK。
对于 UART、也许您可以使用内部时钟而不是 ACLK、参考代码如下所示:
https://dev.ti.com/tirex/explore/node?node=A__AKlljD0-u6GH-hOGGBHFtg__msp430ware__IOGqZri__LATEST
B.R.
SAL