皮皮网

【yourls源码docker版】【手机修改网页源码】【资金仓位指标源码】ucosiii 源码下载

时间:2024-11-25 07:53:07 分类:综合 来源:stm32制冷系统源码

1.UCOS-III 系统配置
2.UCOSIII_多任务创建(二)

ucosiii 源码下载

UCOS-III 系统配置

       µC/OS-III系统配置涉及多个关键参数的码下调整,旨在优化应用程序性能和稳定性。码下配置文件`os_cfg.h`允许开发者控制内核功能,码下具体包括以下方面:

       1. **杂项设置**:

        - `OS_CFG_APP_HOOKS_EN`:启用或禁用应用程序特定钩子功能,码下用于执行特定于应用程序的码下任务。

        - `OS_CFG_ARG_CHK_EN`:启用或禁用参数检查,码下yourls源码docker版增强代码的码下健壮性。

        - `OS_CFG_CALLED_FROM_ISR_CHK_EN`:在中断服务程序中启用或禁用检查,码下防止可能的码下错误调用。

        - `OS_CFG_DBG_EN`:启用或禁用调试代码和变量,码下便于开发和调试过程。码下

        - `OS_CFG_TICK_EN`:启用或禁用内核滴答功能,码下用于时间管理。码下

        - `OS_CFG_DYN_TICK_EN`:启用或禁用动态滴答,码下提高系统灵活性。码下

        - `OS_CFG_INVALID_OS_CALLS_CHK_EN`:启用或禁用内核调用检查,确保代码的正确性。

        - `OS_CFG_OBJ_TYPE_CHK_EN`:启用或禁用对象类型检查,提高安全性。

        - `OS_CFG_OBJ_CREATED_CHK_EN`:启用或禁用对象创建检查,确保资源的手机修改网页源码合理分配。

        - `OS_CFG_TS_EN`:启用或禁用时间戳功能,用于跟踪操作的执行时间。

        - `OS_CFG_PRIO_MAX`:定义系统中最大任务优先级数。

        - `OS_CFG_SCHED_LOCK_TIME_MEAS_EN`:启用或禁用调度器锁定时间测量,用于分析性能瓶颈。

        - `OS_CFG_SCHED_ROUND_ROBIN_EN`:启用或禁用轮转调度策略,优化任务执行顺序。

        - `OS_CFG_STK_SIZE_MIN`:设置最小任务堆栈大小,确保资源高效利用。

       2. **事件标志管理**:

        - `OS_CFG_FLAG_EN`:启用或禁用事件标志,资金仓位指标源码用于通信和同步。

        - `OS_CFG_FLAG_DEL_EN`:包含删除事件标志的代码。

        - `OS_CFG_FLAG_MODE_CLR_EN`:启用清除事件标志的等待模式代码。

        - `OS_CFG_FLAG_PEND_ABORT_EN`:启用处理等待事件标志超时的异常终止代码。

       3. **内存管理**:

        - `OS_CFG_MEM_EN`:启用内存管理功能,确保内存资源的有效使用。

       4. **互斥锁**:

        - `OS_CFG_MUTEX_EN`:启用或禁用互斥信号量,用于保护共享资源。

        - `OS_CFG_MUTEX_DEL_EN`:包含删除互斥信号量的代码。

        - `OS_CFG_MUTEX_PEND_ABORT_EN`:处理互斥信号量等待超时的织梦整站源码zkjweb异常终止代码。

       5. **消息队列**:

        - `OS_CFG_Q_EN`:启用消息队列功能,用于进程间通信。

        - `OS_CFG_Q_DEL_EN`:包含删除消息队列的代码。

        - `OS_CFG_Q_FLUSH_EN`:处理消息队列的刷新操作。

        - `OS_CFG_Q_PEND_ABORT_EN`:处理消息队列等待超时的异常终止代码。

       6. **信号量**:

        - `OS_CFG_SEM_EN`:启用信号量功能,用于控制资源访问。

        - `OS_CFG_SEM_DEL_EN`:包含删除信号量的代码。

        - `OS_CFG_SEM_PEND_ABORT_EN`:处理信号量等待超时的异常终止代码。

        - `OS_CFG_SEM_SET_EN`:包含设置信号量的易语言网站登录源码代码。

       7. **任务管理**:

        - `OS_CFG_STAT_TASK_EN`:启用统计任务功能,用于性能监控。

        - `OS_CFG_STAT_TASK_STK_CHK_EN`:检查统计任务的堆栈大小。

        - `OS_CFG_TASK_CHANGE_PRIO_EN`:包含任务优先级变更的代码。

        - `OS_CFG_TASK_DEL_EN`:包含删除任务的代码。

        - `OS_CFG_TASK_IDLE_EN`:包含空闲任务,用于节省资源。

        - `OS_CFG_TASK_PROFILE_EN`:包含任务概要信息,用于性能分析。

        - `OS_CFG_TASK_Q_EN`:包含任务特定消息队列的代码。

        - `OS_CFG_TASK_Q_PEND_ABORT_EN`:处理任务消息队列等待超时的异常终止代码。

        - `OS_CFG_TASK_REG_TBL_SIZE`:定义任务特定寄存器数量。

        - `OS_CFG_TASK_STK_REDZONE_EN`:启用堆栈保护区域,防止缓冲区溢出。

        - `OS_CFG_TASK_STK_REDZONE_DEPTH`:设置堆栈保护区域的深度。

        - `OS_CFG_TASK_SEM_PEND_ABORT_EN`:处理任务信号量等待超时的异常终止代码。

        - `OS_CFG_TASK_SUSPEND_EN`:包含任务挂起和恢复的代码。

       8. **任务本地存储管理**:

        - `OS_CFG_TLS_TBL_SIZE`:定义任务本地存储寄存器的大小。

       9. **时间管理**:

        - `OS_CFG_TIME_DLY_HMSM_EN`:包含定时函数,用于延时操作。

        - `OS_CFG_TIME_DLY_RESUME_EN`:包含恢复操作的代码。

       . **定时器管理**:

        - `OS_CFG_TMR_EN`:启用定时器功能,用于定时事件。

        - `OS_CFG_TMR_DEL_EN`:包含删除定时器的代码。

       . **跟踪记录器**:

        - `OS_CFG_TRACE_EN`:启用跟踪工具,用于调试和性能分析。

        - `OS_CFG_TRACE_API_ENTER_EN`:启用API进入跟踪。

        - `OS_CFG_TRACE_API_EXIT_EN`:启用API退出跟踪。

       配置文件`os_cfg_app.h`允许用户指定系统任务、空闲任务、统计任务、滴答任务、定时器任务和中断服务程序(ISR)处理任务的堆栈大小、任务优先级、时钟滴答频率等参数,实现对系统资源的精细化管理。

       `os_type.h`文件定义了µC/OS-III特有的数据类型,包括任务优先级、信号量计数等变量的大小,确保与CPU的自然字大小相匹配,进一步优化内存使用和代码效率。

       通过调整这些配置参数,开发者可以针对特定的应用场景优化µC/OS-III内核,提高系统的性能、稳定性和资源利用效率。

UCOSIII_多任务创建(二)

       ä»»åŠ¡è°ƒåº¦å’Œåˆ‡æ¢å°±æ˜¯è®©å°±ç»ªè¡¨ä¸­ä¼˜å…ˆçº§æœ€é«˜çš„任务获得CPU使用权,UCOSIII是抢占式的,高优先级任务可以抢了低优先级任务的CPU使用权,任务调度由任务调度器完成,任务调度器分为:任务级,中断级调度器

        1.任务级调度器:OSSched(),不能用于中断服务函数中

        函数里有一个函数OS_TASK_SW(),这个是真正执行任务切换的宏,它把当前任务的CPU寄存器值保存在任务堆栈中,保存完当前任务的现场后将新任务的OS_TCB中保存的任务堆栈指针的值加载到CPU的堆栈指针寄存器中,新任务结束后还要把CPU寄存器值变回旧任务的。

        2.中断级调度器:OSIntEnter(),OSIntExit(),调用此函数时中断应该是关闭的

        函数里有一个函数OSIntCtxSW(),这个是真正执行任务切换的宏,进入中断时硬件自动保存现场了,将新任务的OS_TCB中保存的任务堆栈指针的值加载到CPU的堆栈指针寄存器中,新中断结束后自动恢复现场。

        3.时间片轮转调度:UCOSIII支持一个优先级下有多个任务,不过允许一个任务运行一段时间(时间片)后让出CPU使用权,让同优先级下的洗一个任务运行,这种任务调度方法就是时间片轮转调度。如果同级下第一个任务设置的时间片用完则第一个任务排到链表尾,等待下一次调度。使用OSSchedRoundRobinYield()可以放弃剩余的时间片,在同级下其它任务运行。

        通常创建多个任务,可以先在main函数中设置一个任务,然后在这个任务里创建多个任务.

        每个任务都有自己的任务函数。

copyright © 2016 powered by 皮皮网   sitemap