线上营销方式6种,西安网站seo工作室,h5响应式网站上海,如何查看网站用什么代码做的文章目录 核心文件头文件内存管理文件入口函数数据类型前缀 核心文件
最核心文件#xff1a;task.c和list.c
文件作用tasks.c必需#xff0c;任务操作list.c必须#xff0c;列表queue.c基本必需#xff0c;提供队列操作、信号量(semaphore)操作timer.c可选#xff0c;so… 文章目录 核心文件头文件内存管理文件入口函数数据类型前缀 核心文件
最核心文件task.c和list.c
文件作用tasks.c必需任务操作list.c必须列表queue.c基本必需提供队列操作、信号量(semaphore)操作timer.c可选software timerevent_groups.c可选提供 event group 功能croutine.c可选过时了
头文件
头文件作用FreeRTOSConfig.hFreeRTOS的配置文件用于选择调度算法如configUSE_PREEMPTIONFreeRTOS.h使用FreeRTOS API函数时必须包含。包含此文件后再引入task.h、queue.h、semphr.h、event_group.h等其他头文件
内存管理文件
文件优点缺点heap_1.c内存分配逻辑简单执行时间可确定仅能分配内存无法回收已分配的内存heap_2.c支持动态内存分配能实现最佳匹配找到最适合请求大小的空闲内存块会产生内存碎片内存分配和回收的执行时间不确定heap_3.c通过调用标准库函数来管理内存兼容性较好由于调用标准库执行速度较慢执行时间不确定heap_4.c能够将相邻的空闲内存块合并有效减少内存碎片可解决碎片问题执行时间不确定heap_5.c在heap_4.c基础上支持不连续的、分隔的内存块管理适应更复杂的内存布局可解决碎片问题执行时间不确定
入口函数
/* Init scheduler */
osKernelInitialize(); /* 初始化FreeRTOS运行环境 */
MX_FREERTOS_Init(); /* 创建任务 *//* Start scheduler */
osKernelStart(); /* 启动调度器 */数据类型 TickType_t FreeRTOS 配置了一个周期性的时钟中断Tick Interrupt每发生一次中断中断次数累加这被称为 tick counttick count 这个变量的类型就是 TickType_tTickType_t 可以是 16 位的也可以是 32 位的FreeRTOSConfig.h 中定义 configUSE_16_BIT_TICKS 时TickType_t 就是 uint16_t否则 TickType_t 就是 uint32_t对于 32 位架构建议把 TickType_t 配置为 uint32_t BaseType_t 这是该架构最高效的数据类型32 位架构中它就是 uint32_t16 位架构中它就是 uint16_t8 位架构中它就是 uint8_tBaseType_t 通常用作简单的返回值的类型还有逻辑值比如 pdTRUE/pdFALSE
前缀
变量名前缀含义ccharsint16_t, shortlint32_t, longxBaseType_t其他非标准的类型结构体、task handle、queue handle等uunsignedp指针ucuint8_t, unsigned charpcchar 指针
函数名的前缀有2部分返回值类型、在哪个文件定义。
函数名前缀含义vTaskPrioritySet返回值类型void 在task.c中定义xQueueReceive返回值类型BaseType_t 在queue.c中定义pvTimerGetTimerID返回值类型pointer to void 在tmer.c中定义
宏的名字是大写可以添加小写的前缀。前缀是用来表示宏在哪个文件中定义。
宏的前缀含义在哪个文件里定义port如portMAX_DELAYportable.h或portmacro.htask如taskENTER_CRITICAL()task.hpd如pdTRUEprojdefs.hconfig如configUSE_PREEMPTIONFreeRTOSConfig.herr如errQUEUE_FULLprojdefs.h
通用的定义
宏值pdTRUE1pdFALSE0pdPASS1pdFAIL0