DSP入门:GPIO

刚开始接触DSP,使用TMS320F28335进行学习。
GPIO模块共有88个双向、复用的引脚。A组(32个),B组(32个),
C组(24个)。每个引脚最多可复用4个功能:GPIO,外设1、2、3,具体由复用控制器GPxMUX1/2配置。

GPIO寄存器:

1.GPxMUX1复用控制器(GPIO 0-15)
    GPxMUX2复用控制器(GPIO 16-31);GPAMUX1(GPIOA 复用1)

2.GPQSEL1量化选择寄存器(GPIO 0-15):输入量化功能
    GPQSEL2量化选择寄存器(GPIO 16-31)

3.GPxCTRL 控制寄存器:控制采样周期(主要配合GPQSEL1/2,实现I/O去噪)

4.GPxDIR方向寄存器(1为输出,0为输入)

5.GPxPUD上拉禁止寄存器(1禁止上拉,0允许上拉)

6.GPxDAT数据寄存器(1输出高电平,0输出低电平)
        常使用的是下面3个寄存器
7.GPxSET(置1)

8.GPxCLEAR(清0)

9.GPxTOGGLE(反转)

例如:
GpioDataRegs.GPADAT.all = 0x0000;//GPIO端口A所有引脚均输出低电平
GpioDataRegs.GPASET.bit.GPIO24 = 1;//GPIO24输出高电平
GpioDataRegs.GPBCLEAR.bit.GPIO46 = 1;//GPIO46输出低电平
GpioDataRegs.GPCTOGGLE.bit.GPIO80 = 1;//GPIO80电平反转


GPIO的C语言例程

#include "DSP2833x_Device.h"     // DSP2833x Headerfile Include File
#include "DSP2833x_Examples.h"   // DSP2833x Examples Include File


void Gpio_setup1(void);   //GPIO53配置
void Delay(unsigned int nDelay);


void main(void)
{
   InitSysCtrl(); //系统初始化

   InitGpio(); //初始化GPIO
   InitXintf16Gpio();//初始化外部IO

   DINT;    //关闭全局中断

   InitPieCtrl();  //初始化中断控制寄存器,默认状态
   IER = 0x0000;    //关闭CPU中断
   IFR = 0x0000;    //清除CPU中断信号  
   InitPieVectTable();    //初始化中断向量表

   Gpio_setup1(); //GPIO53初始化

   while( 1 )

     {  
        GpioDataRegs.GPBDAT.bit.GPIO53=0;
        Delay(1000);
        GpioDataRegs.GPBDAT.bit.GPIO53=1;
        Delay(1000);
     }
}


void Gpio_setup1(void)
{
   EALLOW;
   GpioCtrlRegs.GPBPUD.bit.GPIO53 = 0;   // Enable pullup on GPIO53
   GpioCtrlRegs.GPBQSEL2.bit.GPIO53 = 0; // Synch to SYSCLKOUT
   GpioCtrlRegs.GPBMUX2.bit.GPIO53 = 0;  // GPIO53 Enable
   GpioCtrlRegs.GPBDIR.bit.GPIO53 = 1;   //DIR=out
   EDIS;
}


void Delay(unsigned int nDelay)//令人尴尬的延时
{
    int ii,jj,kk=0;
    for ( ii=0;ii<nDelay;ii++ )
    {
        for ( jj=0;jj<2400;jj++ )
        {           
            kk++;
        }
    }
}

猜你喜欢

转载自blog.csdn.net/tian43/article/details/80245250
dsp