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

專注電子技術(shù)學(xué)習(xí)與研究
當(dāng)前位置:單片機(jī)教程網(wǎng) >> MCU設(shè)計實例 >> 瀏覽文章

TMS320F2812外設(shè)例程系列之Gpio

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

 

 
//#####################################################################
// 文件:  DSP281x_Gpio.c
// 說明:  DSP281x 通用I/O初始化函數(shù)
//#####################################################################
#include "DSP281x_Device.h"     
#include "DSP281x_Examples.h"  
// 初始化GPIO,該函數(shù)將GPIO初始化到已知狀態(tài)
void InitGpio(void)
{
    //設(shè)置GPIO A 口引腳,AL(位7:0)(輸入)-AH(位15:8))(輸出) 
    //輸入采樣限定值=0,不限定
    EALLOW;
    GpioMuxRegs.GPAMUX.all = 0x0000;     
    GpioMuxRegs.GPADIR.all = 0xFF00;     //高字節(jié)輸出,低字節(jié)輸入 
    GpioMuxRegs.GPAQUAL.all = 0x0000; //輸入采樣限定關(guān)閉
    //設(shè)置GPIO B口引腳為EVB信號
    //輸入采樣限定值=0,不限定
    //將位寫1配置為片內(nèi)外設(shè)功能
    GpioMuxRegs.GPBMUX.all = 0xFFFF;   
    GpioMuxRegs.GPBQUAL.all = 0x0000; //輸入采樣限定關(guān)閉
    EDIS;
}
//#####################################################################
// 文件:  Example_281xGpioToggle.c
// 說明:  DSP281x 芯片GPIO 反轉(zhuǎn)觸發(fā)測試程序
//#####################################################################
#include "DSP281x_Device.h"     
#include "DSP281x_Examples.h"   
//選擇被編譯的例子,只有一個例子設(shè)為1,其他的設(shè)為0
#define EXAMPLE1  1   //使用DATA 寄存器觸發(fā)I/O引腳
#define EXAMPLE2  0   //使用SET/CLEAR寄存器觸發(fā)I/O引腳
#define EXAMPLE3  0   //使用 TOGGLE寄存器觸發(fā)I/O引腳
//文件中定義的函數(shù)原型聲明
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.系統(tǒng)初始化系統(tǒng)控制:PLL、看門狗、使能外部時鐘
    InitSysCtrl();
    //Step 2. 初始化 GPIO
    //InitGpio();             //本例中采用下面的配置,跳過
    Gpio_select();  
    //Step 3.清除所有中斷,初始化PIE向量表
    DINT;                     //關(guān)全局中斷
    InitPieCtrl();
    IER = 0x0000;             //關(guān)CPU級中斷
    IFR = 0x0000;             //清除所有CPU級中斷標(biāo)志位
    InitPieVectTable();
    //Step 4. 用戶代碼
    #if  EXAMPLE1             //本例使用DATA 寄存器觸發(fā)I/O引腳
      Gpio_example1();
    #endif  // - EXAMPLE1
    #if  EXAMPLE2             //本例使用SET/CLEAR寄存器觸發(fā)I/O引腳
      Gpio_example1();
    #endif
    #if  EXAMPLE3             //本例使用TOGGLE寄存器觸發(fā)I/O引腳
      Gpio_example3();
    #endif
}
void delay_loop()
{
    short i;
    for (i = 0; i < 1000; i++) {}
}
void Gpio_example1(void)
    //用DATA寄存器觸發(fā)I/O引腳。注意:當(dāng)使用DATA寄存器輸入值可能丟失,如果在
    //I/O口有輸入數(shù)據(jù),最好使用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寄存器觸發(fā)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寄存器觸發(fā)I/O引腳,設(shè)置引腳為已知狀態(tài)
    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寄存器反轉(zhuǎn)引腳狀態(tài),任何位寫1反轉(zhuǎn),寫0不反轉(zhuǎn)
    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;         //設(shè)置GPIO多路復(fù)用為I/O功能
    var2= 0xFFFF;               //設(shè)置GPIO方向為輸出
    var3= 0x0000;         //設(shè)置輸入采樣限定值
    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;     //設(shè)置輸入采樣限定值
    GpioMuxRegs.GPBQUAL.all = var3;   
    GpioMuxRegs.GPDQUAL.all = var3;
    GpioMuxRegs.GPEQUAL.all = var3;
    EDIS;
}     
 
關(guān)閉窗口
主站蜘蛛池模板: 欧美精品久久久久久久久老牛影院 | 国产高清一区二区三区 | 国产精品视频在线观看 | 91超碰在线观看 | 在线看av的网址 | 中文字幕高清av | 亚洲欧美日韩精品久久亚洲区 | 色伊人网| 国产91综合| 蜜月aⅴ免费一区二区三区 99re在线视频 | 一级a毛片 | 久久99视频免费观看 | 国产成人亚洲精品自产在线 | 免费在线视频一区二区 | 久久国产精品视频免费看 | 欧美影院 | 久久九九影视 | 亚洲天堂久久新 | 午夜tv免费观看 | 免费在线观看一区二区 | 黄色毛片在线看 | 国产农村妇女精品一区 | 国产日韩在线观看一区 | 最新黄色在线观看 | 国产精品久久久久久二区 | 亚洲一区精品在线 | 欧美精品91 | 紧缚调教一区二区三区视频 | 亚洲精品乱码久久久久久按摩 | 91精品久久久久久久久久 | 国产一区二区高清在线 | av大片在线观看 | 日韩精品专区在线影院重磅 | 欧美午夜精品理论片a级按摩 | 国产精品久久久久一区二区 | 视频一区二区中文字幕 | 五月综合激情在线 | 午夜小视频在线观看 | 精久久久| 日本污视频 | 久久精品欧美一区二区三区不卡 |