回答

收藏

[分享] GD32定时器硬件编码器接口。。

GD32 GD32 3875 人阅读 | 0 人回复 | 2016-02-18

首先配置IO,我用的TIME3,配置如下,
u16 COUTER;
void GPIO_CFG()
{
    RCC_APB2PeriphClock_Enable(RCC_APB2PERIPH_GPIOA,ENABLE);//编码器引脚
    GPIO_InitStructure.GPIO_Pin =GPIO_PIN_6 | GPIO_PIN_7;
    GPIO_InitStructure.GPIO_Mode = GPIO_MODE_IPU;
    GPIO_InitStructure.GPIO_Speed = GPIO_SPEED_50MHZ;
    GPIO_Init(GPIOA,&GPIO_InitStructure);
}
配置定时器
void TIM3_Configuration(void)
{
          TIMER_BaseInitPara TIM_TimeBaseStructure;
        /* TIMER1 clock enable */
    RCC_APB1PeriphClock_Enable(RCC_APB1PERIPH_TIMER3,ENABLE);
          TIMER_DeInit(TIMER3);
    TIM_TimeBaseStructure.TIMER_Prescaler     = 0;
    TIM_TimeBaseStructure.TIMER_CounterMode   = TIMER_COUNTER_UP;
    TIM_TimeBaseStructure.TIMER_Period        = 0;
    TIM_TimeBaseStructure.TIMER_ClockDivision = TIMER_CDIV_DIV1;
    TIMER_BaseInit(TIMER3,&TIM_TimeBaseStructure);
          TIMER_EncoderInterfaceConfig(TIMER3,TIMER_ENCODER_MODE_TI12,
    TIMER_IC_POLARITY_FALLING ,TIMER_IC_POLARITY_FALLING );//下降沿
          TIMER_SetCounter(TIMER3, 20000); //设置CNT初始值为20000,可按需设置;
    TIMER_SetAutoreload(TIMER3,20000);        //设置重装载值为20000,可按需设置;
    TIMER_Enable(TIMER3, ENABLE);
}

void main()
{
GPIO_CFG();
TIM3_Configuration();
while(1)
{
COUTER=TIMER3->CNT;//couter为编码器的变动后的值
}
}
。。。。。。。。。。。。。OVER
我愚笨,研究了好几天,望各位不要笑话。。
分享到:
回复

使用道具 举报

您需要登录后才可以回帖 注册/登录

本版积分规则

关闭

站长推荐上一条 /3 下一条