#include "nucTask.hpp" #include "nuc.h" #include "userTask.h" #include "TopDefine.h" //事件组的一些东西 #include "FreeRTOS.h" #include #include #include "bsp_buzzer.h" #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); 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) { //BSP_Buzzer_Stop(); HAL_GPIO_WritePin(LED_G_GPIO_Port, LED_G_Pin, GPIO_PIN_SET); HAL_GPIO_WritePin(LED_R_GPIO_Port, LED_R_Pin, GPIO_PIN_RESET); osMessageQueueReset(task_struct.msgq.nuc); // 清空消息队列 osMessageQueuePut(task_struct.msgq.nuc, &(cmd_fromnuc), 0, 0); } else { // BSP_Buzzer_Start(); // BSP_Buzzer_Set(1, 5000); HAL_GPIO_WritePin(LED_G_GPIO_Port, LED_G_Pin, GPIO_PIN_RESET); HAL_GPIO_WritePin(LED_R_GPIO_Port, LED_R_Pin, GPIO_PIN_SET); NUC_HandleOffline(&cmd_fromnuc); } tick += delay_tick; /* 计算下一个唤醒时刄1ķ*/ osDelayUntil(tick); } }