FreeRTOS临界段函数、开关中断函数调用关系

2 篇文章 0 订阅
1 篇文章 0 订阅

1、FreeRTOS开关中断函数分别为portENABLE_INTERRUPTS()和portDISABLE_INTERRUPTS();
2、FreeRTOS临界段保护相关函数:taskENTER_CRITICAL()、taskEXIT_CRITICAL()、taskENTER_CRITICAL_FROM_ISR()、taskEXIT_CRITICAL_FROM_ISR();

3、taskENTER_CRITICAL()<-宏-portENTER_CRITICAL()<-宏-vPortEnterCritical()<--portDISABLE_INTERRUPTS()<-宏-vPortRaiseBASEPRI()<--汇编代码,将configMAX_SYSCALL_INTERRUPT_PRIORITY写入BASEPRI寄存器;
4、taskEXIT_CRITICAL()<-宏-portEXIT_CRITICAL()<-宏-vPortExitCritical()<--portENABLE_INTERRUPTS()<-宏-vPortSetBASEPRI( 0 )<--汇编代码,往BASEPRI寄存器写0;

5、taskENTER_CRITICAL_FROM_ISR()<-宏-portSET_INTERRUPT_MASK_FROM_ISR()<-宏-ulPortRaiseBASEPRI()<--汇编代码,将configMAX_SYSCALL_INTERRUPT_PRIORITY写入BASEPRI寄存器,但与vPortRaiseBASEPRI()稍有不同,在往BASEPRI写configMAX_SYSCALL_INTERRUPT_PRIORITY前读出了BASEPRI值,函数退出时返回BASEPRI,供退出临界段时taskEXIT_CRITICAL_FROM_ISR()做参数使用;
6、taskEXIT_CRITICAL_FROM_ISR(x)<-宏-portCLEAR_INTERRUPT_MASK_FROM_ISR( x )<-宏-vPortSetBASEPRI(x)<--汇编代码,往BASEPRI寄存器写x。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值