硬汉嵌入式论坛

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

[FreeRTOS] 让大家l领略下FreeRTOS宏定义之宏定义层层调用,将宏定义用到极致

[复制链接]

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106754
QQ
发表于 2016-4-23 00:41:42 | 显示全部楼层 |阅读模式
这里以任务代码里面的临界段开关中断的实现为例,嵌套了将尽5层。
#define taskENTER_CRITICAL()     portENTER_CRITICAL()
#define taskEXIT_CRITICAL()        portEXIT_CRITICAL()
进一步跟踪:
#define portENTER_CRITICAL()    vPortEnterCritical()

#define portEXIT_CRITICAL()        vPortExitCritical()
再进一步跟踪:

1.png
再进一步跟踪:
#define portDISABLE_INTERRUPTS()    vPortRaiseBASEPRI()

#define portENABLE_INTERRUPTS()    vPortSetBASEPRI( 0 )
重要到最终的源码位置了:

2.png
=================================================
FreeRTOS已经将这种宏定义方式用到了极致,好处就是FreeRTOS的源码实现方便了。
缺点就是用户看起来非常的费劲。
回复

使用道具 举报

100

主题

275

回帖

575

积分

金牌会员

积分
575
发表于 2016-4-23 13:52:01 | 显示全部楼层
看的确实费劲
回复

使用道具 举报

10

主题

45

回帖

75

积分

初级会员

积分
75
发表于 2016-4-23 18:59:55 | 显示全部楼层
LZ,freertos,在进入与退出中断的时候,要不要加上进入与退出临界点的函数呢?
加与不加,貌似影响不大的
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106754
QQ
 楼主| 发表于 2016-4-24 00:43:32 | 显示全部楼层

回 0520kuang 的帖子

0520kuang:LZ,freertos,在进入与退出中断的时候,要不要加上进入与退出临界点的函数呢?
加与不加,貌似影响不大的 (2016-04-23 18:59)
一般都不需要的,怕此中断被高优先级的中断抢占就加上,其实这种情况的话,完全可以将低优先级中断设置为高优先级中断。
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-5-4 11:32 , Processed in 0.289449 second(s), 28 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

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