你的浏览器版本过低,可能导致网站不能正常访问!为了你能正常使用网站功能,请使用这些浏览器。
举报
开发环境:STM32F072RBT6+stm32cubemx+freertos
问题描述:
1。 开始发现进入STOP模式失败,在调用HAL_PWR_EnterSTOPMode前通过发现EXTI4_15_IRQn pending标志被置起
2。在进入stop前主动调用HAL_NVIC_ClearPendingIRQ主动去清EXTI4_15_IRQn的pending标志,发现还是无法清掉,在清标志前关闭IRQ也不行
// 清除EXTI中断标志 假设是PIN4的话 __HAL_GPIO_EXTI_CLEAR_IT(GPIO_PIN_4);
果宝 发表于 2024-10-28 15:16 <strong>// 清除EXTI中断标志</strong> 假设是PIN4的话 __HAL_GPIO_EXTI_CLEAR_IT(GPIO_PIN_4);
感谢您的建议,现在更奇怪的问题是,我压根就没开EXTI中断,这个中断pending是怎么置起来的~
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状态是有清掉的)
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的中断响应没有开启,所以这里才需要手动清除一下中断响应挂起位。
STM32F030内部晶振怎么设置,内部晶振是延时函数怎么设置
分享STM32F030K6程序运行异常的解决方法
STM32F030正常上电不运行
DMA 读取GPIO的状态
stm32的同一个定时器,不同的通道,可以不同时的输出pwm波形吗
基于STM32的锂动力电池检测装置的设计
STM32的低功耗模式
STM32的上电启动过程
STM32中如何实现数据加密
STM32的I2S外设
开发环境:STM32F072RBT6+stm32cubemx+freertos
问题描述:
1。 开始发现进入STOP模式失败,在调用HAL_PWR_EnterSTOPMode前通过发现EXTI4_15_IRQn pending标志被置起
2。在进入stop前主动调用HAL_NVIC_ClearPendingIRQ主动去清EXTI4_15_IRQn的pending标志,发现还是无法清掉,在清标志前关闭IRQ也不行
// 清除EXTI中断标志 假设是PIN4的话 __HAL_GPIO_EXTI_CLEAR_IT(GPIO_PIN_4);
感谢您的建议,现在更奇怪的问题是,我压根就没开EXTI中断,这个中断pending是怎么置起来的~
好些事件的中断都可能映射到EXTI4~15.
关于此处的问题,你这样试试:
HAL_NVIC_ClearPendingIRQ(EXTI4_15_IRQn);
另外进STOP前建议将SYSTICK也停掉。
感谢回复:)
上面的图片中有贴出代码,有使用HAL_NVIC_ClearPendingIRQ(EXTI4_15_IRQn);
在调用HAL_PWR_EnterSTOPMode(PWR_LOWPOWERREGULATOR_ON, PWR_STOPENTRY_WFI)前也有使用HAL_SuspendTick关掉时钟的,而且也是生效的(system tick用的TIM6,从NVIC调试界面看到TIM6的pending状态是有清掉的)
[md]应该是产生了中断请求事件,下面这句是必要的:
__HAL_GPIO_EXTI_CLEAR_IT(GPIO_PIN_x);//清除外设端中断事件标志;
至于这句:
HAL_NVIC_ClearPendingIRQ(EXTI4_15_IRQn);本来不是必需的,但从你给出的截图来看,
现在的EXTI4_15的中断响应没有开启,所以这里才需要手动清除一下中断响应挂起位。