初级会员

- 积分
- 95
- 金钱
- 95
- 注册时间
- 2019-1-8
- 在线时间
- 21 小时
|
10金钱
代码附上,系统时钟是168Mhz,定时器时钟是84Mhz分频8400,实际就是10000Hz,重装值是10000。然后就是配置中断服务函数。
现在的现象是第一次定时1S没问题,但是后面进入中断的时间就杂乱无章,无规律可言。
配置的中断优先级分组是4,没有贴出来。
- void TIM4_Init(void)
- {
- NVIC_InitTypeDef NVIC_InitStructure;
- TIM_TimeBaseInitTypeDef TIM_TimeBaseInitStructure;
- RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM4, ENABLE);
- NVIC_InitStructure.NVIC_IRQChannel=TIM4_IRQn;
- NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority=0;
- NVIC_InitStructure.NVIC_IRQChannelSubPriority=0;
- NVIC_InitStructure.NVIC_IRQChannelCmd=ENABLE;
- NVIC_Init(&NVIC_InitStructure);
- TIM_TimeBaseInitStructure.TIM_Period = 10000-1;
- TIM_TimeBaseInitStructure.TIM_Prescaler = 8400-1;
- TIM_TimeBaseInitStructure.TIM_ClockDivision = TIM_CKD_DIV1;
- TIM_TimeBaseInitStructure.TIM_CounterMode = TIM_CounterMode_Up;
- TIM_TimeBaseInit(TIM4, &TIM_TimeBaseInitStructure);
- // TIM_ARRPreloadConfig(TIM4, ENABLE);
- // TIM_ClearFlag(TIM4, TIM_FLAG_Update);
- TIM_ITConfig(TIM4, TIM_IT_Update,ENABLE);
- TIM_Cmd(TIM4,ENABLE);
- }
- void TIM4_IRQHandler(void)
- {
- if(TIM_GetITStatus(TIM4, TIM_IT_Update)!= RESET)
- {
- TIM_ClearITPendingBit(TIM4, TIM_IT_Update);
- }
- }
复制代码
|
|