sgfwin 发表于 2012-3-18 10:20:36

stm32定时器2 时钟问题 (结题 已解决)

系统时钟采用外部8MHz,通过FLL倍频到 48MHz;PCLK1(APB1) = HCLK/2应该是24MHz,也就是定时器2的时钟为24M.但是实际调试的时候发现时钟快了,本来应该是1ms进中断1次,但是现实0.5ms进一次中断函数。难道现在的定时器2时钟频率仍然为48MHz吗 ?
不懂啊 。


定时器时钟配置:

TIM_TimeBaseStructure.TIM_Period=(1000-1);                //ARR的值周期1ms
TIM_TimeBaseStructure.TIM_Prescaler=(24-1);               //时钟预分频数时钟频率=24MHz/24000=1kHz   
TIM_TimeBaseStructure.TIM_ClockDivision=TIM_CKD_DIV1;   //TIM2时钟1分频



//=================================================================================================

if(HSEStartUpStatus==SUCCESS)                //如果外部晶振启动成功,则进行下一步操作
    {                                                               
                RCC_HCLKConfig(RCC_SYSCLK_Div1);         //设置HCLK(AHB高速时钟)=SYSCLK(系统时钟)      
                //设置高速AHB时钟(PCLK2)
      RCC_PCLK2Config(RCC_HCLK_Div1);               //PCLK2(APB2)= HCLK设置高速总线2时钟=高速总线时钟
                //设置低速AHB时钟(PCLK1)
                RCC_PCLK1Config(RCC_HCLK_Div2);               //PCLK1(APB1) = HCLK/2 设置低速总线1时钟=高速时钟的二分频
                //PLL的输入时钟 = HSE时钟频率 x 6 =48M
         RCC_PLLConfig(RCC_PLLSource_HSE_Div1, RCC_PLLMul_6);   //设置PLL                                                      
      RCC_PLLCmd(ENABLE);                                           //启动PLL=外部高速时钟      
      while(RCC_GetFlagStatus(RCC_FLAG_PLLRDY) == RESET);         //等待PLL稳定      
      RCC_SYSCLKConfig(RCC_SYSCLKSource_PLLCLK);             //将锁相环输出设置为系统时钟         
      while(RCC_GetSYSCLKSource()!=0x08);                  //切换时钟后等待系统时钟稳定
   }               
//=============================================================================

sgfwin 发表于 2012-3-18 10:33:27

RE:stm32定时器2 时钟问题

TIM_TimeBaseStructure.TIM_Prescaler=(24-1);   //时钟预分频数

(定时器不倍频情况下)这里的时钟分频 是对那个时钟进行分频的啊
页: [1]
查看完整版本: stm32定时器2 时钟问题 (结题 已解决)