原创 STM32临界区操作相关函数

2020-6-23 08:41 3589 34 34 分类: MCU/ 嵌入式 文集: STM32应用
static uint32_t irq_nesting;

__INLINE void enter_critical(void)
{
    __disable_irq();
    irq_nesting++;
__DSB();
__ISB();
}

__INLINE void exit_critical(void)
{
    if (irq_nesting) {
        irq_nesting--;
    }
    if (irq_nesting == 0) {
        __enable_irq();
    }
}

__STATIC_INLINE __ASM uint32_t interrupt_disable(void)
{
mrs r0, PRIMASK
cpsid i
bx lr
}

__STATIC_INLINE __ASM void interrupt_enable(uint32_t mask)
{
msr PRIMASK, r0
bx lr
}

作者: RLink, 来源:面包板社区

链接: https://mbb.eet-china.com/blog/uid-me-3918760.html

版权声明:本文为博主原创,未经本人允许,禁止转载!

文章评论0条评论)

登录后参与讨论
我要评论
0
34
关闭 站长推荐上一条 /2 下一条