Part Number:MSP432WARE
Hello Everyone,
I am working on MSP432P401R EVM board.
Q)UART Rx interrupt is not generating..
Code Tasted on 12 MHZ, 24 MHZ with possible boud rates.
Before going to my application UART, I tested driver library loop back UART code...But in this example also rx interrupt is generating.
I selected port 3.2 amd 3.3 for uart.
/* DriverLib Includes */
#include "driverlib.h"
/* Standard Includes */
#include <stdint.h>
#include <stdbool.h>
volatile uint8_t TXData = 1;
volatile uint8_t RXData = 0;
const eUSCI_UART_Config uartConfig =
{
EUSCI_A_UART_CLOCKSOURCE_SMCLK, // SMCLK Clock Source
78, // BRDIV = 78
2, // UCxBRF = 2
0, // UCxBRS = 0
EUSCI_A_UART_NO_PARITY, // No Parity
EUSCI_A_UART_MSB_FIRST, // LSB First
EUSCI_A_UART_ONE_STOP_BIT, // One stop bit
EUSCI_A_UART_MODE, // UART mode
EUSCI_A_UART_OVERSAMPLING_BAUDRATE_GENERATION // Oversampling
};
int main(void)
{
/* Halting WDT */
MAP_WDT_A_holdTimer();
/* Selecting P1.2 and P1.3 in UART mode and P1.0 as output (LED) */
MAP_GPIO_setAsPeripheralModuleFunctionInputPin(GPIO_PORT_P3,
GPIO_PIN2 | GPIO_PIN3, GPIO_PRIMARY_MODULE_FUNCTION);
MAP_GPIO_setAsOutputPin(GPIO_PORT_P1, GPIO_PIN0);
MAP_GPIO_setOutputLowOnPin(GPIO_PORT_P1, GPIO_PIN0);
MAP_PCM_setCoreVoltageLevel(PCM_VCORE1);
CS_setDCOCenteredFrequency(CS_DCO_FREQUENCY_12); //CS_setDCOCenteredFrequency(CS_DCO_FREQUENCY_24);
//UCA2STATW=0X0080;
/* Configuring UART Module */
MAP_UART_initModule(EUSCI_A2_BASE, &uartConfig);
/* Enable UART module */
MAP_UART_enableModule(EUSCI_A2_BASE);/* Enabling interrupts */
MAP_UART_enableInterrupt(EUSCI_A2_BASE, EUSCI_A_UART_RECEIVE_INTERRUPT);
MAP_Interrupt_enableInterrupt(INT_EUSCIA2);
MAP_Interrupt_enableSleepOnIsrExit();
while(1)
{
UART_transmitData(EUSCI_A2_BASE, TXData);
MAP_Interrupt_enableSleepOnIsrExit();
MAP_PCM_gotoLPM0InterruptSafe();
}
}
/* EUSCI A2 UART ISR - Echos data back to PC host */
void EUSCIA2_IRQHandler(void)
{
uint32_t status = MAP_UART_getEnabledInterruptStatus(EUSCI_A2_BASE);
MAP_UART_clearInterruptFlag(EUSCI_A2_BASE, status);
if(status & EUSCI_A_UART_RECEIVE_INTERRUPT_FLAG)
{
RXData = MAP_UART_receiveData(EUSCI_A2_BASE);
if(RXData != TXData) // Check value
{
MAP_GPIO_setOutputHighOnPin(GPIO_PORT_P1, GPIO_PIN0);
while(1); // Trap CPU
}
TXData++;
MAP_Interrupt_disableSleepOnIsrExit();
}
}
Where i am doing wrong please tell me.
Is that any configuration is required