F28004X系列学习总结(3)——GPIO模块

首先学习的模块就是GPIO,学习完后我们可以做到简单的点灯程序。


I/O口配置步骤

1、计划自己准备使用的设备引脚

2、启动上拉电阻使能(使用GPxPOD寄存器)

3、选择输入资格(使用GPxQSELN寄存器,同步、设置采样窗口)

4、选择I/O口的方向(使用GPxDIR寄存器)

5、选择低功耗模式唤醒源

6、选择外部中断源

寄存器分类

控制寄存器包括功能选择寄存器(GPxMUX )、方向选择寄存器(GPxDIR )、上拉功能选择寄存器(GPxPOD )、输入限定寄存器(GPxQSELN );

数据寄存器包括数据寄存器(GPxDAT )、置位寄存器(GPxSET )、清除寄存器(GPxCLEAR )、反转寄存器(GPxTOGGLE );

功能:GPIO可以是普通的输入输出接口,也可以复用为其他的功能接口;复用功能表如下图所示

当选择引脚使用为输入引脚时,上拉选择寄存器被置1。默认为0。

方向选择寄存器的使用,置0为输入引脚,置1为输出引脚。

输入限定资格寄存器,当引脚设置为输入时,确认采样周期系统时钟同步,确认采样样本数。

数据寄存器:若为输入接口,置0输入低电平,置1输入高电平;若为输出接口,置0输出低电平,置1输出高电平。

置位寄存器、清除寄存器、反转寄存器,顾名思义,只有高电平时有效。

简单的,点灯程序看一下。设置GPIO输出电平控制LED亮灭,添加延时达到跑马灯的效果。

#include "F28x_Project.h"

//
// Defines
//
#define DEVICE_GPIO_PIN_LED1    31
#define DEVICE_GPIO_PIN_LED2    34
//
// Main
//
void main(void)
{
    //
    // Initialize device clock and peripherals
    //
    InitSysCtrl();

    //
    // Initialize GPIO and configure the GPIO pin as a push-pull output
    //
    InitGpio();
    GPIO_SetupPinMux(DEVICE_GPIO_PIN_LED1, GPIO_MUX_CPU1, 0);
    GPIO_SetupPinOptions(DEVICE_GPIO_PIN_LED1, GPIO_OUTPUT, GPIO_PUSHPULL);
    GPIO_SetupPinMux(DEVICE_GPIO_PIN_LED2, GPIO_MUX_CPU1, 0);
    GPIO_SetupPinOptions(DEVICE_GPIO_PIN_LED2, GPIO_OUTPUT, GPIO_PUSHPULL);
    //
    // Initialize PIE and clear PIE registers. Disables CPU interrupts. 
    //
    DINT;
    InitPieCtrl();
    IER = 0x0000;
    IFR = 0x0000;

    //
    // Initialize the PIE vector table with pointers to the shell Interrupt
    // Service Routines (ISR).
    //
    InitPieVectTable();

    //
    // Enable Global Interrupt (INTM) and realtime interrupt (DBGM)
    //
    EINT;
    ERTM;

    //
    // Loop Forever
    //
    for(;;)
    {
        //
        // Turn on LED
        //
        GPIO_WritePin(DEVICE_GPIO_PIN_LED1, 0);
        GPIO_WritePin(DEVICE_GPIO_PIN_LED2, 1);
        //
        // Delay for a bit.
        //
        DELAY_US(500000);

        //
        // Turn off LED
        //
        GPIO_WritePin(DEVICE_GPIO_PIN_LED1, 1);
        GPIO_WritePin(DEVICE_GPIO_PIN_LED2, 0);
        //
        // Delay for a bit.
        //
        DELAY_US(500000);

        GPIO_WritePin(DEVICE_GPIO_PIN_LED1, 0);
        GPIO_WritePin(DEVICE_GPIO_PIN_LED2, 0);
        DELAY_US(500000);

        GPIO_WritePin(DEVICE_GPIO_PIN_LED1, 1);
        GPIO_WritePin(DEVICE_GPIO_PIN_LED2, 1);
        DELAY_US(500000);

    }
}

  • 18
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值