DSP

DSP入门:GPIO

2019-07-13 09:44发布

刚开始接触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;iifor ( jj=0;jj<2400;jj++ ) { kk++; } } }