最近刚接一个项目,使用的是stm32f101rbt6单片机,现在遇到个问题,在没有开启TIM2的时候,或者说是在没有将TIM2的初始化程序放在main函数中,程序可以正常运行,显示器亦可以正常显示。但是在我把TIM2初始化程序添加到main函数中后,程序可以编译成功,但是显示器已经不能正常显示,而且通过debug,发现程序根本无法全速运行,全速运行按钮常亮不能变会。初始化程序应该没有错误,包括定时器初始化,NVIC初始化,定时器中断程序,等等,都是之前我用过的代码,就是添加到该工程之后就会出现这种问题。贴出定时器代码,哪位帮忙指导一下: void timer_config(void)
{
TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure;
NVIC_InitTypeDef NVIC_init_structure;
/*************TIMER2配置*********************/
//10ms中断
RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM2, ENABLE);
TIM_DeInit(TIM2);
TIM_TimeBaseStructure.TIM_Period = 9999;
TIM_TimeBaseStructure.TIM_Prescaler = 35;
TIM_TimeBaseStructure.TIM_ClockDivision = TIM_CKD_DIV1;
TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up;
TIM_TimeBaseInit(TIM2, &TIM_TimeBaseStructure);
/*预先清除所有中断位*/
TIM_ClearITPendingBit(TIM2,TIM_IT_Update);
/*TIM2溢出中断使能 */
TIM_ITConfig(TIM2, TIM_IT_Update, ENABLE );
/*TIM2使能 */
TIM_Cmd(TIM2, ENABLE);
NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2); //nvic 分组为group2,2位抢占优先级,2位响应优先级
NVIC_init_structure.NVIC_IRQChannel = TIM2_IRQn;
NVIC_init_structure.NVIC_IRQChannelPreemptionPriority = 0x02;
NVIC_init_structure.NVIC_IRQChannelSubPriority = 0x02;
NVIC_init_structure.NVIC_IRQChannelCmd = ENABLE;
NVIC_Init(&NVIC_init_structure);
} void TIM2_IT_Handler(void)
{
// static uint_s16 uled_counter;
// static uint_s16 release_counter;
if (TIM_GetITStatus(TIM2, TIM_IT_Update) != RESET) //10ms进一次中断
{
TIM_ClearITPendingBit(TIM2, TIM_IT_Update);
}
}
|