标题:
stm32f407定时器9中断--库函数版本
[打印本页]
作者:
Equator
时间:
2019-8-3 15:02
标题:
stm32f407定时器9中断--库函数版本
发现定时器8到定时器14的中断服务函数和其他定时器不太一样,写一下程序提醒一下自己。
//通用定时器9中断初始化
//arr:自动重装值。
//psc:时钟预分频数
//定时器溢出时间计算方法:Tout=((arr+1)*(psc+1))/Ft us.
//Ft=定时器工作频率,单位:Mhz
void TIM9_Int_Init(u16 arr,u16 psc)
{
TIM_TimeBaseInitTypeDef TIM_TimeBaseInitStructure;
NVIC_InitTypeDef NVIC_InitStructure;
RCC_APB2PeriphClockCmd(RCC_APB2Periph_TIM9,ENABLE); ///使能TIM9时钟
TIM_TimeBaseInitStructure.TIM_Period = arr; //自动重装载值
TIM_TimeBaseInitStructure.TIM_Prescaler=psc; //定时器分频
TIM_TimeBaseInitStructure.TIM_CounterMode=TIM_CounterMode_Up; //向上计数模式
TIM_TimeBaseInitStructure.TIM_ClockDivision=TIM_CKD_DIV1;
TIM_TimeBaseInit(TIM9,&TIM_TimeBaseInitStructure);//初始化TIM9
TIM_ITConfig(TIM9,TIM_IT_Update,ENABLE); //允许定时器9更新中断
TIM_Cmd(TIM9,ENABLE); //使能定时器9
NVIC_InitStructure.NVIC_IRQChannel=TIM1_BRK_TIM9_IRQn; //定时器9中断
NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority=0x00; //抢占优先级0
NVIC_InitStructure.NVIC_IRQChannelSubPriority=0x03; //子优先级3
NVIC_InitStructure.NVIC_IRQChannelCmd=ENABLE;
NVIC_Init(&NVIC_InitStructure);
}
//定时器9中断服务函数
void TIM1_BRK_TIM9_IRQHandler(void)
{
if(TIM_GetITStatus(TIM9,TIM_IT_Update)==SET) //溢出中断
{
//写需要的代码
}
TIM_ClearITPendingBit(TIM9,TIM_IT_Update); //清除中断标志位
}
复制代码
在主函数中调用 TIM9_Int_Init(5000-1,8400-1); //定时器时钟84M,分频系数8400,所以84M/8400=10Khz的计数频率,计数5000次为500ms
即可。
作者:
sailcloud
时间:
2021-5-31 11:48
APB2是168M 不是84M
作者:
lenvov
时间:
2021-7-22 09:18
高级定时器两倍频后世168M,通用定时器两倍频是84M
欢迎光临 (http://www.51hei.com/bbs/)
Powered by Discuz! X3.1