#ifndef __OS_H__ #define __OS_H__ #include "FreeRTOSConfig.h" #include "FreeRTOS.h" #include "task.h" #include "semphr.h" typedef struct { uint32_t free_heap_size; ///< 空闲堆大小 uint32_t min_free_heap_size; ///< 最小空闲堆大小 uint32_t min_free_stack_size; ///< 最小空闲栈大小 } os_t; static inline void os_read(os_t *os) { os->free_heap_size = xPortGetFreeHeapSize(); os->min_free_heap_size = xPortGetMinimumEverFreeHeapSize(); os->min_free_stack_size = uxTaskGetStackHighWaterMark(NULL); } // 禁止任务抢占 static inline void os_task_preemption_disable(void) { taskENTER_CRITICAL(); } // 允许任务抢占 static inline void os_task_preemption_enable(void) { taskEXIT_CRITICAL(); } #endif // __OS_H__