From 66da7a1935c4f1f4b3dc7e6fa03ffebfb7750ec4 Mon Sep 17 00:00:00 2001 From: TuxMonkey <8196772+tuxmonkey@user.noreply.gitee.com> Date: Sun, 16 Nov 2025 20:55:29 +0800 Subject: [PATCH] math lib ok(?) but not linked to lib --- Core/Src/freertos.c | 169 ++++++----- Core/Src/main.c | 269 +++++++++--------- .../algorithm/QuaternionEKF/QuaternionEKF.c | 1 + cmake/Toolchain/gcc-arm-none-eabi.cmake | 38 +-- cmake/Toolchain/starm-clang.cmake | 4 +- ozonedeb/windebnewestux.jdebug.user | 23 +- 6 files changed, 249 insertions(+), 255 deletions(-) diff --git a/Core/Src/freertos.c b/Core/Src/freertos.c index aaf7b46..5745da1 100644 --- a/Core/Src/freertos.c +++ b/Core/Src/freertos.c @@ -58,65 +58,65 @@ /* Definitions for BeginTask */ osThreadId_t BeginTaskHandle; const osThreadAttr_t BeginTask_attributes = { - .name = "BeginTask", - .stack_size = 256 * 4, - .priority = (osPriority_t) osPriorityNormal, + .name = "BeginTask", + .stack_size = 256 * 4, + .priority = (osPriority_t) osPriorityNormal, }; /* Definitions for shoot */ osThreadId_t shootHandle; const osThreadAttr_t shoot_attributes = { - .name = "shoot", - .stack_size = 512 * 4, - .priority = (osPriority_t) osPriorityNormal, + .name = "shoot", + .stack_size = 512 * 4, + .priority = (osPriority_t) osPriorityNormal, }; /* Definitions for gimbal */ osThreadId_t gimbalHandle; const osThreadAttr_t gimbal_attributes = { - .name = "gimbal", - .stack_size = 512 * 4, - .priority = (osPriority_t) osPriorityNormal, + .name = "gimbal", + .stack_size = 512 * 4, + .priority = (osPriority_t) osPriorityNormal, }; /* Definitions for chassis */ osThreadId_t chassisHandle; const osThreadAttr_t chassis_attributes = { - .name = "chassis", - .stack_size = 512 * 4, - .priority = (osPriority_t) osPriorityNormal, + .name = "chassis", + .stack_size = 512 * 4, + .priority = (osPriority_t) osPriorityNormal, }; /* Definitions for init */ osThreadId_t initHandle; const osThreadAttr_t init_attributes = { - .name = "init", - .stack_size = 256 * 4, - .priority = (osPriority_t) osPriorityHigh, + .name = "init", + .stack_size = 256 * 4, + .priority = (osPriority_t) osPriorityHigh, }; /* Definitions for vision */ osThreadId_t visionHandle; const osThreadAttr_t vision_attributes = { - .name = "vision", - .stack_size = 512 * 4, - .priority = (osPriority_t) osPriorityNormal, + .name = "vision", + .stack_size = 512 * 4, + .priority = (osPriority_t) osPriorityNormal, }; /* Definitions for cmd */ osThreadId_t cmdHandle; const osThreadAttr_t cmd_attributes = { - .name = "cmd", - .stack_size = 512 * 4, - .priority = (osPriority_t) osPriorityNormal, + .name = "cmd", + .stack_size = 512 * 4, + .priority = (osPriority_t) osPriorityNormal, }; /* Definitions for reference */ osThreadId_t referenceHandle; const osThreadAttr_t reference_attributes = { - .name = "reference", - .stack_size = 512 * 4, - .priority = (osPriority_t) osPriorityNormal, + .name = "reference", + .stack_size = 512 * 4, + .priority = (osPriority_t) osPriorityNormal, }; /* Definitions for WS2812Task */ osThreadId_t WS2812TaskHandle; const osThreadAttr_t WS2812Task_attributes = { - .name = "WS2812Task", - .stack_size = 256 * 4, - .priority = (osPriority_t) osPriorityBelowNormal, + .name = "WS2812Task", + .stack_size = 256 * 4, + .priority = (osPriority_t) osPriorityBelowNormal, }; /* Private function prototypes -----------------------------------------------*/ @@ -136,28 +136,20 @@ 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 */ @@ -192,66 +184,65 @@ void vApplicationMallocFailedHook(void) * @param None * @retval None */ -void MX_FREERTOS_Init(void) -{ - /* USER CODE BEGIN Init */ +void MX_FREERTOS_Init(void) { + /* USER CODE BEGIN Init */ - /* USER CODE END Init */ + /* USER CODE END Init */ - /* USER CODE BEGIN RTOS_MUTEX */ + /* USER CODE BEGIN RTOS_MUTEX */ /* add mutexes, ... */ - /* USER CODE END RTOS_MUTEX */ + /* USER CODE END RTOS_MUTEX */ - /* USER CODE BEGIN RTOS_SEMAPHORES */ + /* USER CODE BEGIN RTOS_SEMAPHORES */ /* add semaphores, ... */ - /* USER CODE END RTOS_SEMAPHORES */ + /* USER CODE END RTOS_SEMAPHORES */ - /* USER CODE BEGIN RTOS_TIMERS */ + /* USER CODE BEGIN RTOS_TIMERS */ /* start timers, add new ones, ... */ - /* USER CODE END RTOS_TIMERS */ + /* USER CODE END RTOS_TIMERS */ - /* USER CODE BEGIN RTOS_QUEUES */ + /* USER CODE BEGIN RTOS_QUEUES */ /* add queues, ... */ - /* USER CODE END RTOS_QUEUES */ + /* USER CODE END RTOS_QUEUES */ - /* Create the thread(s) */ - /* creation of BeginTask */ - BeginTaskHandle = osThreadNew(StartDefaultTask, NULL, &BeginTask_attributes); + /* Create the thread(s) */ + /* creation of BeginTask */ + BeginTaskHandle = osThreadNew(StartDefaultTask, NULL, &BeginTask_attributes); - /* creation of shoot */ - shootHandle = osThreadNew(ShootTask, NULL, &shoot_attributes); + /* creation of shoot */ + shootHandle = osThreadNew(ShootTask, NULL, &shoot_attributes); - /* creation of gimbal */ - gimbalHandle = osThreadNew(GimbalTask, NULL, &gimbal_attributes); + /* creation of gimbal */ + gimbalHandle = osThreadNew(GimbalTask, NULL, &gimbal_attributes); - /* creation of chassis */ - chassisHandle = osThreadNew(ChassisTask, NULL, &chassis_attributes); + /* creation of chassis */ + chassisHandle = osThreadNew(ChassisTask, NULL, &chassis_attributes); - /* creation of init */ - initHandle = osThreadNew(StartInitTask, NULL, &init_attributes); + /* creation of init */ + initHandle = osThreadNew(StartInitTask, NULL, &init_attributes); - /* creation of vision */ - visionHandle = osThreadNew(VisionTask, NULL, &vision_attributes); + /* creation of vision */ + visionHandle = osThreadNew(VisionTask, NULL, &vision_attributes); - /* creation of cmd */ - cmdHandle = osThreadNew(CmdTask, NULL, &cmd_attributes); + /* creation of cmd */ + cmdHandle = osThreadNew(CmdTask, NULL, &cmd_attributes); - /* creation of reference */ - referenceHandle = osThreadNew(RefereeTask, NULL, &reference_attributes); + /* creation of reference */ + referenceHandle = osThreadNew(RefereeTask, NULL, &reference_attributes); - /* creation of WS2812Task */ - WS2812TaskHandle = osThreadNew(ws2812Task, NULL, &WS2812Task_attributes); + /* creation of WS2812Task */ + WS2812TaskHandle = osThreadNew(ws2812Task, NULL, &WS2812Task_attributes); - /* USER CODE BEGIN RTOS_THREADS */ + /* USER CODE BEGIN RTOS_THREADS */ /* add threads, ... */ //Todo:INS_Task是测试版本 // 创建线程 insTaskHandle = osThreadNew(StartINSTASK, NULL, &instask_attributes); - /* USER CODE END RTOS_THREADS */ + /* USER CODE END RTOS_THREADS */ - /* USER CODE BEGIN RTOS_EVENTS */ + /* USER CODE BEGIN RTOS_EVENTS */ /* add events, ... */ - /* USER CODE END RTOS_EVENTS */ + /* USER CODE END RTOS_EVENTS */ } @@ -264,15 +255,15 @@ void MX_FREERTOS_Init(void) /* USER CODE END Header_StartDefaultTask */ __weak void StartDefaultTask(void *argument) { - /* init code for USB_DEVICE */ - MX_USB_DEVICE_Init(); - /* USER CODE BEGIN StartDefaultTask */ + /* init code for USB_DEVICE */ + MX_USB_DEVICE_Init(); + /* USER CODE BEGIN StartDefaultTask */ /* Infinite loop */ for (;;) { osDelay(1); } - /* USER CODE END StartDefaultTask */ + /* USER CODE END StartDefaultTask */ } /* USER CODE BEGIN Header_ShootTask */ @@ -284,13 +275,13 @@ __weak void StartDefaultTask(void *argument) /* USER CODE END Header_ShootTask */ __weak void ShootTask(void *argument) { - /* USER CODE BEGIN ShootTask */ + /* USER CODE BEGIN ShootTask */ /* Infinite loop */ for (;;) { osDelay(1); } - /* USER CODE END ShootTask */ + /* USER CODE END ShootTask */ } /* USER CODE BEGIN Header_GimbalTask */ @@ -302,13 +293,13 @@ __weak void ShootTask(void *argument) /* USER CODE END Header_GimbalTask */ __weak void GimbalTask(void *argument) { - /* USER CODE BEGIN GimbalTask */ + /* USER CODE BEGIN GimbalTask */ /* Infinite loop */ for (;;) { osDelay(1); } - /* USER CODE END GimbalTask */ + /* USER CODE END GimbalTask */ } /* USER CODE BEGIN Header_ChassisTask */ @@ -320,13 +311,13 @@ __weak void GimbalTask(void *argument) /* USER CODE END Header_ChassisTask */ __weak void ChassisTask(void *argument) { - /* USER CODE BEGIN ChassisTask */ + /* USER CODE BEGIN ChassisTask */ /* Infinite loop */ for (;;) { osDelay(1); } - /* USER CODE END ChassisTask */ + /* USER CODE END ChassisTask */ } /* USER CODE BEGIN Header_StartInitTask */ @@ -338,13 +329,13 @@ __weak void ChassisTask(void *argument) /* USER CODE END Header_StartInitTask */ __weak void StartInitTask(void *argument) { - /* USER CODE BEGIN StartInitTask */ + /* USER CODE BEGIN StartInitTask */ /* Infinite loop */ for (;;) { osDelay(1); } - /* USER CODE END StartInitTask */ + /* USER CODE END StartInitTask */ } /* USER CODE BEGIN Header_VisionTask */ @@ -356,13 +347,13 @@ __weak void StartInitTask(void *argument) /* USER CODE END Header_VisionTask */ __weak void VisionTask(void *argument) { - /* USER CODE BEGIN VisionTask */ + /* USER CODE BEGIN VisionTask */ /* Infinite loop */ for (;;) { osDelay(1); } - /* USER CODE END VisionTask */ + /* USER CODE END VisionTask */ } /* USER CODE BEGIN Header_CmdTask */ @@ -374,13 +365,13 @@ __weak void VisionTask(void *argument) /* USER CODE END Header_CmdTask */ __weak void CmdTask(void *argument) { - /* USER CODE BEGIN CmdTask */ + /* USER CODE BEGIN CmdTask */ /* Infinite loop */ for (;;) { osDelay(1); } - /* USER CODE END CmdTask */ + /* USER CODE END CmdTask */ } /* USER CODE BEGIN Header_RefereeTask */ @@ -392,13 +383,13 @@ __weak void CmdTask(void *argument) /* USER CODE END Header_RefereeTask */ __weak void RefereeTask(void *argument) { - /* USER CODE BEGIN RefereeTask */ + /* USER CODE BEGIN RefereeTask */ /* Infinite loop */ for (;;) { osDelay(1); } - /* USER CODE END RefereeTask */ + /* USER CODE END RefereeTask */ } /* Private application code --------------------------------------------------*/ diff --git a/Core/Src/main.c b/Core/Src/main.c index 94f2d78..3a3f847 100644 --- a/Core/Src/main.c +++ b/Core/Src/main.c @@ -61,11 +61,8 @@ /* Private function prototypes -----------------------------------------------*/ void SystemClock_Config(void); - static void MPU_Config(void); - void MX_FREERTOS_Init(void); - /* USER CODE BEGIN PFP */ /* USER CODE END PFP */ @@ -82,84 +79,84 @@ void MX_FREERTOS_Init(void); int main(void) { - /* USER CODE BEGIN 1 */ + /* USER CODE BEGIN 1 */ - /* USER CODE END 1 */ + /* USER CODE END 1 */ - /* MPU Configuration--------------------------------------------------------*/ - MPU_Config(); + /* MPU Configuration--------------------------------------------------------*/ + MPU_Config(); - /* Enable the CPU Cache */ + /* Enable the CPU Cache */ - /* Enable I-Cache---------------------------------------------------------*/ - SCB_EnableICache(); + /* Enable I-Cache---------------------------------------------------------*/ + SCB_EnableICache(); - /* Enable D-Cache---------------------------------------------------------*/ - SCB_EnableDCache(); + /* Enable D-Cache---------------------------------------------------------*/ + SCB_EnableDCache(); - /* MCU Configuration--------------------------------------------------------*/ + /* MCU Configuration--------------------------------------------------------*/ - /* Reset of all peripherals, Initializes the Flash interface and the Systick. */ - HAL_Init(); + /* Reset of all peripherals, Initializes the Flash interface and the Systick. */ + HAL_Init(); - /* USER CODE BEGIN Init */ + /* USER CODE BEGIN Init */ - /* USER CODE END Init */ + /* USER CODE END Init */ - /* Configure the system clock */ - SystemClock_Config(); + /* Configure the system clock */ + SystemClock_Config(); - /* USER CODE BEGIN SysInit */ + /* USER CODE BEGIN SysInit */ - /* USER CODE END SysInit */ + /* USER CODE END SysInit */ - /* Initialize all configured peripherals */ - MX_GPIO_Init(); - MX_DMA_Init(); - MX_FDCAN2_Init(); - MX_FDCAN3_Init(); - MX_CRC_Init(); - MX_FDCAN1_Init(); - MX_USART10_UART_Init(); - MX_SPI2_Init(); - MX_TIM12_Init(); - MX_UART7_Init(); - MX_TIM1_Init(); - MX_USART1_UART_Init(); - MX_ADC3_Init(); - MX_USART2_UART_Init(); - MX_USART3_UART_Init(); - MX_SPI1_Init(); - MX_UART5_Init(); - MX_TIM3_Init(); - MX_SPI6_Init(); - /* USER CODE BEGIN 2 */ + /* Initialize all configured peripherals */ + MX_GPIO_Init(); + MX_DMA_Init(); + MX_FDCAN2_Init(); + MX_FDCAN3_Init(); + MX_CRC_Init(); + MX_FDCAN1_Init(); + MX_USART10_UART_Init(); + MX_SPI2_Init(); + MX_TIM12_Init(); + MX_UART7_Init(); + MX_TIM1_Init(); + MX_USART1_UART_Init(); + MX_ADC3_Init(); + MX_USART2_UART_Init(); + MX_USART3_UART_Init(); + MX_SPI1_Init(); + MX_UART5_Init(); + MX_TIM3_Init(); + MX_SPI6_Init(); + /* USER CODE BEGIN 2 */ robotSelfCheck(); //自检LED RobotInit(); systemstart_song(); //开机音乐 /*还没有启动调度器!不允许任何涉及到 Freertos ticks的内容在这里运行!!!*/ - /* USER CODE END 2 */ + /* USER CODE END 2 */ - /* Init scheduler */ - osKernelInitialize(); /* Call init function for freertos objects (in cmsis_os2.c) */ - MX_FREERTOS_Init(); + /* Init scheduler */ + osKernelInitialize(); /* Call init function for freertos objects (in cmsis_os2.c) */ + MX_FREERTOS_Init(); - /* Start scheduler */ - osKernelStart(); + /* Start scheduler */ + osKernelStart(); - /* We should never get here as control is now taken by the scheduler */ + /* We should never get here as control is now taken by the scheduler */ - /* Infinite loop */ - /* USER CODE BEGIN WHILE */ + /* Infinite loop */ + /* USER CODE BEGIN WHILE */ while (1) { - /* USER CODE END WHILE */ + /* USER CODE END WHILE */ - /* USER CODE BEGIN 3 */ + /* USER CODE BEGIN 3 */ } - /* USER CODE END 3 */ + /* USER CODE END 3 */ } /** @@ -168,95 +165,93 @@ int main(void) */ void SystemClock_Config(void) { - RCC_OscInitTypeDef RCC_OscInitStruct = {0}; - RCC_ClkInitTypeDef RCC_ClkInitStruct = {0}; + RCC_OscInitTypeDef RCC_OscInitStruct = {0}; + RCC_ClkInitTypeDef RCC_ClkInitStruct = {0}; - /** Supply configuration update enable - */ - HAL_PWREx_ConfigSupply(PWR_LDO_SUPPLY); + /** Supply configuration update enable + */ + HAL_PWREx_ConfigSupply(PWR_LDO_SUPPLY); - /** Configure the main internal regulator output voltage - */ - __HAL_PWR_VOLTAGESCALING_CONFIG(PWR_REGULATOR_VOLTAGE_SCALE0); + /** Configure the main internal regulator output voltage + */ + __HAL_PWR_VOLTAGESCALING_CONFIG(PWR_REGULATOR_VOLTAGE_SCALE0); - while (!__HAL_PWR_GET_FLAG(PWR_FLAG_VOSRDY)) - { - } + while(!__HAL_PWR_GET_FLAG(PWR_FLAG_VOSRDY)) {} - /** Initializes the RCC Oscillators according to the specified parameters - * in the RCC_OscInitTypeDef structure. - */ - RCC_OscInitStruct.OscillatorType = RCC_OSCILLATORTYPE_HSI48 | RCC_OSCILLATORTYPE_HSI - | RCC_OSCILLATORTYPE_HSE; - RCC_OscInitStruct.HSEState = RCC_HSE_ON; - RCC_OscInitStruct.HSIState = RCC_HSI_DIV1; - RCC_OscInitStruct.HSICalibrationValue = 64; - RCC_OscInitStruct.HSI48State = RCC_HSI48_ON; - RCC_OscInitStruct.PLL.PLLState = RCC_PLL_ON; - RCC_OscInitStruct.PLL.PLLSource = RCC_PLLSOURCE_HSE; - RCC_OscInitStruct.PLL.PLLM = 2; - RCC_OscInitStruct.PLL.PLLN = 40; - RCC_OscInitStruct.PLL.PLLP = 1; - RCC_OscInitStruct.PLL.PLLQ = 4; - RCC_OscInitStruct.PLL.PLLR = 2; - RCC_OscInitStruct.PLL.PLLRGE = RCC_PLL1VCIRANGE_3; - RCC_OscInitStruct.PLL.PLLVCOSEL = RCC_PLL1VCOWIDE; - RCC_OscInitStruct.PLL.PLLFRACN = 0; - if (HAL_RCC_OscConfig(&RCC_OscInitStruct) != HAL_OK) - { - Error_Handler(); - } + /** Initializes the RCC Oscillators according to the specified parameters + * in the RCC_OscInitTypeDef structure. + */ + RCC_OscInitStruct.OscillatorType = RCC_OSCILLATORTYPE_HSI48|RCC_OSCILLATORTYPE_HSI + |RCC_OSCILLATORTYPE_HSE; + RCC_OscInitStruct.HSEState = RCC_HSE_ON; + RCC_OscInitStruct.HSIState = RCC_HSI_DIV1; + RCC_OscInitStruct.HSICalibrationValue = 64; + RCC_OscInitStruct.HSI48State = RCC_HSI48_ON; + RCC_OscInitStruct.PLL.PLLState = RCC_PLL_ON; + RCC_OscInitStruct.PLL.PLLSource = RCC_PLLSOURCE_HSE; + RCC_OscInitStruct.PLL.PLLM = 2; + RCC_OscInitStruct.PLL.PLLN = 40; + RCC_OscInitStruct.PLL.PLLP = 1; + RCC_OscInitStruct.PLL.PLLQ = 4; + RCC_OscInitStruct.PLL.PLLR = 2; + RCC_OscInitStruct.PLL.PLLRGE = RCC_PLL1VCIRANGE_3; + RCC_OscInitStruct.PLL.PLLVCOSEL = RCC_PLL1VCOWIDE; + RCC_OscInitStruct.PLL.PLLFRACN = 0; + if (HAL_RCC_OscConfig(&RCC_OscInitStruct) != HAL_OK) + { + Error_Handler(); + } - /** Initializes the CPU, AHB and APB buses clocks - */ - RCC_ClkInitStruct.ClockType = RCC_CLOCKTYPE_HCLK | RCC_CLOCKTYPE_SYSCLK - | RCC_CLOCKTYPE_PCLK1 | RCC_CLOCKTYPE_PCLK2 - | RCC_CLOCKTYPE_D3PCLK1 | RCC_CLOCKTYPE_D1PCLK1; - RCC_ClkInitStruct.SYSCLKSource = RCC_SYSCLKSOURCE_PLLCLK; - RCC_ClkInitStruct.SYSCLKDivider = RCC_SYSCLK_DIV1; - RCC_ClkInitStruct.AHBCLKDivider = RCC_HCLK_DIV2; - RCC_ClkInitStruct.APB3CLKDivider = RCC_APB3_DIV2; - RCC_ClkInitStruct.APB1CLKDivider = RCC_APB1_DIV2; - RCC_ClkInitStruct.APB2CLKDivider = RCC_APB2_DIV2; - RCC_ClkInitStruct.APB4CLKDivider = RCC_APB4_DIV2; + /** Initializes the CPU, AHB and APB buses clocks + */ + RCC_ClkInitStruct.ClockType = RCC_CLOCKTYPE_HCLK|RCC_CLOCKTYPE_SYSCLK + |RCC_CLOCKTYPE_PCLK1|RCC_CLOCKTYPE_PCLK2 + |RCC_CLOCKTYPE_D3PCLK1|RCC_CLOCKTYPE_D1PCLK1; + RCC_ClkInitStruct.SYSCLKSource = RCC_SYSCLKSOURCE_PLLCLK; + RCC_ClkInitStruct.SYSCLKDivider = RCC_SYSCLK_DIV1; + RCC_ClkInitStruct.AHBCLKDivider = RCC_HCLK_DIV2; + RCC_ClkInitStruct.APB3CLKDivider = RCC_APB3_DIV2; + RCC_ClkInitStruct.APB1CLKDivider = RCC_APB1_DIV2; + RCC_ClkInitStruct.APB2CLKDivider = RCC_APB2_DIV2; + RCC_ClkInitStruct.APB4CLKDivider = RCC_APB4_DIV2; - if (HAL_RCC_ClockConfig(&RCC_ClkInitStruct, FLASH_LATENCY_3) != HAL_OK) - { - Error_Handler(); - } - HAL_RCC_MCOConfig(RCC_MCO1, RCC_MCO1SOURCE_HSI, RCC_MCODIV_1); + if (HAL_RCC_ClockConfig(&RCC_ClkInitStruct, FLASH_LATENCY_3) != HAL_OK) + { + Error_Handler(); + } + HAL_RCC_MCOConfig(RCC_MCO1, RCC_MCO1SOURCE_HSI, RCC_MCODIV_1); } /* USER CODE BEGIN 4 */ /* USER CODE END 4 */ -/* MPU Configuration */ + /* MPU Configuration */ void MPU_Config(void) { - MPU_Region_InitTypeDef MPU_InitStruct = {0}; + MPU_Region_InitTypeDef MPU_InitStruct = {0}; - /* Disables the MPU */ - HAL_MPU_Disable(); + /* Disables the MPU */ + HAL_MPU_Disable(); - /** Initializes and configures the Region and the memory to be protected - */ - MPU_InitStruct.Enable = MPU_REGION_ENABLE; - MPU_InitStruct.Number = MPU_REGION_NUMBER0; - MPU_InitStruct.BaseAddress = 0x24000000; - MPU_InitStruct.Size = MPU_REGION_SIZE_128KB; - MPU_InitStruct.SubRegionDisable = 0x0; - MPU_InitStruct.TypeExtField = MPU_TEX_LEVEL1; - MPU_InitStruct.AccessPermission = MPU_REGION_FULL_ACCESS; - MPU_InitStruct.DisableExec = MPU_INSTRUCTION_ACCESS_ENABLE; - MPU_InitStruct.IsShareable = MPU_ACCESS_NOT_SHAREABLE; - MPU_InitStruct.IsCacheable = MPU_ACCESS_NOT_CACHEABLE; - MPU_InitStruct.IsBufferable = MPU_ACCESS_NOT_BUFFERABLE; + /** Initializes and configures the Region and the memory to be protected + */ + MPU_InitStruct.Enable = MPU_REGION_ENABLE; + MPU_InitStruct.Number = MPU_REGION_NUMBER0; + MPU_InitStruct.BaseAddress = 0x24000000; + MPU_InitStruct.Size = MPU_REGION_SIZE_128KB; + MPU_InitStruct.SubRegionDisable = 0x0; + MPU_InitStruct.TypeExtField = MPU_TEX_LEVEL1; + MPU_InitStruct.AccessPermission = MPU_REGION_FULL_ACCESS; + MPU_InitStruct.DisableExec = MPU_INSTRUCTION_ACCESS_ENABLE; + MPU_InitStruct.IsShareable = MPU_ACCESS_NOT_SHAREABLE; + MPU_InitStruct.IsCacheable = MPU_ACCESS_NOT_CACHEABLE; + MPU_InitStruct.IsBufferable = MPU_ACCESS_NOT_BUFFERABLE; - HAL_MPU_ConfigRegion(&MPU_InitStruct); - /* Enables the MPU */ - HAL_MPU_Enable(MPU_HFNMI_PRIVDEF); + HAL_MPU_ConfigRegion(&MPU_InitStruct); + /* Enables the MPU */ + HAL_MPU_Enable(MPU_HFNMI_PRIVDEF); } @@ -270,16 +265,16 @@ void MPU_Config(void) */ void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim) { - /* USER CODE BEGIN Callback 0 */ + /* USER CODE BEGIN Callback 0 */ - /* USER CODE END Callback 0 */ - if (htim->Instance == TIM23) - { - HAL_IncTick(); - } - /* USER CODE BEGIN Callback 1 */ + /* USER CODE END Callback 0 */ + if (htim->Instance == TIM23) + { + HAL_IncTick(); + } + /* USER CODE BEGIN Callback 1 */ - /* USER CODE END Callback 1 */ + /* USER CODE END Callback 1 */ } /** @@ -288,13 +283,13 @@ void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim) */ void Error_Handler(void) { - /* USER CODE BEGIN Error_Handler_Debug */ + /* USER CODE BEGIN Error_Handler_Debug */ /* User can add his own implementation to report the HAL error return state */ __disable_irq(); while (1) { } - /* USER CODE END Error_Handler_Debug */ + /* USER CODE END Error_Handler_Debug */ } #ifdef USE_FULL_ASSERT /** @@ -306,9 +301,9 @@ void Error_Handler(void) */ void assert_failed(uint8_t *file, uint32_t line) { - /* USER CODE BEGIN 6 */ + /* USER CODE BEGIN 6 */ /* User can add his own implementation to report the file name and line number, ex: printf("Wrong parameters value: file %s on line %d\r\n", file, line) */ - /* USER CODE END 6 */ + /* USER CODE END 6 */ } #endif /* USE_FULL_ASSERT */ diff --git a/User_Code/module/algorithm/QuaternionEKF/QuaternionEKF.c b/User_Code/module/algorithm/QuaternionEKF/QuaternionEKF.c index 27e857a..71601ac 100644 --- a/User_Code/module/algorithm/QuaternionEKF/QuaternionEKF.c +++ b/User_Code/module/algorithm/QuaternionEKF/QuaternionEKF.c @@ -15,6 +15,7 @@ ****************************************************************************** */ #include "QuaternionEKF.h" +#include "arm_math.h" QEKF_INS_t QEKF_INS; diff --git a/cmake/Toolchain/gcc-arm-none-eabi.cmake b/cmake/Toolchain/gcc-arm-none-eabi.cmake index 13ca6c0..b716d2b 100644 --- a/cmake/Toolchain/gcc-arm-none-eabi.cmake +++ b/cmake/Toolchain/gcc-arm-none-eabi.cmake @@ -1,7 +1,7 @@ # 设置目标系统为通用系统(无操作系统) -set(CMAKE_SYSTEM_NAME Generic) +set(CMAKE_SYSTEM_NAME Generic) # 设置目标处理器架构为ARM -set(CMAKE_SYSTEM_PROCESSOR arm) +set(CMAKE_SYSTEM_PROCESSOR arm) # 以下三行被注释掉的设置用于强制指定编译器信息 #set(CMAKE_C_COMPILER_FORCED TRUE) @@ -10,25 +10,25 @@ set(CMAKE_SYSTEM_PROCESSOR arm) #set(CMAKE_CXX_COMPILER_ID GNU) # 设置工具链前缀(需要在系统PATH环境变量中包含arm-none-eabi-工具链) -set(TOOLCHAIN_PREFIX arm-none-eabi-) +set(TOOLCHAIN_PREFIX arm-none-eabi-) # 设置C编译器为arm-none-eabi-gcc -set(CMAKE_C_COMPILER ${TOOLCHAIN_PREFIX}gcc) +set(CMAKE_C_COMPILER ${TOOLCHAIN_PREFIX}gcc) # 设置汇编器使用C编译器(gcc也可以处理汇编文件) -set(CMAKE_ASM_COMPILER ${CMAKE_C_COMPILER}) +set(CMAKE_ASM_COMPILER ${CMAKE_C_COMPILER}) # 设置C++编译器为arm-none-eabi-g++ -set(CMAKE_CXX_COMPILER ${TOOLCHAIN_PREFIX}g++) +set(CMAKE_CXX_COMPILER ${TOOLCHAIN_PREFIX}g++) # 设置链接器为arm-none-eabi-g++(使用C++编译器进行链接) -set(CMAKE_LINKER ${TOOLCHAIN_PREFIX}g++) +set(CMAKE_LINKER ${TOOLCHAIN_PREFIX}g++) # 设置objcopy工具,用于生成二进制文件等 -set(CMAKE_OBJCOPY ${TOOLCHAIN_PREFIX}objcopy) +set(CMAKE_OBJCOPY ${TOOLCHAIN_PREFIX}objcopy) # 设置size工具,用于查看程序内存占用 -set(CMAKE_SIZE ${TOOLCHAIN_PREFIX}size) +set(CMAKE_SIZE ${TOOLCHAIN_PREFIX}size) # 设置各种源文件生成的可执行文件后缀为.elf -set(CMAKE_EXECUTABLE_SUFFIX_ASM ".elf") -set(CMAKE_EXECUTABLE_SUFFIX_C ".elf") -set(CMAKE_EXECUTABLE_SUFFIX_CXX ".elf") +set(CMAKE_EXECUTABLE_SUFFIX_ASM ".elf") +set(CMAKE_EXECUTABLE_SUFFIX_C ".elf") +set(CMAKE_EXECUTABLE_SUFFIX_CXX ".elf") # 设置尝试编译的目标类型为静态库(用于工具链测试) set(CMAKE_TRY_COMPILE_TARGET_TYPE STATIC_LIBRARY) @@ -42,19 +42,19 @@ set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${TARGET_FLAGS}") set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wall -Wextra -Wpedantic -fdata-sections -ffunction-sections") # 根据构建类型设置不同的优化级别 -if(CMAKE_BUILD_TYPE MATCHES "Debug") +if (CMAKE_BUILD_TYPE MATCHES "Debug") set(CMAKE_C_FLAGS_DEBUG "-O0 -g") # 调试模式:无优化,包含调试信息 set(CMAKE_CXX_FLAGS_DEBUG "-O0 -g") -elseif(CMAKE_BUILD_TYPE MATCHES "Release") +elseif (CMAKE_BUILD_TYPE MATCHES "Release") set(CMAKE_C_FLAGS_RELEASE "-O3") # 发布模式:最高级别优化 set(CMAKE_CXX_FLAGS_RELEASE "-O3") -elseif(CMAKE_BUILD_TYPE MATCHES "RelWithDebInfo") +elseif (CMAKE_BUILD_TYPE MATCHES "RelWithDebInfo") set(CMAKE_C_FLAGS_RELWITHDEBINFO "-O2 -g") # 带调试信息的发布模式:中等优化,包含调试信息 set(CMAKE_CXX_FLAGS_RELWITHDEBINFO "-O2 -g") -elseif(CMAKE_BUILD_TYPE MATCHES "MinSizeRel") +elseif (CMAKE_BUILD_TYPE MATCHES "MinSizeRel") set(CMAKE_C_FLAGS_MINSIZEREL "-Os") # 最小体积模式:优化代码大小 set(CMAKE_CXX_FLAGS_MINSIZEREL "-Os") -endif() +endif () # 设置汇编器标志:包含C标志,并添加汇编特定选项 set(CMAKE_ASM_FLAGS "${CMAKE_C_FLAGS} -x assembler-with-cpp -MMD -MP") @@ -75,4 +75,6 @@ set(CMAKE_C_LINK_FLAGS "${CMAKE_C_LINK_FLAGS} -Wl,--start-group -lc -lm -Wl,--en set(CMAKE_C_LINK_FLAGS "${CMAKE_C_LINK_FLAGS} -Wl,--print-memory-usage") # 设置C++链接标志:在C链接标志基础上添加C++标准库支持 -set(CMAKE_CXX_LINK_FLAGS "${CMAKE_C_LINK_FLAGS} -Wl,--start-group -lstdc++ -lsupc++ -Wl,--end-group") \ No newline at end of file +set(CMAKE_CXX_LINK_FLAGS "${CMAKE_C_LINK_FLAGS} -Wl,--start-group -lstdc++ -lsupc++ -Wl,--end-group") + +set(TOOLCHAIN_LINK_LIBRARIES "m") \ No newline at end of file diff --git a/cmake/Toolchain/starm-clang.cmake b/cmake/Toolchain/starm-clang.cmake index ac1ccb6..d4fd45b 100644 --- a/cmake/Toolchain/starm-clang.cmake +++ b/cmake/Toolchain/starm-clang.cmake @@ -103,4 +103,6 @@ set(CMAKE_C_LINK_FLAGS "${CMAKE_C_LINK_FLAGS} -Wl,--start-group -lc -lm -Wl,--en set(CMAKE_C_LINK_FLAGS "${CMAKE_C_LINK_FLAGS} -Wl,--print-memory-usage") # 设置C++链接标志:在C链接标志基础上添加C++标准库支持 -set(CMAKE_CXX_LINK_FLAGS "${CMAKE_C_LINK_FLAGS} -Wl,--start-group -lstdc++ -lsupc++ -Wl,--end-group") \ No newline at end of file +set(CMAKE_CXX_LINK_FLAGS "${CMAKE_C_LINK_FLAGS} -Wl,--start-group -lstdc++ -lsupc++ -Wl,--end-group") + +set(TOOLCHAIN_LINK_LIBRARIES "m") \ No newline at end of file diff --git a/ozonedeb/windebnewestux.jdebug.user b/ozonedeb/windebnewestux.jdebug.user index 44feebc..852f67a 100644 --- a/ozonedeb/windebnewestux.jdebug.user +++ b/ozonedeb/windebnewestux.jdebug.user @@ -1,4 +1,7 @@ +OpenDocument="ins_task.c", FilePath="D:/RM/Elec Control/TronOneH7_Scaffold/User_Code/module/periph/imu/ins_task.c", Line=0 +OpenDocument="robot.c", FilePath="D:/RM/Elec Control/TronOneH7_Scaffold/User_Code/application/robot.c", Line=33 +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=2293 OpenDocument="stm32h7xx_hal.c", FilePath="D:/RM/Elec Control/TronOneH7_Scaffold/Drivers/STM32H7xx_HAL_Driver/Src/stm32h7xx_hal.c", Line=329 OpenDocument="list.c", FilePath="D:/RM/Elec Control/TronOneH7_Scaffold/Middlewares/Third_Party/FreeRTOS/Source/list.c", Line=144 @@ -13,19 +16,18 @@ OpenToolbar="Breakpoints", Floating=0, x=1, y=0 OpenWindow="Registers 1", DockArea=BOTTOM, x=1, y=0, w=362, 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=628, h=181, FilterBarShown=0, TotalValueBarShown=0, ToolBarShown=0 -OpenWindow="Break & Tracepoints", DockArea=LEFT, x=0, y=1, w=551, h=288, FilterBarShown=0, TotalValueBarShown=0, ToolBarShown=0, VectorCatchIndexMask=254 +OpenWindow="Break & Tracepoints", DockArea=LEFT, x=0, y=1, w=551, h=287, FilterBarShown=0, TotalValueBarShown=0, ToolBarShown=0, VectorCatchIndexMask=254 OpenWindow="Memory 1", DockArea=BOTTOM, x=3, y=0, w=466, h=181, FilterBarShown=0, TotalValueBarShown=0, ToolBarShown=0, EditorAddress=0x20005E30 -OpenWindow="Global Data", DockArea=RIGHT, x=0, y=2, w=681, h=437, FilterBarShown=0, TotalValueBarShown=0, ToolBarShown=0 -OpenWindow="Watched Data 1", DockArea=LEFT, x=0, y=2, w=551, h=294, FilterBarShown=0, TotalValueBarShown=0, ToolBarShown=0 -OpenWindow="Functions", DockArea=LEFT, x=0, y=3, w=551, h=217, TabPos=1, TopOfStack=0, FilterBarShown=0, TotalValueBarShown=0, ToolBarShown=0 -OpenWindow="Call Graph", DockArea=LEFT, x=0, y=3, w=551, h=217, TabPos=2, TopOfStack=1, FilterBarShown=0, TotalValueBarShown=0, ToolBarShown=0 +OpenWindow="Global Data", DockArea=RIGHT, x=0, y=2, w=681, h=433, FilterBarShown=0, TotalValueBarShown=0, ToolBarShown=0 +OpenWindow="Watched Data 1", DockArea=LEFT, x=0, y=2, w=551, h=293, FilterBarShown=0, TotalValueBarShown=0, ToolBarShown=0 +OpenWindow="Functions", DockArea=LEFT, x=0, y=3, w=551, h=219, TabPos=1, TopOfStack=0, FilterBarShown=0, TotalValueBarShown=0, ToolBarShown=0 +OpenWindow="Call Graph", DockArea=LEFT, x=0, y=3, w=551, h=219, TabPos=2, TopOfStack=1, FilterBarShown=0, TotalValueBarShown=0, ToolBarShown=0 OpenWindow="Data Sampling", DockArea=BOTTOM, x=0, y=0, w=1101, h=181, FilterBarShown=0, TotalValueBarShown=0, ToolBarShown=0, VisibleTab=0, UniformSampleSpacing=0 -OpenWindow="Timeline", DockArea=RIGHT, x=0, y=1, w=681, h=420, 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="491;-46", PowerGraphDrawAsPoints=0, PowerGraphLegendShown=1, PowerGraphAvgFilterTime=Off, PowerGraphAvgFilterLen=Off, PowerGraphUniformSampleSpacing=0, PowerGraphLegendPosition="459;-65", CodeGraphLegendShown=1, CodeGraphLegendPosition="475;0" -OpenWindow="Console", DockArea=LEFT, x=0, y=3, w=551, h=217, TabPos=0, TopOfStack=0, FilterBarShown=0, TotalValueBarShown=0, ToolBarShown=0 -OpenWindow="RTOS", DockArea=RIGHT, x=0, y=0, w=681, h=236, FilterBarShown=0, TotalValueBarShown=0, ToolBarShown=0, Showing="" -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] +OpenWindow="Timeline", DockArea=RIGHT, x=0, y=1, w=681, h=417, 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="491;-46", PowerGraphDrawAsPoints=0, PowerGraphLegendShown=1, PowerGraphAvgFilterTime=Off, PowerGraphAvgFilterLen=Off, PowerGraphUniformSampleSpacing=0, PowerGraphLegendPosition="459;-65", CodeGraphLegendShown=1, CodeGraphLegendPosition="475;0" +OpenWindow="Console", DockArea=LEFT, x=0, y=3, w=551, h=219, TabPos=0, TopOfStack=0, FilterBarShown=0, TotalValueBarShown=0, ToolBarShown=0 +OpenWindow="RTOS", DockArea=RIGHT, x=0, y=0, w=681, h=243, FilterBarShown=0, TotalValueBarShown=0, ToolBarShown=0, Showing="" 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;414] +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="Source Files", SortCol="File", SortOrder="ASCENDING", VisibleCols=["File";"Status";"Size";"#Insts";"Path"], ColWidths=[229;100;100;100;902] @@ -35,4 +37,5 @@ TableHeader="Power Sampling", SortCol="Index", SortOrder="ASCENDING", VisibleCol 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="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] \ No newline at end of file