dsp 28335 ConfigCpuTimer()详细介绍
我自己的理解;写的不一定对,还请多指教;
从网上看到的好多都是复制粘贴的一个版本,感觉不太对

图上的是系统时钟(SYSCLKOUT)=75MHz;
ConfigCpuTimer(&CpuTimer0, 150, 500000);
这样不太现实,系统时钟跑75M次是1s,你cpu定时器跑150M才是1s,怎么可能?TPR里的TDDRH:TDDR没法设置啊,不可能让他们等于1/2吧!所以我觉得这说的不对;
下图是我们在程序中经常见到的对cpu定时器的设置;

从注释中可以知道,CPU定时器的时钟频率是150Mhz时(区别于系统时钟SYSCLKOUT),(500000是定时器一个周期的时间,应该就是设定的时间T)每50ms会发生一次中断;怎么实现的呢?

CPUFreqInMHz这个是cpu定时器的频率,由ConfigCpuTimer()的Freq可知为150,单位为Mhz;(区别于系统时钟SYSCLKOUT),
CPU的定时器时钟周期即:TIMCLK=(TDDRH:TDDR+1)x(1/SYSCLKOUT),他的倒数就是cpu定时器的频率,已知函数中自定义的Freq就是频率,那么就可以求得(TDDRH:TDDR)的值了;Freq是等于系统时钟频率的所以TDDR是1;在这里

这样设置TPR(即PSC+TDDR)就表示定时器的时钟等于系统时钟;
为什么将(Freq*Period)赋给PRD?PRD是定时器周期寄存器,意思应该就是定时器从开始到发出中断的时间,让它走(Freq*Period)个定时器周期,停止然后中断;
ConfigCpuTimer(&CpuTimer0, 150, 500000);由此函数知
T(想要的定时时间/定时器周期)=TIMCLK*(PRDH:PRD)==>(PRDH:PRD)=T/TIMCLK=T*Freq;
(比如说系统时钟150MHz,即一个周期是6.67ns;由PRD知运行的系统周期是500000x150=75000000个;75000000x6.666667=500000250ns,大约就是0.5s);
ConfigCpuTimer(&CpuTimer0, 75, 500000);
即:cpu定时器的频率是75MHz,即每两个系统时钟周期代表一个CPU定时器周期;那么时间就变位2x6.666667ns(1/75);
我需要的一个定时器周期是500000us,一个周期是(1/75M)s,那么我就需要500000x75个这样的周期,所以PRDH:PRD就被设置为75*500000=37.5M;
(PRDH:PRD)*2x6.666667ns=0.5s;
dsp 28335 ConfigCpuTimer()详细介绍的更多相关文章
- QT中PRO文件写法的详细介绍
学习Qt时,发现有些知识看了不经常用就忘了,以下是书本上写的一些关于qmake的相关知识,自己看后,打算把一些经常用到的记下来,整理整理. Qt程序一般使用Qt提供的qmake工具来编译. qmake ...
- [No0000A7]批处理经常用到的变量及批处理>NUL详细介绍
绝对路径是指调用绝对的程序位置的路径,例如: start C:\Windows\test.exe 相对路径是文件改变路径以后还会按照变量的路径所在位置去调用,例如: start %WINDIR%\te ...
- linux配置网卡IP地址命令详细介绍及一些常用网络配置命令
linux配置网卡IP地址命令详细介绍及一些常用网络配置命令2010-- 个评论 收藏 我要投稿 Linux命令行下配置IP地址不像图形界面下那么方 便,完全需要我们手动配置,下面就给大家介绍几种配置 ...
- _MSC_VER详细介绍
_MSC_VER详细介绍 转自:http://www.cnblogs.com/braver/articles/2064817.html _MSC_VER是微软的预编译控制. _MSC_VER可以分解为 ...
- php CGI、Fastcgi、PHP-FPM的详细介绍与之间的关系
以下PHP CGI.Fastcgi.PHP-FPM的一些信息归纳和汇总----->详细介绍与之间的关系 一:CGI是干嘛的?CGI是为了保证web server传递过来的数据是标准格式的 web ...
- RabbitMQ消息队列(一): Detailed Introduction 详细介绍
http://blog.csdn.net/anzhsoft/article/details/19563091 RabbitMQ消息队列(一): Detailed Introduction 详细介绍 ...
- doT.js详细介绍
doT.js详细介绍 doT.js特点是快,小,无依赖其他插件. 官网:http://olado.github.iodoT.js详细使用介绍 使用方法:{{= }} for interpolati ...
- Linux截屏工具scrot用法详细介绍
Scrot是Linux命令行中使用的截图工具,能够进行全屏.选取等操作,下面小编将针对Scrot截图工具的用法给大家做个详细介绍,通过操作实例来学习Scrot的使用. 在Linux中安装Scrot ...
- Oracle Merge into 详细介绍
Oracle Merge into 详细介绍 /*Merge into 详细介绍MERGE语句是Oracle9i新增的语法,用来合并UPDATE和INSERT语句.通过MERGE语句,根据一张表或子查 ...
随机推荐
- visual studio code——运行python
How to run Python in Visual Studio Code Getting Started with Python in VS Code python教程 vs code 安装py ...
- MySQL及navicat for mysql中文乱码
转载自:https://www.cnblogs.com/mufire/p/6697994.html 修改完之后记着重启mysql服务,在服务里边重启,即可生效! 全部使用utf8编码 MySQL中文乱 ...
- 小程序之 swiper高度根据图片高度变化
今天做的是这个效果⬇️ swiper的高度根据图片的高度而改变 wxml:<swiper indicator-dots="{{indicatorDots}}" vertic ...
- TCGA样本命名详解
在TCGA中,一个患者可能会对应多个样本,如TCGA-A6-6650可以得到3个样本数据: TCGA-A6-6650-01A-11R-1774-07TCGA-A6-6650-01A-11R-A278- ...
- canvas 水波纹
<!DOCTYPE html> <html> <head> <title>水波背景</title> <meta charset=&qu ...
- vue dialog在ios层级有问题
:modal-append-to-body="false" 遮罩层是否插入至 body 元素上,若为 false,则遮罩层会插入至 Dialog 的父元素上
- MySQL中Decimal类型和Float Double的区别 & BigDecimal与Double使用场景
MySQL中存在float,double等非标准数据类型,也有decimal这种标准数据类型. 其区别在于,float,double等非标准类型,在DB中保存的是近似值,而Decimal则以字符串的形 ...
- 【原】HDMI输出接口传输速率计算
1.1080P60为例: 三组差分线 R.G.B,每组速率: R:1920x1080(像素)x10(有效位为8bit,按10bit传输)x60(帧率)= 1244160000 ~~1.25G bit/ ...
- NetSec2019 20165327 EXP5 MSF基础应用
NetSec2019 20165327 EXP5 MSF基础应用 实践目标 本实践目标是掌握metasploit的基本应用方式,重点常用的三种攻击方式的思路.具体需要完成: 1.1一个主动攻击实践,如 ...
- java第一次,第二次实训
本次作业通过自己的练习和理解还是可以写出来的,最后两个题目我暂时没有写 编写程序: 声明一个整型变量a,并赋初值5,在程序中判断a是奇数还是偶数,然后输出判断的结果. 编写程序:从键盘输入圆的半径,计 ...