DSP之一:GPIO概述(F28335)

初学DSP(F28335芯片),玩了玩GPIO点了个灯,赶紧对GPIO相关知识进行一个梳理记录。(因为初学,肯定有很多地方理解的有偏差,如若各位大哥大姐们发现错误之处,还请不吝赐教,感谢感谢!)

一、GPIO知识点

1、F28335芯片GPIO一共有88个GPIO口:GPIO0 - GPIO87。

2、分为ABC三组:

组名 GPIO范围 写法
A组 GPIO0 - GPIO31 GPA
B组 GPIO32 - GPIO63 GPB
C组 GPIO64 - GPIO87 GPC

3、寄存器:(x为组名,可取值A、B、C

寄存器名 功能 含义
GPxMUXn 复用功能寄存器 决定GPIO口是否复用。每2bit表示一个GPIO,故可取值00/01/10/11,即:0/1/2/3。
0:关闭复用功能,当做普通IO口使用
1/2/3:打开复用功能,对应具体复用功能,请查看数据手册

注意:n可以取值1 or 2
原因:mux为32位寄存器,每2bit表示一个GPIO,故一个mux寄存器只能表示16个GPIO口。而每组GPIO有32个GPIO,故要全部表示需要2个MUX寄存器,即:MUX1和MUX2
MUX1:每组GPIO的前半部分,如:GPIO0 ~GPIO15
MUX2:每组GPIO的后半部分,如:GPIO16~GPIO31
GPxDIR IO方向寄存器 配置IO方向:
0:输入
1:输出
GPxDAT 独立读写IO口寄存器 当IO方向为输入时为只读寄存器;
当IO方向为输出时,可以通过GPxSET设置该寄存器值
GPxSET 置1寄存器 写1有效,写0无效
GPxCLEAR 清0寄存器 写1有效,写0无效
GPxTOOGLE 翻转寄存器 写1有效,写0无效
GPAPUD 是否上拉寄存器 0:上拉
1:不上拉

二、代码

要点亮led灯,需要关注以下几个方面:

  • 1、电路图找到led所在GPIO,看是否需要上拉
  • 2、所对应GPIO口需要关闭复用功能,作为普通IO口使用
  • 3、配置GPIO口为输出口
  • 4、将该GPIO配置为低电平或高电平

代码如下(详细代码结构体解析见下章)

/* 设置GPIO口为输出口,并输出低电平 */
GpioCtrlRegs.GPCPUD.bit.GPIO64 = 0;    /* 上拉 */
GpioCtrlRegs.GPCMUX1.bit.GPIO64 = 0;   /* GPIO64属于C组前半部分GPIO,故为GPCMUX1 */
GpioCtrlRegs.GPCDIR.bit.GPIO64 = 1;    /* 1:表示方向为输
PIO(General-Purpose Input/Output)——通用输入/输出口;       DSP28335 GPIO模块分为三类IO口:PORTA(0-31),PORTB(32-63),PORTC(64-87)GPIO模块的设置主要通过三类寄存器来完成,分别是:控制寄存器、数据寄存器、中断寄存器。 1、控制寄存器   GPxCTRL;    // GPIO x Control Register (GPIO0 to 31)               //设置采样窗周期T=2*GPXCTRL*Tsysclk;   GPxQSEL1;   // GPIO x Qualifier Select 1 Register (GPIO0 to 15)(32-47)               GPxQSEL2;   // GPIO x Qualifier Select 2 Register (GPIO16 to 31)(48-63)               //每两位控制一个引脚,确定是3周期采样还是6周期采样或者不用采样   GPxMUX1;    // GPIO x Mux 1 Register (GPIO0 to 15)(32-47)(64-79)   GPxMUX2;    // GPIO x Mux 2 Register (GPIO16 to 31)(48-63)(80-95)               //配置各个引脚的功能,0:I/O功能,1:外设功能。   GPxDIR;     // GPIO x Direction Register (GPIO0 to 31)(32-63)(64-95)               //配置每个引脚是输入还是输出,0:数字量输入;1:数字量输出。   GPxPUD;     // GPIO x Pull Up Disable Register (GPIO0 to 31)(32-63)(64-95)               //使能或禁止内部上拉 0:开启上拉,1:禁止上拉 2、数据寄存器   GPxDAT;     // GPIO Data Register (GPIO0 to 31)(32-63)(64-95)   GPxSET;     // GPIO Data Set Register (GPIO0 to 31)(32-63)(64-95)——置位   GPxCLEAR;   // GPIO Data Clear Register (GPIO0 to 31)(32-63)(64-95)   GPxTOGGLE;  // GPIO Data Toggle Register (GPIO0 to 31)(32-63)(64-95)—反转
评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值