- UID
- 373967
- 帖子
- 8867
- 主題
- 2609
- 精華
- 0
- 積分
- 1000
- 楓幣
- 15
- 威望
- 977
- 存款
- 34822
- 贊助金額
- 0
- 推廣
- 0
- GP
- 1205
- 閱讀權限
- 70
- 在線時間
- 455 小時
- 註冊時間
- 2023-1-12
- 最後登入
- 2024-11-22
|
零件清單
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。 |
|