主题中讨论的其他器件:MSP-EXP430FR5739
大家好! 我想实现一个在 RealTerm 上显示"A"的简单代码、我使用的代码为:
#include "driverlib.h" uint16_t i; uint8_t RXData = 0、TXData = 0; uint8_t check = 0; void main (void) { //停止看门狗 WDT_A_HOLD (WDT_A_base); // LFXT 设置 //将 PJ.4和 PJ.5设置为主模块功能输入。 /* *选择端口 J *将引脚4、5设置为输入主模块功能 LFXT。 * GPIO_setPeripheralModuleFunctionInputPin ( GPIO_PORT_PJ、 GPIO_PIN4 + GPIO_PIN5、 GPIO_PRIMARY_MODULE_FUNCTION ); //将 DCO 频率设置为1MHz CS_setDCOFreq (CS_DCORSEL_0、CS_DCOFSEL_0); //set ACLK = VLO、分频器为1 CS_initClockSignal (CS_ACLK、CS_VLOCLK_select、CS_clock_divider); //set SMCLK = DCO、分频器为1 CS_initClockSignal (CS_SMCLK、CS_DCOCLK_select、CS_Clock_divider); //set MCLK = DCO、分频器为1 CS_initClockSignal (CS_MCLK、CS_DCOCLK_select、CS_Clock_divider); //配置 UART 引脚
//将 P2.0和 P2.1设置为辅助模块功能输入。 /* *选择端口2D *将引脚0、1设置为输入次级模块功能(UCA0TXD/UCA0SIMO、UCA0RXD/UCA0SOMI)。 * GPIO_setPeripheralModuleFunctionInputPin ( GPIO_PORT_P2、 GPIO_PIN0 + GPIO_PIN1、 GPIO_secondary 模块功能 ); //配置 UART EUSCI_A_UART_initParam param ={0}; param.selectClockSource = EUSCI_A_UART_CLOCKSOURCE_ACLK; param.clockPrescalar = 3; param.firstModReg = 0; param.secondModReg = 92; 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; if (STATUS_FAIL = EUSCI_A_UART_init (EUSCI_A0_BASE、¶m)){ 返回; } EUSCI_A_UART_ENABLE (EUSCI_A0_BASE); EUSCI_A_UART_clearInterrupt (EUSCI_A0_BASE、 EUSCI_A_UART_receive_interrupt); //启用 USCI_A0 RX 中断 EUSCI_A_UART_enableInterrupt (EUSCI_A0_BASE、 EUSCI_A_UART_receive_interrupt); //启用中断 _enable_interrupt (); while (1) { TXData = 65; // TX 数据="a" //将数据加载到缓冲区中 EUSCI_A_UART_transmitData (EUSCI_A0_BASE、 TXData); // while (check!= 1); Check = 0; } } //******** // ////这是 USCI_A0中断矢量处理例程。 /////******** #if defined (TI_Compiler_version)|| Defined (IAR_systems_ICC) #pragma vector=USCI_A0_Vector __interrupt #Elif Defined (GNUC) attribute ((interrupt (USCI_A0_Vector))) #endif void EUSCI_A0_ISR (void) { switch (__even_in_range (USCI_UCA_UCI_UCI_Vector) }{UCA0USCI_UCTUSCI_UCI_UART)} USCI_NONE 案例:中断; USCI_UART_UCRXIFG 案例: RXData = EUSCI_A_UART_receiveData (EUSCI_A0_BASE); if (!(RXData = TXData)) //检查值 { while (1); } 支票=1; 中断; 案例 USCI_UART_UCTXIFG:中断; 案例 USCI_UART_UCSTTIFG:中断; 案例 USCI_UART_UCTXCPTIFG:break; } }
在 RealTerm 上、我看到了这一点... ("<"符号表示数字60为 ASCII)、如果您可以看到、我分配了 TXDATA=65。
我认为这是时钟配置上的错误、位我无法确定... 你怎么看?
如 Aalwayss... 谢谢!