打印

STM8L101F3P 定时器,火死人了。

[复制链接]
1637|3
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
MakeBetter|  楼主 | 2013-9-30 14:57 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
调这个定时器调了一晚了,到现在还是没弄好。发现它的预分频无效?有这回事吗?
代码:
void TimerInit(unsigned short pTime)
{
    volatile unsigned long vTick;

    vTick = ((gvSystemClk/128) * ((unsigned long)pTime) )/ 32768;
   
    CLK_PeripheralClockConfig(CLK_Peripheral_TIM2, ENABLE);
    TIM2_DeInit();
    TIM2_TimeBaseInit(TIM2_Prescaler_128, TIM2_CounterMode_Up, vTick);
    TIM2->CR1 |= 0x08;      //一次计数
    TIM2_Cmd(ENABLE);                                       //开启时钟
}
unsigned short TimerRead(void)
{
    if(TIM2->CR1 & 0x01)    //如果当前还是使能的,返回1,否则返回0
    {
        return 1;
    }
    else
    {
        return 0;
    }
}
main()
{
.....其它代码
   while(1)
    {
        vI = 128;
        while(vI--)
        {
            TimerInit(32768);
           
            while(TimerRead())
            {
            }
        }
        PortSet(Pin_State);   //引脚置位  --自己封装的函数
        
         vI = 128;
        while(vI--)
        {
            TimerInit(32768);
            while(TimerRead())
            {
            }
        }
        PortClr(Pin_State);     //引脚复位
}

不管我预分频值设到多少,就是一样的速度。火死人了,莫非是有我没注意到的地方?
请高手指点!~
沙发
MakeBetter|  楼主 | 2013-9-30 14:59 | 只看该作者
在主函数里,我只有重复128次定时,才和我的结果一样,说明根本没有给我分频。换板子效果一样,怎么会这样?

使用特权

评论回复
板凳
MakeBetter|  楼主 | 2013-10-1 23:02 | 只看该作者
原因找到,要开启分频功能,不需要开启事件。

使用特权

评论回复
地板
outstanding| | 2013-10-2 11:49 | 只看该作者
MakeBetter 发表于 2013-10-1 23:02
原因找到,要开启分频功能,不需要开启事件。

使用特权

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

本版积分规则

61

主题

506

帖子

0

粉丝