首页 > 其他 > 详细

PIC32MZ tutorial -- UART Communication

时间:2016-02-10 23:20:30      阅读:598      评论:0      收藏:0      [点我收藏+]

  At this moment, I accomplish the interface of UART communication for PIC32MZ EC Starter Kit. This interface configures the PIC32MZ for communication with a host PC at 115200 baud. There are five functions in the interface -- Uart_Init(), Uart_Getc(), Uart_Gets(), Uart_Putc() and Uart_Puts().  

  Uart_Init() configures PIC32MZ UART1 with 115200-8-None-1. It uses PPS to select RPC13, RPC14 as TX and RX.

      Uart_Getc() is a reception funtion for a character. It will be blocked until a character got.

  Uart_Gets() is a reception funtion for string. It will receive multiple characters until the ‘\r‘ ‘\n‘ or the buffer is full.

  Uart_Putc() is a transmit function for a character.

      Uart_Puts() is a transmit funtion for a string. It will transmit multiple character until ‘\0‘.

  Below is the code. 

void Uart_Init(void)
{
    LATCSET = 0x6000; /* Both RC13 and RC14 HIGH */
    TRISCSET = 0x4000; /* RC14 Input */
    TRISCCLR = 0x2000; /* RC13 Output */
    
    Seq_UnLock();     
    RPC13Rbits.RPC13R = 1;  /* U1TX on RPC13 */
    U1RXRbits.U1RXR = 7;    /* U1RX on RPC14 */
    Seq_Lock();
    
    U1BRG = ((PBCLK2_FREQUENCY / BAUDRATE) / 16) - 1;
    U1MODE = 0x8000;        // Loopback mode is enabled
    U1STA = 0x1400;
    
    IFS3bits.U1RXIF = 0;
    IFS3bits.U1TXIF = 0;
}

char Uart_Getc(void)
{
    if (U1STAbits.OERR)
    {
        U1STAbits.OERR = 0;
        return 0;
    }
    while (!U1STAbits.URXDA);
    char ret = U1RXREG;
    IFS3bits.U1RXIF = 0;
    return ret;
}

void Uart_Gets(char *s)
{
    char c;
    int size = 0;
    if (s == (void *)0) return;
    while (size < U1RX_BUFSIZE)
    {
        c = Uart_Getc();
        if ((c == \n)||(c == \r)) 
        {
            s[size] = \0;
            break;
        }
        s[size++] = c;
    }
}

void Uart_Putc(char c)
{
    U1TXREG = c;
    while (U1STAbits.UTXBF);
    IFS3bits.U1TXIF = 0;
}

void Uart_Puts(char *s)
{
    if (s == (void *)0)
    {
        return;
    }
    while (*s != \0)
    {
        Uart_Putc(*s++);
    }
}

 

 

  

PIC32MZ tutorial -- UART Communication

原文:http://www.cnblogs.com/geekygeek/p/pic32mz_uartcommunication.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!