我自己的理解;写的不一定对,还请多指教;

从网上看到的好多都是复制粘贴的一个版本,感觉不太对

图上的是系统时钟(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()详细介绍的更多相关文章

  1. QT中PRO文件写法的详细介绍

    学习Qt时,发现有些知识看了不经常用就忘了,以下是书本上写的一些关于qmake的相关知识,自己看后,打算把一些经常用到的记下来,整理整理. Qt程序一般使用Qt提供的qmake工具来编译. qmake ...

  2. [No0000A7]批处理经常用到的变量及批处理>NUL详细介绍

    绝对路径是指调用绝对的程序位置的路径,例如: start C:\Windows\test.exe 相对路径是文件改变路径以后还会按照变量的路径所在位置去调用,例如: start %WINDIR%\te ...

  3. linux配置网卡IP地址命令详细介绍及一些常用网络配置命令

    linux配置网卡IP地址命令详细介绍及一些常用网络配置命令2010-- 个评论 收藏 我要投稿 Linux命令行下配置IP地址不像图形界面下那么方 便,完全需要我们手动配置,下面就给大家介绍几种配置 ...

  4. _MSC_VER详细介绍

    _MSC_VER详细介绍 转自:http://www.cnblogs.com/braver/articles/2064817.html _MSC_VER是微软的预编译控制. _MSC_VER可以分解为 ...

  5. php CGI、Fastcgi、PHP-FPM的详细介绍与之间的关系

    以下PHP CGI.Fastcgi.PHP-FPM的一些信息归纳和汇总----->详细介绍与之间的关系 一:CGI是干嘛的?CGI是为了保证web server传递过来的数据是标准格式的 web ...

  6. RabbitMQ消息队列(一): Detailed Introduction 详细介绍

     http://blog.csdn.net/anzhsoft/article/details/19563091 RabbitMQ消息队列(一): Detailed Introduction 详细介绍 ...

  7. doT.js详细介绍

    doT.js详细介绍   doT.js特点是快,小,无依赖其他插件. 官网:http://olado.github.iodoT.js详细使用介绍 使用方法:{{= }} for interpolati ...

  8. Linux截屏工具scrot用法详细介绍

    Scrot是Linux命令行中使用的截图工具,能够进行全屏.选取等操作,下面小编将针对Scrot截图工具的用法给大家做个详细介绍,通过操作实例来学习Scrot的使用.   在Linux中安装Scrot ...

  9. Oracle Merge into 详细介绍

    Oracle Merge into 详细介绍 /*Merge into 详细介绍MERGE语句是Oracle9i新增的语法,用来合并UPDATE和INSERT语句.通过MERGE语句,根据一张表或子查 ...

随机推荐

  1. snmp模拟器snmpsid使用

    snmpsim使用 安装 pip install snmpsim 简单使用 生成snmpwalk文件: snmpwalk -v2c -c 'password' -ObentU 218.200.x.15 ...

  2. 2019 年 GrapeCity Documents 产品路线图

    前言 | 问题背景 随着软件行业引入新的硬件和操作系统,我们看到更多的托管框架与.NET技术保持同步.Microsoft的.NET Standard和.NET Core定义了一个跨平台规范,为应用程序 ...

  3. 前端学习之HTML

    HTML介绍 Web服务本质 import socket sk = socket.socket() sk.bind(("127.0.0.1", 8080)) sk.listen(5 ...

  4. Go 基准测试

        文章转载地址:https://www.flysnow.org/2017/05/21/go-in-action-go-benchmark-test.html 什么是基准测试?      基准测试 ...

  5. You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'group t1,customer t2

    ### SQL: select t1.gid,t1.gname,t1.gvalue,t1.gtype, t1.gaddress,t1.gmembers, t1.gcode,t1.gphone, t2. ...

  6. 微信小程序开发——简记

    MVVM:提倡渲染(页面)和逻辑分离.页面(DOM),逻辑(后端代码JS等)—> JS操纵DOM.通过模板引擎,操纵和表现. 页面与程序,如何配合工作: 微信客户端会根据page.json配置, ...

  7. glom初级教程

    1.glom介绍 通常对于字典和json的提取我们都是使用如下方式 >>> data = {'a': {'b': {'c': 'd'}}} >>> data['a' ...

  8. vue试题

    1.v-for可是实现数据遍历显示,不仅可以遍历数组,也可以遍历对象,还可以从数值中取值. 2.vue的生命周期钩子 1)实例,组件通过new Vue()创建出来之后会初始化事件和生命周期,然后就会执 ...

  9. 在linux上运行网页程序及日志文件查看

  10. mybatis多参数传递,延迟加载,缓存,注解开发

    1.Mybatis的多参数传递方式 需求:更具id 和 名字查询用户: select * from user where id = ? and name = ?: 1):QueryVo 或者 User ...