您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 经营企划 > 第7章-F28335-GPIO
第7章TMS320F28335的通用输入/输出7.1GPIO概述•88个复用的多功能引脚,通过GPxMUX1/2切换功能。•A(GPIO0-GPIO31),B(GPIO32-GPIO63),C(GPIO64-GPIO87)3个口。•可通过方向控制寄存器GPxDIR控制输入/输出。•输入限定,QSEL1/2实现,以消除外部噪声。1、GPIO控制寄存器7.2GPIO控制寄存器2、GPIO中断和低功耗模式唤醒选择寄存器7.2GPIO控制寄存器1、GPxDAT寄存器(数据寄存器)2、GPxSET寄存器(置位寄存器)3、GPxCLEAR寄存器(清零寄存器)4、GPxTOGGLE寄存器(状态翻转寄存器)7.2GPIO数据寄存器1、GPxDAT寄存器(数据寄存器)A、B、C口各有一个,每一位对应于一个I/O口,反映引脚当前状态。写操作可对相应的输出锁存器清零或置位。但会对同端口的其它引脚产生不确定影响。2、GPxSET寄存器(置位寄存器)在不影响其他引脚状态情况下,将相应引脚驱动到高电平。如果引脚为数字输出,向该寄存器相应位写1会驱动对应引脚为高电平,写0无影响。读该寄存器返回0.7.2GPIO数据寄存器3、GPxCLEAR寄存器(清零寄存器)在不影响其他引脚状态情况下,将相应引脚驱动到低电平。如果引脚为数字输出,向该寄存器相应位写1会驱动对应引脚为低电平,写0无影响。读该寄存器返回0.4、GPxTOGGLE寄存器(状态翻转寄存器)在不影响其他引脚状态情况下,将相应引脚的状态进行翻转。如果引脚为数字输出,向该寄存器相应位写1会驱动对应引脚为高电平,写0无影响。读该寄存器返回0.7.2GPIO数据寄存器消除输入引脚中的噪声信号。只能用于端口A、B。GPAQSEL1、GPAQSEL2,GPBQSEL1,GPBQSEL2选择GPIO引脚的输入限制类型,即1、异步输入模式:用于不需输入同步或自身具有信号同步功能的外设如SCI,SPI,eCAN。如果是GPIO,则该功能失效2、仅与SYSCLKOUT同步:引脚复位时的默认模式3、通过采样窗限制:先与SYSCLKOUT同步,然后经过采样窗得到信号。(1)采样周期:用户设定,用GPxCTRL的QUALPRDn位决定(2)采样窗长度:一个采样窗内可包含3次或6次采样,采样窗包含的采样周期个数比采样数少1.GPAQSEL1/2和GPBQSEL1/2设置。7.3输入限定功能7.4功能选择寄存器7.4功能选择寄存器7.4功能选择寄存器7.5寄存器定义7.5寄存器定义7.5寄存器定义7.5寄存器定义7.5寄存器定义7.5寄存器定义7.5寄存器定义7.5寄存器定义7.5寄存器定义7.5寄存器定义7.5寄存器定义7.5寄存器定义7.5寄存器定义7.5寄存器定义7.5寄存器定义7.5寄存器定义7.5寄存器定义7.5寄存器定义7.6应用实例例:检测GPIO0引脚上的电平信号,当其为高电平时,驱动GPIO32引脚为高电平;当其为低电平时,驱动GPIO32引脚为低电平。配置步骤:(1)选择GPIO工作模式。配置GPxMUXn寄存器选择其工作在外设或IO模式。默认为数字IO功能,输入。(2)使能或禁止内部上拉电阻。通过GPxPUD寄存器完成。(3)选择输入输出方向。通过写GPxDIR寄存器完成。(4)选择输入限定模式。默认与系统时钟SYSCLKOUT同步。(5)选择低功耗模式的唤醒端口。配置GPIOLPMSEL,指定某GPIO引脚将CPU从HALT和STANDBY模式中唤醒。(6)为外部中断源选择输入引脚。为XINT1-XINT7及XNMI外部中断源选择合适的输入引脚。7.6应用实例软件设计//aMain.c文件#includeDSP28x_Project.h//========函数声明=====================voidGpio_setup1(void);//========主程序========================voidmain(void){InitSysCtrl();//系统初始化DINT;//关闭全局中断InitPieCtrl();//初始化中断控制寄存器IER=0x0000;//关闭CPU中断IFR=0x0000;//清除CPU中断信号InitPieVectTable();//初始化中断向量表Gpio_setup1();while(1){//方案1:采用GPBDAT寄存器实现7.6应用实例if(GpioDataRegs.GPADAT.bit.GPIO0==1)//读GPIO0引脚的状态{GpioDataRegs.GPBDAT.bit.GPIO32=1;//写GPIO32引脚的状态}else{GpioDataRegs.GPBDAT.bit.GPIO32=0;}/*//方案2:采用GPBSET、GPBCLEAT寄存器实现if(GpioDataRegs.GPADAT.bit.GPIO0==1){GpioDataRegs.GPBSET.bit.GPIO32=1;}else{GpioDataRegs.GPBCLEAR.bit.GPIO32=1;}*/}}7.6应用实例//========子函数========================voidGpio_setup1(void){//配置GPIO0EALLOW;GpioCtrlRegs.GPAMUX1.bit.GPIO0=0;//选择数字I/O模式GpioCtrlRegs.GPAPUD.bit.GPIO0=0;//使能内部上拉电阻GpioCtrlRegs.GPADIR.bit.GPIO0=0;//配置成输入方向GpioCtrlRegs.GPAQSEL1.bit.GPIO0=0;//与系统时钟SYSCLOUT同步EDIS;//配置GPIO32EALLOW;GpioCtrlRegs.GPBMUX1.bit.GPIO32=0;//选择数字I/O模式GpioCtrlRegs.GPBPUD.bit.GPIO32=0;//使能内部上拉电阻GpioCtrlRegs.GPBDIR.bit.GPIO32=1;//配置成输出方向EDIS;}//==============================================================//Endoffile.//==============================================================
本文标题:第7章-F28335-GPIO
链接地址:https://www.777doc.com/doc-3207973 .html