ioc changed but not tested

This commit is contained in:
TuxMonkey
2026-07-20 15:39:06 +08:00
parent bd7f8f2962
commit d13729b162
6 changed files with 63 additions and 37 deletions

View File

@@ -155,7 +155,7 @@ link_directories(
# A. 头文件管理:全自动模式,扫描 User_Code 下的所有头文件。
# ------------------------------------------------------------------------------
message(NOTICE ">> [Searching All Header] 正在全自动递归扫描 User_Code 下所有头文件路径...")
file(GLOB_RECURSE USER_HEADERS "${CMAKE_SOURCE_DIR}/User_Code/*.h" "${CMAKE_SOURCE_DIR}/User_Code/*.hpp")
file(GLOB_RECURSE USER_HEADERS CONFIGURE_DEPENDS "${CMAKE_SOURCE_DIR}/User_Code/*.h" "${CMAKE_SOURCE_DIR}/User_Code/*.hpp")
foreach (header ${USER_HEADERS})
get_filename_component(dir ${header} DIRECTORY) # 获取头文件所在目录
@@ -174,7 +174,7 @@ message(NOTICE ">> [INFO] 正在全自动递归扫描 User_Code/application下
# 1. 添加通用代码 (BSP & Module & Application 通用框架)
# 包含 bsp, module 以及 application 下的通用组件
file(GLOB_RECURSE COMMON_SOURCES
file(GLOB_RECURSE COMMON_SOURCES CONFIGURE_DEPENDS
"${PROJECT_SOURCE_DIR}/User_Code/bsp/*.c"
"${PROJECT_SOURCE_DIR}/User_Code/bsp/*.cpp"
"${PROJECT_SOURCE_DIR}/User_Code/module/*.c"
@@ -269,7 +269,7 @@ endif()
if(ACTIVE_APP_DIR)
if(EXISTS "${ACTIVE_APP_DIR}")
# 添加该兵种目录下的所有源码
file(GLOB_RECURSE APP_SOURCES "${ACTIVE_APP_DIR}/*.c" "${ACTIVE_APP_DIR}/*.cpp")
file(GLOB_RECURSE APP_SOURCES CONFIGURE_DEPENDS "${ACTIVE_APP_DIR}/*.c" "${ACTIVE_APP_DIR}/*.cpp")
# --- 新增:统计文件数量 ---
list(LENGTH APP_SOURCES APP_SOURCES_COUNT)
@@ -294,4 +294,4 @@ target_include_directories(${CMAKE_PROJECT_NAME} PRIVATE
target_compile_definitions(${CMAKE_PROJECT_NAME} PRIVATE
# RM_REFEREE
)
)

View File

@@ -28,6 +28,7 @@
#include "ws2812status.h"
#include "ins_task.h"
#include "buzzer.h"
#include "tft.h"
// #include "remoteTask.h"
//
// #include "bsp_dwt.h"
@@ -288,8 +289,14 @@ __weak void StartDefaultTask(void *argument)
MX_USB_DEVICE_Init();
/* USER CODE BEGIN StartDefaultTask */
/* Infinite loop */
TFT_Init();
static uint32_t tft_refresh_tick = 0U;
for (;;)
{
if ((tft_refresh_tick++ % 100U) == 0U)
{
TFT_ShowStatus(BMI088.Temperature, RobotMode);
}
osDelay(1);
}
/* USER CODE END StartDefaultTask */

View File

@@ -46,11 +46,11 @@ void MX_SPI1_Init(void)
hspi1.Instance = SPI1;
hspi1.Init.Mode = SPI_MODE_MASTER;
hspi1.Init.Direction = SPI_DIRECTION_2LINES;
hspi1.Init.DataSize = SPI_DATASIZE_16BIT;
hspi1.Init.CLKPolarity = SPI_POLARITY_LOW;
hspi1.Init.DataSize = SPI_DATASIZE_8BIT;
hspi1.Init.CLKPolarity = SPI_POLARITY_HIGH;
hspi1.Init.CLKPhase = SPI_PHASE_1EDGE;
hspi1.Init.NSS = SPI_NSS_SOFT;
hspi1.Init.BaudRatePrescaler = SPI_BAUDRATEPRESCALER_16;
hspi1.Init.BaudRatePrescaler = SPI_BAUDRATEPRESCALER_8;
hspi1.Init.FirstBit = SPI_FIRSTBIT_MSB;
hspi1.Init.TIMode = SPI_TIMODE_DISABLE;
hspi1.Init.CRCCalculation = SPI_CRCCALCULATION_DISABLE;
@@ -210,8 +210,8 @@ void HAL_SPI_MspInit(SPI_HandleTypeDef* spiHandle)
hdma_spi1_rx.Init.Direction = DMA_PERIPH_TO_MEMORY;
hdma_spi1_rx.Init.PeriphInc = DMA_PINC_DISABLE;
hdma_spi1_rx.Init.MemInc = DMA_MINC_ENABLE;
hdma_spi1_rx.Init.PeriphDataAlignment = DMA_PDATAALIGN_HALFWORD;
hdma_spi1_rx.Init.MemDataAlignment = DMA_MDATAALIGN_HALFWORD;
hdma_spi1_rx.Init.PeriphDataAlignment = DMA_PDATAALIGN_BYTE;
hdma_spi1_rx.Init.MemDataAlignment = DMA_MDATAALIGN_BYTE;
hdma_spi1_rx.Init.Mode = DMA_NORMAL;
hdma_spi1_rx.Init.Priority = DMA_PRIORITY_VERY_HIGH;
hdma_spi1_rx.Init.FIFOMode = DMA_FIFOMODE_DISABLE;
@@ -228,8 +228,8 @@ void HAL_SPI_MspInit(SPI_HandleTypeDef* spiHandle)
hdma_spi1_tx.Init.Direction = DMA_MEMORY_TO_PERIPH;
hdma_spi1_tx.Init.PeriphInc = DMA_PINC_DISABLE;
hdma_spi1_tx.Init.MemInc = DMA_MINC_ENABLE;
hdma_spi1_tx.Init.PeriphDataAlignment = DMA_PDATAALIGN_HALFWORD;
hdma_spi1_tx.Init.MemDataAlignment = DMA_MDATAALIGN_HALFWORD;
hdma_spi1_tx.Init.PeriphDataAlignment = DMA_PDATAALIGN_BYTE;
hdma_spi1_tx.Init.MemDataAlignment = DMA_MDATAALIGN_BYTE;
hdma_spi1_tx.Init.Mode = DMA_NORMAL;
hdma_spi1_tx.Init.Priority = DMA_PRIORITY_VERY_HIGH;
hdma_spi1_tx.Init.FIFOMode = DMA_FIFOMODE_DISABLE;
@@ -350,11 +350,9 @@ void HAL_SPI_MspInit(SPI_HandleTypeDef* spiHandle)
__HAL_RCC_GPIOA_CLK_ENABLE();
/**SPI6 GPIO Configuration
PA5 ------> SPI6_SCK
PA6 ------> SPI6_MISO
PA7 ------> SPI6_MOSI
*/
GPIO_InitStruct.Pin = GPIO_PIN_5|GPIO_PIN_6|GPIO_PIN_7;
GPIO_InitStruct.Pin = GPIO_PIN_7;
GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;
GPIO_InitStruct.Pull = GPIO_NOPULL;
GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
@@ -362,6 +360,8 @@ void HAL_SPI_MspInit(SPI_HandleTypeDef* spiHandle)
HAL_GPIO_Init(GPIOA, &GPIO_InitStruct);
/* USER CODE BEGIN SPI6_MspInit 1 */
/* WS2812 uses only PA7 MOSI; PA5 is LCD KEY on DM-MC-Board02. */
HAL_GPIO_DeInit(GPIOA, GPIO_PIN_5|GPIO_PIN_6);
/* USER CODE END SPI6_MspInit 1 */
}

View File

@@ -82,10 +82,10 @@ Dma.SPI1_RX.11.Direction=DMA_PERIPH_TO_MEMORY
Dma.SPI1_RX.11.EventEnable=DISABLE
Dma.SPI1_RX.11.FIFOMode=DMA_FIFOMODE_DISABLE
Dma.SPI1_RX.11.Instance=DMA2_Stream7
Dma.SPI1_RX.11.MemDataAlignment=DMA_MDATAALIGN_HALFWORD
Dma.SPI1_RX.11.MemDataAlignment=DMA_MDATAALIGN_BYTE
Dma.SPI1_RX.11.MemInc=DMA_MINC_ENABLE
Dma.SPI1_RX.11.Mode=DMA_NORMAL
Dma.SPI1_RX.11.PeriphDataAlignment=DMA_PDATAALIGN_HALFWORD
Dma.SPI1_RX.11.PeriphDataAlignment=DMA_PDATAALIGN_BYTE
Dma.SPI1_RX.11.PeriphInc=DMA_PINC_DISABLE
Dma.SPI1_RX.11.Polarity=HAL_DMAMUX_REQ_GEN_RISING
Dma.SPI1_RX.11.Priority=DMA_PRIORITY_VERY_HIGH
@@ -100,10 +100,10 @@ Dma.SPI1_TX.12.Direction=DMA_MEMORY_TO_PERIPH
Dma.SPI1_TX.12.EventEnable=DISABLE
Dma.SPI1_TX.12.FIFOMode=DMA_FIFOMODE_DISABLE
Dma.SPI1_TX.12.Instance=DMA1_Stream3
Dma.SPI1_TX.12.MemDataAlignment=DMA_MDATAALIGN_HALFWORD
Dma.SPI1_TX.12.MemDataAlignment=DMA_MDATAALIGN_BYTE
Dma.SPI1_TX.12.MemInc=DMA_MINC_ENABLE
Dma.SPI1_TX.12.Mode=DMA_NORMAL
Dma.SPI1_TX.12.PeriphDataAlignment=DMA_PDATAALIGN_HALFWORD
Dma.SPI1_TX.12.PeriphDataAlignment=DMA_PDATAALIGN_BYTE
Dma.SPI1_TX.12.PeriphInc=DMA_PINC_DISABLE
Dma.SPI1_TX.12.Polarity=HAL_DMAMUX_REQ_GEN_RISING
Dma.SPI1_TX.12.Priority=DMA_PRIORITY_VERY_HIGH
@@ -624,10 +624,8 @@ PA2.GPIO_Speed=GPIO_SPEED_FREQ_HIGH
PA2.Locked=true
PA2.PinState=GPIO_PIN_SET
PA2.Signal=GPIO_Output
PA5.Mode=TX_Only_Simplex_Unidirect_Master
PA5.Signal=SPI6_SCK
PA6.Mode=Full_Duplex_Master
PA6.Signal=SPI6_MISO
PA5.Signal=ADCx_INP19
PA6.Signal=GPIO_Input
PA7.Mode=TX_Only_Simplex_Unidirect_Master
PA7.Signal=SPI6_MOSI
PA8.Mode=Clock-out-1
@@ -903,6 +901,8 @@ RCC.VCOInput2Freq_Value=12000000
RCC.VCOInput3Freq_Value=750000
SH.ADCx_INP4.0=ADC1_INP4,IN4-Single-Ended
SH.ADCx_INP4.ConfNb=1
SH.ADCx_INP19.0=ADC1_INP19,IN19-Single-Ended
SH.ADCx_INP19.ConfNb=1
SH.GPXTI10.0=GPIO_EXTI10
SH.GPXTI10.ConfNb=1
SH.GPXTI12.0=GPIO_EXTI12
@@ -914,11 +914,12 @@ SH.S_TIM3_CH4.ConfNb=1
SH.SharedStack_PC12.0=SPI3_MOSI
SH.SharedStack_PC12.1=UART5_TX,Asynchronous
SH.SharedStack_PC12.ConfNb=2
SPI1.BaudRatePrescaler=SPI_BAUDRATEPRESCALER_16
SPI1.CalculateBaudRate=7.5 MBits/s
SPI1.DataSize=SPI_DATASIZE_16BIT
SPI1.BaudRatePrescaler=SPI_BAUDRATEPRESCALER_8
SPI1.CLKPolarity=SPI_POLARITY_HIGH
SPI1.CalculateBaudRate=15.0 MBits/s
SPI1.DataSize=SPI_DATASIZE_8BIT
SPI1.Direction=SPI_DIRECTION_2LINES
SPI1.IPParameters=VirtualType,Mode,Direction,CalculateBaudRate,DataSize,BaudRatePrescaler
SPI1.IPParameters=VirtualType,Mode,Direction,CalculateBaudRate,DataSize,BaudRatePrescaler,CLKPolarity
SPI1.Mode=SPI_MODE_MASTER
SPI1.VirtualType=VM_MASTER
SPI2.BaudRatePrescaler=SPI_BAUDRATEPRESCALER_32

View File

@@ -16,6 +16,9 @@
#include "ws2812.h"
#define WS2812_SPI_TIMEOUT 2U
#define WS2812_RESET_BYTES 100U
#define WS2812_LowLevel 0xC0 // 0码
#define WS2812_HighLevel 0xF0 // 1码
@@ -29,17 +32,22 @@ void WS2812_Ctrl(uint8_t r, uint8_t g, uint8_t b)
{
uint8_t txbuf[24];
uint8_t res = 0;
for (auto i = 0; i < 8; i++)
for (uint8_t i = 0; i < 8U; i++)
{
txbuf[7 - i] = (((g >> i) & 0x01) ? WS2812_HighLevel : WS2812_LowLevel) >> 1;
txbuf[15 - i] = (((r >> i) & 0x01) ? WS2812_HighLevel : WS2812_LowLevel) >> 1;
txbuf[23 - i] = (((b >> i) & 0x01) ? WS2812_HighLevel : WS2812_LowLevel) >> 1;
}
HAL_SPI_Transmit(&WS2812_SPI_UNIT, &res, 0, 0xFFFF);
while (WS2812_SPI_UNIT.State != HAL_SPI_STATE_READY);
HAL_SPI_Transmit(&WS2812_SPI_UNIT, txbuf, 24, 0xFFFF);
for (auto i = 0; i < 100; i++)
if (HAL_SPI_Transmit(&WS2812_SPI_UNIT, txbuf, sizeof(txbuf), WS2812_SPI_TIMEOUT) != HAL_OK)
{
HAL_SPI_Transmit(&WS2812_SPI_UNIT, &res, 1, 0xFFFF);
return;
}
for (uint8_t i = 0; i < WS2812_RESET_BYTES; i++)
{
if (HAL_SPI_Transmit(&WS2812_SPI_UNIT, &res, 1U, WS2812_SPI_TIMEOUT) != HAL_OK)
{
return;
}
}
}

View File

@@ -1,35 +1,45 @@
Breakpoint=D:/RM/Elec Control/TronOneH7_Scaffold/User_Code/application/indicator_app/ws2812status.c:38, State=BP_STATE_ON
Breakpoint=D:/RM/Elec Control/TronOneH7_Scaffold/User_Code/module/periph/ws2812/ws2812.c:40, State=BP_STATE_ON
Breakpoint=D:/RM/Elec Control/TronOneH7_Scaffold/User_Code/module/periph/ws2812/ws2812.c:43, State=BP_STATE_ON
Breakpoint=D:/RM/Elec Control/TronOneH7_Scaffold/Core/Src/main.c:101, State=BP_STATE_ON
Breakpoint=D:/RM/Elec Control/TronOneH7_Scaffold/Core/Src/main.c:140, State=BP_STATE_ON
GraphedExpression="(rc_ctrl[0]).ch3", DisplayFormat=DISPLAY_FORMAT_DEC, Color=#a00909
OpenDocument="main.c", FilePath="D:/RM/Elec Control/TronOneH7_Scaffold/Core/Src/main.c", Line=64
OpenDocument="ws2812.c", FilePath="D:/RM/Elec Control/TronOneH7_Scaffold/User_Code/module/periph/ws2812/ws2812.c", Line=14
OpenDocument="ws2812status.c", FilePath="D:/RM/Elec Control/TronOneH7_Scaffold/User_Code/application/indicator_app/ws2812status.c", Line=29
OpenDocument="core_cm7.h", FilePath="D:/RM/Elec Control/TronOneH7_Scaffold/Drivers/CMSIS/Include/core_cm7.h", Line=2330
OpenDocument="stm32h7xx_hal_spi.c", FilePath="D:/RM/Elec Control/TronOneH7_Scaffold/Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal_spi.c", Line=961
OpenDocument="stm32h7xx_hal.c", FilePath="D:/RM/Elec Control/TronOneH7_Scaffold/Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal.c", Line=330
OpenDocument="main.c", FilePath="D:/RM/Elec Control/TronOneH7_Scaffold/Core/Src/main.c", Line=124
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=226, TabPos=0, TopOfStack=1, 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=663, h=189, FilterBarShown=0, TotalValueBarShown=0, ToolBarShown=0
OpenWindow="Disassembly", DockArea=BOTTOM, x=2, y=0, w=632, h=181, FilterBarShown=0, TotalValueBarShown=0, ToolBarShown=0
OpenWindow="Break & Tracepoints", DockArea=LEFT, x=0, y=1, w=663, h=181, FilterBarShown=0, TotalValueBarShown=0, ToolBarShown=0, VectorCatchIndexMask=254
OpenWindow="Break & Tracepoints", DockArea=LEFT, x=0, y=1, w=663, h=183, FilterBarShown=0, TotalValueBarShown=0, ToolBarShown=0, VectorCatchIndexMask=254
OpenWindow="Memory 1", DockArea=BOTTOM, x=3, y=0, w=462, h=181, FilterBarShown=0, TotalValueBarShown=0, ToolBarShown=0, EditorAddress=0x2000B98C
OpenWindow="Global Data", DockArea=RIGHT, x=0, y=2, w=681, h=260, FilterBarShown=0, TotalValueBarShown=0, ToolBarShown=0
OpenWindow="Watched Data 1", DockArea=LEFT, x=0, y=2, w=663, h=201, FilterBarShown=0, TotalValueBarShown=0, ToolBarShown=0
OpenWindow="Watched Data 1", DockArea=LEFT, x=0, y=2, w=663, h=199, FilterBarShown=0, TotalValueBarShown=0, ToolBarShown=0
OpenWindow="Functions", DockArea=LEFT, x=0, y=3, w=663, h=168, TabPos=1, TopOfStack=0, FilterBarShown=0, TotalValueBarShown=0, ToolBarShown=0
OpenWindow="Call Graph", DockArea=LEFT, x=0, y=3, w=663, h=168, 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=1, w=681, h=254, 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="0;0", PowerGraphDrawAsPoints=0, PowerGraphLegendShown=0, PowerGraphAvgFilterTime=Off, PowerGraphAvgFilterLen=Off, PowerGraphUniformSampleSpacing=0, PowerGraphLegendPosition="484;-19", CodeGraphLegendShown=0, CodeGraphLegendPosition="498;0"
OpenWindow="Console", DockArea=LEFT, x=0, y=3, w=663, h=168, TabPos=0, TopOfStack=0, FilterBarShown=0, TotalValueBarShown=0, ToolBarShown=0
OpenWindow="FreeRTOS", DockArea=RIGHT, x=0, y=0, w=681, h=226, TabPos=1, TopOfStack=0, FilterBarShown=0, TotalValueBarShown=0, ToolBarShown=0, Showing="Task List"
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;102]
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="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;427]
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;321]
TableHeader="Source Files", SortCol="File", SortOrder="ASCENDING", VisibleCols=["File";"Status";"Size";"#Insts";"Path"], ColWidths=[229;100;100;100;917]
TableHeader="Data Sampling Table", SortCol="None", SortOrder="ASCENDING", VisibleCols=["Index";"Time";" (rc_ctrl[0]).ch3"], ColWidths=[100;100;100]
TableHeader="Data Sampling Table", SortCol="Index", SortOrder="ASCENDING", VisibleCols=["Index";"Time"], ColWidths=[100;100]
TableHeader="Data Sampling Setup", SortCol="Value", SortOrder="ASCENDING", VisibleCols=["Expression";"Type";"Value";"Min";"Max";"Average";"# Changes";"Min. Change";"Max. Change"], ColWidths=[320;100;100;100;100;100;100;102;102]
TableHeader="Power Sampling", SortCol="Index", SortOrder="ASCENDING", VisibleCols=["Index";"Time";"Ch 0"], ColWidths=[100;100;100]
TableHeader="Registers 1", SortCol="Name", SortOrder="ASCENDING", VisibleCols=["Name";"Value";"Description"], ColWidths=[100;105;259]
TableHeader="Watched Data 1", SortCol="Expression", SortOrder="ASCENDING", VisibleCols=["Expression";"Value";"Type";"Location";"Refresh"], ColWidths=[171;101;162;112;117]
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;102]
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="TargetExceptionDialog", SortCol="Name", SortOrder="ASCENDING", VisibleCols=["Name";"Value";"Address";"Description"], ColWidths=[27;27;27;32]
WatchedExpression="rc_ctrl", RefreshRate=1, Window=Watched Data 1