SOGO論壇
  登入   註冊   找回密碼
查看: 2263|回覆: 0
列印 上一主題 下一主題

[程式設計] Microchip PIC32入門(2)-GPIO實驗 [複製連結]

Rank: 5Rank: 5

數位軟體勳章

狀態︰ 離線
跳轉到指定樓層
1
發表於 2011-12-1 01:40:54 |只看該作者 |倒序瀏覽 | x 2
本帖最後由 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

   

   

程式碼
  1. #include <plib.h>

  2. // 編譯器參數
  3. // SYSCLK(核心工作頻率) = 80 MHz (8MHz Crystal/ FPLLIDIV * FPLLMUL / FPLLODIV)
  4. // PBCLK(周邊頻率) = (SYSCLK/8)=10 MHz
  5. // 主要石英震盪器來源 Osc w/PLL (XT+,HS+,EC+PLL)
  6. // 關閉Watchdog
  7. //
  8. #pragma config FPLLMUL = MUL_20, FPLLIDIV = DIV_2, FPLLODIV = DIV_1, FWDTEN = OFF
  9. #pragma config POSCMOD = HS, FNOSC = PRIPLL, FPBDIV = DIV_8

  10. #define SYS_FREQ                         (80000000L)

  11. int main(void)
  12. {
  13.         int i;

  14.             //系統設定參數為80MHz,以及Prefetch Cache加快執行效能
  15.             SYSTEMConfig(SYS_FREQ, SYS_CFG_WAIT_STATES | SYS_CFG_PCACHE);


  16.         // 因為Explorer 16 PORTA與JTAG共用,所以關閉JTAG功能.
  17.         mJTAGPortEnable(DEBUG_JTAGPORT_OFF);

  18.           //設定PORTA BIT7~BIT0為輸出(PIC32中,每一個PORT為16bit)
  19.           mPORTASetPinsDigitalOut( BIT_7 | BIT_6 | BIT_5 | BIT_5 | BIT_4 | BIT_3 | BIT_2 | BIT_1 | BIT_0 );

  20.            //清除PORTA.7~PORTA.0為=0
  21.            mPORTAClearBits(BIT_7 | BIT_6 | BIT_5 | BIT_5 | BIT_4 | BIT_3 | BIT_2 | BIT_1 | BIT_0 );

  22.            
  23.        
  24.         while(1)
  25.         {
  26.                       //將PORTA.7~PORTA.0狀態反轉(1->0,0->1)
  27.                 mPORTAToggleBits(BIT_7 | BIT_6 | BIT_5 | BIT_5 | BIT_4 | BIT_3 | BIT_2 | BIT_1 | BIT_0 );

  28.                 // 延時
  29.                 i = 1024*1024;
  30.                 while(i--);
  31.         }
  32. }
複製代碼
結論
    由上述的範例可以看的出來,Microchip針對PIC32花了許多時間去寫Library.相較於ARM Cortex-M3的CMSIS(Cortex-M Series Interface Standard)函式庫來比(個人在用STM32開發一些東西)相對清晰易懂.接下來將會繼續介紹中斷與Timer,...等等PIC32入門
已有 1 人評分威望 收起 理由
又靜 + 1 您發表的文章內容豐富,無私分享造福眾人,.

總評分: 威望 + 1   查看全部評分

喜歡嗎?分享這篇文章給親朋好友︰
               感謝作者     

失敗只有一種:那就是半途而廢
請注意︰利用多帳號發表自問自答的業配文置入性行銷廣告者,將直接禁訪或刪除帳號及全部文章!
您需要登錄後才可以回覆 登入 | 註冊


本論壇為非營利自由討論平台,所有個人言論不代表本站立場。文章內容如有涉及侵權,請通知管理人員,將立即刪除相關文章資料。侵權申訴或移除要求:abuse@oursogo.com

GMT+8, 2024-5-3 01:44

© 2004-2024 SOGO論壇 OURSOGO.COM
回頂部