系统时钟采用外部8MHz,通过FLL倍频到 48MHz CLK1(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); //切换时钟后等待系统时钟稳定 } //============================================================================= |
RE:stm32定时器2 时钟问题
(定时器不倍频情况下)这里的时钟分频 是对那个时钟进行分频的啊