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 = 0;GpioCtrlRegs.GPBDIR.bit.GPIO34 = 1;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; //存放频率 单位MHZfloat 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 = 0;Timer->RegsAddr->TPRH.all = 0;// Initialize timer control register:Timer->RegsAddr->TCR.bit.TSS = 1; // 1 = Stop timer, 0 = Start/Restart TimerTimer->RegsAddr->TCR.bit.TRB = 1; // 1 = reload timerTimer->RegsAddr->TCR.bit.SOFT = 1;Timer->RegsAddr->TCR.bit.FREE = 1; // Timer Free RunTimer->RegsAddr->TCR.bit.TIE = 1; // 0 = Disable/ 1 = Enable Timer Interrupt// Reset interrupt counter:Timer->InterruptCount = 0; }
用户设置:
ConfigCpuTimer(&CpuTimer0, 150, 1000000);//使用定时器0 ,时钟频率为150MHZ,计数值 到1M 。也就是说这样设置是产生一个一秒的中断
定时器中断处理函数设置:PIE_VECT_TABLE 中断向量表。在DSP2833x_PieVect.h中定义
PieVectTable.TINT0 = &cpu_timer0_isr;//往中断矢量表中填写一个指针。当定时时间到了就跳转到 ,当前指针指向的函数去执行代码。
定时器0中断在中断向量表中的组1
2.在定时器中使用GPIO翻转寄存器GPXTOGGLE 实现LED闪烁
转载于:https://www.cnblogs.com/hjxzjp/p/11126120.html
TMS320F28335——IO控制/定时计操作相关推荐
- 通过文件IO控制硬件设备的方法
文章目录 1 通过文件IO控制硬件设备的方法 1.1 原理介绍 1.2 LED灯程序 1 通过文件IO控制硬件设备的方法 1.1 原理介绍 驱动程序: 本质:是硬件设备创建相应的设备节点文件.创建设备 ...
- 18 操作系统第五章 设备管理 IO设备的基本概念和分类 IO控制器 IO控制方式 IO软件层次结构 IO核心子系统 假脱机技术 设备的分配与回收 缓冲区管理
文章目录 1 IO设备的基本概念和分类 1.1 什么是I/O设备 1.2 I/O设备分类 2 IO控制器 2.1 I/O设备组成 2.2 I/O控制器功能 2.3 I/O控制器的组成 2.4 寄存器编 ...
- mysql io队列_网易视频云经验分享MYSQL 5.5 的IO控制
网易视频云是网易倾力打造的一款基于云计算的分布式多媒体处理集群和专业音视频技术,为客户提供稳定流畅.低时延.高并发的视频直播.录制.存储.转码及点播等音视频的PASS服务.在线教育.远程医疗.娱乐秀场 ...
- Java基础-22总结登录注册IO版,数据操作流,内存操作流,打印流,标准输入输出流,转换流,随机访问流,合并流,序列化流,Properties...
你需要的是什么,直接评论留言. 获取更多资源加微信公众号"Java帮帮" (是公众号,不是微信好友哦) 还有"Java帮帮"今日头条号,技术文章与新闻,每日更新 ...
- 4G LTE模块通过树莓派的IO进行复位操作的演示
关键词:树莓派 IO控制 4G LTE 模块 死机 复位 概述:树莓派是一个高性价比且生态成熟的创客平台,不少应用场景都加入了4G LTE模组,出于接口和性能的考虑,4G LTE模块基本都通过U ...
- Java基础-22总结登录注册IO版,数据操作流,内存操作流,打印流,标准输入输出流,转换流,随机访问流,合并流,序列化流,Properties
你需要的是什么,直接评论留言. 获取更多资源加微信公众号"Java帮帮" (是公众号,不是微信好友哦) 还有"Java帮帮"今日头条号,技术文章与新闻,每日更新 ...
- 操作系统---IO控制方式
IO控制方式 一. IO控制方式 ①. 程序直接控制方式(串行方式) ②. 程序中断方式 ③. DMA(直接存储方式) ④. 通道控制方式 ⑤. 外围处理机方式 一. IO控制方式 ①. 程序直接控制 ...
- 【408预推免复习】操作系统之IO层次结构和IO控制方式
[408&预推免复习]操作系统之IO层次结构和IO控制方式 文章目录 1 I/O设备 2 I/O系统的层次结构 3 I/O控制方式 4 IO设备分配与回收 文章目录 1 I/O设备 2 I/O ...
- LSM树——LSM 将B+树等结构昂贵的随机IO变的更快,而代价就是读操作要处理大量的索引文件(sstable)而不是一个,另外还是一些IO被合并操作消耗。...
Basic Compaction 为了保持LSM的读操作相对较快,维护并减少sstable文件的个数是很重要的,所以让我们更深入的看一下合并操作.这个过程有一点儿像一般垃圾回收算法. 当一定数量的ss ...
最新文章
- Python基础03 序列
- DButils的更新与查询,利用C3P0链接数据库
- html如何链接sql sever,SQL Server链接服务器
- 基于attention的seq2seq机器翻译实践详解
- 应用java编写 按键小脚本_一个使用JAVA编写的类似按键精灵的程序,支持脚本文件编写(含源代码) | 学步园...
- Kepware助力数据中心对接楼宇自动化系统
- java万年历JFrame_Java Gui万年历
- 第二单元 用python学习微积分(十六)定积分
- CT一般扫描参数_工业CT检测服务
- java多线程并发测试工具_java线程并发工具类CyclicBarrier、CountDownLatch及Semaphore
- ch340是什么芯片
- 软件开发外包平台有哪些?收集的一些备用
- “用户请求取消当前的操作”的几种解决办法
- 二阶魔方高级玩法公式
- 改进ur_modern_driver包,提供ur_driver/URScript_srv服务
- Minecraft Mod 开发:0-前言
- Excel 2003文档的密码忘了怎么办
- 注意力机制在深度推荐算法中的应用之AFM模型
- cmd中的循环语句for
- CV中直方图比较方法