单片机的定时器就很简单,28335的定时器也没难道那里去。参考文章《https://blog.csdn.net/hmf1235789/article/details/51891997》

涉及经常使用的就一个time0定时器,其他两个不用。用的话,原理也一样。

涉及time0的寄存器也就5个:TDDRH:TDDR                   PSCH:PSC

PRDH :PRD                      TIMH:TIM

还有一个crl寄存器,主要管理中断控制类的,在此不细说。看上边4个寄存器,其实用得就两个,而且一个还经常是0.

TDDRH:TDDR  :作用将系统时钟分频(降低频率),供定时器用。经常设置为0

PRDH :PRD :查数用的

PSCH:PSC  和  TIMH:TIM分别装载以上连个寄存器的数据;PSCH:PSC 减到0之后发出一个时钟信号给TIMH:TIM,然后自动装载TDDRH:TDDR。

TIMH:TIM 减到0之后,发出一个中断信号,然后自动装载PRDH :PRD

如何计算:参考《手把手教你学DSP2812》里边的解释很清晰

提醒:

CpuTimer0.RegsAddr = &CpuTimer0Regs;

是什么?

(cputime.c的代码)

struct CPUTIMER_VARS CpuTimer0;// CpuTimer 1 and CpuTimer2 are used by DSP BIOS & other RTOS. Comment out if using DSP BIOS or other RTOS.
struct CPUTIMER_VARS CpuTimer1;
struct CPUTIMER_VARS CpuTimer2;//---------------------------------------------------------------------------
// InitCpuTimers:
//---------------------------------------------------------------------------
// This function initializes all three CPU timers to a known state.
//
void InitCpuTimers(void)
{// CPU Timer 0// Initialize address pointers to respective timer registers:CpuTimer0.RegsAddr = &CpuTimer0Regs;// Initialize timer period to maximum:CpuTimer0Regs.PRD.all  = 0xFFFFFFFF;// Initialize pre-scale counter to divide by 1 (SYSCLKOUT):CpuTimer0Regs.TPR.all  = 0;CpuTimer0Regs.TPRH.all = 0;// Make sure timer is stopped:CpuTimer0Regs.TCR.bit.TSS = 1;// Reload all counter register with period value:CpuTimer0Regs.TCR.bit.TRB = 1;// Reset interrupt counters:CpuTimer0.InterruptCount = 0;

cputime.h的代码

struct CPUTIMER_REGS {union TIM_GROUP TIM;   // Timer counter registerunion PRD_GROUP PRD;   // Period registerunion TCR_REG   TCR;   // Timer control registerUint16          rsvd1; // reservedunion TPR_REG   TPR;   // Timer pre-scale lowunion TPRH_REG  TPRH;  // Timer pre-scale high
};//---------------------------------------------------------------------------
// CPU Timer Support Variables:
//
struct CPUTIMER_VARS {volatile struct  CPUTIMER_REGS  *RegsAddr;Uint32    InterruptCount;float   CPUFreqInMHz;float   PeriodInUSec;
};//---------------------------------------------------------------------------
// Function prototypes and external definitions:
//
void InitCpuTimers(void);
void ConfigCpuTimer(struct CPUTIMER_VARS *Timer, float Freq, float Period);extern volatile struct CPUTIMER_REGS CpuTimer0Regs;
extern struct CPUTIMER_VARS CpuTimer0;// CpuTimer 1 and CpuTimer2 are reserved for DSP BIOS & other RTOS. Comment out CpuTimer1 and CpuTimer2 if using DSP BIOS or other RTOS
extern volatile struct CPUTIMER_REGS CpuTimer1Regs;
extern volatile struct CPUTIMER_REGS CpuTimer2Regs;extern struct CPUTIMER_VARS CpuTimer1;
extern struct CPUTIMER_VARS CpuTimer2;

28335之定时器原理相关推荐

  1. 实现quartz定时器及quartz定时器原理介绍

    今天研究定时器,在网上看了一篇不错的文章,推荐给大家! 实现quartz定时器及quartz定时器原理介绍

  2. 闫刚 nuttx的posix的定时器原理

    文章目录 定时器工作原理 资源 定时器模块初始化 定时器创建 启动定时器 定时器超时函数 定时器工作原理 定时器主要是使用waitdog进行实现,周期处理是通过timer_timeout进行处理 资源 ...

  3. JavaScript定时器原理分析

    JavaScript中的定时器大家基本在平时的开发中都遇见过吧,但是又有多少人去深入的理解其中的原理呢?下面我们就来分析一下定时器的实现原理. 一.储备知识 在我们在项目中一般会遇见过这样的两种定时器 ...

  4. 操作系统定时器原理分析(基于linux0.11)

    操作系统的定时器原理是,操作系统维护了一个定时器节点的链表,新增一个定时器节点时,设置一个jiffies值,这是触发定时中断的频率.linux0.11版本里是1秒触发100次,即10毫秒一次.加入新增 ...

  5. 嵌入式单片机基础篇(十)之Systick定时器原理及应用

    Systick定时器原理及应用 1.什么是Systick定时器? 回答: (1)ystick定时器,是一个简单的定时器,对于CM3,CM4内核芯片,都有Systick定时器. (2)Systick定时 ...

  6. java定时器的原理_spring定时器原理是什么?

    作为程序员来说,我们可能经常会使用到spring框架去实现各种各样的需求开发,其中的一项,定时器也是经常会被使用到的,那么你是否清楚其原理是什么呢? 首先我们来看看简单定时器实现方法:用Schedul ...

  7. libev源码解析——定时器原理

    本文将回答<libev源码解析--I/O模型>中抛出的两个问题.(转载请指明出于breaksoftware的csdn博客) 对于问题1:为什么backend_poll函数需要指定超时?我们 ...

  8. JavaScript定时器原理及高级使用

    JavaScript里面内置了两个定时器,一个是setTimeout()一个是setInterval().下面将由浅入深来理解一下定时器的工作原理. 使用方式: setTimeout() setTim ...

  9. STM32G4之高级定时器原理

    文章目录 前言 一.基本介绍 二.输入捕获通道原理 1.普通输入捕获 2.PWM模式 三.输出比较通道原理 PWM 输出模式 总结 前言 提示:以下是本篇文章正文内容 一.基本介绍 高级定时器是TIM ...

最新文章

  1. AWS EBS是 Elastic Block Store 的简写
  2. 开发日记-20190625 Linux系统管理技术手册(第二版) 第一章习题答案(个人版)
  3. 能用文件的安卓c语言,使用android NDK将.C 文件编译为 手机 可执行程序或者.so
  4. Dynpro F4的实现测试
  5. shiro+jwt进行认证和授权的解决方案代码实例
  6. Angular应用的angular.json文件字段一览
  7. css:hover伪类的使用
  8. sql注入语句示例大全_SQL Order By语句:示例语法
  9. Rust:剑指C++
  10. oracle 系统检查点,检查点(Checkpoint)优化及故障排除指南
  11. php文件名函数,详解php 获取文件名basename()函数的用法
  12. android sim卡命令,Android常用命令
  13. C# 5.0 Async函数的提示和技巧
  14. 关于C#的sqlite数据库操作类
  15. BP神经网络与RBF神经网络matlab代码实现
  16. html设置form居中,HTML中的表单Form实现居中效果
  17. React Native 参考资料 (转自简书)
  18. Micaps3.2二次开发实例教程-11
  19. @ELK集群环境部署搭建
  20. linux系统x11的Xorg,我的/etc/X11/xorg的设置

热门文章

  1. vulhub靶机joker渗透
  2. 女足世界杯的目标?贾秀全:说要拿冠军,别吓着_虎扑中国足球新闻
  3. v-infinite-scroll失效,v-infinite-scroll在弹窗中失效,在dialog中失效
  4. linux批量筛选序列变异位点,还在为微生物重测序变异检测发愁?samtools帮助你!...
  5. JQuery动画之滑入滑出动画
  6. Linux开机自启动程序死循环,无法进入系统
  7. FilterChain 和 Filter
  8. 过敏性鼻炎吃什么药好?怎么养?
  9. 乱弹OpenGL中的矩阵变换(上)
  10. 《大前端进阶 Node.js》系列 多进程模型底层实现(字节跳动被问)