#include "nucTask.hpp" #include "nuc.h" #include "userTask.h" #include "TopDefine.h"//事件组的一些东西 #include "FreeRTOS.h" #include #include #ifdef DEBUG NUC_t cmd_fromnuc; #endif void Function_nuc(void *argument) { (void)argument; /* 未使用argument,消除警告 */ const uint32_t delay_tick = osKernelGetTickFreq() / TASK_FREQ_AI; NUC_Init(&cmd_fromnuc); HAL_GPIO_WritePin(LED_G_GPIO_Port,LED_G_Pin,GPIO_PIN_SET); uint32_t tick = osKernelGetTickCount(); while(1) { #ifdef DEBUG task_struct.stack_water_mark.nuc = osThreadGetStackSpace(osThreadGetId()); #endif NUC_StartReceiving(); //NUC_RawParse(&cmd_fromnuc); //NUC_SendPacket(&send, sizeof(send)); // 发送数据包 //掉线处理有空写 // if(NUC_WaitDmaCplt()) // { // NUC_RawParse(&cmd_fromnuc); // } // else // { // NUC_HandleOffline(&cmd_fromnuc); // } // 假设你在主循环或任务里这样用 if (NUC_RawParse(&cmd_fromnuc) == DEVICE_OK) { osMessageQueueReset(task_struct.msgq.nuc); // 清空消息队列 osMessageQueuePut(task_struct.msgq.nuc,&(cmd_fromnuc),0,0); } else { NUC_HandleOffline(&cmd_fromnuc); } osDelay(2); tick += delay_tick; /* 计算下一个唤醒时刄1ķ*/ osDelayUntil(tick); } }