DSP28335的GPIO的引脚配置 您所在的位置:网站首页 ld7552bps引脚 DSP28335的GPIO的引脚配置

DSP28335的GPIO的引脚配置

2023-11-08 11:34| 来源: 网络整理| 查看: 265

F28335有三种32位的I/O口,依次PORTA(GPIO0-GPIO31), PORTB(GPIO32-GPIO63), PORTC(GPIO64-GPIO87),这些口都可以配置为普通的数字IO口同样也能被配置为外部接口。 这样涉及到了IO的寄存器,IO口共有三类寄存器: 控制寄存器、数据寄存器和中断控制寄存器。 1、 GPIO可以配置为数字I/O或外设I/O口,GPxMUX1(2):‘0’为数字I/O,‘1’为外设I/O口; 2: GPIO可以配置为内部电阻上拉功能,GPxPUD:‘0’为上拉,‘1’为禁止上拉 3: GPIO具有数字滤波功能,GPxQSEL1(2):量化输入寄存器,可以确定是3周期采样 还是6周期采样或者不用采样; GPIO可以配置为内部电阻上拉功能,GPxPUD:‘0’为上拉,‘1’为禁止上拉,

4、 输入输出可配置,GPxDIR是控制每个引脚的输入或是输出,‘0’是输入,‘1’是输出; 当GPIO配置为数字I/O时注意: 1)28335引脚作为输出时,虽然可以通过设置GPADAT或GPBDAT改变输出端口的高低电平,但是单独写某一位时可能会使其它引脚产生误操作。为了避免这种现象的产生,改变输出引脚的高低电平时,应该使用GPIOxSET(置位),GPIOxCLEAR(清零),GPIOxTOGGLE(反向,可以代替去翻操作)寄存器载入输出锁存寄存,GPIOxDIR配置方向,1为输出,0为输入. 2)当使用GPADAT的时候,一般是在初始化中,在函数中使用需要添加延时,否则可能达不到预定的输出状态。使用GPIOxSET(置位),GPIOxCLEAR(清零),GPIOxTOGGLE(反向)电平会立即变化,无需添加延时。 GPIOxSET, GPIOxCLEAR, GPIOxTOGGLE仅仅等于1时才有效,等于0无效

以下例程是针对野火DSP28335开发板的程序,已经验证。 #include “DSP2833x_Device.h” // DSP2833x Headerfile Include File #include “DSP2833x_Examples.h” // DSP2833x Examples Include File void Gpio_select(void); void delay_loop(); int main(void) { MemCopy(&RamfuncsLoadStart, &RamfuncsLoadEnd, &RamfuncsRunStart); InitFlash();

InitSysCtrl(); Gpio_select();//GPIO 初始化

// 步骤 3. 清除所有中断初始化中断向量表: // 禁止CPU全局中断 DINT; // 初始化PIE控制寄存器到他们的默认状态. // 这个默认状态就是禁止PIE中断及清除所有PIE中断标志 // 这个函数放在DSP2833x_PieCtrl.c源文件里 InitPieCtrl(); // 禁止CPU中断和清除所有CPU中断标志 IER = 0x0000; IFR = 0x0000;

//初始化PIE中断向量表,并使其指向中断服务子程序(ISR) // 这些中断服务子程序被放在了DSP280x_DefaultIsr.c源文件中 // 这个函数放在了DSP2833x_PieVect.c源文件里面. InitPieVectTable();

GpioDataRegs.GPBDAT.all =0x00000000;//第28、29位为低电平LED灯亮 GpioDataRegs.GPCDAT.all =0x00000000;//第0 -4位为低电平LED灯亮 delay_loop(); delay_loop();

// for(;?

while(1) { delay_loop(); //延时 GpioDataRegs.GPBTOGGLE.all =0x30000000; //电平翻转 GpioDataRegs.GPCTOGGLE.all =0x0000001F; //电平翻转 }

/* EALLOW; // 把LED灯熄灭 GpioDataRegs.GPBSET.bit.GPIO60 =1; GpioDataRegs.GPBSET.bit.GPIO61 =1; GpioDataRegs.GPCSET.bit.GPIO64 =1; GpioDataRegs.GPCSET.bit.GPIO65 =1; GpioDataRegs.GPCSET.bit.GPIO66 =1; GpioDataRegs.GPCSET.bit.GPIO67 =1; GpioDataRegs.GPCSET.bit.GPIO68 =1; EDIS;

delay_loop();

/ // GpioDataRegs.GPBTOGGLE.all =0x30000000; // GpioDataRegs.GPCTOGGLE.all =0x0000001F; / EALLOW; // 打开LED灯 GpioDataRegs.GPBCLEAR.bit.GPIO60 =1; GpioDataRegs.GPBCLEAR.bit.GPIO61 =1; GpioDataRegs.GPCCLEAR.bit.GPIO64 =1; GpioDataRegs.GPCCLEAR.bit.GPIO65 =1; GpioDataRegs.GPCCLEAR.bit.GPIO66 =1; GpioDataRegs.GPCCLEAR.bit.GPIO67 =1; GpioDataRegs.GPCCLEAR.bit.GPIO68 =1; EDIS; */

return 0;

}

void delay_loop() { Uint32 i; Uint32 j; for(i=0;i



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有