洪嵐峰 發表於 2023-4-17 20:40:29

PIC32MX795F512L開發板

零件清單

PIC32MX795F512L微控制器
晶振:8MHz
電源管理IC:MCP1826S-5002E/AB
電容器:
22pF x 2 (晶振用)
1uF x 2 (電源用)
10uF x 2 (電源用)
0.1uF x 2 (晶振用)
電阻器:
10kΩ x 3 (按鈕用)
220Ω x 2 (LED用)
按鈕開關:x 3
LED:x 2
杜邦線(母對母、母對公、公對公)
PCB板、焊錫線、焊錫球、焊接工具

所需零件:

PIC32MX795F512L 單片機
16 MHz 晶體震盪器
2 個 22 pF 積層電容
2 個 10kΩ 電阻
1 個 10μF 電解電容
1 個 0.1μF 陶瓷電容
1 個 USB 轉 TTL 模組
杜邦線
連結腳位:

USB 轉 TTL 模組:
VCC -> 3.3V
GND -> GND
TXD -> U1RX (RB9)
RXD -> U1TX (RB8)

參考程式碼:
以下是使用 MPLAB X IDE 和 XC32 編譯器編寫的簡單程式碼,將 UART 設置為波特率為 9600,並將從串口接收到的字符回傳回去:


#include <xc.h>
#include <stdio.h>

#pragma config FPLLODIV = DIV_1, FPLLMUL = MUL_20, FPLLIDIV = DIV_2, FWDTEN = OFF
#pragma config POSCMOD = XT, FNOSC = PRIPLL, FPBDIV = DIV_2

#define SYS_FREQ 80000000L
#define PB_DIV 2
#define UART_BAUD_RATE 9600

void UART_Init(void)
{
    U1BRG = (SYS_FREQ / PB_DIV / 16 / UART_BAUD_RATE) - 1;
    U1MODE = 0x8000;
    U1STA = 0x1400;
}

void putch(char data)
{
    while (U1STAbits.UTXBF);
    U1TXREG = data;
}

char getch(void)
{
    if (U1STAbits.OERR)
        U1STAbits.OERR = 0;
    while (!U1STAbits.URXDA);
    if (U1STAbits.FERR || U1STAbits.PERR)
        return 0;
    else
        return U1RXREG;
}

int main()
{
    OSCCON = 0x46;
    UART_Init();
    while (1)
    {
        char c = getch();
        putch(c);
    }
    return 0;
}
這個程式碼假設使用的是 PIC32MX795F512L 開發板的第 1 個 UART,即 U1RX 和 U1TX。該程式碼首先使用 OSCCON 設置系統時鐘為 80MHz,然後使用 UART_Init 函數初始化 UART。
頁: [1]
查看完整版本: PIC32MX795F512L開發板