我的配置是这样的
// TIM3 configuration
TIM_TimeBaseStructure.TIM_Period = 5000 ; // 自动重装载寄存器周期的值 ; 50ms进一次中断
TIM_TimeBaseStructure.TIM_Prescaler = 720; // 设置了用来作为TIM2时钟频率除数的预分频值。
TIM_TimeBaseStructure.TIM_ClockDivision = 0x0; // 设置了时钟分割。
TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up; // TIM向上计数模式 ;
TIM_TimeBaseInit(TIM3, &TIM_TimeBaseStructure); // 初始化TIM2的时间基数单位 ;
TIM_OCInitStructure.TIM_OCMode = TIM_OCMode_Timing; // TIM2输出比较时间模式 ;
TIM_OCInitStructure.TIM_Pulse = 0x0; // 设置了待装入捕获比较寄存器的脉冲值。
TIM_OC1Init(TIM3, &TIM_OCInitStructure);
TIM_Cmd(TIM3, ENABLE); // 使能TIM3外设 ;
TIM_PrescalerConfig(TIM3, 720, TIM_PSCReloadMode_Immediate); // 设置TIM3预分频为0xEA5F即时装入 ;
TIM_ClearFlag(TIM3, TIM_FLAG_Update);
TIM_ITConfig(TIM3, TIM_IT_Update, ENABLE); // 使能TIM3中断源 ;
/****************************************************************************************************/
以下是时钟配置
/* Enable HSE */
RCC_HSEConfig(RCC_HSE_ON);//8M
/* Wait till HSE is ready */
while (RCC_GetFlagStatus(RCC_FLAG_HSERDY) == RESET);
/* Enable Prefetch Buffer */
FLASH_PrefetchBufferCmd(FLASH_PrefetchBuffer_Enable);
/* Flash 2 wait state */
FLASH_SetLatency(FLASH_Latency_2);
/* HCLK = SYSCLK */
RCC_HCLKConfig(RCC_SYSCLK_Div1);
/* PCLK2 = HCLK */
RCC_PCLK2Config(RCC_HCLK_Div1);
/* PCLK1 = HCLK/2 */
RCC_PCLK1Config(RCC_HCLK_Div2);
/* PLLCLK = 8MHz * 9 = 72 MHz */
RCC_PLLConfig(RCC_PLLSource_HSE_Div1, RCC_PLLMul_9);
/* Enable PLL */
RCC_PLLCmd(ENABLE);
/* Wait till PLL is ready */
while(RCC_GetFlagStatus(RCC_FLAG_PLLRDY) == RESET);
/* Select PLL as system clock source */
RCC_SYSCLKConfig(RCC_SYSCLKSource_PLLCLK);
/* Wait till PLL is used as system clock source */
while(RCC_GetSYSCLKSource() != 0x08);
/**************************************************************************/
此时我的定时器中断的周期应该是
【(5000+1)*(720+1)】/72M 大约是50ms进一次中断,但是实际上差不多0.5秒进一次中断 ,请大佬帮我解答一下
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
一周热门 更多>