浅析TMS320F28035的GPIO模块

Posted 玖道

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了浅析TMS320F28035的GPIO模块相关的知识,希望对你有一定的参考价值。

目录

通用输入输出端口(General Purpose Input Output, GPIO)几乎是学习包括DSP,单片机在内的微处理器的第一步。GPIO的功能包括基本的输入,输出,也可以复用为其他外设功能。

GPIO简介

TMS320F28035具有45个GPIO引脚(不包括模拟输入输出引脚AIO),分为两大部分: Part A(0~31)Part B(32~44)。其中,每个引脚除了具备通用数字输入/输出功能外,还最多复用三个外设引脚功能,可以通过多路复用选择寄存器(GPxMUXn)进行配置。

GPIO的默认功能是通用数字输入/输出功能,在进行配置时,主要步骤如下:

  • 引脚的方向:输入/输出,0(输入) 1(输出),通过GPBDIR进行配置。

  • 引脚的电平:1(高电平),0(低电平),这个可选。

  • 引脚的复用:基本输入输出功能 or 外设复用功能。

比如我们要使用某个GPIO引脚,周期性输出高低电平,从而闪烁LED灯。那么,我们需要进行如下配置GPIO:

  • 方向:输出
  • 电平:周期性翻转电平
  • 复用:不进行复用,默认基本输入输出功能

硬件电路

可见,GPIO34引脚与LED的阴极相连,当GPIO34输出低电平时,LED亮; GPIO34输出高电平时,LED灭。

软件代码

  1. 一些初始化工作,包括系统配置,中断,看门狗等
InitSysCtrl();          // 初始化系统配置,关闭看门狗,开启外设时钟
DINT;                   // 关闭CPU级总中断:INTM(0:开启,1:关闭)
InitPieCtrl();          // 初始化外设中断扩展配置
IER = 0x0000;           // 关闭CPU级中断使能位
IFR = 0x0000;           // 关闭CPU级中断标志位
InitPieVectTable();     // 初始化PIE向量表
  1. 配置GPIO34引脚为输出引脚,默认基本输入输出功能

由前面可知,34引脚输入Group B,所以需要使用与Group B相关的寄存器,如GPBMUX1GPBDIR

 EALLOW;  // 开锁
 GpioCtrlRegs.GPBMUX1.bit.GPIO34 = 0;   // GPIO34作为普通IO     0: GPIO
 GpioCtrlRegs.GPBDIR.bit.GPIO34  = 1;    // GPIO34方向为输出     0: 输入   1: 输出
 EDIS;   // 上锁
  1. 主循环中实现电平的翻转,延时函数实现LED灯闪烁的效果
while(1)

    // 延时1s
    DSP28x_usDelay(1000000);

    // 电平翻转
    GpioDataRegs.GPBTOGGLE.bit.GPIO34 = 1;  

完整代码

#include "DSP28x_Project.h"     // Device Header file and Examples Include File

//------------------------- 硬件配置-----------------------------//
//
//        LED-----> GPIO34
//
//---------------------------------------------------------------//

/**
 * main.c
 */
void main(void)

    InitSysCtrl();          // 初始化系统配置,关闭看门狗,开启外设时钟

    DINT;                   // 关闭CPU级总中断:INTM(0:开启,1:关闭)

    InitPieCtrl();          // 初始化外设中断扩展配置

    IER = 0x0000;           // 关闭CPU级中断使能位
    IFR = 0x0000;           // 关闭CPU级中断标志位

    InitPieVectTable();     // 初始化PIE向量表

    //********************* code start here ****************************//
    EALLOW; // 开锁
    GpioCtrlRegs.GPBMUX1.bit.GPIO34 = 0;   // GPIO34作为普通IO     0: GPIO
    GpioCtrlRegs.GPBDIR.bit.GPIO34 = 1;    // GPIO34方向为输出         0: 输入   1: 输出
    EDIS;   // 上锁

    while(1)
    
        // 延时1s
        DSP28x_usDelay(1000000);

        // 电平翻转
        GpioDataRegs.GPBTOGGLE.bit.GPIO34 = 1;
    
    //********************* code end here ******************************//

总结

大致就是这样,GPIO的配置相对简单,也是学习DSP的第一步,加油。

以上是关于浅析TMS320F28035的GPIO模块的主要内容,如果未能解决你的问题,请参考以下文章

TMS320F28335 串口 SCI

TMS320F28335——SCI串口

DSPTMS320F28335的GPIO

TMS320F28335 芯片解密成功

TMS320F2812单片机解密基本特性

TMS320F2812单片机解密基本特性