浅析TMS320F28035的GPIO模块

2023-05-16

目录

    • 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的第一步,加油。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

浅析TMS320F28035的GPIO模块 的相关文章

  • mt6762添加gpio按键方法与问题调试

    mt6762添加gpio按键方法与问题调试 1 配置dts文件 xff0e 定义gpio87为拍照键 对于keycode 61 212 gpio keys gpio keys compatible 61 34 gpio keys 34 in
  • STM32 GPIO模拟UART串口:最简延时方式

    STM32 GPIO模拟UART串口 xff1a 最简延时方式 在一些应用场景 xff0c MCU的硬件UART资源不足时 xff0c 或者可用于硬件UART配置的管脚优先配置给了其它功能使用 xff0c 就可以通过GPIO模拟UART功能
  • 【STM32学习】(二)CubeMX基于HAL库GPIO输出/输入

    本文主要记录下初学cubeMX进行HAL库配置 单片机 xff1a STM32F407ZGT6 一 新建工程 打开CubeMX xff0c Access To MCU SELETOR 二 配置CubeMX 1 设置Debug方式 因为我用的
  • linux用户态使用gpio中断方法

    一 用户空间gpio的调用文件 用户空间访问gpio 即通过sysfs接口访问gpio 下面是 sys class gpio目录下的三种文件 export unexport文件 gpioN指代具体的gpio引脚 gpio chipN指代gp
  • [STM32系列]二、实现STM32 GPIO端口状态实现最大速度翻转

    STM32系列 二 实现STM32 GPIO最快速度翻转 文章目录 STM32系列 二 实现STM32 GPIO最快速度翻转 前言 一 实验准备 二 测试 1 C语言翻转测试 2 汇编翻转测试 总结 前言 在STM32F103系列应用过程中
  • 关于stm32的GPIO的操作

    首先先了解一下输出的模式 比较常用的是 推挽输出 1 GPIO Mode AIN 模拟输入 2 GPIO Mode IN FLOATING 浮空输入 3 GPIO Mode IPD 下拉输入 4 GPIO Mode IPU 上拉输入 5 G
  • Linux的GPIO子系统解析 ( 一 ) 之 gpiolib.c

    文章目录 Linux的GPIO子系统解析 一 之 gpiolib c 绪论 关于GPIO子系统库文件的gpiolib c解析 drivers gpio gpiolib c gpio desc结构体 gpio chip结构体 gpio ens
  • MC9S12XEP100引脚的复用方式

    嵌入式码农小明最近在研发一个嵌入式产品 用的MC9S12XEP100芯片 其中三个需求需要通过几个使用SPI通讯的芯片实现 硬件开发人员小红照着芯片原理图布好了线 不知是否是没考虑到SPI通讯可以通过CS line来控制要通讯的从机从而实现
  • 【自我提高】树莓派GPIO的几种语言控制方法 C 篇

    使用C语言控制 GPIO 18 首先知道树莓派外置IO的关系对照表 我这里的树莓派是 PI 3B V1 2 关系对照表如下 C 语言下使用 wiringPi GPIO 进行编程 要安装 wiringPi pi raspberrypi sud
  • 树莓派gpio接ttl转usb串口调试

    树莓派设置修改 以下教程只在树莓派3B 验证测试通过 其它版本未经测试仅供参考 1 gt 修改config txt enable uart 1 找到这行 将值改为1 dtoverlay pi3 miniuart bt 在config txt
  • stm32F1的JTAG、SWJ作为普通引脚使用。禁用JTAG、SWJ。

    stm32F1的JTAG SWJ引脚 为 PA13 PA14 PA15 PB3 PB4 单片机复位后 默认功能为 JTAG SWJ 而实际使用中 一般只使用 SWCLK SWDIO这两个引脚做 Debug 其余的引脚可以空出来 重新定义为普
  • 如何设置虚拟 GPIO 环回

    我目前正在开发一个应该在 Net 中使用 gpio 引脚的程序 我想在虚拟 GPIO 引脚上测试我的程序 但我不知道该怎么做 我想做一个环回 将虚拟 GPIO 1 连接到另一个虚拟 GPIO 2 我已经对串口和 tty0tty 做了类似的事
  • Raspberry Pi RPi.GPIO 错误并带有威胁回调

    我被 Python 包中的 wait for edge 函数困住了RPi http sourceforge net p raspberry gpio python wiki Inputs 我为 GPIO 下降添加了多个事件检测 只要回调函数
  • 按下按钮时 GPIO 事件检测不给出输出

    以下 python 脚本应该等待按钮按下 打印按钮按下消息 然后退出 但是 当我按下按钮时 什么也没有打印 然后 当我按回车键时 脚本会打印 检测到按钮按下 然后停止 我如何修复此代码 以便在按下按钮时打印 检测到按钮按下 我按照教程制作了
  • 如何检查您的内核是否支持硬件上的 GPIO?

    我的目标是控制 Intel 主板 带 C1037U 处理器的 NM70 芯片组 上 Peppermint 4 Linux 内核版本 3 8 0 中的 GPIO 引脚 如何检查您的内核是否支持硬件上的 GPIO 背景 主板 Intel NM7
  • GPIO-Hog声明的目的和用途

    问题 其目的和用例是什么gpio hog宣言 可以从用户空间连接 占用 的 GPIO 引脚吗 如果 占用 GPIO 引脚无法与用户空间交互 那么是否有任何机制可以在 dts 文件中配置 GPIO 引脚以进行用户空间交互 背景 我正在尝试配置
  • 如何在Python脚本中获取方波的频率

    我正在使用 TSL235 http www ti com lit ds symlink tsl235 pdf http www ti com lit ds symlink tsl235 pdf 光频转换器和 Raspberry Pi 传感器
  • Beaglebone Black 上的 GPIO

    我目前遇到了 Beaglebone black GPIO 引脚的问题 我正在寻找一种正确的方法来读取 C 中的 GPIO 引脚 p8 4 的值 如果我理解正确的话 我尝试使用一个库 该库使用了在引入设备树之前不支持的旧方法 我尝试寻找其他解
  • Linux、ARM:为什么仅当启动时存在 I2C GPIO 扩展器时才创建 gpiochip

    在 imx6sx 硬件平台 NXP 嵌入式 ARM 上使用 Linux 3 14 52 问题是设备树中指定的 PCF8575 I2C GPIO 扩展器不会实例化为 sys class gpio 结构中的设备 除非它们在内核启动期间存在 这些
  • 通过单个 GPIO 引脚转储闪存

    我正在使用 Infineon 的 XMC4500 Relax Kit 并尝试通过单个 GPIO 引脚提取固件 我非常天真的想法是通过 GPIO 引脚一次转储一位 然后用逻辑分析仪以某种方式 嗅探 数据 伪代码 while word by w

随机推荐

  • 希捷移动硬盘更换文件系统(exfat vs NTFS)

    毕业资料多 xff0c 专门买了个移动硬盘 xff0c 希捷的 2T 第一次买移动硬盘 xff0c 以为和常规U盘一样 xff0c 买来没仔细看说明书就直接用上了 xff0c 但是使用过程中老出问题 xff0c 比如从featurize平台
  • LPWAN——Sigfox实战经验介绍

    0 序 最近半年的时间一直在从事这方面的开发工作 xff0c 到目前为止对于Sigfox有一定想法和经验 xff0c 同时目前国内对于该技术的使用和应用还处在刚刚起步的阶段 xff0c 很多博客对Sigfox的讲解是一个浅尝辄止的介绍 xf
  • 拉格朗日乘子法详解(Lagrange multiplier)

    最近在视频的变换编码里推导最优变换 xff08 KL变换 xff09 时需要用拉格朗日乘子法 xff0c 之前在机器学习的各种优化问题里也要用到这个方法 xff0c 特此仔细钻研一番 xff0c 总结如下 xff1a 注 xff1a 这篇博
  • MATLAB求解规划问题(线性规划, 整数规划, 非线性规划)

    文章目录 基础知识规划问题的数学模型的三个要素解 线性规划Linear Programing理论示例 整数规划理论示例 非线性规划理论示例 生产实践中 xff0c 经常会遇到很多资源分配的问题 xff0c 如何分配各种资源以获得最大经济效益
  • matlab画三维图像(plot3,mesh,surf)

    二维函数的图像必须用三维坐标系画 xff0c 很多函数的图像长得很好看 xff0c 很有意思 会可视化也会有利于我们理解更深刻 xff08 1 xff09 plot3 三维曲线图 在网上看到这图觉得挺好看 xff1a t 61 0 pi 3
  • 智能小车学习笔记

    教程 视频教程 xff1b 资源网站 xff1b 可以获取模块的基础资料 xff1b 有刷电机有损耗 电机选型考虑 xff1a 转速和额定电压 xff1b 电机的力矩 xff0c 减速电机减速箱的作用 xff1a 减速 增大力矩 xff08
  • C++ 容器详解

    顺序容器vectorlistdequestackqueuepriority queue 关联容器mapmultimapsetmultiset 无序容器容器的互相比较迭代器 顺序容器 顺序容器类型特点vector可变大小数组支持快速随机访问
  • Cmake入门&运行保存C/C++文件

    Cmake入门 amp 运行保存C C 43 43 文件 在ubuntu创建 保存 运行c 43 43 文件CMake入门创建文件编译 参考 最近在学习Intel realsense T265双目视觉 xff0c 其中一步需要创建源文件ma
  • NVIDIA Jetson TX2 上手指南

    文章目录 一个性能强大的边缘设备我和 NVIDIA Jetson TX2 的初体验Fresh Your TX2为什么在第一步取消Host Machine可能遇到的问题 用上最好的性能 xff0c 小风扇跳舞吧 xff5e xff5e 运行一
  • extern "C"的作用以及为什么要使用extern "C"

    实现c 43 43 代码能够调用其他c语言代码 xff0c 加上extern 34 C 34 后 xff0c 这部分代码编译器以c语言的方式进行编译和链接 xff0c 而不是按c 43 43 方式原因 xff1a c和c 43 43 对同一
  • 什么是链表?(图解)

    一 xff1a 链表是什么 1 链表是物理存储单元上非连续的 非顺序的存储结构 xff0c 数据元素的逻辑顺序是通过链表的指针地址实现 xff0c 有一系列结点 xff08 地址 xff09 组成 xff0c 结点可动态的生成 2 结点包括
  • C++ STL各个容器的区别

    1 STL容器分类 xff1a STL的容器可以分为以下几个大类 一 顺序 xff08 序列 xff09 容器 xff0c 有vector list deque string stack 适配器类 queue 适配器类 priority q
  • Bat脚本-编译及烧录keil-MDK工程

    目录 概述背景需求需求分析需求实现实现功能使用示例1 修改脚本中的编译软件路径2 将脚本的文件路径加入系统的环境变量3 通过Vscode 进行调用 可进一步优化的方向总结 概述 本文主要讲述的是一个关于调用keil MDK的软件编译对应单片
  • ubuntu部署http服务器

    一 安装apache2 sudo apt install y apache2 二 配置环境 默认是80端口 xff0c 防止冲突自定义端口 xff1a 8001 1 修改 etc apache2 ports conf文件j监听端口 List
  • c/c++math.h标准库

    math h数学函数 这个库中所有可用的函数取double参数并返回double的结果 abs 绝对值 acos 反余弦 acosh 反双曲余弦 asin 反正弦 asinh 反双曲正弦 atan2 两个参数的反正切 atan 反正切 at
  • Linux Simulink打不开——unable to run the MATLABWindow application on Linux

    Linux Simulink打不开 unable to run the MATLABWindow application on Linux 解决办法 xff1a 解决办法 xff1a 参考网页 xff1a https www mathwor
  • RTX移植STM32F103,超详细~

    目录 RTX移植前言移植1 创建工程2 配置工程3 添加LED文件4 编写测试代码5 编译烧录 RTX移植 往期回顾 为什么需要RTOS 前言 keil RTX是一款应用广泛的嵌入式RTOS xff0c 具体可见官网 为什么需要RTOS x
  • 基于28035的ePWM触发ADC采样设计

    目录 前言实验目的实验要求硬件电路实验步骤代码解释实验结果总结体会 前言 玖道最近在做一个开关电源项目 xff0c 需要用到TI 的TMS320F28035 芯片 xff0c 实现控制电路的设计 简单来说就是利用28035采集信号量 xff
  • 浅析DSP28035的看门狗模块

    目录 背景工作原理结构与寄存器代码实验结果总结 背景 嵌入式系统通常会使用DSP来实现控制功能 xff0c 比如开关电源的数字控制 试想如果DSP中程序出现Bug 崩溃 跑飞了怎么办 xff1f 如果不及时处理 xff0c 这对整个嵌入式系
  • 浅析TMS320F28035的GPIO模块

    目录 GPIO简介硬件电路软件代码总结 通用输入输出端口 General Purpose Input Output GPIO 几乎是学习包括DSP xff0c 单片机在内的微处理器的第一步 GPIO的功能包括基本的输入 xff0c 输出 x