久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

專注電子技術學習與研究
當前位置:單片機教程網 >> MCU設計實例 >> 瀏覽文章

TMS320F2812外設例程系列之Gpio

作者:佚名   來源:不詳   點擊數:  更新時間:2014年08月17日   【字體:

 

 
//#####################################################################
// 文件:  DSP281x_Gpio.c
// 說明:  DSP281x 通用I/O初始化函數
//#####################################################################
#include "DSP281x_Device.h"     
#include "DSP281x_Examples.h"  
// 初始化GPIO,該函數將GPIO初始化到已知狀態
void InitGpio(void)
{
    //設置GPIO A 口引腳,AL(位7:0)(輸入)-AH(位15:8))(輸出) 
    //輸入采樣限定值=0,不限定
    EALLOW;
    GpioMuxRegs.GPAMUX.all = 0x0000;     
    GpioMuxRegs.GPADIR.all = 0xFF00;     //高字節輸出,低字節輸入 
    GpioMuxRegs.GPAQUAL.all = 0x0000; //輸入采樣限定關閉
    //設置GPIO B口引腳為EVB信號
    //輸入采樣限定值=0,不限定
    //將位寫1配置為片內外設功能
    GpioMuxRegs.GPBMUX.all = 0xFFFF;   
    GpioMuxRegs.GPBQUAL.all = 0x0000; //輸入采樣限定關閉
    EDIS;
}
//#####################################################################
// 文件:  Example_281xGpioToggle.c
// 說明:  DSP281x 芯片GPIO 反轉觸發測試程序
//#####################################################################
#include "DSP281x_Device.h"     
#include "DSP281x_Examples.h"   
//選擇被編譯的例子,只有一個例子設為1,其他的設為0
#define EXAMPLE1  1   //使用DATA 寄存器觸發I/O引腳
#define EXAMPLE2  0   //使用SET/CLEAR寄存器觸發I/O引腳
#define EXAMPLE3  0   //使用 TOGGLE寄存器觸發I/O引腳
//文件中定義的函數原型聲明
void delay_loop(void);
void Gpio_select(void);
void Gpio_example1(void);
void Gpio_example2(void);
void Gpio_example3(void);
void main(void)
{
    //Step 1.系統初始化系統控制:PLL、看門狗、使能外部時鐘
    InitSysCtrl();
    //Step 2. 初始化 GPIO
    //InitGpio();             //本例中采用下面的配置,跳過
    Gpio_select();  
    //Step 3.清除所有中斷,初始化PIE向量表
    DINT;                     //關全局中斷
    InitPieCtrl();
    IER = 0x0000;             //關CPU級中斷
    IFR = 0x0000;             //清除所有CPU級中斷標志位
    InitPieVectTable();
    //Step 4. 用戶代碼
    #if  EXAMPLE1             //本例使用DATA 寄存器觸發I/O引腳
      Gpio_example1();
    #endif  // - EXAMPLE1
    #if  EXAMPLE2             //本例使用SET/CLEAR寄存器觸發I/O引腳
      Gpio_example1();
    #endif
    #if  EXAMPLE3             //本例使用TOGGLE寄存器觸發I/O引腳
      Gpio_example3();
    #endif
}
void delay_loop()
{
    short i;
    for (i = 0; i < 1000; i++) {}
}
void Gpio_example1(void)
    //用DATA寄存器觸發I/O引腳。注意:當使用DATA寄存器輸入值可能丟失,如果在
    //I/O口有輸入數據,最好使用CLEAR/SET/TOGGLE寄存器代替
    while(1)
    {    
       GpioDataRegs.GPADAT.all = 0xAAAA;   
       GpioDataRegs.GPBDAT.all = 0xAAAA;     
       GpioDataRegs.GPDDAT.all = 0x0022;    
       GpioDataRegs.GPEDAT.all = 0x0002; 
       GpioDataRegs.GPFDAT.all = 0xAAAA;    
       GpioDataRegs.GPGDAT.all = 0x0020;    
       delay_loop();
       GpioDataRegs.GPADAT.all = 0x5555;    
       GpioDataRegs.GPBDAT.all = 0x5555;     
       GpioDataRegs.GPDDAT.all = 0x0041;     //僅有4個I/O引腳
       GpioDataRegs.GPEDAT.all = 0x0005;     //僅有3個I/O引腳
       GpioDataRegs.GPFDAT.all = 0x5555;    
       GpioDataRegs.GPGDAT.all = 0x0010;     //僅有2個I/O引腳
       delay_loop();
    }
}
void Gpio_example2(void)
    //用SET/CLEAR寄存器觸發I/O引腳
    while(1)
    {    
       GpioDataRegs.GPASET.all = 0xAAAA;
       GpioDataRegs.GPACLEAR.all = 0x5555;  
       GpioDataRegs.GPBSET.all = 0xAAAA;
       GpioDataRegs.GPBCLEAR.all = 0x5555;     
       GpioDataRegs.GPDSET.all = 0x0022;
       GpioDataRegs.GPDCLEAR.all = 0x0041;     //僅有4個I/O引腳
       GpioDataRegs.GPESET.all = 0x0002;
       GpioDataRegs.GPECLEAR.all = 0x0005;     //僅有3個I/O引腳
       GpioDataRegs.GPFSET.all = 0xAAAA;
       GpioDataRegs.GPFCLEAR.all = 0x5555;    
       GpioDataRegs.GPGSET.all = 0x0020;
       GpioDataRegs.GPGCLEAR.all = 0x0010;     //僅有2個I/O引腳
       delay_loop();
       GpioDataRegs.GPACLEAR.all = 0xAAAA;
       GpioDataRegs.GPASET.all = 0x5555;       
       GpioDataRegs.GPBCLEAR.all = 0xAAAA;
       GpioDataRegs.GPBSET.all = 0x5555;     
       GpioDataRegs.GPDCLEAR.all = 0x0022;
       GpioDataRegs.GPDSET.all = 0x0041;       //僅有4個I/O引腳
       GpioDataRegs.GPECLEAR.all = 0x0002;
       GpioDataRegs.GPESET.all = 0x0005;       //僅有3個I/O引腳
       GpioDataRegs.GPFCLEAR.all = 0xAAAA;
       GpioDataRegs.GPFSET.all = 0x5555;    
       GpioDataRegs.GPGCLEAR.all = 0x0020;
       GpioDataRegs.GPGSET.all = 0x0010;       //僅有2個I/O引腳
       delay_loop();
    }
}
void Gpio_example3(void)
    //用TOGGLE寄存器觸發I/O引腳,設置引腳為已知狀態
    GpioDataRegs.GPASET.all = 0xAAAA;
    GpioDataRegs.GPACLEAR.all = 0x5555; 
    GpioDataRegs.GPBSET.all = 0xAAAA;
    GpioDataRegs.GPBCLEAR.all = 0x5555;     
    GpioDataRegs.GPDSET.all = 0x0022;
    GpioDataRegs.GPDCLEAR.all = 0x0041;     //僅有4個I/O引腳
    GpioDataRegs.GPESET.all = 0x0002;
    GpioDataRegs.GPECLEAR.all = 0x0005;     //僅有3個I/O引腳
    GpioDataRegs.GPFSET.all = 0xAAAA;
    GpioDataRegs.GPFCLEAR.all = 0x5555;    
    GpioDataRegs.GPGSET.all = 0x0020;
    GpioDataRegs.GPGCLEAR.all = 0x0010;     //僅有2個I/O引腳
    //用TOGGLE寄存器反轉引腳狀態,任何位寫1反轉,寫0不反轉
    while(1)
    {    
       GpioDataRegs.GPATOGGLE.all = 0xFFFF;
       GpioDataRegs.GPBTOGGLE.all = 0xFFFF;
       GpioDataRegs.GPDTOGGLE.all = 0xFFFF;
       GpioDataRegs.GPETOGGLE.all = 0xFFFF;
       GpioDataRegs.GPFTOGGLE.all = 0xFFFF;
       GpioDataRegs.GPGTOGGLE.all = 0xFFFF;
       delay_loop();
    }
}
void Gpio_select(void)
{
    Uint16 var1;
    Uint16 var2;
    Uint16 var3;
    var1= 0x0000;         //設置GPIO多路復用為I/O功能
    var2= 0xFFFF;               //設置GPIO方向為輸出
    var3= 0x0000;         //設置輸入采樣限定值
    EALLOW;
    GpioMuxRegs.GPAMUX.all = var1;
    GpioMuxRegs.GPBMUX.all = var1;   
    GpioMuxRegs.GPDMUX.all = var1;
    GpioMuxRegs.GPFMUX.all = var1; 
    GpioMuxRegs.GPEMUX.all = var1; 
    GpioMuxRegs.GPGMUX.all = var1;
    GpioMuxRegs.GPADIR.all = var2; //GPIO 方向為輸出
    GpioMuxRegs.GPBDIR.all = var2;   //GPIO 方向為輸出
    GpioMuxRegs.GPDDIR.all = var2;
    GpioMuxRegs.GPEDIR.all = var2;
    GpioMuxRegs.GPFDIR.all = var2; 
    GpioMuxRegs.GPGDIR.all = var2;
    GpioMuxRegs.GPAQUAL.all = var3;     //設置輸入采樣限定值
    GpioMuxRegs.GPBQUAL.all = var3;   
    GpioMuxRegs.GPDQUAL.all = var3;
    GpioMuxRegs.GPEQUAL.all = var3;
    EDIS;
}     
 
關閉窗口
主站蜘蛛池模板: 三区在线 | 超碰精品在线 | 国产第一页在线播放 | 国产精品久久久久久影院8一贰佰 | 欧美一级黄色片在线观看 | 久草视频观看 | 日本天天操 | 天天躁天天操 | 欧美成人性生活 | 偷拍亚洲色图 | 特黄毛片 | 亚洲在线免费观看 | 欧美一级大片 | 成人亚洲| 日韩一区精品 | 日韩av一区在线观看 | 国产精品日韩欧美一区二区三区 | 综合久久综合久久 | 中文字幕在线剧情 | 国产精品一区在线观看 | 毛片一区二区三区 | 男人天堂视频在线观看 | 在线播放亚洲 | 国产aⅴ| 亚洲一区不卡 | 青青草av | 91国产精品在线 | 精精国产xxxx视频在线播放7 | 亚洲成人动漫在线观看 | 中文字幕免费视频 | 69av在线视频 | 国产一区二区三区在线 | 伊人久久国产 | 一区在线观看 | 欧美二区三区 | 亚洲国产aⅴ成人精品无吗 欧美激情欧美激情在线五月 | 99免费| 免费成人高清 | 久久久精品 | 97久久精品 | 亚洲精品9999 |