请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
器件型号: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; } }
感谢您的任何帮助。