×
单片机 > 单片机程序设计 > 详情

定时器使用小结

发布时间:2020-05-27 发布时间:
|
(3)定时器的捕获功能配置流程如下:

   流程精简:1、IC配置(设置捕获模式,通道、使能捕获中断)

                        2、中断向量的嵌套,以及对应的PIO口配置

                        3、中断服务函数的配置

1、IC配置(设置捕获模式,通道、使能捕获中断)

void  TIM3_Configuration(void) //定时器3初始化;输入捕获设置                                                           

 

       TIM_ICInitTypeDef  TIM_ICInitStructure;

         RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM3, ENABLE);

        

 

         TIM_ICInitStructure.TIM_Channel = TIM_Channel_2;//通道选择

         TIM_ICInitStructure.TIM_ICPolarity = TIM_ICPolarity_Rising;        //上升沿触发

         TIM_ICInitStructure.TIM_ICSelection = TIM_ICSelection_DirectTI;      //管教与寄存器的对应关系

         TIM_ICInitStructure.TIM_ICPrescaler = TIM_ICPSC_DIV1; //分频器

         TIM_ICInitStructure.TIM_ICFilter = 0x0;            //滤波设置

         TIM_PWMIConfig(TIM3, &TIM_ICInitStructure);     //PWM输入模式初始化

         //TIM_ICInit(TIM3, &TIM_ICInitStructure);

        

         TIM_SelectInputTrigger(TIM3, TIM_TS_TI2FP2);     //选择时钟触发源

        

         TIM_SelectSlaveMode(TIM3, TIM_SlaveMode_Reset);          //触发方式

        

         TIM_SelectMasterSlaveMode(TIM3, TIM_MasterSlaveMode_Enable);        //启动定时器的被动触发

        

         TIM_Cmd(TIM3, ENABLE);                 //启动tim2

        

         TIM_ITConfig(TIM3, TIM_IT_CC2, ENABLE);   //打开中断

}

2、中断向量的嵌套,以及对应的PIO口配置

void NVIC_Configuration(void)

       NVIC_InitTypeDef NVIC_InitStructure;

         //为EXTI_Line9使能并配置中断向量

NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2); //设置优先级分组:先占优先级2位,从优先级2位

         NVIC_InitStructure.NVIC_IRQChannel=TIM3_IRQn ;

         NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority=0;                           //抢占优先级0

         NVIC_InitStructure.NVIC_IRQChannelSubPriority=1;                                 //响应优先级1

         NVIC_InitStructure.NVIC_IRQChannelCmd=ENABLE;                                         //允许中断

         NVIC_Init(&NVIC_InitStructure); //写入设置}

3、中断服务函数的配置

void TIM3_IRQHandler(void)

   

         LCD12864_Put_Num(4,0,132454);

TIM_ClearITPendingBit(TIM3, TIM_IT_CC2);//中断的重点,进入后要清除相应的标志位以跳出中断

         i++;

         IC2Value=TIM_GetCapture2(TIM3);//捕获的是周期

         IC1Value=TIM_GetCapture1(TIM3);//捕获的是高电平

         if(i==500)

         {          i=0;

           LCD12864_Put_Num(1,0,72000000/IC2Value);

           LCD12864_Put_Num(2,0,72000000/IC1Value);

         }

}

关键字:定时器  使用小结 

『本文转载自网络,版权归原作者所有,如有侵权请联系删除』

热门文章 更多
PIC单片机的多路AD切换程序设计