duanks 发表于 2022-7-8 16:16

如何配置定时器用作霍尔信号输入

本帖最后由 duanks 于 2022-7-8 16:17 编辑

使用PA15,PB3,PB10作为霍尔输入,但引脚一直输出低电平,感觉引脚复用好像出错了。下面是我的代码

        RCC_AHB_Peripheral_Clock_Enable(RCC_AHB_PERIPH_GPIOA | RCC_AHB_PERIPH_GPIOB |
                                                                        RCC_AHB_PERIPH_GPIOC | RCC_AHB_PERIPH_GPIOD);
        RCC_APB2_Peripheral_Clock_Enable(RCC_APB2_PERIPH_AFIO);
        RCC_APB1_Peripheral_Clock_Enable(RCC_APB1_PERIPH_TIM2);

        GPIO_InitType gpio;
        gpio.GPIO_Current = GPIO_DS_2MA;
        gpio.GPIO_Mode = GPIO_MODE_AF_PP;
        gpio.GPIO_Slew_Rate = GPIO_SLEW_RATE_SLOW;
        gpio.GPIO_Pull = GPIO_PULL_UP;
        gpio.GPIO_Alternate = GPIO_AF6_TIM2;
        gpio.Pin = GPIO_PIN_15;
        GPIO_Peripheral_Initialize(GPIOA, &gpio);
        gpio.GPIO_Alternate = GPIO_AF3_TIM2;
        gpio.Pin = GPIO_PIN_3 | GPIO_PIN_10;
        GPIO_Peripheral_Initialize(GPIOB, &gpio);

        TIM_TimeBaseInitType timBase;
        timBase.Period    = 0xFFFF;
        timBase.Prescaler = 0;
        timBase.ClkDiv    = TIM_CLK_DIV1;
        timBase.CntMode   = TIM_CNT_MODE_UP;
        timBase.CapCh1Sel = 0;
        timBase.CapCh2Sel = 0;
        timBase.CapCh3Sel = 0;
        timBase.CapCh4Sel = 0;
        timBase.CapEtrClrFromCompEn = 0;
        timBase.CapEtrSelFromTscEn = 0;
        TIM_Base_Initialize(TIM2, &timBase);

        TIM_ICInitType ic;
        ic.IcFilter    = 0;
        ic.IcPolarity= TIM_IC_POLARITY_RISING;
        ic.IcPrescaler = 0;
        ic.IcSelection = TIM_IC_SELECTION_TRC;
        ic.Channel   = TIM_CH_1;
        TIM_Input_Channel_Initialize(TIM2, &ic);
        TIM_Trigger_Source_Select(TIM2, TIM_TRIG_SEL_TI1F_ED);
        TIM_Hall_Sensor_Enable(TIM2);
        TIM_Slave_Mode_Select(TIM2, TIM_SLAVE_MODE_RESET);

        NVIC_InitType nvic;
        nvic.NVIC_IRQChannel = TIM2_IRQn;
        nvic.NVIC_IRQChannelCmd = ENABLE;
        nvic.NVIC_IRQChannelPreemptionPriority = 0;
        nvic.NVIC_IRQChannelSubPriority = 0;
        NVIC_Initializes(&nvic);
        TIM_Interrupt_Enable(TIM2, TIM_INT_UPDATE);

        TIM_On(TIM2);

duanks 发表于 2022-7-8 17:06

搞明白了,引脚模式应该设置为GPIO_MODE_INPUT而不是复用模式
页: [1]
查看完整版本: 如何配置定时器用作霍尔信号输入