Cmake,10°阶跃0.9s

This commit is contained in:
yxming66 2025-10-28 22:24:27 +08:00
parent 0028ba16b7
commit eea6c1f030
68 changed files with 324338 additions and 13525 deletions

11
.clangd Normal file
View File

@ -0,0 +1,11 @@
CompileFlags:
Add:
- '-ferror-limit=0'
- '-Wno-implicit-int'
CompilationDatabase: build/Debug
Diagnostics:
Suppress:
- unused-includes
- unknown_typename
- unknown_typename_suggest
- typename_requires_specqual

3
.gitignore vendored Normal file
View File

@ -0,0 +1,3 @@
build
mx.scratch
!.settings

File diff suppressed because one or more lines are too long

View File

@ -0,0 +1,147 @@
{
"resolved": [
{
"name": "cmake",
"version": "4.0.1+st.3",
"platform": "darwin",
"selected_by": [
{
"name": "cmake",
"version": "4.0.1+st.3"
}
]
},
{
"name": "cmake",
"version": "4.0.1+st.3",
"platform": "x86_64-linux",
"selected_by": [
{
"name": "cmake",
"version": "4.0.1+st.3"
}
]
},
{
"name": "cmake",
"version": "4.0.1+st.3",
"platform": "x86_64-windows",
"selected_by": [
{
"name": "cmake",
"version": "4.0.1+st.3"
}
]
},
{
"name": "gnu-tools-for-stm32",
"version": "13.3.1+st.9",
"platform": "darwin",
"selected_by": [
{
"name": "gnu-tools-for-stm32",
"version": "13.3.1+st.9"
}
]
},
{
"name": "gnu-tools-for-stm32",
"version": "13.3.1+st.9",
"platform": "x86_64-linux",
"selected_by": [
{
"name": "gnu-tools-for-stm32",
"version": "13.3.1+st.9"
}
]
},
{
"name": "gnu-tools-for-stm32",
"version": "13.3.1+st.9",
"platform": "x86_64-windows",
"selected_by": [
{
"name": "gnu-tools-for-stm32",
"version": "13.3.1+st.9"
}
]
},
{
"name": "gnu-tools-for-stm32-13_3_1-description",
"version": "1.0.1+st.1",
"platform": "all",
"selected_by": [
{
"name": "gnu-tools-for-stm32-13_3_1-description",
"version": ">=0.0.1"
}
]
},
{
"name": "ninja",
"version": "1.13.1+st.1",
"platform": "darwin",
"selected_by": [
{
"name": "ninja",
"version": "1.13.1+st.1"
}
]
},
{
"name": "ninja",
"version": "1.13.1+st.1",
"platform": "x86_64-linux",
"selected_by": [
{
"name": "ninja",
"version": "1.13.1+st.1"
}
]
},
{
"name": "ninja",
"version": "1.13.1+st.1",
"platform": "x86_64-windows",
"selected_by": [
{
"name": "ninja",
"version": "1.13.1+st.1"
}
]
},
{
"name": "st-arm-clangd",
"version": "19.1.2+st.3",
"platform": "darwin",
"selected_by": [
{
"name": "st-arm-clangd",
"version": "19.1.2+st.3"
}
]
},
{
"name": "st-arm-clangd",
"version": "19.1.2+st.3",
"platform": "x86_64-linux",
"selected_by": [
{
"name": "st-arm-clangd",
"version": "19.1.2+st.3"
}
]
},
{
"name": "st-arm-clangd",
"version": "19.1.2+st.3",
"platform": "x86_64-windows",
"selected_by": [
{
"name": "st-arm-clangd",
"version": "19.1.2+st.3"
}
]
}
]
}

View File

@ -0,0 +1,20 @@
{
"bundles": [
{
"name": "cmake",
"version": "4.0.1+st.3"
},
{
"name": "ninja",
"version": "1.13.1+st.1"
},
{
"name": "gnu-tools-for-stm32",
"version": "13.3.1+st.9"
},
{
"name": "st-arm-clangd",
"version": "19.1.2+st.3"
}
]
}

6
.settings/ide.store.json Normal file
View File

@ -0,0 +1,6 @@
{
"device": "STM32F407IGH6",
"core": "Cortex-M4",
"order": 0,
"toolchain": "GCC"
}

8
.vscode/c_cpp_properties.json vendored Normal file
View File

@ -0,0 +1,8 @@
{
"configurations": [
{
"name": "STM32",
"compileCommands": "${workspaceFolder}/build/Debug/compile_commands.json"
}
]
}

18
.vscode/settings.json vendored
View File

@ -2,6 +2,20 @@
"files.associations": {
"fixed_height.h": "c",
"ahrs.h": "c",
"xm_quadctrl.h": "c"
}
"xm_quadctrl.h": "c",
"at9s_pro.h": "c"
},
"cmake.cmakePath": "cube-cmake",
"cmake.configureArgs": [
"-DCMAKE_COMMAND=cube-cmake"
],
"cmake.preferredGenerators": [
"Ninja"
],
"stm32cube-ide-clangd.path": "cube",
"stm32cube-ide-clangd.arguments": [
"starm-clangd",
"--query-driver=${env:CUBE_BUNDLE_PATH}/gnu-tools-for-stm32/13.3.1+st.9/bin/arm-none-eabi-gcc.exe",
"--query-driver=${env:CUBE_BUNDLE_PATH}/gnu-tools-for-stm32/13.3.1+st.9/bin/arm-none-eabi-g++.exe"
]
}

113
CMakeLists.txt Normal file
View File

@ -0,0 +1,113 @@
cmake_minimum_required(VERSION 3.22)
#
# This file is generated only once,
# and is not re-generated if converter is called multiple times.
#
# User is free to modify the file as much as necessary
#
# Setup compiler settings
set(CMAKE_C_STANDARD 11)
set(CMAKE_C_STANDARD_REQUIRED ON)
set(CMAKE_C_EXTENSIONS ON)
# Define the build type
if(NOT CMAKE_BUILD_TYPE)
set(CMAKE_BUILD_TYPE "Debug")
endif()
# Set the project name
set(CMAKE_PROJECT_NAME DveC)
# Enable compile command to ease indexing with e.g. clangd
set(CMAKE_EXPORT_COMPILE_COMMANDS TRUE)
# Core project settings
project(${CMAKE_PROJECT_NAME})
message("Build type: " ${CMAKE_BUILD_TYPE})
# Enable CMake support for ASM and C languages
enable_language(C ASM)
# Create an executable object type
add_executable(${CMAKE_PROJECT_NAME})
# Add STM32CubeMX generated sources
add_subdirectory(cmake/stm32cubemx)
# Link directories setup
target_link_directories(${CMAKE_PROJECT_NAME} PRIVATE
# Add user defined library search paths
)
# Add sources to executable
target_sources(${CMAKE_PROJECT_NAME} PRIVATE
# Add user sources here
# User/BarometerDriver sources
User/BarometerDriver/spl06.c
User/BarometerDriver/user_iic.c
# User/bsp sources
User/bsp/gpio.c
User/bsp/i2c.c
User/bsp/mm.c
User/bsp/pwm.c
User/bsp/spi.c
User/bsp/time.c
User/bsp/uart.c
# User/component sources
User/component/AltitudeKalman.c
User/component/ahrs.c
User/component/filter.c
User/component/freertos_cli.c
User/component/limiter.c
User/component/pid.c
User/component/user_math.c
# User/device sources
User/device/at9s_pro.c
User/device/bmi088.c
User/device/buzzer.c
User/device/ist8310.c
User/device/led.c
User/device/vofa.c
# User/module sources
User/module/HeightEstimation.c
User/module/at9s_pro_cmd.c
User/module/config.c
User/module/xm_quadctrl.c
# User/task sources
User/task/atti_esti.c
User/task/blink.c
User/task/cmd.c
User/task/height_cal.c
User/task/init.c
User/task/quad_ctrl.c
User/task/user_task.c
)
# Add include paths
target_include_directories(${CMAKE_PROJECT_NAME} PRIVATE
# Add user defined include paths
User
)
# Add project symbols (macros)
target_compile_definitions(${CMAKE_PROJECT_NAME} PRIVATE
# Add user defined symbols
)
# Remove wrong libob.a library dependency when using cpp files
list(REMOVE_ITEM CMAKE_C_IMPLICIT_LINK_LIBRARIES ob)
# Add linked libraries
target_link_libraries(${CMAKE_PROJECT_NAME}
stm32cubemx
# Add user defined libraries
)

38
CMakePresets.json Normal file
View File

@ -0,0 +1,38 @@
{
"version": 3,
"configurePresets": [
{
"name": "default",
"hidden": true,
"generator": "Ninja",
"binaryDir": "${sourceDir}/build/${presetName}",
"toolchainFile": "${sourceDir}/cmake/gcc-arm-none-eabi.cmake",
"cacheVariables": {
}
},
{
"name": "Debug",
"inherits": "default",
"cacheVariables": {
"CMAKE_BUILD_TYPE": "Debug"
}
},
{
"name": "Release",
"inherits": "default",
"cacheVariables": {
"CMAKE_BUILD_TYPE": "Release"
}
}
],
"buildPresets": [
{
"name": "Debug",
"configurePreset": "Debug"
},
{
"name": "Release",
"configurePreset": "Release"
}
]
}

View File

@ -69,7 +69,7 @@
#define configTICK_RATE_HZ ((TickType_t)1000)
#define configMAX_PRIORITIES ( 56 )
#define configMINIMAL_STACK_SIZE ((uint16_t)128)
#define configTOTAL_HEAP_SIZE ((size_t)25000)
#define configTOTAL_HEAP_SIZE ((size_t)0x61a8)
#define configMAX_TASK_NAME_LEN ( 16 )
#define configUSE_TRACE_FACILITY 1
#define configUSE_16_BIT_TICKS 0

244
Core/Src/syscalls.c Normal file
View File

@ -0,0 +1,244 @@
/**
******************************************************************************
* @file syscalls.c
* @author Auto-generated by STM32CubeMX
* @brief Minimal System calls file
*
* For more information about which c-functions
* need which of these lowlevel functions
* please consult the Newlib or Picolibc libc-manual
******************************************************************************
* @attention
*
* Copyright (c) 2020-2025 STMicroelectronics.
* All rights reserved.
*
* This software is licensed under terms that can be found in the LICENSE file
* in the root directory of this software component.
* If no LICENSE file comes with this software, it is provided AS-IS.
*
******************************************************************************
*/
/* Includes */
#include <sys/stat.h>
#include <stdlib.h>
#include <errno.h>
#include <stdio.h>
#include <signal.h>
#include <time.h>
#include <sys/time.h>
#include <sys/times.h>
/* Variables */
extern int __io_putchar(int ch) __attribute__((weak));
extern int __io_getchar(void) __attribute__((weak));
char *__env[1] = { 0 };
char **environ = __env;
/* Functions */
void initialise_monitor_handles()
{
}
int _getpid(void)
{
return 1;
}
int _kill(int pid, int sig)
{
(void)pid;
(void)sig;
errno = EINVAL;
return -1;
}
void _exit (int status)
{
_kill(status, -1);
while (1) {} /* Make sure we hang here */
}
__attribute__((weak)) int _read(int file, char *ptr, int len)
{
(void)file;
int DataIdx;
for (DataIdx = 0; DataIdx < len; DataIdx++)
{
*ptr++ = __io_getchar();
}
return len;
}
__attribute__((weak)) int _write(int file, char *ptr, int len)
{
(void)file;
int DataIdx;
for (DataIdx = 0; DataIdx < len; DataIdx++)
{
__io_putchar(*ptr++);
}
return len;
}
int _close(int file)
{
(void)file;
return -1;
}
int _fstat(int file, struct stat *st)
{
(void)file;
st->st_mode = S_IFCHR;
return 0;
}
int _isatty(int file)
{
(void)file;
return 1;
}
int _lseek(int file, int ptr, int dir)
{
(void)file;
(void)ptr;
(void)dir;
return 0;
}
int _open(char *path, int flags, ...)
{
(void)path;
(void)flags;
/* Pretend like we always fail */
return -1;
}
int _wait(int *status)
{
(void)status;
errno = ECHILD;
return -1;
}
int _unlink(char *name)
{
(void)name;
errno = ENOENT;
return -1;
}
clock_t _times(struct tms *buf)
{
(void)buf;
return -1;
}
int _stat(const char *file, struct stat *st)
{
(void)file;
st->st_mode = S_IFCHR;
return 0;
}
int _link(char *old, char *new)
{
(void)old;
(void)new;
errno = EMLINK;
return -1;
}
int _fork(void)
{
errno = EAGAIN;
return -1;
}
int _execve(char *name, char **argv, char **env)
{
(void)name;
(void)argv;
(void)env;
errno = ENOMEM;
return -1;
}
// --- Picolibc Specific Section ---
#if defined(__PICOLIBC__)
/**
* @brief Picolibc helper function to output a character to a FILE stream.
* This redirects the output to the low-level __io_putchar function.
* @param c Character to write.
* @param file FILE stream pointer (ignored).
* @retval int The character written.
*/
static int starm_putc(char c, FILE *file)
{
(void) file;
__io_putchar(c);
return c;
}
/**
* @brief Picolibc helper function to input a character from a FILE stream.
* This redirects the input from the low-level __io_getchar function.
* @param file FILE stream pointer (ignored).
* @retval int The character read, cast to an unsigned char then int.
*/
static int starm_getc(FILE *file)
{
unsigned char c;
(void) file;
c = __io_getchar();
return c;
}
// Define and initialize the standard I/O streams for Picolibc.
// FDEV_SETUP_STREAM connects the starm_putc and starm_getc helper functions to a FILE structure.
// _FDEV_SETUP_RW indicates the stream is for reading and writing.
static FILE __stdio = FDEV_SETUP_STREAM(starm_putc,
starm_getc,
NULL,
_FDEV_SETUP_RW);
// Assign the standard stream pointers (stdin, stdout, stderr) to the initialized stream.
// Picolibc uses these pointers for standard I/O operations (printf, scanf, etc.).
FILE *const stdin = &__stdio;
__strong_reference(stdin, stdout);
__strong_reference(stdin, stderr);
// Create strong aliases mapping standard C library function names (without underscore)
// to the implemented system call stubs (with underscore). Picolibc uses these
// standard names internally, so this linking is required.
__strong_reference(_read, read);
__strong_reference(_write, write);
__strong_reference(_times, times);
__strong_reference(_execve, execve);
__strong_reference(_fork, fork);
__strong_reference(_link, link);
__strong_reference(_unlink, unlink);
__strong_reference(_stat, stat);
__strong_reference(_wait, wait);
__strong_reference(_open, open);
__strong_reference(_close, close);
__strong_reference(_lseek, lseek);
__strong_reference(_isatty, isatty);
__strong_reference(_fstat, fstat);
__strong_reference(_exit, exit);
__strong_reference(_kill, kill);
__strong_reference(_getpid, getpid);
#endif //__PICOLIBC__

87
Core/Src/sysmem.c Normal file
View File

@ -0,0 +1,87 @@
/**
******************************************************************************
* @file sysmem.c
* @author Generated by STM32CubeMX
* @brief System Memory calls file
*
* For more information about which C functions
* need which of these lowlevel functions
* please consult the Newlib or Picolibc libc manual
******************************************************************************
* @attention
*
* Copyright (c) 2025 STMicroelectronics.
* All rights reserved.
*
* This software is licensed under terms that can be found in the LICENSE file
* in the root directory of this software component.
* If no LICENSE file comes with this software, it is provided AS-IS.
*
******************************************************************************
*/
/* Includes */
#include <errno.h>
#include <stdint.h>
#include <stddef.h>
/**
* Pointer to the current high watermark of the heap usage
*/
static uint8_t *__sbrk_heap_end = NULL;
/**
* @brief _sbrk() allocates memory to the newlib heap and is used by malloc
* and others from the C library
*
* @verbatim
* ############################################################################
* # .data # .bss # newlib heap # MSP stack #
* # # # # Reserved by _Min_Stack_Size #
* ############################################################################
* ^-- RAM start ^-- _end _estack, RAM end --^
* @endverbatim
*
* This implementation starts allocating at the '_end' linker symbol
* The '_Min_Stack_Size' linker symbol reserves a memory for the MSP stack
* The implementation considers '_estack' linker symbol to be RAM end
* NOTE: If the MSP stack, at any point during execution, grows larger than the
* reserved size, please increase the '_Min_Stack_Size'.
*
* @param incr Memory size
* @return Pointer to allocated memory
*/
void *_sbrk(ptrdiff_t incr)
{
extern uint8_t _end; /* Symbol defined in the linker script */
extern uint8_t _estack; /* Symbol defined in the linker script */
extern uint32_t _Min_Stack_Size; /* Symbol defined in the linker script */
const uint32_t stack_limit = (uint32_t)&_estack - (uint32_t)&_Min_Stack_Size;
const uint8_t *max_heap = (uint8_t *)stack_limit;
uint8_t *prev_heap_end;
/* Initialize heap end at first call */
if (NULL == __sbrk_heap_end)
{
__sbrk_heap_end = &_end;
}
/* Protect heap from growing into the reserved MSP stack */
if (__sbrk_heap_end + incr > max_heap)
{
errno = ENOMEM;
return (void *)-1;
}
prev_heap_end = __sbrk_heap_end;
__sbrk_heap_end += incr;
return (void *)prev_heap_end;
}
#if defined(__PICOLIBC__)
// Picolibc expects syscalls without the leading underscore.
// This creates a strong alias so that
// calls to `sbrk()` are resolved to our `_sbrk()` implementation.
__strong_reference(_sbrk, sbrk);
#endif

View File

@ -47,7 +47,7 @@ void MX_TIM1_Init(void)
htim1.Instance = TIM1;
htim1.Init.Prescaler = 167;
htim1.Init.CounterMode = TIM_COUNTERMODE_UP;
htim1.Init.Period = 65535;
htim1.Init.Period = 4000-1;
htim1.Init.ClockDivision = TIM_CLOCKDIVISION_DIV1;
htim1.Init.RepetitionCounter = 0;
htim1.Init.AutoReloadPreload = TIM_AUTORELOAD_PRELOAD_DISABLE;

View File

@ -72,7 +72,7 @@ Dma.USART6_TX.4.RequestParameters=Instance,Direction,PeriphInc,MemInc,PeriphData
FREERTOS.IPParameters=Tasks01,configTOTAL_HEAP_SIZE,configCHECK_FOR_STACK_OVERFLOW
FREERTOS.Tasks01=defaultTask,24,128,StartDefaultTask,Default,NULL,Dynamic,NULL,NULL
FREERTOS.configCHECK_FOR_STACK_OVERFLOW=2
FREERTOS.configTOTAL_HEAP_SIZE=25000
FREERTOS.configTOTAL_HEAP_SIZE=0x61a8
File.Version=6
GPIO.groupedBy=Group By Peripherals
I2C3.I2C_Mode=I2C_Fast
@ -309,12 +309,12 @@ ProjectManager.ProjectName=DveC
ProjectManager.ProjectStructure=
ProjectManager.RegisterCallBack=
ProjectManager.StackSize=0x400
ProjectManager.TargetToolchain=MDK-ARM V5.32
ProjectManager.TargetToolchain=CMake
ProjectManager.ToolChainLocation=
ProjectManager.UAScriptAfterPath=
ProjectManager.UAScriptBeforePath=
ProjectManager.UnderRoot=false
ProjectManager.functionlistsort=1-SystemClock_Config-RCC-false-HAL-false,2-MX_GPIO_Init-GPIO-false-HAL-true,3-MX_DMA_Init-DMA-false-HAL-true,4-MX_I2C2_Init-I2C2-false-HAL-true,5-MX_I2C3_Init-I2C3-false-HAL-true,6-MX_TIM1_Init-TIM1-false-HAL-true,7-MX_TIM4_Init-TIM4-false-HAL-true,8-MX_TIM5_Init-TIM5-false-HAL-true,9-MX_TIM10_Init-TIM10-false-HAL-true,10-MX_SPI1_Init-SPI1-false-HAL-true,11-MX_USART6_UART_Init-USART6-false-HAL-true,12-MX_USART3_UART_Init-USART3-false-HAL-true
ProjectManager.functionlistsort=1-SystemClock_Config-RCC-false-HAL-false,2-MX_GPIO_Init-GPIO-false-HAL-true,3-MX_DMA_Init-DMA-false-HAL-true,4-MX_I2C3_Init-I2C3-false-HAL-true,5-MX_TIM1_Init-TIM1-false-HAL-true,6-MX_TIM4_Init-TIM4-false-HAL-true,7-MX_TIM5_Init-TIM5-false-HAL-true,8-MX_TIM10_Init-TIM10-false-HAL-true,9-MX_SPI1_Init-SPI1-false-HAL-true,10-MX_USART6_UART_Init-USART6-false-HAL-true,11-MX_USART3_UART_Init-USART3-false-HAL-true
RCC.48MHZClocksFreq_Value=84000000
RCC.AHBFreq_Value=168000000
RCC.APB1CLKDivider=RCC_HCLK_DIV4
@ -384,7 +384,8 @@ TIM1.Channel-PWM\ Generation1\ CH1=TIM_CHANNEL_1
TIM1.Channel-PWM\ Generation2\ CH2=TIM_CHANNEL_2
TIM1.Channel-PWM\ Generation3\ CH3=TIM_CHANNEL_3
TIM1.Channel-PWM\ Generation4\ CH4=TIM_CHANNEL_4
TIM1.IPParameters=Channel-PWM Generation1 CH1,Channel-PWM Generation2 CH2,Channel-PWM Generation3 CH3,Channel-PWM Generation4 CH4,Prescaler
TIM1.IPParameters=Channel-PWM Generation1 CH1,Channel-PWM Generation2 CH2,Channel-PWM Generation3 CH3,Channel-PWM Generation4 CH4,Prescaler,Period
TIM1.Period=4000-1
TIM1.Prescaler=167
TIM10.Channel=TIM_CHANNEL_1
TIM10.IPParameters=Channel

File diff suppressed because one or more lines are too long

View File

@ -148,7 +148,24 @@
<Name>-U-O142 -O2254 -S0 -C0 -N00("ARM CoreSight SW-DP") -D00(2BA01477) -L00(0) -TO18 -TC10000000 -TP21 -TDS8007 -TDT0 -TDC1F -TIEFFFFFFFF -TIP8 -FO7 -FD20000000 -FC800 -FN1 -FF0STM32F4xx_1024.FLM -FS08000000 -FL0100000 -FP0($$Device:STM32F407IGHx$CMSIS\Flash\STM32F4xx_1024.FLM)</Name>
</SetRegEntry>
</TargetDriverDllRegistry>
<Breakpoint/>
<Breakpoint>
<Bp>
<Number>0</Number>
<Type>0</Type>
<LineNumber>278</LineNumber>
<EnabledFlag>1</EnabledFlag>
<Address>0</Address>
<ByteObject>0</ByteObject>
<HtxType>0</HtxType>
<ManyObjects>0</ManyObjects>
<SizeOfObject>0</SizeOfObject>
<BreakByAccess>0</BreakByAccess>
<BreakIfRCount>0</BreakIfRCount>
<Filename>startup_stm32f407xx.s</Filename>
<ExecCommand></ExecCommand>
<Expression></Expression>
</Bp>
</Breakpoint>
<WatchWindow1>
<Ww>
<count>0</count>
@ -213,6 +230,10 @@
<Name>System Viewer\I2C2</Name>
<WinId>35904</WinId>
</Entry>
<Entry>
<Name>System Viewer\TIM1</Name>
<WinId>35903</WinId>
</Entry>
<Entry>
<Name>System Viewer\TIM5</Name>
<WinId>35905</WinId>
@ -250,7 +271,7 @@
<Group>
<GroupName>Application/User/Core</GroupName>
<tvExp>0</tvExp>
<tvExp>1</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
<cbSel>0</cbSel>
<RteFlg>0</RteFlg>

Binary file not shown.

View File

@ -22,7 +22,7 @@ Dialog DLL: TCM.DLL V1.48.0.0
<h2>Project:</h2>
D:\CUBEMX\Quadcopter\DveC\MDK-ARM\DveC.uvprojx
Project File Date: 10/19/2025
Project File Date: 10/21/2025
<h2>Output:</h2>
*** Using Compiler 'V6.16', folder: 'D:\cangming\ARM\ARMCLANG\Bin'
@ -32,8 +32,9 @@ Note: source file '..\User\bsp\i2c.c' - object file renamed from 'DveC\i2c.o' to
Note: source file '..\User\bsp\spi.c' - object file renamed from 'DveC\spi.o' to 'DveC\spi_1.o'.
Note: source file '..\User\BarometerDriver\spl06.c' - object file renamed from 'DveC\spl06.o' to 'DveC\spl06_1.o'.
Note: source file '..\User\task\cmd.c' - object file renamed from 'DveC\cmd.o' to 'DveC\cmd_1.o'.
compiling config.c...
linking...
Program Size: Code=50488 RO-data=1244 RW-data=320 ZI-data=33160
Program Size: Code=51440 RO-data=1244 RW-data=320 ZI-data=33544
FromELF: creating hex file...
"DveC\DveC.axf" - 0 Error(s), 0 Warning(s).

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -1,6 +1,6 @@
Dependencies for Project 'DveC', Target 'DveC': (DO NOT MODIFY !)
CompilerVersion: 6160000::V6.16::ARMCLANG
F (startup_stm32f407xx.s)(0x68F1B729)(--target=arm-arm-none-eabi -mcpu=cortex-m4 -mfpu=fpv4-sp-d16 -mfloat-abi=hard -masm=auto -c -gdwarf-3 -I ../Core/Inc -I ../Drivers/STM32F4xx_HAL_Driver/Inc -I ../Drivers/STM32F4xx_HAL_Driver/Inc/Legacy -I ../Middlewares/Third_Party/FreeRTOS/Source/include -I ../Middlewares/Third_Party/FreeRTOS/Source/CMSIS_RTOS_V2 -I ../Middlewares/Third_Party/FreeRTOS/Source/portable/RVDS/ARM_CM4F -I ../Drivers/CMSIS/Device/ST/STM32F4xx/Include -I ../Drivers/CMSIS/Include -I./RTE/_DveC -ID:/cangming/ARM/CMSIS/5.7.0/CMSIS/Core/Include -ID:/cangming/keil/STM32F4xx_DFP/2.15.0/Drivers/CMSIS/Device/ST/STM32F4xx/Include -Wa,armasm,--pd,"__UVISION_VERSION SETA 534" -Wa,armasm,--pd,"_RTE_ SETA 1" -Wa,armasm,--pd,"STM32F407xx SETA 1" -Wa,armasm,--pd,"_RTE_ SETA 1" -o dvec/startup_stm32f407xx.o)
F (startup_stm32f407xx.s)(0x68F74D65)(--target=arm-arm-none-eabi -mcpu=cortex-m4 -mfpu=fpv4-sp-d16 -mfloat-abi=hard -masm=auto -c -gdwarf-3 -I ../Core/Inc -I ../Drivers/STM32F4xx_HAL_Driver/Inc -I ../Drivers/STM32F4xx_HAL_Driver/Inc/Legacy -I ../Middlewares/Third_Party/FreeRTOS/Source/include -I ../Middlewares/Third_Party/FreeRTOS/Source/CMSIS_RTOS_V2 -I ../Middlewares/Third_Party/FreeRTOS/Source/portable/RVDS/ARM_CM4F -I ../Drivers/CMSIS/Device/ST/STM32F4xx/Include -I ../Drivers/CMSIS/Include -I./RTE/_DveC -ID:/cangming/ARM/CMSIS/5.7.0/CMSIS/Core/Include -ID:/cangming/keil/STM32F4xx_DFP/2.15.0/Drivers/CMSIS/Device/ST/STM32F4xx/Include -Wa,armasm,--pd,"__UVISION_VERSION SETA 534" -Wa,armasm,--pd,"_RTE_ SETA 1" -Wa,armasm,--pd,"STM32F407xx SETA 1" -Wa,armasm,--pd,"_RTE_ SETA 1" -o dvec/startup_stm32f407xx.o)
F (../Core/Src/main.c)(0x68F1B727)(-xc -std=c99 --target=arm-arm-none-eabi -mcpu=cortex-m4 -mfpu=fpv4-sp-d16 -mfloat-abi=hard -c -fno-rtti -funsigned-char -fshort-enums -fshort-wchar -gdwarf-3 -O1 -ffunction-sections -Wno-packed -Wno-missing-variable-declarations -Wno-missing-prototypes -Wno-missing-noreturn -Wno-sign-conversion -Wno-nonportable-include-path -Wno-reserved-id-macro -Wno-unused-macros -Wno-documentation-unknown-command -Wno-documentation -Wno-license-management -Wno-parentheses-equality -I ../Core/Inc -I ../Drivers/STM32F4xx_HAL_Driver/Inc -I ../Drivers/STM32F4xx_HAL_Driver/Inc/Legacy -I ../Middlewares/Third_Party/FreeRTOS/Source/include -I ../Middlewares/Third_Party/FreeRTOS/Source/CMSIS_RTOS_V2 -I ../Middlewares/Third_Party/FreeRTOS/Source/portable/RVDS/ARM_CM4F -I ../Drivers/CMSIS/Device/ST/STM32F4xx/Include -I ../Drivers/CMSIS/Include -I ../User -I./RTE/_DveC -ID:/cangming/ARM/CMSIS/5.7.0/CMSIS/Core/Include -ID:/cangming/keil/STM32F4xx_DFP/2.15.0/Drivers/CMSIS/Device/ST/STM32F4xx/Include -D__UVISION_VERSION="534" -D_RTE_ -DSTM32F407xx -D_RTE_ -DUSE_HAL_DRIVER -DSTM32F407xx -o dvec/main.o -MD)
I (..\Core\Inc\main.h)(0x68F1B727)
I (..\Drivers\STM32F4xx_HAL_Driver\Inc\stm32f4xx_hal.h)(0x68AD823F)
@ -38,7 +38,7 @@ I (..\Drivers\STM32F4xx_HAL_Driver\Inc\stm32f4xx_hal_tim_ex.h)(0x68AD823F)
I (..\Drivers\STM32F4xx_HAL_Driver\Inc\stm32f4xx_hal_uart.h)(0x68AD823F)
I (..\Middlewares\Third_Party\FreeRTOS\Source\CMSIS_RTOS_V2\cmsis_os.h)(0x68AD8208)
I (..\Middlewares\Third_Party\FreeRTOS\Source\include\FreeRTOS.h)(0x68AD8208)
I (..\Core\Inc\FreeRTOSConfig.h)(0x68F0EA65)
I (..\Core\Inc\FreeRTOSConfig.h)(0x68F4A8EC)
I (..\Middlewares\Third_Party\FreeRTOS\Source\include\projdefs.h)(0x68AD8208)
I (..\Middlewares\Third_Party\FreeRTOS\Source\include\portable.h)(0x68AD8208)
I (..\Middlewares\Third_Party\FreeRTOS\Source\include\deprecated_definitions.h)(0x68AD8208)
@ -93,7 +93,7 @@ F (../Core/Src/freertos.c)(0x68F10102)(-xc -std=c99 --target=arm-arm-none-eabi -
I (..\Middlewares\Third_Party\FreeRTOS\Source\include\FreeRTOS.h)(0x68AD8208)
I (D:\cangming\ARM\ARMCLANG\include\stddef.h)(0x6035A4A8)
I (D:\cangming\ARM\ARMCLANG\include\stdint.h)(0x6035A4A8)
I (..\Core\Inc\FreeRTOSConfig.h)(0x68F0EA65)
I (..\Core\Inc\FreeRTOSConfig.h)(0x68F4A8EC)
I (..\Middlewares\Third_Party\FreeRTOS\Source\include\projdefs.h)(0x68AD8208)
I (..\Middlewares\Third_Party\FreeRTOS\Source\include\portable.h)(0x68AD8208)
I (..\Middlewares\Third_Party\FreeRTOS\Source\include\deprecated_definitions.h)(0x68AD8208)
@ -135,7 +135,7 @@ I (..\Drivers\STM32F4xx_HAL_Driver\Inc\stm32f4xx_hal_tim_ex.h)(0x68AD823F)
I (..\Drivers\STM32F4xx_HAL_Driver\Inc\stm32f4xx_hal_uart.h)(0x68AD823F)
I (..\Middlewares\Third_Party\FreeRTOS\Source\CMSIS_RTOS_V2\cmsis_os.h)(0x68AD8208)
I (..\Middlewares\Third_Party\FreeRTOS\Source\CMSIS_RTOS_V2\cmsis_os2.h)(0x68AD8208)
I (..\User\task\user_task.h)(0x68F49892)
I (..\User\task\user_task.h)(0x68F98E84)
F (../Core/Src/dma.c)(0x68F0EA66)(-xc -std=c99 --target=arm-arm-none-eabi -mcpu=cortex-m4 -mfpu=fpv4-sp-d16 -mfloat-abi=hard -c -fno-rtti -funsigned-char -fshort-enums -fshort-wchar -gdwarf-3 -O1 -ffunction-sections -Wno-packed -Wno-missing-variable-declarations -Wno-missing-prototypes -Wno-missing-noreturn -Wno-sign-conversion -Wno-nonportable-include-path -Wno-reserved-id-macro -Wno-unused-macros -Wno-documentation-unknown-command -Wno-documentation -Wno-license-management -Wno-parentheses-equality -I ../Core/Inc -I ../Drivers/STM32F4xx_HAL_Driver/Inc -I ../Drivers/STM32F4xx_HAL_Driver/Inc/Legacy -I ../Middlewares/Third_Party/FreeRTOS/Source/include -I ../Middlewares/Third_Party/FreeRTOS/Source/CMSIS_RTOS_V2 -I ../Middlewares/Third_Party/FreeRTOS/Source/portable/RVDS/ARM_CM4F -I ../Drivers/CMSIS/Device/ST/STM32F4xx/Include -I ../Drivers/CMSIS/Include -I ../User -I./RTE/_DveC -ID:/cangming/ARM/CMSIS/5.7.0/CMSIS/Core/Include -ID:/cangming/keil/STM32F4xx_DFP/2.15.0/Drivers/CMSIS/Device/ST/STM32F4xx/Include -D__UVISION_VERSION="534" -D_RTE_ -DSTM32F407xx -D_RTE_ -DUSE_HAL_DRIVER -DSTM32F407xx -o dvec/dma.o -MD)
I (..\Core\Inc\dma.h)(0x68DF6BC0)
I (..\Core\Inc\main.h)(0x68F1B727)
@ -244,7 +244,7 @@ I (..\Drivers\STM32F4xx_HAL_Driver\Inc\stm32f4xx_hal_spi.h)(0x68AD823F)
I (..\Drivers\STM32F4xx_HAL_Driver\Inc\stm32f4xx_hal_tim.h)(0x68AD823F)
I (..\Drivers\STM32F4xx_HAL_Driver\Inc\stm32f4xx_hal_tim_ex.h)(0x68AD823F)
I (..\Drivers\STM32F4xx_HAL_Driver\Inc\stm32f4xx_hal_uart.h)(0x68AD823F)
F (../Core/Src/tim.c)(0x68F1AC89)(-xc -std=c99 --target=arm-arm-none-eabi -mcpu=cortex-m4 -mfpu=fpv4-sp-d16 -mfloat-abi=hard -c -fno-rtti -funsigned-char -fshort-enums -fshort-wchar -gdwarf-3 -O1 -ffunction-sections -Wno-packed -Wno-missing-variable-declarations -Wno-missing-prototypes -Wno-missing-noreturn -Wno-sign-conversion -Wno-nonportable-include-path -Wno-reserved-id-macro -Wno-unused-macros -Wno-documentation-unknown-command -Wno-documentation -Wno-license-management -Wno-parentheses-equality -I ../Core/Inc -I ../Drivers/STM32F4xx_HAL_Driver/Inc -I ../Drivers/STM32F4xx_HAL_Driver/Inc/Legacy -I ../Middlewares/Third_Party/FreeRTOS/Source/include -I ../Middlewares/Third_Party/FreeRTOS/Source/CMSIS_RTOS_V2 -I ../Middlewares/Third_Party/FreeRTOS/Source/portable/RVDS/ARM_CM4F -I ../Drivers/CMSIS/Device/ST/STM32F4xx/Include -I ../Drivers/CMSIS/Include -I ../User -I./RTE/_DveC -ID:/cangming/ARM/CMSIS/5.7.0/CMSIS/Core/Include -ID:/cangming/keil/STM32F4xx_DFP/2.15.0/Drivers/CMSIS/Device/ST/STM32F4xx/Include -D__UVISION_VERSION="534" -D_RTE_ -DSTM32F407xx -D_RTE_ -DUSE_HAL_DRIVER -DSTM32F407xx -o dvec/tim.o -MD)
F (../Core/Src/tim.c)(0x68F74D63)(-xc -std=c99 --target=arm-arm-none-eabi -mcpu=cortex-m4 -mfpu=fpv4-sp-d16 -mfloat-abi=hard -c -fno-rtti -funsigned-char -fshort-enums -fshort-wchar -gdwarf-3 -O1 -ffunction-sections -Wno-packed -Wno-missing-variable-declarations -Wno-missing-prototypes -Wno-missing-noreturn -Wno-sign-conversion -Wno-nonportable-include-path -Wno-reserved-id-macro -Wno-unused-macros -Wno-documentation-unknown-command -Wno-documentation -Wno-license-management -Wno-parentheses-equality -I ../Core/Inc -I ../Drivers/STM32F4xx_HAL_Driver/Inc -I ../Drivers/STM32F4xx_HAL_Driver/Inc/Legacy -I ../Middlewares/Third_Party/FreeRTOS/Source/include -I ../Middlewares/Third_Party/FreeRTOS/Source/CMSIS_RTOS_V2 -I ../Middlewares/Third_Party/FreeRTOS/Source/portable/RVDS/ARM_CM4F -I ../Drivers/CMSIS/Device/ST/STM32F4xx/Include -I ../Drivers/CMSIS/Include -I ../User -I./RTE/_DveC -ID:/cangming/ARM/CMSIS/5.7.0/CMSIS/Core/Include -ID:/cangming/keil/STM32F4xx_DFP/2.15.0/Drivers/CMSIS/Device/ST/STM32F4xx/Include -D__UVISION_VERSION="534" -D_RTE_ -DSTM32F407xx -D_RTE_ -DUSE_HAL_DRIVER -DSTM32F407xx -o dvec/tim.o -MD)
I (..\Core\Inc\tim.h)(0x68DF6BC0)
I (..\Core\Inc\main.h)(0x68F1B727)
I (..\Drivers\STM32F4xx_HAL_Driver\Inc\stm32f4xx_hal.h)(0x68AD823F)
@ -353,7 +353,7 @@ I (..\Drivers\STM32F4xx_HAL_Driver\Inc\stm32f4xx_hal_tim_ex.h)(0x68AD823F)
I (..\Drivers\STM32F4xx_HAL_Driver\Inc\stm32f4xx_hal_uart.h)(0x68AD823F)
I (..\Core\Inc\stm32f4xx_it.h)(0x68F0EA66)
I (..\Middlewares\Third_Party\FreeRTOS\Source\include\FreeRTOS.h)(0x68AD8208)
I (..\Core\Inc\FreeRTOSConfig.h)(0x68F0EA65)
I (..\Core\Inc\FreeRTOSConfig.h)(0x68F4A8EC)
I (..\Middlewares\Third_Party\FreeRTOS\Source\include\projdefs.h)(0x68AD8208)
I (..\Middlewares\Third_Party\FreeRTOS\Source\include\portable.h)(0x68AD8208)
I (..\Middlewares\Third_Party\FreeRTOS\Source\include\deprecated_definitions.h)(0x68AD8208)
@ -1084,7 +1084,7 @@ F (../Middlewares/Third_Party/FreeRTOS/Source/croutine.c)(0x68AD8208)(-xc -std=c
I (..\Middlewares\Third_Party\FreeRTOS\Source\include\FreeRTOS.h)(0x68AD8208)
I (D:\cangming\ARM\ARMCLANG\include\stddef.h)(0x6035A4A8)
I (D:\cangming\ARM\ARMCLANG\include\stdint.h)(0x6035A4A8)
I (..\Core\Inc\FreeRTOSConfig.h)(0x68F0EA65)
I (..\Core\Inc\FreeRTOSConfig.h)(0x68F4A8EC)
I (..\Middlewares\Third_Party\FreeRTOS\Source\include\projdefs.h)(0x68AD8208)
I (..\Middlewares\Third_Party\FreeRTOS\Source\include\portable.h)(0x68AD8208)
I (..\Middlewares\Third_Party\FreeRTOS\Source\include\deprecated_definitions.h)(0x68AD8208)
@ -1098,7 +1098,7 @@ I (D:\cangming\ARM\ARMCLANG\include\stdlib.h)(0x6035A4A8)
I (..\Middlewares\Third_Party\FreeRTOS\Source\include\FreeRTOS.h)(0x68AD8208)
I (D:\cangming\ARM\ARMCLANG\include\stddef.h)(0x6035A4A8)
I (D:\cangming\ARM\ARMCLANG\include\stdint.h)(0x6035A4A8)
I (..\Core\Inc\FreeRTOSConfig.h)(0x68F0EA65)
I (..\Core\Inc\FreeRTOSConfig.h)(0x68F4A8EC)
I (..\Middlewares\Third_Party\FreeRTOS\Source\include\projdefs.h)(0x68AD8208)
I (..\Middlewares\Third_Party\FreeRTOS\Source\include\portable.h)(0x68AD8208)
I (..\Middlewares\Third_Party\FreeRTOS\Source\include\deprecated_definitions.h)(0x68AD8208)
@ -1113,7 +1113,7 @@ I (D:\cangming\ARM\ARMCLANG\include\stdlib.h)(0x6035A4A8)
I (..\Middlewares\Third_Party\FreeRTOS\Source\include\FreeRTOS.h)(0x68AD8208)
I (D:\cangming\ARM\ARMCLANG\include\stddef.h)(0x6035A4A8)
I (D:\cangming\ARM\ARMCLANG\include\stdint.h)(0x6035A4A8)
I (..\Core\Inc\FreeRTOSConfig.h)(0x68F0EA65)
I (..\Core\Inc\FreeRTOSConfig.h)(0x68F4A8EC)
I (..\Middlewares\Third_Party\FreeRTOS\Source\include\projdefs.h)(0x68AD8208)
I (..\Middlewares\Third_Party\FreeRTOS\Source\include\portable.h)(0x68AD8208)
I (..\Middlewares\Third_Party\FreeRTOS\Source\include\deprecated_definitions.h)(0x68AD8208)
@ -1126,7 +1126,7 @@ I (D:\cangming\ARM\ARMCLANG\include\string.h)(0x6035A4A8)
I (..\Middlewares\Third_Party\FreeRTOS\Source\include\FreeRTOS.h)(0x68AD8208)
I (D:\cangming\ARM\ARMCLANG\include\stddef.h)(0x6035A4A8)
I (D:\cangming\ARM\ARMCLANG\include\stdint.h)(0x6035A4A8)
I (..\Core\Inc\FreeRTOSConfig.h)(0x68F0EA65)
I (..\Core\Inc\FreeRTOSConfig.h)(0x68F4A8EC)
I (..\Middlewares\Third_Party\FreeRTOS\Source\include\projdefs.h)(0x68AD8208)
I (..\Middlewares\Third_Party\FreeRTOS\Source\include\portable.h)(0x68AD8208)
I (..\Middlewares\Third_Party\FreeRTOS\Source\include\deprecated_definitions.h)(0x68AD8208)
@ -1140,7 +1140,7 @@ I (D:\cangming\ARM\ARMCLANG\include\stdint.h)(0x6035A4A8)
I (D:\cangming\ARM\ARMCLANG\include\string.h)(0x6035A4A8)
I (..\Middlewares\Third_Party\FreeRTOS\Source\include\FreeRTOS.h)(0x68AD8208)
I (D:\cangming\ARM\ARMCLANG\include\stddef.h)(0x6035A4A8)
I (..\Core\Inc\FreeRTOSConfig.h)(0x68F0EA65)
I (..\Core\Inc\FreeRTOSConfig.h)(0x68F4A8EC)
I (..\Middlewares\Third_Party\FreeRTOS\Source\include\projdefs.h)(0x68AD8208)
I (..\Middlewares\Third_Party\FreeRTOS\Source\include\portable.h)(0x68AD8208)
I (..\Middlewares\Third_Party\FreeRTOS\Source\include\deprecated_definitions.h)(0x68AD8208)
@ -1155,7 +1155,7 @@ I (D:\cangming\ARM\ARMCLANG\include\string.h)(0x6035A4A8)
I (..\Middlewares\Third_Party\FreeRTOS\Source\include\FreeRTOS.h)(0x68AD8208)
I (D:\cangming\ARM\ARMCLANG\include\stddef.h)(0x6035A4A8)
I (D:\cangming\ARM\ARMCLANG\include\stdint.h)(0x6035A4A8)
I (..\Core\Inc\FreeRTOSConfig.h)(0x68F0EA65)
I (..\Core\Inc\FreeRTOSConfig.h)(0x68F4A8EC)
I (..\Middlewares\Third_Party\FreeRTOS\Source\include\projdefs.h)(0x68AD8208)
I (..\Middlewares\Third_Party\FreeRTOS\Source\include\portable.h)(0x68AD8208)
I (..\Middlewares\Third_Party\FreeRTOS\Source\include\deprecated_definitions.h)(0x68AD8208)
@ -1170,7 +1170,7 @@ I (D:\cangming\ARM\ARMCLANG\include\stdlib.h)(0x6035A4A8)
I (..\Middlewares\Third_Party\FreeRTOS\Source\include\FreeRTOS.h)(0x68AD8208)
I (D:\cangming\ARM\ARMCLANG\include\stddef.h)(0x6035A4A8)
I (D:\cangming\ARM\ARMCLANG\include\stdint.h)(0x6035A4A8)
I (..\Core\Inc\FreeRTOSConfig.h)(0x68F0EA65)
I (..\Core\Inc\FreeRTOSConfig.h)(0x68F4A8EC)
I (..\Middlewares\Third_Party\FreeRTOS\Source\include\projdefs.h)(0x68AD8208)
I (..\Middlewares\Third_Party\FreeRTOS\Source\include\portable.h)(0x68AD8208)
I (..\Middlewares\Third_Party\FreeRTOS\Source\include\deprecated_definitions.h)(0x68AD8208)
@ -1188,7 +1188,7 @@ I (D:\cangming\ARM\ARMCLANG\include\stddef.h)(0x6035A4A8)
I (..\Drivers\CMSIS\Include\cmsis_compiler.h)(0x68AD823F)
I (..\Drivers\CMSIS\Include\cmsis_armclang.h)(0x68AD823F)
I (..\Middlewares\Third_Party\FreeRTOS\Source\include\FreeRTOS.h)(0x68AD8208)
I (..\Core\Inc\FreeRTOSConfig.h)(0x68F0EA65)
I (..\Core\Inc\FreeRTOSConfig.h)(0x68F4A8EC)
I (..\Middlewares\Third_Party\FreeRTOS\Source\include\projdefs.h)(0x68AD8208)
I (..\Middlewares\Third_Party\FreeRTOS\Source\include\portable.h)(0x68AD8208)
I (..\Middlewares\Third_Party\FreeRTOS\Source\include\deprecated_definitions.h)(0x68AD8208)
@ -1236,7 +1236,7 @@ I (D:\cangming\ARM\ARMCLANG\include\stdlib.h)(0x6035A4A8)
I (..\Middlewares\Third_Party\FreeRTOS\Source\include\FreeRTOS.h)(0x68AD8208)
I (D:\cangming\ARM\ARMCLANG\include\stddef.h)(0x6035A4A8)
I (D:\cangming\ARM\ARMCLANG\include\stdint.h)(0x6035A4A8)
I (..\Core\Inc\FreeRTOSConfig.h)(0x68F0EA65)
I (..\Core\Inc\FreeRTOSConfig.h)(0x68F4A8EC)
I (..\Middlewares\Third_Party\FreeRTOS\Source\include\projdefs.h)(0x68AD8208)
I (..\Middlewares\Third_Party\FreeRTOS\Source\include\portable.h)(0x68AD8208)
I (..\Middlewares\Third_Party\FreeRTOS\Source\include\deprecated_definitions.h)(0x68AD8208)
@ -1248,7 +1248,7 @@ F (../Middlewares/Third_Party/FreeRTOS/Source/portable/RVDS/ARM_CM4F/port.c)(0x6
I (..\Middlewares\Third_Party\FreeRTOS\Source\include\FreeRTOS.h)(0x68AD8208)
I (D:\cangming\ARM\ARMCLANG\include\stddef.h)(0x6035A4A8)
I (D:\cangming\ARM\ARMCLANG\include\stdint.h)(0x6035A4A8)
I (..\Core\Inc\FreeRTOSConfig.h)(0x68F0EA65)
I (..\Core\Inc\FreeRTOSConfig.h)(0x68F4A8EC)
I (..\Middlewares\Third_Party\FreeRTOS\Source\include\projdefs.h)(0x68AD8208)
I (..\Middlewares\Third_Party\FreeRTOS\Source\include\portable.h)(0x68AD8208)
I (..\Middlewares\Third_Party\FreeRTOS\Source\include\deprecated_definitions.h)(0x68AD8208)
@ -1342,7 +1342,7 @@ I (..\User\bsp\mm.h)(0x68F0EAFF)
I (D:\cangming\ARM\ARMCLANG\include\stddef.h)(0x6035A4A8)
I (D:\cangming\ARM\ARMCLANG\include\stdint.h)(0x6035A4A8)
I (..\Middlewares\Third_Party\FreeRTOS\Source\include\FreeRTOS.h)(0x68AD8208)
I (..\Core\Inc\FreeRTOSConfig.h)(0x68F0EA65)
I (..\Core\Inc\FreeRTOSConfig.h)(0x68F4A8EC)
I (..\Middlewares\Third_Party\FreeRTOS\Source\include\projdefs.h)(0x68AD8208)
I (..\Middlewares\Third_Party\FreeRTOS\Source\include\portable.h)(0x68AD8208)
I (..\Middlewares\Third_Party\FreeRTOS\Source\include\deprecated_definitions.h)(0x68AD8208)
@ -1435,7 +1435,7 @@ I (..\User\bsp\bsp.h)(0x68F0EAFF)
I (..\Middlewares\Third_Party\FreeRTOS\Source\CMSIS_RTOS_V2\cmsis_os2.h)(0x68AD8208)
I (D:\cangming\ARM\ARMCLANG\include\stddef.h)(0x6035A4A8)
I (..\Middlewares\Third_Party\FreeRTOS\Source\include\FreeRTOS.h)(0x68AD8208)
I (..\Core\Inc\FreeRTOSConfig.h)(0x68F0EA65)
I (..\Core\Inc\FreeRTOSConfig.h)(0x68F4A8EC)
I (..\Middlewares\Third_Party\FreeRTOS\Source\include\projdefs.h)(0x68AD8208)
I (..\Middlewares\Third_Party\FreeRTOS\Source\include\portable.h)(0x68AD8208)
I (..\Middlewares\Third_Party\FreeRTOS\Source\include\deprecated_definitions.h)(0x68AD8208)
@ -1858,8 +1858,8 @@ I (D:\cangming\ARM\ARMCLANG\include\stdbool.h)(0x6035A4A8)
I (D:\cangming\ARM\ARMCLANG\include\stdint.h)(0x6035A4A8)
I (D:\cangming\ARM\ARMCLANG\include\stddef.h)(0x6035A4A8)
F (..\User\component\filter.h)(0x68F0EAFF)()
F (..\User\component\pid.c)(0x68F0EAFF)(-xc -std=c99 --target=arm-arm-none-eabi -mcpu=cortex-m4 -mfpu=fpv4-sp-d16 -mfloat-abi=hard -c -fno-rtti -funsigned-char -fshort-enums -fshort-wchar -gdwarf-3 -O1 -ffunction-sections -Wno-packed -Wno-missing-variable-declarations -Wno-missing-prototypes -Wno-missing-noreturn -Wno-sign-conversion -Wno-nonportable-include-path -Wno-reserved-id-macro -Wno-unused-macros -Wno-documentation-unknown-command -Wno-documentation -Wno-license-management -Wno-parentheses-equality -I ../Core/Inc -I ../Drivers/STM32F4xx_HAL_Driver/Inc -I ../Drivers/STM32F4xx_HAL_Driver/Inc/Legacy -I ../Middlewares/Third_Party/FreeRTOS/Source/include -I ../Middlewares/Third_Party/FreeRTOS/Source/CMSIS_RTOS_V2 -I ../Middlewares/Third_Party/FreeRTOS/Source/portable/RVDS/ARM_CM4F -I ../Drivers/CMSIS/Device/ST/STM32F4xx/Include -I ../Drivers/CMSIS/Include -I ../User -I./RTE/_DveC -ID:/cangming/ARM/CMSIS/5.7.0/CMSIS/Core/Include -ID:/cangming/keil/STM32F4xx_DFP/2.15.0/Drivers/CMSIS/Device/ST/STM32F4xx/Include -D__UVISION_VERSION="534" -D_RTE_ -DSTM32F407xx -D_RTE_ -DUSE_HAL_DRIVER -DSTM32F407xx -o dvec/pid.o -MD)
I (..\User\component\pid.h)(0x68F0EAFF)
F (..\User\component\pid.c)(0x690048B0)(-xc -std=c99 --target=arm-arm-none-eabi -mcpu=cortex-m4 -mfpu=fpv4-sp-d16 -mfloat-abi=hard -c -fno-rtti -funsigned-char -fshort-enums -fshort-wchar -gdwarf-3 -O1 -ffunction-sections -Wno-packed -Wno-missing-variable-declarations -Wno-missing-prototypes -Wno-missing-noreturn -Wno-sign-conversion -Wno-nonportable-include-path -Wno-reserved-id-macro -Wno-unused-macros -Wno-documentation-unknown-command -Wno-documentation -Wno-license-management -Wno-parentheses-equality -I ../Core/Inc -I ../Drivers/STM32F4xx_HAL_Driver/Inc -I ../Drivers/STM32F4xx_HAL_Driver/Inc/Legacy -I ../Middlewares/Third_Party/FreeRTOS/Source/include -I ../Middlewares/Third_Party/FreeRTOS/Source/CMSIS_RTOS_V2 -I ../Middlewares/Third_Party/FreeRTOS/Source/portable/RVDS/ARM_CM4F -I ../Drivers/CMSIS/Device/ST/STM32F4xx/Include -I ../Drivers/CMSIS/Include -I ../User -I./RTE/_DveC -ID:/cangming/ARM/CMSIS/5.7.0/CMSIS/Core/Include -ID:/cangming/keil/STM32F4xx_DFP/2.15.0/Drivers/CMSIS/Device/ST/STM32F4xx/Include -D__UVISION_VERSION="534" -D_RTE_ -DSTM32F407xx -D_RTE_ -DUSE_HAL_DRIVER -DSTM32F407xx -o dvec/pid.o -MD)
I (..\User\component\pid.h)(0x69004B0F)
I (D:\cangming\ARM\ARMCLANG\include\stdint.h)(0x6035A4A8)
I (..\User\component\filter.h)(0x68F0EAFF)
I (..\User\component\user_math.h)(0x68F0EAFF)
@ -1867,7 +1867,7 @@ I (D:\cangming\ARM\ARMCLANG\include\float.h)(0x6035A4A0)
I (D:\cangming\ARM\ARMCLANG\include\math.h)(0x6035A4A8)
I (D:\cangming\ARM\ARMCLANG\include\stdbool.h)(0x6035A4A8)
I (D:\cangming\ARM\ARMCLANG\include\stddef.h)(0x6035A4A8)
F (..\User\component\pid.h)(0x68F0EAFF)()
F (..\User\component\pid.h)(0x69004B0F)()
F (..\User\component\user_math.c)(0x68F0EAFF)(-xc -std=c99 --target=arm-arm-none-eabi -mcpu=cortex-m4 -mfpu=fpv4-sp-d16 -mfloat-abi=hard -c -fno-rtti -funsigned-char -fshort-enums -fshort-wchar -gdwarf-3 -O1 -ffunction-sections -Wno-packed -Wno-missing-variable-declarations -Wno-missing-prototypes -Wno-missing-noreturn -Wno-sign-conversion -Wno-nonportable-include-path -Wno-reserved-id-macro -Wno-unused-macros -Wno-documentation-unknown-command -Wno-documentation -Wno-license-management -Wno-parentheses-equality -I ../Core/Inc -I ../Drivers/STM32F4xx_HAL_Driver/Inc -I ../Drivers/STM32F4xx_HAL_Driver/Inc/Legacy -I ../Middlewares/Third_Party/FreeRTOS/Source/include -I ../Middlewares/Third_Party/FreeRTOS/Source/CMSIS_RTOS_V2 -I ../Middlewares/Third_Party/FreeRTOS/Source/portable/RVDS/ARM_CM4F -I ../Drivers/CMSIS/Device/ST/STM32F4xx/Include -I ../Drivers/CMSIS/Include -I ../User -I./RTE/_DveC -ID:/cangming/ARM/CMSIS/5.7.0/CMSIS/Core/Include -ID:/cangming/keil/STM32F4xx_DFP/2.15.0/Drivers/CMSIS/Device/ST/STM32F4xx/Include -D__UVISION_VERSION="534" -D_RTE_ -DSTM32F407xx -D_RTE_ -DUSE_HAL_DRIVER -DSTM32F407xx -o dvec/user_math.o -MD)
I (..\User\component\user_math.h)(0x68F0EAFF)
I (D:\cangming\ARM\ARMCLANG\include\float.h)(0x6035A4A0)
@ -1889,10 +1889,10 @@ I (D:\cangming\ARM\ARMCLANG\include\math.h)(0x6035A4A8)
I (D:\cangming\ARM\ARMCLANG\include\stddef.h)(0x6035A4A8)
I (..\User\device\device.h)(0x68F0FFC5)
F (..\User\component\AltitudeKalman.h)(0x68F1E74C)()
F (..\User\module\config.c)(0x68F49186)(-xc -std=c99 --target=arm-arm-none-eabi -mcpu=cortex-m4 -mfpu=fpv4-sp-d16 -mfloat-abi=hard -c -fno-rtti -funsigned-char -fshort-enums -fshort-wchar -gdwarf-3 -O1 -ffunction-sections -Wno-packed -Wno-missing-variable-declarations -Wno-missing-prototypes -Wno-missing-noreturn -Wno-sign-conversion -Wno-nonportable-include-path -Wno-reserved-id-macro -Wno-unused-macros -Wno-documentation-unknown-command -Wno-documentation -Wno-license-management -Wno-parentheses-equality -I ../Core/Inc -I ../Drivers/STM32F4xx_HAL_Driver/Inc -I ../Drivers/STM32F4xx_HAL_Driver/Inc/Legacy -I ../Middlewares/Third_Party/FreeRTOS/Source/include -I ../Middlewares/Third_Party/FreeRTOS/Source/CMSIS_RTOS_V2 -I ../Middlewares/Third_Party/FreeRTOS/Source/portable/RVDS/ARM_CM4F -I ../Drivers/CMSIS/Device/ST/STM32F4xx/Include -I ../Drivers/CMSIS/Include -I ../User -I./RTE/_DveC -ID:/cangming/ARM/CMSIS/5.7.0/CMSIS/Core/Include -ID:/cangming/keil/STM32F4xx_DFP/2.15.0/Drivers/CMSIS/Device/ST/STM32F4xx/Include -D__UVISION_VERSION="534" -D_RTE_ -DSTM32F407xx -D_RTE_ -DUSE_HAL_DRIVER -DSTM32F407xx -o dvec/config.o -MD)
F (..\User\module\config.c)(0x6900AF76)(-xc -std=c99 --target=arm-arm-none-eabi -mcpu=cortex-m4 -mfpu=fpv4-sp-d16 -mfloat-abi=hard -c -fno-rtti -funsigned-char -fshort-enums -fshort-wchar -gdwarf-3 -O1 -ffunction-sections -Wno-packed -Wno-missing-variable-declarations -Wno-missing-prototypes -Wno-missing-noreturn -Wno-sign-conversion -Wno-nonportable-include-path -Wno-reserved-id-macro -Wno-unused-macros -Wno-documentation-unknown-command -Wno-documentation -Wno-license-management -Wno-parentheses-equality -I ../Core/Inc -I ../Drivers/STM32F4xx_HAL_Driver/Inc -I ../Drivers/STM32F4xx_HAL_Driver/Inc/Legacy -I ../Middlewares/Third_Party/FreeRTOS/Source/include -I ../Middlewares/Third_Party/FreeRTOS/Source/CMSIS_RTOS_V2 -I ../Middlewares/Third_Party/FreeRTOS/Source/portable/RVDS/ARM_CM4F -I ../Drivers/CMSIS/Device/ST/STM32F4xx/Include -I ../Drivers/CMSIS/Include -I ../User -I./RTE/_DveC -ID:/cangming/ARM/CMSIS/5.7.0/CMSIS/Core/Include -ID:/cangming/keil/STM32F4xx_DFP/2.15.0/Drivers/CMSIS/Device/ST/STM32F4xx/Include -D__UVISION_VERSION="534" -D_RTE_ -DSTM32F407xx -D_RTE_ -DUSE_HAL_DRIVER -DSTM32F407xx -o dvec/config.o -MD)
I (..\User\module\config.h)(0x68F49094)
I (D:\cangming\ARM\ARMCLANG\include\stdint.h)(0x6035A4A8)
I (..\User\module\xm_quadctrl.h)(0x68F49821)
I (..\User\module\xm_quadctrl.h)(0x68FA3500)
I (..\User\device\at9s_pro.h)(0x68F1001A)
I (..\Middlewares\Third_Party\FreeRTOS\Source\CMSIS_RTOS_V2\cmsis_os2.h)(0x68AD8208)
I (D:\cangming\ARM\ARMCLANG\include\stddef.h)(0x6035A4A8)
@ -1901,11 +1901,12 @@ I (D:\cangming\ARM\ARMCLANG\include\float.h)(0x6035A4A0)
I (D:\cangming\ARM\ARMCLANG\include\math.h)(0x6035A4A8)
I (D:\cangming\ARM\ARMCLANG\include\stdbool.h)(0x6035A4A8)
I (..\User\device\device.h)(0x68F0FFC5)
I (..\User\component\pid.h)(0x68F0EAFF)
I (..\User\component\pid.h)(0x69004B0F)
I (..\User\component\filter.h)(0x68F0EAFF)
I (..\User\component\ahrs.h)(0x68F0EAFF)
F (..\User\module\config.h)(0x68F49094)()
F (..\User\module\at9s_pro_cmd.c)(0x68F49821)(-xc -std=c99 --target=arm-arm-none-eabi -mcpu=cortex-m4 -mfpu=fpv4-sp-d16 -mfloat-abi=hard -c -fno-rtti -funsigned-char -fshort-enums -fshort-wchar -gdwarf-3 -O1 -ffunction-sections -Wno-packed -Wno-missing-variable-declarations -Wno-missing-prototypes -Wno-missing-noreturn -Wno-sign-conversion -Wno-nonportable-include-path -Wno-reserved-id-macro -Wno-unused-macros -Wno-documentation-unknown-command -Wno-documentation -Wno-license-management -Wno-parentheses-equality -I ../Core/Inc -I ../Drivers/STM32F4xx_HAL_Driver/Inc -I ../Drivers/STM32F4xx_HAL_Driver/Inc/Legacy -I ../Middlewares/Third_Party/FreeRTOS/Source/include -I ../Middlewares/Third_Party/FreeRTOS/Source/CMSIS_RTOS_V2 -I ../Middlewares/Third_Party/FreeRTOS/Source/portable/RVDS/ARM_CM4F -I ../Drivers/CMSIS/Device/ST/STM32F4xx/Include -I ../Drivers/CMSIS/Include -I ../User -I./RTE/_DveC -ID:/cangming/ARM/CMSIS/5.7.0/CMSIS/Core/Include -ID:/cangming/keil/STM32F4xx_DFP/2.15.0/Drivers/CMSIS/Device/ST/STM32F4xx/Include -D__UVISION_VERSION="534" -D_RTE_ -DSTM32F407xx -D_RTE_ -DUSE_HAL_DRIVER -DSTM32F407xx -o dvec/at9s_pro_cmd.o -MD)
I (..\User\module\at9s_pro_cmd.h)(0x68F49822)
F (..\User\module\at9s_pro_cmd.c)(0x68F75A33)(-xc -std=c99 --target=arm-arm-none-eabi -mcpu=cortex-m4 -mfpu=fpv4-sp-d16 -mfloat-abi=hard -c -fno-rtti -funsigned-char -fshort-enums -fshort-wchar -gdwarf-3 -O1 -ffunction-sections -Wno-packed -Wno-missing-variable-declarations -Wno-missing-prototypes -Wno-missing-noreturn -Wno-sign-conversion -Wno-nonportable-include-path -Wno-reserved-id-macro -Wno-unused-macros -Wno-documentation-unknown-command -Wno-documentation -Wno-license-management -Wno-parentheses-equality -I ../Core/Inc -I ../Drivers/STM32F4xx_HAL_Driver/Inc -I ../Drivers/STM32F4xx_HAL_Driver/Inc/Legacy -I ../Middlewares/Third_Party/FreeRTOS/Source/include -I ../Middlewares/Third_Party/FreeRTOS/Source/CMSIS_RTOS_V2 -I ../Middlewares/Third_Party/FreeRTOS/Source/portable/RVDS/ARM_CM4F -I ../Drivers/CMSIS/Device/ST/STM32F4xx/Include -I ../Drivers/CMSIS/Include -I ../User -I./RTE/_DveC -ID:/cangming/ARM/CMSIS/5.7.0/CMSIS/Core/Include -ID:/cangming/keil/STM32F4xx_DFP/2.15.0/Drivers/CMSIS/Device/ST/STM32F4xx/Include -D__UVISION_VERSION="534" -D_RTE_ -DSTM32F407xx -D_RTE_ -DUSE_HAL_DRIVER -DSTM32F407xx -o dvec/at9s_pro_cmd.o -MD)
I (..\User\module\at9s_pro_cmd.h)(0x68F7581C)
I (D:\cangming\ARM\ARMCLANG\include\stdbool.h)(0x6035A4A8)
I (D:\cangming\ARM\ARMCLANG\include\stdint.h)(0x6035A4A8)
I (..\User\device\at9s_pro.h)(0x68F1001A)
@ -1916,9 +1917,9 @@ I (D:\cangming\ARM\ARMCLANG\include\float.h)(0x6035A4A0)
I (D:\cangming\ARM\ARMCLANG\include\math.h)(0x6035A4A8)
I (..\User\device\device.h)(0x68F0FFC5)
I (D:\cangming\ARM\ARMCLANG\include\string.h)(0x6035A4A8)
F (..\User\module\at9s_pro_cmd.h)(0x68F49822)()
F (..\User\module\xm_quadctrl.c)(0x68F490BD)(-xc -std=c99 --target=arm-arm-none-eabi -mcpu=cortex-m4 -mfpu=fpv4-sp-d16 -mfloat-abi=hard -c -fno-rtti -funsigned-char -fshort-enums -fshort-wchar -gdwarf-3 -O1 -ffunction-sections -Wno-packed -Wno-missing-variable-declarations -Wno-missing-prototypes -Wno-missing-noreturn -Wno-sign-conversion -Wno-nonportable-include-path -Wno-reserved-id-macro -Wno-unused-macros -Wno-documentation-unknown-command -Wno-documentation -Wno-license-management -Wno-parentheses-equality -I ../Core/Inc -I ../Drivers/STM32F4xx_HAL_Driver/Inc -I ../Drivers/STM32F4xx_HAL_Driver/Inc/Legacy -I ../Middlewares/Third_Party/FreeRTOS/Source/include -I ../Middlewares/Third_Party/FreeRTOS/Source/CMSIS_RTOS_V2 -I ../Middlewares/Third_Party/FreeRTOS/Source/portable/RVDS/ARM_CM4F -I ../Drivers/CMSIS/Device/ST/STM32F4xx/Include -I ../Drivers/CMSIS/Include -I ../User -I./RTE/_DveC -ID:/cangming/ARM/CMSIS/5.7.0/CMSIS/Core/Include -ID:/cangming/keil/STM32F4xx_DFP/2.15.0/Drivers/CMSIS/Device/ST/STM32F4xx/Include -D__UVISION_VERSION="534" -D_RTE_ -DSTM32F407xx -D_RTE_ -DUSE_HAL_DRIVER -DSTM32F407xx -o dvec/xm_quadctrl.o -MD)
I (..\User\module\xm_quadctrl.h)(0x68F49821)
F (..\User\module\at9s_pro_cmd.h)(0x68F7581C)()
F (..\User\module\xm_quadctrl.c)(0x6900AC42)(-xc -std=c99 --target=arm-arm-none-eabi -mcpu=cortex-m4 -mfpu=fpv4-sp-d16 -mfloat-abi=hard -c -fno-rtti -funsigned-char -fshort-enums -fshort-wchar -gdwarf-3 -O1 -ffunction-sections -Wno-packed -Wno-missing-variable-declarations -Wno-missing-prototypes -Wno-missing-noreturn -Wno-sign-conversion -Wno-nonportable-include-path -Wno-reserved-id-macro -Wno-unused-macros -Wno-documentation-unknown-command -Wno-documentation -Wno-license-management -Wno-parentheses-equality -I ../Core/Inc -I ../Drivers/STM32F4xx_HAL_Driver/Inc -I ../Drivers/STM32F4xx_HAL_Driver/Inc/Legacy -I ../Middlewares/Third_Party/FreeRTOS/Source/include -I ../Middlewares/Third_Party/FreeRTOS/Source/CMSIS_RTOS_V2 -I ../Middlewares/Third_Party/FreeRTOS/Source/portable/RVDS/ARM_CM4F -I ../Drivers/CMSIS/Device/ST/STM32F4xx/Include -I ../Drivers/CMSIS/Include -I ../User -I./RTE/_DveC -ID:/cangming/ARM/CMSIS/5.7.0/CMSIS/Core/Include -ID:/cangming/keil/STM32F4xx_DFP/2.15.0/Drivers/CMSIS/Device/ST/STM32F4xx/Include -D__UVISION_VERSION="534" -D_RTE_ -DSTM32F407xx -D_RTE_ -DUSE_HAL_DRIVER -DSTM32F407xx -o dvec/xm_quadctrl.o -MD)
I (..\User\module\xm_quadctrl.h)(0x68FA3500)
I (..\User\device\at9s_pro.h)(0x68F1001A)
I (..\Middlewares\Third_Party\FreeRTOS\Source\CMSIS_RTOS_V2\cmsis_os2.h)(0x68AD8208)
I (D:\cangming\ARM\ARMCLANG\include\stdint.h)(0x6035A4A8)
@ -1928,8 +1929,9 @@ I (D:\cangming\ARM\ARMCLANG\include\float.h)(0x6035A4A0)
I (D:\cangming\ARM\ARMCLANG\include\math.h)(0x6035A4A8)
I (D:\cangming\ARM\ARMCLANG\include\stdbool.h)(0x6035A4A8)
I (..\User\device\device.h)(0x68F0FFC5)
I (..\User\component\pid.h)(0x68F0EAFF)
I (..\User\component\pid.h)(0x69004B0F)
I (..\User\component\filter.h)(0x68F0EAFF)
I (..\User\component\ahrs.h)(0x68F0EAFF)
I (..\User\bsp\pwm.h)(0x68F0EAFF)
I (..\Core\Inc\tim.h)(0x68DF6BC0)
I (..\Core\Inc\main.h)(0x68F1B727)
@ -1966,9 +1968,9 @@ I (..\Drivers\STM32F4xx_HAL_Driver\Inc\stm32f4xx_hal_tim_ex.h)(0x68AD823F)
I (..\Drivers\STM32F4xx_HAL_Driver\Inc\stm32f4xx_hal_uart.h)(0x68AD823F)
I (..\User\bsp\bsp.h)(0x68F0EAFF)
I (..\User\bsp\time.h)(0x68F0EAFF)
I (..\User\module\HeightEstimation.h)(0x68F1FDF4)
F (..\User\module\xm_quadctrl.h)(0x68F49821)()
F (..\User\module\HeightEstimation.c)(0x68F200A2)(-xc -std=c99 --target=arm-arm-none-eabi -mcpu=cortex-m4 -mfpu=fpv4-sp-d16 -mfloat-abi=hard -c -fno-rtti -funsigned-char -fshort-enums -fshort-wchar -gdwarf-3 -O1 -ffunction-sections -Wno-packed -Wno-missing-variable-declarations -Wno-missing-prototypes -Wno-missing-noreturn -Wno-sign-conversion -Wno-nonportable-include-path -Wno-reserved-id-macro -Wno-unused-macros -Wno-documentation-unknown-command -Wno-documentation -Wno-license-management -Wno-parentheses-equality -I ../Core/Inc -I ../Drivers/STM32F4xx_HAL_Driver/Inc -I ../Drivers/STM32F4xx_HAL_Driver/Inc/Legacy -I ../Middlewares/Third_Party/FreeRTOS/Source/include -I ../Middlewares/Third_Party/FreeRTOS/Source/CMSIS_RTOS_V2 -I ../Middlewares/Third_Party/FreeRTOS/Source/portable/RVDS/ARM_CM4F -I ../Drivers/CMSIS/Device/ST/STM32F4xx/Include -I ../Drivers/CMSIS/Include -I ../User -I./RTE/_DveC -ID:/cangming/ARM/CMSIS/5.7.0/CMSIS/Core/Include -ID:/cangming/keil/STM32F4xx_DFP/2.15.0/Drivers/CMSIS/Device/ST/STM32F4xx/Include -D__UVISION_VERSION="534" -D_RTE_ -DSTM32F407xx -D_RTE_ -DUSE_HAL_DRIVER -DSTM32F407xx -o dvec/heightestimation.o -MD)
I (..\User\module\HeightEstimation.h)(0x68F8E48E)
F (..\User\module\xm_quadctrl.h)(0x68FA3500)()
F (..\User\module\HeightEstimation.c)(0x68F9A942)(-xc -std=c99 --target=arm-arm-none-eabi -mcpu=cortex-m4 -mfpu=fpv4-sp-d16 -mfloat-abi=hard -c -fno-rtti -funsigned-char -fshort-enums -fshort-wchar -gdwarf-3 -O1 -ffunction-sections -Wno-packed -Wno-missing-variable-declarations -Wno-missing-prototypes -Wno-missing-noreturn -Wno-sign-conversion -Wno-nonportable-include-path -Wno-reserved-id-macro -Wno-unused-macros -Wno-documentation-unknown-command -Wno-documentation -Wno-license-management -Wno-parentheses-equality -I ../Core/Inc -I ../Drivers/STM32F4xx_HAL_Driver/Inc -I ../Drivers/STM32F4xx_HAL_Driver/Inc/Legacy -I ../Middlewares/Third_Party/FreeRTOS/Source/include -I ../Middlewares/Third_Party/FreeRTOS/Source/CMSIS_RTOS_V2 -I ../Middlewares/Third_Party/FreeRTOS/Source/portable/RVDS/ARM_CM4F -I ../Drivers/CMSIS/Device/ST/STM32F4xx/Include -I ../Drivers/CMSIS/Include -I ../User -I./RTE/_DveC -ID:/cangming/ARM/CMSIS/5.7.0/CMSIS/Core/Include -ID:/cangming/keil/STM32F4xx_DFP/2.15.0/Drivers/CMSIS/Device/ST/STM32F4xx/Include -D__UVISION_VERSION="534" -D_RTE_ -DSTM32F407xx -D_RTE_ -DUSE_HAL_DRIVER -DSTM32F407xx -o dvec/heightestimation.o -MD)
I (..\User\bsp\time.h)(0x68F0EAFF)
I (D:\cangming\ARM\ARMCLANG\include\stdint.h)(0x6035A4A8)
I (..\User\bsp\bsp.h)(0x68F0EAFF)
@ -2016,10 +2018,10 @@ I (D:\cangming\ARM\ARMCLANG\include\float.h)(0x6035A4A0)
I (D:\cangming\ARM\ARMCLANG\include\math.h)(0x6035A4A8)
I (..\User\device\device.h)(0x68F0FFC5)
I (..\User\component\filter.h)(0x68F0EAFF)
I (..\User\task\user_task.h)(0x68F49892)
I (..\User\task\user_task.h)(0x68F98E84)
I (..\Middlewares\Third_Party\FreeRTOS\Source\CMSIS_RTOS_V2\cmsis_os2.h)(0x68AD8208)
I (..\Middlewares\Third_Party\FreeRTOS\Source\include\FreeRTOS.h)(0x68AD8208)
I (..\Core\Inc\FreeRTOSConfig.h)(0x68F0EA65)
I (..\Core\Inc\FreeRTOSConfig.h)(0x68F4A8EC)
I (..\Middlewares\Third_Party\FreeRTOS\Source\include\projdefs.h)(0x68AD8208)
I (..\Middlewares\Third_Party\FreeRTOS\Source\include\portable.h)(0x68AD8208)
I (..\Middlewares\Third_Party\FreeRTOS\Source\include\deprecated_definitions.h)(0x68AD8208)
@ -2027,14 +2029,14 @@ I (..\Middlewares\Third_Party\FreeRTOS\Source\portable\RVDS\ARM_CM4F\portmacro.h
I (..\Middlewares\Third_Party\FreeRTOS\Source\include\mpu_wrappers.h)(0x68AD8208)
I (..\Middlewares\Third_Party\FreeRTOS\Source\include\task.h)(0x68AD8208)
I (..\Middlewares\Third_Party\FreeRTOS\Source\include\list.h)(0x68AD8208)
F (..\User\module\HeightEstimation.h)(0x68F1FDF4)()
F (..\User\task\init.c)(0x68F49BE0)(-xc -std=c99 --target=arm-arm-none-eabi -mcpu=cortex-m4 -mfpu=fpv4-sp-d16 -mfloat-abi=hard -c -fno-rtti -funsigned-char -fshort-enums -fshort-wchar -gdwarf-3 -O1 -ffunction-sections -Wno-packed -Wno-missing-variable-declarations -Wno-missing-prototypes -Wno-missing-noreturn -Wno-sign-conversion -Wno-nonportable-include-path -Wno-reserved-id-macro -Wno-unused-macros -Wno-documentation-unknown-command -Wno-documentation -Wno-license-management -Wno-parentheses-equality -I ../Core/Inc -I ../Drivers/STM32F4xx_HAL_Driver/Inc -I ../Drivers/STM32F4xx_HAL_Driver/Inc/Legacy -I ../Middlewares/Third_Party/FreeRTOS/Source/include -I ../Middlewares/Third_Party/FreeRTOS/Source/CMSIS_RTOS_V2 -I ../Middlewares/Third_Party/FreeRTOS/Source/portable/RVDS/ARM_CM4F -I ../Drivers/CMSIS/Device/ST/STM32F4xx/Include -I ../Drivers/CMSIS/Include -I ../User -I./RTE/_DveC -ID:/cangming/ARM/CMSIS/5.7.0/CMSIS/Core/Include -ID:/cangming/keil/STM32F4xx_DFP/2.15.0/Drivers/CMSIS/Device/ST/STM32F4xx/Include -D__UVISION_VERSION="534" -D_RTE_ -DSTM32F407xx -D_RTE_ -DUSE_HAL_DRIVER -DSTM32F407xx -o dvec/init.o -MD)
I (..\User\task\user_task.h)(0x68F49892)
F (..\User\module\HeightEstimation.h)(0x68F8E48E)()
F (..\User\task\init.c)(0x68F99012)(-xc -std=c99 --target=arm-arm-none-eabi -mcpu=cortex-m4 -mfpu=fpv4-sp-d16 -mfloat-abi=hard -c -fno-rtti -funsigned-char -fshort-enums -fshort-wchar -gdwarf-3 -O1 -ffunction-sections -Wno-packed -Wno-missing-variable-declarations -Wno-missing-prototypes -Wno-missing-noreturn -Wno-sign-conversion -Wno-nonportable-include-path -Wno-reserved-id-macro -Wno-unused-macros -Wno-documentation-unknown-command -Wno-documentation -Wno-license-management -Wno-parentheses-equality -I ../Core/Inc -I ../Drivers/STM32F4xx_HAL_Driver/Inc -I ../Drivers/STM32F4xx_HAL_Driver/Inc/Legacy -I ../Middlewares/Third_Party/FreeRTOS/Source/include -I ../Middlewares/Third_Party/FreeRTOS/Source/CMSIS_RTOS_V2 -I ../Middlewares/Third_Party/FreeRTOS/Source/portable/RVDS/ARM_CM4F -I ../Drivers/CMSIS/Device/ST/STM32F4xx/Include -I ../Drivers/CMSIS/Include -I ../User -I./RTE/_DveC -ID:/cangming/ARM/CMSIS/5.7.0/CMSIS/Core/Include -ID:/cangming/keil/STM32F4xx_DFP/2.15.0/Drivers/CMSIS/Device/ST/STM32F4xx/Include -D__UVISION_VERSION="534" -D_RTE_ -DSTM32F407xx -D_RTE_ -DUSE_HAL_DRIVER -DSTM32F407xx -o dvec/init.o -MD)
I (..\User\task\user_task.h)(0x68F98E84)
I (..\Middlewares\Third_Party\FreeRTOS\Source\CMSIS_RTOS_V2\cmsis_os2.h)(0x68AD8208)
I (D:\cangming\ARM\ARMCLANG\include\stdint.h)(0x6035A4A8)
I (D:\cangming\ARM\ARMCLANG\include\stddef.h)(0x6035A4A8)
I (..\Middlewares\Third_Party\FreeRTOS\Source\include\FreeRTOS.h)(0x68AD8208)
I (..\Core\Inc\FreeRTOSConfig.h)(0x68F0EA65)
I (..\Core\Inc\FreeRTOSConfig.h)(0x68F4A8EC)
I (..\Middlewares\Third_Party\FreeRTOS\Source\include\projdefs.h)(0x68AD8208)
I (..\Middlewares\Third_Party\FreeRTOS\Source\include\portable.h)(0x68AD8208)
I (..\Middlewares\Third_Party\FreeRTOS\Source\include\deprecated_definitions.h)(0x68AD8208)
@ -2047,18 +2049,18 @@ I (..\User\component\user_math.h)(0x68F0EAFF)
I (D:\cangming\ARM\ARMCLANG\include\float.h)(0x6035A4A0)
I (D:\cangming\ARM\ARMCLANG\include\math.h)(0x6035A4A8)
I (D:\cangming\ARM\ARMCLANG\include\stdbool.h)(0x6035A4A8)
I (..\User\module\xm_quadctrl.h)(0x68F49821)
I (..\User\module\xm_quadctrl.h)(0x68FA3500)
I (..\User\device\at9s_pro.h)(0x68F1001A)
I (..\User\device\device.h)(0x68F0FFC5)
I (..\User\component\pid.h)(0x68F0EAFF)
I (..\User\component\pid.h)(0x69004B0F)
I (..\User\component\filter.h)(0x68F0EAFF)
F (..\User\task\user_task.c)(0x68F496CD)(-xc -std=c99 --target=arm-arm-none-eabi -mcpu=cortex-m4 -mfpu=fpv4-sp-d16 -mfloat-abi=hard -c -fno-rtti -funsigned-char -fshort-enums -fshort-wchar -gdwarf-3 -O1 -ffunction-sections -Wno-packed -Wno-missing-variable-declarations -Wno-missing-prototypes -Wno-missing-noreturn -Wno-sign-conversion -Wno-nonportable-include-path -Wno-reserved-id-macro -Wno-unused-macros -Wno-documentation-unknown-command -Wno-documentation -Wno-license-management -Wno-parentheses-equality -I ../Core/Inc -I ../Drivers/STM32F4xx_HAL_Driver/Inc -I ../Drivers/STM32F4xx_HAL_Driver/Inc/Legacy -I ../Middlewares/Third_Party/FreeRTOS/Source/include -I ../Middlewares/Third_Party/FreeRTOS/Source/CMSIS_RTOS_V2 -I ../Middlewares/Third_Party/FreeRTOS/Source/portable/RVDS/ARM_CM4F -I ../Drivers/CMSIS/Device/ST/STM32F4xx/Include -I ../Drivers/CMSIS/Include -I ../User -I./RTE/_DveC -ID:/cangming/ARM/CMSIS/5.7.0/CMSIS/Core/Include -ID:/cangming/keil/STM32F4xx_DFP/2.15.0/Drivers/CMSIS/Device/ST/STM32F4xx/Include -D__UVISION_VERSION="534" -D_RTE_ -DSTM32F407xx -D_RTE_ -DUSE_HAL_DRIVER -DSTM32F407xx -o dvec/user_task.o -MD)
I (..\User\task\user_task.h)(0x68F49892)
I (..\User\task\user_task.h)(0x68F98E84)
I (..\Middlewares\Third_Party\FreeRTOS\Source\CMSIS_RTOS_V2\cmsis_os2.h)(0x68AD8208)
I (D:\cangming\ARM\ARMCLANG\include\stdint.h)(0x6035A4A8)
I (D:\cangming\ARM\ARMCLANG\include\stddef.h)(0x6035A4A8)
I (..\Middlewares\Third_Party\FreeRTOS\Source\include\FreeRTOS.h)(0x68AD8208)
I (..\Core\Inc\FreeRTOSConfig.h)(0x68F0EA65)
I (..\Core\Inc\FreeRTOSConfig.h)(0x68F4A8EC)
I (..\Middlewares\Third_Party\FreeRTOS\Source\include\projdefs.h)(0x68AD8208)
I (..\Middlewares\Third_Party\FreeRTOS\Source\include\portable.h)(0x68AD8208)
I (..\Middlewares\Third_Party\FreeRTOS\Source\include\deprecated_definitions.h)(0x68AD8208)
@ -2066,14 +2068,14 @@ I (..\Middlewares\Third_Party\FreeRTOS\Source\portable\RVDS\ARM_CM4F\portmacro.h
I (..\Middlewares\Third_Party\FreeRTOS\Source\include\mpu_wrappers.h)(0x68AD8208)
I (..\Middlewares\Third_Party\FreeRTOS\Source\include\task.h)(0x68AD8208)
I (..\Middlewares\Third_Party\FreeRTOS\Source\include\list.h)(0x68AD8208)
F (..\User\task\user_task.h)(0x68F49892)()
F (..\User\task\user_task.h)(0x68F98E84)()
F (..\User\task\blink.c)(0x68F496CD)(-xc -std=c99 --target=arm-arm-none-eabi -mcpu=cortex-m4 -mfpu=fpv4-sp-d16 -mfloat-abi=hard -c -fno-rtti -funsigned-char -fshort-enums -fshort-wchar -gdwarf-3 -O1 -ffunction-sections -Wno-packed -Wno-missing-variable-declarations -Wno-missing-prototypes -Wno-missing-noreturn -Wno-sign-conversion -Wno-nonportable-include-path -Wno-reserved-id-macro -Wno-unused-macros -Wno-documentation-unknown-command -Wno-documentation -Wno-license-management -Wno-parentheses-equality -I ../Core/Inc -I ../Drivers/STM32F4xx_HAL_Driver/Inc -I ../Drivers/STM32F4xx_HAL_Driver/Inc/Legacy -I ../Middlewares/Third_Party/FreeRTOS/Source/include -I ../Middlewares/Third_Party/FreeRTOS/Source/CMSIS_RTOS_V2 -I ../Middlewares/Third_Party/FreeRTOS/Source/portable/RVDS/ARM_CM4F -I ../Drivers/CMSIS/Device/ST/STM32F4xx/Include -I ../Drivers/CMSIS/Include -I ../User -I./RTE/_DveC -ID:/cangming/ARM/CMSIS/5.7.0/CMSIS/Core/Include -ID:/cangming/keil/STM32F4xx_DFP/2.15.0/Drivers/CMSIS/Device/ST/STM32F4xx/Include -D__UVISION_VERSION="534" -D_RTE_ -DSTM32F407xx -D_RTE_ -DUSE_HAL_DRIVER -DSTM32F407xx -o dvec/blink.o -MD)
I (..\User\task\user_task.h)(0x68F49892)
I (..\User\task\user_task.h)(0x68F98E84)
I (..\Middlewares\Third_Party\FreeRTOS\Source\CMSIS_RTOS_V2\cmsis_os2.h)(0x68AD8208)
I (D:\cangming\ARM\ARMCLANG\include\stdint.h)(0x6035A4A8)
I (D:\cangming\ARM\ARMCLANG\include\stddef.h)(0x6035A4A8)
I (..\Middlewares\Third_Party\FreeRTOS\Source\include\FreeRTOS.h)(0x68AD8208)
I (..\Core\Inc\FreeRTOSConfig.h)(0x68F0EA65)
I (..\Core\Inc\FreeRTOSConfig.h)(0x68F4A8EC)
I (..\Middlewares\Third_Party\FreeRTOS\Source\include\projdefs.h)(0x68AD8208)
I (..\Middlewares\Third_Party\FreeRTOS\Source\include\portable.h)(0x68AD8208)
I (..\Middlewares\Third_Party\FreeRTOS\Source\include\deprecated_definitions.h)(0x68AD8208)
@ -2117,13 +2119,13 @@ I (..\Drivers\STM32F4xx_HAL_Driver\Inc\stm32f4xx_hal_tim_ex.h)(0x68AD823F)
I (..\Drivers\STM32F4xx_HAL_Driver\Inc\stm32f4xx_hal_uart.h)(0x68AD823F)
I (..\User\bsp\bsp.h)(0x68F0EAFF)
I (D:\cangming\ARM\ARMCLANG\include\math.h)(0x6035A4A8)
F (..\User\task\cmd.c)(0x68F49980)(-xc -std=c99 --target=arm-arm-none-eabi -mcpu=cortex-m4 -mfpu=fpv4-sp-d16 -mfloat-abi=hard -c -fno-rtti -funsigned-char -fshort-enums -fshort-wchar -gdwarf-3 -O1 -ffunction-sections -Wno-packed -Wno-missing-variable-declarations -Wno-missing-prototypes -Wno-missing-noreturn -Wno-sign-conversion -Wno-nonportable-include-path -Wno-reserved-id-macro -Wno-unused-macros -Wno-documentation-unknown-command -Wno-documentation -Wno-license-management -Wno-parentheses-equality -I ../Core/Inc -I ../Drivers/STM32F4xx_HAL_Driver/Inc -I ../Drivers/STM32F4xx_HAL_Driver/Inc/Legacy -I ../Middlewares/Third_Party/FreeRTOS/Source/include -I ../Middlewares/Third_Party/FreeRTOS/Source/CMSIS_RTOS_V2 -I ../Middlewares/Third_Party/FreeRTOS/Source/portable/RVDS/ARM_CM4F -I ../Drivers/CMSIS/Device/ST/STM32F4xx/Include -I ../Drivers/CMSIS/Include -I ../User -I./RTE/_DveC -ID:/cangming/ARM/CMSIS/5.7.0/CMSIS/Core/Include -ID:/cangming/keil/STM32F4xx_DFP/2.15.0/Drivers/CMSIS/Device/ST/STM32F4xx/Include -D__UVISION_VERSION="534" -D_RTE_ -DSTM32F407xx -D_RTE_ -DUSE_HAL_DRIVER -DSTM32F407xx -o dvec/cmd_1.o -MD)
I (..\User\task\user_task.h)(0x68F49892)
F (..\User\task\cmd.c)(0x68F7581C)(-xc -std=c99 --target=arm-arm-none-eabi -mcpu=cortex-m4 -mfpu=fpv4-sp-d16 -mfloat-abi=hard -c -fno-rtti -funsigned-char -fshort-enums -fshort-wchar -gdwarf-3 -O1 -ffunction-sections -Wno-packed -Wno-missing-variable-declarations -Wno-missing-prototypes -Wno-missing-noreturn -Wno-sign-conversion -Wno-nonportable-include-path -Wno-reserved-id-macro -Wno-unused-macros -Wno-documentation-unknown-command -Wno-documentation -Wno-license-management -Wno-parentheses-equality -I ../Core/Inc -I ../Drivers/STM32F4xx_HAL_Driver/Inc -I ../Drivers/STM32F4xx_HAL_Driver/Inc/Legacy -I ../Middlewares/Third_Party/FreeRTOS/Source/include -I ../Middlewares/Third_Party/FreeRTOS/Source/CMSIS_RTOS_V2 -I ../Middlewares/Third_Party/FreeRTOS/Source/portable/RVDS/ARM_CM4F -I ../Drivers/CMSIS/Device/ST/STM32F4xx/Include -I ../Drivers/CMSIS/Include -I ../User -I./RTE/_DveC -ID:/cangming/ARM/CMSIS/5.7.0/CMSIS/Core/Include -ID:/cangming/keil/STM32F4xx_DFP/2.15.0/Drivers/CMSIS/Device/ST/STM32F4xx/Include -D__UVISION_VERSION="534" -D_RTE_ -DSTM32F407xx -D_RTE_ -DUSE_HAL_DRIVER -DSTM32F407xx -o dvec/cmd_1.o -MD)
I (..\User\task\user_task.h)(0x68F98E84)
I (..\Middlewares\Third_Party\FreeRTOS\Source\CMSIS_RTOS_V2\cmsis_os2.h)(0x68AD8208)
I (D:\cangming\ARM\ARMCLANG\include\stdint.h)(0x6035A4A8)
I (D:\cangming\ARM\ARMCLANG\include\stddef.h)(0x6035A4A8)
I (..\Middlewares\Third_Party\FreeRTOS\Source\include\FreeRTOS.h)(0x68AD8208)
I (..\Core\Inc\FreeRTOSConfig.h)(0x68F0EA65)
I (..\Core\Inc\FreeRTOSConfig.h)(0x68F4A8EC)
I (..\Middlewares\Third_Party\FreeRTOS\Source\include\projdefs.h)(0x68AD8208)
I (..\Middlewares\Third_Party\FreeRTOS\Source\include\portable.h)(0x68AD8208)
I (..\Middlewares\Third_Party\FreeRTOS\Source\include\deprecated_definitions.h)(0x68AD8208)
@ -2137,17 +2139,18 @@ I (D:\cangming\ARM\ARMCLANG\include\float.h)(0x6035A4A0)
I (D:\cangming\ARM\ARMCLANG\include\math.h)(0x6035A4A8)
I (D:\cangming\ARM\ARMCLANG\include\stdbool.h)(0x6035A4A8)
I (..\User\device\device.h)(0x68F0FFC5)
I (..\User\module\at9s_pro_cmd.h)(0x68F49822)
I (..\User\module\xm_quadctrl.h)(0x68F49821)
I (..\User\component\pid.h)(0x68F0EAFF)
I (..\User\module\at9s_pro_cmd.h)(0x68F7581C)
I (..\User\module\xm_quadctrl.h)(0x68FA3500)
I (..\User\component\pid.h)(0x69004B0F)
I (..\User\component\filter.h)(0x68F0EAFF)
F (..\User\task\atti_esti.c)(0x68F496CD)(-xc -std=c99 --target=arm-arm-none-eabi -mcpu=cortex-m4 -mfpu=fpv4-sp-d16 -mfloat-abi=hard -c -fno-rtti -funsigned-char -fshort-enums -fshort-wchar -gdwarf-3 -O1 -ffunction-sections -Wno-packed -Wno-missing-variable-declarations -Wno-missing-prototypes -Wno-missing-noreturn -Wno-sign-conversion -Wno-nonportable-include-path -Wno-reserved-id-macro -Wno-unused-macros -Wno-documentation-unknown-command -Wno-documentation -Wno-license-management -Wno-parentheses-equality -I ../Core/Inc -I ../Drivers/STM32F4xx_HAL_Driver/Inc -I ../Drivers/STM32F4xx_HAL_Driver/Inc/Legacy -I ../Middlewares/Third_Party/FreeRTOS/Source/include -I ../Middlewares/Third_Party/FreeRTOS/Source/CMSIS_RTOS_V2 -I ../Middlewares/Third_Party/FreeRTOS/Source/portable/RVDS/ARM_CM4F -I ../Drivers/CMSIS/Device/ST/STM32F4xx/Include -I ../Drivers/CMSIS/Include -I ../User -I./RTE/_DveC -ID:/cangming/ARM/CMSIS/5.7.0/CMSIS/Core/Include -ID:/cangming/keil/STM32F4xx_DFP/2.15.0/Drivers/CMSIS/Device/ST/STM32F4xx/Include -D__UVISION_VERSION="534" -D_RTE_ -DSTM32F407xx -D_RTE_ -DUSE_HAL_DRIVER -DSTM32F407xx -o dvec/atti_esti.o -MD)
I (..\User\task\user_task.h)(0x68F49892)
I (..\User\component\ahrs.h)(0x68F0EAFF)
F (..\User\task\atti_esti.c)(0x68F98E84)(-xc -std=c99 --target=arm-arm-none-eabi -mcpu=cortex-m4 -mfpu=fpv4-sp-d16 -mfloat-abi=hard -c -fno-rtti -funsigned-char -fshort-enums -fshort-wchar -gdwarf-3 -O1 -ffunction-sections -Wno-packed -Wno-missing-variable-declarations -Wno-missing-prototypes -Wno-missing-noreturn -Wno-sign-conversion -Wno-nonportable-include-path -Wno-reserved-id-macro -Wno-unused-macros -Wno-documentation-unknown-command -Wno-documentation -Wno-license-management -Wno-parentheses-equality -I ../Core/Inc -I ../Drivers/STM32F4xx_HAL_Driver/Inc -I ../Drivers/STM32F4xx_HAL_Driver/Inc/Legacy -I ../Middlewares/Third_Party/FreeRTOS/Source/include -I ../Middlewares/Third_Party/FreeRTOS/Source/CMSIS_RTOS_V2 -I ../Middlewares/Third_Party/FreeRTOS/Source/portable/RVDS/ARM_CM4F -I ../Drivers/CMSIS/Device/ST/STM32F4xx/Include -I ../Drivers/CMSIS/Include -I ../User -I./RTE/_DveC -ID:/cangming/ARM/CMSIS/5.7.0/CMSIS/Core/Include -ID:/cangming/keil/STM32F4xx_DFP/2.15.0/Drivers/CMSIS/Device/ST/STM32F4xx/Include -D__UVISION_VERSION="534" -D_RTE_ -DSTM32F407xx -D_RTE_ -DUSE_HAL_DRIVER -DSTM32F407xx -o dvec/atti_esti.o -MD)
I (..\User\task\user_task.h)(0x68F98E84)
I (..\Middlewares\Third_Party\FreeRTOS\Source\CMSIS_RTOS_V2\cmsis_os2.h)(0x68AD8208)
I (D:\cangming\ARM\ARMCLANG\include\stdint.h)(0x6035A4A8)
I (D:\cangming\ARM\ARMCLANG\include\stddef.h)(0x6035A4A8)
I (..\Middlewares\Third_Party\FreeRTOS\Source\include\FreeRTOS.h)(0x68AD8208)
I (..\Core\Inc\FreeRTOSConfig.h)(0x68F0EA65)
I (..\Core\Inc\FreeRTOSConfig.h)(0x68F4A8EC)
I (..\Middlewares\Third_Party\FreeRTOS\Source\include\projdefs.h)(0x68AD8208)
I (..\Middlewares\Third_Party\FreeRTOS\Source\include\portable.h)(0x68AD8208)
I (..\Middlewares\Third_Party\FreeRTOS\Source\include\deprecated_definitions.h)(0x68AD8208)
@ -2197,17 +2200,17 @@ I (..\User\component\ahrs.h)(0x68F0EAFF)
I (..\User\component\user_math.h)(0x68F0EAFF)
I (D:\cangming\ARM\ARMCLANG\include\float.h)(0x6035A4A0)
I (D:\cangming\ARM\ARMCLANG\include\math.h)(0x6035A4A8)
I (..\User\component\pid.h)(0x68F0EAFF)
I (..\User\component\pid.h)(0x69004B0F)
I (..\User\component\filter.h)(0x68F0EAFF)
I (..\User\device\bmi088.h)(0x68F0E47F)
I (..\User\device\device.h)(0x68F0FFC5)
F (..\User\task\height_cal.c)(0x68F496CD)(-xc -std=c99 --target=arm-arm-none-eabi -mcpu=cortex-m4 -mfpu=fpv4-sp-d16 -mfloat-abi=hard -c -fno-rtti -funsigned-char -fshort-enums -fshort-wchar -gdwarf-3 -O1 -ffunction-sections -Wno-packed -Wno-missing-variable-declarations -Wno-missing-prototypes -Wno-missing-noreturn -Wno-sign-conversion -Wno-nonportable-include-path -Wno-reserved-id-macro -Wno-unused-macros -Wno-documentation-unknown-command -Wno-documentation -Wno-license-management -Wno-parentheses-equality -I ../Core/Inc -I ../Drivers/STM32F4xx_HAL_Driver/Inc -I ../Drivers/STM32F4xx_HAL_Driver/Inc/Legacy -I ../Middlewares/Third_Party/FreeRTOS/Source/include -I ../Middlewares/Third_Party/FreeRTOS/Source/CMSIS_RTOS_V2 -I ../Middlewares/Third_Party/FreeRTOS/Source/portable/RVDS/ARM_CM4F -I ../Drivers/CMSIS/Device/ST/STM32F4xx/Include -I ../Drivers/CMSIS/Include -I ../User -I./RTE/_DveC -ID:/cangming/ARM/CMSIS/5.7.0/CMSIS/Core/Include -ID:/cangming/keil/STM32F4xx_DFP/2.15.0/Drivers/CMSIS/Device/ST/STM32F4xx/Include -D__UVISION_VERSION="534" -D_RTE_ -DSTM32F407xx -D_RTE_ -DUSE_HAL_DRIVER -DSTM32F407xx -o dvec/height_cal.o -MD)
I (..\User\task\user_task.h)(0x68F49892)
F (..\User\task\height_cal.c)(0x68F98E9A)(-xc -std=c99 --target=arm-arm-none-eabi -mcpu=cortex-m4 -mfpu=fpv4-sp-d16 -mfloat-abi=hard -c -fno-rtti -funsigned-char -fshort-enums -fshort-wchar -gdwarf-3 -O1 -ffunction-sections -Wno-packed -Wno-missing-variable-declarations -Wno-missing-prototypes -Wno-missing-noreturn -Wno-sign-conversion -Wno-nonportable-include-path -Wno-reserved-id-macro -Wno-unused-macros -Wno-documentation-unknown-command -Wno-documentation -Wno-license-management -Wno-parentheses-equality -I ../Core/Inc -I ../Drivers/STM32F4xx_HAL_Driver/Inc -I ../Drivers/STM32F4xx_HAL_Driver/Inc/Legacy -I ../Middlewares/Third_Party/FreeRTOS/Source/include -I ../Middlewares/Third_Party/FreeRTOS/Source/CMSIS_RTOS_V2 -I ../Middlewares/Third_Party/FreeRTOS/Source/portable/RVDS/ARM_CM4F -I ../Drivers/CMSIS/Device/ST/STM32F4xx/Include -I ../Drivers/CMSIS/Include -I ../User -I./RTE/_DveC -ID:/cangming/ARM/CMSIS/5.7.0/CMSIS/Core/Include -ID:/cangming/keil/STM32F4xx_DFP/2.15.0/Drivers/CMSIS/Device/ST/STM32F4xx/Include -D__UVISION_VERSION="534" -D_RTE_ -DSTM32F407xx -D_RTE_ -DUSE_HAL_DRIVER -DSTM32F407xx -o dvec/height_cal.o -MD)
I (..\User\task\user_task.h)(0x68F98E84)
I (..\Middlewares\Third_Party\FreeRTOS\Source\CMSIS_RTOS_V2\cmsis_os2.h)(0x68AD8208)
I (D:\cangming\ARM\ARMCLANG\include\stdint.h)(0x6035A4A8)
I (D:\cangming\ARM\ARMCLANG\include\stddef.h)(0x6035A4A8)
I (..\Middlewares\Third_Party\FreeRTOS\Source\include\FreeRTOS.h)(0x68AD8208)
I (..\Core\Inc\FreeRTOSConfig.h)(0x68F0EA65)
I (..\Core\Inc\FreeRTOSConfig.h)(0x68F4A8EC)
I (..\Middlewares\Third_Party\FreeRTOS\Source\include\projdefs.h)(0x68AD8208)
I (..\Middlewares\Third_Party\FreeRTOS\Source\include\portable.h)(0x68AD8208)
I (..\Middlewares\Third_Party\FreeRTOS\Source\include\deprecated_definitions.h)(0x68AD8208)
@ -2256,15 +2259,15 @@ I (..\Drivers\STM32F4xx_HAL_Driver\Inc\stm32f4xx_hal_spi.h)(0x68AD823F)
I (..\Drivers\STM32F4xx_HAL_Driver\Inc\stm32f4xx_hal_tim.h)(0x68AD823F)
I (..\Drivers\STM32F4xx_HAL_Driver\Inc\stm32f4xx_hal_tim_ex.h)(0x68AD823F)
I (..\Drivers\STM32F4xx_HAL_Driver\Inc\stm32f4xx_hal_uart.h)(0x68AD823F)
I (..\User\module\HeightEstimation.h)(0x68F1FDF4)
I (..\User\module\HeightEstimation.h)(0x68F8E48E)
I (..\User\device\at9s_pro.h)(0x68F1001A)
F (..\User\task\quad_ctrl.c)(0x68F49980)(-xc -std=c99 --target=arm-arm-none-eabi -mcpu=cortex-m4 -mfpu=fpv4-sp-d16 -mfloat-abi=hard -c -fno-rtti -funsigned-char -fshort-enums -fshort-wchar -gdwarf-3 -O1 -ffunction-sections -Wno-packed -Wno-missing-variable-declarations -Wno-missing-prototypes -Wno-missing-noreturn -Wno-sign-conversion -Wno-nonportable-include-path -Wno-reserved-id-macro -Wno-unused-macros -Wno-documentation-unknown-command -Wno-documentation -Wno-license-management -Wno-parentheses-equality -I ../Core/Inc -I ../Drivers/STM32F4xx_HAL_Driver/Inc -I ../Drivers/STM32F4xx_HAL_Driver/Inc/Legacy -I ../Middlewares/Third_Party/FreeRTOS/Source/include -I ../Middlewares/Third_Party/FreeRTOS/Source/CMSIS_RTOS_V2 -I ../Middlewares/Third_Party/FreeRTOS/Source/portable/RVDS/ARM_CM4F -I ../Drivers/CMSIS/Device/ST/STM32F4xx/Include -I ../Drivers/CMSIS/Include -I ../User -I./RTE/_DveC -ID:/cangming/ARM/CMSIS/5.7.0/CMSIS/Core/Include -ID:/cangming/keil/STM32F4xx_DFP/2.15.0/Drivers/CMSIS/Device/ST/STM32F4xx/Include -D__UVISION_VERSION="534" -D_RTE_ -DSTM32F407xx -D_RTE_ -DUSE_HAL_DRIVER -DSTM32F407xx -o dvec/quad_ctrl.o -MD)
I (..\User\task\user_task.h)(0x68F49892)
F (..\User\task\quad_ctrl.c)(0x68F7584A)(-xc -std=c99 --target=arm-arm-none-eabi -mcpu=cortex-m4 -mfpu=fpv4-sp-d16 -mfloat-abi=hard -c -fno-rtti -funsigned-char -fshort-enums -fshort-wchar -gdwarf-3 -O1 -ffunction-sections -Wno-packed -Wno-missing-variable-declarations -Wno-missing-prototypes -Wno-missing-noreturn -Wno-sign-conversion -Wno-nonportable-include-path -Wno-reserved-id-macro -Wno-unused-macros -Wno-documentation-unknown-command -Wno-documentation -Wno-license-management -Wno-parentheses-equality -I ../Core/Inc -I ../Drivers/STM32F4xx_HAL_Driver/Inc -I ../Drivers/STM32F4xx_HAL_Driver/Inc/Legacy -I ../Middlewares/Third_Party/FreeRTOS/Source/include -I ../Middlewares/Third_Party/FreeRTOS/Source/CMSIS_RTOS_V2 -I ../Middlewares/Third_Party/FreeRTOS/Source/portable/RVDS/ARM_CM4F -I ../Drivers/CMSIS/Device/ST/STM32F4xx/Include -I ../Drivers/CMSIS/Include -I ../User -I./RTE/_DveC -ID:/cangming/ARM/CMSIS/5.7.0/CMSIS/Core/Include -ID:/cangming/keil/STM32F4xx_DFP/2.15.0/Drivers/CMSIS/Device/ST/STM32F4xx/Include -D__UVISION_VERSION="534" -D_RTE_ -DSTM32F407xx -D_RTE_ -DUSE_HAL_DRIVER -DSTM32F407xx -o dvec/quad_ctrl.o -MD)
I (..\User\task\user_task.h)(0x68F98E84)
I (..\Middlewares\Third_Party\FreeRTOS\Source\CMSIS_RTOS_V2\cmsis_os2.h)(0x68AD8208)
I (D:\cangming\ARM\ARMCLANG\include\stdint.h)(0x6035A4A8)
I (D:\cangming\ARM\ARMCLANG\include\stddef.h)(0x6035A4A8)
I (..\Middlewares\Third_Party\FreeRTOS\Source\include\FreeRTOS.h)(0x68AD8208)
I (..\Core\Inc\FreeRTOSConfig.h)(0x68F0EA65)
I (..\Core\Inc\FreeRTOSConfig.h)(0x68F4A8EC)
I (..\Middlewares\Third_Party\FreeRTOS\Source\include\projdefs.h)(0x68AD8208)
I (..\Middlewares\Third_Party\FreeRTOS\Source\include\portable.h)(0x68AD8208)
I (..\Middlewares\Third_Party\FreeRTOS\Source\include\deprecated_definitions.h)(0x68AD8208)
@ -2272,13 +2275,14 @@ I (..\Middlewares\Third_Party\FreeRTOS\Source\portable\RVDS\ARM_CM4F\portmacro.h
I (..\Middlewares\Third_Party\FreeRTOS\Source\include\mpu_wrappers.h)(0x68AD8208)
I (..\Middlewares\Third_Party\FreeRTOS\Source\include\task.h)(0x68AD8208)
I (..\Middlewares\Third_Party\FreeRTOS\Source\include\list.h)(0x68AD8208)
I (..\User\module\xm_quadctrl.h)(0x68F49821)
I (..\User\device\at9s_pro.h)(0x68F1001A)
I (..\User\component\ahrs.h)(0x68F0EAFF)
I (..\User\component\user_math.h)(0x68F0EAFF)
I (D:\cangming\ARM\ARMCLANG\include\float.h)(0x6035A4A0)
I (D:\cangming\ARM\ARMCLANG\include\math.h)(0x6035A4A8)
I (D:\cangming\ARM\ARMCLANG\include\stdbool.h)(0x6035A4A8)
I (..\User\module\xm_quadctrl.h)(0x68FA3500)
I (..\User\device\at9s_pro.h)(0x68F1001A)
I (..\User\device\device.h)(0x68F0FFC5)
I (..\User\component\pid.h)(0x68F0EAFF)
I (..\User\component\pid.h)(0x69004B0F)
I (..\User\component\filter.h)(0x68F0EAFF)
I (..\User\module\config.h)(0x68F49094)

Binary file not shown.

Binary file not shown.

View File

@ -17,4 +17,4 @@ dvec/cmd_1.o: ..\User\task\cmd.c ..\User\task\user_task.h \
D:\cangming\ARM\ARMCLANG\Bin\..\include\stdbool.h \
..\User\device\device.h ..\User\module\at9s_pro_cmd.h \
..\User\module\xm_quadctrl.h ..\User\component\pid.h \
..\User\component\filter.h
..\User\component\filter.h ..\User\component\ahrs.h

Binary file not shown.

View File

@ -8,4 +8,4 @@ dvec/config.o: ..\User\module\config.c ..\User\module\config.h \
D:\cangming\ARM\ARMCLANG\Bin\..\include\math.h \
D:\cangming\ARM\ARMCLANG\Bin\..\include\stdbool.h \
..\User\device\device.h ..\User\component\pid.h \
..\User\component\filter.h
..\User\component\filter.h ..\User\component\ahrs.h

Binary file not shown.

View File

@ -11,7 +11,6 @@ dvec/height_cal.o: ..\User\task\height_cal.c ..\User\task\user_task.h \
..\Middlewares\Third_Party\FreeRTOS\Source\include\mpu_wrappers.h \
..\Middlewares\Third_Party\FreeRTOS\Source\include\task.h \
..\Middlewares\Third_Party\FreeRTOS\Source\include\list.h \
..\User\task\user_task.h \
..\Middlewares\Third_Party\FreeRTOS\Source\include\timers.h \
..\Middlewares\Third_Party\FreeRTOS\Source\include\task.h \
..\User\device\bmi088.h \

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@ -11,10 +11,10 @@ dvec/quad_ctrl.o: ..\User\task\quad_ctrl.c ..\User\task\user_task.h \
..\Middlewares\Third_Party\FreeRTOS\Source\include\mpu_wrappers.h \
..\Middlewares\Third_Party\FreeRTOS\Source\include\task.h \
..\Middlewares\Third_Party\FreeRTOS\Source\include\list.h \
..\User\module\xm_quadctrl.h ..\User\device\at9s_pro.h \
..\User\component\user_math.h \
..\User\component\ahrs.h ..\User\component\user_math.h \
D:\cangming\ARM\ARMCLANG\Bin\..\include\float.h \
D:\cangming\ARM\ARMCLANG\Bin\..\include\math.h \
D:\cangming\ARM\ARMCLANG\Bin\..\include\stdbool.h \
..\User\module\xm_quadctrl.h ..\User\device\at9s_pro.h \
..\User\device\device.h ..\User\component\pid.h \
..\User\component\filter.h ..\User\module\config.h

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@ -8,8 +8,9 @@ dvec/xm_quadctrl.o: ..\User\module\xm_quadctrl.c \
D:\cangming\ARM\ARMCLANG\Bin\..\include\math.h \
D:\cangming\ARM\ARMCLANG\Bin\..\include\stdbool.h \
..\User\device\device.h ..\User\component\pid.h \
..\User\component\filter.h ..\User\bsp\pwm.h ..\Core\Inc\tim.h \
..\Core\Inc\main.h ..\Drivers\STM32F4xx_HAL_Driver\Inc\stm32f4xx_hal.h \
..\User\component\filter.h ..\User\component\ahrs.h ..\User\bsp\pwm.h \
..\Core\Inc\tim.h ..\Core\Inc\main.h \
..\Drivers\STM32F4xx_HAL_Driver\Inc\stm32f4xx_hal.h \
..\Core\Inc\stm32f4xx_hal_conf.h \
..\Drivers\STM32F4xx_HAL_Driver\Inc\stm32f4xx_hal_rcc.h \
..\Drivers\STM32F4xx_HAL_Driver\Inc\stm32f4xx_hal_def.h \

Binary file not shown.

File diff suppressed because it is too large Load Diff

269
STM32F407XX_FLASH.ld Normal file
View File

@ -0,0 +1,269 @@
/*
******************************************************************************
**
** File : LinkerScript.ld
**
** Author : STM32CubeMX
**
** Abstract : Linker script for STM32F407IGHx series
** 1024Kbytes FLASH and 192Kbytes RAM
**
** Set heap size, stack size and stack location according
** to application requirements.
**
** Set memory bank area and size if external memory is used.
**
** Target : STMicroelectronics STM32
**
** Distribution: The file is distributed “as is,” without any warranty
** of any kind.
**
*****************************************************************************
** @attention
**
** <h2><center>&copy; COPYRIGHT(c) 2025 STMicroelectronics</center></h2>
**
** Redistribution and use in source and binary forms, with or without modification,
** are permitted provided that the following conditions are met:
** 1. Redistributions of source code must retain the above copyright notice,
** this list of conditions and the following disclaimer.
** 2. Redistributions in binary form must reproduce the above copyright notice,
** this list of conditions and the following disclaimer in the documentation
** and/or other materials provided with the distribution.
** 3. Neither the name of STMicroelectronics nor the names of its contributors
** may be used to endorse or promote products derived from this software
** without specific prior written permission.
**
** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
** AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
** IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
** DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
** FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
** DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
** SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
** CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
** OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
**
*****************************************************************************
*/
/* Entry Point */
ENTRY(Reset_Handler)
/* Specify the memory areas */
MEMORY
{
RAM (xrw) : ORIGIN = 0x20000000, LENGTH = 128K
CCMRAM (xrw) : ORIGIN = 0x10000000, LENGTH = 64K
FLASH (rx) : ORIGIN = 0x8000000, LENGTH = 1024K
}
/* Highest address of the user mode stack */
_estack = ORIGIN(RAM) + LENGTH(RAM); /* end of RAM */
/* Generate a link error if heap and stack don't fit into RAM */
_Min_Heap_Size = 0x200; /* required amount of heap */
_Min_Stack_Size = 0x400; /* required amount of stack */
/* Define output sections */
SECTIONS
{
/* The startup code goes first into FLASH */
.isr_vector :
{
. = ALIGN(4);
KEEP(*(.isr_vector)) /* Startup code */
. = ALIGN(4);
} >FLASH
/* The program code and other data goes into FLASH */
.text :
{
. = ALIGN(4);
*(.text) /* .text sections (code) */
*(.text*) /* .text* sections (code) */
*(.glue_7) /* glue arm to thumb code */
*(.glue_7t) /* glue thumb to arm code */
*(.eh_frame)
KEEP (*(.init))
KEEP (*(.fini))
. = ALIGN(4);
_etext = .; /* define a global symbols at end of code */
} >FLASH
/* Constant data goes into FLASH */
.rodata :
{
. = ALIGN(4);
*(.rodata) /* .rodata sections (constants, strings, etc.) */
*(.rodata*) /* .rodata* sections (constants, strings, etc.) */
. = ALIGN(4);
} >FLASH
.ARM.extab (READONLY) : /* The "READONLY" keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
*(.ARM.extab* .gnu.linkonce.armextab.*)
. = ALIGN(4);
} >FLASH
.ARM (READONLY) : /* The "READONLY" keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
__exidx_start = .;
*(.ARM.exidx*)
__exidx_end = .;
. = ALIGN(4);
} >FLASH
.preinit_array (READONLY) : /* The "READONLY" keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__preinit_array_start = .);
KEEP (*(.preinit_array*))
PROVIDE_HIDDEN (__preinit_array_end = .);
. = ALIGN(4);
} >FLASH
.init_array (READONLY) : /* The "READONLY" keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__init_array_start = .);
KEEP (*(SORT(.init_array.*)))
KEEP (*(.init_array*))
PROVIDE_HIDDEN (__init_array_end = .);
. = ALIGN(4);
} >FLASH
.fini_array (READONLY) : /* The "READONLY" keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
{
. = ALIGN(4);
PROVIDE_HIDDEN (__fini_array_start = .);
KEEP (*(SORT(.fini_array.*)))
KEEP (*(.fini_array*))
PROVIDE_HIDDEN (__fini_array_end = .);
. = ALIGN(4);
} >FLASH
_siccmram = LOADADDR(.ccmram);
/* CCM-RAM section
*
* IMPORTANT NOTE!
* If initialized variables will be placed in this section,
* the startup code needs to be modified to copy the init-values.
*/
.ccmram :
{
. = ALIGN(4);
_sccmram = .; /* create a global symbol at ccmram start */
*(.ccmram)
*(.ccmram*)
. = ALIGN(4);
_eccmram = .; /* create a global symbol at ccmram end */
} >CCMRAM AT> FLASH
/* used by the startup to initialize data */
_sidata = LOADADDR(.data);
/* Initialized data sections goes into RAM, load LMA copy after code */
.data :
{
. = ALIGN(4);
_sdata = .; /* create a global symbol at data start */
*(.data) /* .data sections */
*(.data*) /* .data* sections */
*(.RamFunc) /* .RamFunc sections */
*(.RamFunc*) /* .RamFunc* sections */
. = ALIGN(4);
} >RAM AT> FLASH
/* Initialized TLS data section */
.tdata : ALIGN(4)
{
*(.tdata .tdata.* .gnu.linkonce.td.*)
. = ALIGN(4);
_edata = .; /* define a global symbol at data end */
PROVIDE(__data_end = .);
PROVIDE(__tdata_end = .);
} >RAM AT> FLASH
PROVIDE( __tdata_start = ADDR(.tdata) );
PROVIDE( __tdata_size = __tdata_end - __tdata_start );
PROVIDE( __data_start = ADDR(.data) );
PROVIDE( __data_size = __data_end - __data_start );
PROVIDE( __tdata_source = LOADADDR(.tdata) );
PROVIDE( __tdata_source_end = LOADADDR(.tdata) + SIZEOF(.tdata) );
PROVIDE( __tdata_source_size = __tdata_source_end - __tdata_source );
PROVIDE( __data_source = LOADADDR(.data) );
PROVIDE( __data_source_end = __tdata_source_end );
PROVIDE( __data_source_size = __data_source_end - __data_source );
/* Uninitialized data section */
.tbss (NOLOAD) : ALIGN(4)
{
/* This is used by the startup in order to initialize the .bss secion */
_sbss = .; /* define a global symbol at bss start */
__bss_start__ = _sbss;
*(.tbss .tbss.*)
. = ALIGN(4);
PROVIDE( __tbss_end = . );
} >RAM
PROVIDE( __tbss_start = ADDR(.tbss) );
PROVIDE( __tbss_size = __tbss_end - __tbss_start );
PROVIDE( __tbss_offset = ADDR(.tbss) - ADDR(.tdata) );
PROVIDE( __tls_base = __tdata_start );
PROVIDE( __tls_end = __tbss_end );
PROVIDE( __tls_size = __tls_end - __tls_base );
PROVIDE( __tls_align = MAX(ALIGNOF(.tdata), ALIGNOF(.tbss)) );
PROVIDE( __tls_size_align = (__tls_size + __tls_align - 1) & ~(__tls_align - 1) );
PROVIDE( __arm32_tls_tcb_offset = MAX(8, __tls_align) );
PROVIDE( __arm64_tls_tcb_offset = MAX(16, __tls_align) );
.bss (NOLOAD) : ALIGN(4)
{
*(.bss)
*(.bss*)
*(COMMON)
. = ALIGN(4);
_ebss = .; /* define a global symbol at bss end */
__bss_end__ = _ebss;
PROVIDE( __bss_end = .);
} >RAM
PROVIDE( __non_tls_bss_start = ADDR(.bss) );
PROVIDE( __bss_start = __tbss_start );
PROVIDE( __bss_size = __bss_end - __bss_start );
/* User_heap_stack section, used to check that there is enough RAM left */
._user_heap_stack (NOLOAD) :
{
. = ALIGN(8);
PROVIDE ( end = . );
PROVIDE ( _end = . );
. = . + _Min_Heap_Size;
. = . + _Min_Stack_Size;
. = ALIGN(8);
} >RAM
/* Remove information from the standard libraries */
/DISCARD/ :
{
libc.a:* ( * )
libm.a:* ( * )
libgcc.a:* ( * )
}
}

View File

@ -1,7 +1,7 @@
#include "main.h"
#include "bsp/time.h"
#include "math.h"
#include "device/SPL06.h"
#include "BarometerDriver/SPL06.h"
#include "BarometerDriver/user_iic.h"
SPL06 spl06;
SPL06_Calib_Param spl06_calib_param;

View File

@ -68,7 +68,7 @@ float PID_Calc(KPID_t *pid, float sp, float fb, float fb_dot, float dt) {
/* 计算P项 */
const float k_err = err * pid->param->k;
/* 计算D项 */
const float k_fb = pid->param->k * fb;
const float filtered_k_fb = LowPassFilter2p_Apply(&(pid->dfilter), k_fb);
@ -96,11 +96,12 @@ float PID_Calc(KPID_t *pid, float sp, float fb, float fb_dot, float dt) {
/* 计算PD输出 */
float output = (k_err * pid->param->p) - (d * pid->param->d);
/* 计算I项 */
const float i = pid->i + (k_err * dt);
const float i_out = i * pid->param->i;
if (pid->param->i > SIGMA) {
/* 检查是否饱和 */
if (isfinite(i)) {
@ -111,7 +112,10 @@ float PID_Calc(KPID_t *pid, float sp, float fb, float fb_dot, float dt) {
}
}
}
pid->out.pout=k_err * pid->param->p;//记录各项输出
pid->out.dout=d * pid->param->d;
pid->out.iout=i_out;
/* 计算PID输出 */
output += i_out;

View File

@ -35,7 +35,7 @@ typedef struct {
float p; /* 比例项增益设置为1用于标准形式 */
float i; /* 积分项增益 */
float d; /* 微分项增益 */
float i_limit; /* 积分项上限 */
float i_limit; /* 积分项上限 */
float out_limit; /* 输出绝对值限制 */
float d_cutoff_freq; /* D项低通截止频率 */
float range; /* 计算循环误差时使用大于0时启用 */
@ -49,6 +49,12 @@ typedef struct {
float dt_min; /* 最小PID_Calc调用间隔 */
float i; /* 积分 */
struct {
float pout;
float iout;
float dout;
} out;
struct {
float err; /* 上次误差 */
float k_fb; /* 上次反馈值 */

View File

@ -1,334 +0,0 @@
#include "main.h"
#include "bsp/time.h"
#include "math.h"
#include "device/SPL06.h"
#include "BarometerDriver/user_iic.h"
SPL06 spl06;
SPL06_Calib_Param spl06_calib_param;
/***************************************************************************
* : spl06_write_reg
* : IIC写
* :
* :
**************************************************************************/
uint8_t spl06_write_reg(uint8_t reg_addr,uint8_t reg_val)
{
IIC_Start();
IIC_Send_Byte((SP06_Advice_Address<<1)|0);//发送器件地址+写命令
if(IIC_Wait_Ack()) //等待应答
{
IIC_Stop();
return 1;
}
IIC_Send_Byte(reg_addr); //写寄存器地址
IIC_Wait_Ack(); //等待应答
IIC_Send_Byte(reg_val);//发送数据
if(IIC_Wait_Ack()) //等待ACK
{
IIC_Stop();
return 1;
}
IIC_Stop();
return 0;
// /*HAL库*/
// uint8_t status = 0;
//
// // 使用HAL库发送数据(器件地址+寄存器地址+数据)
// status = HAL_I2C_Mem_Write(&hi2c2,
// (SP06_Advice_Address << 1),
// reg_addr,
// I2C_MEMADD_SIZE_8BIT,
// &reg_val,
// 1,
// 100);
//
// return (status == HAL_OK) ? 0 : 1;
}
//IIC读SPL06寄存器
uint8_t spl06_read_reg(uint8_t reg_addr)
{
uint8_t res;
IIC_Start();
IIC_Send_Byte((SP06_Advice_Address<<1)|0);//发送器件地址+写命令
IIC_Wait_Ack(); //等待应答
IIC_Send_Byte(reg_addr); //写寄存器地址
IIC_Wait_Ack(); //等待应答
IIC_Start();
IIC_Send_Byte((SP06_Advice_Address<<1)|1);//发送器件地址+读命令
IIC_Wait_Ack(); //等待应答
res=IIC_Read_Byte(0);//读取数据,发送nACK
IIC_Stop(); //产生一个停止条件
return res;
// /*HAL库*/
// uint8_t reg_val = 0;
//
// HAL_I2C_Mem_Read(&hi2c2,
// (SP06_Advice_Address << 1),
// reg_addr,
// I2C_MEMADD_SIZE_8BIT,
// &reg_val,
// 1,
// 100);
//
// return reg_val;
}
//
void spl06_start(uint8_t mode)
{
spl06_write_reg(SP06_MEAS_CFG, mode);//测量模式配置
}
void spl06_config_temperature(uint8_t rate,uint8_t oversampling)
{
uint8_t data;
data = (1<<7)|rate|oversampling;
if(oversampling > TMP_PRC_8)//过采样次数大于EMPERATURE_RATE_8_TIMES应当允许数据被新的数据覆盖内部拥有气压和温度共32级的FIFO在大于8次也就是大于或等于16次过采样的时候需要被新的数据覆盖否则数据就会丢失
{
uint8_t data;
data = spl06_read_reg(SP06_CFG_REG);//读取原寄存器值
data |= SPL06_CFG_T_SHIFT;//P-SHIFT位置1
spl06_write_reg(SP06_CFG_REG, data);//重新写回寄存器
}
switch(oversampling)
{
case TMP_PRC_1:
spl06.i32kT = 524288;
break;
case TMP_PRC_2:
spl06.i32kT = 1572864;
break;
case TMP_PRC_4:
spl06.i32kT = 3670016;
break;
case TMP_PRC_8:
spl06.i32kT = 7864320;
break;
case TMP_PRC_16:
spl06.i32kT = 253952;
break;
case TMP_PRC_32:
spl06.i32kT = 516096;
break;
case TMP_PRC_64:
spl06.i32kT = 1040384;
break;
case TMP_PRC_128:
spl06.i32kT = 2088960;
break;
}
spl06_write_reg(SP06_TMP_CFG, data);//重新写回寄存器
}
void spl06_config_pressure(uint8_t rate,uint8_t oversampling)//设置补偿系数及采样速率
{
uint8_t data;
data = rate|oversampling;
if(oversampling > PM_PRC_8)//过采样次数大于EMPERATURE_RATE_8_TIMES应当允许数据被新的数据覆盖内部拥有气压和温度共32级的FIFO在大于8次也就是大于或等于16次过采样的时候需要被新的数据覆盖否则数据就会丢失
{
uint8_t data;
data = spl06_read_reg(SP06_CFG_REG);//读取原寄存器值
data |= SPL06_CFG_P_SHIFT;//P-SHIFT位置1
spl06_write_reg(SP06_CFG_REG, data);//重新写回寄存器
}
switch(oversampling)
{
case PM_PRC_1:
spl06.i32kP = 524288;
break;
case PM_PRC_2:
spl06.i32kP = 1572864;
break;
case PM_PRC_4:
spl06.i32kP = 3670016;
break;
case PM_PRC_8:
spl06.i32kP = 7864320;
break;
case PM_PRC_16:
spl06.i32kP = 253952;
break;
case PM_PRC_32:
spl06.i32kP = 516096;
break;
case PM_PRC_64:
spl06.i32kP = 1040384;
break;
case PM_PRC_128:
spl06.i32kP = 2088960;
break;
}
spl06_write_reg(SP06_PSR_CFG, data); //写入配置
}
int32_t spl06_get_pressure_adc(void)//获取压力ADC值
{
uint8_t buf[3];
int32_t adc;
buf[0] = spl06_read_reg(SP06_PSR_B2);
buf[1] = spl06_read_reg(SP06_PSR_B1);
buf[2] = spl06_read_reg(SP06_PSR_B0);
adc = (int32_t)buf[0]<<16 | (int32_t)buf[1]<<8 | (int32_t)buf[2];
adc = (adc&0x800000)?(0xFF000000|adc):adc;
return adc;
}
int32_t spl06_get_temperature_adc(void)//获取温度ADC值
{
uint8_t buf[3];
int32_t adc;
buf[0] = spl06_read_reg(SP06_TMP_B2);
buf[1] = spl06_read_reg(SP06_TMP_B1);
buf[2] = spl06_read_reg(SP06_TMP_B0);
adc = (int32_t)buf[0]<<16 | (int32_t)buf[1]<<8 | (int32_t)buf[2];
adc = (adc&0x800000)?(0xFF000000|adc):adc;
return adc;
}
uint8_t spl06_update(int32_t *Temp,int32_t *Press)//获取并计算出温度值、气压值
{
float Praw_src=0,Traw_src=0;
float qua2=0, qua3=0;
Traw_src = spl06_get_temperature_adc()/(float)spl06.i32kT;
Praw_src = spl06_get_pressure_adc()/(float)spl06.i32kP ;
//计算温度
*Temp = 0.5*spl06_calib_param.c0 + spl06_calib_param.c1* Traw_src;
//计算气压
qua2 = spl06_calib_param.c10 + Praw_src * (spl06_calib_param.c20 + Praw_src*spl06_calib_param.c30);
qua3 = Traw_src * Praw_src * (spl06_calib_param.c11 + Praw_src * spl06_calib_param.c21);
*Press = spl06_calib_param.c00 + Praw_src * qua2 + Traw_src * spl06_calib_param.c01 + qua3;
return 0;
}
//获取传感器数据就位状态,传感器就绪状态
uint8_t spl06_get_measure_status(void)
{
return spl06_read_reg(SP06_MEAS_CFG);
}
//设置读取模式+读取方式
void spl06_set_measure_mode(uint8_t mode) //参数为模式值
{
spl06_write_reg(SP06_MEAS_CFG, mode);
}
//启动命令模式读取温度值
void spl06_start_temperature(void)
{
spl06_write_reg(SP06_MEAS_CFG, MEAS_CTRL_TempMeasure);
}
//启动命令模式读取气压值
void spl06_start_pressure(void)
{
spl06_write_reg(SP06_MEAS_CFG, MEAS_CTRL_PressMeasure);
}
//进入待机模式,进入后停止采集数据直到再次切换模式
void spl06_enter_standby(void)
{
spl06_write_reg(SP06_MEAS_CFG, MEAS_CTRL_Standby);
}
void spl06_get_calib_param()
{
unsigned long h;
unsigned long m;
unsigned long l;
h = spl06_read_reg(0x10);
l = spl06_read_reg(0x11);
spl06_calib_param.c0 = (int16_t)h<<4 | l>>4;
spl06_calib_param.c0 = (spl06_calib_param.c0&0x0800)?(0xF000|spl06_calib_param.c0):spl06_calib_param.c0;
h = spl06_read_reg(0x11);
l = spl06_read_reg(0x12);
spl06_calib_param.c1 = (int16_t)(h&0x0F)<<8 | l;
spl06_calib_param.c1 = (spl06_calib_param.c1&0x0800)?(0xF000|spl06_calib_param.c1):spl06_calib_param.c1;
h = spl06_read_reg(0x13);
m = spl06_read_reg(0x14);
l = spl06_read_reg(0x15);
spl06_calib_param.c00 = (int32_t)h<<12 | (int32_t)m<<4 | (int32_t)l>>4;
spl06_calib_param.c00 = (spl06_calib_param.c00&0x080000)?(0xFFF00000|spl06_calib_param.c00):spl06_calib_param.c00;
h = spl06_read_reg(0x15);
m = spl06_read_reg(0x16);
l = spl06_read_reg(0x17);
spl06_calib_param.c10 = (int32_t)h<<16 | (int32_t)m<<8 | l;
spl06_calib_param.c10 = (spl06_calib_param.c10&0x080000)?(0xFFF00000|spl06_calib_param.c10):spl06_calib_param.c10;
h = spl06_read_reg(0x18);
l = spl06_read_reg(0x19);
spl06_calib_param.c01 = (int16_t)h<<8 | l;
h = spl06_read_reg(0x1A);
l = spl06_read_reg(0x1B);
spl06_calib_param.c11 = (int16_t)h<<8 | l;
h = spl06_read_reg(0x1C);
l = spl06_read_reg(0x1D);
spl06_calib_param.c20 = (int16_t)h<<8 | l;
h = spl06_read_reg(0x1E);
l = spl06_read_reg(0x1F);
spl06_calib_param.c21 = (int16_t)h<<8 | l;
h = spl06_read_reg(0x20);
l = spl06_read_reg(0x21);
spl06_calib_param.c30 = (int16_t)h<<8 | l;
}
uint8_t spl06_init(void)
{
uint8_t spl06_start_status;
if(spl06_write_reg(SP06_RESET,0x89))
{
return 1;
}
BSP_TIME_Delay(100); //复位后系数准备好需要至少40ms
do
spl06_start_status = spl06_get_measure_status(); //读取气压计启动状态
while((spl06_start_status&MEAS_COEF_RDY)!=MEAS_COEF_RDY);
//读取内部校准值
spl06_get_calib_param();
do
spl06_start_status = spl06_get_measure_status();//读取气压计启动状态
while((spl06_start_status&MEAS_SENSOR_RDY)!= MEAS_SENSOR_RDY);
spl06.chip_id = spl06_read_reg(SP06_ID);
if((spl06.chip_id & 0xf0) != SP06_COEF )
{
return 2;
}
spl06_config_pressure(PM_RATE_128,PM_PRC_8);
spl06_config_temperature(TMP_RATE_128,TMP_PRC_8);
spl06_start(MEAS_CTRL_ContinuousPressTemp); //启动连续的气压温度测量
return 0;
}
//通过气压计算高度
int32_t Caculate_height(int32_t GasPress)
{
int32_t Altitude=0;
Altitude =(44330.0 *(1.0-pow((float)(GasPress) / 101325.0,1.0/5.255)))*1000;//单位mm
return Altitude;
}

View File

@ -1,146 +0,0 @@
#ifndef __SPL06_H
#define __SPL06_H
#include "main.h"
//气压测量速率(sample/sec),Background 模式使用
#define PM_RATE_1 (0<<4) //1 measurements pr. sec.
#define PM_RATE_2 (1<<4) //2 measurements pr. sec.
#define PM_RATE_4 (2<<4) //4 measurements pr. sec.
#define PM_RATE_8 (3<<4) //8 measurements pr. sec.
#define PM_RATE_16 (4<<4) //16 measurements pr. sec.
#define PM_RATE_32 (5<<4) //32 measurements pr. sec.
#define PM_RATE_64 (6<<4) //64 measurements pr. sec.
#define PM_RATE_128 (7<<4) //128 measurements pr. sec.
//气压过采样速率(times),Background 模式使用
#define PM_PRC_1 0 //Sigle kP=524288 ,3.6ms
#define PM_PRC_2 1 //2 times kP=1572864 ,5.2ms
#define PM_PRC_4 2 //4 times kP=3670016 ,8.4ms
#define PM_PRC_8 3 //8 times kP=7864320 ,14.8ms
#define PM_PRC_16 4 //16 times kP=253952 ,27.6ms
#define PM_PRC_32 5 //32 times kP=516096 ,53.2ms
#define PM_PRC_64 6 //64 times kP=1040384 ,104.4ms
#define PM_PRC_128 7 //128 times kP=2088960 ,206.8ms
//温度测量速率(sample/sec),Background 模式使用
#define TMP_RATE_1 (0<<4) //1 measurements pr. sec.
#define TMP_RATE_2 (1<<4) //2 measurements pr. sec.
#define TMP_RATE_4 (2<<4) //4 measurements pr. sec.
#define TMP_RATE_8 (3<<4) //8 measurements pr. sec.
#define TMP_RATE_16 (4<<4) //16 measurements pr. sec.
#define TMP_RATE_32 (5<<4) //32 measurements pr. sec.
#define TMP_RATE_64 (6<<4) //64 measurements pr. sec.
#define TMP_RATE_128 (7<<4) //128 measurements pr. sec.
//温度重采样速率(times),Background 模式使用
#define TMP_PRC_1 0 //Sigle
#define TMP_PRC_2 1 //2 times
#define TMP_PRC_4 2 //4 times
#define TMP_PRC_8 3 //8 times
#define TMP_PRC_16 4 //16 times
#define TMP_PRC_32 5 //32 times
#define TMP_PRC_64 6 //64 times
#define TMP_PRC_128 7 //128 times
//SPL06_MEAS_CFG
#define MEAS_COEF_RDY 0x80 //传感器内部校准值可读
#define MEAS_SENSOR_RDY 0x40 //传感器初始化完成
#define MEAS_TMP_RDY 0x20 //有新的温度数据
#define MEAS_PRS_RDY 0x10 //有新的气压数据
#define MEAS_CTRL_Standby 0x00 //空闲模式,挂起模式
#define MEAS_CTRL_PressMeasure 0x01 //单次气压测量,命令模式下启动气压采集
#define MEAS_CTRL_TempMeasure 0x02 //单次温度测量,命令模式下启动电压测量
#define MEAS_CTRL_ContinuousPress 0x05 //连续气压测量
#define MEAS_CTRL_ContinuousTemp 0x06 //连续温度测量
#define MEAS_CTRL_ContinuousPressTemp 0x07 //连续气压温度测量
//FIFO_STS
#define SPL06_FIFO_FULL 0x02
#define SPL06_FIFO_EMPTY 0x01
//INT_STS
#define SPL06_INT_FIFO_FULL 0x04
#define SPL06_INT_TMP 0x02
#define SPL06_INT_PRS 0x01
//CFG_REG
#define SPL06_CFG_T_SHIFT 0x08 //oversampling times>8时必须使用
#define SPL06_CFG_P_SHIFT 0x04
#define SP06_PSR_B2 0x00 //气压值
#define SP06_PSR_B1 0x01
#define SP06_PSR_B0 0x02
#define SP06_TMP_B2 0x03 //温度值
#define SP06_TMP_B1 0x04
#define SP06_TMP_B0 0x05
#define SP06_PSR_CFG 0x06 //气压测量速率配置
#define SP06_TMP_CFG 0x07 //温度测量速度配置
#define SP06_MEAS_CFG 0x08 //测量配置与传感器配置
#define SP06_CFG_REG 0x09 //中断/FIF0/SPI线数配置
#define SP06_INT_STS 0x0A //中断状态标志位
#define SP06_FIFO_STS 0x0B //fifo状态
#define SP06_RESET 0x0C
#define SP06_ID 0x0D
#define SP06_COEF 0x10 //-0x21
#define SP06_COEF_SRCE 0x28
#define SP06_Advice_Address 0x77 //IIC器件地址
typedef struct { //内部出厂校准数据
int16_t c0;
int16_t c1;
int32_t c00;
int32_t c10;
int16_t c01;
int16_t c11;
int16_t c20;
int16_t c21;
int16_t c30;
}SPL06_Calib_Param;
typedef struct {
uint8_t chip_id; /**<chip id*/
int32_t i32rawPressure;//原始气压数据
int32_t i32rawTemperature;//原始温度数据
int32_t i32kP; //气压补偿参数
int32_t i32kT;//温度补偿参数
}SPL06;
uint8_t spl06_write_reg(uint8_t reg_addr,uint8_t reg_val);
uint8_t spl06_read_reg(uint8_t reg_addr);
void spl06_start(uint8_t mode);
void spl06_config_temperature(uint8_t rate,uint8_t oversampling);
void spl06_config_pressure(uint8_t rate,uint8_t oversampling);
int32_t spl06_get_pressure_adc(void);
int32_t spl06_get_temperature_adc(void);
uint8_t spl06_update(int32_t*Temp, int32_t *Press);//获取并计算出温度值、气压值
uint8_t spl06_init(void);
int32_t Caculate_height(int32_t GasPress);//计算高度单位ms
#endif

View File

@ -2,6 +2,7 @@
#include "bsp/time.h"
#include "BarometerDriver/spl06.h"
#include "BarometerDriver/user_iic.h"
#include "component/AltitudeKalman.h"
#include "component/filter.h"
#include "task/user_task.h"
@ -35,17 +36,35 @@ float accl_z_WithoutGravity; //z轴去g加速度
/* 卡尔曼滤波器估计高度 */
AltitudeKalman alt_kf;
/* Private function -------------------------------------------------------- */
int8_t HeightEstimation_Updata(float accl_z)
float remove_gravity_q(float ax, float ay, float az,
float q0, float q1, float q2, float q3)
{
/* Body -> NED 方向余弦矩阵第三行 */
float C31 = 2.0f*(q1*q3 - q0*q2);
float C32 = 2.0f*(q2*q3 + q0*q1);
float C33 = 1.0f - 2.0f*(q1*q1 + q2*q2);
/* NED 下 DOWN 方向的原始加速度 */
float an_z = C31*ax + C32*ay + C33*az;
/* 去重力 */
return an_z;
}
float accel_z_earth;
int8_t HeightEstimation_Updata(AHRS_Accl_t accl, AHRS_Quaternion_t quaternion)
{
SPL06_Update(&temperature, &pressure);
height = SPL06_CaculateHeight(pressure);
relative_height=(float)((height - initial_height)/1000.0f);
relative_height_filtered=LowPassFilter2p_Apply(&relative_height_filter, relative_height);
accl_z_filtered=LowPassFilter2p_Apply(&accl_z_filter, accl_z);
accl_z_WithoutGravity = (accl_z_filtered - gravity)*9.80665f;
accel_z_earth = remove_gravity_q(accl.x, accl.y, accl.z,
quaternion.q0, quaternion.q1, quaternion.q2, quaternion.q3);
accel_z_earth=LowPassFilter2p_Apply(&accl_z_filter, accel_z_earth);
accl_z_WithoutGravity = (accel_z_earth - gravity) * 9.80665f;
return 0;
}
/* Exported functions ------------------------------------------------------- */
@ -53,7 +72,7 @@ int8_t HeightEstimation_Init(float freq)
{
SPL06_Init();
BSP_TIME_Delay(100);
LowPassFilter2p_Init(&accl_z_filter, freq, 30.0f);
LowPassFilter2p_Init(&accl_z_filter, freq, 10.0f);
LowPassFilter2p_Init(&relative_height_filter, freq, 5.0f);
AltKalman_Init(&alt_kf);
@ -65,12 +84,12 @@ int8_t HeightEstimation_Init(float freq)
}
initializeCounter=0;
float accl_z_buffer=0;
AHRS_Accl_t accl_z_buffer={0,0,0};
float gravity_sum=0;
while(initializeCounter<INITIALIZE_SAMPLE_COUNT)
{
osMessageQueueGet(task_runtime.msgq.heightestimation.accl_z, &accl_z_buffer, NULL, 0);
gravity_sum+=accl_z_buffer;
osMessageQueueGet(task_runtime.msgq.heightestimation.accl, &accl_z_buffer, NULL, 0);
gravity_sum+=accl_z_buffer.z;
initializeCounter++;
osDelay(20);
}
@ -78,9 +97,9 @@ int8_t HeightEstimation_Init(float freq)
return 0;
}
int8_t HeightEstimation_GetHeight(float *heightout, float *velocityout, float accl_z)
int8_t HeightEstimation_GetHeight(float *heightout, float *velocityout, AHRS_Accl_t accl, AHRS_Quaternion_t eulr)
{
HeightEstimation_Updata(accl_z);
HeightEstimation_Updata(accl,eulr);
if(pressure==0){
//错误处理
}

View File

@ -7,8 +7,9 @@ extern "C" {
#include <stdbool.h>
#include <stdint.h>
#include "device/at9s_pro.h"
#include "component/ahrs.h"
int8_t HeightEstimation_Init(float freq);
int8_t HeightEstimation_GetHeight(float *heightout, float *velocityout, float accl_z);
int8_t HeightEstimation_GetHeight(float *heightout, float *velocityout, AHRS_Accl_t accl, AHRS_Quaternion_t eulr);
#ifdef __cplusplus
}
#endif

View File

@ -16,20 +16,20 @@
/* Exported functions ------------------------------------------------------- */
/**
* @brief
* @brief <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
*
* @param rc
* @param dr16_cmd
* @param dt_sec
* @return int8_t 0
* @param rc ң<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @param dr16_cmd <EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @param dt_sec <EFBFBD><EFBFBD><EFBFBD>ν<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD><EFBFBD>
* @return int8_t 0<EFBFBD><EFBFBD>Ӧû<EFBFBD>д<EFBFBD><EFBFBD><EFBFBD>
*/
int8_t COMP_AT9S_CMD_ParseRc(const DEVICE_AT9S_t *rc, COMP_AT9S_CMD_t *at9s_cmd) {
/* 指针检测 */
/* ָ<EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
if (rc == NULL) return -1;
if (at9s_cmd == NULL) return -1;
at9s_cmd->ch_l_x = 2.0f*(rc->data.ch_l_x-209.0f)/(1596.0f-209.0f)-1.0f;
at9s_cmd->ch_l_y = 2.0f*(rc->data.ch_l_y-178.0f)/(1575.0f-198.0f)-1.0f;
at9s_cmd->ch_l_y = (rc->data.ch_l_y-178.0f)/(1575.0f-198.0f);
at9s_cmd->ch_r_x = 2.0f*(rc->data.ch_r_x-210.0f)/(1596.0f-210.0f)-1.0f;
at9s_cmd->ch_r_y = 2.0f*(rc->data.ch_r_y-221.0f)/(1604.0f-217.0f)-1.0f;
@ -43,9 +43,13 @@ int8_t COMP_AT9S_CMD_ParseRc(const DEVICE_AT9S_t *rc, COMP_AT9S_CMD_t *at9s_cmd)
if(fabs(at9s_cmd->ch_r_x)>=1.0f)at9s_cmd->ch_r_x= at9s_cmd->ch_r_x>0?1.0f:-1.0f;
if(fabs(at9s_cmd->ch_r_y)>=1.0f)at9s_cmd->ch_r_y= at9s_cmd->ch_r_y>0?1.0f:-1.0f;
if(rc->online == true ||rc->data.key_D == AT9S_CMD_SW_UP)at9s_cmd->stop = false;
else if(rc->online == false || rc->data.key_D == AT9S_CMD_SW_DOWN)at9s_cmd->stop = true;
if(rc->online == true && rc->data.key_C == AT9S_CMD_SW_UP){at9s_cmd->stop = false;at9s_cmd->lockoutput = false;}
else if(rc->online == false || rc->data.key_C == AT9S_CMD_SW_MID)at9s_cmd->lockoutput = true;
else if(rc->online == false || rc->data.key_C == AT9S_CMD_SW_DOWN)at9s_cmd->stop = true;
else at9s_cmd->stop = true;
if(rc->data.ch_l_x==0&&rc->data.ch_l_y==0&&rc->data.ch_r_x==0&&rc->data.ch_r_y==0)at9s_cmd->start=true;
else at9s_cmd->start=false;
at9s_cmd->online = rc->online;
return 0;

View File

@ -19,7 +19,9 @@ typedef enum {
typedef struct
{
bool online;
bool start;
bool stop;
bool lockoutput;
int8_t mode;

View File

@ -28,62 +28,62 @@ Config_RobotParam_t robot_config = {
.pid = {
.pit_agl = {
.k = 1.0f,
.p = 0.8f,
.i = 0.05f,
.p = 10.0f,
.i = 3.0f,
.d = 0.0f,
.i_limit = 0.3f,
.out_limit = 1.0f,
.i_limit = 0.1f,
.out_limit = 0.1745f,
.d_cutoff_freq = 0.0f,
.range = 0.0f
},
.rol_agl = {
.k = 1.0f,
.p = 0.8f,
.i = 0.05f,
.p = 10.0f,
.i = 3.0f,
.d = 0.0f,
.i_limit = 0.3f,
.out_limit = 1.0f,
.i_limit = 0.1f,
.out_limit = 0.1745f,
.d_cutoff_freq = 0.0f,
.range = 0.0f
},
.yaw_agl = {
.k = 1.0f,
.p = 0.8f,
.i = 0.05f,
.p = 10.0f,
.i = 3.0f,
.d = 0.0f,
.i_limit = 0.3f,
.out_limit = 1.0f,
.i_limit = 0.1f,
.out_limit = 0.1745f,
.d_cutoff_freq = 0.0f,
.range = 0.0f
},
.pit_omg = {
.k = 1.0f,
.p = 0.25f,
.i = 0.05f,
.d = 0.01f,
.i_limit = 0.05f,
.p = 0.13f,
.i = 0.18f,
.d = 0.005f,
.i_limit = 0.08f,
.out_limit = 0.2f,
.d_cutoff_freq = 30.0f,
.d_cutoff_freq = 15.0f,
.range = 0.0f
},
.rol_omg = {
.k = 1.0f,
.p = 0.25f,
.i = 0.05f,
.d = 0.01f,
.i_limit = 0.05f,
.p = 0.13f,
.i = 0.18f,
.d = 0.005f,
.i_limit = 0.08f,
.out_limit = 0.2f,
.d_cutoff_freq = 30.0f,
.d_cutoff_freq = 15.0f,
.range = 0.0f
},
.yaw_omg = {
.k = 1.0f,
.p = 0.25f,
.i = 0.05f,
.d = 0.01f,
.i_limit = 0.05f,
.p = 0.13f,
.i = 0.18f,
.d = 0.005f,
.i_limit = 0.08f,
.out_limit = 0.2f,
.d_cutoff_freq = 30.0f,
.d_cutoff_freq = 15.0f,
.range = 0.0f
},
.alt_pos = {
@ -99,11 +99,11 @@ Config_RobotParam_t robot_config = {
.alt_vel = {
.k = 0.08f,
.p = 2.2f,
.i = 0.05f,
.i = 0.0f,
.d = 0.01f,
.i_limit = 0.05f,
.out_limit = 0.2f,
.d_cutoff_freq = -1.0f,
.i_limit = 0.0f,
.out_limit = 0.4f,
.d_cutoff_freq = 30.0f,
.range = 0.0f
},

View File

@ -74,6 +74,7 @@
//};
/* Private typedef ---------------------------------------------------------- */
/* Private define ----------------------------------------------------------- */
/* Private macro ------------------------------------------------------------ */
@ -136,36 +137,70 @@ float Kalman_Update(KalmanFilter* kf, float newAngle, float newRate, float dt) {
return kf->angle;
}
static bool Quad_UnlockDetection(Quad_t *q, Quad_CMD_t *cmd){
static bool arm_flag=false;
float thr = cmd->throttle;
float yaw = cmd->yaw;
float pit = cmd->pit;
float rol = cmd->rol;
/* 2. 内八判定 */
bool inside_8 = (thr < 0.1f) &&
(yaw > 0.9f) &&
(pit < -0.9f) &&
(rol < -0.9f);
uint32_t now_ms = BSP_TIME_Get_us() / 1000.0f;
if (!inside_8) { // 一旦出界,计时清零
q->timer_ms = 0;
return arm_flag;
}
if (q->timer_ms == 0) // 第一次进入
q->timer_ms = now_ms;
if ((now_ms - q->timer_ms) >= 1000 && !arm_flag) {
arm_flag = true;
q->timer_ms = 0;
}
return arm_flag;
}
static bool Quad_OutZeroDetection(Quad_CMD_t *cmd)
{
return (cmd->throttle < 0.05f) &&
(fabsf(cmd->yaw) < 0.05f) &&
(fabsf(cmd->pit) < 0.05f) &&
(fabsf(cmd->rol) < 0.05f);
}
int8_t Quad_UpdateStatus(Quad_t *q) {
// 这里添加传感器数据更新逻辑
// 1. 姿态估计(使用卡尔曼滤波)
q->current_status.eulr.rol = Kalman_Update(&q->kalman.rol_kf,
atan2f(q->current_status.accl.y, q->current_status.accl.z),
q->current_status.gyro.x,
q->dt);
q->current_status.eulr.pit = Kalman_Update(&q->kalman.pit_kf,
atan2f(-q->current_status.accl.x, q->current_status.accl.z),
q->current_status.gyro.y,
q->dt);
// 2. 高度估计(融合加速度计和气压计)
HeightEstimation_GetHeight(&q->current_status.alt, &q->current_status.vel_z, q->current_status.accl.z);
// 1. 姿态估计(使用卡尔曼滤波)精度不好
// q->current_status.eulr.rol = Kalman_Update(&q->kalman.rol_kf,
// atan2f(q->current_status.accl.y, q->current_status.accl.z),
// q->current_status.gyro.x,
// q->dt);
//
// q->current_status.eulr.pit = Kalman_Update(&q->kalman.pit_kf,
// atan2f(-q->current_status.accl.x, q->current_status.accl.z),
// q->current_status.gyro.y,
// q->dt);
LowPassFilter2p_Apply(&q->filter.gyro_x,q->current_status.gyro.x);
LowPassFilter2p_Apply(&q->filter.gyro_y,q->current_status.gyro.y);
LowPassFilter2p_Apply(&q->filter.gyro_z,q->current_status.gyro.z);
LowPassFilter2p_Apply(&q->filter.eulr_rol,q->current_status.eulr.rol);
LowPassFilter2p_Apply(&q->filter.eulr_pit,q->current_status.eulr.pit);
LowPassFilter2p_Apply(&q->filter.alt,q->current_status.alt);
LowPassFilter2p_Apply(&q->filter.vel_z,q->current_status.vel_z);
return 0;
}
int8_t Quad_SetTargetStates(Quad_t *q, Quad_CMD_t cmd) {
// 这里添加目标状态设置逻辑
int8_t Quad_SetTargetStates(Quad_t *q, Quad_CMD_t *cmd) {
q->expect_status.vel = cmd.throttle;
q->expect_status.yaw_omg = cmd.yaw;
q->expect_status.rol_agl = cmd.rol+q->current_status.eulr.rol;
q->expect_status.pit_agl = cmd.pit+q->current_status.eulr.pit;
q->expect_status.vel = cmd->throttle;
q->expect_status.yaw_omg = cmd->yaw;
q->expect_status.rol_agl = cmd->rol+q->calibration_status.eulr.rol;
q->expect_status.pit_agl = cmd->pit+q->calibration_status.eulr.pit;
Quad_Math_LimitFloat(&q->expect_status.yaw_omg,
-q->param->expect_status_limit.yaw_omg,
@ -174,8 +209,8 @@ int8_t Quad_SetTargetStates(Quad_t *q, Quad_CMD_t cmd) {
q->expect_status.rol_agl-q->param->expect_status_limit.rol_agl,
q->expect_status.rol_agl+q->param->expect_status_limit.rol_agl);
Quad_Math_LimitFloat(&q->expect_status.pit_agl,
q->expect_status.pit_agl-q->param->expect_status_limit.pit_agl,
q->expect_status.pit_agl+q->param->expect_status_limit.pit_agl);
-q->param->expect_status_limit.pit_agl,
q->param->expect_status_limit.pit_agl);
return 0;
}
@ -217,19 +252,20 @@ int8_t Quad_AttCtrl_omg(Quad_t *q, float dt) {
//角速度控制
q->output.pit = PID_Calc(&q->pid.pit_omg,
q->expect_status.pit_omg,
q->current_status.gyro.y,
q->current_status.gyro.x,
0,
q->dt);
q->output.yaw = PID_Calc(&q->pid.yaw_omg,
q->expect_status.yaw_omg,
q->current_status.gyro.z,
-q->current_status.gyro.z,
0,
q->dt);
q->output.rol = PID_Calc(&q->pid.rol_omg,
q->expect_status.rol_omg,
q->current_status.gyro.x,
-q->current_status.gyro.y,
0,
q->dt);
LowPassFilter2p_Apply(&q->filter.output_pit,q->output.pit);
return 0;
}
@ -237,14 +273,15 @@ int8_t Quad_Mixer(Quad_t *q) {
Quad_Math_ScaleSumTo1(&q->output.throttle, &q->output.rol, &q->output.pit, &q->output.yaw);
q->output.mix[0] = q->output.throttle + q->output.rol - q->output.pit + q->output.yaw;// 前右
q->output.mix[1] = q->output.throttle - q->output.rol - q->output.pit - q->output.yaw;// 前左
q->output.mix[2] = q->output.throttle - q->output.rol + q->output.pit + q->output.yaw;// 后左
q->output.mix[3] = q->output.throttle + q->output.rol + q->output.pit - q->output.yaw;// 后右
q->output.mix[0] = q->output.throttle - q->output.rol - q->output.pit - q->output.yaw;// 前右
q->output.mix[1] = q->output.throttle + q->output.rol - q->output.pit + q->output.yaw;// 前左
q->output.mix[2] = q->output.throttle + q->output.rol + q->output.pit - q->output.yaw;// 后左
q->output.mix[3] = q->output.throttle - q->output.rol + q->output.pit + q->output.yaw;// 后右
for(int i=0;i<4;i++){
Quad_Math_LimitFloat(&q->output.mix[i], q->param->motor_limit.min_output, q->param->motor_limit.max_output);
q->output.motor[i] = 0.275+0.8*q->output.mix[i]*0.21;
q->output.motor[i] = 0.275+q->output.mix[i]*0.21;
LowPassFilter2p_Apply(&q->filter.motor[i],q->output.motor[i]);
}
return 0;
@ -276,7 +313,7 @@ int8_t Quad_ResetOutput(Quad_Output_t *output) {
}
/* Exported functions ------------------------------------------------------- */
int8_t Quad_Init(Quad_t *q, Quad_Params_t *param, float freq) {
int8_t Quad_Init(Quad_t *q, Quad_Params_t *param, Quad_CMD_t *cmd, float freq) {
if(param == NULL) {
return -1; // 参数错误
@ -294,14 +331,18 @@ int8_t Quad_Init(Quad_t *q, Quad_Params_t *param, float freq) {
LowPassFilter2p_Init(&q->filter.accl_x, freq, 30.0f);
LowPassFilter2p_Init(&q->filter.accl_y, freq, 30.0f);
LowPassFilter2p_Init(&q->filter.accl_z, freq, 30.0f);
LowPassFilter2p_Init(&q->filter.gyro_x, freq, 80.0f);
LowPassFilter2p_Init(&q->filter.gyro_y, freq, 80.0f);
LowPassFilter2p_Init(&q->filter.gyro_z, freq, 80.0f);
LowPassFilter2p_Init(&q->filter.gyro_x, freq, 20.0f);
LowPassFilter2p_Init(&q->filter.gyro_y, freq, 20.0f);
LowPassFilter2p_Init(&q->filter.gyro_z, freq, 20.0f);
LowPassFilter2p_Init(&q->filter.eulr_yaw, freq, 20.0f);
LowPassFilter2p_Init(&q->filter.eulr_pit, freq, 20.0f);
LowPassFilter2p_Init(&q->filter.eulr_rol, freq, 20.0f);
LowPassFilter2p_Init(&q->filter.eulr_pit, freq, 10.0f);
LowPassFilter2p_Init(&q->filter.eulr_rol, freq, 10.0f);
LowPassFilter2p_Init(&q->filter.alt, freq, 10.0f);
LowPassFilter2p_Init(&q->filter.vel_z, freq, 15.0f);
LowPassFilter2p_Init(&q->filter.output_pit, freq, 5.0f);
for(int i=0;i<4;i++)
LowPassFilter2p_Init(&q->filter.motor[i],freq,30.0f);
PID_Init(&q->pid.yaw_agl, KPID_MODE_CALC_D, att_agl, &param->pid.yaw_agl);
PID_Init(&q->pid.pit_agl, KPID_MODE_CALC_D, att_agl, &param->pid.pit_agl);
@ -316,48 +357,87 @@ int8_t Quad_Init(Quad_t *q, Quad_Params_t *param, float freq) {
q->expect_status.pit_agl = q->current_status.eulr.pit;
q->expect_status.rol_agl = q->current_status.eulr.rol;
q->expect_status.yaw_agl = q->current_status.eulr.yaw;
q->calibration_status.eulr.rol = q->current_status.eulr.rol;
q->calibration_status.eulr.pit = q->current_status.eulr.pit;
q->calibration_status.eulr.yaw = q->current_status.eulr.yaw;
BSP_PWM_Start(BSP_PWM_MOTOR_OUT1);
BSP_PWM_Start(BSP_PWM_MOTOR_OUT2);
BSP_PWM_Start(BSP_PWM_MOTOR_OUT3);
BSP_PWM_Start(BSP_PWM_MOTOR_OUT4);
return 0;
}
int8_t Quad_Ctrl(Quad_t *q, Quad_CMD_t cmd) {
uint16_t dt;
int8_t Quad_Ctrl(Quad_t *q, Quad_CMD_t *cmd) {
if(q == NULL) {
return -1; // 参数错误
}
q->now =BSP_TIME_Get_us() / 1000000.0f;
q->dt =(BSP_TIME_Get_us() - q->last) / 1000000.0f;
q->last=BSP_TIME_Get_us();
Quad_UpdateStatus(q);
Quad_SetTargetStates(q, cmd);
switch(q->fsm_states){
case JOYSTICKDETECTION:
BSP_PWM_SetComp(BSP_PWM_MOTOR_OUT1, 0.275+0.21*cmd->throttle);
BSP_PWM_SetComp(BSP_PWM_MOTOR_OUT2, 0.275+0.21*cmd->throttle);
BSP_PWM_SetComp(BSP_PWM_MOTOR_OUT3, 0.275+0.21*cmd->throttle);
BSP_PWM_SetComp(BSP_PWM_MOTOR_OUT4, 0.275+0.21*cmd->throttle);
if(!Quad_UnlockDetection(q,cmd)){
Quad_ResetOutput(&q->output);
return -1;
}
q->fsm_states=UNLOCKMOTOR;
q->timer_ms=q->now;
case UNLOCKMOTOR:
BSP_PWM_SetComp(BSP_PWM_MOTOR_OUT1, 0.275);
BSP_PWM_SetComp(BSP_PWM_MOTOR_OUT2, 0.275);
BSP_PWM_SetComp(BSP_PWM_MOTOR_OUT3, 0.275);
BSP_PWM_SetComp(BSP_PWM_MOTOR_OUT4, 0.275);
dt=1000*q->now-q->timer_ms;
if(dt>2000){
q->fsm_states=RUNNING;
q->timer_ms=1000*q->now;
}
break;
case RUNNING:
Quad_UpdateStatus(q);
Quad_SetTargetStates(q, cmd);
static uint8_t cnt_1ms = 0;
cnt_1ms = (cnt_1ms + 1) % 10;
static uint8_t cnt_1ms = 0;
cnt_1ms = (cnt_1ms + 1) % 10;
/* 位置环 100 Hz */
if (cnt_1ms == 0) {
Quad_PosCtrl(q,10*q->dt);
/* 位置环 100 Hz */
if (cnt_1ms == 0) {
Quad_PosCtrl(q,10*q->dt);
}
/* 角度环 250 Hz */
if (cnt_1ms % 4 == 0) {
Quad_AttCtrl_agl(q,4*q->dt);
}
/* 角速度环 1000 Hz */
Quad_AttCtrl_omg(q,q->dt);
/* 混控 & 输出1000 Hz */
Quad_Mixer(q);
if(cmd->lockoutput){
for(int i=0;i<4;i++){
q->output.motor[i]=0;
}
}else if(cmd->stop){
Quad_stop();
}
Quad_OutPut(&q->output);
return 0;
break;
}
/* 角度环 250 Hz */
if (cnt_1ms % 4 == 0) {
Quad_AttCtrl_agl(q,4*q->dt);
}
/* 角速度环 1000 Hz */
Quad_AttCtrl_omg(q,q->dt);
/* 混控 & 输出1000 Hz */
Quad_Mixer(q);
Quad_OutPut(&q->output);
return 0;
}
void Quad_stop() {

View File

@ -5,6 +5,7 @@ extern "C" {
#endif
#include "device/at9s_pro.h"
#include "component/pid.h"
#include "component/ahrs.h"
// 卡尔曼滤波器结构体
typedef struct {
float Q_angle; // 过程噪声协方差(角度)
@ -14,17 +15,12 @@ typedef struct {
float bias; // 估计陀螺仪偏置
float P[2][2]; // 误差协方差矩阵
} KalmanFilter;
typedef struct{
float x;
float y;
float z;
}Quad_Vectory3f_t;
typedef struct{
float yaw;
float pit;
float rol;
}Quad_EulrVectory3f_t;
typedef enum {
JOYSTICKDETECTION,
UNLOCKMOTOR,
RUNNING
} Quad_CtrlFSM;
typedef struct {
uint16_t pos_alt;
@ -45,6 +41,9 @@ typedef struct {
LowPassFilter2p_t eulr_rol;
LowPassFilter2p_t alt;
LowPassFilter2p_t vel_z;
LowPassFilter2p_t output_pit;
LowPassFilter2p_t motor[4];
}Quad_LowPassFilter2p_t;
typedef struct {
@ -76,7 +75,9 @@ typedef struct {
}Quad_MotorConfig_t;
typedef struct {
bool online;
bool start;
bool stop;
bool lockoutput;
float throttle;
float yaw;
@ -86,9 +87,13 @@ typedef struct {
}Quad_CMD_t;
typedef struct{
Quad_Vectory3f_t accl; // m/s²
Quad_Vectory3f_t gyro;
Quad_EulrVectory3f_t eulr;
AHRS_Eulr_t eulr;
}Quad_CalibrationStatus_t;
typedef struct{
AHRS_Accl_t accl; // m/s²
AHRS_Gyro_t gyro;
AHRS_Eulr_t eulr;
float alt; // 气压计加速度计融合后相对高度 (m)
float vel_z; //z轴速度
}Quad_CurrentStatus_t;
@ -142,20 +147,25 @@ typedef struct{
float dt;
int64_t last;
uint64_t timer_ms;
Quad_CtrlFSM fsm_states;
Quad_Params_t *param;
Quad_PID_t pid;
Quad_LowPassFilter2p_t filter;
Quad_Kalman_t kalman;
Quad_CalibrationStatus_t calibration_status;
Quad_CurrentStatus_t current_status;
Quad_ExpectStatus_t expect_status;
Quad_Output_t output;
}Quad_t;
int8_t Quad_Init(Quad_t *q, Quad_Params_t *param, float freq);
int8_t Quad_Ctrl(Quad_t *q, Quad_CMD_t cmd);
int8_t Quad_Init(Quad_t *q, Quad_Params_t *param, Quad_CMD_t *cmd, float freq);
int8_t Quad_Ctrl(Quad_t *q, Quad_CMD_t *cmd);
void Quad_stop();
#ifdef __cplusplus
}

View File

@ -26,8 +26,12 @@ AHRS_t gimbal_ahrs;
AHRS_Magn_t magn;
AHRS_Eulr_t eulr_to_send;
float accl_z_for_heightestimation;
AHRS_Accl_t accl_for_heightestimation;
AHRS_Quaternion_t quaternion_for_heightestimation;
AHRS_Eulr_t eulr_for_quad;
AHRS_Accl_t accl_for_quad;
AHRS_Gyro_t gyro_for_quad;
KPID_t imu_temp_ctrl_pid;
//Chassis_IMU_t chassis_to_send;
@ -149,11 +153,20 @@ void Task_atti_esti(void *argument) {
osKernelUnlock();
accl_z_for_heightestimation = bmi088.accl.z;
eulr_for_quad=eulr_to_send;
accl_for_heightestimation = bmi088.accl;
quaternion_for_heightestimation = gimbal_ahrs.quat;
eulr_for_quad=eulr_to_send;
accl_for_quad=bmi088.accl;
gyro_for_quad=bmi088.gyro;
/* 创建修改后的数据副本用于发送到消息队列 */
osMessageQueuePut(task_runtime.msgq.heightestimation.accl_z, &accl_z_for_heightestimation, 0, 0);
osMessageQueuePut(task_runtime.msgq.heightestimation.accl, &accl_for_heightestimation, 0, 0);
osMessageQueuePut(task_runtime.msgq.heightestimation.quaternion, &quaternion_for_heightestimation, 0, 0);
osMessageQueuePut(task_runtime.msgq.quad.eulr, &eulr_for_quad, 0, 0);
osMessageQueuePut(task_runtime.msgq.quad.accl, &accl_for_quad, 0, 0);
osMessageQueuePut(task_runtime.msgq.quad.gyro, &gyro_for_quad, 0, 0);
BSP_PWM_SetComp(BSP_PWM_IMU_HEAT_PWM, PID_Calc(&imu_temp_ctrl_pid, 40.0f, bmi088.temp, 0.0f, 0.0f));
/* USER CODE END */
osDelayUntil(tick); /* 运行结束,等待下一次唤醒 */

View File

@ -49,11 +49,13 @@ void Task_cmd(void *argument) {
}
cmd_for_quad.online=rc_cmd.online;
cmd_for_quad.start=rc_cmd.start;
cmd_for_quad.throttle=rc_cmd.ch_l_y;
cmd_for_quad.yaw=rc_cmd.ch_l_x;
cmd_for_quad.pit=rc_cmd.ch_r_y;
cmd_for_quad.rol=rc_cmd.ch_r_x;
cmd_for_quad.stop=rc_cmd.stop;
cmd_for_quad.lockoutput=rc_cmd.lockoutput;
osMessageQueuePut(task_runtime.msgq.quad.cmd, &cmd_for_quad, 0, 0);
/* USER CODE END */

View File

@ -1,55 +1,53 @@
/*
height_cal Task
*/
/* Includes ----------------------------------------------------------------- */
#include "task/user_task.h"
/* USER INCLUDE BEGIN */
#include "task\user_task.h"
#include "timers.h"
#include "device/bmi088.h"
#include "BarometerDriver/spl06.h"
#include "component/ahrs.h"
#include "module/HeightEstimation.h"
/* USER INCLUDE END */
/* Private typedef ---------------------------------------------------------- */
/* Private define ----------------------------------------------------------- */
/* Private macro ------------------------------------------------------------ */
/* Private variables -------------------------------------------------------- */
/* USER STRUCT BEGIN */
float accl_z_buffer;
AHRS_Accl_t accl_buffer;
AHRS_Quaternion_t quaternion_buffer;
float estimated_velocity;
float estimated_height;
/* USER STRUCT END */
/* Private function --------------------------------------------------------- */
/* Exported functions ------------------------------------------------------- */
/**
* \brief ps2 Task
*
* \param argument
*/
void Task_height_cal(void *argument) {
(void)argument; /* 未使用argument消除警告 */
(void)argument;
/* 计算任务运行到指定频率需要等待的tick数 */
const uint32_t delay_tick = osKernelGetTickFreq() / HEIGHT_CAL_FREQ;
osDelay(HEIGHT_CAL_INIT_DELAY); /* 延时一段时间再开启任务 */
uint32_t tick = osKernelGetTickCount(); /* 控制任务运行频率的计时 */
/* USER CODE INIT BEGIN */
osDelay(HEIGHT_CAL_INIT_DELAY);
uint32_t tick = osKernelGetTickCount();
HeightEstimation_Init(HEIGHT_CAL_FREQ);
/* USER CODE INIT END */
while (1) {
tick += delay_tick; /* 计算下一个唤醒时刻 */
/* USER CODE BEGIN */
osMessageQueueGet(task_runtime.msgq.heightestimation.accl_z, &accl_z_buffer, NULL, 0);
HeightEstimation_GetHeight(&estimated_height, &estimated_velocity, accl_z_buffer);
osMessageQueuePut(task_runtime.msgq.quad.alt, &estimated_height, 0, 0);
osMessageQueuePut(task_runtime.msgq.quad.vel, &estimated_velocity, 0, 0);
/* USER CODE END */
osDelayUntil(tick); /* 运行结束,等待下一次唤醒 */
}
tick += delay_tick;
/*User code begin*/
osMessageQueueGet(task_runtime.msgq.heightestimation.accl, &accl_buffer, NULL, 0);
osMessageQueueGet(task_runtime.msgq.heightestimation.quaternion, &quaternion_buffer, NULL, 0);
HeightEstimation_GetHeight(&estimated_height, &estimated_velocity, accl_buffer, quaternion_buffer);
}
osMessageQueuePut(task_runtime.msgq.quad.alt, &estimated_height, 0, 0);
osMessageQueuePut(task_runtime.msgq.quad.vel, &estimated_velocity, 0, 0);
/*User code end*/
osDelayUntil(tick);
}
}

View File

@ -16,7 +16,7 @@
/* Private macro ------------------------------------------------------------ */
/* Private variables -------------------------------------------------------- */
/* Private function --------------------------------------------------------- */
/* Exported functions ------------------------------------------------------- */
/* Exported functions -------------------------------------------------k------ */
/**
* \brief
@ -39,8 +39,11 @@ void Task_Init(void *argument) {
// 创建消息队列
/* USER MESSAGE BEGIN */
task_runtime.msgq.heightestimation.accl_z= osMessageQueueNew(5, sizeof(float), NULL);
task_runtime.msgq.heightestimation.accl= osMessageQueueNew(5, sizeof(AHRS_Accl_t), NULL);
task_runtime.msgq.heightestimation.quaternion= osMessageQueueNew(5, sizeof(AHRS_Quaternion_t), NULL);
task_runtime.msgq.quad.eulr= osMessageQueueNew(3, sizeof(AHRS_Eulr_t), NULL);
task_runtime.msgq.quad.accl= osMessageQueueNew(3, sizeof(AHRS_Accl_t), NULL);
task_runtime.msgq.quad.gyro= osMessageQueueNew(3, sizeof(AHRS_Gyro_t), NULL);
task_runtime.msgq.quad.alt= osMessageQueueNew(3, sizeof(float), NULL);
task_runtime.msgq.quad.vel= osMessageQueueNew(3, sizeof(float), NULL);
task_runtime.msgq.quad.cmd= osMessageQueueNew(3, sizeof(Quad_CMD_t), NULL);

View File

@ -6,6 +6,7 @@
/* Includes ----------------------------------------------------------------- */
#include "task/user_task.h"
/* USER INCLUDE BEGIN */
#include "component/ahrs.h"
#include "module/xm_quadctrl.h"
#include "module/config.h"
/* USER INCLUDE END */
@ -32,17 +33,21 @@ void Task_quad_ctrl(void *argument) {
uint32_t tick = osKernelGetTickCount(); /* 控制任务运行频率的计时 */
/* USER CODE INIT BEGIN */
Quad_Init(&q,&Config_GetRobotParam()->quad_params,QUAD_CTRL_FREQ);
Quad_Init(&q,&Config_GetRobotParam()->quad_params,&quad_cmd,QUAD_CTRL_FREQ);
/* USER CODE INIT END */
while (1) {
tick += delay_tick; /* 计算下一个唤醒时刻 */
/* USER CODE BEGIN */
osMessageQueueGet(task_runtime.msgq.quad.eulr, &q.current_status.eulr, NULL, 0);
osMessageQueueGet(task_runtime.msgq.quad.accl, &q.current_status.accl, NULL, 0);
osMessageQueueGet(task_runtime.msgq.quad.gyro, &q.current_status.gyro, NULL, 0);
osMessageQueueGet(task_runtime.msgq.quad.alt, &q.current_status.alt, NULL, 0);
osMessageQueueGet(task_runtime.msgq.quad.vel, &q.current_status.vel_z, NULL, 0);
osMessageQueueGet(task_runtime.msgq.quad.cmd, &quad_cmd, NULL, 0);
Quad_Ctrl(&q,quad_cmd);
Quad_Ctrl(&q,&quad_cmd);
/* USER CODE END */
osDelayUntil(tick); /* 运行结束,等待下一次唤醒 */
}

View File

@ -1,54 +0,0 @@
/*
rc Task
*/
/* Includes ----------------------------------------------------------------- */
#include "task/user_task.h"
/* USER INCLUDE BEGIN */
#include "device/at9s_pro.h"
#include "module/at9s_pro_cmd.h"
/* USER INCLUDE END */
/* Private typedef ---------------------------------------------------------- */
/* Private define ----------------------------------------------------------- */
/* Private macro ------------------------------------------------------------ */
/* Private variables -------------------------------------------------------- */
/* USER STRUCT BEGIN */
uint8_t cmd_buffer[DEVICE_AT9S_FRAME_LEN];
DEVICE_AT9S_t at9s;
COMP_AT9S_CMD_t rc_cmd;
/* USER STRUCT END */
/* Private function --------------------------------------------------------- */
/* Exported functions ------------------------------------------------------- */
void Task_rc(void *argument) {
(void)argument; /* 未使用argument消除警告 */
/* 计算任务运行到指定频率需要等待的tick数 */
const uint32_t delay_tick = osKernelGetTickFreq() / RC_FREQ;
osDelay(RC_INIT_DELAY); /* 延时一段时间再开启任务 */
uint32_t tick = osKernelGetTickCount(); /* 控制任务运行频率的计时 */
/* USER CODE INIT BEGIN */
DEVICE_AT9S_Init(&at9s);
DEVICE_AT9S_StartDmaRecv(cmd_buffer);
/* USER CODE INIT END */
while (1) {
tick += delay_tick; /* 计算下一个唤醒时刻 */
/* USER CODE BEGIN */
if (DEVICE_AT9S_WaitDmaCplt(10)) {
DEVICE_AT9S_ParseRaw(cmd_buffer, &at9s);
COMP_AT9S_CMD_ParseRc(&at9s, &rc_cmd);
DEVICE_AT9S_StartDmaRecv(cmd_buffer);
}
// osMessageQueuePut(task_runtime.msgq.cmd.rc, &at9s, 0, 0);
/* USER CODE END */
osDelayUntil(tick); /* 运行结束,等待下一次唤醒 */
}
}

View File

@ -23,8 +23,8 @@ extern "C" {
#define TASK_INIT_DELAY (100u)
#define ATTI_ESTI_INIT_DELAY (0)
#define BLINK_INIT_DELAY (0)
#define HEIGHT_CAL_INIT_DELAY (300)
#define QUAD_CTRL_INIT_DELAY (0)
#define HEIGHT_CAL_INIT_DELAY (500)
#define QUAD_CTRL_INIT_DELAY (3000)
#define CMD_INIT_DELAY (0)
/* Exported defines --------------------------------------------------------- */
@ -48,11 +48,14 @@ typedef struct {
osMessageQueueId_t user_msg; /* 用户自定义任务消息队列 */
struct
{
osMessageQueueId_t accl_z; /* z轴加速度 */
osMessageQueueId_t accl;
osMessageQueueId_t quaternion;
}heightestimation;
struct{
osMessageQueueId_t eulr;
osMessageQueueId_t accl;
osMessageQueueId_t gyro;
osMessageQueueId_t alt;
osMessageQueueId_t vel;
osMessageQueueId_t cmd;

View File

@ -0,0 +1,43 @@
set(CMAKE_SYSTEM_NAME Generic)
set(CMAKE_SYSTEM_PROCESSOR arm)
set(CMAKE_C_COMPILER_ID GNU)
set(CMAKE_CXX_COMPILER_ID GNU)
# Some default GCC settings
# arm-none-eabi- must be part of path environment
set(TOOLCHAIN_PREFIX arm-none-eabi-)
set(CMAKE_C_COMPILER ${TOOLCHAIN_PREFIX}gcc)
set(CMAKE_ASM_COMPILER ${CMAKE_C_COMPILER})
set(CMAKE_CXX_COMPILER ${TOOLCHAIN_PREFIX}g++)
set(CMAKE_LINKER ${TOOLCHAIN_PREFIX}g++)
set(CMAKE_OBJCOPY ${TOOLCHAIN_PREFIX}objcopy)
set(CMAKE_SIZE ${TOOLCHAIN_PREFIX}size)
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)
# MCU specific flags
set(TARGET_FLAGS "-mcpu=cortex-m4 -mfpu=fpv4-sp-d16 -mfloat-abi=hard ")
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${TARGET_FLAGS}")
set(CMAKE_ASM_FLAGS "${CMAKE_C_FLAGS} -x assembler-with-cpp -MMD -MP")
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wall -fdata-sections -ffunction-sections")
set(CMAKE_C_FLAGS_DEBUG "-O0 -g3")
set(CMAKE_C_FLAGS_RELEASE "-Os -g0")
set(CMAKE_CXX_FLAGS_DEBUG "-O0 -g3")
set(CMAKE_CXX_FLAGS_RELEASE "-Os -g0")
set(CMAKE_CXX_FLAGS "${CMAKE_C_FLAGS} -fno-rtti -fno-exceptions -fno-threadsafe-statics")
set(CMAKE_EXE_LINKER_FLAGS "${TARGET_FLAGS}")
set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -T \"${CMAKE_SOURCE_DIR}/STM32F407XX_FLASH.ld\"")
set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} --specs=nano.specs")
set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -Wl,-Map=${CMAKE_PROJECT_NAME}.map -Wl,--gc-sections")
set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -Wl,--print-memory-usage")
set(TOOLCHAIN_LINK_LIBRARIES "m")

65
cmake/starm-clang.cmake Normal file
View File

@ -0,0 +1,65 @@
set(CMAKE_SYSTEM_NAME Generic)
set(CMAKE_SYSTEM_PROCESSOR arm)
set(CMAKE_C_COMPILER_ID Clang)
set(CMAKE_CXX_COMPILER_ID Clang)
# Some default llvm settings
set(TOOLCHAIN_PREFIX starm-)
set(CMAKE_C_COMPILER ${TOOLCHAIN_PREFIX}clang)
set(CMAKE_ASM_COMPILER ${CMAKE_C_COMPILER})
set(CMAKE_CXX_COMPILER ${TOOLCHAIN_PREFIX}clang++)
set(CMAKE_LINKER ${TOOLCHAIN_PREFIX}clang)
set(CMAKE_OBJCOPY ${TOOLCHAIN_PREFIX}objcopy)
set(CMAKE_SIZE ${TOOLCHAIN_PREFIX}size)
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)
# STARM_TOOLCHAIN_CONFIG allows you to choose the toolchain configuration.
# Possible values are:
# "STARM_HYBRID" : Hybrid configuration using starm-clang Assemler and Compiler and GNU Linker
# "STARM_NEWLIB" : starm-clang toolchain with NEWLIB C library
# "STARM_PICOLIBC" : starm-clang toolchain with PICOLIBC C library
set(STARM_TOOLCHAIN_CONFIG "STARM_HYBRID")
if(STARM_TOOLCHAIN_CONFIG STREQUAL "STARM_HYBRID")
set(TOOLCHAIN_MULTILIBS "--multi-lib-config=\"$ENV{CLANG_GCC_CMSIS_COMPILER}/multilib.gnu_tools_for_stm32.yaml\" --gcc-toolchain=\"$ENV{GCC_TOOLCHAIN_ROOT}/..\"")
elseif (STARM_TOOLCHAIN_CONFIG STREQUAL "STARM_NEWLIB")
set(TOOLCHAIN_MULTILIBS "--config=newlib.cfg")
endif()
# MCU specific flags
set(TARGET_FLAGS "-mcpu=cortex-m4 -mfpu=fpv4-sp-d16 -mfloat-abi=hard ${TOOLCHAIN_MULTILIBS}")
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${TARGET_FLAGS}")
set(CMAKE_ASM_FLAGS "${CMAKE_C_FLAGS} -x assembler-with-cpp -MP")
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wall -fdata-sections -ffunction-sections")
set(CMAKE_C_FLAGS_DEBUG "-O0 -g3")
set(CMAKE_C_FLAGS_RELEASE "-Os -g0")
set(CMAKE_CXX_FLAGS_DEBUG "-O0 -g3")
set(CMAKE_CXX_FLAGS_RELEASE "-Os -g0")
set(CMAKE_CXX_FLAGS "${CMAKE_C_FLAGS} -fno-rtti -fno-exceptions -fno-threadsafe-statics")
set(CMAKE_EXE_LINKER_FLAGS "${TARGET_FLAGS}")
if (STARM_TOOLCHAIN_CONFIG STREQUAL "STARM_HYBRID")
set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} --gcc-specs=nano.specs")
set(TOOLCHAIN_LINK_LIBRARIES "m")
elseif(STARM_TOOLCHAIN_CONFIG STREQUAL "STARM_NEWLIB")
set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -lcrt0-nosys")
elseif(STARM_TOOLCHAIN_CONFIG STREQUAL "STARM_PICOLIBC")
set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -lcrt0-hosted")
endif()
set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -T \"${CMAKE_SOURCE_DIR}/STM32F407XX_FLASH.ld\"")
set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -Wl,-Map=${CMAKE_PROJECT_NAME}.map -Wl,--gc-sections")
set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -z noexecstack")
set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -Wl,--print-memory-usage ")

View File

@ -0,0 +1,121 @@
cmake_minimum_required(VERSION 3.22)
# Enable CMake support for ASM and C languages
enable_language(C ASM)
# STM32CubeMX generated symbols (macros)
set(MX_Defines_Syms
USE_HAL_DRIVER
STM32F407xx
$<$<CONFIG:Debug>:DEBUG>
)
# STM32CubeMX generated include paths
set(MX_Include_Dirs
${CMAKE_CURRENT_SOURCE_DIR}/../../Core/Inc
${CMAKE_CURRENT_SOURCE_DIR}/../../Drivers/STM32F4xx_HAL_Driver/Inc
${CMAKE_CURRENT_SOURCE_DIR}/../../Drivers/STM32F4xx_HAL_Driver/Inc/Legacy
${CMAKE_CURRENT_SOURCE_DIR}/../../Middlewares/Third_Party/FreeRTOS/Source/include
${CMAKE_CURRENT_SOURCE_DIR}/../../Middlewares/Third_Party/FreeRTOS/Source/CMSIS_RTOS_V2
${CMAKE_CURRENT_SOURCE_DIR}/../../Middlewares/Third_Party/FreeRTOS/Source/portable/GCC/ARM_CM4F
${CMAKE_CURRENT_SOURCE_DIR}/../../Drivers/CMSIS/Device/ST/STM32F4xx/Include
${CMAKE_CURRENT_SOURCE_DIR}/../../Drivers/CMSIS/Include
)
# STM32CubeMX generated application sources
set(MX_Application_Src
${CMAKE_CURRENT_SOURCE_DIR}/../../Core/Src/main.c
${CMAKE_CURRENT_SOURCE_DIR}/../../Core/Src/gpio.c
${CMAKE_CURRENT_SOURCE_DIR}/../../Core/Src/freertos.c
${CMAKE_CURRENT_SOURCE_DIR}/../../Core/Src/dma.c
${CMAKE_CURRENT_SOURCE_DIR}/../../Core/Src/i2c.c
${CMAKE_CURRENT_SOURCE_DIR}/../../Core/Src/spi.c
${CMAKE_CURRENT_SOURCE_DIR}/../../Core/Src/tim.c
${CMAKE_CURRENT_SOURCE_DIR}/../../Core/Src/usart.c
${CMAKE_CURRENT_SOURCE_DIR}/../../Core/Src/stm32f4xx_it.c
${CMAKE_CURRENT_SOURCE_DIR}/../../Core/Src/stm32f4xx_hal_msp.c
${CMAKE_CURRENT_SOURCE_DIR}/../../Core/Src/sysmem.c
${CMAKE_CURRENT_SOURCE_DIR}/../../Core/Src/syscalls.c
${CMAKE_CURRENT_SOURCE_DIR}/../../startup_stm32f407xx.s
)
# STM32 HAL/LL Drivers
set(STM32_Drivers_Src
${CMAKE_CURRENT_SOURCE_DIR}/../../Core/Src/system_stm32f4xx.c
${CMAKE_CURRENT_SOURCE_DIR}/../../Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_rcc.c
${CMAKE_CURRENT_SOURCE_DIR}/../../Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_rcc_ex.c
${CMAKE_CURRENT_SOURCE_DIR}/../../Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash.c
${CMAKE_CURRENT_SOURCE_DIR}/../../Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash_ex.c
${CMAKE_CURRENT_SOURCE_DIR}/../../Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_flash_ramfunc.c
${CMAKE_CURRENT_SOURCE_DIR}/../../Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_gpio.c
${CMAKE_CURRENT_SOURCE_DIR}/../../Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_dma_ex.c
${CMAKE_CURRENT_SOURCE_DIR}/../../Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_dma.c
${CMAKE_CURRENT_SOURCE_DIR}/../../Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_pwr.c
${CMAKE_CURRENT_SOURCE_DIR}/../../Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_pwr_ex.c
${CMAKE_CURRENT_SOURCE_DIR}/../../Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_cortex.c
${CMAKE_CURRENT_SOURCE_DIR}/../../Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal.c
${CMAKE_CURRENT_SOURCE_DIR}/../../Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_exti.c
${CMAKE_CURRENT_SOURCE_DIR}/../../Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_i2c.c
${CMAKE_CURRENT_SOURCE_DIR}/../../Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_i2c_ex.c
${CMAKE_CURRENT_SOURCE_DIR}/../../Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_spi.c
${CMAKE_CURRENT_SOURCE_DIR}/../../Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_tim.c
${CMAKE_CURRENT_SOURCE_DIR}/../../Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_tim_ex.c
${CMAKE_CURRENT_SOURCE_DIR}/../../Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_uart.c
)
# Drivers Midllewares
set(FreeRTOS_Src
${CMAKE_CURRENT_SOURCE_DIR}/../../Middlewares/Third_Party/FreeRTOS/Source/croutine.c
${CMAKE_CURRENT_SOURCE_DIR}/../../Middlewares/Third_Party/FreeRTOS/Source/event_groups.c
${CMAKE_CURRENT_SOURCE_DIR}/../../Middlewares/Third_Party/FreeRTOS/Source/list.c
${CMAKE_CURRENT_SOURCE_DIR}/../../Middlewares/Third_Party/FreeRTOS/Source/queue.c
${CMAKE_CURRENT_SOURCE_DIR}/../../Middlewares/Third_Party/FreeRTOS/Source/stream_buffer.c
${CMAKE_CURRENT_SOURCE_DIR}/../../Middlewares/Third_Party/FreeRTOS/Source/tasks.c
${CMAKE_CURRENT_SOURCE_DIR}/../../Middlewares/Third_Party/FreeRTOS/Source/timers.c
${CMAKE_CURRENT_SOURCE_DIR}/../../Middlewares/Third_Party/FreeRTOS/Source/CMSIS_RTOS_V2/cmsis_os2.c
${CMAKE_CURRENT_SOURCE_DIR}/../../Middlewares/Third_Party/FreeRTOS/Source/portable/MemMang/heap_4.c
${CMAKE_CURRENT_SOURCE_DIR}/../../Middlewares/Third_Party/FreeRTOS/Source/portable/GCC/ARM_CM4F/port.c
)
# Link directories setup
set(MX_LINK_DIRS
)
# Project static libraries
set(MX_LINK_LIBS
STM32_Drivers
${TOOLCHAIN_LINK_LIBRARIES}
FreeRTOS
)
# Interface library for includes and symbols
add_library(stm32cubemx INTERFACE)
target_include_directories(stm32cubemx INTERFACE ${MX_Include_Dirs})
target_compile_definitions(stm32cubemx INTERFACE ${MX_Defines_Syms})
# Create STM32_Drivers static library
add_library(STM32_Drivers OBJECT)
target_sources(STM32_Drivers PRIVATE ${STM32_Drivers_Src})
target_link_libraries(STM32_Drivers PUBLIC stm32cubemx)
# Create FreeRTOS static library
add_library(FreeRTOS OBJECT)
target_sources(FreeRTOS PRIVATE ${FreeRTOS_Src})
target_link_libraries(FreeRTOS PUBLIC stm32cubemx)
# Add STM32CubeMX generated application sources to the project
target_sources(${CMAKE_PROJECT_NAME} PRIVATE ${MX_Application_Src})
# Link directories setup
target_link_directories(${CMAKE_PROJECT_NAME} PRIVATE ${MX_LINK_DIRS})
# Add libraries to the project
target_link_libraries(${CMAKE_PROJECT_NAME} ${MX_LINK_LIBS})
# Add the map file to the list of files to be removed with 'clean' target
set_target_properties(${CMAKE_PROJECT_NAME} PROPERTIES ADDITIONAL_CLEAN_FILES ${CMAKE_PROJECT_NAME}.map)
# Validate that STM32CubeMX code is compatible with C standard
if((CMAKE_C_STANDARD EQUAL 90) OR (CMAKE_C_STANDARD EQUAL 99))
message(ERROR "Generated code requires C11 or higher")
endif()

View File

@ -1,36 +1,68 @@
GraphedExpression="relative_height_filtered", Color=#e56a6f
GraphedExpression="relative_height", Color=#35792b, Show=0
GraphedExpression="estimated_velocity", Color=#769dda, Show=0
GraphedExpression="estimated_height", Color=#b14f0d
OpenDocument="time.c", FilePath="D:/CUBEMX/Quadcopter/DveC/User/bsp/time.c", Line=34
OpenDocument="height_cal.c", FilePath="D:/CUBEMX/Quadcopter/DveC/User/task/height_cal.c", Line=0
OpenDocument="HeightEstimation.c", FilePath="D:/CUBEMX/Quadcopter/DveC/User/module/HeightEstimation.c", Line=18
GraphedExpression="pressure", DisplayFormat=DISPLAY_FORMAT_DEC, Color=#e56a6f, Show=0
GraphedExpression="((q).output).throttle", Color=#35792b, Show=0
GraphedExpression="((q).output).rol", Color=#769dda, Show=0
GraphedExpression="((q).output).pit", Color=#b14f0d, Show=0
GraphedExpression="((q).output).yaw", Color=#b3c38e, Show=0
GraphedExpression="((q).expect_status).pit_omg", Color=#ab7b05, Show=0
GraphedExpression="(((q).current_status).gyro).x", Color=#7fd3b7, Show=0
GraphedExpression="((((q).pid).pit_omg).out).dout", Color=#50328f, Show=0
GraphedExpression="((((q).pid).pit_agl).out).iout", Color=#c587a5
GraphedExpression="((((q).pid).pit_agl).last).out", Color=#999401, Show=0
GraphedExpression="((((q).pid).pit_omg).last).out", Color=#aa1d24, Show=0
GraphedExpression="((q).expect_status).pit_agl", Color=#86d27e, Show=0
GraphedExpression="(((q).current_status).eulr).pit", Color=#2a5191, Show=0
OpenDocument="xm_quadctrl.c", FilePath="D:/CUBEMX/Quadcopter/DveC/User/module/xm_quadctrl.c", Line=181
OpenDocument="time.c", FilePath="D:/CUBEMX/Quadcopter/DveC/User/bsp/time.c", Line=33
OpenDocument="HeightEstimation.c", FilePath="D:/CUBEMX/Quadcopter/DveC/User/module/HeightEstimation.c", Line=23
OpenDocument="startup_stm32f407xx.s", FilePath="D:/CUBEMX/Quadcopter/DveC/MDK-ARM/startup_stm32f407xx.s", Line=161
OpenDocument="main.c", FilePath="D:/CUBEMX/Quadcopter/DveC/Core/Src/main.c", Line=47
OpenDocument="at9s_pro_cmd.c", FilePath="D:/CUBEMX/Quadcopter/DveC/User/module/at9s_pro_cmd.c", Line=11
OpenDocument="user_iic.c", FilePath="D:/CUBEMX/Quadcopter/DveC/User/BarometerDriver/user_iic.c", Line=97
OpenDocument="main.c", FilePath="D:/CUBEMX/Quadcopter/DveC/Core/Src/main.c", Line=46
OpenDocument="ahrs.h", FilePath="D:/CUBEMX/Quadcopter/DveC/User/component/ahrs.h", Line=0
OpenDocument="quad_ctrl.c", FilePath="D:/CUBEMX/Quadcopter/DveC/User/task/quad_ctrl.c", Line=7
OpenDocument="tasks.c", FilePath="D:/CUBEMX/Quadcopter/DveC/Middlewares/Third_Party/FreeRTOS/Source/tasks.c", Line=2302
OpenDocument="stm32f4xx_it.c", FilePath="D:/CUBEMX/Quadcopter/DveC/Core/Src/stm32f4xx_it.c", Line=85
OpenDocument="height_cal.c", FilePath="D:/CUBEMX/Quadcopter/DveC/User/task/height_cal.c", Line=6
OpenDocument="filter.c", FilePath="D:/CUBEMX/Quadcopter/DveC/User/component/filter.c", Line=42
OpenDocument="stm32f4xx_hal_gpio.c", FilePath="D:/CUBEMX/Quadcopter/DveC/Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_gpio.c", Line=152
OpenDocument="cmsis_os2.c", FilePath="D:/CUBEMX/Quadcopter/DveC/Middlewares/Third_Party/FreeRTOS/Source/CMSIS_RTOS_V2/cmsis_os2.c", Line=383
OpenDocument="stm32f4xx_hal_spi.c", FilePath="D:/CUBEMX/Quadcopter/DveC/Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_spi.c", Line=3492
OpenToolbar="Debug", Floating=0, x=0, y=0
OpenWindow="Registers 1", DockArea=RIGHT, x=0, y=1, w=726, h=606, TabPos=1, TopOfStack=0, FilterBarShown=0, TotalValueBarShown=0, ToolBarShown=0, FilteredItems=[], RefreshRate=1
OpenWindow="Registers 1", DockArea=RIGHT, x=0, y=1, w=729, h=728, TabPos=1, TopOfStack=0, FilterBarShown=0, TotalValueBarShown=0, ToolBarShown=0, FilteredItems=[], RefreshRate=1
OpenWindow="Source Files", DockArea=LEFT, x=0, y=0, w=301, h=919, TabPos=0, TopOfStack=1, FilterBarShown=0, TotalValueBarShown=0, ToolBarShown=0
OpenWindow="Disassembly", DockArea=RIGHT, x=0, y=0, w=726, h=312, FilterBarShown=0, TotalValueBarShown=0, ToolBarShown=0
OpenWindow="Watched Data 1", DockArea=RIGHT, x=0, y=1, w=726, h=606, TabPos=0, TopOfStack=1, FilterBarShown=0, TotalValueBarShown=0, ToolBarShown=0
OpenWindow="Disassembly", DockArea=RIGHT, x=0, y=0, w=729, h=190, FilterBarShown=0, TotalValueBarShown=0, ToolBarShown=0
OpenWindow="Watched Data 1", DockArea=RIGHT, x=0, y=1, w=729, h=728, TabPos=0, TopOfStack=1, FilterBarShown=0, TotalValueBarShown=0, ToolBarShown=0
OpenWindow="Functions", DockArea=LEFT, x=0, y=0, w=301, h=919, TabPos=1, TopOfStack=0, FilterBarShown=0, TotalValueBarShown=0, ToolBarShown=0
OpenWindow="Data Sampling", DockArea=BOTTOM, x=1, y=0, w=1276, h=536, TabPos=0, TopOfStack=1, FilterBarShown=0, TotalValueBarShown=0, ToolBarShown=0, VisibleTab=0, UniformSampleSpacing=0
OpenWindow="Timeline", DockArea=BOTTOM, x=0, y=0, w=1283, h=555, 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="487;249", DataGraphShowNamesAtCursor=0, PowerGraphDrawAsPoints=0, PowerGraphLegendShown=0, PowerGraphAvgFilterTime=Off, PowerGraphAvgFilterLen=Off, PowerGraphUniformSampleSpacing=0, PowerGraphLegendPosition="1056;0", CodeGraphLegendShown=0, CodeGraphLegendPosition="1007;0"
OpenWindow="Console", DockArea=BOTTOM, x=1, y=0, w=1276, h=536, TabPos=1, TopOfStack=0, FilterBarShown=0, TotalValueBarShown=0, ToolBarShown=0
OpenWindow="Data Sampling", DockArea=BOTTOM, x=1, y=0, w=291, h=536, TabPos=0, TopOfStack=1, FilterBarShown=0, TotalValueBarShown=0, ToolBarShown=0, VisibleTab=0, UniformSampleSpacing=0
OpenWindow="Timeline", DockArea=BOTTOM, x=0, y=0, w=2268, h=555, FilterBarShown=0, TotalValueBarShown=0, ToolBarShown=1, DataPaneShown=1, PowerPaneShown=0, CodePaneShown=0, PinCursor="Cursor Movable", TimePerDiv="10 s / Div", TimeStampFormat="Time", DataGraphDrawAsPoints=0, DataGraphLegendShown=1, DataGraphUniformSampleSpacing=0, DataGraphLegendPosition="205;30", DataGraphShowNamesAtCursor=0, PowerGraphDrawAsPoints=0, PowerGraphLegendShown=0, PowerGraphAvgFilterTime=Off, PowerGraphAvgFilterLen=Off, PowerGraphUniformSampleSpacing=0, PowerGraphLegendPosition="1469;-69", CodeGraphLegendShown=0, CodeGraphLegendPosition="1485;0"
OpenWindow="Console", DockArea=BOTTOM, x=1, y=0, w=291, h=536, TabPos=1, TopOfStack=0, FilterBarShown=0, TotalValueBarShown=0, ToolBarShown=0
SmartViewPlugin="", Page="", Toolbar="Hidden", Window="SmartView 1"
TableHeader="Registers 1", SortCol="Name", SortOrder="ASCENDING", VisibleCols=["Name";"Value";"Description"], ColWidths=[100;144;485]
TableHeader="Functions", SortCol="Name", SortOrder="ASCENDING", VisibleCols=["Name";"Address";"Size";"#Insts";"Source"], ColWidths=[1594;104;100;100;100]
TableHeader="Source Files", SortCol="File", SortOrder="ASCENDING", VisibleCols=["File";"Status";"Size";"#Insts";"Path"], ColWidths=[215;100;100;100;814]
TableHeader="Data Sampling Table", SortCol="None", SortOrder="ASCENDING", VisibleCols=["Index";"Time";" relative_height_filtered";" relative_height";" estimated_velocity";" estimated_height"], ColWidths=[100;100;100;100;100;100]
TableHeader="Data Sampling Setup", SortCol="Expression", SortOrder="ASCENDING", VisibleCols=["Expression";"Type";"Value";"Min";"Max";"Average";"# Changes";"Min. Change";"Max. Change"], ColWidths=[118;100;144;124;124;134;110;134;288]
TableHeader="Power Sampling", SortCol="None", SortOrder="ASCENDING", VisibleCols=["Index";"Time";"Ch 0"], ColWidths=[100;100;100]
TableHeader="Registers 1", SortCol="Name", SortOrder="ASCENDING", VisibleCols=["Name";"Value";"Description"], ColWidths=[100;144;294]
TableHeader="Watched Data 1", SortCol="Expression", SortOrder="ASCENDING", VisibleCols=["Expression";"Value";"Location";"Refresh"], ColWidths=[250;282;91;103]
TableHeader="RegisterSelectionDialog", SortCol="None", SortOrder="ASCENDING", VisibleCols=[], ColWidths=[]
TableHeader="TargetExceptionDialog", SortCol="Name", SortOrder="ASCENDING", VisibleCols=["Name";"Value";"Address";"Description"], ColWidths=[200;100;100;340]
WatchedExpression="relative_height_filtered", RefreshRate=5, Window=Watched Data 1
WatchedExpression="estimated_velocity", RefreshRate=5, Window=Watched Data 1
WatchedExpression="estimated_height", RefreshRate=5, Window=Watched Data 1
WatchedExpression="alt_kf", RefreshRate=5, Window=Watched Data 1
WatchedExpression="relative_height", RefreshRate=5, Window=Watched Data 1
WatchedExpression="relative_height_filter", RefreshRate=5, Window=Watched Data 1
TableHeader="Source Files", SortCol="File", SortOrder="ASCENDING", VisibleCols=["File";"Status";"Size";"#Insts";"Path"], ColWidths=[215;100;100;100;814]
TableHeader="Watched Data 1", SortCol="Expression", SortOrder="ASCENDING", VisibleCols=["Expression";"Value";"Location";"Refresh"], ColWidths=[250;282;91;100]
TableHeader="Data Sampling Table", SortCol="None", SortOrder="ASCENDING", VisibleCols=["Index";"Time";" pressure";" ((q).output).throttle";" ((q).output).rol";" ((q).output).pit";" ((q).output).yaw";" ((q).expect_status).pit_omg";" (((q).current_status).gyro).x";" ((((q).pid).pit_omg).out).dout";" ((((q).pid).pit_agl).out).iout";" ((((q).pid).pit_agl).last).out";" ((((q).pid).pit_omg).last).out";" ((q).expect_status).pit_agl";" (((q).current_status).eulr).pit"], ColWidths=[100;100;100;100;100;100;100;100;100;100;100;100;100;100;100]
TableHeader="Data Sampling Setup", SortCol="Expression", SortOrder="ASCENDING", VisibleCols=["Expression";"Type";"Value";"Min";"Max";"Average";"# Changes";"Min. Change";"Max. Change"], ColWidths=[253;100;154;144;144;164;110;164;154]
TableHeader="TargetExceptionDialog", SortCol="Name", SortOrder="ASCENDING", VisibleCols=["Name";"Value";"Address";"Description"], ColWidths=[200;100;100;366]
WatchedExpression="pressure", RefreshRate=5, Window=Watched Data 1
WatchedExpression="q", RefreshRate=5, Window=Watched Data 1
WatchedExpression="eulr", RefreshRate=5, Window=Watched Data 1
WatchedExpression="quad_cmd", RefreshRate=5, Window=Watched Data 1
WatchedExpression="quad_cmd", RefreshRate=5, Window=Watched Data 1
WatchedExpression="inside_8", RefreshRate=5, Window=Watched Data 1
WatchedExpression="now_ms", RefreshRate=5, Window=Watched Data 1
WatchedExpression="dt", RefreshRate=5, Window=Watched Data 1
WatchedExpression="accel_z_earth", RefreshRate=5, Window=Watched Data 1
WatchedExpression="accl_z_WithoutGravity", Window=Watched Data 1
WatchedExpression="accl_buffer", RefreshRate=5, Window=Watched Data 1
WatchedExpression="eulr_buffer", RefreshRate=5, Window=Watched Data 1
WatchedExpression="sinRoll", RefreshRate=5, Window=Watched Data 1
WatchedExpression="cosRoll", RefreshRate=5, Window=Watched Data 1
WatchedExpression="sinPitch", RefreshRate=5, Window=Watched Data 1
WatchedExpression="cosPitch", RefreshRate=5, Window=Watched Data 1
WatchedExpression="calibrated_roll", RefreshRate=5, Window=Watched Data 1
WatchedExpression="calibrated_pitch", RefreshRate=5, Window=Watched Data 1

508
startup_stm32f407xx.s Normal file
View File

@ -0,0 +1,508 @@
/**
******************************************************************************
* @file startup_stm32f407xx.s
* @author MCD Application Team
* @brief STM32F407xx Devices vector table for GCC based toolchains.
* This module performs:
* - Set the initial SP
* - Set the initial PC == Reset_Handler,
* - Set the vector table entries with the exceptions ISR address
* - Branches to main in the C library (which eventually
* calls main()).
* After Reset the Cortex-M4 processor is in Thread mode,
* priority is Privileged, and the Stack is set to Main.
******************************************************************************
* @attention
*
* Copyright (c) 2017 STMicroelectronics.
* All rights reserved.
*
* This software is licensed under terms that can be found in the LICENSE file
* in the root directory of this software component.
* If no LICENSE file comes with this software, it is provided AS-IS.
*
******************************************************************************
*/
.syntax unified
.cpu cortex-m4
.fpu softvfp
.thumb
.global g_pfnVectors
.global Default_Handler
/* start address for the initialization values of the .data section.
defined in linker script */
.word _sidata
/* start address for the .data section. defined in linker script */
.word _sdata
/* end address for the .data section. defined in linker script */
.word _edata
/* start address for the .bss section. defined in linker script */
.word _sbss
/* end address for the .bss section. defined in linker script */
.word _ebss
/* stack used for SystemInit_ExtMemCtl; always internal RAM used */
/**
* @brief This is the code that gets called when the processor first
* starts execution following a reset event. Only the absolutely
* necessary set is performed, after which the application
* supplied main() routine is called.
* @param None
* @retval : None
*/
.section .text.Reset_Handler
.weak Reset_Handler
.type Reset_Handler, %function
Reset_Handler:
ldr sp, =_estack /* set stack pointer */
/* Call the clock system initialization function.*/
bl SystemInit
/* Copy the data segment initializers from flash to SRAM */
ldr r0, =_sdata
ldr r1, =_edata
ldr r2, =_sidata
movs r3, #0
b LoopCopyDataInit
CopyDataInit:
ldr r4, [r2, r3]
str r4, [r0, r3]
adds r3, r3, #4
LoopCopyDataInit:
adds r4, r0, r3
cmp r4, r1
bcc CopyDataInit
/* Zero fill the bss segment. */
ldr r2, =_sbss
ldr r4, =_ebss
movs r3, #0
b LoopFillZerobss
FillZerobss:
str r3, [r2]
adds r2, r2, #4
LoopFillZerobss:
cmp r2, r4
bcc FillZerobss
/* Call static constructors */
bl __libc_init_array
/* Call the application's entry point.*/
bl main
bx lr
.size Reset_Handler, .-Reset_Handler
/**
* @brief This is the code that gets called when the processor receives an
* unexpected interrupt. This simply enters an infinite loop, preserving
* the system state for examination by a debugger.
* @param None
* @retval None
*/
.section .text.Default_Handler,"ax",%progbits
Default_Handler:
Infinite_Loop:
b Infinite_Loop
.size Default_Handler, .-Default_Handler
/******************************************************************************
*
* The minimal vector table for a Cortex M3. Note that the proper constructs
* must be placed on this to ensure that it ends up at physical address
* 0x0000.0000.
*
*******************************************************************************/
.section .isr_vector,"a",%progbits
.type g_pfnVectors, %object
g_pfnVectors:
.word _estack
.word Reset_Handler
.word NMI_Handler
.word HardFault_Handler
.word MemManage_Handler
.word BusFault_Handler
.word UsageFault_Handler
.word 0
.word 0
.word 0
.word 0
.word SVC_Handler
.word DebugMon_Handler
.word 0
.word PendSV_Handler
.word SysTick_Handler
/* External Interrupts */
.word WWDG_IRQHandler /* Window WatchDog */
.word PVD_IRQHandler /* PVD through EXTI Line detection */
.word TAMP_STAMP_IRQHandler /* Tamper and TimeStamps through the EXTI line */
.word RTC_WKUP_IRQHandler /* RTC Wakeup through the EXTI line */
.word FLASH_IRQHandler /* FLASH */
.word RCC_IRQHandler /* RCC */
.word EXTI0_IRQHandler /* EXTI Line0 */
.word EXTI1_IRQHandler /* EXTI Line1 */
.word EXTI2_IRQHandler /* EXTI Line2 */
.word EXTI3_IRQHandler /* EXTI Line3 */
.word EXTI4_IRQHandler /* EXTI Line4 */
.word DMA1_Stream0_IRQHandler /* DMA1 Stream 0 */
.word DMA1_Stream1_IRQHandler /* DMA1 Stream 1 */
.word DMA1_Stream2_IRQHandler /* DMA1 Stream 2 */
.word DMA1_Stream3_IRQHandler /* DMA1 Stream 3 */
.word DMA1_Stream4_IRQHandler /* DMA1 Stream 4 */
.word DMA1_Stream5_IRQHandler /* DMA1 Stream 5 */
.word DMA1_Stream6_IRQHandler /* DMA1 Stream 6 */
.word ADC_IRQHandler /* ADC1, ADC2 and ADC3s */
.word CAN1_TX_IRQHandler /* CAN1 TX */
.word CAN1_RX0_IRQHandler /* CAN1 RX0 */
.word CAN1_RX1_IRQHandler /* CAN1 RX1 */
.word CAN1_SCE_IRQHandler /* CAN1 SCE */
.word EXTI9_5_IRQHandler /* External Line[9:5]s */
.word TIM1_BRK_TIM9_IRQHandler /* TIM1 Break and TIM9 */
.word TIM1_UP_TIM10_IRQHandler /* TIM1 Update and TIM10 */
.word TIM1_TRG_COM_TIM11_IRQHandler /* TIM1 Trigger and Commutation and TIM11 */
.word TIM1_CC_IRQHandler /* TIM1 Capture Compare */
.word TIM2_IRQHandler /* TIM2 */
.word TIM3_IRQHandler /* TIM3 */
.word TIM4_IRQHandler /* TIM4 */
.word I2C1_EV_IRQHandler /* I2C1 Event */
.word I2C1_ER_IRQHandler /* I2C1 Error */
.word I2C2_EV_IRQHandler /* I2C2 Event */
.word I2C2_ER_IRQHandler /* I2C2 Error */
.word SPI1_IRQHandler /* SPI1 */
.word SPI2_IRQHandler /* SPI2 */
.word USART1_IRQHandler /* USART1 */
.word USART2_IRQHandler /* USART2 */
.word USART3_IRQHandler /* USART3 */
.word EXTI15_10_IRQHandler /* External Line[15:10]s */
.word RTC_Alarm_IRQHandler /* RTC Alarm (A and B) through EXTI Line */
.word OTG_FS_WKUP_IRQHandler /* USB OTG FS Wakeup through EXTI line */
.word TIM8_BRK_TIM12_IRQHandler /* TIM8 Break and TIM12 */
.word TIM8_UP_TIM13_IRQHandler /* TIM8 Update and TIM13 */
.word TIM8_TRG_COM_TIM14_IRQHandler /* TIM8 Trigger and Commutation and TIM14 */
.word TIM8_CC_IRQHandler /* TIM8 Capture Compare */
.word DMA1_Stream7_IRQHandler /* DMA1 Stream7 */
.word FSMC_IRQHandler /* FSMC */
.word SDIO_IRQHandler /* SDIO */
.word TIM5_IRQHandler /* TIM5 */
.word SPI3_IRQHandler /* SPI3 */
.word UART4_IRQHandler /* UART4 */
.word UART5_IRQHandler /* UART5 */
.word TIM6_DAC_IRQHandler /* TIM6 and DAC1&2 underrun errors */
.word TIM7_IRQHandler /* TIM7 */
.word DMA2_Stream0_IRQHandler /* DMA2 Stream 0 */
.word DMA2_Stream1_IRQHandler /* DMA2 Stream 1 */
.word DMA2_Stream2_IRQHandler /* DMA2 Stream 2 */
.word DMA2_Stream3_IRQHandler /* DMA2 Stream 3 */
.word DMA2_Stream4_IRQHandler /* DMA2 Stream 4 */
.word ETH_IRQHandler /* Ethernet */
.word ETH_WKUP_IRQHandler /* Ethernet Wakeup through EXTI line */
.word CAN2_TX_IRQHandler /* CAN2 TX */
.word CAN2_RX0_IRQHandler /* CAN2 RX0 */
.word CAN2_RX1_IRQHandler /* CAN2 RX1 */
.word CAN2_SCE_IRQHandler /* CAN2 SCE */
.word OTG_FS_IRQHandler /* USB OTG FS */
.word DMA2_Stream5_IRQHandler /* DMA2 Stream 5 */
.word DMA2_Stream6_IRQHandler /* DMA2 Stream 6 */
.word DMA2_Stream7_IRQHandler /* DMA2 Stream 7 */
.word USART6_IRQHandler /* USART6 */
.word I2C3_EV_IRQHandler /* I2C3 event */
.word I2C3_ER_IRQHandler /* I2C3 error */
.word OTG_HS_EP1_OUT_IRQHandler /* USB OTG HS End Point 1 Out */
.word OTG_HS_EP1_IN_IRQHandler /* USB OTG HS End Point 1 In */
.word OTG_HS_WKUP_IRQHandler /* USB OTG HS Wakeup through EXTI */
.word OTG_HS_IRQHandler /* USB OTG HS */
.word DCMI_IRQHandler /* DCMI */
.word 0 /* CRYP crypto */
.word HASH_RNG_IRQHandler /* Hash and Rng */
.word FPU_IRQHandler /* FPU */
.size g_pfnVectors, .-g_pfnVectors
/*******************************************************************************
*
* Provide weak aliases for each Exception handler to the Default_Handler.
* As they are weak aliases, any function with the same name will override
* this definition.
*
*******************************************************************************/
.weak NMI_Handler
.thumb_set NMI_Handler,Default_Handler
.weak HardFault_Handler
.thumb_set HardFault_Handler,Default_Handler
.weak MemManage_Handler
.thumb_set MemManage_Handler,Default_Handler
.weak BusFault_Handler
.thumb_set BusFault_Handler,Default_Handler
.weak UsageFault_Handler
.thumb_set UsageFault_Handler,Default_Handler
.weak SVC_Handler
.thumb_set SVC_Handler,Default_Handler
.weak DebugMon_Handler
.thumb_set DebugMon_Handler,Default_Handler
.weak PendSV_Handler
.thumb_set PendSV_Handler,Default_Handler
.weak SysTick_Handler
.thumb_set SysTick_Handler,Default_Handler
.weak WWDG_IRQHandler
.thumb_set WWDG_IRQHandler,Default_Handler
.weak PVD_IRQHandler
.thumb_set PVD_IRQHandler,Default_Handler
.weak TAMP_STAMP_IRQHandler
.thumb_set TAMP_STAMP_IRQHandler,Default_Handler
.weak RTC_WKUP_IRQHandler
.thumb_set RTC_WKUP_IRQHandler,Default_Handler
.weak FLASH_IRQHandler
.thumb_set FLASH_IRQHandler,Default_Handler
.weak RCC_IRQHandler
.thumb_set RCC_IRQHandler,Default_Handler
.weak EXTI0_IRQHandler
.thumb_set EXTI0_IRQHandler,Default_Handler
.weak EXTI1_IRQHandler
.thumb_set EXTI1_IRQHandler,Default_Handler
.weak EXTI2_IRQHandler
.thumb_set EXTI2_IRQHandler,Default_Handler
.weak EXTI3_IRQHandler
.thumb_set EXTI3_IRQHandler,Default_Handler
.weak EXTI4_IRQHandler
.thumb_set EXTI4_IRQHandler,Default_Handler
.weak DMA1_Stream0_IRQHandler
.thumb_set DMA1_Stream0_IRQHandler,Default_Handler
.weak DMA1_Stream1_IRQHandler
.thumb_set DMA1_Stream1_IRQHandler,Default_Handler
.weak DMA1_Stream2_IRQHandler
.thumb_set DMA1_Stream2_IRQHandler,Default_Handler
.weak DMA1_Stream3_IRQHandler
.thumb_set DMA1_Stream3_IRQHandler,Default_Handler
.weak DMA1_Stream4_IRQHandler
.thumb_set DMA1_Stream4_IRQHandler,Default_Handler
.weak DMA1_Stream5_IRQHandler
.thumb_set DMA1_Stream5_IRQHandler,Default_Handler
.weak DMA1_Stream6_IRQHandler
.thumb_set DMA1_Stream6_IRQHandler,Default_Handler
.weak ADC_IRQHandler
.thumb_set ADC_IRQHandler,Default_Handler
.weak CAN1_TX_IRQHandler
.thumb_set CAN1_TX_IRQHandler,Default_Handler
.weak CAN1_RX0_IRQHandler
.thumb_set CAN1_RX0_IRQHandler,Default_Handler
.weak CAN1_RX1_IRQHandler
.thumb_set CAN1_RX1_IRQHandler,Default_Handler
.weak CAN1_SCE_IRQHandler
.thumb_set CAN1_SCE_IRQHandler,Default_Handler
.weak EXTI9_5_IRQHandler
.thumb_set EXTI9_5_IRQHandler,Default_Handler
.weak TIM1_BRK_TIM9_IRQHandler
.thumb_set TIM1_BRK_TIM9_IRQHandler,Default_Handler
.weak TIM1_UP_TIM10_IRQHandler
.thumb_set TIM1_UP_TIM10_IRQHandler,Default_Handler
.weak TIM1_TRG_COM_TIM11_IRQHandler
.thumb_set TIM1_TRG_COM_TIM11_IRQHandler,Default_Handler
.weak TIM1_CC_IRQHandler
.thumb_set TIM1_CC_IRQHandler,Default_Handler
.weak TIM2_IRQHandler
.thumb_set TIM2_IRQHandler,Default_Handler
.weak TIM3_IRQHandler
.thumb_set TIM3_IRQHandler,Default_Handler
.weak TIM4_IRQHandler
.thumb_set TIM4_IRQHandler,Default_Handler
.weak I2C1_EV_IRQHandler
.thumb_set I2C1_EV_IRQHandler,Default_Handler
.weak I2C1_ER_IRQHandler
.thumb_set I2C1_ER_IRQHandler,Default_Handler
.weak I2C2_EV_IRQHandler
.thumb_set I2C2_EV_IRQHandler,Default_Handler
.weak I2C2_ER_IRQHandler
.thumb_set I2C2_ER_IRQHandler,Default_Handler
.weak SPI1_IRQHandler
.thumb_set SPI1_IRQHandler,Default_Handler
.weak SPI2_IRQHandler
.thumb_set SPI2_IRQHandler,Default_Handler
.weak USART1_IRQHandler
.thumb_set USART1_IRQHandler,Default_Handler
.weak USART2_IRQHandler
.thumb_set USART2_IRQHandler,Default_Handler
.weak USART3_IRQHandler
.thumb_set USART3_IRQHandler,Default_Handler
.weak EXTI15_10_IRQHandler
.thumb_set EXTI15_10_IRQHandler,Default_Handler
.weak RTC_Alarm_IRQHandler
.thumb_set RTC_Alarm_IRQHandler,Default_Handler
.weak OTG_FS_WKUP_IRQHandler
.thumb_set OTG_FS_WKUP_IRQHandler,Default_Handler
.weak TIM8_BRK_TIM12_IRQHandler
.thumb_set TIM8_BRK_TIM12_IRQHandler,Default_Handler
.weak TIM8_UP_TIM13_IRQHandler
.thumb_set TIM8_UP_TIM13_IRQHandler,Default_Handler
.weak TIM8_TRG_COM_TIM14_IRQHandler
.thumb_set TIM8_TRG_COM_TIM14_IRQHandler,Default_Handler
.weak TIM8_CC_IRQHandler
.thumb_set TIM8_CC_IRQHandler,Default_Handler
.weak DMA1_Stream7_IRQHandler
.thumb_set DMA1_Stream7_IRQHandler,Default_Handler
.weak FSMC_IRQHandler
.thumb_set FSMC_IRQHandler,Default_Handler
.weak SDIO_IRQHandler
.thumb_set SDIO_IRQHandler,Default_Handler
.weak TIM5_IRQHandler
.thumb_set TIM5_IRQHandler,Default_Handler
.weak SPI3_IRQHandler
.thumb_set SPI3_IRQHandler,Default_Handler
.weak UART4_IRQHandler
.thumb_set UART4_IRQHandler,Default_Handler
.weak UART5_IRQHandler
.thumb_set UART5_IRQHandler,Default_Handler
.weak TIM6_DAC_IRQHandler
.thumb_set TIM6_DAC_IRQHandler,Default_Handler
.weak TIM7_IRQHandler
.thumb_set TIM7_IRQHandler,Default_Handler
.weak DMA2_Stream0_IRQHandler
.thumb_set DMA2_Stream0_IRQHandler,Default_Handler
.weak DMA2_Stream1_IRQHandler
.thumb_set DMA2_Stream1_IRQHandler,Default_Handler
.weak DMA2_Stream2_IRQHandler
.thumb_set DMA2_Stream2_IRQHandler,Default_Handler
.weak DMA2_Stream3_IRQHandler
.thumb_set DMA2_Stream3_IRQHandler,Default_Handler
.weak DMA2_Stream4_IRQHandler
.thumb_set DMA2_Stream4_IRQHandler,Default_Handler
.weak ETH_IRQHandler
.thumb_set ETH_IRQHandler,Default_Handler
.weak ETH_WKUP_IRQHandler
.thumb_set ETH_WKUP_IRQHandler,Default_Handler
.weak CAN2_TX_IRQHandler
.thumb_set CAN2_TX_IRQHandler,Default_Handler
.weak CAN2_RX0_IRQHandler
.thumb_set CAN2_RX0_IRQHandler,Default_Handler
.weak CAN2_RX1_IRQHandler
.thumb_set CAN2_RX1_IRQHandler,Default_Handler
.weak CAN2_SCE_IRQHandler
.thumb_set CAN2_SCE_IRQHandler,Default_Handler
.weak OTG_FS_IRQHandler
.thumb_set OTG_FS_IRQHandler,Default_Handler
.weak DMA2_Stream5_IRQHandler
.thumb_set DMA2_Stream5_IRQHandler,Default_Handler
.weak DMA2_Stream6_IRQHandler
.thumb_set DMA2_Stream6_IRQHandler,Default_Handler
.weak DMA2_Stream7_IRQHandler
.thumb_set DMA2_Stream7_IRQHandler,Default_Handler
.weak USART6_IRQHandler
.thumb_set USART6_IRQHandler,Default_Handler
.weak I2C3_EV_IRQHandler
.thumb_set I2C3_EV_IRQHandler,Default_Handler
.weak I2C3_ER_IRQHandler
.thumb_set I2C3_ER_IRQHandler,Default_Handler
.weak OTG_HS_EP1_OUT_IRQHandler
.thumb_set OTG_HS_EP1_OUT_IRQHandler,Default_Handler
.weak OTG_HS_EP1_IN_IRQHandler
.thumb_set OTG_HS_EP1_IN_IRQHandler,Default_Handler
.weak OTG_HS_WKUP_IRQHandler
.thumb_set OTG_HS_WKUP_IRQHandler,Default_Handler
.weak OTG_HS_IRQHandler
.thumb_set OTG_HS_IRQHandler,Default_Handler
.weak DCMI_IRQHandler
.thumb_set DCMI_IRQHandler,Default_Handler
.weak HASH_RNG_IRQHandler
.thumb_set HASH_RNG_IRQHandler,Default_Handler
.weak FPU_IRQHandler
.thumb_set FPU_IRQHandler,Default_Handler