编码器初始化
- //摩擦轮编码器(右)
- void TIM2_Encoder_init(void)
- {
- GPIO_InitTypeDef GPIO_InitStructure;
- TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure;
- TIM_ICInitTypeDef TIM_ICInitStructure;
-
- RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM2,ENABLE);
- RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOA,ENABLE);
-
- GPIO_PinAFConfig(GPIOA,GPIO_PinSource0,GPIO_AF_TIM2);
- GPIO_PinAFConfig(GPIOA,GPIO_PinSource1,GPIO_AF_TIM2);
-
- GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0|GPIO_Pin_1;
- GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF;
- GPIO_InitStructure.GPIO_Speed = GPIO_Speed_100MHz;
- GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;
- GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_UP ;
- GPIO_Init(GPIOA,&GPIO_InitStructure);
-
- TIM_TimeBaseStructure.TIM_Period = 60000;
- TIM_TimeBaseStructure.TIM_Prescaler = 0;
- TIM_TimeBaseStructure.TIM_ClockDivision = 0;
- TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up;
- TIM_TimeBaseInit(TIM2, &TIM_TimeBaseStructure);
-
- TIM_EncoderInterfaceConfig(TIM2,
- TIM_EncoderMode_TI1,
- TIM_ICPolarity_Falling,
- TIM_ICPolarity_Falling);
- TIM_ICStructInit(&TIM_ICInitStructure);
- TIM_ICInitStructure.TIM_ICFilter = 10;
- TIM_ICInit(TIM2, &TIM_ICInitStructure);
- TIM_ClearFlag(TIM2, TIM_FLAG_Update);
- TIM_ITConfig(TIM2, TIM_IT_Update, ENABLE);
- TIM2->CNT = 30000;
- TIM_Cmd(TIM2, ENABLE);
- }
- //摩擦轮编码器(左)
- void TIM8_Encoder_init(void)
- {
- GPIO_InitTypeDef GPIO_InitStructure;
- TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure;
- TIM_ICInitTypeDef TIM_ICInitStructure;
-
- RCC_APB2PeriphClockCmd(RCC_APB2Periph_TIM8,ENABLE);
- RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOI,ENABLE);
-
- GPIO_PinAFConfig(GPIOI,GPIO_PinSource5,GPIO_AF_TIM8);
- GPIO_PinAFConfig(GPIOI,GPIO_PinSource6,GPIO_AF_TIM8);
-
- GPIO_InitStructure.GPIO_Pin = GPIO_Pin_5|GPIO_Pin_6; //GPIOB0,GPIOB1
- GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF;
- GPIO_InitStructure.GPIO_Speed = GPIO_Speed_100MHz;
- GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;
- GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_UP ;
- GPIO_Init(GPIOI,&GPIO_InitStructure);
-
- TIM_TimeBaseStructure.TIM_Period = 60000;
- TIM_TimeBaseStructure.TIM_Prescaler = 0;
- TIM_TimeBaseStructure.TIM_ClockDivision = 0;
- TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up;
- TIM_TimeBaseInit(TIM8, &TIM_TimeBaseStructure);
-
- TIM_EncoderInterfaceConfig(TIM8,
- TIM_EncoderMode_TI1,
- TIM_ICPolarity_Falling,
- TIM_ICPolarity_Falling);
- TIM_ICStructInit(&TIM_ICInitStructure);
- TIM_ICInitStructure.TIM_ICFilter = 10;
- TIM_ICInit(TIM8, &TIM_ICInitStructure);
- TIM_ClearFlag(TIM8, TIM_FLAG_Update);
- TIM_ITConfig(TIM8, TIM_IT_Update, ENABLE);
- TIM8->CNT = 30000;
- TIM_Cmd(TIM8, ENABLE);
- }
- //编码器采集定时器
- void TIM6_Init(u16 prd,u16 psc)
- {
- TIM_TimeBaseInitTypeDef TIM_TimeBaseInitStructure;
- NVIC_InitTypeDef NVIC_InitStructure;
- RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM6,ENABLE);
-
- TIM_TimeBaseInitStructure.TIM_Period = prd; //自动重装载值
- TIM_TimeBaseInitStructure.TIM_Prescaler=psc; //定时器分频
- TIM_TimeBaseInitStructure.TIM_CounterMode=TIM_CounterMode_Up; //向上计数模式
- TIM_TimeBaseInitStructure.TIM_ClockDivision=TIM_CKD_DIV1;
-
- TIM_TimeBaseInit(TIM6,&TIM_TimeBaseInitStructure);
-
- NVIC_InitStructure.NVIC_IRQChannel=TIM6_DAC_IRQn;
- NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority=0x03; //抢占优先级1
- NVIC_InitStructure.NVIC_IRQChannelSubPriority=0x03; //子优先级3
- NVIC_InitStructure.NVIC_IRQChannelCmd=ENABLE;
- NVIC_Init(&NVIC_InitStructure);
-
- TIM_ITConfig(TIM6,TIM_IT_Update,ENABLE);
- TIM_Cmd(TIM6,ENABLE);
- }
|