如何通过Mbed配置系统重写RTX_Config.h中的OS_ISR_FIFO_QUEUE?
Mbed OS配置系统工作机制及宏重写方法
一、Mbed OS配置系统工作机制
Mbed OS的配置系统核心是无需修改库源码就能自定义系统、组件的运行参数,主要依赖两个核心文件和编译流程:
- 组件默认配置:系统或组件的默认参数通常定义在组件的
mbed_lib.json文件中;像RTX这类内核组件,部分基础参数会直接写在头文件(比如RTX_Config.h)里,用条件编译宏做默认值兜底。 - 项目自定义配置:开发者通过项目根目录的
mbed_app.json文件指定自定义参数,编译时构建系统会读取这个文件,把配置转换成编译宏(-D参数)注入编译流程,优先级高于组件的默认配置。
简单来说:编译时先加载开发者自定义的宏,再处理库的头文件,自定义宏会覆盖头文件里的默认值。
二、能否通过配置系统重写OS_ISR_FIFO_QUEUE?
完全可以,因为RTX_Config.h里的宏用了#ifndef条件编译 guard:
#ifndef OS_ISR_FIFO_QUEUE
#define OS_ISR_FIFO_QUEUE 16
#endif
只要编译时提前定义这个宏,就会跳过头文件里的默认值定义。具体操作步骤:
- 在项目根目录创建或修改
mbed_app.json文件 - 在文件中添加宏定义,示例如下:
{ "macros": [ "OS_ISR_FIFO_QUEUE=32" ] }
如果需要针对特定目标板配置,可以用target_overrides:
{ "target_overrides": { "*": { "macros": ["OS_ISR_FIFO_QUEUE=32"] } } }
(把32改成你需要的数值即可)
编译时,Mbed构建系统会自动把这个宏转换成编译参数-DOS_ISR_FIFO_QUEUE=32,这样在处理RTX_Config.h时,由于宏已经被定义,就会使用你设置的数值,而非默认的16。
内容的提问来源于stack exchange,提问作者Christoph
相关产品推荐
相关产品推荐

