硬汉嵌入式论坛

 找回密码
 立即注册
查看: 408|回复: 1
收起左侧

[STM32H7] 已经触发了NVIC Pend挂起标志的中断,可以通过函数__NVIC_ClearPendingIRQ取消挂起

[复制链接]

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106995
QQ
发表于 2023-9-1 14:00:57 | 显示全部楼层 |阅读模式


如果程序里面有已经挂起的中断标志,且还没有执行,可以调用函数取消挂起,进而取消执行中断服务程序

[C] 纯文本查看 复制代码
/**
  \brief   Clear Pending Interrupt
  \details Clears the pending bit of a device specific interrupt in the NVIC pending register.
  \param [in]      IRQn  Device specific interrupt number.
  \note    IRQn must not be negative.
 */
__STATIC_INLINE void __NVIC_ClearPendingIRQ(IRQn_Type IRQn)
{
  if ((int32_t)(IRQn) >= 0)
  {
    NVIC->ICPR[(((uint32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL));
  }
}

回复

使用道具 举报

18

主题

285

回帖

339

积分

高级会员

积分
339
发表于 2023-9-1 21:05:24 | 显示全部楼层
是这样的,nvic有记忆功能,有时不手动清的话会触发一个空中断

如外设fifo空中断,这个中断标志在外设那边是自动清除的,但是nvic会记录自动清除的这个中断
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|小黑屋|Archiver|手机版|硬汉嵌入式论坛

GMT+8, 2024-5-13 13:22 , Processed in 0.150425 second(s), 25 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

快速回复 返回顶部 返回列表