最近调试MSP430FR5994的4个串口(UART),同样的配置,UART0,1都没问题,但UART2,UART3就是没有反应,循环发送数据,用示波器测试TX脚没波形。不知这个地方有什么需要注意的吗?
This thread has been locked.
If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.
最近调试MSP430FR5994的4个串口(UART),同样的配置,UART0,1都没问题,但UART2,UART3就是没有反应,循环发送数据,用示波器测试TX脚没波形。不知这个地方有什么需要注意的吗?
uint8_t BLE_Init(uint16_t baudrate)
{
// Configure UART_BLE pins EUSCI_A2_BASE
//Set P5.4 and P5.5 as Secondary Module Function Input.
GPIO_setAsPeripheralModuleFunctionInputPin(GPIO_PORT_P5,GPIO_PIN4 + GPIO_PIN5,
GPIO_SECONDARY_MODULE_FUNCTION);
// Configure UART_BLE EUSCI_A2_BASE
EUSCI_A_UART_initParam param = {0};
param.selectClockSource = EUSCI_A_UART_CLOCKSOURCE_SMCLK;
param.clockPrescalar = 6;
param.firstModReg = 8;
param.secondModReg = 0;//92
param.parity = EUSCI_A_UART_NO_PARITY;
param.msborLsbFirst = EUSCI_A_UART_LSB_FIRST;
param.numberofStopBits = EUSCI_A_UART_ONE_STOP_BIT;
param.uartMode = EUSCI_A_UART_MODE;
param.overSampling = EUSCI_A_UART_OVERSAMPLING_BAUDRATE_GENERATION;
if(STATUS_FAIL == EUSCI_A_UART_init(UART_BLE, ¶m))
{
return 0 ;
}
EUSCI_A_UART_enable(UART_BLE);
EUSCI_A_UART_clearInterrupt(UART_BLE,EUSCI_A_UART_RECEIVE_INTERRUPT);
// Enable USCI_A2 RX interrupt EUSCI_A2_BASE
EUSCI_A_UART_enableInterrupt(UART_BLE,EUSCI_A_UART_RECEIVE_INTERRUPT); // Enable interrupt
// POWER_BLE On
POWER_BLE_On;
return 1;
}
voia main(void)
{
WDT_A_hold(WDT_A_BASE); // stop watchdog
// LFXT Setup
//Set PJ.4 and PJ.5 as Primary Module Function Input.
/*
* Select Port J
* Set Pin 4, 5 to input Primary Module Function, LFXT.
*/
GPIO_setAsPeripheralModuleFunctionInputPin( GPIO_PORT_PJ,GPIO_PIN4 + GPIO_PIN5,
GPIO_PRIMARY_MODULE_FUNCTION);
//Set DCO frequency to 1 MHz
CS_setDCOFreq(CS_DCORSEL_0,CS_DCOFSEL_0);
//Set external clock frequency to 32.768 KHz
CS_setExternalClockSource(32768,0);
//Set ACLK=LFXT
CS_initClockSignal(CS_ACLK,CS_LFXTCLK_SELECT,CS_CLOCK_DIVIDER_1);
//Set SMCLK = DCO with frequency divider of 1
CS_initClockSignal(CS_SMCLK,CS_DCOCLK_SELECT,CS_CLOCK_DIVIDER_1);
//Set MCLK = DCO with frequency divider of 1
CS_initClockSignal(CS_MCLK,CS_DCOCLK_SELECT,CS_CLOCK_DIVIDER_1);
//Start XT1 with no time out
CS_turnOnLFXT(CS_LFXT_DRIVE_0);//Start XT1 with no time out
__enable_interrupt();
while(1)
{
EUSCI_A_UART_transmitData(EUSCI_A2_BASE,*pTem++);//EUSCI_A2_BASE
__delay_cycles(1000);
}
}