#include "user_task.h" #include "vofa.h" /******************************************************************* 该任务用来给上位机打印固定频率的数据 如波形图 如电机的开环曲线等等 用消息队列将需要打印的数据传送给该线程 注意需要在init里设定传送的数据的大小 后调用发送函数用虚拟串口发送给上位机 *********************************************************************/ #include "can_use.h" #ifdef DEBUG //此处数组的大小为打印的通道数量值 float vofa_data[6]= {0}; CAN_t can_vofa; CAN_Output_t out_print; void Task_data_print(void *argument) { (void)argument;/*消除警告*/ const uint32_t delay_tick = osKernelGetTickFreq() / TASK_FREQ_PRINT ; uint32_t tick = osKernelGetTickCount(); while(1) { /* 记录任务所使用的的栈空间 */ task_runtime.stack_water_mark.data_print = osThreadGetStackSpace(osThreadGetId()); // if (osMessageQueueGet(task_runtime.msgq.can.output.chassis6020, // &(out_print.chassis6020), 0, 0) == osOK) // { // // } // if (osMessageQueueGet(task_runtime.msgq.can.output.chassis3508, // &(out_print.motor3508), 0, 0) == osOK) // { // // } // if (osMessageQueueGet(task_runtime.msgq.can.output.chassis5065, // &(out_print.chassis5065), 0, 0) == osOK) // { // // } // osMessageQueueGet(task_runtime.msgq.can.feedback.chassisfed6020, &can_vofa, NULL, 0); // // osMessageQueueGet(task_runtime.msgq.can.feedback.chassisfed5065, &can_vofa, NULL, 0); // // osMessageQueueGet(task_runtime.msgq.can.feedback.chassisfed3508, &can_vofa, NULL, 0); // //// vofa_data[0] = can_vofa.motor.chassis6020.as_array[0].torque_current; // vofa_data[0] = can_vofa.motor.chassis6020.as_array[0].rotor_angle; // vofa_data[1] = out_print.chassis6020.as_array[0]; //// // vofa_tx_main(vofa_data); tick += delay_tick; osDelayUntil(tick); } } #endif