定时器原理(包含软定时器设计)技术方案.ppt

定时器原理(包含软定时器设计)技术方案.ppt

  1. 1、本文档共30页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
配置定时器流程 选择一个定时器(0,1,2,3,4) 设置预分频值(TCFG0) 设置分频值(TCFG1) 设置计数初始值(TCNTBn) 设置TCON(手动更新,自动加载) 清除TCON的手动更新 开启定时器 开启定时器中断(定时器中断使能) 注册定时器中断服务函数 代码分析 rTCFG0 = 0xFF00FF; rTCFG0 |= 0xf900; // prescaler等于249 rTCFG1 = ~0xF0000; rTCFG1 |= 0x20000; //divider等于8,则设置定时器4的时钟频率为25kHz rTCNTB4 = 12500; //让定时器4每隔0.5秒中断一次 rTCON = ~0xF00000; rTCON |= 0x700000; rTCON = ~0x200000 ; //定时器4开始工作 硬件驱动 硬件接口函数: 1、 int TIMER_Init(int nTimerID,int nDiv0,int nDiv1)//配置预分频比 2、int TIMER_Create(... ...) //配置定时器 3、int TIMER_Destory(int nTimerID)//注销定时器中断 4、void TIMER_Start(int nTimerID)//启动定时器 5、void TIMER_Stop(int nTimerID)//停止定时器 软定时器封装 软定时器: void TIMER_TS_Init(... ...) int TIMER_TS_Create(... ...) int TIMER_TS_Destory(int nTimerId) int TIMER_TS_Start(int nTimerId) int TIMER_TS_Stop(int nTimerId) int TIMER_TS_ResetTimeout(int nTimerId, int nTimerOut) int TIMER_TS_Dispatch() 第五章 定时器 PWM定时器 本章目标 2440PWM定时器的基本操作 定时器中断操作 软定时器的封装 特性 – 五个 16 位定时器 – 两个8 位预分频器和两个4 位分频器 – 可编程输出波形的占空比控制(PWM) – 自动重载模式或单脉冲模式 – 死区发生 什么是定时器 定时器的本质就是一个递减的计数器, 根据触发条件在计数器的值达到触发条件的时 候,触发事件的发生。 特性 概述 S3C2440A 有 5 个 16 位定时器。其中定时器 0、1、2 和 3 具有脉宽调制(PWM)功能。定时器 4 是一个无输出引脚的内部定时器。定时器0还包含用于大电流驱动的死区发生器。 定时器 0和 1共用一个8位预分频器,定时器2、3和 4 共用另外的8 位预分频器。每个定时器都有一个可以生成5 种不同分频信号(1/2,1/4,1/8,1/16 和TCLK)的时钟分频器。每个定时器模块从相应8 位预分频器得到时钟的时钟分频器中得到其自己的时钟信号。8 位预分频器是可编程的,并且按存储在 TCFG0 和 TCFG1 寄存器中的加载值来分频PCLK。 功能框图 定时器0 定时器1 定时器2 定时器3 定时器4 比定时器4 多了具有 脉宽调制 (PWM) 功能 无输出引脚 内部定时器 比定时器1 多了死区 发生器 步骤1:配置预分频器和分频值 (TCFG0,TCFG1) 目的产生一定的定时器时钟周期 时钟频率计算公式: 定时器输入时钟频率 = PCLK / {预分频值+1} / {分频值} TCFGn 定时器配制寄存器 0(TCFG0) 位[7:0]、位[15:8]分别用于控制预分频器0、1,范围0~255。经过预分频器出来的始终频率:PCLK / {预分频值+1} 定时器配制寄存器 1(TCFG1) 经过预分频器的始终将被2、4、8、16分频 示例:假设PCLK=50M,预分频值=249,分频值=8 时钟频率 = 50M/(249+1)/8=25Khz 时钟周期=1/25KHZ = 40us TCFG0 定时器配制寄存器 0(TCFG0) TCFG1 定时器配制寄存器 1(TCFG1) 步骤2:配置计数初始值 (TCNTBn) 目的产生一个计数初始值 (注意:这里暂没有设置比较值,不产生PWM脉冲控制) 初始值计算公式: 初始值 = 定时时间 / 时钟周期 问:假设时钟周期已设置40us,若要定时500ms产生一次中断,初始值等于多少? 初始值 = 500ms/40us=12500 TCNTBn、TCMPBn 定时器 计数寄存

您可能关注的文档

文档评论(0)

奇缘之旅 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档