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

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

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

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

 

 
//#####################################################################
// 文件:  DSP281x_Gpio.c
// 說(shuō)明:  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信號(hào)
    //輸入采樣限定值=0,不限定
    //將位寫1配置為片內(nèi)外設(shè)功能
    GpioMuxRegs.GPBMUX.all = 0xFFFF;   
    GpioMuxRegs.GPBQUAL.all = 0x0000; //輸入采樣限定關(guān)閉
    EDIS;
}
//#####################################################################
// 文件:  Example_281xGpioToggle.c
// 說(shuō)明:  DSP281x 芯片GPIO 反轉(zhuǎn)觸發(fā)測(cè)試程序
//#####################################################################
#include "DSP281x_Device.h"     
#include "DSP281x_Examples.h"   
//選擇被編譯的例子,只有一個(gè)例子設(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、看門狗、使能外部時(shí)鐘
    InitSysCtrl();
    //Step 2. 初始化 GPIO
    //InitGpio();             //本例中采用下面的配置,跳過(guò)
    Gpio_select();  
    //Step 3.清除所有中斷,初始化PIE向量表
    DINT;                     //關(guān)全局中斷
    InitPieCtrl();
    IER = 0x0000;             //關(guān)CPU級(jí)中斷
    IFR = 0x0000;             //清除所有CPU級(jí)中斷標(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個(gè)I/O引腳
       GpioDataRegs.GPEDAT.all = 0x0005;     //僅有3個(gè)I/O引腳
       GpioDataRegs.GPFDAT.all = 0x5555;    
       GpioDataRegs.GPGDAT.all = 0x0010;     //僅有2個(gè)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個(gè)I/O引腳
       GpioDataRegs.GPESET.all = 0x0002;
       GpioDataRegs.GPECLEAR.all = 0x0005;     //僅有3個(gè)I/O引腳
       GpioDataRegs.GPFSET.all = 0xAAAA;
       GpioDataRegs.GPFCLEAR.all = 0x5555;    
       GpioDataRegs.GPGSET.all = 0x0020;
       GpioDataRegs.GPGCLEAR.all = 0x0010;     //僅有2個(gè)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個(gè)I/O引腳
       GpioDataRegs.GPECLEAR.all = 0x0002;
       GpioDataRegs.GPESET.all = 0x0005;       //僅有3個(gè)I/O引腳
       GpioDataRegs.GPFCLEAR.all = 0xAAAA;
       GpioDataRegs.GPFSET.all = 0x5555;    
       GpioDataRegs.GPGCLEAR.all = 0x0020;
       GpioDataRegs.GPGSET.all = 0x0010;       //僅有2個(gè)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個(gè)I/O引腳
    GpioDataRegs.GPESET.all = 0x0002;
    GpioDataRegs.GPECLEAR.all = 0x0005;     //僅有3個(gè)I/O引腳
    GpioDataRegs.GPFSET.all = 0xAAAA;
    GpioDataRegs.GPFCLEAR.all = 0x5555;    
    GpioDataRegs.GPGSET.all = 0x0020;
    GpioDataRegs.GPGCLEAR.all = 0x0010;     //僅有2個(gè)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方向?yàn)檩敵?/div>
    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 方向?yàn)檩敵?/div>
    GpioMuxRegs.GPBDIR.all = var2;   //GPIO 方向?yàn)檩敵?/div>
    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;
}     
 
主站蜘蛛池模板: 日日天天 | 日日艹夜夜艹 | 成人av网站在线观看 | 国内自拍视频在线观看 | 成人网在线观看 | 欧美综合在线视频 | 久久精品女人天堂av | 成人免费视频在线观看 | 午夜激情一区 | 福利片在线看 | 中文字幕国产一区 | 国产精品久久片 | 日韩久久精品 | 婷婷久久久久 | 国产中文在线 | 亚洲 中文 欧美 日韩 在线观看 | 欧美极品少妇xxxxⅹ免费视频 | 草草草草视频 | 成人看片在线观看 | 天天成人综合网 | 久久国产精品免费一区二区三区 | 秋霞在线一区 | 伊人伊人| 日韩av一区二区在线观看 | 欧美8一10sex性hd | 不卡在线视频 | 亚洲成人精品一区 | 亚洲高清视频在线观看 | 国产在线一 | 四虎最新视频 | 成人精品一区二区户外勾搭野战 | 中文字幕第一页在线 | 色爱综合网 | 国产成人精品久久二区二区 | 亚洲免费福利视频 | 午夜av电影 | 欧美5区 | 精品欧美一区二区在线观看视频 | 97av | 91麻豆精品国产91久久久久久久久 | 最近免费日本视频在线 |