|
發(fā)現(xiàn)定時(shí)器8到定時(shí)器14的中斷服務(wù)函數(shù)和其他定時(shí)器不太一樣,寫(xiě)一下程序提醒一下自己。
- //通用定時(shí)器9中斷初始化
- //arr:自動(dòng)重裝值。
- //psc:時(shí)鐘預(yù)分頻數(shù)
- //定時(shí)器溢出時(shí)間計(jì)算方法:Tout=((arr+1)*(psc+1))/Ft us.
- //Ft=定時(shí)器工作頻率,單位:Mhz
- void TIM9_Int_Init(u16 arr,u16 psc)
- {
- TIM_TimeBaseInitTypeDef TIM_TimeBaseInitStructure;
- NVIC_InitTypeDef NVIC_InitStructure;
- RCC_APB2PeriphClockCmd(RCC_APB2Periph_TIM9,ENABLE); ///使能TIM9時(shí)鐘
- TIM_TimeBaseInitStructure.TIM_Period = arr; //自動(dòng)重裝載值
- TIM_TimeBaseInitStructure.TIM_Prescaler=psc; //定時(shí)器分頻
- TIM_TimeBaseInitStructure.TIM_CounterMode=TIM_CounterMode_Up; //向上計(jì)數(shù)模式
- TIM_TimeBaseInitStructure.TIM_ClockDivision=TIM_CKD_DIV1;
- TIM_TimeBaseInit(TIM9,&TIM_TimeBaseInitStructure);//初始化TIM9
- TIM_ITConfig(TIM9,TIM_IT_Update,ENABLE); //允許定時(shí)器9更新中斷
- TIM_Cmd(TIM9,ENABLE); //使能定時(shí)器9
- NVIC_InitStructure.NVIC_IRQChannel=TIM1_BRK_TIM9_IRQn; //定時(shí)器9中斷
- NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority=0x00; //搶占優(yōu)先級(jí)0
- NVIC_InitStructure.NVIC_IRQChannelSubPriority=0x03; //子優(yōu)先級(jí)3
- NVIC_InitStructure.NVIC_IRQChannelCmd=ENABLE;
- NVIC_Init(&NVIC_InitStructure);
- }
- //定時(shí)器9中斷服務(wù)函數(shù)
- void TIM1_BRK_TIM9_IRQHandler(void)
- {
- if(TIM_GetITStatus(TIM9,TIM_IT_Update)==SET) //溢出中斷
- {
- //寫(xiě)需要的代碼
- }
- TIM_ClearITPendingBit(TIM9,TIM_IT_Update); //清除中斷標(biāo)志位
- }
復(fù)制代碼 在主函數(shù)中調(diào)用 TIM9_Int_Init(5000-1,8400-1); //定時(shí)器時(shí)鐘84M,分頻系數(shù)8400,所以84M/8400=10Khz的計(jì)數(shù)頻率,計(jì)數(shù)5000次為500ms
即可。
|
評(píng)分
-
查看全部評(píng)分
|