|
用STM32F030CC芯片做TIM3的定时中断时,中断处理服务函数无法进去,在定时器配置上不知道有没有遗漏的地方。芯片系统时钟是48M,TIM3 500ms进一次中断,中断处理函数是对LED灯进行翻转。下面是我的TIM3初始化,和中断处理函数,大家方便的时候还望帮我看一看,打扰了 void TIM3_Init(void) { TIM_TimeBaseInitTypeDef TIM_TimeBaseInitStructure; NVIC_InitTypeDef NVIC_InitStructure; RCC_APB1PeriphResetCmd(RCC_APB1Periph_TIM3, ENABLE); //tim3时钟使能,APB时钟48M TIM_TimeBaseInitStructure.TIM_ClockDivision = TIM_CKD_DIV1; //分频系数为1 TIM_TimeBaseInitStructure.TIM_CounterMode = TIM_CounterMode_Up; //向上计数 TIM_TimeBaseInitStructure.TIM_Period = 499; TIM_TimeBaseInitStructure.TIM_Prescaler = 47999; //定时500ms TIM_TimeBaseInit(TIM3, &TIM_TimeBaseInitStructure); TIM_ClearITPendingBit(TIM3,TIM_IT_Update); TIM_ITConfig(TIM3,TIM_IT_Update,ENABLE); //允许定时器3更新中断 TIM_Cmd(TIM3,ENABLE); //使能定时器3 NVIC_InitStructure.NVIC_IRQChannel = TIM3_IRQn; //定时器3中断 NVIC_InitStructure.NVIC_IRQChannelPriority = 0; //优先级0 NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE; NVIC_Init(&NVIC_InitStructure); } void TIM3_IRQHandler(void) { if(TIM_GetITStatus(TIM3,TIM_IT_Update) != RESET) //溢出中断 { LED2_Turn(); } TIM_ClearITPendingBit(TIM3,TIM_IT_Update); //清除中断标志位 } |
微信公众号
手机版
RCC_APB1PeriphResetCmd(RCC_APB1Periph_TIM3, ENABLE); //tim3时钟使能,APB时钟48M
标准库中,开时钟的函数应该是RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM3, ENABLE)吧,你试试是不是这个原因呢
评分
查看全部评分
应该使用:RCC_APB1PeriphClockCmd 函数。
评分
查看全部评分
评分
查看全部评分