当前位置:首页 > STM32定时器用作外部脉冲计数器
STM32定时器用作外部脉冲计数器
STM32的定时器只有ETR脚有计数功能,本文以TIM2为例,即外部脉冲信号需接在32的PA0脚上。 下面是TIM2的初始化函数(基于V3.5.0库函数):
void TIM2_Count_Init(void) {
TIM_TimeBaseInitTypeDefTIM_TimeBaseStructure;
RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM2, ENABLE); //使能TIM2时钟
TIM_DeInit(TIM2);//初始化定时器2 TIM2
TIM_TimeBaseStructure.TIM_Period = 0xFFFF; //设定计数器自动重装值 TIM_TimeBaseStructure.TIM_Prescaler =0x00;
//预分频器,2MHz计数
TIM_TimeBaseStructure.TIM_ClockDivision = 0x0; //设置时钟分割:TDTS = Tck_tim
TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up; //TIM向上计数模式
TIM_TimeBaseInit(TIM2, &TIM_TimeBaseStructure); //根据TIM_TimeBaseInitStruct中指定的参数初始化TIMx的时间基数单位 TIM_ETRClockMode2Config(TIM2,
TIM_ExtTRGPSC_OFF,TIM_ExtTRGPolarity_NonInverted, 0); TIM_SetCounter(TIM2, 0);//把TIM2的值设置为0 TIM_Cmd(TIM2, ENABLE);//使能TIM2的更新中断
}
完成了以上初始化之后,只要读取STM32的TIM2->CNT寄存器,就能得到脉冲数了。
总结一下STM32定时器能用于外部脉冲计数的引脚:TIMER1-->PA12、TIMER2 -->PA0、TIMER3 -->PD2、TIMER4 -->PE0。
共分享92篇相关文档