[研电赛技术支持] GD32 timer eti remap 外部脉冲计数

[复制链接]
 楼主| 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功能重新映射引脚,是一个常见的应用场景。
grfqq325 发表于 2025-5-25 18:11 | 显示全部楼层
使用了 GPIO_TIMER0_FULL_REMAP,这个是对的,确保 PE7 被映射为 TIMER0 的通道。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

1

主题

1

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部