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条评论)
登录后参与讨论