TMS320F28335——IO控制/定时计操作
一、实现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控制/定时计操作的更多相关文章
- java.io中流的操作:字节流、字符流
java.io中流的操作:字节流.字符流(1)使用File类打开一个文件(2)通过字节流或字符流的子类指定输出的位置(3)进行读/写操作(4)关闭输入/输出 1.字节流:主要是byte类型数据,以by ...
- C# IO流的操作
C# IO流的操作非常重要,我们读写文件都会使用到这个技术,这里先演示一个文件内容复制的例子,简要说明C#中的IO操作. namespace ConsoleApplication1 { class P ...
- Java---IO加强(3)-IO流的操作规律
一般写关于操作文件的读取的几个通用步骤!!! 1.明确源和目的. 源:InputStream Reader 一定是被读取的. 目的:OutputStream Writer 一定是被写入的. 2.处理的 ...
- Selenium3 + Python3自动化测试系列三——控制浏览器操作
控制浏览器操作 控制浏览器窗口大小 在测试过程中,我们在打开浏览器后,根据需求可自定义调整浏览器的尺寸大小.WebDriver提供了set_window_size()方法来设置浏览器的大小. 如果页面 ...
- C# IO流的操作(一)
C# IO流的操作非常重要,我们读写文件都会使用到这个技术,这里先演示一个文件内容复制的例子,简要说明C#中的IO操作. namespace ConsoleApplication1 { class P ...
- 归纳整理Linux下C语言常用的库函数----内存及字符串控制及操作
在没有IDE的时候,记住一些常用的库函数的函数名.参数.基本用法及注意事项是很有必要的. 参照Linux_C_HS.chm的目录,我大致将常用的函数分为一下几类: 1. 内存及字符串控制及操作 2. ...
- 035——VUE中表单控件处理之使用vue控制select操作文字栏目列表
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- LSM树——LSM 将B+树等结构昂贵的随机IO变的更快,而代价就是读操作要处理大量的索引文件(sstable)而不是一个,另外还是一些IO被合并操作消耗。
Basic Compaction 为了保持LSM的读操作相对较快,维护并减少sstable文件的个数是很重要的,所以让我们更深入的看一下合并操作.这个过程有一点儿像一般垃圾回收算法. 当一定数量的ss ...
- selenium控制浏览器操作
selenium控制浏览器操作 控制浏览器有哪些操作? 控制页面大小 前进.后退 刷新 自动输入.提交 ........ 控制页面大小,实例: # -*- coding:utf-8 -*- from ...
随机推荐
- pluginManagement的坑
想用protobuf-maven-plugin插件,用了<pluginManagement/>标签包裹<plugin/>,就引不进来,去掉就可以引进来.需要研究下. <b ...
- 157. [USACO Nov07] 奶牛跨栏(第三次考试大整理)
157. [USACO Nov07] 奶牛跨栏 输入文件:hurdles.in 输出文件:hurdles.out 简单对比 时间限制:1 s 内存限制:128 MB 译 by CmYkRg ...
- Ubuntu 12.04输入密码登陆后又跳回到登录界面
先找到这个文件: /home/user/.xsession-errors 打开这个文件. 这个文件记录了系统启动的日志,从这里你就可以看到启动的时候哪里出了问题. 对于我的来说,问题出在这里: & ...
- ZXing使用详解与范例(C#)
介绍 ZXing是一个开放源码的,用Java实现的多种格式的1D/2D条码图像处理库,它包含了联系到其他语言的端口.Zxing可以实现使用手机的内置的摄像头完成条形码的扫描及解码.(引自百度百科) 用 ...
- CentOS7--删除virbr0
https://blog.csdn.net/aienjoy/article/details/78994128
- 屏蔽ffmpeg命令的所有提示
有时候需要隐蔽的执行ffmpeg不希望输出任何日志,提示.这个时候只需要多添加这个参数即可 -loglevel quiet
- d3d.h和d3d9.h混用的问题
d3d.h和d3d9.h混用的时候,一大堆错误,不管怎么调整包含顺序都不对,最后看到这个网址解决的http://www.programmer-club.com.tw/ShowSameTitleN/di ...
- 1. JDK 、 JRE 、JVM有什么区别和联系?
首先,我们分别对这三者进行阐述. JVM :英文名称(Java Virtual Machine),就是我们耳熟能详的 Java 虚拟机.它只认识 xxx.class 这种类型的文件,它能够将 clas ...
- python 中文路径
ipath = 'D:/学习/语料库/SogouC.mini/Sample/C000007/10.txt' uipath = unicode(ipath , "utf8")
- docker-容器完整构建过程
container 代码app,构建,运行,分享(推送)image mkdir img1 cd img1 [root@cu-tmp-201 img1]# ls app.py Dockerfile re ...