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.

Receive interrupt in UART in MSP430F2274



I tried to receive and transmit data using UART . I was able to transmit data but when i type characters on hyperterminal . It is not getting displayed . Can anyone tell me the problem in my code

#include "target.h"
extern void (*buttonIsr)(void);
void handleButtonPress(void);
int main( void )
{
  clockinit();
  uartinit();
  buttonIsr = &handleButtonPress;
    HAL_ENABLE_INTERRUPTS();              //Enable Interrupts
    while (1)
    {
        toggleLed(0);         
        delayMs(1000);          
    }
}
 
void handleButtonPress(void)
{
    toggleLed(1);
    sendstring("\nLight Toggled");
}

#pragma vector=USCIAB0RX_VECTOR
__interrupt void USCI0RX_ISR(void)
{
  while (!(IFG2&UCA0TXIFG));                 // USCI_A0 TX buffer ready?
  UCA0TXBUF = UCA0RXBUF;                     // TX -> RXed character
}

clock.c

//Initiate the clock
#include "target.h"
void (*buttonIsr)(void);
void (*debugConsoleIsr)(char);
void clockinit()
{
  WDTCTL = WDTPW + WDTHOLD; // Stop WDT
  if (CALBC1_8MHZ ==0xFF || CALDCO_8MHZ == 0xFF)                                     
    {  
        while(1); // Stop if calibration constants erased
    }  
  BCSCTL1 = CALBC1_8MHZ; // Set DCO = 8MHz for MCLK
    DCOCTL = CALDCO_8MHZ;
    BCSCTL2 |= DIVS_1;     //SMCLK = DCO/2 (4MHz)
    BCSCTL3 |= LFXT1S_2;                   // Use VLO for ACLK
    /*PORT 1:
    1.0     LED 1
    1.1     LED 2
    1.2     Button - connects to GND when closed
    1.3     Accelerometer Interrupt
    1.4     
    1.5     
    1.6     
    1.7     
    */
    P1DIR = BIT0+BIT1;
    P1OUT &= ~BIT2;
    P1IE  = BIT2;   //Enable Button Interrupt
    P1IES = BIT2;   //Interrupt on high-to-low transition
    P1REN = BIT2;   //enable resistor for button
    P1OUT = BIT2;   //make resistor a PULL-UP
    P1SEL = 0;      //NOTE: default value is NOT 0!
    P1IFG = 0;
}

//UART initiation function
void uartinit()
{
  P3SEL = (BIT4+BIT5); //select pin and port3.4and5
  //ME1|=UTXE0+URXE0;
 
    UCA0CTL1 |= UCSSEL_2;
  UCA0BR0 = 26; UCA0BR1 = 0;
  UCA0MCTL = UCBRS_0 + +UCBRF_1 + UCOS16;   // Modulation UCBRSx=1, over sampling      
    UCA0CTL1 &= ~UCSWRST;                     // **Initialize USCI state machine**
    IE2 |= UCA0RXIE;// Enable USCI_A0 RX interrupt
    //IE2_bit=UCA0RXIE
}

signed int toggleLed(unsigned char led)
{
    if (led > 1)
        return -1;
    P1OUT ^= (1 << led);
    return 0;
}

void delayMs(unsigned int ms)    
{
    unsigned int a, b;
    for (a = ms; a > 0; a--)         // outer loop takes 5 ck per round  
        for (b = TICKS_PER_MS; b > 0; b--)  // inner loop takes 5 ck per round
            asm("nop");
}

//send strings through UART
void sendstring( char *str)
{
  int i=0;
  for(i=0;i< strlen(str); i++)
  {
    while (!(IFG2 & UCA0TXIFG));
    UCA0TXBUF=str[i];
    //toggleLed(1);
  }
}

#pragma vector=PORT1_VECTOR
__interrupt void PORT1_ISR(void)
{
    if (P1IFG & BIT2)                
        buttonIsr();

    if (P1IFG & BIT3)
    {
        //accelerometerIsr();
       // if (wakeupFlags & WAKEUP_AFTER_ACCELEROMETER)    
            //HAL_WAKEUP();           
    }
    P1IFG = 0;                          // clear the interrupt
}

//Transmit UART

#pragma vector=USCIAB0RX_VECTOR
__interrupt void USCI0RX_ISR(void)
{
  while (!(IFG2&UCA0TXIFG));                 // USCI_A0 TX buffer ready?
  UCA0TXBUF = UCA0RXBUF;                     // TX -> RXed character
}



**Attention** This is a public forum