赞
踩
- #include "stm32f10x.h" // Device header
-
- extern uint16_t Num;
- void Timer_Init(void)
- {
- RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM2,ENABLE);//开启时钟
-
- TIM_InternalClockConfig(TIM2);//选择时基单元的时钟
-
- TIM_TimeBaseInitTypeDef TIM_TimeBaseInitStructure;
- TIM_TimeBaseInitStructure.TIM_ClockDivision = TIM_CKD_DIV1;//配置采样频率(滤波器),消除抖动;
- TIM_TimeBaseInitStructure.TIM_CounterMode=TIM_CounterMode_Up;//向上计数
- TIM_TimeBaseInitStructure.TIM_Period=10000-1;//ARR自动重装器的值
- TIM_TimeBaseInitStructure.TIM_Prescaler=7200-1;//预分频器的值 72MHz/7200/10000=1
- TIM_TimeBaseInitStructure.TIM_RepetitionCounter=0;//重复计数器的值(高级计数器才需要,目前不需要用给0即可)
- TIM_TimeBaseInit(TIM2,&TIM_TimeBaseInitStructure);//时基单元配置完毕 更新事件和更新中断是同时发生的,
-
- TIM_ClearFlag(TIM2,TIM_FLAG_Update);//清除更新事件带来的更新中断标志位的变化,否则会导致上电立刻进入中断
- TIM_ITConfig(TIM2,TIM_IT_Update,ENABLE);//使能中断;开通更新中断到NVIC的通路
-
- NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);
- NVIC_InitTypeDef NVIC_InitStruct;
- NVIC_InitStruct.NVIC_IRQChannel=TIM2_IRQn;//定时器2在NVIC里的通道
- NVIC_InitStruct.NVIC_IRQChannelCmd=ENABLE;
- NVIC_InitStruct.NVIC_IRQChannelPreemptionPriority=2;
- NVIC_InitStruct.NVIC_IRQChannelSubPriority=1;
- NVIC_Init(&NVIC_InitStruct);
-
- TIM_Cmd(TIM2,ENABLE);//开启定时器;
- }
- void TIM2_IRQHandler(void)
- {
- if (TIM_GetITStatus(TIM2,TIM_IT_Update)==SET)
- {
- Num++;
- TIM_ClearITPendingBit(TIM2,TIM_IT_Update);
- }
-
- }

Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。