一、实现GPIO控制

1.硬件连接

   

从电路原理图上看来,LED灯是接在GPIO34 上的。

2.IO设置

  2.1设置功能

  GPXMUX1/2:功能选择寄存器  

  GPXMUX1/2    每组 IO 一般有 32 个 IO 口可以配置。GPXMUX1 对应每组的低 16 个 IO 口,GPXMUX2 对应高 16 个 IO 口 。

  这里设置的是GPIO34   所以在 GPBMUX1中

所以向  GPBMUX1 的bit5:4  写入0设置为普通IO。(默认设置 )

  2.2:设置IO方向

  方向控制寄存器 GPXDIR:如果对应的位为 1 则配置为输出,否则则配置为输入。

  代码如下:

  

   EALLOW;
GpioCtrlRegs.GPBMUX1.bit.GPIO34 = ;
GpioCtrlRegs.GPBDIR.bit.GPIO34 = ;
EDIS;

  关于  EALLOW、EDIS说明:

  DSP由于在上电复位之后,状态寄存器基本上都是清零,而这样的状态下正是上述特殊寄存器禁止改写的状态。为了能够对这些特殊寄存器进行初始化,所以在对上述特殊寄存器进行改写之前,一定要执行汇编指令asm(“EALLOW”)或者宏定义EALLOW来设置状态寄存器1的C6位,在设置完寄存器之后,一定要注意执行汇编指令asm(“EDIS”)或者宏定义EDIS来清除状态寄存器1的C6位,来防止杂散代码或指针破坏寄存器内容。
  到此关于GPIO的配置就完成了。

3.控制IO输出电平

  置位寄存器:置位寄存器 GPXSET:如果对应的位为 1 则将对应的 IO 口拉高(输出高电平)。     GpioDataRegs.GPBSET.bit.GPIO34 = 1;//设置PGIO34 输出高电平

  清零寄存器:强制拉低管脚 GPXCLEAR:如果对应的位为 1 则将对应的 IO 口拉低(输出低电平)。 GpioDataRegs.GPBCLEAR.bit.GPIO34 = 1;//设置GPIO34输出高平

  输出翻转寄存器:输出状态翻转寄存器 GPXTOGGLE:如果 GPXTOGGLE 的某位为 1 则将相应的 IO 口输出状态进行翻转。                                                                GpioDataRegs.GPBTOGGLE.bit.GPIO34= 1;//设置PGIO34输出翻转电平

 二、使用定时器实现闪烁LED

   1.定时器设置

    关于定时器的设置  主要是设置CPUTIMER_VARS  结构体中的参数:

    

struct CPUTIMER_VARS {
volatile struct CPUTIMER_REGS *RegsAddr;//定时器 相关寄存器
Uint32 InterruptCount; //用作定时器中断次数统计
float CPUFreqInMHz; //存放频率 单位MHZ
float PeriodInUSec; //中断的计数值 ,到了产生中断。
};
struct CPUTIMER_REGS {
union TIM_GROUP TIM; // Timer counter register 定时器计数寄存器
union PRD_GROUP PRD; // Period register 定时器周期寄存器
union TCR_REG TCR; // Timer control register 定时器控制寄存器
Uint16 rsvd1; // reserved 保留
union TPR_REG TPR; // Timer pre-scale low
union TPRH_REG TPRH; // Timer pre-scale high
};

关于定时器配置源码如下:

  

void ConfigCpuTimer(struct CPUTIMER_VARS *Timer, float Freq, float Period)
{
Uint32 temp; // Initialize timer period:
Timer->CPUFreqInMHz = Freq;
Timer->PeriodInUSec = Period;
temp = (long) (Freq * Period);
Timer->RegsAddr->PRD.all = temp; // Set pre-scale counter to divide by 1 (SYSCLKOUT):
Timer->RegsAddr->TPR.all = ;
Timer->RegsAddr->TPRH.all = ; // Initialize timer control register:
Timer->RegsAddr->TCR.bit.TSS = ; // 1 = Stop timer, 0 = Start/Restart Timer
Timer->RegsAddr->TCR.bit.TRB = ; // 1 = reload timer
Timer->RegsAddr->TCR.bit.SOFT = ;
Timer->RegsAddr->TCR.bit.FREE = ; // Timer Free Run
Timer->RegsAddr->TCR.bit.TIE = ; // 0 = Disable/ 1 = Enable Timer Interrupt // Reset interrupt counter:
Timer->InterruptCount = ;
}

    用户设置:

   

  ConfigCpuTimer(&CpuTimer0, , );//使用定时器0  ,时钟频率为150MHZ,计数值 到1M  。也就是说这样设置是产生一个一秒的中断

    定时器中断处理函数设置:PIE_VECT_TABLE 中断向量表。在DSP2833x_PieVect.h中定义

    

PieVectTable.TINT0 = &cpu_timer0_isr;//往中断矢量表中填写一个指针。当定时时间到了就跳转到 ,当前指针指向的函数去执行代码。

  定时器0中断在中断向量表中的组1

 2.在定时器中使用GPIO翻转寄存器GPXTOGGLE  实现LED闪烁

  

TMS320F28335——IO控制/定时计操作的更多相关文章

  1. java.io中流的操作:字节流、字符流

    java.io中流的操作:字节流.字符流(1)使用File类打开一个文件(2)通过字节流或字符流的子类指定输出的位置(3)进行读/写操作(4)关闭输入/输出 1.字节流:主要是byte类型数据,以by ...

  2. C# IO流的操作

    C# IO流的操作非常重要,我们读写文件都会使用到这个技术,这里先演示一个文件内容复制的例子,简要说明C#中的IO操作. namespace ConsoleApplication1 { class P ...

  3. Java---IO加强(3)-IO流的操作规律

    一般写关于操作文件的读取的几个通用步骤!!! 1.明确源和目的. 源:InputStream Reader 一定是被读取的. 目的:OutputStream Writer 一定是被写入的. 2.处理的 ...

  4. Selenium3 + Python3自动化测试系列三——控制浏览器操作

    控制浏览器操作 控制浏览器窗口大小 在测试过程中,我们在打开浏览器后,根据需求可自定义调整浏览器的尺寸大小.WebDriver提供了set_window_size()方法来设置浏览器的大小. 如果页面 ...

  5. C# IO流的操作(一)

    C# IO流的操作非常重要,我们读写文件都会使用到这个技术,这里先演示一个文件内容复制的例子,简要说明C#中的IO操作. namespace ConsoleApplication1 { class P ...

  6. 归纳整理Linux下C语言常用的库函数----内存及字符串控制及操作

    在没有IDE的时候,记住一些常用的库函数的函数名.参数.基本用法及注意事项是很有必要的. 参照Linux_C_HS.chm的目录,我大致将常用的函数分为一下几类: 1. 内存及字符串控制及操作 2. ...

  7. 035——VUE中表单控件处理之使用vue控制select操作文字栏目列表

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  8. LSM树——LSM 将B+树等结构昂贵的随机IO变的更快,而代价就是读操作要处理大量的索引文件(sstable)而不是一个,另外还是一些IO被合并操作消耗。

    Basic Compaction 为了保持LSM的读操作相对较快,维护并减少sstable文件的个数是很重要的,所以让我们更深入的看一下合并操作.这个过程有一点儿像一般垃圾回收算法. 当一定数量的ss ...

  9. selenium控制浏览器操作

    selenium控制浏览器操作 控制浏览器有哪些操作? 控制页面大小 前进.后退 刷新 自动输入.提交 ........  控制页面大小,实例: # -*- coding:utf-8 -*- from ...

随机推荐

  1. webUploader---实现大文件断点续传

    核心原理: 该项目核心就是文件分块上传.前后端要高度配合,需要双方约定好一些数据,才能完成大文件分块,我们在项目中要重点解决的以下问题. * 如何分片: * 如何合成一个文件: * 中断了从哪个分片开 ...

  2. CDOJ 1073 线段树 单点更新+区间查询 水题

    H - 秋实大哥与线段树 Time Limit:1000MS     Memory Limit:65535KB     64bit IO Format:%lld & %llu Submit S ...

  3. scrapy项目2:爬取智联招聘的金融类高端岗位(spider类)

    ---恢复内容开始--- 今天我们来爬取一下智联招聘上金融行业薪酬在50-100万的职位. 第一步:解析解析网页 当我们依次点击下边的索引页面是,发现url的规律如下: 第1页:http://www. ...

  4. 修改apache2配置,禁止目录访问+禁止访问.git文件夹

    通过url访问服务器,无论是本地服务器还是远程服务器 如果你的文件根目录里有 index.html,index.php,浏览器就会显示 index.html的内容,如果没有 index.html,浏览 ...

  5. sqli-labs(22)

    接下里我们进入第二二关 好像和第21关一样 cookie的base64加密注入 闭合变成了双引号而已 0X01 构造语句进行尝试 " union select 1,2,3# IiB1bmlv ...

  6. SVG相关学习(一)SVG基础

    SVG 相关学习 SVG SVG 指可伸缩矢量图形 (Scalable Vector Graphics) SVG viewBox <svg width="500" heigh ...

  7. ES6 函数参数的解构赋值

    function add([x, y]){ return x + y; } add([1, 2]); // 3

  8. SpringMVC前端控制器以.html后缀拦截,访问接口返回406问题

    原因: spring监测到是.html来访问,它就会认为需要返回的是html页面.如果返回的不是html,会报406错误 解决: 提供多种后缀拦截方式,工程里web.xml配置 分析: HTTP 40 ...

  9. 多层全连接神经网络实现minist手写数字分类

    import torch import numpy as np import torch.nn as nn from torch.autograd import Variable import tor ...

  10. sensu

    https://blog.csdn.net/enweitech/article/details/53763324