28335之定时器原理
单片机的定时器就很简单,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之定时器原理相关推荐
- 实现quartz定时器及quartz定时器原理介绍
今天研究定时器,在网上看了一篇不错的文章,推荐给大家! 实现quartz定时器及quartz定时器原理介绍
- 闫刚 nuttx的posix的定时器原理
文章目录 定时器工作原理 资源 定时器模块初始化 定时器创建 启动定时器 定时器超时函数 定时器工作原理 定时器主要是使用waitdog进行实现,周期处理是通过timer_timeout进行处理 资源 ...
- JavaScript定时器原理分析
JavaScript中的定时器大家基本在平时的开发中都遇见过吧,但是又有多少人去深入的理解其中的原理呢?下面我们就来分析一下定时器的实现原理. 一.储备知识 在我们在项目中一般会遇见过这样的两种定时器 ...
- 操作系统定时器原理分析(基于linux0.11)
操作系统的定时器原理是,操作系统维护了一个定时器节点的链表,新增一个定时器节点时,设置一个jiffies值,这是触发定时中断的频率.linux0.11版本里是1秒触发100次,即10毫秒一次.加入新增 ...
- 嵌入式单片机基础篇(十)之Systick定时器原理及应用
Systick定时器原理及应用 1.什么是Systick定时器? 回答: (1)ystick定时器,是一个简单的定时器,对于CM3,CM4内核芯片,都有Systick定时器. (2)Systick定时 ...
- java定时器的原理_spring定时器原理是什么?
作为程序员来说,我们可能经常会使用到spring框架去实现各种各样的需求开发,其中的一项,定时器也是经常会被使用到的,那么你是否清楚其原理是什么呢? 首先我们来看看简单定时器实现方法:用Schedul ...
- libev源码解析——定时器原理
本文将回答<libev源码解析--I/O模型>中抛出的两个问题.(转载请指明出于breaksoftware的csdn博客) 对于问题1:为什么backend_poll函数需要指定超时?我们 ...
- JavaScript定时器原理及高级使用
JavaScript里面内置了两个定时器,一个是setTimeout()一个是setInterval().下面将由浅入深来理解一下定时器的工作原理. 使用方式: setTimeout() setTim ...
- STM32G4之高级定时器原理
文章目录 前言 一.基本介绍 二.输入捕获通道原理 1.普通输入捕获 2.PWM模式 三.输出比较通道原理 PWM 输出模式 总结 前言 提示:以下是本篇文章正文内容 一.基本介绍 高级定时器是TIM ...
最新文章
- AWS EBS是 Elastic Block Store 的简写
- 开发日记-20190625 Linux系统管理技术手册(第二版) 第一章习题答案(个人版)
- 能用文件的安卓c语言,使用android NDK将.C 文件编译为 手机 可执行程序或者.so
- Dynpro F4的实现测试
- shiro+jwt进行认证和授权的解决方案代码实例
- Angular应用的angular.json文件字段一览
- css:hover伪类的使用
- sql注入语句示例大全_SQL Order By语句:示例语法
- Rust:剑指C++
- oracle 系统检查点,检查点(Checkpoint)优化及故障排除指南
- php文件名函数,详解php 获取文件名basename()函数的用法
- android sim卡命令,Android常用命令
- C# 5.0 Async函数的提示和技巧
- 关于C#的sqlite数据库操作类
- BP神经网络与RBF神经网络matlab代码实现
- html设置form居中,HTML中的表单Form实现居中效果
- React Native 参考资料 (转自简书)
- Micaps3.2二次开发实例教程-11
- @ELK集群环境部署搭建
- linux系统x11的Xorg,我的/etc/X11/xorg的设置
热门文章
- vulhub靶机joker渗透
- 女足世界杯的目标?贾秀全:说要拿冠军,别吓着_虎扑中国足球新闻
- v-infinite-scroll失效,v-infinite-scroll在弹窗中失效,在dialog中失效
- linux批量筛选序列变异位点,还在为微生物重测序变异检测发愁?samtools帮助你!...
- JQuery动画之滑入滑出动画
- Linux开机自启动程序死循环,无法进入系统
- FilterChain 和 Filter
- 过敏性鼻炎吃什么药好?怎么养?
- 乱弹OpenGL中的矩阵变换(上)
- 《大前端进阶 Node.js》系列 多进程模型底层实现(字节跳动被问)