打印

请教关于定时器的一个问题

[复制链接]
1750|8
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
闲来找无事|  楼主 | 2013-9-20 20:14 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
我用定时器1做定时500ms,然后驱动led灯亮灭。
我用MDK logic analysis看正确,但实际下载到电路板,定时变慢了很多,大约10倍
这个是什么原因呀?请教一下!

RCC时钟代码:

        //设置时钟缺省
        RCC_DeInit();
        //使能外部高速时钟
        RCC_HSEConfig(RCC_HSE_ON);

        //等待时钟起振
        if(SUCCESS==RCC_WaitForHSEStartUp())
        {
                //设置APB时钟  HCLK=sys clk
                RCC_HCLKConfig(RCC_SYSCLK_Div1);
                //设置低速APB时钟 =HCLK/2
                RCC_PCLK1Config(RCC_PLLSource_HSE_Div2);
                //设置高速APB时钟 =HCLK
                RCC_PCLK2Config(RCC_PLLSource_HSE_Div1);

                //设置PLL,72M
                RCC_PLLConfig(RCC_PLLSource_HSE_Div1,RCC_PLLMul_9);
                RCC_PLLCmd(ENABLE);
                //选择PLL输出为系统时钟
                RCC_SYSCLKConfig(RCC_SYSCLKSource_PLLCLK);       
        }
        else
        {
                while(1)
                {
                        ;//时钟出错
                }
        }
       
        RCC_APB2PeriphClockCmd( RCC_APB2Periph_GPIOB | RCC_APB2Periph_GPIOD | RCC_APB2Periph_TIM1,ENABLE);
        ;

然后是定时器代码:
        TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure;

        TIM_TimeBaseStructure.TIM_Period=5000;
        TIM_TimeBaseStructure.TIM_Prescaler=7200-1;
        TIM_TimeBaseStructure.TIM_CounterMode=TIM_CounterMode_Down;
        TIM_TimeBaseStructure.TIM_ClockDivision=0;

        TIM_TimeBaseInit(TIM1, & TIM_TimeBaseStructure);

        TIM_ClearFlag(TIM1, TIM_FLAG_Update);
        TIM_Cmd(TIM1, ENABLE);

        TIM_ITConfig(TIM1,TIM_IT_Update,ENABLE);
沙发
金融小数| | 2013-9-20 22:16 | 只看该作者
你使用的是哪款MCU都没说,怎么给你解答?

使用特权

评论回复
板凳
闲来找无事|  楼主 | 2013-9-20 23:27 | 只看该作者
金融小数 发表于 2013-9-20 22:16
你使用的是哪款MCU都没说,怎么给你解答?

stm32f103ve,我用定时器2可以实现,是不是定时器1做基本定时有什么不同地方?

使用特权

评论回复
地板
金融小数| | 2013-10-6 23:23 | 只看该作者
估计是if(SUCCESS==RCC_WaitForHSEStartUp())这里出了问题,

RCC_HSEConfig(RCC_HSE_ON);
//等待时钟起振
if(SUCCESS==RCC_WaitForHSEStartUp())
在这两条语句之间加点延时

使用特权

评论回复
5
xxiao6130| | 2013-10-7 08:02 | 只看该作者
闲来找无事 发表于 2013-9-20 23:27
stm32f103ve,我用定时器2可以实现,是不是定时器1做基本定时有什么不同地方? ...

应该没什么不同吧

使用特权

评论回复
6
hkcj| | 2013-10-7 10:22 | 只看该作者
应该是可以兼容的   楼主   查一查技术手册   

使用特权

评论回复
7
拿起书本| | 2013-10-8 10:17 | 只看该作者
这两个定时器是可以互补兼容的吧?没问题的的。

使用特权

评论回复
8
闲来找无事|  楼主 | 2013-10-29 15:18 | 只看该作者
找到问题了,是初始化定时器时重复计数没有赋值。
TIM_TimeBaseStructure.TIM_RepetitionCounter=0;
重复计数器只对高级定时器有效,当计数器溢出N次才产生一次响应,所以要设为0.

使用特权

评论回复
9
huangfeng33| | 2013-11-13 16:47 | 只看该作者
呵呵,我一般都不赋值的,感觉这样似乎简单一点

使用特权

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

本版积分规则

10

主题

85

帖子

5

粉丝