主题中讨论的其他器件:MSPWARE、
您好!
简介:串行 eUSCI_A0不会向主机 PC 发送任何串行数据。
我已经开始使用 EVM 进行开发、并尝试在 eUSCI_A0上配置和使用串行 UART。 在 EVM 上、组装接头 J2上的引脚后、它应通过 ezFET 进行通信(如下所示):
我已经如图所示配置了 eUSCI_A0寄存器:
void serial_init (void) { EUSCI_A_UART_initParam param ={0}; param.selectClockSource = EUSCI_A_UART_CLOCKSOURCE_SMCLK;//SMCLK=>(DCO) 16MHz/DIVS_4 ---- ACLK=LFXTCLK=37.768 kHz param.clockPrescalar = 69;4/57600 param.firstModReg = 0; param.secondModReg = 4; param.parity = EUSCI_A_UART_NO_parity; param.msborLsbFirst = EUSCI_A_UART_LSB_FIRST; param.numerofStopBits = EUSCI_A_UART_Oe_STOP_BIT; param.uartMode = EUSCI_A_UART_MODE; param.oversaming= EUSCI_A_UART_LOW_FREQUENCY BAUDRATE_generation;
//设置 P2SEL1.x GPIO_setPeripheralModuleFunctionInputPin (GPIO_PORT_P2、GPIO_PIN0 + GPIO_PIN1、GPIO_secondary 模块_function);// P2.0 UCA0TXD 和 P2.1 UCA0RXD if (STATUS_FAIL = EUSCI_A_UART_init (EUSCI_A0_BASE、¶m)){ 返回; } PMM_unlockLPM5 (); EUSCI_A_UART_ENABLE (EUSCI_A0_BASE); EUSCI_A_UART_clearInterrupt (EUSCI_A0_BASE、EUSCI_A_UART_receive_interrupt); EUSCI_A_UART_clearInterrupt (EUSCI_A0_BASE、EUSCI_A_UART_Transmit 中断); EUSCI_A_UART_enableInterrupt (EUSCI_A0_BASE、EUSCI_A_UART_Transmit 中断); //启用中断 //启用 USCI_A0 RX 中断 EUSCI_A_UART_enableInterrupt (EUSCI_A0_BASE、EUSCI_A_UART_receive_interrupt); //启用中断 __ENABLE_INTERRUPT(); }
下面是时钟初始化例程:
void clock_init (void) { // *配置 CS 模块 * MCLK = 16MHz (从 DCOCLK) * SMCLK = 8MHz (从 DCOCLK) * ACLK = LFXTCLK 32.768KHz *// 解锁 CS 寄存 器 CSCTL0_H = CSKEY >> 8; //将 DCO 设置为16MHz CSCTL4 | DCOSEL = DCOTL1; // SELA 选择 ACLK 源 // SELA 选择 SMCLK 源// SELM 选择 MCLK 源//对于 EVM HFXCLK = 8MHz、LFXCLK = 32.768kHz、//设置 ACLK = LFXTCLK、SMCLK = DCO、MCLK = HFXTCLK CSCTL2 =__CLK | SELK | SELK | SELCLK | SEL_ SELK | SELK | SELK CLK | SEL_ SELK | SEL_ SELCLK // DIVA 选择 ACLK 源分频 器// DIVS 选择 SMCLK 源分频 器// DIVM 选择 MCLK 源分频 器 CSCTL3 =(DIVA__1 | DIVS_4 | DIVM_1); CSCTL4 &=(HFXTDRIVE_0); CSCTL4 &=(HFXTHRESD4和= (HFXTHRESD4) | CFXT0)| CFXTREFW4 | CFXTREFW4 (HSCTL4);CFXTREFW4 = 1) CSCTL4 |=(LFXTBYPASS =0); CSCTL4 &=~(HFXTOFF); CSCTL4 &=~(LFXTOFF); //锁定 CS 寄存 器 CSCTL0_H = 0;// }
调试时、UCA0寄存器如下所示:
主:
uint8_t RXData = 0、TXData = 0; uint8_t check = 0; int main (void){ uint32_t I = 0; TXData = 0x01;
while (1){ serial_trasmitDataByte (TXData); // TXData = TXData+1; 对于(i = 0;i < 100000;i++); GPIO_toggleOutputOnPin (GPIO_PORT_P1、GPIO_PIN0); } 返回(0); }
// // ////这是 USCI_A0中断矢量处理例程。 //// ********* #if defined (__TI_Compiler_version__)|| defined (__IAR_systems_icc_) #pragma vector=USCI_A0_vector __interrupt #elif defined (__GNU__) __attribute__(interrupt (USCI_A0_vector))#endif void USCI_A0_ISR __interrupt #elt #elif defined (__GTIC_属性_(UCA_UCI_IN_IN_INTRIF_IN_IN_INTRIBUCI_IN_UCAINTRIEL )(UCA0_INTRUCAINTR USCI_NONE 案例:中断; USCI_UART_UCRXIFG 案例: RXData = EUSCI_A_UART_receiveData (EUSCI_A0_BASE); if (!(RXData = TXData))//检查值 { while (1); } 支票=1; 中断; USCI_UART_UCTXIFG 案例: TXData = TXData+1; 中断; }
中断按预期运行、但我在主机 PC 串行通信上未接收到任何数据。 我缺少什么吗??
还尝试使用 MSPWARE 示例(msp430fr60x7_euscia0_UART_03.c)代码、但未成功。 同样、配置寄存器但未接收到数据


