首页 > 其他分享 >F28004X系列学习总结(3)——GPIO模块

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

时间:2024-03-25 16:02:58浏览次数:34  
标签:LED1 PIN WritePin F28004X DEVICE 寄存器 系列学习 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);

    }
}

标签:LED1,PIN,WritePin,F28004X,DEVICE,寄存器,系列学习,GPIO
From: https://blog.csdn.net/Dlyuhh/article/details/137012692

相关文章

  • 在linux中无需修改内核驱动就能操作GPIO口的示例
    一、首先编写一个脚本文件init.sh#!/bin/bashecho2>/sys/class/gpio/exportsleep1echo3>/sys/class/gpio/exportsleep1echoout>/sys/class/gpio/gpio3/directionecho1>/sys/class/gpio/gpio3/value这段代码是在Linux系统中使用shell脚本语言编写的。让......
  • gpio子系统分析
    参考博客:https://blog.csdn.net/yangguoyu8023/article/details/121892008https://blog.csdn.net/yangguoyu8023/category_11576708.html gpiolib相关数据结构:数据结构主要定义在include/linux/gpio/driver.h和/drivers/gpio/gpiolib.h中/***structgpio_chip-a......
  • gpio子系统与pinctrl子系统通用API
    此篇不涉及gpio子系统和pinctrl原理解释,只列举相关操作函数: 通用的GPIO操作:1.gpio_request(unsignedgpio,constchar*label):向内核申请指定gpio,所申请的IO口会被内核记录参数:gpio:申请IO口编号,label:申请者的名字,随便。返回:int值,成功:0;失败:负数注:在使用gpio口之前,应先用g......
  • [ROS 系列学习教程] rqt可视化工具箱 - 日志工具
    ROS系列学习教程(总目录)本文目录零、rqt可视化工具箱一、rqt_console二、rqt_logger_level零、rqt可视化工具箱rqt是ROS的一个软件框架,以插件的形式实现各种GUI工具。可以在rqt中将所有现有的GUI工具作为子窗口运行,也可以以独立方法运行,但rqt可以更轻松地同......
  • CH57x,CH58x,CH59x芯片_SPI借助GPIO中断完成中断传输
    受其他项目的启发,如果IO充裕,且在SPI主机与SPI从机均可以自行编程的情况下,可以尝试在4线SPI的基础上增加两根GPIO线,通过IO中断的形式通知对方进行收数据;非SPI中断形式,以两颗CH582通讯为例,1、主机程序:voidmain(){SetSysClock(CLK_SOURCE_PLL_60MHz);GPIOA_ModeCfg......
  • 立创泰山派学习03--GPIO的控制
    1、GPIO的硬件引脚GPIO0_B7    2、将GPIO0_B7引脚(0*32+1*8+7=15)导出,便于访问和控制echo15>/sys/class/gpio/export    3、将GPIO0_B7引脚的方向设置为输出模式,该引脚配置为输出模式echoout>/sys/class/gpio/gpio15/direction   4、读取该GP......
  • [NCS] nrf5340 GPIO控制
    1.测试环境硬件:nrf5340开发板ncs版本:2.5.22.移植2.1CMakeLists.txt添加源文件target_sources(appPRIVATEsrc/main.csrc/bsp_led.c)2.2bsp_led.h/***@filebsp_led.h*@authorwfagly*@brief基于安富莱电子(www.armfly.com)例子修改*@version1.0.1*@da......
  • GPIO
    GPIOIO端口基本结构F1的IO结构图F4/F7/H7的IO结构图GPIO的八种工作方式详细的结构及工作方式见该文章:GPIO口工作原理的超详细解释(附电路图)-知乎(zhihu.com)通用外设驱动模型GPIO配置步骤相关HAL库函数简介关键结构体简介思维导图该思维导图来自......
  • mpsoc嵌入式vitis开发—AXI GPIO中断实验
    前言vitis版本:Vitis2023.2由于Vitis版本更新,很多API发生变化,学习原子哥的教程时很多代码对于不上,所以自己重新写一遍,并记录下自己踩过的坑,方便以后查看。这里直接给出代码,其他的流程参考原子哥的《2_DFZU2EG_4EVMPSoC之嵌入式Vitis开发指南_V1.0.pdf》代码#include"sleep.h......
  • 树莓派上基于Python控制GPIO
    树莓派上基于Python控制GPIO希望做到可以自动给阳台的花儿浇水~有以下几点:控制GPIO的拉高/拉低,并保持一段时间间隔加锁,避免重复有日志记录具体情况#!/usr/bin/envpython3#-*-coding:UTF-8-*-importRPi.GPIOasGPIOimporttimeimportfcntlimportloggingcl......