刚开始接触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
GpioDataRegs.GPASET.bit.GPIO24 = 1
GpioDataRegs.GPBCLEAR.bit.GPIO46 = 1
GpioDataRegs.GPCTOGGLE.bit.GPIO80 = 1
GPIO的C语言例程
#include "DSP2833x_Device.h"
#include "DSP2833x_Examples.h"
void Gpio_setup1(void);
void Delay(unsigned int nDelay);
void main(void)
{
InitSysCtrl();
InitGpio();
InitXintf16Gpio();
DINT;
InitPieCtrl();
IER = 0x0000;
IFR = 0x0000;
InitPieVectTable();
Gpio_setup1();
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;
GpioCtrlRegs.GPBQSEL2.bit.GPIO53 = 0;
GpioCtrlRegs.GPBMUX2.bit.GPIO53 = 0;
GpioCtrlRegs.GPBDIR.bit.GPIO53 = 1;
EDIS;
}
void Delay(unsigned int nDelay)
{
int ii,jj,kk=0;
for ( ii=0;iifor ( jj=0;jj<2400;jj++ )
{
kk++;
}
}
}