diff --git a/Core/Src/freertos.c b/Core/Src/freertos.c index 02be94c..3305764 100644 --- a/Core/Src/freertos.c +++ b/Core/Src/freertos.c @@ -117,30 +117,20 @@ const osThreadAttr_t WS2812Task_attributes = { /* 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); - -void ws2812Task(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 */ @@ -229,6 +219,7 @@ void MX_FREERTOS_Init(void) { /* USER CODE BEGIN RTOS_EVENTS */ /* add events, ... */ /* USER CODE END RTOS_EVENTS */ + } /* USER CODE BEGIN Header_StartDefaultTask */ @@ -238,7 +229,8 @@ void MX_FREERTOS_Init(void) { * @retval None */ /* USER CODE END Header_StartDefaultTask */ -__weak void StartDefaultTask(void *argument) { +__weak void StartDefaultTask(void *argument) +{ /* init code for USB_DEVICE */ MX_USB_DEVICE_Init(); /* USER CODE BEGIN StartDefaultTask */ @@ -256,7 +248,8 @@ __weak void StartDefaultTask(void *argument) { * @retval None */ /* USER CODE END Header_ShootTask */ -__weak void ShootTask(void *argument) { +__weak void ShootTask(void *argument) +{ /* USER CODE BEGIN ShootTask */ /* Infinite loop */ for (;;) { @@ -272,7 +265,8 @@ __weak void ShootTask(void *argument) { * @retval None */ /* USER CODE END Header_GimbalTask */ -__weak void GimbalTask(void *argument) { +__weak void GimbalTask(void *argument) +{ /* USER CODE BEGIN GimbalTask */ /* Infinite loop */ for (;;) { @@ -288,7 +282,8 @@ __weak void GimbalTask(void *argument) { * @retval None */ /* USER CODE END Header_ChassisTask */ -__weak void ChassisTask(void *argument) { +__weak void ChassisTask(void *argument) +{ /* USER CODE BEGIN ChassisTask */ /* Infinite loop */ for (;;) { @@ -304,7 +299,8 @@ __weak void ChassisTask(void *argument) { * @retval None */ /* USER CODE END Header_StartInitTask */ -__weak void StartInitTask(void *argument) { +__weak void StartInitTask(void *argument) +{ /* USER CODE BEGIN StartInitTask */ /* Infinite loop */ for (;;) { @@ -320,7 +316,8 @@ __weak void StartInitTask(void *argument) { * @retval None */ /* USER CODE END Header_VisionTask */ -__weak void VisionTask(void *argument) { +__weak void VisionTask(void *argument) +{ /* USER CODE BEGIN VisionTask */ /* Infinite loop */ for (;;) { @@ -336,7 +333,8 @@ __weak void VisionTask(void *argument) { * @retval None */ /* USER CODE END Header_CmdTask */ -__weak void CmdTask(void *argument) { +__weak void CmdTask(void *argument) +{ /* USER CODE BEGIN CmdTask */ /* Infinite loop */ for (;;) { @@ -352,7 +350,8 @@ __weak void CmdTask(void *argument) { * @retval None */ /* USER CODE END Header_RefereeTask */ -__weak void RefereeTask(void *argument) { +__weak void RefereeTask(void *argument) +{ /* USER CODE BEGIN RefereeTask */ /* Infinite loop */ for (;;) { diff --git a/Core/Src/spi.c b/Core/Src/spi.c index 146f4b8..d7cc610 100644 --- a/Core/Src/spi.c +++ b/Core/Src/spi.c @@ -134,7 +134,7 @@ void MX_SPI6_Init(void) hspi6.Init.CLKPolarity = SPI_POLARITY_LOW; hspi6.Init.CLKPhase = SPI_PHASE_2EDGE; hspi6.Init.NSS = SPI_NSS_SOFT; - hspi6.Init.BaudRatePrescaler = SPI_BAUDRATEPRESCALER_8; + hspi6.Init.BaudRatePrescaler = SPI_BAUDRATEPRESCALER_4; hspi6.Init.FirstBit = SPI_FIRSTBIT_MSB; hspi6.Init.TIMode = SPI_TIMODE_DISABLE; hspi6.Init.CRCCalculation = SPI_CRCCALCULATION_DISABLE; diff --git a/TronOneH7_Scaffold.ioc b/TronOneH7_Scaffold.ioc index 03187df..e42c3c3 100644 --- a/TronOneH7_Scaffold.ioc +++ b/TronOneH7_Scaffold.ioc @@ -870,9 +870,9 @@ SPI2.IPParameters=VirtualType,Mode,Direction,CalculateBaudRate,DataSize,BaudRate SPI2.Mode=SPI_MODE_MASTER SPI2.NSSPMode=SPI_NSS_PULSE_ENABLE SPI2.VirtualType=VM_MASTER -SPI6.BaudRatePrescaler=SPI_BAUDRATEPRESCALER_8 +SPI6.BaudRatePrescaler=SPI_BAUDRATEPRESCALER_4 SPI6.CLKPhase=SPI_PHASE_2EDGE -SPI6.CalculateBaudRate=3.0 MBits/s +SPI6.CalculateBaudRate=6.0 MBits/s SPI6.DataSize=SPI_DATASIZE_8BIT SPI6.Direction=SPI_DIRECTION_2LINES_TXONLY SPI6.IPParameters=VirtualType,Mode,Direction,CalculateBaudRate,DataSize,BaudRatePrescaler,CLKPhase diff --git a/ozonedeb/macdb1.jdebug b/ozonedeb/macdb1.jdebug new file mode 100644 index 0000000..b586ab4 --- /dev/null +++ b/ozonedeb/macdb1.jdebug @@ -0,0 +1,362 @@ +/********************************************************************* +* (c) SEGGER Microcontroller GmbH * +* The Embedded Experts * +* www.segger.com * +********************************************************************** + +File : /Users/tux/CLionProjects/tronone-h7-scaffold/ozonedeb/macdb1.jdebug +Created : 5 Nov 2025 22:49 +Ozone Version : V3.38c +*/ + +/********************************************************************* +* +* OnProjectLoad +* +* Function description +* Project load routine. Required. +* +********************************************************************** +*/ +void OnProjectLoad (void) { + // + // Dialog-generated settings + // + Project.AddPathSubstitute ("/Users/tux/CLionProjects/tronone-h7-scaffold/ozonedeb", "$(ProjectDir)"); + Project.AddPathSubstitute ("/users/tux/clionprojects/tronone-h7-scaffold/ozonedeb", "$(ProjectDir)"); + Project.SetDevice ("STM32H723VG"); + Project.SetHostIF ("USB", "602717886"); + Project.SetTargetIF ("SWD"); + Project.SetTIFSpeed ("4 MHz"); + Project.AddSvdFile ("$(InstallDir)/Config/CPU/Cortex-M7F.svd"); + Project.AddSvdFile ("$(InstallDir)/Config/Peripherals/ARMv7M.svd"); + // + // User settings + // + File.Open ("/Users/tux/CLionProjects/tronone-h7-scaffold/cmake-build-debug/TronOneH7_Scaffold.elf"); +} + +/********************************************************************* +* +* OnStartupComplete +* +* Function description +* Called when program execution has reached/passed +* the startup completion point. Optional. +* +********************************************************************** +*/ +//void OnStartupComplete (void) { +//} + +/********************************************************************* +* +* TargetReset +* +* Function description +* Replaces the default target device reset routine. Optional. +* +* Notes +* This example demonstrates the usage when +* debugging an application in RAM on a Cortex-M target device. +* +********************************************************************** +*/ +//void TargetReset (void) { +// +// unsigned int SP; +// unsigned int PC; +// unsigned int VectorTableAddr; +// +// VectorTableAddr = Elf.GetBaseAddr(); +// // +// // Set up initial stack pointer +// // +// if (VectorTableAddr != 0xFFFFFFFF) { +// SP = Target.ReadU32(VectorTableAddr); +// Target.SetReg("SP", SP); +// } +// // +// // Set up entry point PC +// // +// PC = Elf.GetEntryPointPC(); +// +// if (PC != 0xFFFFFFFF) { +// Target.SetReg("PC", PC); +// } else if (VectorTableAddr != 0xFFFFFFFF) { +// PC = Target.ReadU32(VectorTableAddr + 4); +// Target.SetReg("PC", PC); +// } else { +// Util.Error("Project file error: failed to set entry point PC", 1); +// } +//} + +/********************************************************************* +* +* BeforeTargetReset +* +* Function description +* Event handler routine. Optional. +* +********************************************************************** +*/ +//void BeforeTargetReset (void) { +//} + +/********************************************************************* +* +* AfterTargetReset +* +* Function description +* Event handler routine. Optional. +* The default implementation initializes SP and PC to reset values. +** +********************************************************************** +*/ +void AfterTargetReset (void) { + _SetupTarget(); +} + +/********************************************************************* +* +* DebugStart +* +* Function description +* Replaces the default debug session startup routine. Optional. +* +********************************************************************** +*/ +//void DebugStart (void) { +//} + +/********************************************************************* +* +* TargetConnect +* +* Function description +* Replaces the default target IF connection routine. Optional. +* +********************************************************************** +*/ +//void TargetConnect (void) { +//} + +/********************************************************************* +* +* BeforeTargetConnect +* +* Function description +* Event handler routine. Optional. +* +********************************************************************** +*/ +//void BeforeTargetConnect (void) { +//} + +/********************************************************************* +* +* AfterTargetConnect +* +* Function description +* Event handler routine. Optional. +* +********************************************************************** +*/ +//void AfterTargetConnect (void) { +//} + +/********************************************************************* +* +* TargetDownload +* +* Function description +* Replaces the default program download routine. Optional. +* +********************************************************************** +*/ +//void TargetDownload (void) { +//} + +/********************************************************************* +* +* BeforeTargetDownload +* +* Function description +* Event handler routine. Optional. +* +********************************************************************** +*/ +//void BeforeTargetDownload (void) { +//} + +/********************************************************************* +* +* AfterTargetDownload +* +* Function description +* Event handler routine. Optional. +* The default implementation initializes SP and PC to reset values. +* +********************************************************************** +*/ +void AfterTargetDownload (void) { + _SetupTarget(); +} + +/********************************************************************* +* +* BeforeTargetDisconnect +* +* Function description +* Event handler routine. Optional. +* +********************************************************************** +*/ +//void BeforeTargetDisconnect (void) { +//} + +/********************************************************************* +* +* AfterTargetDisconnect +* +* Function description +* Event handler routine. Optional. +* +********************************************************************** +*/ +//void AfterTargetDisconnect (void) { +//} + +/********************************************************************* +* +* AfterTargetHalt +* +* Function description +* Event handler routine. Optional. +* +********************************************************************** +*/ +//void AfterTargetHalt (void) { +//} + +/********************************************************************* +* +* BeforeTargetResume +* +* Function description +* Event handler routine. Optional. +* +********************************************************************** +*/ +//void BeforeTargetResume (void) { +//} + +/********************************************************************* +* +* OnSnapshotLoad +* +* Function description +* Called upon loading a snapshot. Optional. +* +* Additional information +* This function is used to restore the target state in cases +* where values cannot simply be written to the target. +* Typical use: GPIO clock needs to be enabled, before +* GPIO is configured. +* +********************************************************************** +*/ +//void OnSnapshotLoad (void) { +//} + +/********************************************************************* +* +* OnSnapshotSave +* +* Function description +* Called upon saving a snapshot. Optional. +* +* Additional information +* This function is usually used to save values of the target +* state which can either not be trivially read, +* or need to be restored in a specific way or order. +* Typically use: Memory Mapped Registers, +* such as PLL and GPIO configuration. +* +********************************************************************** +*/ +//void OnSnapshotSave (void) { +//} + +/********************************************************************* +* +* OnError +* +* Function description +* Called when an error ocurred. Optional. +* +********************************************************************** +*/ +//void OnError (void) { +//} + +/********************************************************************* +* +* AfterProjectLoad +* +* Function description +* After Project load routine. Optional. +* +********************************************************************** +*/ +//void AfterProjectLoad (void) { +//} + +/********************************************************************* +* +* OnDebugStartBreakSymbolReached +* +* Function description +* Called when program execution has reached/passed +* the symbol to be breaked at during debug start. Optional. +* +********************************************************************** +*/ +//void OnDebugStartBreakSymReached (void) { +//} + +/********************************************************************* +* +* _SetupTarget +* +* Function description +* Setup the target. +* Called by AfterTargetReset() and AfterTargetDownload(). +* +* Auto-generated function. May be overridden by Ozone. +* +********************************************************************** +*/ +void _SetupTarget(void) { + unsigned int SP; + unsigned int PC; + unsigned int VectorTableAddr; + + VectorTableAddr = Elf.GetBaseAddr(); + // + // Set up initial stack pointer + // + SP = Target.ReadU32(VectorTableAddr); + if (SP != 0xFFFFFFFF) { + Target.SetReg("SP", SP); + } + // + // Set up entry point PC + // + PC = Elf.GetEntryPointPC(); + if (PC != 0xFFFFFFFF) { + Target.SetReg("PC", PC); + } else { + Util.Error("Project script error: failed to set up entry point PC", 1); + } +} \ No newline at end of file diff --git a/ozonedeb/macdb1.jdebug.user b/ozonedeb/macdb1.jdebug.user new file mode 100644 index 0000000..7c2f53d --- /dev/null +++ b/ozonedeb/macdb1.jdebug.user @@ -0,0 +1,29 @@ + + + +Breakpoint=/Users/tux/CLionProjects/tronone-h7-scaffold/User_Code/application/indicator_app/ws2812status.c:38, State=BP_STATE_ON +OpenDocument="ws2812.c", FilePath="/Users/tux/CLionProjects/tronone-h7-scaffold/User_Code/module/periph/ws2812/ws2812.c", Line=18 +OpenDocument="ws2812status.c", FilePath="/Users/tux/CLionProjects/tronone-h7-scaffold/User_Code/application/indicator_app/ws2812status.c", Line=31 +OpenDocument="delayticks.h", FilePath="/Users/tux/CLionProjects/tronone-h7-scaffold/User_Code/bsp/delayticks/delayticks.h", Line=0 +OpenDocument="delayticks.c", FilePath="/Users/tux/CLionProjects/tronone-h7-scaffold/User_Code/bsp/delayticks/delayticks.c", Line=12 +OpenDocument="tasks.c", FilePath="/Users/tux/CLionProjects/tronone-h7-scaffold/Middlewares/Third_Party/FreeRTOS/Source/tasks.c", Line=2304 +OpenDocument="main.c", FilePath="/Users/tux/CLionProjects/tronone-h7-scaffold/Core/Src/main.c", Line=70 +OpenToolbar="Debug", Floating=0, x=0, y=0 +OpenWindow="Disassembly", DockArea=BOTTOM, x=2, y=0, w=401, h=212, FilterBarShown=0, TotalValueBarShown=0, ToolBarShown=0 +OpenWindow="Global Data", DockArea=BOTTOM, x=3, y=0, w=518, h=212, FilterBarShown=0, TotalValueBarShown=0, ToolBarShown=0 +OpenWindow="Watched Data 1", DockArea=LEFT, x=0, y=0, w=479, h=404, TabPos=0, TopOfStack=1, FilterBarShown=0, TotalValueBarShown=0, ToolBarShown=0 +OpenWindow="Functions", DockArea=LEFT, x=0, y=0, w=479, h=404, TabPos=1, TopOfStack=0, FilterBarShown=0, TotalValueBarShown=0, ToolBarShown=0 +OpenWindow="Data Sampling", DockArea=BOTTOM, x=0, y=0, w=268, h=212, FilterBarShown=0, TotalValueBarShown=0, ToolBarShown=0, VisibleTab=0, UniformSampleSpacing=0 +OpenWindow="Timeline", DockArea=RIGHT, x=0, y=0, w=543, h=421, FilterBarShown=0, TotalValueBarShown=0, ToolBarShown=1, DataPaneShown=1, PowerPaneShown=1, CodePaneShown=1, PinCursor="Cursor Movable", TimePerDiv="1 ns / Div", TimeStampFormat="Time", DataGraphDrawAsPoints=0, DataGraphLegendShown=1, DataGraphUniformSampleSpacing=0, DataGraphLegendPosition="331;0", DataGraphShowNamesAtCursor=0, PowerGraphDrawAsPoints=0, PowerGraphLegendShown=1, PowerGraphAvgFilterTime=Off, PowerGraphAvgFilterLen=Off, PowerGraphUniformSampleSpacing=0, PowerGraphLegendPosition="338;0", CodeGraphLegendShown=1, CodeGraphLegendPosition="347;0" +OpenWindow="Console", DockArea=BOTTOM, x=1, y=0, w=250, h=212, FilterBarShown=0, TotalValueBarShown=0, ToolBarShown=0 +SmartViewPlugin="", Page="", Toolbar="Hidden", Window="SmartView 1" +TableHeader="Global Data", SortCol="Name", SortOrder="ASCENDING", VisibleCols=["Name";"Value";"Location";"Size";"Type";"Scope"], ColWidths=[134;100;100;28;190;364] +TableHeader="Functions", SortCol="Name", SortOrder="ASCENDING", VisibleCols=["Name";"Address";"Size";"#Insts";"Source"], ColWidths=[1254;100;100;100;100] +TableHeader="Data Sampling Table", SortCol="None", SortOrder="ASCENDING", VisibleCols=["Index";"Time"], ColWidths=[100;100] +TableHeader="Data Sampling Setup", SortCol="Expression", SortOrder="ASCENDING", VisibleCols=["Expression";"Type";"Value";"Min";"Max";"Average";"# Changes";"Min. Change";"Max. Change"], ColWidths=[100;100;100;100;100;100;100;100;100] +TableHeader="Power Sampling", SortCol="None", SortOrder="ASCENDING", VisibleCols=["Index";"Time";"Ch 0"], ColWidths=[100;100;100] +TableHeader="Watched Data 1", SortCol="Expression", SortOrder="ASCENDING", VisibleCols=["Expression";"Value";"Location";"Refresh"], ColWidths=[151;171;100;100] +TableHeader="RegisterSelectionDialog", SortCol="None", SortOrder="ASCENDING", VisibleCols=[], ColWidths=[] +TableHeader="TargetExceptionDialog", SortCol="Name", SortOrder="ASCENDING", VisibleCols=["Name";"Value";"Address";"Description"], ColWidths=[26;26;26;26] +WatchedExpression="RobotMode", Window=Watched Data 1 +WatchedExpression="hspi6", RefreshRate=2, Window=Watched Data 1 \ No newline at end of file