diff --git a/Core/Src/freertos.c b/Core/Src/freertos.c index 973c4fd..d4abddb 100644 --- a/Core/Src/freertos.c +++ b/Core/Src/freertos.c @@ -33,7 +33,7 @@ // #include "bsp_dwt.h" // // #include "ins_task.h" // #include "bsp_log.h" - +#include "dev_cmd.h" /* USER CODE END Includes */ /* Private typedef -----------------------------------------------------------*/ @@ -136,20 +136,30 @@ void StartINSTASK(void const *argument); /* USER CODE END FunctionPrototypes */ void StartDefaultTask(void *argument); + void ShootTask(void *argument); + void GimbalTask(void *argument); + void ChassisTask(void *argument); + void StartInitTask(void *argument); + void VisionTask(void *argument); + void CmdTask(void *argument); + void RefereeTask(void *argument); + extern void ws2812Task(void *argument); extern void MX_USB_DEVICE_Init(void); + void MX_FREERTOS_Init(void); /* (MISRA C 2004 rule 8.1) */ /* Hook prototypes */ void vApplicationStackOverflowHook(xTaskHandle xTask, signed char *pcTaskName); + void vApplicationMallocFailedHook(void); /* USER CODE BEGIN 4 */ @@ -184,7 +194,8 @@ void vApplicationMallocFailedHook(void) * @param None * @retval None */ -void MX_FREERTOS_Init(void) { +void MX_FREERTOS_Init(void) +{ /* USER CODE BEGIN Init */ /* USER CODE END Init */ @@ -243,7 +254,6 @@ void MX_FREERTOS_Init(void) { /* USER CODE BEGIN RTOS_EVENTS */ /* add events, ... */ /* USER CODE END RTOS_EVENTS */ - } /* USER CODE BEGIN Header_StartDefaultTask */ @@ -416,6 +426,5 @@ __attribute__((noreturn)) void StartINSTASK(void const *argument) } - /* USER CODE END Application */ diff --git a/User_Code/user_task/dev_tasks/dev_cmd.c b/User_Code/user_task/dev_tasks/dev_cmd.c index 79a34e8..eda4775 100644 --- a/User_Code/user_task/dev_tasks/dev_cmd.c +++ b/User_Code/user_task/dev_tasks/dev_cmd.c @@ -19,24 +19,28 @@ static float current_energy_j = 0.0f; void RobotCMDInit() { chassis_power_meter = PowerMeterInit(&hfdcan1); - if(chassis_power_meter == NULL) + if (chassis_power_meter == NULL) { LOGERROR("[CMD] Power Meter Init Failed!"); } } // ==================== 4. 在控制任务中读取使用 ==================== -void RobotCMDTask() +void CmdTask() { - if(chassis_power_meter != NULL) + RobotCMDInit(); + while (1) { - current_power_w = PowerMeterGetPower(chassis_power_meter); - current_voltage_v = PowerMeterGetVoltage(chassis_power_meter); - current_energy_j = PowerMeterGetEnergy(chassis_power_meter); + if (chassis_power_meter != NULL) + { + current_power_w = PowerMeterGetPower(chassis_power_meter); + current_voltage_v = PowerMeterGetVoltage(chassis_power_meter); + current_energy_j = PowerMeterGetEnergy(chassis_power_meter); - // 你可以将获取到的功率写入要发送给底盘的 cmd 中,例如限制最大速度 - // chassis_cmd_send.real_power = current_power_w; + // 你可以将获取到的功率写入要发送给底盘的 cmd 中,例如限制最大速度 + // chassis_cmd_send.real_power = current_power_w; + } + + osDelay(10); // 根据实际需要调整读取频率 } - - osDelay(10); // 根据实际需要调整读取频率 -} \ No newline at end of file +} diff --git a/User_Code/user_task/half_steering/halfsteering_cmd.c b/User_Code/user_task/half_steering/halfsteering_cmd.c index 9061843..9a81bd6 100644 --- a/User_Code/user_task/half_steering/halfsteering_cmd.c +++ b/User_Code/user_task/half_steering/halfsteering_cmd.c @@ -55,7 +55,7 @@ void RobotCMDInit(void) /** * @brief 任务核心循环 (放置于 RTOS Task 中) */ -void RobotCMDTask(void) +void CmdTask(void) { if (!task_data.init_done) return; diff --git a/User_Code/user_task/half_steering/halfsteering_cmd.h b/User_Code/user_task/half_steering/halfsteering_cmd.h index f1000d5..e37ff18 100644 --- a/User_Code/user_task/half_steering/halfsteering_cmd.h +++ b/User_Code/user_task/half_steering/halfsteering_cmd.h @@ -9,6 +9,6 @@ void RobotCMDInit(void); /** * @brief 机器人核心控制任务,200Hz频率运行(必须高于视觉发送频率) */ -void RobotCMDTask(void); +void CmdTask(void); #endif // HALFSTEERING_CMD_H diff --git a/ozonedeb/windebnewestux.jdebug b/ozonedeb/windebnewestux.jdebug index e2fce1d..f1f9552 100644 --- a/ozonedeb/windebnewestux.jdebug +++ b/ozonedeb/windebnewestux.jdebug @@ -22,12 +22,12 @@ void OnProjectLoad (void) { // // Dialog-generated settings // - Project.AddPathSubstitute ("D:/RM/Elec Control/TronOneH7_Scaffold/ozonedeb", "$(ProjectDir)"); - Project.AddPathSubstitute ("d:/rm/elec control/trononeh7_scaffold/ozonedeb", "$(ProjectDir)"); Project.SetDevice ("STM32H723VG"); - Project.SetHostIF ("USB", "602717886"); + Project.SetHostIF ("USB", "602712948"); Project.SetTargetIF ("SWD"); Project.SetTIFSpeed ("4 MHz"); + Project.AddPathSubstitute ("D:/RM/Elec Control/TronOneH7_Scaffold/ozonedeb", "$(ProjectDir)"); + Project.AddPathSubstitute ("d:/rm/elec control/trononeh7_scaffold/ozonedeb", "$(ProjectDir)"); Project.AddSvdFile ("$(InstallDir)/Config/CPU/Cortex-M7F.svd"); Project.AddSvdFile ("D:/ST/STM32CubeCLT_1.19.0/STMicroelectronics_CMSIS_SVD/STM32H723.svd"); // diff --git a/ozonedeb/windebnewestux.jdebug.user b/ozonedeb/windebnewestux.jdebug.user index 007fc3d..285cb18 100644 --- a/ozonedeb/windebnewestux.jdebug.user +++ b/ozonedeb/windebnewestux.jdebug.user @@ -1,52 +1,62 @@ -Breakpoint=D:/RM/Elec Control/TronOneH7_Scaffold/User_Code/module/periph/buzzer/buzzer.cpp:336:1, State=BP_STATE_DISABLED +Breakpoint=D:/RM/Elec Control/TronOneH7_Scaffold/User_Code/user_task/dev_tasks/dev_cmd.c:30, State=BP_STATE_ON GraphedExpression="(QEKF_INS).Roll", Color=#a00909 -OpenDocument="ws2812.c", FilePath="D:/RM/Elec Control/TronOneH7_Scaffold/User_Code/module/periph/ws2812/ws2812.c", Line=0 +OpenDocument="xidipwmeter.c", FilePath="D:/RM/Elec Control/TronOneH7_Scaffold/User_Code/module/periph/power_meters/xiditech/xidipwmeter.c", Line=114 +OpenDocument="cmsis_os2.c", FilePath="D:/RM/Elec Control/TronOneH7_Scaffold/Middlewares/Third_Party/FreeRTOS/Source/CMSIS_RTOS_V2/cmsis_os2.c", Line=871 +OpenDocument="freertos.c", FilePath="D:/RM/Elec Control/TronOneH7_Scaffold/Core/Src/freertos.c", Line=366 +OpenDocument="stm32h7xx_hal.c", FilePath="D:/RM/Elec Control/TronOneH7_Scaffold/Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal.c", Line=404 +OpenDocument="stm32h7xx_it.c", FilePath="D:/RM/Elec Control/TronOneH7_Scaffold/Core/Src/stm32h7xx_it.c", Line=306 +OpenDocument="stm32h7xx_hal_spi.c", FilePath="D:/RM/Elec Control/TronOneH7_Scaffold/Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_spi.c", Line=1536 OpenDocument="buzzer.cpp", FilePath="D:/RM/Elec Control/TronOneH7_Scaffold/User_Code/module/periph/buzzer/buzzer.cpp", Line=319 OpenDocument="rc.c", FilePath="D:/RM/Elec Control/TronOneH7_Scaffold/User_Code/module/periph/remote_control/rc.c", Line=0 -OpenDocument="delayticks.c", FilePath="D:/RM/Elec Control/TronOneH7_Scaffold/User_Code/bsp/delayticks/delayticks.c", Line=0 -OpenDocument="bsp_dwt.c", FilePath="D:/RM/Elec Control/TronOneH7_Scaffold/User_Code/bsp/dwt/bsp_dwt.c", Line=93 -OpenDocument="main.c", FilePath="D:/RM/Elec Control/TronOneH7_Scaffold/Core/Src/main.c", Line=69 +OpenDocument="delayticks.c", FilePath="D:/RM/Elec Control/TronOneH7_Scaffold/User_Code/bsp/delayticks/delayticks.c", Line=4 +OpenDocument="port.c", FilePath="D:/RM/Elec Control/TronOneH7_Scaffold/Middlewares/Third_Party/FreeRTOS/Source/portable/GCC/ARM_CM4F/port.c", Line=217 +OpenDocument="bsp_dwt.c", FilePath="D:/RM/Elec Control/TronOneH7_Scaffold/User_Code/bsp/dwt/bsp_dwt.c", Line=15 OpenDocument="robot.c", FilePath="D:/RM/Elec Control/TronOneH7_Scaffold/User_Code/application/robot.c", Line=33 -OpenDocument="tasks.c", FilePath="D:/RM/Elec Control/TronOneH7_Scaffold/Middlewares/Third_Party/FreeRTOS/Source/tasks.c", Line=2304 -OpenDocument="stm32h7xx_hal.c", FilePath="D:/RM/Elec Control/TronOneH7_Scaffold/Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal.c", Line=404 +OpenDocument="dev_cmd.c", FilePath="D:/RM/Elec Control/TronOneH7_Scaffold/User_Code/user_task/dev_tasks/dev_cmd.c", Line=12 +OpenDocument="tasks.c", FilePath="D:/RM/Elec Control/TronOneH7_Scaffold/Middlewares/Third_Party/FreeRTOS/Source/tasks.c", Line=2305 OpenDocument="list.c", FilePath="D:/RM/Elec Control/TronOneH7_Scaffold/Middlewares/Third_Party/FreeRTOS/Source/list.c", Line=144 OpenDocument="cmsis_gcc.h", FilePath="D:/RM/Elec Control/TronOneH7_Scaffold/Drivers/CMSIS/Include/cmsis_gcc.h", Line=264 -OpenDocument="cmsis_os2.c", FilePath="D:/RM/Elec Control/TronOneH7_Scaffold/Middlewares/Third_Party/FreeRTOS/Source/CMSIS_RTOS_V2/cmsis_os2.c", Line=872 -OpenDocument="stm32h7xx_it.c", FilePath="D:/RM/Elec Control/TronOneH7_Scaffold/Core/Src/stm32h7xx_it.c", Line=99 -OpenDocument="stm32h7xx_hal_spi.c", FilePath="D:/RM/Elec Control/TronOneH7_Scaffold/Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_spi.c", Line=3887 +OpenDocument="main.c", FilePath="D:/RM/Elec Control/TronOneH7_Scaffold/Core/Src/main.c", Line=71 +OpenDocument="stm32h7xx_hal_fdcan.c", FilePath="D:/RM/Elec Control/TronOneH7_Scaffold/Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_fdcan.c", Line=2945 +OpenDocument="ws2812.c", FilePath="D:/RM/Elec Control/TronOneH7_Scaffold/User_Code/module/periph/ws2812/ws2812.c", Line=0 OpenDocument="ins_task.c", FilePath="D:/RM/Elec Control/TronOneH7_Scaffold/User_Code/module/periph/imu/ins_task.c", Line=0 OpenToolbar="Debug", Floating=0, x=0, y=0 OpenToolbar="Breakpoints", Floating=0, x=1, y=0 -OpenWindow="Call Stack", DockArea=RIGHT, x=0, y=0, w=681, h=254, FilterBarShown=0, TotalValueBarShown=0, ToolBarShown=0 +OpenWindow="Call Stack", DockArea=RIGHT, x=0, y=0, w=681, h=256, FilterBarShown=0, TotalValueBarShown=0, ToolBarShown=0 OpenWindow="Registers 1", DockArea=BOTTOM, x=1, y=0, w=361, h=181, FilterBarShown=0, TotalValueBarShown=0, ToolBarShown=0, FilteredItems=[], RefreshRate=1 OpenWindow="Source Files", DockArea=LEFT, x=0, y=0, w=551, h=273, FilterBarShown=0, TotalValueBarShown=0, ToolBarShown=0 OpenWindow="Disassembly", DockArea=BOTTOM, x=2, y=0, w=629, h=181, FilterBarShown=0, TotalValueBarShown=0, ToolBarShown=0 OpenWindow="Break & Tracepoints", DockArea=LEFT, x=0, y=1, w=551, h=282, FilterBarShown=0, TotalValueBarShown=0, ToolBarShown=0, VectorCatchIndexMask=254 -OpenWindow="Memory 1", DockArea=BOTTOM, x=3, y=0, w=465, h=181, FilterBarShown=0, TotalValueBarShown=0, ToolBarShown=0, EditorAddress=0x20005E30 -OpenWindow="Global Data", DockArea=RIGHT, x=0, y=3, w=681, h=310, FilterBarShown=0, TotalValueBarShown=0, ToolBarShown=0 -OpenWindow="Watched Data 1", DockArea=LEFT, x=0, y=2, w=551, h=282, FilterBarShown=0, TotalValueBarShown=0, ToolBarShown=0 -OpenWindow="Functions", DockArea=LEFT, x=0, y=3, w=551, h=235, TabPos=1, TopOfStack=0, FilterBarShown=0, TotalValueBarShown=0, ToolBarShown=0 -OpenWindow="Call Graph", DockArea=LEFT, x=0, y=3, w=551, h=235, TabPos=2, TopOfStack=1, FilterBarShown=0, TotalValueBarShown=0, ToolBarShown=0 +OpenWindow="Memory 1", DockArea=BOTTOM, x=3, y=0, w=465, h=181, FilterBarShown=0, TotalValueBarShown=0, ToolBarShown=0, EditorAddress=0x2000B98C +OpenWindow="Global Data", DockArea=RIGHT, x=0, y=3, w=681, h=305, FilterBarShown=0, TotalValueBarShown=0, ToolBarShown=0 +OpenWindow="Watched Data 1", DockArea=LEFT, x=0, y=2, w=551, h=280, FilterBarShown=0, TotalValueBarShown=0, ToolBarShown=0 +OpenWindow="Functions", DockArea=LEFT, x=0, y=3, w=551, h=237, TabPos=1, TopOfStack=0, FilterBarShown=0, TotalValueBarShown=0, ToolBarShown=0 +OpenWindow="Call Graph", DockArea=LEFT, x=0, y=3, w=551, h=237, TabPos=2, TopOfStack=1, FilterBarShown=0, TotalValueBarShown=0, ToolBarShown=0 OpenWindow="Data Sampling", DockArea=BOTTOM, x=0, y=0, w=1102, h=181, FilterBarShown=0, TotalValueBarShown=0, ToolBarShown=0, VisibleTab=0, UniformSampleSpacing=0 -OpenWindow="Timeline", DockArea=RIGHT, x=0, y=2, w=681, h=303, FilterBarShown=0, TotalValueBarShown=0, ToolBarShown=1, DataPaneShown=1, PowerPaneShown=0, CodePaneShown=0, PinCursor="Cursor Movable", TimePerDiv="1 s / Div", TimeStampFormat="Time", DataGraphDrawAsPoints=0, DataGraphLegendShown=1, DataGraphUniformSampleSpacing=0, DataGraphLegendPosition="435;0", PowerGraphDrawAsPoints=0, PowerGraphLegendShown=0, PowerGraphAvgFilterTime=Off, PowerGraphAvgFilterLen=Off, PowerGraphUniformSampleSpacing=0, PowerGraphLegendPosition="459;-65", CodeGraphLegendShown=0, CodeGraphLegendPosition="475;0" -OpenWindow="Console", DockArea=LEFT, x=0, y=3, w=551, h=235, TabPos=0, TopOfStack=0, FilterBarShown=0, TotalValueBarShown=0, ToolBarShown=0 -OpenWindow="FreeRTOS", DockArea=RIGHT, x=0, y=1, w=681, h=225, FilterBarShown=0, TotalValueBarShown=0, ToolBarShown=0, Showing="Task List" +OpenWindow="Timeline", DockArea=RIGHT, x=0, y=2, w=681, h=299, FilterBarShown=0, TotalValueBarShown=0, ToolBarShown=1, DataPaneShown=1, PowerPaneShown=0, CodePaneShown=0, PinCursor="Cursor Movable", TimePerDiv="1 s / Div", TimeStampFormat="Time", DataGraphDrawAsPoints=0, DataGraphLegendShown=1, DataGraphUniformSampleSpacing=0, DataGraphLegendPosition="435;0", PowerGraphDrawAsPoints=0, PowerGraphLegendShown=0, PowerGraphAvgFilterTime=Off, PowerGraphAvgFilterLen=Off, PowerGraphUniformSampleSpacing=0, PowerGraphLegendPosition="459;-65", CodeGraphLegendShown=0, CodeGraphLegendPosition="475;0" +OpenWindow="Console", DockArea=LEFT, x=0, y=3, w=551, h=237, TabPos=0, TopOfStack=0, FilterBarShown=0, TotalValueBarShown=0, ToolBarShown=0 +OpenWindow="FreeRTOS", DockArea=RIGHT, x=0, y=1, w=681, h=232, FilterBarShown=0, TotalValueBarShown=0, ToolBarShown=0, Showing="Task List" TableHeader="Functions", SortCol="Name", SortOrder="ASCENDING", VisibleCols=["Name";"Address";"Size";"#Insts";"Source"], ColWidths=[1164;100;100;100;100] -TableHeader="Global Data", SortCol="Name", SortOrder="ASCENDING", VisibleCols=["Name";"Value";"Location";"Size";"Type";"Scope"], ColWidths=[222;130;100;54;95;486] +TableHeader="Global Data", SortCol="Name", SortOrder="ASCENDING", VisibleCols=["Name";"Value";"Location";"Size";"Type";"Scope"], ColWidths=[222;130;100;54;95;100] TableHeader="Vector Catches", SortCol="None", SortOrder="ASCENDING", VisibleCols=["";"Vector Catch";"Description"], ColWidths=[50;300;500] TableHeader="Break & Tracepoints", SortCol="None", SortOrder="ASCENDING", VisibleCols=["";"Type";"Location";"Extras"], ColWidths=[100;100;142;209] TableHeader="Call Stack", SortCol="Function", SortOrder="ASCENDING", VisibleCols=["Function";"Stack Frame";"Source";"PC";"Return Address";"Stack Used"], ColWidths=[110;126;190;100;190;100] TableHeader="Source Files", SortCol="File", SortOrder="ASCENDING", VisibleCols=["File";"Status";"Size";"#Insts";"Path"], ColWidths=[229;100;100;100;1046] -TableHeader="Data Sampling Table", SortCol="Index", SortOrder="ASCENDING", VisibleCols=["Index";"Time";" (QEKF_INS).Roll"], ColWidths=[100;100;100] -TableHeader="Data Sampling Setup", SortCol="Expression", SortOrder="ASCENDING", VisibleCols=["Expression";"Type";"Value";"Min";"Max";"Average";"# Changes";"Min. Change";"Max. Change"], ColWidths=[320;100;100;102;100;102;102;118;118] +TableHeader="Data Sampling Table", SortCol="None", SortOrder="ASCENDING", VisibleCols=["Index";"Time";" (QEKF_INS).Roll"], ColWidths=[100;100;100] +TableHeader="Data Sampling Setup", SortCol="Expression", SortOrder="ASCENDING", VisibleCols=["Expression";"Type";"Value";"Min";"Max";"Average";"# Changes";"Min. Change";"Max. Change"], ColWidths=[320;100;110;102;100;110;102;118;118] TableHeader="Power Sampling", SortCol="Index", SortOrder="ASCENDING", VisibleCols=["Index";"Time";"Ch 0"], ColWidths=[100;100;100] TableHeader="Task List", SortCol="Name", SortOrder="ASCENDING", VisibleCols=["Name";"Run Count";"Priority";"Status";"Timeout";"Stack Info (Free / Size)";"ID";"Mutex Count";"Notified Value";"Notify State"], ColWidths=[110;110;110;110;110;110;110;110;110;110] TableHeader="Registers 1", SortCol="Name", SortOrder="ASCENDING", VisibleCols=["Name";"Value";"Description"], ColWidths=[100;105;294] -TableHeader="Watched Data 1", SortCol="Expression", SortOrder="ASCENDING", VisibleCols=["Expression";"Value";"Location"], ColWidths=[171;101;279] +TableHeader="Watched Data 1", SortCol="Expression", SortOrder="ASCENDING", VisibleCols=["Expression";"Value";"Location"], ColWidths=[171;101;258] TableHeader="RegisterSelectionDialog", SortCol="None", SortOrder="ASCENDING", VisibleCols=[], ColWidths=[] TableHeader="Call Graph", SortCol="Name", SortOrder="ASCENDING", VisibleCols=["Name";"Stack Total";"Stack Local";"Code Total";"Code Local";"Depth";"Called From"], ColWidths=[384;100;100;100;100;100;118] TableHeader="TargetExceptionDialog", SortCol="Name", SortOrder="ASCENDING", VisibleCols=["Name";"Value";"Address";"Description"], ColWidths=[27;27;27;38] WatchedExpression="QEKF_INS", RefreshRate=2, Window=Watched Data 1 WatchedExpression="BMI088", RefreshRate=2, Window=Watched Data 1 -WatchedExpression="RobotMode_t", Window=Watched Data 1 \ No newline at end of file +WatchedExpression="RobotMode_t", Window=Watched Data 1 +WatchedExpression="power_meter_instance", RefreshRate=2, Window=Watched Data 1 +WatchedExpression="pm_voltage", RefreshRate=2, Window=Watched Data 1 +WatchedExpression="pm_current", RefreshRate=2, Window=Watched Data 1 +WatchedExpression="measure.voltage", Window=Watched Data 1 +WatchedExpression="PowerMeterInstance", RefreshRate=2, Window=Watched Data 1 \ No newline at end of file