您的位置: OpenADSP社区论坛 -> Blackfin专区 -> 新手上路 -> BF51X技术支持专区 -> BF518的Timer详解
本帖共有712个阅读者
发表帖子 发表投票 回复主题
BF518的Timer详解
尊贵身份标志
OpenADSP(管理员)
OpenADSP
头衔:社区公民
帮派:无帮无派
帖数:5195
金钱:34806
积分:6378
注册时间:2011/6/7
楼主信息 | 留言 | Email | 主页 | 编辑 | 管理 | 离线
BF518的Timer详解

接口功能介绍

ADSP-BF51x 上有3 个通用定时器,每个定时器有三种模式:
1. 脉冲宽度调制模式(PWM_OUT)
2. 脉冲宽度计数捕获模式(WDTH_CAP)
3. 外部事件模式(EXT_CLK)

接口寄存器说明

TIMERx_CONFIG :定时器配置寄存器,用于设置定时器工作模式
TIMERx_WIDTH :定时器宽度寄存器,设置输出波形脉冲宽度
TIMERx_PERIOD :定时器周期寄存器,设置输出波形的周期
TIMERx_COUNTER :定时器计数寄存器,读取捕获的脉冲数量
TIMER_ENABLE :定时器使能寄存器
TIMER_DISABLE :定时器关闭寄存器
TIMER_STATUS :定时器状态寄存器

例子代码分析

*pTIMER0_CONFIG = 0x0019;                 //配置定时器为PWM 模式
*pTIMER0_PERIOD = 0x00800000;           //设置周期为0x00800000 个系统时钟
*pTIMER0_WIDTH = 0x00400000;            //设置脉宽为0x00400000 个系统时钟
*pTIMER_ENABLE = 0x0001;                   //使能Timer0

*pSIC_IAR0 = 0xffffffff;
*pSIC_IAR1 = 0xffffffff;
*pSIC_IAR2 = 0xfffffff5;                            //配置中断等级数据为4
register_handler(ik_ivg12, TIMER0_ISR);     //注册中断等级为12,标识符为TIMER0_ISR
*pSIC_IMASK1 = 0x00000001; //开启中断
EX_INTERRUPT_HANDLER(TIMER0_ISR) //标识符为TIMER0_ISR 的中断函数
{
*pTIMER_STATUS = 0x0001;                      //清除定时器中断标志
printf("timer0 interrupt !\n");                         //打印信息
}



我是OP...
等级:管理员 参考IP地址:*.*.*.*
2012/6/5 16:14:57
尊贵身份标志
OpenADSP(管理员)
OpenADSP
头衔:社区公民
帮派:无帮无派
帖数:5195
金钱:34806
积分:6378
注册时间:2011/6/7
1信息 | 留言 | Email | 主页 | 编辑 | 管理 | 离线

源码下载

上传的附件
   2012651616473.rar [ 836.05 KB ]

代码实现功能

代码实现了将定时器配置为 PWM_OUT 模式,通过定时器中断来定时一个0x00800000 个系统的时间长度,定时完成后,在中断内打印信息。定时器没有单独的计时功能,所以如果计时,可以采用 PWM_OUT 模式,利用定时器中断来进行计时,同时在芯片的TIMER0 管脚上,会有PWM 波形输出。

测试结果

上传的图片
  20126516171073.jpg [ 5.99 KB 221×103 ] (缩略时请点击查看原图)

 


我是OP...
等级:管理员 参考IP地址:*.*.*.*
2012/6/5 16:17:15
Powered by OpenADSP Copyright © 2010 www.Openadsp.com. All rights reserved.159505 Call, 1 Queries, Processed in 0.046875 second(s),