⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 uart.c

📁 LCD FUNCTION OF msp430
💻 C
字号:
#include "io430.h"
#include "in430.h"
#include <string.h>

void halUartInit(unsigned int baud)
{
  //UART
  // Configure USART in UART mode, 8-bit, 1-stop, no parity.
  // Hold logic in reset state while configuring other registers
  
  
  
#if 0

  P3SEL |= (BIT6 + BIT7);               // P3.5,6 = USART1 TXD/RXD
  P3DIR |= BIT6;                        // P3.5,6 output direction  
  
  UCTL1 =  (0*PENA)      // 7 Parity Enable         0=Disabled
          |(0*PEV)      // 6 Parity Select         0= Odd
        |(0*SPB)      // 5 Stop Bit Select      0= 1 Stop bit
        |(1*CHAR)      // 4 Character Length      1= 8-bit data
        |(0*LISTEN)   // 3 Loopback control      0= Loopback disabled
        |(0*SYNC)      // 2 Synchronous Mode      0= UART mode
        |(0*MM)      // 1 Multiprocessor Mode   0= Idle-line multiproc control
        |(1*SWRST);   // 0 Software Reset         1= Logic Held in Reset State ...
                  //                             while configuring other registers
  
  UTCTL1 |= SSEL1;                      // UCLK = SMCLK
     
  switch(baud)
  {
      case 9600:
    //    UTCTL1 = SSEL0;                     // UCLK = ACLK
        UBR01 = 0xD0;                         // 2MHz/9600
        UBR11 = 0x00;                         //
//        UMCTL1 = 0x4a;                        // 
        break;
      
      case 19200:
     //   UTCTL1 = SSEL1;                     // UCLK = SMCLK
        UBR01 = 0x68;                         // 2MHz/19200 
        UBR11 = 0x00;                         //
   //     UMCTL0 = 0x55;                        // 
        break;
      case 57600:
     //   UTCTL1 = SSEL1;                     // UCLK = SMCLK
        UBR01 = 0x22;                         // 2MHz/57600 
        UBR11 = 0x00;                         //
        UMCTL1 = 0x7B;                        // 
        break;
      case 115200:
     //   UTCTL1 = SSEL1;                     // UCLK = SMCLK
        UBR01 = 0x11;                         // 2MHz/115.2k 
        UBR11 = 0x00;                         //
        UMCTL1 = 0x29;                        // 
        break;
      default:
        break;
  }
  
  U1ME |= UTXE1+URXE1 ;                 // Enabled USART1 TXD/RXD
  UMCTL1 = 0;
//  U0IFG &= ~URXIFG0;                    // Clear USART1 RX interrupt flag
//  U0IE |= URXIE0+UTXIE0;                // Enable USART1 RX + TX interrupt
//  U0IE |= URXIE0;                       // Enable USART1 RX interrupt

  UCTL1 &= ~(SWRST);                    // 8-bit character - clr SWRST bit
                      // Rosc
  
#endif
}
//----------------------------------------------------------------------------------
//  void halUartWrite(const uint8* buf, uint16 length)
//----------------------------------------------------------------------------------
void UartWrite(const char * buf)
{
    int i;
    for(i = 0; i < strlen(buf); i++)
    {
      while (!(U1IFG & UTXIFG1));            // wait till TX buf empty    
      TXBUF1=buf[i];
    }
}
char UartRead(void)
{
  while (!(U1IFG & URXIFG1));            // wait till TX buf empty    
  return U1RXBUF;
  //   while (!halUARTgetCharIsReady ());
  //   return U1RXBUF;
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -