渡水无言个人主页渡水无言❄专栏传送门《linux专栏》《嵌入式linux驱动开发》《linux系统移植专栏》❄专栏传送门《freertos专栏》 《STM32 HAL库专栏》《linux裸机开发专栏》❄专栏传送门《产品测评专栏》 《Ai智能体专栏 《ROS开发专栏》❄专栏传送门《BMS专栏》⭐️流水不争先争的是滔滔不绝博主简介第二十届中国研究生电子设计竞赛全国二等奖 |国家奖学金 | 省级三好学生| 省级优秀毕业生获得者 | csdn新星杯TOP1 | 半导纵横专栏博主 | 211在读研究生在这里主要分享自己学习的linux嵌入式领域知识有分享错误或者不足的地方欢迎大佬指导也欢迎各位大佬互相三连​目录前言一、任务定位与调用关系二、freeertos完整源码总结前言前面已经讲解完采集、保护、SOC 算法、充放电均衡、调试打印五大核心任务本期博客介绍整套架构最后一个任务CommTask通信管理任务。该任务作为 BMS 与外部设备上位机、触摸屏、储能逆变器交互的统一入口当前为预留空框架未集成具体通信协议后期可快速对接自定义串口协议。整体调度规则、优先级、栈配置和 Info 信息任务保持统一通信优先级最低保障电池保护、采集等高实时业务优先运行。一、任务定位与调用关系数据上行打包 SOC、电压、电流、温度、故障、均衡状态上传上位机指令下行接收远程指令遥控充放电、均衡开关、参数配置整套任务优先级排序数值越大优先级越低Protect Monitor Analysis Energy Info Comm调用栈BMS_CommInit // 通信任务初始化、创建线程 └── BMS_CommTaskEntry // 2000ms周期主循环预留通信处理逻辑二、freeertos完整源码#define BMS_DBG_TAG Comm #include stdio.h // FreeRTOS内核头文件 #include FreeRTOS.h #include task.h #include main.h #include bms_comm.h // 底层硬件驱动 #include bms_hal_monitor.h #include bms_hal_control.h // 全业务全局数据 #include bms_monitor.h #include bms_energy.h #include bms_analysis.h #include bms_global.h #include bms_debug.h // 任务配置参数 #define COMM_TASK_STACK_SIZE 512U #define COMM_TASK_PRIORITY 13U #define COMM_TASK_TIMESLICE 25U #define COMM_TASK_PERIOD 2000U static void BMS_CommTaskEntry(void *pvParameters); // 通信任务初始化 void BMS_CommInit(void) { BaseType_t xRet; TaskHandle_t commHandle NULL; xRet xTaskCreate( BMS_CommTaskEntry, CommTask, COMM_TASK_STACK_SIZE, NULL, COMM_TASK_PRIORITY, commHandle ); if (xRet ! pdPASS) { BMS_ERROR(Create Comm Task Fail\r\n); } } // 通信任务主循环预留通信业务处理区域 static void BMS_CommTaskEntry(void *pvParameters) { (void)pvParameters; BMS_INFO(Communication task ready, waiting protocol development); while(1) { // 待开发区域 // 1.Modbus RTU报文接收、CRC校验、指令解析 // 2.CAN报文组包上传电池实时数据 // 3.上位机遥控指令处理启停充放电、均衡开关、故障复位 // 4.定时上报SOC、压差、温度、故障码等整机参数 // // 周期阻塞延时让出CPU给高优先级安全任务 vTaskDelay(pdMS_TO_TICKS(COMM_TASK_PERIOD)); } }BMS 通信任务上电由BMS_CommInit调用 FreeRTOS 接口周期创建后台线程任务以 2000ms 为周期循环阻塞运行当前预留空白业务处理区域暂无实际收发逻辑后期可在此添加 Modbus、CAN 等通信代码实现电池数据向上位机上报、远程控制指令解析功能该任务整机优先级最低运行时主动让出 CPU保障采集、保护等高实时性电池业务优先调度。总结本期博客介绍了本套系统的CommTask通信管理任务。