打印
[研电赛技术支持]

GD32 timer eti remap 外部脉冲计数

[复制链接]
103|2
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
lianqingde|  楼主 | 2024-10-30 13:43 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 lianqingde 于 2024-10-30 13:46 编辑

GD32外部脉冲计数片子是管道gd32fvgt6,使用timer0,pe7的remap功能。
void timer_config_M1(void)
{
    timer_parameter_struct timer_initpara = {0};
   
    /* RCU */
    rcu_periph_clock_enable(RCU_GPIOE);
    rcu_periph_clock_enable(RCU_TIMER0);
    rcu_periph_clock_enable(RCU_AF);
        gpio_pin_remap_config(GPIO_TIMER0_FULL_REMAP, ENABLE);
   
    /* GPIO-ETI */
    gpio_init(GPIOE, GPIO_MODE_IN_FLOATING, GPIO_OSPEED_50MHZ, GPIO_PIN_7);
   
    /* TIMER1 config */
    timer_deinit(TIMER0);
   
    timer_initpara.prescaler         = 0;
    timer_initpara.alignedmode       = TIMER_COUNTER_EDGE;
    timer_initpara.counterdirection  = TIMER_COUNTER_UP;
    timer_initpara.period            = 0xFFFF;
    timer_initpara.clockdivision     = TIMER_CKDIV_DIV1;
    timer_initpara.repetitioncounter = 0;
    timer_init(TIMER0,&timer_initpara);
   
    timer_input_trigger_source_select(TIMER0, TIMER_SMCFG_TRGSEL_ETIFP);
    timer_external_clock_mode1_config(TIMER0, TIMER_EXT_TRI_PSC_OFF, TIMER_ETP_FALLING, 15);
   
    timer_enable(TIMER0);

}

u32 Encoder=0;
void MotorM1ControlTask(void)
{
    gpio_config_M1();
    timer_config_M1();
    while(1)
    {
        Encoder = timer_counter_read(TIMER0);
        //timer_counter_value_config(TIMER0, 0);
        delay_ms(20);
    }
}


使用特权

评论回复
沙发
星辰大海不退缩| | 2024-10-31 11:09 | 只看该作者
GD32 timer eti remap 外部脉冲计数很实用的功能

使用特权

评论回复
板凳
classroom| | 2024-10-31 12:21 | 只看该作者
在GD32微控制器中,使用TIMER的ETI(External Trigger Input)引脚进行外部脉冲计数,并通过remap功能重新映射引脚,是一个常见的应用场景。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

1

主题

1

帖子

0

粉丝