stm32外部中断引脚模式更改



我正在用stm32f103c8t6设计ESC。在我的设计中,我使用BEMF电路来检测电机的相位。从BEMF电路(带比较器LM339(,我正在读取3个中断引脚,但当代码运行时,我需要更改引脚模式(如上升沿检测到下降沿检测(,还需要禁用其他2个(取决于当时电机的相位(中断引脚,以免读取来自电路的噪声。我该怎么做?

谢谢你的帮助,

类似这样的东西可以在下降沿/上升沿之间切换:

void isr_hallsensor(void) {
if (hallsensor_edge_select) {
//rising edge, magnet has left the detection zone.
gpio_hall_sensor.Mode = GPIO_MODE_IT_FALLING;
HW_GPIO_Init(HALLSENSOR_PORT, HALLSENSOR_PIN, &gpio_hall_sensor);
hallsensor_edge_select = 0;
__HAL_GPIO_EXTI_CLEAR_IT(HALLSENSOR_PIN);
} else {
//falling edge, magnet detected.
gpio_hall_sensor.Mode = GPIO_MODE_IT_RISING;
HW_GPIO_Init(HALLSENSOR_PORT, HALLSENSOR_PIN, &gpio_hall_sensor);
hallsensor_edge_select = 1;
__HAL_GPIO_EXTI_CLEAR_IT(HALLSENSOR_PIN);
}
}

像这样的东西可以启用中断:

__HAL_TIM_CLEAR_IT(&htim16, TIM_IT_UPDATE);
HAL_NVIC_SetPriority(TIM1_UP_TIM16_IRQn, 15, 15);
HAL_NVIC_EnableIRQ(TIM1_UP_TIM16_IRQn);

类似这样的东西可以禁用中断:

HAL_NVIC_DisableIRQ(TIM6_DAC_IRQn);

这至少会让您开始,这是针对STM32L4的。

最新更新