Thread 中讨论的其他器件: MSP430FR6041、 MSP430WARE、MSP430FR6043、 MSP430FR5041
工具/软件:
尊敬的 E2E:
我们正在开发燃气表。
我们发现可以通过 I2C 在 MSP430FR5043 上进行链接、并观察数据。
但是、eUSCI_A0(UART 模式)未正确配置、无法通过此接口读取数据。
1.代码如下,请帮助检查问题是什么?
内部 main (void)
{
WDTCTL = WDTPW | WDTHOLD;//停止看门狗
//配置 GPIO
P4SEL0 &=~(BIT3 | BIT4);
P4SEL1 |= BIT3 | BIT4;// USCI_A3 UART 操作
//禁用 GPIO 上电默认高阻抗模式以激活
//先前配置的端口设置
PM5CTL0 且=~LOCKLPM5;
//最大 DCO 设置~8MHz 的启动时钟系统
CSCTL0_H = CSKEY_H;//解锁 CS 寄存器
CSCTL1 = DCOFSEL | DCORSEL;//将 DCO 设置为 8MHz
CSCTL2 = SELA_VLOCLK | SELS__DCOCLK | SELM_DCOCLK;
CSCTL3 = DIVA__1 | DIVS__1 | DIVM_1;//设置所有分频器
CSCTL0_H = 0;//锁定 CS 寄存器
//为 UART 模式配置 USCI_A3
UCA0CTLW0 = UCSWRST;//将 eUSCI 置于复位状态
UCA0CTLW0 || UCSSEL_SMCLK;// CLK = SMCLK
//波特率计算
// 8000000/(16*9600)=52.083
//分数部分= 0.083
//用户指南表 24-4:UCBRSx = 0x04
// UCBRFx = int ((52.083-52)*16)= 1
UCA0BRW = 52;// 80000/16/9600
UCA0MCTLW |= UCOS16 | UCBRF_1 | 0x4900;
UCA0CTLW0 &=~UCSWRST;//初始化 eUSCI
UCA0IE |= UCRXIE;//启用 USCI_A3 RX 中断
__bis_SR_register (LPM3_bits + GIE);//进入 LPM3、已启用中断
__ no_operation ();//对于调试器
}
#if Defined (__TI_COMPILER_VERSION__)|| Defined (__IAR_SYSTEM_ICC__)
pragma vector=EUSCI_A3_vector
__中断 void USCI_A3_ISR (void)
#elif defined (__GNUC__)
void _attribute__((interrupt (EUSCI_A3_vector)) USCI_A3_ISR (void)
#else
错误:不支持编译器!
#endif
{
switch (__even_in_RANGE (UCA0IV、USCI_UART_UCTXCPTIFG))
{
case USCI_NONE:中断;
case USCI_UART_UCRXIFG:
while(!(UCA0IFG & UCTXIFG));
UCA0TXBUF = UCA0RXBUF;
__ no_operation ();
休息;
case USCI_UART_UCTXIFG:break;
用于 USCI_UART_UCSTTIFG:BREAK;
case USCI_UART_UCTXCPTIFG:break;
默认值:中断;
}
}
2.我们看到 MSP430FR5043 具有 RTC 和 MTIF 模块。 我们可以使用这两个模块来输出时间戳信号吗? 如何操作?
MSP430FR5043 定义了 WDT_A 此功能与常规 WDT 有何不同?
BR