打印
[技术问答]

[M051] 关于定时器定时时间设置的问题

[复制链接]
3271|9
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
lussby|  楼主 | 2014-5-22 08:43 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

求高手指点下M051的定时器0定时时间怎么设置,我采用的是外部晶振12MHZ的,现在用的程序如下:程序实现了定时,外部中断,串口,但是我不知道时间怎么设置,现在要每1US中断一次,希望知道怎么设置的朋友能够帮下我的忙,非常谢谢!!! Timer0.rar (850.18 KB)
沙发
springvirus| | 2014-5-22 08:52 | 只看该作者
void TMR0_Init(void)
{

        _TIMER_RESET(TIMER0);       

        NVIC_EnableIRQ(TMR0_IRQn);

        TIMER0->TCMPR = DISPLAY_MOVING_200MS;
       
        //Timeout Period = (Tclk)*(8bit prescaler + 1)*(24bit TCMP);
       

        TIMER0->TCSR = TIMER_TCSR_IE_Msk | TIMER_TCSR_MODE_PERIODIC | TIMER_TCSR_TDR_EN_Msk | TIMER_TCSR_PRESCALE(1);
       
}

TIMER0->TCMPR就是根据溢出时间而计算的值,相关设定还涉及到SYS_Init()

使用特权

评论回复
板凳
lussby|  楼主 | 2014-5-22 09:17 | 只看该作者
springvirus 发表于 2014-5-22 08:52
void TMR0_Init(void)
{

恩,非常感谢你的回贴,你能帮我看下我的程序吗?上面有链接,谢谢。

使用特权

评论回复
地板
springvirus| | 2014-5-22 10:43 | 只看该作者
lussby 发表于 2014-5-22 09:17
恩,非常感谢你的回贴,你能帮我看下我的程序吗?上面有链接,谢谢。

//Timeout Period = (Tclk)*(8bit prescaler + 1)*(24bit TCMP);
拿这个,计算1us需要的TCMP值就可以了啊

使用特权

评论回复
5
springvirus| | 2014-5-22 10:44 | 只看该作者
lussby 发表于 2014-5-22 09:17
恩,非常感谢你的回贴,你能帮我看下我的程序吗?上面有链接,谢谢。

很多东西都是在捣鼓,折腾中熟悉和掌握的~~~

使用特权

评论回复
6
haolaishi| | 2014-5-22 14:52 | 只看该作者
定时器时钟源,然后分频,你直接用库函数就好,里面可以设置的,省的自己计算

使用特权

评论回复
评论
lussby 2014-6-13 15:54 回复TA
评价很到味 
7
haolaishi| | 2014-5-26 07:51 | 只看该作者
楼主好了没,这几天没时间上网!

使用特权

评论回复
8
lussby|  楼主 | 2014-5-26 08:16 | 只看该作者
haolaishi 发表于 2014-5-26 07:51
楼主好了没,这几天没时间上网!

恩恩,好了。谢谢你!:)

使用特权

评论回复
9
Dick00| | 2014-5-26 08:32 | 只看该作者
定时器还算简单吧注意下时钟频率,看看有没有分频和倍频,如果只做简单的延时的话用系统定时器也比较方便。。。

使用特权

评论回复
10
andila| | 2014-6-4 16:15 | 只看该作者
学习

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

14

主题

144

帖子

1

粉丝