首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >stm32外部中断引脚模式更改

stm32外部中断引脚模式更改
EN

Stack Overflow用户
提问于 2021-06-30 05:21:46
回答 1查看 42关注 0票数 0

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

谢谢你的帮忙,

EN

回答 1

Stack Overflow用户

发布于 2021-06-30 05:37:09

要在下降沿/上升沿之间切换的代码如下:

代码语言:javascript
复制
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);
    }
}

如下所示来启用中断:

代码语言:javascript
复制
    __HAL_TIM_CLEAR_IT(&htim16, TIM_IT_UPDATE);
    HAL_NVIC_SetPriority(TIM1_UP_TIM16_IRQn, 15, 15);
    HAL_NVIC_EnableIRQ(TIM1_UP_TIM16_IRQn);

类似这样的代码可以禁用中断:

代码语言:javascript
复制
    HAL_NVIC_DisableIRQ(TIM6_DAC_IRQn);

这至少能让你入门,这是为STM32L4准备的。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68185793

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档