我使用的是stm32f103的芯片,在使用tim定时器时,碰到一个奇怪的现象。 使用如下代码时,能够正常的每200ms产生一次中断事件。 如果将红色的部分改为 TimInitStruct.TIM_ClockDivision = TIM_CKD_DIV2; 或TimInitStruct.TIM_ClockDivision = TIM_CKD_DIV4; 执行时仍然是200ms产生一次中断,不知何解? 如果从字面解释看,DIV2之后,应该是400ms产生一次中断才对呀 注:使用std3.3库函数 /* TIM3 clock enable */ RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM3, ENABLE); TimInitStruct.TIM_ClockDivision = TIM_CKD_DIV1; // 系统时钟72M,定时器基准频率APB1*2 TimInitStruct.TIM_Prescaler = 36000-1; // 计数频率为2KHz TimInitStruct.TIM_CounterMode = TIM_CounterMode_Up; // 向上计数 TimInitStruct.TIM_Period = 400; // ARR 72M/36K=2Khz 2K/400=5 1/5=200ms产生一次中断 TIM_TimeBaseInit(TIM3, &TimInitStruct); TIM_ClearFlag(TIM3,TIM_FLAG_Update); TIM_ITConfig(TIM3,TIM_IT_Update,ENABLE); TIM_Cmd(TIM3, ENABLE); //time3 NVIC_InitStructure.NVIC_IRQChannel = TIM3_IRQn; //time3 中断 优先级 显示刷新 NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 2; NVIC_InitStructure.NVIC_IRQChannelSubPriority = 2; NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE; NVIC_Init(&NVIC_InitStructure); |
RE:stm32 tim时钟分频的问题
你把这个也改一下,比如改为800,在同一频率下。这个决定输出的时间间隔。