[应用相关] 按需配置最适的工程uCOS

[复制链接]
 楼主| littlelida 发表于 2021-11-1 14:31 | 显示全部楼层 |阅读模式
os_cfg.h 文件是系统的配置文件,主要是让用户自己配置一些系统默认的功能,用户可以选择某些或者全部的功能,比如消息队列、信号量、互斥量、事件标志位等,系统默认全部使用的,如果如果用户不需要的话,则可以直接关闭,在对应的宏定义中设置为0即可,这样子就不会占用系统的SRAM,以节省系统资源,os_cfg.h 文件的配置说明具体见代码清单

  1. 1 #ifndef OS_CFG_H
  2. 2 #define OS_CFG_H
  3. 3
  4. 4
  5. 5 /* --- 其他配置 --- */
  6. 6 #define OS_CFG_APP_HOOKS_EN 1u /* 是否使用钩子函数 */
  7. 7 #define OS_CFG_ARG_CHK_EN 1u /* 是否使用参数检查 */
  8. 8 #define OS_CFG_CALLED_FROM_ISR_CHK_EN 1u /* 是否使用中断调用检查 */
  9. 9 #define OS_CFG_DBG_EN 1u /* 是否使用debug */
  10. 10 #define OS_CFG_ISR_POST_DEFERRED_EN 1u /* 是否使用中断延迟post 操作*/
  11. 11 #define OS_CFG_OBJ_TYPE_CHK_EN 1u /* 是否使用对象类型检查 */
  12. 12 #define OS_CFG_TS_EN 1u /* 是否使用时间戳 */
  13. 13
  14. 14 #define OS_CFG_PEND_MULTI_EN 1u /*是否使用支持多个任务pend 操作*/
  15. 15
  16. 16 #define OS_CFG_PRIO_MAX 32u /*定义任务的最大优先级 */
  17. 17
  18. 18 #define OS_CFG_SCHED_LOCK_TIME_MEAS_EN 1u /*是否使用支持测量调度器锁定时间 */
  19. 19 #define OS_CFG_SCHED_ROUND_ROBIN_EN 1u /* 是否支持循环调度 */
  20. 20 #define OS_CFG_STK_SIZE_MIN 64u /* 最小的任务堆栈大小 */
  21. 21
  1. 22
  2. 23 /* ---------- 事件标志位---------- */
  3. 24 #define OS_CFG_FLAG_EN 1u /*是否使用事件标志位 */
  4. 25 #define OS_CFG_FLAG_DEL_EN 1u /*是否包含OSFlagDel()的代码 */
  5. 26 #define OS_CFG_FLAG_MODE_CLR_EN 1u /*是否包含清除事件标志位的代码 */
  6. 27 #define OS_CFG_FLAG_PEND_ABORT_EN 1u /*是否包含OSFlagPendAbort()的代码*/
  7. 28
  8. 29
  9. 30 /* --------- 内存管理 --- */
  10. 31 #define OS_CFG_MEM_EN 1u /* 是否使用内存管理 */
  11. 32
  12. 33
  13. 34 /* -------- 互斥量 ----- */
  14. 35 #define OS_CFG_MUTEX_EN 1u /*是否使用互斥量 */
  15. 36 #define OS_CFG_MUTEX_DEL_EN 1u /*是否包含OSMutexDel()的代码*/
  16. 37 #define OS_CFG_MUTEX_PEND_ABORT_EN 1u /*是否包含OSMutexPendAbort()的代码 */
  17. 38
  18. 39
  19. 40 /* ------- 消息队列--------------- */
  20. 41 #define OS_CFG_Q_EN 1u /* 是否使用消息队列 */
  21. 42 #define OS_CFG_Q_DEL_EN 1u /* 是否包含OSQDel()的代码 */
  22. 43 #define OS_CFG_Q_FLUSH_EN 1u /* 是否包含OSQFlush()的代码 */
  23. 44 #define OS_CFG_Q_PEND_ABORT_EN 1u /* 是否包含OSQPendAbort()的代码 */
  24. 45
  25. 46
  26. 47 /* -------------- 信号量 --------- */
  27. 48 #define OS_CFG_SEM_EN 1u /*是否使用信号量 */
  28. 49 #define OS_CFG_SEM_DEL_EN 1u /*是否包含OSSemDel()的代码 */
  29. 50 #define OS_CFG_SEM_PEND_ABORT_EN 1u /*是否包含OSSemPendAbort()的代码*/
  30. 51 #define OS_CFG_SEM_SET_EN 1u /*是否包含OSSemSet()的代码 */
  31. 52
  32. 53
  1. 54 /* ----------- 任务管理 -------------- */
  2. 55 #define OS_CFG_STAT_TASK_EN 1u /* 是否使用任务统计功能 */
  3. 56 #define OS_CFG_STAT_TASK_STK_CHK_EN 1u /* 从统计任务中检查任务堆栈 */
  4. 57
  5. 58 #define OS_CFG_TASK_CHANGE_PRIO_EN 1u /* 是否包含OSTaskChangePrio()的代码*/
  6. 59 #define OS_CFG_TASK_DEL_EN 1u /* 是否包含OSTaskDel()的代码*/
  7. 60 #define OS_CFG_TASK_Q_EN 1u /*是否包含OSTaskQXXXX()的代码*/
  8. 61 #define OS_CFG_TASK_Q_PEND_ABORT_EN 1u /* 是否包含OSTaskQPendAbort()的代码 */
  9. 62 #define OS_CFG_TASK_PROFILE_EN 1u /* 是否在OS_TCB 中包含变量以进行性能分析 */
  10. 63 #define OS_CFG_TASK_REG_TBL_SIZE 1u /*任务特定寄存器的数量 */
  11. 64 #define OS_CFG_TASK_SEM_PEND_ABORT_EN 1u /* 是否包含OSTaskSemPendAbort()的代码 */
  12. 65 #define OS_CFG_TASK_SUSPEND_EN 1u /*是否包含OSTaskSuspend()和
  13. 66 OSTaskResume()的代码*/
  14. 67
  15. 68 /* ------- 时间管理 ------- */
  16. 69 #define OS_CFG_TIME_DLY_HMSM_EN 1u /*是否包含OSTimeDlyHMSM()的代码*/
  17. 70 #define OS_CFG_TIME_DLY_RESUME_EN 1u /*是否包含OSTimeDlyResume()的代码*/
  18. 71
  19. 72
  20. 73 /* ---------- 定时器管理 ------- */
  21. 74 #define OS_CFG_TMR_EN 1u /* 是否使用定时器 */
  22. 75 #define OS_CFG_TMR_DEL_EN 1u /* 是否支持OSTmrDel() */
  23. 76
  24. 77 #endif


小叶三千 发表于 2021-11-2 08:16 | 显示全部楼层
支持的打开就是写1,不支持的,或者是用不到的就可以写0,可以减少内存的占用
tpgf 发表于 2021-12-1 08:58 | 显示全部楼层
这样可以减少资源浪费哈
磨砂 发表于 2021-12-1 09:11 | 显示全部楼层
可以自己手动修改吗
您需要登录后才可以回帖 登录 | 注册

本版积分规则

139

主题

955

帖子

2

粉丝
快速回复 在线客服 返回列表 返回顶部

139

主题

955

帖子

2

粉丝
快速回复 在线客服 返回列表 返回顶部