您的位置 首页 电子

stm32定时器捕捉凹凸电平计时长代码剖析

定时器是stm32的一大利器,现在的项目中可以说没有一个不会用到定时器的,所以掌握理解运用定时器才会做出好的产品来。本章内容说一说关于s

定时器是stm32的一大利器,现在的项目中可以说没有一个不会用到定时器的,所以把握了解运用定时器才会做出好的产品来。

本章内容说一说关于stm32的定时器TIM_GetCounter(TIMx)的运用。之前的项目中从前用这个来获取凹凸电平的时长,在超声波测距,红外遥控解码中运用过。Stm32的定时器除了1和8其他都是通用定时器。如何用这句函数来捕捉电平时长呢?首要看一下初始化内容,以TIM4为例

void Timer4_CFG()

{

TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure;

NVIC_InitTypeDef NVIC_InitStructure;

RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM4, ENABLE);

GPIO_InitTypeDef GPIO_InitStructure;

RCC_APB2PeriphClockCmd( RCC_APB2Periph_GPIOE | RCC_APB2Periph_AFIO , ENABLE);

GPIO_InitStructure.GPIO_Pin = IR_LED_PIN;

GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;

GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;

GPIO_Init(IR_LED_PORT, &GPIO_InitStructure);

TIM_TimeBaseStructure.TIM_Prescaler = 3599; //TIM_CKD_DIV1

TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up; //

TIM_TimeBaseStructure.TIM_Period = 200; // ARR

TIM_TimeBaseStructure.TIM_ClockDivision = TIM_CKD_DIV1;

//TIM_TimeBaseStructure.TIM_RepetitionCounter = 4;

TIM_TimeBaseInit(TIM4, &TIM_TimeBaseStructure);

//TIM_PrescalerConfig(TIM4,35,TIM_PSCReloadMode_Immediate);//36MHz/(3599+1)=10 000 HZ 100uS

TIM_ARRPreloadConfig(TIM4,DISABLE);

TIM_ITConfig(TIM4,TIM_IT_Update,ENABLE);

TIM_ITConfig(TIM4,TIM_IT_Trigger,ENABLE);

TIM_Cmd(TIM4, DISABLE);

}

APB1是36M时钟,通过分频后发生10KHZ 100us周期的波形。TIM->CNT这个是计数

。。。。。

声明:本文内容来自网络转载或用户投稿,文章版权归原作者和原出处所有。文中观点,不代表本站立场。若有侵权请联系本站删除(kf@86ic.com)https://www.86ic.net/qiche/dianzi/257206.html

为您推荐

联系我们

联系我们

在线咨询: QQ交谈

邮箱: kf@86ic.com

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

返回顶部