打印
[N32G43x]

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

[复制链接]
290|1
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
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而不是复用模式

使用特权

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

本版积分规则

29

主题

135

帖子

2

粉丝