请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
器件型号:MSP430F67791A 工具/软件:Code Composer Studio
尊敬的先生:
我正在使用 MSP430F67791A 微控制器、并在3.3V 直流电压下施加外部电源电压。
我正在调试 UART 代码、并在观察窗口中不断收到消息"Cannot load from non-基 元位置"。
然后、在 (!(UCA0IFG 和 UCTXIFG)时、在行之后停止处理; // USCI_A0 TX 缓冲器就绪?
连接到我的 UART 代码。 请为任何人解决此问题。
连接到我的 UART 代码。 请为任何人解决此问题。
#include
空 UART_INIT()
{
//设置 P3.0 UCA0RXD、P3.1 UCA0TXD
P3SEL0 |= BIT0 | BIT1; //将 P3.0、P3.1设置为非 IO
P3DIR |= BIT0 | BIT1; //启用 UCA0RXD、UCA0TXD
//设置 LFXT1
UCSCTL6 &=~(XT1OFF); // XT1打开
UCSCTL6 |= XCAP_3; //内部负载电容
//循环直到 XT1故障标志被清除
操作
{
UCSCTL7 &=~(XT2OFFG | XT1LFOFFG | DCOFFG);
//清除 XT2、XT1、DCO 故障标志
SFRIFG1 &=~OFIFG; //清除故障标志
} while (SFRIFG1和 OFIFG); //测试振荡器故障标志
//设置 eUSCI_A0
UCA0CTLW0 |= UCSWRST; //**将状态机置于重置中**
UCA0CTLW0 |= UCSSEL_1; // CLK = ACLK
UCA0BRW_L = 0x03; // 32kHz/9600=3.41 (请参阅用户指南)
UCA0BRW_H = 0x00; //
UCA0MCTLW = 0x5300; //调制 UCBRSx=0x53、UCBRFx=0
UCA0CTLW0 &=~UCSWRST; //**初始化 USCI 状态机**
// UCA0IE |= UCRXIE; //启用 USCI_A0 RX 中断
// _ bis_SR_register (LPM3_bits | GIE); //输入 LPM3、中断被启用
// __no_operation();
}
空 UART_Tx (无符号字符 A)
{
while (!(UCA0IFG & UCTXIFG)); // USCI_A0 TX 缓冲器就绪?
UCA0TXBUF = A;
}
空 UART_Str (无符号字符* a)
{
while (* a!='\0')
{
UART_Tx (* a);A++;
}
}
void main (void)
{
WDTCTL = WDTPW | WDTHOLD; //停止 WDT
UART_INIT();
while (1)
{
空 UART_INIT()
{
//设置 P3.0 UCA0RXD、P3.1 UCA0TXD
P3SEL0 |= BIT0 | BIT1; //将 P3.0、P3.1设置为非 IO
P3DIR |= BIT0 | BIT1; //启用 UCA0RXD、UCA0TXD
//设置 LFXT1
UCSCTL6 &=~(XT1OFF); // XT1打开
UCSCTL6 |= XCAP_3; //内部负载电容
//循环直到 XT1故障标志被清除
操作
{
UCSCTL7 &=~(XT2OFFG | XT1LFOFFG | DCOFFG);
//清除 XT2、XT1、DCO 故障标志
SFRIFG1 &=~OFIFG; //清除故障标志
} while (SFRIFG1和 OFIFG); //测试振荡器故障标志
//设置 eUSCI_A0
UCA0CTLW0 |= UCSWRST; //**将状态机置于重置中**
UCA0CTLW0 |= UCSSEL_1; // CLK = ACLK
UCA0BRW_L = 0x03; // 32kHz/9600=3.41 (请参阅用户指南)
UCA0BRW_H = 0x00; //
UCA0MCTLW = 0x5300; //调制 UCBRSx=0x53、UCBRFx=0
UCA0CTLW0 &=~UCSWRST; //**初始化 USCI 状态机**
// UCA0IE |= UCRXIE; //启用 USCI_A0 RX 中断
// _ bis_SR_register (LPM3_bits | GIE); //输入 LPM3、中断被启用
// __no_operation();
}
空 UART_Tx (无符号字符 A)
{
while (!(UCA0IFG & UCTXIFG)); // USCI_A0 TX 缓冲器就绪?
UCA0TXBUF = A;
}
空 UART_Str (无符号字符* a)
{
while (* a!='\0')
{
UART_Tx (* a);A++;
}
}
void main (void)
{
WDTCTL = WDTPW | WDTHOLD; //停止 WDT
UART_INIT();
while (1)
{
UART_Str ("ABCD");
}
}
