Skip to main content

RTOS_函数解析

下面以表格的形式,对代码中各模块和接口的作用进行了清晰说明:

模块/功能API/宏作用说明
消息队列管理
消息队列注册MessageRegister(num)创建消息队列封装 FreeRTOS 的 xQueueCreate,创建一个可存储 MessageContext 类型消息的队列,队列长度由 num 决定。
消息队列注销MessageDeregister(handle)删除消息队列封装 FreeRTOS 的 vQueueDelete,释放消息队列所占用的资源。
消息队列清空MessageClear(handle)清空消息队列封装 FreeRTOS 的 xQueueReset,将队列中的所有消息清除。
消息传输
消息发送MessageSendMessageSendFromISRMessageSendx发送消息到队列- MessageSend: 用于任务上下文发送消息。 - MessageSendFromISR: 用于中断服务例程发送消息。 - MessageSendx: 阻塞式发送,等待直到消息成功发送(不可用于 ISR)。
消息接收MessageRecv从队列接收消息封装 FreeRTOS 的 xQueueReceive,支持超时等待;读取到的消息会从队列中移除(即出队)。
内存管理
内存分配osPortMallocosPortMallocFromEnd动态内存分配封装内存分配函数;在调试模式下(定义 OS_MEM_DEBUG)会打印分配信息(文件名、函数名、行号)。
内存释放osPortFree释放动态分配的内存对通过 osPortMalloc 分配的内存进行释放。
剩余内存查询osPortRemainMem获取系统剩余内存用于监控系统当前可用内存大小。
任务调度与延时
任务延时osTaskDelay延时任务执行封装 FreeRTOS 的延时函数,实现任务等待指定的 tick 数。
互斥锁同步
互斥锁创建osMutexCreate()创建互斥锁封装 FreeRTOS 的 xSemaphoreCreateMutex,用于创建互斥锁,保护共享资源。
互斥锁获取osMutexLock(mutex_id)osMutexLock_5ms(mutex_id)osMutexLock_1000ms(mutex_id)获取互斥锁分别提供无限期等待、最多等待 5 毫秒和 1000 毫秒三种方式,保证任务对共享资源的互斥访问。
互斥锁释放osMutexUnlock(mutex_id)释放互斥锁封装 FreeRTOS 的 xSemaphoreGive,释放已经获取的互斥锁。
其他功能
堆初始化prvInitialiseHeap初始化系统堆系统启动时调用,完成内存堆的初始化工作。
系统负载监控InstantMcpsFull读取并重置瞬时 MCPS 值用于监控系统负载,读取当前 MCPS(可能代表处理器负载)并将其清零,便于后续的负载统计。