硬汉嵌入式论坛

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

[FreeRTOS] 请教 freertos信号量xSemaphoreCreateBinary

[复制链接]

1

主题

1

回帖

4

积分

新手上路

积分
4
发表于 2025-3-9 17:37:32 | 显示全部楼层 |阅读模式

求助。
在用stm32标准库学习freertos信号量时,
发现信号量的创建函数xSemaphoreCreateBinary()需要宏定义 configSUPPORT_DYNAMIC_ALLOCATION = 1。这个宏定义在FreeRTOS.h中自动定义了。



但是semphr.h头文件并没有包含这个头文件。semphr.h里包含的queue.h也没有包含FreeRTOS.h,queue.h里包含的头文件也没有包含FreeRTOS.h,以此类推。
编译的时候能通过。
为了规范一些,是不是应该在semphr.h里包含FreeRTOS.h。但那样的话为什么官方不直接在semphr.h里包含FreeRTOS.h。
附上源工程,希望有人能答疑解惑。

semaphore_01.7z

333.77 KB, 下载次数: 2

回复

使用道具 举报

5

主题

80

回帖

95

积分

初级会员

积分
95
发表于 2025-3-10 08:45:56 | 显示全部楼层
问下ai,大概就是这样,你包含queue.h前面一定要先包含FreerTos.h
隐式依赖传递:虽然 semphr.h 没有直接包含 FreeRTOS.h,但实际项目中 用户代码通常会提前包含 FreeRTOS.h(例如在 main.c 或 FreeRTOSConfig.h 中),因此 configSUPPORT_DYNAMIC_ALLOCATION 宏的定义已经存在。
回复

使用道具 举报

1

主题

1

回帖

4

积分

新手上路

积分
4
 楼主| 发表于 2025-3-10 10:21:09 | 显示全部楼层
lizhaoming 发表于 2025-3-10 08:45
问下ai,大概就是这样,你包含queue.h前面一定要先包含FreerTos.h
隐式依赖传递:虽然 semphr.h 没有直接 ...

感谢解答。问题已经解决。
在semphr.h中有前面有这个。
#ifndef INC_FREERTOS_H
    #error "include FreeRTOS.h" must appear in source files before "include semphr.h"
#endif
都是头文件,在包含 semphr.h 之前包含 FreeRTOS.h 就可以了。
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-4-26 00:35 , Processed in 0.301599 second(s), 26 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

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