- 註冊時間
- 2004-10-30
- 最後登錄
- 2025-1-23
- 主題
- 查看
- 積分
- 265
- 閱讀權限
- 50
- 文章
- 219
- 相冊
- 0
- 日誌
- 0
![Rank: 5](static/image/common/star_level3.gif) ![Rank: 5](static/image/common/star_level1.gif)
狀態︰
離線
|
本帖最後由 alphi 於 2011-12-1 02:16 編輯
前言
PIC32提供非常多的周邊模組包含UART,I2C,USB,GPIO,ADC,Timer,PMP,DMA,..等對於嵌入式系統來說非常的多.另外microchip本身針對PIC32與自家的PIC24提供
各式各樣的Library例如Graphics,USB,Ethernet,Bluetooth等等Library(目前合併為Microchip Application Library),我本身就使用其Graphics Library+USB Library在FreeRTOS即時做業系統上整合
從下圖可以看出PIC32 的GPIO架構
TRISX暫存器為控制輸出或者輸入
實驗環境
MCU: PIC32MX795L(128KB SRAM/512KB Flash/TQFP100/USB HOST/DEVICE/OTG,...)
IDE: MPLAB 8.80
編譯器: MPLAB C32 V2.01
燒錄器: ICD3
開發板:Explorer 16
程式碼- #include <plib.h>
- // 編譯器參數
- // SYSCLK(核心工作頻率) = 80 MHz (8MHz Crystal/ FPLLIDIV * FPLLMUL / FPLLODIV)
- // PBCLK(周邊頻率) = (SYSCLK/8)=10 MHz
- // 主要石英震盪器來源 Osc w/PLL (XT+,HS+,EC+PLL)
- // 關閉Watchdog
- //
- #pragma config FPLLMUL = MUL_20, FPLLIDIV = DIV_2, FPLLODIV = DIV_1, FWDTEN = OFF
- #pragma config POSCMOD = HS, FNOSC = PRIPLL, FPBDIV = DIV_8
- #define SYS_FREQ (80000000L)
- int main(void)
- {
- int i;
- //系統設定參數為80MHz,以及Prefetch Cache加快執行效能
- SYSTEMConfig(SYS_FREQ, SYS_CFG_WAIT_STATES | SYS_CFG_PCACHE);
- // 因為Explorer 16 PORTA與JTAG共用,所以關閉JTAG功能.
- mJTAGPortEnable(DEBUG_JTAGPORT_OFF);
- //設定PORTA BIT7~BIT0為輸出(PIC32中,每一個PORT為16bit)
- mPORTASetPinsDigitalOut( BIT_7 | BIT_6 | BIT_5 | BIT_5 | BIT_4 | BIT_3 | BIT_2 | BIT_1 | BIT_0 );
- //清除PORTA.7~PORTA.0為=0
- mPORTAClearBits(BIT_7 | BIT_6 | BIT_5 | BIT_5 | BIT_4 | BIT_3 | BIT_2 | BIT_1 | BIT_0 );
-
-
- while(1)
- {
- //將PORTA.7~PORTA.0狀態反轉(1->0,0->1)
- mPORTAToggleBits(BIT_7 | BIT_6 | BIT_5 | BIT_5 | BIT_4 | BIT_3 | BIT_2 | BIT_1 | BIT_0 );
- // 延時
- i = 1024*1024;
- while(i--);
- }
- }
複製代碼 結論
由上述的範例可以看的出來,Microchip針對PIC32花了許多時間去寫Library.相較於ARM Cortex-M3的CMSIS(Cortex-M Series Interface Standard)函式庫來比(個人在用STM32開發一些東西)相對清晰易懂.接下來將會繼續介紹中斷與Timer,...等等PIC32入門 |
-
總評分: 威望 + 1
查看全部評分
|