你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

STM32F072 无法清除EXTI4_15_IRQn pending标志,导致无法进入stop模式

[复制链接]
zfxm_23 提问时间:2024-10-28 14:48 / 未解决
收藏 评论6 发布时间:2024-10-28 14:48

举报

6个回答
zfxm_23 回答时间:3 天前

开发环境:STM32F072RBT6+stm32cubemx+freertos

问题描述:

1。 开始发现进入STOP模式失败,在调用HAL_PWR_EnterSTOPMode前通过发现EXTI4_15_IRQn pending标志被置起

2。在进入stop前主动调用HAL_NVIC_ClearPendingIRQ主动去清EXTI4_15_IRQn的pending标志,发现还是无法清掉,在清标志前关闭IRQ也不行

image.png

果宝 回答时间:3 天前

// 清除EXTI中断标志 假设是PIN4的话 __HAL_GPIO_EXTI_CLEAR_IT(GPIO_PIN_4);

zfxm_23 回答时间:3 天前

果宝 发表于 2024-10-28 15:16
<strong>// 清除EXTI中断标志</strong> 假设是PIN4的话
__HAL_GPIO_EXTI_CLEAR_IT(GPIO_PIN_4);

感谢您的建议,现在更奇怪的问题是,我压根就没开EXTI中断,这个中断pending是怎么置起来的~

xmshao 回答时间:3 天前
至于为什么会这样,可能需要慢慢找原因。
好些事件的中断都可能映射到EXTI4~15.


关于此处的问题,你这样试试:


HAL_NVIC_ClearPendingIRQ(EXTI4_15_IRQn);


另外进STOP前建议将SYSTICK也停掉。
zfxm_23 回答时间:3 天前

xmshao 发表于 2024-10-28 16:21
至于为什么会这样,可能需要慢慢找原因。
好些事件的中断都可能映射到EXTI4~15.

感谢回复:)

上面的图片中有贴出代码,有使用HAL_NVIC_ClearPendingIRQ(EXTI4_15_IRQn);

在调用HAL_PWR_EnterSTOPMode(PWR_LOWPOWERREGULATOR_ON, PWR_STOPENTRY_WFI)前也有使用HAL_SuspendTick关掉时钟的,而且也是生效的(system tick用的TIM6,从NVIC调试界面看到TIM6的pending状态是有清掉的)

image.png

xmshao 回答时间:3 天前

zfxm_23 发表于 2024-10-28 17:10</p>
<p>感谢回复:)

[md]应该是产生了中断请求事件,下面这句是必要的:

__HAL_GPIO_EXTI_CLEAR_IT(GPIO_PIN_x);//清除外设端中断事件标志;

至于这句:

HAL_NVIC_ClearPendingIRQ(EXTI4_15_IRQn);本来不是必需的,但从你给出的截图来看,

现在的EXTI4_15的中断响应没有开启,所以这里才需要手动清除一下中断响应挂起位。

关于意法半导体
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
招聘信息
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
关注我们
st-img 微信公众号
st-img 手机版