您的位置: OpenADSP社区论坛 -> Blackfin专区 -> 新手上路 -> BF53x技术支持专区 -> Blackfin入门教程---BF53x_Timer
本帖共有909个阅读者
发表帖子 发表投票 回复主题
Blackfin入门教程---BF53x_Timer
尊贵身份标志
andy(论坛版主)
andy
头衔:社区公民
帮派:无帮无派
帖数:2287
金钱:11132
积分:2263
注册时间:2011/6/8
楼主信息 | 留言 | Email | 主页 | 编辑 | 管理 | 离线
Blackfin入门教程---BF53x_Timer

接口功能介绍

ADSP-BF53x上有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 = 0xfffffff4;                                 //配置中断等级数据为4

       register_handler(ik_ivg11, TIMER0_ISR);           //注册中断等级为11,标识符为TIMER0_ISR

       *pSIC_IMASK = 0x00010000;

EX_INTERRUPT_HANDLER(TIMER0_ISR) //标识符为TIMER0_ISR的中断函数

{

       *pTIMER_STATUS = 0x0001;                   //清除定时器中断标志

       printf("timer0 interrupt !\n");                      //打印信息

}

代码实现功能

代码实现了将定时器配置为PWM_OUT模式,通过定时器中断来定时一个0x00800000个系统的时间长度,定时完成后,在中断内打印信息。

定时器没有单独的计时功能,所以如果计时,可以采用PWM_OUT模式,利用定时器中断来进行计时,同时在芯片的TIMER0管脚上,会有PWM波形输出。

测试结果


上传的附件
   2011682041952.rar [ 310.53 KB ]


这家伙很懒,什么也没有留下!
等级:论坛版主 参考IP地址:*.*.*.*
2011/6/8 20:04:25
blackfindsp(论坛新手)
blackfindsp
头衔:社区公民
帮派:无帮无派
帖数:28
金钱:364
积分:38
注册时间:2012/3/26
1信息 | 留言 | Email | 主页 | 编辑 | 管理 | 离线
怎样使用内核定时器   实现定时1S钟啊?  有没有简单的程序,我试了就是不行!

我行故我在
等级:论坛新手 参考IP地址:*.*.*.*
2012/7/27 19:01:02
Powered by OpenADSP Copyright © 2010 www.Openadsp.com. All rights reserved.154334 Call, 1 Queries, Processed in 0.015625 second(s),