本帖最后由 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);
|