欢迎光临散文网 会员登陆 & 注册

STM32定时器-读取编码器数值

2023-07-05 19:49 作者:搞电子的Tony老师  | 我要投稿

u32 mSPEED=0;

int main(void)

NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);//设置系统中断优先级分组2

delay_init(168); //初始化延时函数

uart_init(9600);

// LED_Init(); //初始化LED端口

TIM4_Encoder_Init(65535,0);

// TIM3_Int_Init(1000,8400-1); //定时器时钟84M,分频系数8400,所以84M/8400=10Khz的计数频率,计数5000次为500ms   

while(1)

{

mSPEED = TIM_GetCounter(TIM4);

TIM_SetCounter(TIM4,0);

delay_ms(1000);//延时200ms

printf("编码器1S脉冲计数值: %d\r\n ",mSPEED);

}

}

void TIM4_Encoder_Init(u16 arr,u16 psc)

{

GPIO_InitTypeDef     GPIO_InitStructure;  //定义GPIO相关结构体

TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure; //定义定时器基本参数结构体

TIM_ICInitTypeDef    TIM_ICInitStructure;  //定义定时器输入捕获参数结构体

RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM4, ENABLE); //定时器4时钟使能

RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOB, ENABLE);//GPIOB 时钟使能

GPIO_PinAFConfig(GPIOB,GPIO_PinSource6,GPIO_AF_TIM4); //GPIOx复用为定时器

GPIO_PinAFConfig(GPIOB,GPIO_PinSource7,GPIO_AF_TIM4); //GPIOx复用为定时器

/*- 正交编码器输入引脚 PB->6 PB->7 -*/

GPIO_InitStructure.GPIO_Pin  = GPIO_Pin_6 | GPIO_Pin_7;     

GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF;

GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;

GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_UP;        

GPIO_Init(GPIOB, &GPIO_InitStructure);    

//定时器基本配置(重装在值、预分频系数、时钟分割、计数模式)

TIM_DeInit(TIM4);

TIM_TimeBaseStructure.TIM_Period   = 65535;

TIM_TimeBaseStructure.TIM_Prescaler   = 0;

TIM_TimeBaseStructure.TIM_ClockDivision = TIM_CKD_DIV1;

TIM_TimeBaseStructure.TIM_CounterMode  = TIM_CounterMode_Up;

TIM_TimeBaseInit(TIM4, &TIM_TimeBaseStructure);        

//定时器编码器模式相关配置

TIM_EncoderInterfaceConfig(TIM4,TIM_EncoderMode_TI12,TIM_ICPolarity_Rising,TIM_ICPolarity_Rising);

TIM_ICStructInit(&TIM_ICInitStructure);

  TIM_ICInitStructure.TIM_ICFilter = 10;

  TIM_ICInit(TIM4, &TIM_ICInitStructure);

  TIM_ClearFlag(TIM4, TIM_FLAG_Update);//清除TIM的更新标志位

  TIM_ITConfig(TIM4, TIM_IT_Update, ENABLE);

  //Reset counter

  TIM_SetCounter(TIM4,0);

  TIM_Cmd(TIM4, ENABLE);


}


STM32定时器-读取编码器数值的评论 (共 条)

分享到微博请遵守国家法律