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

2020-6-23 08:41 648 19 19 分类: 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条评论)

登录后参与讨论
相关推荐阅读
RLink 2020-10-31 09:24
网站分享
【安富莱】MDK5.29,5.30,5.31,5.32和各种pack软件包镜像下载http://www.armbbs.cn/forum.php?mod=viewthread&tid=96992Unix...
RLink 2020-09-10 14:49
rtthread scons使用备注
1. 更改默认环境变量使用scons编译时,RTT_CC环境变量用于标识编译时使用的工具链,默认配置使用gcc,如果需要修改为iar,则可以编辑文件env_released_1.2.0\env\too...
RLink 2020-07-23 16:20
(转载)中断控制及basepri 与 basepri_max
转载自https://www.cnblogs.com/qiyuexin/p/8921718.html目录FAULTMASKPRIMASKBASEPRIBASEPRI_MAX 正文1、总开关每...
RLink 2020-07-23 11:27
(转载)ucos中的三种临界区管理机制
熟悉ucos,或者读过Jean.J.Labrosse写过的ucos书籍的人,一定会知道ucos中著名的临界去管理宏:OS_ENTER_CRITICAL()和OS_EXIT_CRITICAL()。同样是...
RLink 2020-07-23 10:44
(转载)Cortex-M0/M0+屏蔽优先级低于BASEPRI设定的中断
Cortex-M3/M4/M7有BASEPRI特殊功能寄存器可以屏蔽优先级低于BASEPRI设定值的中断,但Cortex-M0/M0+没有BASEPRI寄存器,不过仍然可以实现相识的功能。mingdu...
RLink 2020-07-09 15:12
STM32L系列I2C应用注意
噪音滤波器I2C模块包含模拟噪音滤波器和数字噪音滤波器,其中模拟噪音滤波器可以抑制尖峰宽度高达50ns(满足快速模式协议规格),用户可以选择关闭这一特性;数字滤波器抑制尖峰噪音的长度可以通过软件配置,...
广告
我要评论
0
19
1
2
3
4
5
6
7
8
9
0
广告
关闭 热点推荐上一条 /5 下一条