我用定时器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);
|