请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
器件型号:MSP430FR5739 主题中讨论的其他器件: MSP-EXP430FR5739
您好!
我不熟悉 MSP430系列、当然有一条学习曲线。 我的设置是 评估板 EXP-MSP430FR5739上的 MSP430FR5739。 它使用 USB 连接连接连接到 PC、USB 连接也承载 CDC。
我尝试设置一个到主机 PC 的 UART 连接(115200bps、N、8、1)、但它不能按预期工作。 连接参数通过 SLAU272D 表18-5进行设置。 目的是使用第三行到最后一行、因为它具有最低的误差百分比。
发送标志(UCA0IFG&UCTXIFG)永远不会改变、并且字节永远不会离开 UART (只要我能告诉我)。 此外、当向 PC 上的 CDC/串行端口发送数据时、LED 永远不会闪烁。
我已粘贴以下相关代码。
int main (void)
{
WDTCTL = WDTPW | WDTHOLD;//停止看门狗计时器
//设置时钟速度
CSCTL0_H = 0xA5;//启用 CS 寄存器访问
CSCTL1 |= DCOFSEL1 + DCORSEL;//将 DCO 设置为20MHz
//将 MCLK 源设置为 DCOCLK、
// SMCLK 源到 DCOCLK、
//以及 ACLK 源到 VLOCLK
CSCTL2 = SELM0 + SELM1 + SELS0 + SELS1 + SELA0;
//将 MCLK 时钟分频器设置为0以进行1分频、
//将 SMCLK 时钟分频器设为0以除以1、
//将 ACLK 时钟分频器设为0以进行1分频、
CSCTL3 &= 0x00;
//为启用条件模块请求
// MCLK、SMCLK 和 ACLK
CSCTL6 |= MCLKREQEN + SMCLKREQEN + ACLKREQEN;
命令初始化();
uint8_t data[3];
数据[0]= 0x43;
数据[1]= 0x44;
DATA[2]= 0x0A;
while (1)
{
命令传输(0x44、3、数据);
}
返回0;
}
void 命令初始化()
{
P2DIR |= BIT0 | BIT1;//RX + TX 引脚
PJDIR |= BIT1 | BIT2;//LED
UCA0CTL0 = UCSWRST;//复位 UART 寄存器
UCA0CTL0 |=(UCSSEL1 | UCSSEL0);//将 UCSSELx 设置为11b (SMCLK)
UCA0BRW = 10;//UCAxBRW = 10
UCA0MCTLW_L = 0xD0 | UCOS16;//BRFx = 13 +启用过采样
UCA0MCTLW_H = 0xAD;//BRS = 0xAD
UCA0CTL1 &=~Ω UCSWRST;//从复位中释放
UCA0IE |= UCTXIE | UCRXIE;//启用 RX 中断
}
void Commanding_Transmit (uint8_t 命令、uint8_t 长度、uint8_t*数据)
{
//发送命令 id
UCA0TXBUF =命令;
while (!(UCA0IFG&UCTXIFG));//等待缓冲区准备就绪
uint8_t i = 0;
//发送数据
对于(i = 0;i < length;i++)
{
UCA0TXBUF = DATA[i];
while (!(UCA0IFG&UCTXIFG));//等待缓冲区准备就绪
}
PJOUT ^= BIT2;
}
#pragma vector=USCI_A0_vector
__interrupt void USCI_A0_ISR (void)
{
switch (__evo_in_range (UCA0IV、0x08))
{
情况0:中断;//向量0 -无中断
情况2://向量2 - RXIFG
{
uint8_t rxChr = 0;
rxChr = UCA0RXBUF;
PJOUT ^= BIT1;
中断;
}
情况4:中断;//向量4 - TXIFG
默认值:break;
}
}
感谢您的任何帮助。