Compare commits
No commits in common. "develop" and "main" have entirely different histories.
|
@ -1,14 +1,14 @@
|
|||
[PreviousLibFiles]
|
||||
LibFiles=Drivers\STM32F4xx_HAL_Driver\Inc\stm32f4xx_ll_gpio.h;Drivers\STM32F4xx_HAL_Driver\Inc\stm32f4xx_ll_system.h;Drivers\STM32F4xx_HAL_Driver\Inc\stm32f4xx_ll_rcc.h;Drivers\STM32F4xx_HAL_Driver\Inc\stm32f4xx_ll_adc.h;Drivers\STM32F4xx_HAL_Driver\Inc\stm32f4xx_ll_dma.h;Drivers\STM32F4xx_HAL_Driver\Inc\stm32f4xx_ll_bus.h;Drivers\STM32F4xx_HAL_Driver\Inc\stm32f4xx_ll_cortex.h;Drivers\STM32F4xx_HAL_Driver\Inc\stm32f4xx_ll_utils.h;Drivers\STM32F4xx_HAL_Driver\Inc\stm32f4xx_ll_exti.h;Drivers\STM32F4xx_HAL_Driver\Inc\stm32f4xx_ll_pwr.h;Drivers\STM32F4xx_HAL_Driver\Inc\stm32f4xx_ll_dmamux.h;Drivers\STM32F4xx_HAL_Driver\Inc\stm32f4xx_ll_tim.h;Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_ll_gpio.c;Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_ll_adc.c;Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_ll_dma.c;Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_ll_rcc.c;Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_ll_utils.c;Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_ll_exti.c;Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_ll_tim.c;Drivers\STM32F4xx_HAL_Driver\Inc\stm32f4xx_ll_gpio.h;Drivers\STM32F4xx_HAL_Driver\Inc\stm32f4xx_ll_system.h;Drivers\STM32F4xx_HAL_Driver\Inc\stm32f4xx_ll_rcc.h;Drivers\STM32F4xx_HAL_Driver\Inc\stm32f4xx_ll_adc.h;Drivers\STM32F4xx_HAL_Driver\Inc\stm32f4xx_ll_dma.h;Drivers\STM32F4xx_HAL_Driver\Inc\stm32f4xx_ll_bus.h;Drivers\STM32F4xx_HAL_Driver\Inc\stm32f4xx_ll_cortex.h;Drivers\STM32F4xx_HAL_Driver\Inc\stm32f4xx_ll_utils.h;Drivers\STM32F4xx_HAL_Driver\Inc\stm32f4xx_ll_exti.h;Drivers\STM32F4xx_HAL_Driver\Inc\stm32f4xx_ll_pwr.h;Drivers\STM32F4xx_HAL_Driver\Inc\stm32f4xx_ll_dmamux.h;Drivers\STM32F4xx_HAL_Driver\Inc\stm32f4xx_ll_tim.h;Drivers\CMSIS\Device\ST\STM32F4xx\Include\stm32f407xx.h;Drivers\CMSIS\Device\ST\STM32F4xx\Include\stm32f4xx.h;Drivers\CMSIS\Device\ST\STM32F4xx\Include\system_stm32f4xx.h;Drivers\CMSIS\Device\ST\STM32F4xx\Source\Templates\system_stm32f4xx.c;Drivers\CMSIS\Include\cmsis_armcc.h;Drivers\CMSIS\Include\cmsis_armclang.h;Drivers\CMSIS\Include\cmsis_compiler.h;Drivers\CMSIS\Include\cmsis_gcc.h;Drivers\CMSIS\Include\cmsis_iccarm.h;Drivers\CMSIS\Include\cmsis_version.h;Drivers\CMSIS\Include\core_armv8mbl.h;Drivers\CMSIS\Include\core_armv8mml.h;Drivers\CMSIS\Include\core_cm0.h;Drivers\CMSIS\Include\core_cm0plus.h;Drivers\CMSIS\Include\core_cm1.h;Drivers\CMSIS\Include\core_cm23.h;Drivers\CMSIS\Include\core_cm3.h;Drivers\CMSIS\Include\core_cm33.h;Drivers\CMSIS\Include\core_cm4.h;Drivers\CMSIS\Include\core_cm7.h;Drivers\CMSIS\Include\core_sc000.h;Drivers\CMSIS\Include\core_sc300.h;Drivers\CMSIS\Include\mpu_armv7.h;Drivers\CMSIS\Include\mpu_armv8.h;Drivers\CMSIS\Include\tz_context.h;
|
||||
LibFiles=Drivers\STM32F4xx_HAL_Driver\Inc\stm32f4xx_ll_gpio.h;Drivers\STM32F4xx_HAL_Driver\Inc\stm32f4xx_ll_system.h;Drivers\STM32F4xx_HAL_Driver\Inc\stm32f4xx_ll_rcc.h;Drivers\STM32F4xx_HAL_Driver\Inc\stm32f4xx_ll_tim.h;Drivers\STM32F4xx_HAL_Driver\Inc\stm32f4xx_ll_dma.h;Drivers\STM32F4xx_HAL_Driver\Inc\stm32f4xx_ll_bus.h;Drivers\STM32F4xx_HAL_Driver\Inc\stm32f4xx_ll_cortex.h;Drivers\STM32F4xx_HAL_Driver\Inc\stm32f4xx_ll_utils.h;Drivers\STM32F4xx_HAL_Driver\Inc\stm32f4xx_ll_exti.h;Drivers\STM32F4xx_HAL_Driver\Inc\stm32f4xx_ll_pwr.h;Drivers\STM32F4xx_HAL_Driver\Inc\stm32f4xx_ll_dmamux.h;Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_ll_gpio.c;Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_ll_tim.c;Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_ll_dma.c;Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_ll_rcc.c;Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_ll_utils.c;Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_ll_exti.c;Drivers\STM32F4xx_HAL_Driver\Inc\stm32f4xx_ll_gpio.h;Drivers\STM32F4xx_HAL_Driver\Inc\stm32f4xx_ll_system.h;Drivers\STM32F4xx_HAL_Driver\Inc\stm32f4xx_ll_rcc.h;Drivers\STM32F4xx_HAL_Driver\Inc\stm32f4xx_ll_tim.h;Drivers\STM32F4xx_HAL_Driver\Inc\stm32f4xx_ll_dma.h;Drivers\STM32F4xx_HAL_Driver\Inc\stm32f4xx_ll_bus.h;Drivers\STM32F4xx_HAL_Driver\Inc\stm32f4xx_ll_cortex.h;Drivers\STM32F4xx_HAL_Driver\Inc\stm32f4xx_ll_utils.h;Drivers\STM32F4xx_HAL_Driver\Inc\stm32f4xx_ll_exti.h;Drivers\STM32F4xx_HAL_Driver\Inc\stm32f4xx_ll_pwr.h;Drivers\STM32F4xx_HAL_Driver\Inc\stm32f4xx_ll_dmamux.h;Drivers\CMSIS\Device\ST\STM32F4xx\Include\stm32f407xx.h;Drivers\CMSIS\Device\ST\STM32F4xx\Include\stm32f4xx.h;Drivers\CMSIS\Device\ST\STM32F4xx\Include\system_stm32f4xx.h;Drivers\CMSIS\Device\ST\STM32F4xx\Source\Templates\system_stm32f4xx.c;Drivers\CMSIS\Include\cmsis_armcc.h;Drivers\CMSIS\Include\cmsis_armclang.h;Drivers\CMSIS\Include\cmsis_compiler.h;Drivers\CMSIS\Include\cmsis_gcc.h;Drivers\CMSIS\Include\cmsis_iccarm.h;Drivers\CMSIS\Include\cmsis_version.h;Drivers\CMSIS\Include\core_armv8mbl.h;Drivers\CMSIS\Include\core_armv8mml.h;Drivers\CMSIS\Include\core_cm0.h;Drivers\CMSIS\Include\core_cm0plus.h;Drivers\CMSIS\Include\core_cm1.h;Drivers\CMSIS\Include\core_cm23.h;Drivers\CMSIS\Include\core_cm3.h;Drivers\CMSIS\Include\core_cm33.h;Drivers\CMSIS\Include\core_cm4.h;Drivers\CMSIS\Include\core_cm7.h;Drivers\CMSIS\Include\core_sc000.h;Drivers\CMSIS\Include\core_sc300.h;Drivers\CMSIS\Include\mpu_armv7.h;Drivers\CMSIS\Include\mpu_armv8.h;Drivers\CMSIS\Include\tz_context.h;
|
||||
|
||||
[PreviousUsedKeilFiles]
|
||||
SourceFiles=..\Src\main.c;..\Src\gpio.c;..\Src\adc.c;..\Src\dma.c;..\Src\tim.c;..\Src\stm32f4xx_it.c;..\Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_ll_gpio.c;..\Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_ll_adc.c;..\Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_ll_dma.c;..\Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_ll_rcc.c;..\Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_ll_utils.c;..\Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_ll_exti.c;..\Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_ll_tim.c;..\Drivers\CMSIS\Device\ST\STM32F4xx\Source\Templates\system_stm32f4xx.c;..\\Src\system_stm32f4xx.c;..\Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_ll_gpio.c;..\Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_ll_adc.c;..\Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_ll_dma.c;..\Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_ll_rcc.c;..\Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_ll_utils.c;..\Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_ll_exti.c;..\Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_ll_tim.c;..\Drivers\CMSIS\Device\ST\STM32F4xx\Source\Templates\system_stm32f4xx.c;..\\Src\system_stm32f4xx.c;;;
|
||||
SourceFiles=..\Src\main.c;..\Src\gpio.c;..\Src\tim.c;..\Src\stm32f4xx_it.c;..\Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_ll_gpio.c;..\Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_ll_tim.c;..\Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_ll_dma.c;..\Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_ll_rcc.c;..\Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_ll_utils.c;..\Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_ll_exti.c;..\Drivers\CMSIS\Device\ST\STM32F4xx\Source\Templates\system_stm32f4xx.c;..\\Src\system_stm32f4xx.c;..\Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_ll_gpio.c;..\Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_ll_tim.c;..\Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_ll_dma.c;..\Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_ll_rcc.c;..\Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_ll_utils.c;..\Drivers\STM32F4xx_HAL_Driver\Src\stm32f4xx_ll_exti.c;..\Drivers\CMSIS\Device\ST\STM32F4xx\Source\Templates\system_stm32f4xx.c;..\\Src\system_stm32f4xx.c;;;
|
||||
HeaderPath=..\Drivers\STM32F4xx_HAL_Driver\Inc;..\Drivers\CMSIS\Device\ST\STM32F4xx\Include;..\Drivers\CMSIS\Include;..\Inc;
|
||||
CDefines=USE_FULL_LL_DRIVER;HSE_VALUE:8000000;HSE_STARTUP_TIMEOUT:100;LSE_STARTUP_TIMEOUT:5000;LSE_VALUE:32768;EXTERNAL_CLOCK_VALUE:12288000;HSI_VALUE:16000000;LSI_VALUE:32000;VDD_VALUE:3300;PREFETCH_ENABLE:1;INSTRUCTION_CACHE_ENABLE:1;DATA_CACHE_ENABLE:1;STM32F407xx;USE_FULL_LL_DRIVER;HSE_VALUE:8000000;HSE_STARTUP_TIMEOUT:100;LSE_STARTUP_TIMEOUT:5000;LSE_VALUE:32768;EXTERNAL_CLOCK_VALUE:12288000;HSI_VALUE:16000000;LSI_VALUE:32000;VDD_VALUE:3300;PREFETCH_ENABLE:1;INSTRUCTION_CACHE_ENABLE:1;DATA_CACHE_ENABLE:1;
|
||||
|
||||
[PreviousGenFiles]
|
||||
HeaderPath=..\Inc
|
||||
HeaderFiles=gpio.h;adc.h;dma.h;tim.h;stm32f4xx_it.h;stm32_assert.h;main.h;
|
||||
HeaderFiles=gpio.h;tim.h;stm32f4xx_it.h;stm32_assert.h;main.h;
|
||||
SourcePath=..\Src
|
||||
SourceFiles=gpio.c;adc.c;dma.c;tim.c;stm32f4xx_it.c;main.c;
|
||||
SourceFiles=gpio.c;tim.c;stm32f4xx_it.c;main.c;
|
||||
|
||||
|
|
|
@ -1,19 +1,18 @@
|
|||
{
|
||||
"configurations": [
|
||||
{
|
||||
"name": "windows-gcc-x64",
|
||||
"includePath": [
|
||||
"${workspaceFolder}/**"
|
||||
],
|
||||
"compilerPath": "C:/TDM-GCC-64/bin/gcc.exe",
|
||||
"cStandard": "${default}",
|
||||
"cppStandard": "${default}",
|
||||
"intelliSenseMode": "windows-gcc-x64",
|
||||
"compilerArgs": [
|
||||
""
|
||||
],
|
||||
"configurationProvider": "cl.eide"
|
||||
}
|
||||
],
|
||||
"version": 4
|
||||
"configurations": [
|
||||
{
|
||||
"name": "windows-gcc-x64",
|
||||
"includePath": [
|
||||
"${workspaceFolder}/**"
|
||||
],
|
||||
"compilerPath": "C:/TDM-GCC-64/bin/gcc.exe",
|
||||
"cStandard": "${default}",
|
||||
"cppStandard": "${default}",
|
||||
"intelliSenseMode": "windows-gcc-x64",
|
||||
"compilerArgs": [
|
||||
""
|
||||
]
|
||||
}
|
||||
],
|
||||
"version": 4
|
||||
}
|
|
@ -1,8 +1,6 @@
|
|||
{
|
||||
"version": "0.2.0",
|
||||
"configurations": [
|
||||
|
||||
|
||||
{
|
||||
"name": "C/C++ Runner: Debug Session",
|
||||
"type": "cppdbg",
|
||||
|
|
File diff suppressed because it is too large
Load Diff
|
@ -1,922 +0,0 @@
|
|||
/**
|
||||
******************************************************************************
|
||||
* @file stm32f4xx_ll_adc.c
|
||||
* @author MCD Application Team
|
||||
* @brief ADC LL module driver
|
||||
******************************************************************************
|
||||
* @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.
|
||||
*
|
||||
******************************************************************************
|
||||
*/
|
||||
#if defined(USE_FULL_LL_DRIVER)
|
||||
|
||||
/* Includes ------------------------------------------------------------------*/
|
||||
#include "stm32f4xx_ll_adc.h"
|
||||
#include "stm32f4xx_ll_bus.h"
|
||||
|
||||
#ifdef USE_FULL_ASSERT
|
||||
#include "stm32_assert.h"
|
||||
#else
|
||||
#define assert_param(expr) ((void)0U)
|
||||
#endif
|
||||
|
||||
/** @addtogroup STM32F4xx_LL_Driver
|
||||
* @{
|
||||
*/
|
||||
|
||||
#if defined (ADC1) || defined (ADC2) || defined (ADC3)
|
||||
|
||||
/** @addtogroup ADC_LL ADC
|
||||
* @{
|
||||
*/
|
||||
|
||||
/* Private types -------------------------------------------------------------*/
|
||||
/* Private variables ---------------------------------------------------------*/
|
||||
/* Private constants ---------------------------------------------------------*/
|
||||
/* Private macros ------------------------------------------------------------*/
|
||||
|
||||
/** @addtogroup ADC_LL_Private_Macros
|
||||
* @{
|
||||
*/
|
||||
|
||||
/* Check of parameters for configuration of ADC hierarchical scope: */
|
||||
/* common to several ADC instances. */
|
||||
#define IS_LL_ADC_COMMON_CLOCK(__CLOCK__) \
|
||||
( ((__CLOCK__) == LL_ADC_CLOCK_SYNC_PCLK_DIV2) \
|
||||
|| ((__CLOCK__) == LL_ADC_CLOCK_SYNC_PCLK_DIV4) \
|
||||
|| ((__CLOCK__) == LL_ADC_CLOCK_SYNC_PCLK_DIV6) \
|
||||
|| ((__CLOCK__) == LL_ADC_CLOCK_SYNC_PCLK_DIV8) \
|
||||
)
|
||||
|
||||
/* Check of parameters for configuration of ADC hierarchical scope: */
|
||||
/* ADC instance. */
|
||||
#define IS_LL_ADC_RESOLUTION(__RESOLUTION__) \
|
||||
( ((__RESOLUTION__) == LL_ADC_RESOLUTION_12B) \
|
||||
|| ((__RESOLUTION__) == LL_ADC_RESOLUTION_10B) \
|
||||
|| ((__RESOLUTION__) == LL_ADC_RESOLUTION_8B) \
|
||||
|| ((__RESOLUTION__) == LL_ADC_RESOLUTION_6B) \
|
||||
)
|
||||
|
||||
#define IS_LL_ADC_DATA_ALIGN(__DATA_ALIGN__) \
|
||||
( ((__DATA_ALIGN__) == LL_ADC_DATA_ALIGN_RIGHT) \
|
||||
|| ((__DATA_ALIGN__) == LL_ADC_DATA_ALIGN_LEFT) \
|
||||
)
|
||||
|
||||
#define IS_LL_ADC_SCAN_SELECTION(__SCAN_SELECTION__) \
|
||||
( ((__SCAN_SELECTION__) == LL_ADC_SEQ_SCAN_DISABLE) \
|
||||
|| ((__SCAN_SELECTION__) == LL_ADC_SEQ_SCAN_ENABLE) \
|
||||
)
|
||||
|
||||
#define IS_LL_ADC_SEQ_SCAN_MODE(__SEQ_SCAN_MODE__) \
|
||||
( ((__SCAN_MODE__) == LL_ADC_SEQ_SCAN_DISABLE) \
|
||||
|| ((__SCAN_MODE__) == LL_ADC_SEQ_SCAN_ENABLE) \
|
||||
)
|
||||
|
||||
/* Check of parameters for configuration of ADC hierarchical scope: */
|
||||
/* ADC group regular */
|
||||
#define IS_LL_ADC_REG_TRIG_SOURCE(__REG_TRIG_SOURCE__) \
|
||||
( ((__REG_TRIG_SOURCE__) == LL_ADC_REG_TRIG_SOFTWARE) \
|
||||
|| ((__REG_TRIG_SOURCE__) == LL_ADC_REG_TRIG_EXT_TIM1_CH1) \
|
||||
|| ((__REG_TRIG_SOURCE__) == LL_ADC_REG_TRIG_EXT_TIM1_CH2) \
|
||||
|| ((__REG_TRIG_SOURCE__) == LL_ADC_REG_TRIG_EXT_TIM1_CH3) \
|
||||
|| ((__REG_TRIG_SOURCE__) == LL_ADC_REG_TRIG_EXT_TIM2_CH2) \
|
||||
|| ((__REG_TRIG_SOURCE__) == LL_ADC_REG_TRIG_EXT_TIM2_CH3) \
|
||||
|| ((__REG_TRIG_SOURCE__) == LL_ADC_REG_TRIG_EXT_TIM2_CH4) \
|
||||
|| ((__REG_TRIG_SOURCE__) == LL_ADC_REG_TRIG_EXT_TIM2_TRGO) \
|
||||
|| ((__REG_TRIG_SOURCE__) == LL_ADC_REG_TRIG_EXT_TIM3_CH1) \
|
||||
|| ((__REG_TRIG_SOURCE__) == LL_ADC_REG_TRIG_EXT_TIM3_TRGO) \
|
||||
|| ((__REG_TRIG_SOURCE__) == LL_ADC_REG_TRIG_EXT_TIM4_CH4) \
|
||||
|| ((__REG_TRIG_SOURCE__) == LL_ADC_REG_TRIG_EXT_TIM5_CH1) \
|
||||
|| ((__REG_TRIG_SOURCE__) == LL_ADC_REG_TRIG_EXT_TIM5_CH2) \
|
||||
|| ((__REG_TRIG_SOURCE__) == LL_ADC_REG_TRIG_EXT_TIM5_CH3) \
|
||||
|| ((__REG_TRIG_SOURCE__) == LL_ADC_REG_TRIG_EXT_TIM8_CH1) \
|
||||
|| ((__REG_TRIG_SOURCE__) == LL_ADC_REG_TRIG_EXT_TIM8_TRGO) \
|
||||
|| ((__REG_TRIG_SOURCE__) == LL_ADC_REG_TRIG_EXT_EXTI_LINE11) \
|
||||
)
|
||||
#define IS_LL_ADC_REG_CONTINUOUS_MODE(__REG_CONTINUOUS_MODE__) \
|
||||
( ((__REG_CONTINUOUS_MODE__) == LL_ADC_REG_CONV_SINGLE) \
|
||||
|| ((__REG_CONTINUOUS_MODE__) == LL_ADC_REG_CONV_CONTINUOUS) \
|
||||
)
|
||||
|
||||
#define IS_LL_ADC_REG_DMA_TRANSFER(__REG_DMA_TRANSFER__) \
|
||||
( ((__REG_DMA_TRANSFER__) == LL_ADC_REG_DMA_TRANSFER_NONE) \
|
||||
|| ((__REG_DMA_TRANSFER__) == LL_ADC_REG_DMA_TRANSFER_LIMITED) \
|
||||
|| ((__REG_DMA_TRANSFER__) == LL_ADC_REG_DMA_TRANSFER_UNLIMITED) \
|
||||
)
|
||||
|
||||
#define IS_LL_ADC_REG_FLAG_EOC_SELECTION(__REG_FLAG_EOC_SELECTION__) \
|
||||
( ((__REG_FLAG_EOC_SELECTION__) == LL_ADC_REG_FLAG_EOC_SEQUENCE_CONV) \
|
||||
|| ((__REG_FLAG_EOC_SELECTION__) == LL_ADC_REG_FLAG_EOC_UNITARY_CONV) \
|
||||
)
|
||||
|
||||
#define IS_LL_ADC_REG_SEQ_SCAN_LENGTH(__REG_SEQ_SCAN_LENGTH__) \
|
||||
( ((__REG_SEQ_SCAN_LENGTH__) == LL_ADC_REG_SEQ_SCAN_DISABLE) \
|
||||
|| ((__REG_SEQ_SCAN_LENGTH__) == LL_ADC_REG_SEQ_SCAN_ENABLE_2RANKS) \
|
||||
|| ((__REG_SEQ_SCAN_LENGTH__) == LL_ADC_REG_SEQ_SCAN_ENABLE_3RANKS) \
|
||||
|| ((__REG_SEQ_SCAN_LENGTH__) == LL_ADC_REG_SEQ_SCAN_ENABLE_4RANKS) \
|
||||
|| ((__REG_SEQ_SCAN_LENGTH__) == LL_ADC_REG_SEQ_SCAN_ENABLE_5RANKS) \
|
||||
|| ((__REG_SEQ_SCAN_LENGTH__) == LL_ADC_REG_SEQ_SCAN_ENABLE_6RANKS) \
|
||||
|| ((__REG_SEQ_SCAN_LENGTH__) == LL_ADC_REG_SEQ_SCAN_ENABLE_7RANKS) \
|
||||
|| ((__REG_SEQ_SCAN_LENGTH__) == LL_ADC_REG_SEQ_SCAN_ENABLE_8RANKS) \
|
||||
|| ((__REG_SEQ_SCAN_LENGTH__) == LL_ADC_REG_SEQ_SCAN_ENABLE_9RANKS) \
|
||||
|| ((__REG_SEQ_SCAN_LENGTH__) == LL_ADC_REG_SEQ_SCAN_ENABLE_10RANKS) \
|
||||
|| ((__REG_SEQ_SCAN_LENGTH__) == LL_ADC_REG_SEQ_SCAN_ENABLE_11RANKS) \
|
||||
|| ((__REG_SEQ_SCAN_LENGTH__) == LL_ADC_REG_SEQ_SCAN_ENABLE_12RANKS) \
|
||||
|| ((__REG_SEQ_SCAN_LENGTH__) == LL_ADC_REG_SEQ_SCAN_ENABLE_13RANKS) \
|
||||
|| ((__REG_SEQ_SCAN_LENGTH__) == LL_ADC_REG_SEQ_SCAN_ENABLE_14RANKS) \
|
||||
|| ((__REG_SEQ_SCAN_LENGTH__) == LL_ADC_REG_SEQ_SCAN_ENABLE_15RANKS) \
|
||||
|| ((__REG_SEQ_SCAN_LENGTH__) == LL_ADC_REG_SEQ_SCAN_ENABLE_16RANKS) \
|
||||
)
|
||||
|
||||
#define IS_LL_ADC_REG_SEQ_SCAN_DISCONT_MODE(__REG_SEQ_DISCONT_MODE__) \
|
||||
( ((__REG_SEQ_DISCONT_MODE__) == LL_ADC_REG_SEQ_DISCONT_DISABLE) \
|
||||
|| ((__REG_SEQ_DISCONT_MODE__) == LL_ADC_REG_SEQ_DISCONT_1RANK) \
|
||||
|| ((__REG_SEQ_DISCONT_MODE__) == LL_ADC_REG_SEQ_DISCONT_2RANKS) \
|
||||
|| ((__REG_SEQ_DISCONT_MODE__) == LL_ADC_REG_SEQ_DISCONT_3RANKS) \
|
||||
|| ((__REG_SEQ_DISCONT_MODE__) == LL_ADC_REG_SEQ_DISCONT_4RANKS) \
|
||||
|| ((__REG_SEQ_DISCONT_MODE__) == LL_ADC_REG_SEQ_DISCONT_5RANKS) \
|
||||
|| ((__REG_SEQ_DISCONT_MODE__) == LL_ADC_REG_SEQ_DISCONT_6RANKS) \
|
||||
|| ((__REG_SEQ_DISCONT_MODE__) == LL_ADC_REG_SEQ_DISCONT_7RANKS) \
|
||||
|| ((__REG_SEQ_DISCONT_MODE__) == LL_ADC_REG_SEQ_DISCONT_8RANKS) \
|
||||
)
|
||||
|
||||
/* Check of parameters for configuration of ADC hierarchical scope: */
|
||||
/* ADC group injected */
|
||||
#define IS_LL_ADC_INJ_TRIG_SOURCE(__INJ_TRIG_SOURCE__) \
|
||||
( ((__INJ_TRIG_SOURCE__) == LL_ADC_INJ_TRIG_SOFTWARE) \
|
||||
|| ((__INJ_TRIG_SOURCE__) == LL_ADC_INJ_TRIG_EXT_TIM1_CH4) \
|
||||
|| ((__INJ_TRIG_SOURCE__) == LL_ADC_INJ_TRIG_EXT_TIM1_TRGO) \
|
||||
|| ((__INJ_TRIG_SOURCE__) == LL_ADC_INJ_TRIG_EXT_TIM2_CH1) \
|
||||
|| ((__INJ_TRIG_SOURCE__) == LL_ADC_INJ_TRIG_EXT_TIM2_TRGO) \
|
||||
|| ((__INJ_TRIG_SOURCE__) == LL_ADC_INJ_TRIG_EXT_TIM3_CH2) \
|
||||
|| ((__INJ_TRIG_SOURCE__) == LL_ADC_INJ_TRIG_EXT_TIM3_CH4) \
|
||||
|| ((__INJ_TRIG_SOURCE__) == LL_ADC_INJ_TRIG_EXT_TIM4_CH1) \
|
||||
|| ((__INJ_TRIG_SOURCE__) == LL_ADC_INJ_TRIG_EXT_TIM4_CH2) \
|
||||
|| ((__INJ_TRIG_SOURCE__) == LL_ADC_INJ_TRIG_EXT_TIM4_CH3) \
|
||||
|| ((__INJ_TRIG_SOURCE__) == LL_ADC_INJ_TRIG_EXT_TIM4_TRGO) \
|
||||
|| ((__INJ_TRIG_SOURCE__) == LL_ADC_INJ_TRIG_EXT_TIM5_CH4) \
|
||||
|| ((__INJ_TRIG_SOURCE__) == LL_ADC_INJ_TRIG_EXT_TIM5_TRGO) \
|
||||
|| ((__INJ_TRIG_SOURCE__) == LL_ADC_INJ_TRIG_EXT_TIM8_CH2) \
|
||||
|| ((__INJ_TRIG_SOURCE__) == LL_ADC_INJ_TRIG_EXT_TIM8_CH3) \
|
||||
|| ((__INJ_TRIG_SOURCE__) == LL_ADC_INJ_TRIG_EXT_TIM8_CH4) \
|
||||
|| ((__INJ_TRIG_SOURCE__) == LL_ADC_INJ_TRIG_EXT_EXTI_LINE15) \
|
||||
)
|
||||
|
||||
#define IS_LL_ADC_INJ_TRIG_EXT_EDGE(__INJ_TRIG_EXT_EDGE__) \
|
||||
( ((__INJ_TRIG_EXT_EDGE__) == LL_ADC_INJ_TRIG_EXT_RISING) \
|
||||
|| ((__INJ_TRIG_EXT_EDGE__) == LL_ADC_INJ_TRIG_EXT_FALLING) \
|
||||
|| ((__INJ_TRIG_EXT_EDGE__) == LL_ADC_INJ_TRIG_EXT_RISINGFALLING) \
|
||||
)
|
||||
|
||||
#define IS_LL_ADC_INJ_TRIG_AUTO(__INJ_TRIG_AUTO__) \
|
||||
( ((__INJ_TRIG_AUTO__) == LL_ADC_INJ_TRIG_INDEPENDENT) \
|
||||
|| ((__INJ_TRIG_AUTO__) == LL_ADC_INJ_TRIG_FROM_GRP_REGULAR) \
|
||||
)
|
||||
|
||||
#define IS_LL_ADC_INJ_SEQ_SCAN_LENGTH(__INJ_SEQ_SCAN_LENGTH__) \
|
||||
( ((__INJ_SEQ_SCAN_LENGTH__) == LL_ADC_INJ_SEQ_SCAN_DISABLE) \
|
||||
|| ((__INJ_SEQ_SCAN_LENGTH__) == LL_ADC_INJ_SEQ_SCAN_ENABLE_2RANKS) \
|
||||
|| ((__INJ_SEQ_SCAN_LENGTH__) == LL_ADC_INJ_SEQ_SCAN_ENABLE_3RANKS) \
|
||||
|| ((__INJ_SEQ_SCAN_LENGTH__) == LL_ADC_INJ_SEQ_SCAN_ENABLE_4RANKS) \
|
||||
)
|
||||
|
||||
#define IS_LL_ADC_INJ_SEQ_SCAN_DISCONT_MODE(__INJ_SEQ_DISCONT_MODE__) \
|
||||
( ((__INJ_SEQ_DISCONT_MODE__) == LL_ADC_INJ_SEQ_DISCONT_DISABLE) \
|
||||
|| ((__INJ_SEQ_DISCONT_MODE__) == LL_ADC_INJ_SEQ_DISCONT_1RANK) \
|
||||
)
|
||||
|
||||
#if defined(ADC_MULTIMODE_SUPPORT)
|
||||
/* Check of parameters for configuration of ADC hierarchical scope: */
|
||||
/* multimode. */
|
||||
#if defined(ADC3)
|
||||
#define IS_LL_ADC_MULTI_MODE(__MULTI_MODE__) \
|
||||
( ((__MULTI_MODE__) == LL_ADC_MULTI_INDEPENDENT) \
|
||||
|| ((__MULTI_MODE__) == LL_ADC_MULTI_DUAL_REG_SIMULT) \
|
||||
|| ((__MULTI_MODE__) == LL_ADC_MULTI_DUAL_REG_INTERL) \
|
||||
|| ((__MULTI_MODE__) == LL_ADC_MULTI_DUAL_INJ_SIMULT) \
|
||||
|| ((__MULTI_MODE__) == LL_ADC_MULTI_DUAL_INJ_ALTERN) \
|
||||
|| ((__MULTI_MODE__) == LL_ADC_MULTI_DUAL_REG_SIM_INJ_SIM) \
|
||||
|| ((__MULTI_MODE__) == LL_ADC_MULTI_DUAL_REG_SIM_INJ_ALT) \
|
||||
|| ((__MULTI_MODE__) == LL_ADC_MULTI_DUAL_REG_INT_INJ_SIM) \
|
||||
|| ((__MULTI_MODE__) == LL_ADC_MULTI_TRIPLE_REG_SIM_INJ_SIM) \
|
||||
|| ((__MULTI_MODE__) == LL_ADC_MULTI_TRIPLE_REG_SIM_INJ_ALT) \
|
||||
|| ((__MULTI_MODE__) == LL_ADC_MULTI_TRIPLE_INJ_SIMULT) \
|
||||
|| ((__MULTI_MODE__) == LL_ADC_MULTI_TRIPLE_REG_SIMULT) \
|
||||
|| ((__MULTI_MODE__) == LL_ADC_MULTI_TRIPLE_REG_INTERL) \
|
||||
|| ((__MULTI_MODE__) == LL_ADC_MULTI_TRIPLE_INJ_ALTERN) \
|
||||
)
|
||||
#else
|
||||
#define IS_LL_ADC_MULTI_MODE(__MULTI_MODE__) \
|
||||
( ((__MULTI_MODE__) == LL_ADC_MULTI_INDEPENDENT) \
|
||||
|| ((__MULTI_MODE__) == LL_ADC_MULTI_DUAL_REG_SIMULT) \
|
||||
|| ((__MULTI_MODE__) == LL_ADC_MULTI_DUAL_REG_INTERL) \
|
||||
|| ((__MULTI_MODE__) == LL_ADC_MULTI_DUAL_INJ_SIMULT) \
|
||||
|| ((__MULTI_MODE__) == LL_ADC_MULTI_DUAL_INJ_ALTERN) \
|
||||
|| ((__MULTI_MODE__) == LL_ADC_MULTI_DUAL_REG_SIM_INJ_SIM) \
|
||||
|| ((__MULTI_MODE__) == LL_ADC_MULTI_DUAL_REG_SIM_INJ_ALT) \
|
||||
|| ((__MULTI_MODE__) == LL_ADC_MULTI_DUAL_REG_INT_INJ_SIM) \
|
||||
)
|
||||
#endif
|
||||
|
||||
#define IS_LL_ADC_MULTI_DMA_TRANSFER(__MULTI_DMA_TRANSFER__) \
|
||||
( ((__MULTI_DMA_TRANSFER__) == LL_ADC_MULTI_REG_DMA_EACH_ADC) \
|
||||
|| ((__MULTI_DMA_TRANSFER__) == LL_ADC_MULTI_REG_DMA_LIMIT_1) \
|
||||
|| ((__MULTI_DMA_TRANSFER__) == LL_ADC_MULTI_REG_DMA_LIMIT_2) \
|
||||
|| ((__MULTI_DMA_TRANSFER__) == LL_ADC_MULTI_REG_DMA_LIMIT_3) \
|
||||
|| ((__MULTI_DMA_TRANSFER__) == LL_ADC_MULTI_REG_DMA_UNLMT_1) \
|
||||
|| ((__MULTI_DMA_TRANSFER__) == LL_ADC_MULTI_REG_DMA_UNLMT_2) \
|
||||
|| ((__MULTI_DMA_TRANSFER__) == LL_ADC_MULTI_REG_DMA_UNLMT_3) \
|
||||
)
|
||||
|
||||
#define IS_LL_ADC_MULTI_TWOSMP_DELAY(__MULTI_TWOSMP_DELAY__) \
|
||||
( ((__MULTI_TWOSMP_DELAY__) == LL_ADC_MULTI_TWOSMP_DELAY_5CYCLES) \
|
||||
|| ((__MULTI_TWOSMP_DELAY__) == LL_ADC_MULTI_TWOSMP_DELAY_6CYCLES) \
|
||||
|| ((__MULTI_TWOSMP_DELAY__) == LL_ADC_MULTI_TWOSMP_DELAY_7CYCLES) \
|
||||
|| ((__MULTI_TWOSMP_DELAY__) == LL_ADC_MULTI_TWOSMP_DELAY_8CYCLES) \
|
||||
|| ((__MULTI_TWOSMP_DELAY__) == LL_ADC_MULTI_TWOSMP_DELAY_9CYCLES) \
|
||||
|| ((__MULTI_TWOSMP_DELAY__) == LL_ADC_MULTI_TWOSMP_DELAY_10CYCLES) \
|
||||
|| ((__MULTI_TWOSMP_DELAY__) == LL_ADC_MULTI_TWOSMP_DELAY_11CYCLES) \
|
||||
|| ((__MULTI_TWOSMP_DELAY__) == LL_ADC_MULTI_TWOSMP_DELAY_12CYCLES) \
|
||||
|| ((__MULTI_TWOSMP_DELAY__) == LL_ADC_MULTI_TWOSMP_DELAY_13CYCLES) \
|
||||
|| ((__MULTI_TWOSMP_DELAY__) == LL_ADC_MULTI_TWOSMP_DELAY_14CYCLES) \
|
||||
|| ((__MULTI_TWOSMP_DELAY__) == LL_ADC_MULTI_TWOSMP_DELAY_15CYCLES) \
|
||||
|| ((__MULTI_TWOSMP_DELAY__) == LL_ADC_MULTI_TWOSMP_DELAY_16CYCLES) \
|
||||
|| ((__MULTI_TWOSMP_DELAY__) == LL_ADC_MULTI_TWOSMP_DELAY_17CYCLES) \
|
||||
|| ((__MULTI_TWOSMP_DELAY__) == LL_ADC_MULTI_TWOSMP_DELAY_18CYCLES) \
|
||||
|| ((__MULTI_TWOSMP_DELAY__) == LL_ADC_MULTI_TWOSMP_DELAY_19CYCLES) \
|
||||
|| ((__MULTI_TWOSMP_DELAY__) == LL_ADC_MULTI_TWOSMP_DELAY_20CYCLES) \
|
||||
)
|
||||
|
||||
#define IS_LL_ADC_MULTI_MASTER_SLAVE(__MULTI_MASTER_SLAVE__) \
|
||||
( ((__MULTI_MASTER_SLAVE__) == LL_ADC_MULTI_MASTER) \
|
||||
|| ((__MULTI_MASTER_SLAVE__) == LL_ADC_MULTI_SLAVE) \
|
||||
|| ((__MULTI_MASTER_SLAVE__) == LL_ADC_MULTI_MASTER_SLAVE) \
|
||||
)
|
||||
|
||||
#endif /* ADC_MULTIMODE_SUPPORT */
|
||||
/**
|
||||
* @}
|
||||
*/
|
||||
|
||||
|
||||
/* Private function prototypes -----------------------------------------------*/
|
||||
|
||||
/* Exported functions --------------------------------------------------------*/
|
||||
/** @addtogroup ADC_LL_Exported_Functions
|
||||
* @{
|
||||
*/
|
||||
|
||||
/** @addtogroup ADC_LL_EF_Init
|
||||
* @{
|
||||
*/
|
||||
|
||||
/**
|
||||
* @brief De-initialize registers of all ADC instances belonging to
|
||||
* the same ADC common instance to their default reset values.
|
||||
* @param ADCxy_COMMON ADC common instance
|
||||
* (can be set directly from CMSIS definition or by using helper macro @ref __LL_ADC_COMMON_INSTANCE() )
|
||||
* @retval An ErrorStatus enumeration value:
|
||||
* - SUCCESS: ADC common registers are de-initialized
|
||||
* - ERROR: not applicable
|
||||
*/
|
||||
ErrorStatus LL_ADC_CommonDeInit(ADC_Common_TypeDef *ADCxy_COMMON)
|
||||
{
|
||||
/* Check the parameters */
|
||||
assert_param(IS_ADC_COMMON_INSTANCE(ADCxy_COMMON));
|
||||
|
||||
|
||||
/* Force reset of ADC clock (core clock) */
|
||||
LL_APB2_GRP1_ForceReset(LL_APB2_GRP1_PERIPH_ADC);
|
||||
|
||||
/* Release reset of ADC clock (core clock) */
|
||||
LL_APB2_GRP1_ReleaseReset(LL_APB2_GRP1_PERIPH_ADC);
|
||||
|
||||
return SUCCESS;
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Initialize some features of ADC common parameters
|
||||
* (all ADC instances belonging to the same ADC common instance)
|
||||
* and multimode (for devices with several ADC instances available).
|
||||
* @note The setting of ADC common parameters is conditioned to
|
||||
* ADC instances state:
|
||||
* All ADC instances belonging to the same ADC common instance
|
||||
* must be disabled.
|
||||
* @param ADCxy_COMMON ADC common instance
|
||||
* (can be set directly from CMSIS definition or by using helper macro @ref __LL_ADC_COMMON_INSTANCE() )
|
||||
* @param ADC_CommonInitStruct Pointer to a @ref LL_ADC_CommonInitTypeDef structure
|
||||
* @retval An ErrorStatus enumeration value:
|
||||
* - SUCCESS: ADC common registers are initialized
|
||||
* - ERROR: ADC common registers are not initialized
|
||||
*/
|
||||
ErrorStatus LL_ADC_CommonInit(ADC_Common_TypeDef *ADCxy_COMMON, LL_ADC_CommonInitTypeDef *ADC_CommonInitStruct)
|
||||
{
|
||||
ErrorStatus status = SUCCESS;
|
||||
|
||||
/* Check the parameters */
|
||||
assert_param(IS_ADC_COMMON_INSTANCE(ADCxy_COMMON));
|
||||
assert_param(IS_LL_ADC_COMMON_CLOCK(ADC_CommonInitStruct->CommonClock));
|
||||
|
||||
#if defined(ADC_MULTIMODE_SUPPORT)
|
||||
assert_param(IS_LL_ADC_MULTI_MODE(ADC_CommonInitStruct->Multimode));
|
||||
if(ADC_CommonInitStruct->Multimode != LL_ADC_MULTI_INDEPENDENT)
|
||||
{
|
||||
assert_param(IS_LL_ADC_MULTI_DMA_TRANSFER(ADC_CommonInitStruct->MultiDMATransfer));
|
||||
assert_param(IS_LL_ADC_MULTI_TWOSMP_DELAY(ADC_CommonInitStruct->MultiTwoSamplingDelay));
|
||||
}
|
||||
#endif /* ADC_MULTIMODE_SUPPORT */
|
||||
|
||||
/* Note: Hardware constraint (refer to description of functions */
|
||||
/* "LL_ADC_SetCommonXXX()" and "LL_ADC_SetMultiXXX()"): */
|
||||
/* On this STM32 series, setting of these features is conditioned to */
|
||||
/* ADC state: */
|
||||
/* All ADC instances of the ADC common group must be disabled. */
|
||||
if(__LL_ADC_IS_ENABLED_ALL_COMMON_INSTANCE(ADCxy_COMMON) == 0UL)
|
||||
{
|
||||
/* Configuration of ADC hierarchical scope: */
|
||||
/* - common to several ADC */
|
||||
/* (all ADC instances belonging to the same ADC common instance) */
|
||||
/* - Set ADC clock (conversion clock) */
|
||||
/* - multimode (if several ADC instances available on the */
|
||||
/* selected device) */
|
||||
/* - Set ADC multimode configuration */
|
||||
/* - Set ADC multimode DMA transfer */
|
||||
/* - Set ADC multimode: delay between 2 sampling phases */
|
||||
#if defined(ADC_MULTIMODE_SUPPORT)
|
||||
if(ADC_CommonInitStruct->Multimode != LL_ADC_MULTI_INDEPENDENT)
|
||||
{
|
||||
MODIFY_REG(ADCxy_COMMON->CCR,
|
||||
ADC_CCR_ADCPRE
|
||||
| ADC_CCR_MULTI
|
||||
| ADC_CCR_DMA
|
||||
| ADC_CCR_DDS
|
||||
| ADC_CCR_DELAY
|
||||
,
|
||||
ADC_CommonInitStruct->CommonClock
|
||||
| ADC_CommonInitStruct->Multimode
|
||||
| ADC_CommonInitStruct->MultiDMATransfer
|
||||
| ADC_CommonInitStruct->MultiTwoSamplingDelay
|
||||
);
|
||||
}
|
||||
else
|
||||
{
|
||||
MODIFY_REG(ADCxy_COMMON->CCR,
|
||||
ADC_CCR_ADCPRE
|
||||
| ADC_CCR_MULTI
|
||||
| ADC_CCR_DMA
|
||||
| ADC_CCR_DDS
|
||||
| ADC_CCR_DELAY
|
||||
,
|
||||
ADC_CommonInitStruct->CommonClock
|
||||
| LL_ADC_MULTI_INDEPENDENT
|
||||
);
|
||||
}
|
||||
#else
|
||||
LL_ADC_SetCommonClock(ADCxy_COMMON, ADC_CommonInitStruct->CommonClock);
|
||||
#endif
|
||||
}
|
||||
else
|
||||
{
|
||||
/* Initialization error: One or several ADC instances belonging to */
|
||||
/* the same ADC common instance are not disabled. */
|
||||
status = ERROR;
|
||||
}
|
||||
|
||||
return status;
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Set each @ref LL_ADC_CommonInitTypeDef field to default value.
|
||||
* @param ADC_CommonInitStruct Pointer to a @ref LL_ADC_CommonInitTypeDef structure
|
||||
* whose fields will be set to default values.
|
||||
* @retval None
|
||||
*/
|
||||
void LL_ADC_CommonStructInit(LL_ADC_CommonInitTypeDef *ADC_CommonInitStruct)
|
||||
{
|
||||
/* Set ADC_CommonInitStruct fields to default values */
|
||||
/* Set fields of ADC common */
|
||||
/* (all ADC instances belonging to the same ADC common instance) */
|
||||
ADC_CommonInitStruct->CommonClock = LL_ADC_CLOCK_SYNC_PCLK_DIV2;
|
||||
|
||||
#if defined(ADC_MULTIMODE_SUPPORT)
|
||||
/* Set fields of ADC multimode */
|
||||
ADC_CommonInitStruct->Multimode = LL_ADC_MULTI_INDEPENDENT;
|
||||
ADC_CommonInitStruct->MultiDMATransfer = LL_ADC_MULTI_REG_DMA_EACH_ADC;
|
||||
ADC_CommonInitStruct->MultiTwoSamplingDelay = LL_ADC_MULTI_TWOSMP_DELAY_5CYCLES;
|
||||
#endif /* ADC_MULTIMODE_SUPPORT */
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief De-initialize registers of the selected ADC instance
|
||||
* to their default reset values.
|
||||
* @note To reset all ADC instances quickly (perform a hard reset),
|
||||
* use function @ref LL_ADC_CommonDeInit().
|
||||
* @param ADCx ADC instance
|
||||
* @retval An ErrorStatus enumeration value:
|
||||
* - SUCCESS: ADC registers are de-initialized
|
||||
* - ERROR: ADC registers are not de-initialized
|
||||
*/
|
||||
ErrorStatus LL_ADC_DeInit(ADC_TypeDef *ADCx)
|
||||
{
|
||||
ErrorStatus status = SUCCESS;
|
||||
|
||||
/* Check the parameters */
|
||||
assert_param(IS_ADC_ALL_INSTANCE(ADCx));
|
||||
|
||||
/* Disable ADC instance if not already disabled. */
|
||||
if(LL_ADC_IsEnabled(ADCx) == 1UL)
|
||||
{
|
||||
/* Set ADC group regular trigger source to SW start to ensure to not */
|
||||
/* have an external trigger event occurring during the conversion stop */
|
||||
/* ADC disable process. */
|
||||
LL_ADC_REG_SetTriggerSource(ADCx, LL_ADC_REG_TRIG_SOFTWARE);
|
||||
|
||||
/* Set ADC group injected trigger source to SW start to ensure to not */
|
||||
/* have an external trigger event occurring during the conversion stop */
|
||||
/* ADC disable process. */
|
||||
LL_ADC_INJ_SetTriggerSource(ADCx, LL_ADC_INJ_TRIG_SOFTWARE);
|
||||
|
||||
/* Disable the ADC instance */
|
||||
LL_ADC_Disable(ADCx);
|
||||
}
|
||||
|
||||
/* Check whether ADC state is compliant with expected state */
|
||||
/* (hardware requirements of bits state to reset registers below) */
|
||||
if(READ_BIT(ADCx->CR2, ADC_CR2_ADON) == 0UL)
|
||||
{
|
||||
/* ========== Reset ADC registers ========== */
|
||||
/* Reset register SR */
|
||||
CLEAR_BIT(ADCx->SR,
|
||||
( LL_ADC_FLAG_STRT
|
||||
| LL_ADC_FLAG_JSTRT
|
||||
| LL_ADC_FLAG_EOCS
|
||||
| LL_ADC_FLAG_OVR
|
||||
| LL_ADC_FLAG_JEOS
|
||||
| LL_ADC_FLAG_AWD1 )
|
||||
);
|
||||
|
||||
/* Reset register CR1 */
|
||||
CLEAR_BIT(ADCx->CR1,
|
||||
( ADC_CR1_OVRIE | ADC_CR1_RES | ADC_CR1_AWDEN
|
||||
| ADC_CR1_JAWDEN
|
||||
| ADC_CR1_DISCNUM | ADC_CR1_JDISCEN | ADC_CR1_DISCEN
|
||||
| ADC_CR1_JAUTO | ADC_CR1_AWDSGL | ADC_CR1_SCAN
|
||||
| ADC_CR1_JEOCIE | ADC_CR1_AWDIE | ADC_CR1_EOCIE
|
||||
| ADC_CR1_AWDCH )
|
||||
);
|
||||
|
||||
/* Reset register CR2 */
|
||||
CLEAR_BIT(ADCx->CR2,
|
||||
( ADC_CR2_SWSTART | ADC_CR2_EXTEN | ADC_CR2_EXTSEL
|
||||
| ADC_CR2_JSWSTART | ADC_CR2_JEXTEN | ADC_CR2_JEXTSEL
|
||||
| ADC_CR2_ALIGN | ADC_CR2_EOCS
|
||||
| ADC_CR2_DDS | ADC_CR2_DMA
|
||||
| ADC_CR2_CONT | ADC_CR2_ADON )
|
||||
);
|
||||
|
||||
/* Reset register SMPR1 */
|
||||
CLEAR_BIT(ADCx->SMPR1,
|
||||
( ADC_SMPR1_SMP18 | ADC_SMPR1_SMP17 | ADC_SMPR1_SMP16
|
||||
| ADC_SMPR1_SMP15 | ADC_SMPR1_SMP14 | ADC_SMPR1_SMP13
|
||||
| ADC_SMPR1_SMP12 | ADC_SMPR1_SMP11 | ADC_SMPR1_SMP10)
|
||||
);
|
||||
|
||||
/* Reset register SMPR2 */
|
||||
CLEAR_BIT(ADCx->SMPR2,
|
||||
( ADC_SMPR2_SMP9
|
||||
| ADC_SMPR2_SMP8 | ADC_SMPR2_SMP7 | ADC_SMPR2_SMP6
|
||||
| ADC_SMPR2_SMP5 | ADC_SMPR2_SMP4 | ADC_SMPR2_SMP3
|
||||
| ADC_SMPR2_SMP2 | ADC_SMPR2_SMP1 | ADC_SMPR2_SMP0)
|
||||
);
|
||||
|
||||
/* Reset register JOFR1 */
|
||||
CLEAR_BIT(ADCx->JOFR1, ADC_JOFR1_JOFFSET1);
|
||||
/* Reset register JOFR2 */
|
||||
CLEAR_BIT(ADCx->JOFR2, ADC_JOFR2_JOFFSET2);
|
||||
/* Reset register JOFR3 */
|
||||
CLEAR_BIT(ADCx->JOFR3, ADC_JOFR3_JOFFSET3);
|
||||
/* Reset register JOFR4 */
|
||||
CLEAR_BIT(ADCx->JOFR4, ADC_JOFR4_JOFFSET4);
|
||||
|
||||
/* Reset register HTR */
|
||||
SET_BIT(ADCx->HTR, ADC_HTR_HT);
|
||||
/* Reset register LTR */
|
||||
CLEAR_BIT(ADCx->LTR, ADC_LTR_LT);
|
||||
|
||||
/* Reset register SQR1 */
|
||||
CLEAR_BIT(ADCx->SQR1,
|
||||
( ADC_SQR1_L
|
||||
| ADC_SQR1_SQ16
|
||||
| ADC_SQR1_SQ15 | ADC_SQR1_SQ14 | ADC_SQR1_SQ13)
|
||||
);
|
||||
|
||||
/* Reset register SQR2 */
|
||||
CLEAR_BIT(ADCx->SQR2,
|
||||
( ADC_SQR2_SQ12 | ADC_SQR2_SQ11 | ADC_SQR2_SQ10
|
||||
| ADC_SQR2_SQ9 | ADC_SQR2_SQ8 | ADC_SQR2_SQ7)
|
||||
);
|
||||
|
||||
/* Reset register SQR3 */
|
||||
CLEAR_BIT(ADCx->SQR3,
|
||||
( ADC_SQR3_SQ6 | ADC_SQR3_SQ5 | ADC_SQR3_SQ4
|
||||
| ADC_SQR3_SQ3 | ADC_SQR3_SQ2 | ADC_SQR3_SQ1)
|
||||
);
|
||||
|
||||
/* Reset register JSQR */
|
||||
CLEAR_BIT(ADCx->JSQR,
|
||||
( ADC_JSQR_JL
|
||||
| ADC_JSQR_JSQ4 | ADC_JSQR_JSQ3
|
||||
| ADC_JSQR_JSQ2 | ADC_JSQR_JSQ1 )
|
||||
);
|
||||
|
||||
/* Reset register DR */
|
||||
/* bits in access mode read only, no direct reset applicable */
|
||||
|
||||
/* Reset registers JDR1, JDR2, JDR3, JDR4 */
|
||||
/* bits in access mode read only, no direct reset applicable */
|
||||
|
||||
/* Reset register CCR */
|
||||
CLEAR_BIT(ADC->CCR, ADC_CCR_TSVREFE | ADC_CCR_ADCPRE);
|
||||
}
|
||||
|
||||
return status;
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Initialize some features of ADC instance.
|
||||
* @note These parameters have an impact on ADC scope: ADC instance.
|
||||
* Affects both group regular and group injected (availability
|
||||
* of ADC group injected depends on STM32 families).
|
||||
* Refer to corresponding unitary functions into
|
||||
* @ref ADC_LL_EF_Configuration_ADC_Instance .
|
||||
* @note The setting of these parameters by function @ref LL_ADC_Init()
|
||||
* is conditioned to ADC state:
|
||||
* ADC instance must be disabled.
|
||||
* This condition is applied to all ADC features, for efficiency
|
||||
* and compatibility over all STM32 families. However, the different
|
||||
* features can be set under different ADC state conditions
|
||||
* (setting possible with ADC enabled without conversion on going,
|
||||
* ADC enabled with conversion on going, ...)
|
||||
* Each feature can be updated afterwards with a unitary function
|
||||
* and potentially with ADC in a different state than disabled,
|
||||
* refer to description of each function for setting
|
||||
* conditioned to ADC state.
|
||||
* @note After using this function, some other features must be configured
|
||||
* using LL unitary functions.
|
||||
* The minimum configuration remaining to be done is:
|
||||
* - Set ADC group regular or group injected sequencer:
|
||||
* map channel on the selected sequencer rank.
|
||||
* Refer to function @ref LL_ADC_REG_SetSequencerRanks().
|
||||
* - Set ADC channel sampling time
|
||||
* Refer to function LL_ADC_SetChannelSamplingTime();
|
||||
* @param ADCx ADC instance
|
||||
* @param ADC_InitStruct Pointer to a @ref LL_ADC_REG_InitTypeDef structure
|
||||
* @retval An ErrorStatus enumeration value:
|
||||
* - SUCCESS: ADC registers are initialized
|
||||
* - ERROR: ADC registers are not initialized
|
||||
*/
|
||||
ErrorStatus LL_ADC_Init(ADC_TypeDef *ADCx, LL_ADC_InitTypeDef *ADC_InitStruct)
|
||||
{
|
||||
ErrorStatus status = SUCCESS;
|
||||
|
||||
/* Check the parameters */
|
||||
assert_param(IS_ADC_ALL_INSTANCE(ADCx));
|
||||
|
||||
assert_param(IS_LL_ADC_RESOLUTION(ADC_InitStruct->Resolution));
|
||||
assert_param(IS_LL_ADC_DATA_ALIGN(ADC_InitStruct->DataAlignment));
|
||||
assert_param(IS_LL_ADC_SCAN_SELECTION(ADC_InitStruct->SequencersScanMode));
|
||||
|
||||
/* Note: Hardware constraint (refer to description of this function): */
|
||||
/* ADC instance must be disabled. */
|
||||
if(LL_ADC_IsEnabled(ADCx) == 0UL)
|
||||
{
|
||||
/* Configuration of ADC hierarchical scope: */
|
||||
/* - ADC instance */
|
||||
/* - Set ADC data resolution */
|
||||
/* - Set ADC conversion data alignment */
|
||||
MODIFY_REG(ADCx->CR1,
|
||||
ADC_CR1_RES
|
||||
| ADC_CR1_SCAN
|
||||
,
|
||||
ADC_InitStruct->Resolution
|
||||
| ADC_InitStruct->SequencersScanMode
|
||||
);
|
||||
|
||||
MODIFY_REG(ADCx->CR2,
|
||||
ADC_CR2_ALIGN
|
||||
,
|
||||
ADC_InitStruct->DataAlignment
|
||||
);
|
||||
|
||||
}
|
||||
else
|
||||
{
|
||||
/* Initialization error: ADC instance is not disabled. */
|
||||
status = ERROR;
|
||||
}
|
||||
return status;
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Set each @ref LL_ADC_InitTypeDef field to default value.
|
||||
* @param ADC_InitStruct Pointer to a @ref LL_ADC_InitTypeDef structure
|
||||
* whose fields will be set to default values.
|
||||
* @retval None
|
||||
*/
|
||||
void LL_ADC_StructInit(LL_ADC_InitTypeDef *ADC_InitStruct)
|
||||
{
|
||||
/* Set ADC_InitStruct fields to default values */
|
||||
/* Set fields of ADC instance */
|
||||
ADC_InitStruct->Resolution = LL_ADC_RESOLUTION_12B;
|
||||
ADC_InitStruct->DataAlignment = LL_ADC_DATA_ALIGN_RIGHT;
|
||||
|
||||
/* Enable scan mode to have a generic behavior with ADC of other */
|
||||
/* STM32 families, without this setting available: */
|
||||
/* ADC group regular sequencer and ADC group injected sequencer depend */
|
||||
/* only of their own configuration. */
|
||||
ADC_InitStruct->SequencersScanMode = LL_ADC_SEQ_SCAN_ENABLE;
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Initialize some features of ADC group regular.
|
||||
* @note These parameters have an impact on ADC scope: ADC group regular.
|
||||
* Refer to corresponding unitary functions into
|
||||
* @ref ADC_LL_EF_Configuration_ADC_Group_Regular
|
||||
* (functions with prefix "REG").
|
||||
* @note The setting of these parameters by function @ref LL_ADC_Init()
|
||||
* is conditioned to ADC state:
|
||||
* ADC instance must be disabled.
|
||||
* This condition is applied to all ADC features, for efficiency
|
||||
* and compatibility over all STM32 families. However, the different
|
||||
* features can be set under different ADC state conditions
|
||||
* (setting possible with ADC enabled without conversion on going,
|
||||
* ADC enabled with conversion on going, ...)
|
||||
* Each feature can be updated afterwards with a unitary function
|
||||
* and potentially with ADC in a different state than disabled,
|
||||
* refer to description of each function for setting
|
||||
* conditioned to ADC state.
|
||||
* @note After using this function, other features must be configured
|
||||
* using LL unitary functions.
|
||||
* The minimum configuration remaining to be done is:
|
||||
* - Set ADC group regular or group injected sequencer:
|
||||
* map channel on the selected sequencer rank.
|
||||
* Refer to function @ref LL_ADC_REG_SetSequencerRanks().
|
||||
* - Set ADC channel sampling time
|
||||
* Refer to function LL_ADC_SetChannelSamplingTime();
|
||||
* @param ADCx ADC instance
|
||||
* @param ADC_REG_InitStruct Pointer to a @ref LL_ADC_REG_InitTypeDef structure
|
||||
* @retval An ErrorStatus enumeration value:
|
||||
* - SUCCESS: ADC registers are initialized
|
||||
* - ERROR: ADC registers are not initialized
|
||||
*/
|
||||
ErrorStatus LL_ADC_REG_Init(ADC_TypeDef *ADCx, LL_ADC_REG_InitTypeDef *ADC_REG_InitStruct)
|
||||
{
|
||||
ErrorStatus status = SUCCESS;
|
||||
|
||||
/* Check the parameters */
|
||||
assert_param(IS_ADC_ALL_INSTANCE(ADCx));
|
||||
assert_param(IS_LL_ADC_REG_TRIG_SOURCE(ADC_REG_InitStruct->TriggerSource));
|
||||
assert_param(IS_LL_ADC_REG_SEQ_SCAN_LENGTH(ADC_REG_InitStruct->SequencerLength));
|
||||
if(ADC_REG_InitStruct->SequencerLength != LL_ADC_REG_SEQ_SCAN_DISABLE)
|
||||
{
|
||||
assert_param(IS_LL_ADC_REG_SEQ_SCAN_DISCONT_MODE(ADC_REG_InitStruct->SequencerDiscont));
|
||||
}
|
||||
assert_param(IS_LL_ADC_REG_CONTINUOUS_MODE(ADC_REG_InitStruct->ContinuousMode));
|
||||
assert_param(IS_LL_ADC_REG_DMA_TRANSFER(ADC_REG_InitStruct->DMATransfer));
|
||||
|
||||
/* ADC group regular continuous mode and discontinuous mode */
|
||||
/* can not be enabled simultenaeously */
|
||||
assert_param((ADC_REG_InitStruct->ContinuousMode == LL_ADC_REG_CONV_SINGLE)
|
||||
|| (ADC_REG_InitStruct->SequencerDiscont == LL_ADC_REG_SEQ_DISCONT_DISABLE));
|
||||
|
||||
/* Note: Hardware constraint (refer to description of this function): */
|
||||
/* ADC instance must be disabled. */
|
||||
if(LL_ADC_IsEnabled(ADCx) == 0UL)
|
||||
{
|
||||
/* Configuration of ADC hierarchical scope: */
|
||||
/* - ADC group regular */
|
||||
/* - Set ADC group regular trigger source */
|
||||
/* - Set ADC group regular sequencer length */
|
||||
/* - Set ADC group regular sequencer discontinuous mode */
|
||||
/* - Set ADC group regular continuous mode */
|
||||
/* - Set ADC group regular conversion data transfer: no transfer or */
|
||||
/* transfer by DMA, and DMA requests mode */
|
||||
/* Note: On this STM32 series, ADC trigger edge is set when starting */
|
||||
/* ADC conversion. */
|
||||
/* Refer to function @ref LL_ADC_REG_StartConversionExtTrig(). */
|
||||
if(ADC_REG_InitStruct->SequencerLength != LL_ADC_REG_SEQ_SCAN_DISABLE)
|
||||
{
|
||||
MODIFY_REG(ADCx->CR1,
|
||||
ADC_CR1_DISCEN
|
||||
| ADC_CR1_DISCNUM
|
||||
,
|
||||
ADC_REG_InitStruct->SequencerDiscont
|
||||
);
|
||||
}
|
||||
else
|
||||
{
|
||||
MODIFY_REG(ADCx->CR1,
|
||||
ADC_CR1_DISCEN
|
||||
| ADC_CR1_DISCNUM
|
||||
,
|
||||
LL_ADC_REG_SEQ_DISCONT_DISABLE
|
||||
);
|
||||
}
|
||||
|
||||
MODIFY_REG(ADCx->CR2,
|
||||
ADC_CR2_EXTSEL
|
||||
| ADC_CR2_EXTEN
|
||||
| ADC_CR2_CONT
|
||||
| ADC_CR2_DMA
|
||||
| ADC_CR2_DDS
|
||||
,
|
||||
(ADC_REG_InitStruct->TriggerSource & ADC_CR2_EXTSEL)
|
||||
| ADC_REG_InitStruct->ContinuousMode
|
||||
| ADC_REG_InitStruct->DMATransfer
|
||||
);
|
||||
|
||||
/* Set ADC group regular sequencer length and scan direction */
|
||||
/* Note: Hardware constraint (refer to description of this function): */
|
||||
/* Note: If ADC instance feature scan mode is disabled */
|
||||
/* (refer to ADC instance initialization structure */
|
||||
/* parameter @ref SequencersScanMode */
|
||||
/* or function @ref LL_ADC_SetSequencersScanMode() ), */
|
||||
/* this parameter is discarded. */
|
||||
LL_ADC_REG_SetSequencerLength(ADCx, ADC_REG_InitStruct->SequencerLength);
|
||||
}
|
||||
else
|
||||
{
|
||||
/* Initialization error: ADC instance is not disabled. */
|
||||
status = ERROR;
|
||||
}
|
||||
return status;
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Set each @ref LL_ADC_REG_InitTypeDef field to default value.
|
||||
* @param ADC_REG_InitStruct Pointer to a @ref LL_ADC_REG_InitTypeDef structure
|
||||
* whose fields will be set to default values.
|
||||
* @retval None
|
||||
*/
|
||||
void LL_ADC_REG_StructInit(LL_ADC_REG_InitTypeDef *ADC_REG_InitStruct)
|
||||
{
|
||||
/* Set ADC_REG_InitStruct fields to default values */
|
||||
/* Set fields of ADC group regular */
|
||||
/* Note: On this STM32 series, ADC trigger edge is set when starting */
|
||||
/* ADC conversion. */
|
||||
/* Refer to function @ref LL_ADC_REG_StartConversionExtTrig(). */
|
||||
ADC_REG_InitStruct->TriggerSource = LL_ADC_REG_TRIG_SOFTWARE;
|
||||
ADC_REG_InitStruct->SequencerLength = LL_ADC_REG_SEQ_SCAN_DISABLE;
|
||||
ADC_REG_InitStruct->SequencerDiscont = LL_ADC_REG_SEQ_DISCONT_DISABLE;
|
||||
ADC_REG_InitStruct->ContinuousMode = LL_ADC_REG_CONV_SINGLE;
|
||||
ADC_REG_InitStruct->DMATransfer = LL_ADC_REG_DMA_TRANSFER_NONE;
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Initialize some features of ADC group injected.
|
||||
* @note These parameters have an impact on ADC scope: ADC group injected.
|
||||
* Refer to corresponding unitary functions into
|
||||
* @ref ADC_LL_EF_Configuration_ADC_Group_Regular
|
||||
* (functions with prefix "INJ").
|
||||
* @note The setting of these parameters by function @ref LL_ADC_Init()
|
||||
* is conditioned to ADC state:
|
||||
* ADC instance must be disabled.
|
||||
* This condition is applied to all ADC features, for efficiency
|
||||
* and compatibility over all STM32 families. However, the different
|
||||
* features can be set under different ADC state conditions
|
||||
* (setting possible with ADC enabled without conversion on going,
|
||||
* ADC enabled with conversion on going, ...)
|
||||
* Each feature can be updated afterwards with a unitary function
|
||||
* and potentially with ADC in a different state than disabled,
|
||||
* refer to description of each function for setting
|
||||
* conditioned to ADC state.
|
||||
* @note After using this function, other features must be configured
|
||||
* using LL unitary functions.
|
||||
* The minimum configuration remaining to be done is:
|
||||
* - Set ADC group injected sequencer:
|
||||
* map channel on the selected sequencer rank.
|
||||
* Refer to function @ref LL_ADC_INJ_SetSequencerRanks().
|
||||
* - Set ADC channel sampling time
|
||||
* Refer to function LL_ADC_SetChannelSamplingTime();
|
||||
* @param ADCx ADC instance
|
||||
* @param ADC_INJ_InitStruct Pointer to a @ref LL_ADC_INJ_InitTypeDef structure
|
||||
* @retval An ErrorStatus enumeration value:
|
||||
* - SUCCESS: ADC registers are initialized
|
||||
* - ERROR: ADC registers are not initialized
|
||||
*/
|
||||
ErrorStatus LL_ADC_INJ_Init(ADC_TypeDef *ADCx, LL_ADC_INJ_InitTypeDef *ADC_INJ_InitStruct)
|
||||
{
|
||||
ErrorStatus status = SUCCESS;
|
||||
|
||||
/* Check the parameters */
|
||||
assert_param(IS_ADC_ALL_INSTANCE(ADCx));
|
||||
assert_param(IS_LL_ADC_INJ_TRIG_SOURCE(ADC_INJ_InitStruct->TriggerSource));
|
||||
assert_param(IS_LL_ADC_INJ_SEQ_SCAN_LENGTH(ADC_INJ_InitStruct->SequencerLength));
|
||||
if(ADC_INJ_InitStruct->SequencerLength != LL_ADC_INJ_SEQ_SCAN_DISABLE)
|
||||
{
|
||||
assert_param(IS_LL_ADC_INJ_SEQ_SCAN_DISCONT_MODE(ADC_INJ_InitStruct->SequencerDiscont));
|
||||
}
|
||||
assert_param(IS_LL_ADC_INJ_TRIG_AUTO(ADC_INJ_InitStruct->TrigAuto));
|
||||
|
||||
/* Note: Hardware constraint (refer to description of this function): */
|
||||
/* ADC instance must be disabled. */
|
||||
if(LL_ADC_IsEnabled(ADCx) == 0UL)
|
||||
{
|
||||
/* Configuration of ADC hierarchical scope: */
|
||||
/* - ADC group injected */
|
||||
/* - Set ADC group injected trigger source */
|
||||
/* - Set ADC group injected sequencer length */
|
||||
/* - Set ADC group injected sequencer discontinuous mode */
|
||||
/* - Set ADC group injected conversion trigger: independent or */
|
||||
/* from ADC group regular */
|
||||
/* Note: On this STM32 series, ADC trigger edge is set when starting */
|
||||
/* ADC conversion. */
|
||||
/* Refer to function @ref LL_ADC_INJ_StartConversionExtTrig(). */
|
||||
if(ADC_INJ_InitStruct->SequencerLength != LL_ADC_REG_SEQ_SCAN_DISABLE)
|
||||
{
|
||||
MODIFY_REG(ADCx->CR1,
|
||||
ADC_CR1_JDISCEN
|
||||
| ADC_CR1_JAUTO
|
||||
,
|
||||
ADC_INJ_InitStruct->SequencerDiscont
|
||||
| ADC_INJ_InitStruct->TrigAuto
|
||||
);
|
||||
}
|
||||
else
|
||||
{
|
||||
MODIFY_REG(ADCx->CR1,
|
||||
ADC_CR1_JDISCEN
|
||||
| ADC_CR1_JAUTO
|
||||
,
|
||||
LL_ADC_REG_SEQ_DISCONT_DISABLE
|
||||
| ADC_INJ_InitStruct->TrigAuto
|
||||
);
|
||||
}
|
||||
|
||||
MODIFY_REG(ADCx->CR2,
|
||||
ADC_CR2_JEXTSEL
|
||||
| ADC_CR2_JEXTEN
|
||||
,
|
||||
(ADC_INJ_InitStruct->TriggerSource & ADC_CR2_JEXTSEL)
|
||||
);
|
||||
|
||||
/* Note: Hardware constraint (refer to description of this function): */
|
||||
/* Note: If ADC instance feature scan mode is disabled */
|
||||
/* (refer to ADC instance initialization structure */
|
||||
/* parameter @ref SequencersScanMode */
|
||||
/* or function @ref LL_ADC_SetSequencersScanMode() ), */
|
||||
/* this parameter is discarded. */
|
||||
LL_ADC_INJ_SetSequencerLength(ADCx, ADC_INJ_InitStruct->SequencerLength);
|
||||
}
|
||||
else
|
||||
{
|
||||
/* Initialization error: ADC instance is not disabled. */
|
||||
status = ERROR;
|
||||
}
|
||||
return status;
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Set each @ref LL_ADC_INJ_InitTypeDef field to default value.
|
||||
* @param ADC_INJ_InitStruct Pointer to a @ref LL_ADC_INJ_InitTypeDef structure
|
||||
* whose fields will be set to default values.
|
||||
* @retval None
|
||||
*/
|
||||
void LL_ADC_INJ_StructInit(LL_ADC_INJ_InitTypeDef *ADC_INJ_InitStruct)
|
||||
{
|
||||
/* Set ADC_INJ_InitStruct fields to default values */
|
||||
/* Set fields of ADC group injected */
|
||||
ADC_INJ_InitStruct->TriggerSource = LL_ADC_INJ_TRIG_SOFTWARE;
|
||||
ADC_INJ_InitStruct->SequencerLength = LL_ADC_INJ_SEQ_SCAN_DISABLE;
|
||||
ADC_INJ_InitStruct->SequencerDiscont = LL_ADC_INJ_SEQ_DISCONT_DISABLE;
|
||||
ADC_INJ_InitStruct->TrigAuto = LL_ADC_INJ_TRIG_INDEPENDENT;
|
||||
}
|
||||
|
||||
/**
|
||||
* @}
|
||||
*/
|
||||
|
||||
/**
|
||||
* @}
|
||||
*/
|
||||
|
||||
/**
|
||||
* @}
|
||||
*/
|
||||
|
||||
#endif /* ADC1 || ADC2 || ADC3 */
|
||||
|
||||
/**
|
||||
* @}
|
||||
*/
|
||||
|
||||
#endif /* USE_FULL_LL_DRIVER */
|
||||
|
50
Inc/adc.h
50
Inc/adc.h
|
@ -1,50 +0,0 @@
|
|||
/* USER CODE BEGIN Header */
|
||||
/**
|
||||
******************************************************************************
|
||||
* @file adc.h
|
||||
* @brief This file contains all the function prototypes for
|
||||
* the adc.c file
|
||||
******************************************************************************
|
||||
* @attention
|
||||
*
|
||||
* Copyright (c) 2024 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.
|
||||
*
|
||||
******************************************************************************
|
||||
*/
|
||||
/* USER CODE END Header */
|
||||
/* Define to prevent recursive inclusion -------------------------------------*/
|
||||
#ifndef __ADC_H__
|
||||
#define __ADC_H__
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
/* Includes ------------------------------------------------------------------*/
|
||||
#include "main.h"
|
||||
|
||||
/* USER CODE BEGIN Includes */
|
||||
|
||||
/* USER CODE END Includes */
|
||||
|
||||
/* USER CODE BEGIN Private defines */
|
||||
|
||||
/* USER CODE END Private defines */
|
||||
|
||||
void MX_ADC1_Init(void);
|
||||
|
||||
/* USER CODE BEGIN Prototypes */
|
||||
|
||||
/* USER CODE END Prototypes */
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif /* __ADC_H__ */
|
||||
|
52
Inc/dma.h
52
Inc/dma.h
|
@ -1,52 +0,0 @@
|
|||
/* USER CODE BEGIN Header */
|
||||
/**
|
||||
******************************************************************************
|
||||
* @file dma.h
|
||||
* @brief This file contains all the function prototypes for
|
||||
* the dma.c file
|
||||
******************************************************************************
|
||||
* @attention
|
||||
*
|
||||
* Copyright (c) 2024 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.
|
||||
*
|
||||
******************************************************************************
|
||||
*/
|
||||
/* USER CODE END Header */
|
||||
/* Define to prevent recursive inclusion -------------------------------------*/
|
||||
#ifndef __DMA_H__
|
||||
#define __DMA_H__
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
/* Includes ------------------------------------------------------------------*/
|
||||
#include "main.h"
|
||||
|
||||
/* DMA memory to memory transfer handles -------------------------------------*/
|
||||
|
||||
/* USER CODE BEGIN Includes */
|
||||
|
||||
/* USER CODE END Includes */
|
||||
|
||||
/* USER CODE BEGIN Private defines */
|
||||
|
||||
/* USER CODE END Private defines */
|
||||
|
||||
void MX_DMA_Init(void);
|
||||
|
||||
/* USER CODE BEGIN Prototypes */
|
||||
|
||||
/* USER CODE END Prototypes */
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif /* __DMA_H__ */
|
||||
|
56
Inc/main.h
56
Inc/main.h
|
@ -23,13 +23,12 @@
|
|||
#define __MAIN_H
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
extern "C"
|
||||
{
|
||||
#endif
|
||||
|
||||
/* Includes ------------------------------------------------------------------*/
|
||||
/* Includes ------------------------------------------------------------------*/
|
||||
|
||||
#include "stm32f4xx_ll_adc.h"
|
||||
#include "stm32f4xx_ll_dma.h"
|
||||
#include "stm32f4xx_ll_rcc.h"
|
||||
#include "stm32f4xx_ll_bus.h"
|
||||
#include "stm32f4xx_ll_system.h"
|
||||
|
@ -37,6 +36,7 @@ extern "C" {
|
|||
#include "stm32f4xx_ll_cortex.h"
|
||||
#include "stm32f4xx_ll_utils.h"
|
||||
#include "stm32f4xx_ll_pwr.h"
|
||||
#include "stm32f4xx_ll_dma.h"
|
||||
#include "stm32f4xx_ll_tim.h"
|
||||
#include "stm32f4xx_ll_gpio.h"
|
||||
|
||||
|
@ -50,25 +50,25 @@ extern "C" {
|
|||
#include "delay.h"
|
||||
#include "lib.h"
|
||||
#include "bsp.h"
|
||||
/* USER CODE END Includes */
|
||||
/* USER CODE END Includes */
|
||||
|
||||
/* Exported types ------------------------------------------------------------*/
|
||||
/* USER CODE BEGIN ET */
|
||||
/* Exported types ------------------------------------------------------------*/
|
||||
/* USER CODE BEGIN ET */
|
||||
|
||||
/* USER CODE END ET */
|
||||
/* USER CODE END ET */
|
||||
|
||||
/* Exported constants --------------------------------------------------------*/
|
||||
/* USER CODE BEGIN EC */
|
||||
/* Exported constants --------------------------------------------------------*/
|
||||
/* USER CODE BEGIN EC */
|
||||
|
||||
/* USER CODE END EC */
|
||||
/* USER CODE END EC */
|
||||
|
||||
/* Exported macro ------------------------------------------------------------*/
|
||||
/* USER CODE BEGIN EM */
|
||||
/* Exported macro ------------------------------------------------------------*/
|
||||
/* USER CODE BEGIN EM */
|
||||
|
||||
/* USER CODE END EM */
|
||||
/* USER CODE END EM */
|
||||
|
||||
/* Exported functions prototypes ---------------------------------------------*/
|
||||
void Error_Handler(void);
|
||||
/* Exported functions prototypes ---------------------------------------------*/
|
||||
void Error_Handler(void);
|
||||
|
||||
/* USER CODE BEGIN EFP */
|
||||
|
||||
|
@ -80,21 +80,21 @@ void Error_Handler(void);
|
|||
#define LED_GREEN_Pin LL_GPIO_PIN_1
|
||||
#define LED_GREEN_GPIO_Port GPIOE
|
||||
#ifndef NVIC_PRIORITYGROUP_0
|
||||
#define NVIC_PRIORITYGROUP_0 ((uint32_t)0x00000007) /*!< 0 bit for pre-emption priority,
|
||||
4 bits for subpriority */
|
||||
#define NVIC_PRIORITYGROUP_1 ((uint32_t)0x00000006) /*!< 1 bit for pre-emption priority,
|
||||
3 bits for subpriority */
|
||||
#define NVIC_PRIORITYGROUP_2 ((uint32_t)0x00000005) /*!< 2 bits for pre-emption priority,
|
||||
2 bits for subpriority */
|
||||
#define NVIC_PRIORITYGROUP_3 ((uint32_t)0x00000004) /*!< 3 bits for pre-emption priority,
|
||||
1 bit for subpriority */
|
||||
#define NVIC_PRIORITYGROUP_4 ((uint32_t)0x00000003) /*!< 4 bits for pre-emption priority,
|
||||
0 bit for subpriority */
|
||||
#define NVIC_PRIORITYGROUP_0 ((uint32_t)0x00000007) /*!< 0 bit for pre-emption priority, \
|
||||
4 bits for subpriority */
|
||||
#define NVIC_PRIORITYGROUP_1 ((uint32_t)0x00000006) /*!< 1 bit for pre-emption priority, \
|
||||
3 bits for subpriority */
|
||||
#define NVIC_PRIORITYGROUP_2 ((uint32_t)0x00000005) /*!< 2 bits for pre-emption priority, \
|
||||
2 bits for subpriority */
|
||||
#define NVIC_PRIORITYGROUP_3 ((uint32_t)0x00000004) /*!< 3 bits for pre-emption priority, \
|
||||
1 bit for subpriority */
|
||||
#define NVIC_PRIORITYGROUP_4 ((uint32_t)0x00000003) /*!< 4 bits for pre-emption priority, \
|
||||
0 bit for subpriority */
|
||||
#endif
|
||||
|
||||
/* USER CODE BEGIN Private defines */
|
||||
/* USER CODE BEGIN Private defines */
|
||||
|
||||
/* USER CODE END Private defines */
|
||||
/* USER CODE END Private defines */
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
|
|
|
@ -55,9 +55,7 @@ void SVC_Handler(void);
|
|||
void DebugMon_Handler(void);
|
||||
void PendSV_Handler(void);
|
||||
void SysTick_Handler(void);
|
||||
void ADC_IRQHandler(void);
|
||||
void TIM6_DAC_IRQHandler(void);
|
||||
void DMA2_Stream0_IRQHandler(void);
|
||||
/* USER CODE BEGIN EFP */
|
||||
|
||||
/* USER CODE END EFP */
|
||||
|
|
|
@ -1,44 +0,0 @@
|
|||
[BREAKPOINTS]
|
||||
ForceImpTypeAny = 0
|
||||
ShowInfoWin = 1
|
||||
EnableFlashBP = 2
|
||||
BPDuringExecution = 0
|
||||
[CFI]
|
||||
CFISize = 0x00
|
||||
CFIAddr = 0x00
|
||||
[CPU]
|
||||
MonModeVTableAddr = 0xFFFFFFFF
|
||||
MonModeDebug = 0
|
||||
MaxNumAPs = 0
|
||||
LowPowerHandlingMode = 0
|
||||
OverrideMemMap = 0
|
||||
AllowSimulation = 1
|
||||
ScriptFile=""
|
||||
[FLASH]
|
||||
RMWThreshold = 0x400
|
||||
Loaders=""
|
||||
EraseType = 0x00
|
||||
CacheExcludeSize = 0x00
|
||||
CacheExcludeAddr = 0x00
|
||||
MinNumBytesFlashDL = 0
|
||||
SkipProgOnCRCMatch = 1
|
||||
VerifyDownload = 1
|
||||
AllowCaching = 1
|
||||
EnableFlashDL = 2
|
||||
Override = 0
|
||||
Device="ARM7"
|
||||
[GENERAL]
|
||||
WorkRAMSize = 0x00
|
||||
WorkRAMAddr = 0x00
|
||||
RAMUsageLimit = 0x00
|
||||
[SWO]
|
||||
SWOLogFile=""
|
||||
[MEM]
|
||||
RdOverrideOrMask = 0x00
|
||||
RdOverrideAndMask = 0xFFFFFFFF
|
||||
RdOverrideAddr = 0xFFFFFFFF
|
||||
WrOverrideOrMask = 0x00
|
||||
WrOverrideAndMask = 0xFFFFFFFF
|
||||
WrOverrideAddr = 0xFFFFFFFF
|
||||
[RAM]
|
||||
VerifyDownload = 0x00
|
|
@ -103,7 +103,7 @@
|
|||
<bEvRecOn>1</bEvRecOn>
|
||||
<bSchkAxf>0</bSchkAxf>
|
||||
<bTchkAxf>0</bTchkAxf>
|
||||
<nTsel>4</nTsel>
|
||||
<nTsel>3</nTsel>
|
||||
<sDll></sDll>
|
||||
<sDllPa></sDllPa>
|
||||
<sDlgDll></sDlgDll>
|
||||
|
@ -114,19 +114,9 @@
|
|||
<tDlgDll></tDlgDll>
|
||||
<tDlgPa></tDlgPa>
|
||||
<tIfile></tIfile>
|
||||
<pMon>Segger\JL2CM3.dll</pMon>
|
||||
<pMon>BIN\CMSIS_AGDI.dll</pMon>
|
||||
</DebugOpt>
|
||||
<TargetDriverDllRegistry>
|
||||
<SetRegEntry>
|
||||
<Number>0</Number>
|
||||
<Key>DLGUARM</Key>
|
||||
<Name>
|
||||
</Name> </SetRegEntry>
|
||||
<SetRegEntry>
|
||||
<Number>0</Number>
|
||||
<Key>JL2CM3</Key>
|
||||
<Name>-U601012352 -O78 -S2 -ZTIFSpeedSel5000 -A0 -C0 -JU1 -JI127.0.0.1 -JP0 -RST0 -N00("ARM CoreSight SW-DP") -D00(2BA01477) -L00(0) -TO18 -TC10000000 -TP21 -TDS8007 -TDT0 -TDC1F -TIEFFFFFFFF -TIP8 -TB1 -TFE0 -FO7 -FD20000000 -FC1000 -FN1 -FF0STM32F4xx_1024.FLM -FS08000000 -FL0100000 -FP0($$Device:STM32F407IGTx$CMSIS\Flash\STM32F4xx_1024.FLM)</Name>
|
||||
</SetRegEntry>
|
||||
<SetRegEntry>
|
||||
<Number>0</Number>
|
||||
<Key>ARMRTXEVENTFLAGS</Key>
|
||||
|
@ -147,6 +137,11 @@
|
|||
<Key>CMSIS_AGDI</Key>
|
||||
<Name>-X"" -O206 -S8 -C0 -P00000000 -N00("ARM CoreSight SW-DP") -D00(2BA01477) -L00(0) -TO65554 -TC10000000 -TT10000000 -TP20 -TDS8007 -TDT0 -TDC1F -TIEFFFFFFFF -TIP8 -FO7 -FD20000000 -FC1000 -FN1 -FF0STM32F4xx_1024.FLM -FS08000000 -FL0100000 -FP0($$Device:STM32F407IGTx$CMSIS\Flash\STM32F4xx_1024.FLM)</Name>
|
||||
</SetRegEntry>
|
||||
<SetRegEntry>
|
||||
<Number>0</Number>
|
||||
<Key>DLGUARM</Key>
|
||||
<Name></Name>
|
||||
</SetRegEntry>
|
||||
<SetRegEntry>
|
||||
<Number>0</Number>
|
||||
<Key>UL2CM3</Key>
|
||||
|
@ -159,46 +154,6 @@
|
|||
</SetRegEntry>
|
||||
</TargetDriverDllRegistry>
|
||||
<Breakpoint/>
|
||||
<WatchWindow1>
|
||||
<Ww>
|
||||
<count>0</count>
|
||||
<WinNumber>1</WinNumber>
|
||||
<ItemText>p,0x0A</ItemText>
|
||||
</Ww>
|
||||
<Ww>
|
||||
<count>1</count>
|
||||
<WinNumber>1</WinNumber>
|
||||
<ItemText>adcs</ItemText>
|
||||
</Ww>
|
||||
<Ww>
|
||||
<count>2</count>
|
||||
<WinNumber>1</WinNumber>
|
||||
<ItemText>app</ItemText>
|
||||
</Ww>
|
||||
<Ww>
|
||||
<count>3</count>
|
||||
<WinNumber>1</WinNumber>
|
||||
<ItemText>board,0x0A</ItemText>
|
||||
</Ww>
|
||||
<Ww>
|
||||
<count>4</count>
|
||||
<WinNumber>1</WinNumber>
|
||||
<ItemText>0x000020CF,0x0A</ItemText>
|
||||
</Ww>
|
||||
<Ww>
|
||||
<count>5</count>
|
||||
<WinNumber>1</WinNumber>
|
||||
<ItemText>0x0063,0x0A</ItemText>
|
||||
</Ww>
|
||||
</WatchWindow1>
|
||||
<MemoryWindow1>
|
||||
<Mm>
|
||||
<WinNumber>1</WinNumber>
|
||||
<SubType>0</SubType>
|
||||
<ItemText>0x2001C9C0</ItemText>
|
||||
<AccSizeX>0</AccSizeX>
|
||||
</Mm>
|
||||
</MemoryWindow1>
|
||||
<Tracepoint>
|
||||
<THDelay>0</THDelay>
|
||||
</Tracepoint>
|
||||
|
@ -241,12 +196,6 @@
|
|||
<pszMrulep></pszMrulep>
|
||||
<pSingCmdsp></pSingCmdsp>
|
||||
<pMultCmdsp></pMultCmdsp>
|
||||
<SystemViewers>
|
||||
<Entry>
|
||||
<Name>System Viewer\TIM6</Name>
|
||||
<WinId>35905</WinId>
|
||||
</Entry>
|
||||
</SystemViewers>
|
||||
<DebugDescription>
|
||||
<Enable>1</Enable>
|
||||
<EnableFlashSeq>1</EnableFlashSeq>
|
||||
|
@ -279,7 +228,7 @@
|
|||
|
||||
<Group>
|
||||
<GroupName>Application/User</GroupName>
|
||||
<tvExp>1</tvExp>
|
||||
<tvExp>0</tvExp>
|
||||
<tvExpOptDlg>0</tvExpOptDlg>
|
||||
<cbSel>0</cbSel>
|
||||
<RteFlg>0</RteFlg>
|
||||
|
@ -314,30 +263,6 @@
|
|||
<tvExp>0</tvExp>
|
||||
<tvExpOptDlg>0</tvExpOptDlg>
|
||||
<bDave2>0</bDave2>
|
||||
<PathWithFileName>../Src/adc.c</PathWithFileName>
|
||||
<FilenameWithoutPath>adc.c</FilenameWithoutPath>
|
||||
<RteFlg>0</RteFlg>
|
||||
<bShared>0</bShared>
|
||||
</File>
|
||||
<File>
|
||||
<GroupNumber>2</GroupNumber>
|
||||
<FileNumber>5</FileNumber>
|
||||
<FileType>1</FileType>
|
||||
<tvExp>0</tvExp>
|
||||
<tvExpOptDlg>0</tvExpOptDlg>
|
||||
<bDave2>0</bDave2>
|
||||
<PathWithFileName>../Src/dma.c</PathWithFileName>
|
||||
<FilenameWithoutPath>dma.c</FilenameWithoutPath>
|
||||
<RteFlg>0</RteFlg>
|
||||
<bShared>0</bShared>
|
||||
</File>
|
||||
<File>
|
||||
<GroupNumber>2</GroupNumber>
|
||||
<FileNumber>6</FileNumber>
|
||||
<FileType>1</FileType>
|
||||
<tvExp>0</tvExp>
|
||||
<tvExpOptDlg>0</tvExpOptDlg>
|
||||
<bDave2>0</bDave2>
|
||||
<PathWithFileName>../Src/tim.c</PathWithFileName>
|
||||
<FilenameWithoutPath>tim.c</FilenameWithoutPath>
|
||||
<RteFlg>0</RteFlg>
|
||||
|
@ -345,7 +270,7 @@
|
|||
</File>
|
||||
<File>
|
||||
<GroupNumber>2</GroupNumber>
|
||||
<FileNumber>7</FileNumber>
|
||||
<FileNumber>5</FileNumber>
|
||||
<FileType>1</FileType>
|
||||
<tvExp>0</tvExp>
|
||||
<tvExpOptDlg>0</tvExpOptDlg>
|
||||
|
@ -365,7 +290,7 @@
|
|||
<RteFlg>0</RteFlg>
|
||||
<File>
|
||||
<GroupNumber>3</GroupNumber>
|
||||
<FileNumber>8</FileNumber>
|
||||
<FileNumber>6</FileNumber>
|
||||
<FileType>1</FileType>
|
||||
<tvExp>0</tvExp>
|
||||
<tvExpOptDlg>0</tvExpOptDlg>
|
||||
|
@ -377,19 +302,19 @@
|
|||
</File>
|
||||
<File>
|
||||
<GroupNumber>3</GroupNumber>
|
||||
<FileNumber>9</FileNumber>
|
||||
<FileNumber>7</FileNumber>
|
||||
<FileType>1</FileType>
|
||||
<tvExp>0</tvExp>
|
||||
<tvExpOptDlg>0</tvExpOptDlg>
|
||||
<bDave2>0</bDave2>
|
||||
<PathWithFileName>../Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_ll_adc.c</PathWithFileName>
|
||||
<FilenameWithoutPath>stm32f4xx_ll_adc.c</FilenameWithoutPath>
|
||||
<PathWithFileName>../Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_ll_tim.c</PathWithFileName>
|
||||
<FilenameWithoutPath>stm32f4xx_ll_tim.c</FilenameWithoutPath>
|
||||
<RteFlg>0</RteFlg>
|
||||
<bShared>0</bShared>
|
||||
</File>
|
||||
<File>
|
||||
<GroupNumber>3</GroupNumber>
|
||||
<FileNumber>10</FileNumber>
|
||||
<FileNumber>8</FileNumber>
|
||||
<FileType>1</FileType>
|
||||
<tvExp>0</tvExp>
|
||||
<tvExpOptDlg>0</tvExpOptDlg>
|
||||
|
@ -401,7 +326,7 @@
|
|||
</File>
|
||||
<File>
|
||||
<GroupNumber>3</GroupNumber>
|
||||
<FileNumber>11</FileNumber>
|
||||
<FileNumber>9</FileNumber>
|
||||
<FileType>1</FileType>
|
||||
<tvExp>0</tvExp>
|
||||
<tvExpOptDlg>0</tvExpOptDlg>
|
||||
|
@ -413,7 +338,7 @@
|
|||
</File>
|
||||
<File>
|
||||
<GroupNumber>3</GroupNumber>
|
||||
<FileNumber>12</FileNumber>
|
||||
<FileNumber>10</FileNumber>
|
||||
<FileType>1</FileType>
|
||||
<tvExp>0</tvExp>
|
||||
<tvExpOptDlg>0</tvExpOptDlg>
|
||||
|
@ -425,7 +350,7 @@
|
|||
</File>
|
||||
<File>
|
||||
<GroupNumber>3</GroupNumber>
|
||||
<FileNumber>13</FileNumber>
|
||||
<FileNumber>11</FileNumber>
|
||||
<FileType>1</FileType>
|
||||
<tvExp>0</tvExp>
|
||||
<tvExpOptDlg>0</tvExpOptDlg>
|
||||
|
@ -435,18 +360,6 @@
|
|||
<RteFlg>0</RteFlg>
|
||||
<bShared>0</bShared>
|
||||
</File>
|
||||
<File>
|
||||
<GroupNumber>3</GroupNumber>
|
||||
<FileNumber>14</FileNumber>
|
||||
<FileType>1</FileType>
|
||||
<tvExp>0</tvExp>
|
||||
<tvExpOptDlg>0</tvExpOptDlg>
|
||||
<bDave2>0</bDave2>
|
||||
<PathWithFileName>../Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_ll_tim.c</PathWithFileName>
|
||||
<FilenameWithoutPath>stm32f4xx_ll_tim.c</FilenameWithoutPath>
|
||||
<RteFlg>0</RteFlg>
|
||||
<bShared>0</bShared>
|
||||
</File>
|
||||
</Group>
|
||||
|
||||
<Group>
|
||||
|
@ -457,7 +370,7 @@
|
|||
<RteFlg>0</RteFlg>
|
||||
<File>
|
||||
<GroupNumber>4</GroupNumber>
|
||||
<FileNumber>15</FileNumber>
|
||||
<FileNumber>12</FileNumber>
|
||||
<FileType>1</FileType>
|
||||
<tvExp>0</tvExp>
|
||||
<tvExpOptDlg>0</tvExpOptDlg>
|
||||
|
@ -477,7 +390,7 @@
|
|||
<RteFlg>0</RteFlg>
|
||||
<File>
|
||||
<GroupNumber>5</GroupNumber>
|
||||
<FileNumber>16</FileNumber>
|
||||
<FileNumber>13</FileNumber>
|
||||
<FileType>1</FileType>
|
||||
<tvExp>0</tvExp>
|
||||
<tvExpOptDlg>0</tvExpOptDlg>
|
||||
|
@ -497,7 +410,7 @@
|
|||
<RteFlg>0</RteFlg>
|
||||
<File>
|
||||
<GroupNumber>6</GroupNumber>
|
||||
<FileNumber>17</FileNumber>
|
||||
<FileNumber>14</FileNumber>
|
||||
<FileType>1</FileType>
|
||||
<tvExp>0</tvExp>
|
||||
<tvExpOptDlg>0</tvExpOptDlg>
|
||||
|
@ -510,11 +423,47 @@
|
|||
</Group>
|
||||
|
||||
<Group>
|
||||
<GroupName>User/system</GroupName>
|
||||
<GroupName>User/lib</GroupName>
|
||||
<tvExp>0</tvExp>
|
||||
<tvExpOptDlg>0</tvExpOptDlg>
|
||||
<cbSel>0</cbSel>
|
||||
<RteFlg>0</RteFlg>
|
||||
<File>
|
||||
<GroupNumber>7</GroupNumber>
|
||||
<FileNumber>15</FileNumber>
|
||||
<FileType>1</FileType>
|
||||
<tvExp>0</tvExp>
|
||||
<tvExpOptDlg>0</tvExpOptDlg>
|
||||
<bDave2>0</bDave2>
|
||||
<PathWithFileName>..\User\lib\src\aes.c</PathWithFileName>
|
||||
<FilenameWithoutPath>aes.c</FilenameWithoutPath>
|
||||
<RteFlg>0</RteFlg>
|
||||
<bShared>0</bShared>
|
||||
</File>
|
||||
<File>
|
||||
<GroupNumber>7</GroupNumber>
|
||||
<FileNumber>16</FileNumber>
|
||||
<FileType>1</FileType>
|
||||
<tvExp>0</tvExp>
|
||||
<tvExpOptDlg>0</tvExpOptDlg>
|
||||
<bDave2>0</bDave2>
|
||||
<PathWithFileName>..\User\lib\src\clist.c</PathWithFileName>
|
||||
<FilenameWithoutPath>clist.c</FilenameWithoutPath>
|
||||
<RteFlg>0</RteFlg>
|
||||
<bShared>0</bShared>
|
||||
</File>
|
||||
<File>
|
||||
<GroupNumber>7</GroupNumber>
|
||||
<FileNumber>17</FileNumber>
|
||||
<FileType>1</FileType>
|
||||
<tvExp>0</tvExp>
|
||||
<tvExpOptDlg>0</tvExpOptDlg>
|
||||
<bDave2>0</bDave2>
|
||||
<PathWithFileName>..\User\lib\src\cmac.c</PathWithFileName>
|
||||
<FilenameWithoutPath>cmac.c</FilenameWithoutPath>
|
||||
<RteFlg>0</RteFlg>
|
||||
<bShared>0</bShared>
|
||||
</File>
|
||||
<File>
|
||||
<GroupNumber>7</GroupNumber>
|
||||
<FileNumber>18</FileNumber>
|
||||
|
@ -522,8 +471,8 @@
|
|||
<tvExp>0</tvExp>
|
||||
<tvExpOptDlg>0</tvExpOptDlg>
|
||||
<bDave2>0</bDave2>
|
||||
<PathWithFileName>..\User\system\btn.c</PathWithFileName>
|
||||
<FilenameWithoutPath>btn.c</FilenameWithoutPath>
|
||||
<PathWithFileName>..\User\lib\src\cmd.c</PathWithFileName>
|
||||
<FilenameWithoutPath>cmd.c</FilenameWithoutPath>
|
||||
<RteFlg>0</RteFlg>
|
||||
<bShared>0</bShared>
|
||||
</File>
|
||||
|
@ -534,8 +483,8 @@
|
|||
<tvExp>0</tvExp>
|
||||
<tvExpOptDlg>0</tvExpOptDlg>
|
||||
<bDave2>0</bDave2>
|
||||
<PathWithFileName>..\User\system\delay.c</PathWithFileName>
|
||||
<FilenameWithoutPath>delay.c</FilenameWithoutPath>
|
||||
<PathWithFileName>..\User\lib\src\data_analysis.c</PathWithFileName>
|
||||
<FilenameWithoutPath>data_analysis.c</FilenameWithoutPath>
|
||||
<RteFlg>0</RteFlg>
|
||||
<bShared>0</bShared>
|
||||
</File>
|
||||
|
@ -546,103 +495,103 @@
|
|||
<tvExp>0</tvExp>
|
||||
<tvExpOptDlg>0</tvExpOptDlg>
|
||||
<bDave2>0</bDave2>
|
||||
<PathWithFileName>..\User\system\sys.c</PathWithFileName>
|
||||
<FilenameWithoutPath>sys.c</FilenameWithoutPath>
|
||||
<PathWithFileName>..\User\lib\src\debug.c</PathWithFileName>
|
||||
<FilenameWithoutPath>debug.c</FilenameWithoutPath>
|
||||
<RteFlg>0</RteFlg>
|
||||
<bShared>0</bShared>
|
||||
</File>
|
||||
<File>
|
||||
<GroupNumber>7</GroupNumber>
|
||||
<FileNumber>21</FileNumber>
|
||||
<FileType>1</FileType>
|
||||
<tvExp>0</tvExp>
|
||||
<tvExpOptDlg>0</tvExpOptDlg>
|
||||
<bDave2>0</bDave2>
|
||||
<PathWithFileName>..\User\lib\src\filter.c</PathWithFileName>
|
||||
<FilenameWithoutPath>filter.c</FilenameWithoutPath>
|
||||
<RteFlg>0</RteFlg>
|
||||
<bShared>0</bShared>
|
||||
</File>
|
||||
<File>
|
||||
<GroupNumber>7</GroupNumber>
|
||||
<FileNumber>22</FileNumber>
|
||||
<FileType>1</FileType>
|
||||
<tvExp>0</tvExp>
|
||||
<tvExpOptDlg>0</tvExpOptDlg>
|
||||
<bDave2>0</bDave2>
|
||||
<PathWithFileName>..\User\lib\src\lib.c</PathWithFileName>
|
||||
<FilenameWithoutPath>lib.c</FilenameWithoutPath>
|
||||
<RteFlg>0</RteFlg>
|
||||
<bShared>0</bShared>
|
||||
</File>
|
||||
<File>
|
||||
<GroupNumber>7</GroupNumber>
|
||||
<FileNumber>23</FileNumber>
|
||||
<FileType>1</FileType>
|
||||
<tvExp>0</tvExp>
|
||||
<tvExpOptDlg>0</tvExpOptDlg>
|
||||
<bDave2>0</bDave2>
|
||||
<PathWithFileName>..\User\lib\src\malloc.c</PathWithFileName>
|
||||
<FilenameWithoutPath>malloc.c</FilenameWithoutPath>
|
||||
<RteFlg>0</RteFlg>
|
||||
<bShared>0</bShared>
|
||||
</File>
|
||||
<File>
|
||||
<GroupNumber>7</GroupNumber>
|
||||
<FileNumber>24</FileNumber>
|
||||
<FileType>1</FileType>
|
||||
<tvExp>0</tvExp>
|
||||
<tvExpOptDlg>0</tvExpOptDlg>
|
||||
<bDave2>0</bDave2>
|
||||
<PathWithFileName>..\User\lib\src\mlist.c</PathWithFileName>
|
||||
<FilenameWithoutPath>mlist.c</FilenameWithoutPath>
|
||||
<RteFlg>0</RteFlg>
|
||||
<bShared>0</bShared>
|
||||
</File>
|
||||
<File>
|
||||
<GroupNumber>7</GroupNumber>
|
||||
<FileNumber>25</FileNumber>
|
||||
<FileType>1</FileType>
|
||||
<tvExp>0</tvExp>
|
||||
<tvExpOptDlg>0</tvExpOptDlg>
|
||||
<bDave2>0</bDave2>
|
||||
<PathWithFileName>..\User\lib\src\pbuf.c</PathWithFileName>
|
||||
<FilenameWithoutPath>pbuf.c</FilenameWithoutPath>
|
||||
<RteFlg>0</RteFlg>
|
||||
<bShared>0</bShared>
|
||||
</File>
|
||||
<File>
|
||||
<GroupNumber>7</GroupNumber>
|
||||
<FileNumber>26</FileNumber>
|
||||
<FileType>1</FileType>
|
||||
<tvExp>0</tvExp>
|
||||
<tvExpOptDlg>0</tvExpOptDlg>
|
||||
<bDave2>0</bDave2>
|
||||
<PathWithFileName>..\User\lib\src\sqqueue.c</PathWithFileName>
|
||||
<FilenameWithoutPath>sqqueue.c</FilenameWithoutPath>
|
||||
<RteFlg>0</RteFlg>
|
||||
<bShared>0</bShared>
|
||||
</File>
|
||||
<File>
|
||||
<GroupNumber>7</GroupNumber>
|
||||
<FileNumber>27</FileNumber>
|
||||
<FileType>1</FileType>
|
||||
<tvExp>0</tvExp>
|
||||
<tvExpOptDlg>0</tvExpOptDlg>
|
||||
<bDave2>0</bDave2>
|
||||
<PathWithFileName>..\User\lib\flow\flow_core.c</PathWithFileName>
|
||||
<FilenameWithoutPath>flow_core.c</FilenameWithoutPath>
|
||||
<RteFlg>0</RteFlg>
|
||||
<bShared>0</bShared>
|
||||
</File>
|
||||
</Group>
|
||||
|
||||
<Group>
|
||||
<GroupName>User/lib</GroupName>
|
||||
<GroupName>User/system</GroupName>
|
||||
<tvExp>0</tvExp>
|
||||
<tvExpOptDlg>0</tvExpOptDlg>
|
||||
<cbSel>0</cbSel>
|
||||
<RteFlg>0</RteFlg>
|
||||
<File>
|
||||
<GroupNumber>8</GroupNumber>
|
||||
<FileNumber>21</FileNumber>
|
||||
<FileType>1</FileType>
|
||||
<tvExp>0</tvExp>
|
||||
<tvExpOptDlg>0</tvExpOptDlg>
|
||||
<bDave2>0</bDave2>
|
||||
<PathWithFileName>..\User\system\lib\src\aes.c</PathWithFileName>
|
||||
<FilenameWithoutPath>aes.c</FilenameWithoutPath>
|
||||
<RteFlg>0</RteFlg>
|
||||
<bShared>0</bShared>
|
||||
</File>
|
||||
<File>
|
||||
<GroupNumber>8</GroupNumber>
|
||||
<FileNumber>22</FileNumber>
|
||||
<FileType>1</FileType>
|
||||
<tvExp>0</tvExp>
|
||||
<tvExpOptDlg>0</tvExpOptDlg>
|
||||
<bDave2>0</bDave2>
|
||||
<PathWithFileName>..\User\system\lib\src\clist.c</PathWithFileName>
|
||||
<FilenameWithoutPath>clist.c</FilenameWithoutPath>
|
||||
<RteFlg>0</RteFlg>
|
||||
<bShared>0</bShared>
|
||||
</File>
|
||||
<File>
|
||||
<GroupNumber>8</GroupNumber>
|
||||
<FileNumber>23</FileNumber>
|
||||
<FileType>1</FileType>
|
||||
<tvExp>0</tvExp>
|
||||
<tvExpOptDlg>0</tvExpOptDlg>
|
||||
<bDave2>0</bDave2>
|
||||
<PathWithFileName>..\User\system\lib\src\cmac.c</PathWithFileName>
|
||||
<FilenameWithoutPath>cmac.c</FilenameWithoutPath>
|
||||
<RteFlg>0</RteFlg>
|
||||
<bShared>0</bShared>
|
||||
</File>
|
||||
<File>
|
||||
<GroupNumber>8</GroupNumber>
|
||||
<FileNumber>24</FileNumber>
|
||||
<FileType>1</FileType>
|
||||
<tvExp>0</tvExp>
|
||||
<tvExpOptDlg>0</tvExpOptDlg>
|
||||
<bDave2>0</bDave2>
|
||||
<PathWithFileName>..\User\system\lib\src\cmd.c</PathWithFileName>
|
||||
<FilenameWithoutPath>cmd.c</FilenameWithoutPath>
|
||||
<RteFlg>0</RteFlg>
|
||||
<bShared>0</bShared>
|
||||
</File>
|
||||
<File>
|
||||
<GroupNumber>8</GroupNumber>
|
||||
<FileNumber>25</FileNumber>
|
||||
<FileType>1</FileType>
|
||||
<tvExp>0</tvExp>
|
||||
<tvExpOptDlg>0</tvExpOptDlg>
|
||||
<bDave2>0</bDave2>
|
||||
<PathWithFileName>..\User\system\lib\src\data_analysis.c</PathWithFileName>
|
||||
<FilenameWithoutPath>data_analysis.c</FilenameWithoutPath>
|
||||
<RteFlg>0</RteFlg>
|
||||
<bShared>0</bShared>
|
||||
</File>
|
||||
<File>
|
||||
<GroupNumber>8</GroupNumber>
|
||||
<FileNumber>26</FileNumber>
|
||||
<FileType>1</FileType>
|
||||
<tvExp>0</tvExp>
|
||||
<tvExpOptDlg>0</tvExpOptDlg>
|
||||
<bDave2>0</bDave2>
|
||||
<PathWithFileName>..\User\system\lib\src\debug.c</PathWithFileName>
|
||||
<FilenameWithoutPath>debug.c</FilenameWithoutPath>
|
||||
<RteFlg>0</RteFlg>
|
||||
<bShared>0</bShared>
|
||||
</File>
|
||||
<File>
|
||||
<GroupNumber>8</GroupNumber>
|
||||
<FileNumber>27</FileNumber>
|
||||
<FileType>1</FileType>
|
||||
<tvExp>0</tvExp>
|
||||
<tvExpOptDlg>0</tvExpOptDlg>
|
||||
<bDave2>0</bDave2>
|
||||
<PathWithFileName>..\User\system\lib\src\filter.c</PathWithFileName>
|
||||
<FilenameWithoutPath>filter.c</FilenameWithoutPath>
|
||||
<RteFlg>0</RteFlg>
|
||||
<bShared>0</bShared>
|
||||
</File>
|
||||
<File>
|
||||
<GroupNumber>8</GroupNumber>
|
||||
<FileNumber>28</FileNumber>
|
||||
|
@ -650,8 +599,8 @@
|
|||
<tvExp>0</tvExp>
|
||||
<tvExpOptDlg>0</tvExpOptDlg>
|
||||
<bDave2>0</bDave2>
|
||||
<PathWithFileName>..\User\system\lib\src\lib.c</PathWithFileName>
|
||||
<FilenameWithoutPath>lib.c</FilenameWithoutPath>
|
||||
<PathWithFileName>..\User\system\src\btn.c</PathWithFileName>
|
||||
<FilenameWithoutPath>btn.c</FilenameWithoutPath>
|
||||
<RteFlg>0</RteFlg>
|
||||
<bShared>0</bShared>
|
||||
</File>
|
||||
|
@ -662,8 +611,8 @@
|
|||
<tvExp>0</tvExp>
|
||||
<tvExpOptDlg>0</tvExpOptDlg>
|
||||
<bDave2>0</bDave2>
|
||||
<PathWithFileName>..\User\system\lib\src\malloc.c</PathWithFileName>
|
||||
<FilenameWithoutPath>malloc.c</FilenameWithoutPath>
|
||||
<PathWithFileName>..\User\system\src\delay.c</PathWithFileName>
|
||||
<FilenameWithoutPath>delay.c</FilenameWithoutPath>
|
||||
<RteFlg>0</RteFlg>
|
||||
<bShared>0</bShared>
|
||||
</File>
|
||||
|
@ -674,8 +623,8 @@
|
|||
<tvExp>0</tvExp>
|
||||
<tvExpOptDlg>0</tvExpOptDlg>
|
||||
<bDave2>0</bDave2>
|
||||
<PathWithFileName>..\User\system\lib\src\mlist.c</PathWithFileName>
|
||||
<FilenameWithoutPath>mlist.c</FilenameWithoutPath>
|
||||
<PathWithFileName>..\User\system\src\sys.c</PathWithFileName>
|
||||
<FilenameWithoutPath>sys.c</FilenameWithoutPath>
|
||||
<RteFlg>0</RteFlg>
|
||||
<bShared>0</bShared>
|
||||
</File>
|
||||
|
@ -686,8 +635,8 @@
|
|||
<tvExp>0</tvExp>
|
||||
<tvExpOptDlg>0</tvExpOptDlg>
|
||||
<bDave2>0</bDave2>
|
||||
<PathWithFileName>..\User\system\lib\src\pbuf.c</PathWithFileName>
|
||||
<FilenameWithoutPath>pbuf.c</FilenameWithoutPath>
|
||||
<PathWithFileName>..\User\system\bsp\adcs.c</PathWithFileName>
|
||||
<FilenameWithoutPath>adcs.c</FilenameWithoutPath>
|
||||
<RteFlg>0</RteFlg>
|
||||
<bShared>0</bShared>
|
||||
</File>
|
||||
|
@ -698,8 +647,8 @@
|
|||
<tvExp>0</tvExp>
|
||||
<tvExpOptDlg>0</tvExpOptDlg>
|
||||
<bDave2>0</bDave2>
|
||||
<PathWithFileName>..\User\system\lib\src\sqqueue.c</PathWithFileName>
|
||||
<FilenameWithoutPath>sqqueue.c</FilenameWithoutPath>
|
||||
<PathWithFileName>..\User\system\bsp\bsp.c</PathWithFileName>
|
||||
<FilenameWithoutPath>bsp.c</FilenameWithoutPath>
|
||||
<RteFlg>0</RteFlg>
|
||||
<bShared>0</bShared>
|
||||
</File>
|
||||
|
@ -710,8 +659,8 @@
|
|||
<tvExp>0</tvExp>
|
||||
<tvExpOptDlg>0</tvExpOptDlg>
|
||||
<bDave2>0</bDave2>
|
||||
<PathWithFileName>..\User\system\lib\src\storage.c</PathWithFileName>
|
||||
<FilenameWithoutPath>storage.c</FilenameWithoutPath>
|
||||
<PathWithFileName>..\User\system\bsp\gpios.c</PathWithFileName>
|
||||
<FilenameWithoutPath>gpios.c</FilenameWithoutPath>
|
||||
<RteFlg>0</RteFlg>
|
||||
<bShared>0</bShared>
|
||||
</File>
|
||||
|
@ -722,8 +671,8 @@
|
|||
<tvExp>0</tvExp>
|
||||
<tvExpOptDlg>0</tvExpOptDlg>
|
||||
<bDave2>0</bDave2>
|
||||
<PathWithFileName>..\User\system\lib\src\wl_flash.c</PathWithFileName>
|
||||
<FilenameWithoutPath>wl_flash.c</FilenameWithoutPath>
|
||||
<PathWithFileName>..\User\system\bsp\i2cs.c</PathWithFileName>
|
||||
<FilenameWithoutPath>i2cs.c</FilenameWithoutPath>
|
||||
<RteFlg>0</RteFlg>
|
||||
<bShared>0</bShared>
|
||||
</File>
|
||||
|
@ -734,67 +683,59 @@
|
|||
<tvExp>0</tvExp>
|
||||
<tvExpOptDlg>0</tvExpOptDlg>
|
||||
<bDave2>0</bDave2>
|
||||
<PathWithFileName>..\User\system\lib\flow\flow_core.c</PathWithFileName>
|
||||
<FilenameWithoutPath>flow_core.c</FilenameWithoutPath>
|
||||
<PathWithFileName>..\User\system\bsp\iwdgs.c</PathWithFileName>
|
||||
<FilenameWithoutPath>iwdgs.c</FilenameWithoutPath>
|
||||
<RteFlg>0</RteFlg>
|
||||
<bShared>0</bShared>
|
||||
</File>
|
||||
</Group>
|
||||
|
||||
<Group>
|
||||
<GroupName>User/system/bsp</GroupName>
|
||||
<tvExp>0</tvExp>
|
||||
<tvExpOptDlg>0</tvExpOptDlg>
|
||||
<cbSel>0</cbSel>
|
||||
<RteFlg>0</RteFlg>
|
||||
<File>
|
||||
<GroupNumber>9</GroupNumber>
|
||||
<GroupNumber>8</GroupNumber>
|
||||
<FileNumber>36</FileNumber>
|
||||
<FileType>1</FileType>
|
||||
<tvExp>0</tvExp>
|
||||
<tvExpOptDlg>0</tvExpOptDlg>
|
||||
<bDave2>0</bDave2>
|
||||
<PathWithFileName>..\User\system\bsp\adcs.c</PathWithFileName>
|
||||
<FilenameWithoutPath>adcs.c</FilenameWithoutPath>
|
||||
<PathWithFileName>..\User\system\bsp\pwms.c</PathWithFileName>
|
||||
<FilenameWithoutPath>pwms.c</FilenameWithoutPath>
|
||||
<RteFlg>0</RteFlg>
|
||||
<bShared>0</bShared>
|
||||
</File>
|
||||
<File>
|
||||
<GroupNumber>9</GroupNumber>
|
||||
<GroupNumber>8</GroupNumber>
|
||||
<FileNumber>37</FileNumber>
|
||||
<FileType>1</FileType>
|
||||
<tvExp>0</tvExp>
|
||||
<tvExpOptDlg>0</tvExpOptDlg>
|
||||
<bDave2>0</bDave2>
|
||||
<PathWithFileName>..\User\system\bsp\bsp.c</PathWithFileName>
|
||||
<FilenameWithoutPath>bsp.c</FilenameWithoutPath>
|
||||
<PathWithFileName>..\User\system\bsp\spis.c</PathWithFileName>
|
||||
<FilenameWithoutPath>spis.c</FilenameWithoutPath>
|
||||
<RteFlg>0</RteFlg>
|
||||
<bShared>0</bShared>
|
||||
</File>
|
||||
<File>
|
||||
<GroupNumber>9</GroupNumber>
|
||||
<GroupNumber>8</GroupNumber>
|
||||
<FileNumber>38</FileNumber>
|
||||
<FileType>1</FileType>
|
||||
<tvExp>0</tvExp>
|
||||
<tvExpOptDlg>0</tvExpOptDlg>
|
||||
<bDave2>0</bDave2>
|
||||
<PathWithFileName>..\User\system\bsp\gpios.c</PathWithFileName>
|
||||
<FilenameWithoutPath>gpios.c</FilenameWithoutPath>
|
||||
<RteFlg>0</RteFlg>
|
||||
<bShared>0</bShared>
|
||||
</File>
|
||||
<File>
|
||||
<GroupNumber>9</GroupNumber>
|
||||
<FileNumber>39</FileNumber>
|
||||
<FileType>1</FileType>
|
||||
<tvExp>0</tvExp>
|
||||
<tvExpOptDlg>0</tvExpOptDlg>
|
||||
<bDave2>0</bDave2>
|
||||
<PathWithFileName>..\User\system\bsp\tims.c</PathWithFileName>
|
||||
<FilenameWithoutPath>tims.c</FilenameWithoutPath>
|
||||
<RteFlg>0</RteFlg>
|
||||
<bShared>0</bShared>
|
||||
</File>
|
||||
<File>
|
||||
<GroupNumber>8</GroupNumber>
|
||||
<FileNumber>39</FileNumber>
|
||||
<FileType>1</FileType>
|
||||
<tvExp>0</tvExp>
|
||||
<tvExpOptDlg>0</tvExpOptDlg>
|
||||
<bDave2>0</bDave2>
|
||||
<PathWithFileName>..\User\system\bsp\uarts.c</PathWithFileName>
|
||||
<FilenameWithoutPath>uarts.c</FilenameWithoutPath>
|
||||
<RteFlg>0</RteFlg>
|
||||
<bShared>0</bShared>
|
||||
</File>
|
||||
</Group>
|
||||
|
||||
<Group>
|
||||
|
|
|
@ -53,8 +53,8 @@
|
|||
<CreateExecutable>1</CreateExecutable>
|
||||
<CreateLib>0</CreateLib>
|
||||
<CreateHexFile>1</CreateHexFile>
|
||||
<DebugInformation>1</DebugInformation>
|
||||
<BrowseInformation>0</BrowseInformation>
|
||||
<DebugInformation>0</DebugInformation>
|
||||
<BrowseInformation>1</BrowseInformation>
|
||||
<ListingPath></ListingPath>
|
||||
<HexFormatSelection>1</HexFormatSelection>
|
||||
<Merge32K>0</Merge32K>
|
||||
|
@ -339,7 +339,7 @@
|
|||
<MiscControls></MiscControls>
|
||||
<Define>STM32,USE_FULL_LL_DRIVER,HSE_VALUE=8000000,HSE_STARTUP_TIMEOUT=100,LSE_STARTUP_TIMEOUT=5000,LSE_VALUE=32768,EXTERNAL_CLOCK_VALUE=12288000,HSI_VALUE=16000000,LSI_VALUE=32000,VDD_VALUE=3300,PREFETCH_ENABLE=1,INSTRUCTION_CACHE_ENABLE=1,DATA_CACHE_ENABLE=1,STM32F407xx</Define>
|
||||
<Undefine></Undefine>
|
||||
<IncludePath>../Inc;../Drivers/STM32F4xx_HAL_Driver/Inc;../Drivers/CMSIS/Device/ST/STM32F4xx/Include;../Drivers/CMSIS/Include;../User;../User/application;../User/board;../User/system;../User/system/bsp;../User/system/lib/inc;../User/system/lib/flow;../User/system/lib/control/inc</IncludePath>
|
||||
<IncludePath>../Inc;../Drivers/STM32F4xx_HAL_Driver/Inc;../Drivers/CMSIS/Device/ST/STM32F4xx/Include;../Drivers/CMSIS/Include;../User;../User/application;../User/board;../User/system/inc;../User/system/bsp;../User/lib/inc;../User/lib/flow;../User/lib/control/inc</IncludePath>
|
||||
</VariousControls>
|
||||
</Cads>
|
||||
<Aads>
|
||||
|
@ -403,118 +403,6 @@
|
|||
<FileType>1</FileType>
|
||||
<FilePath>../Src/gpio.c</FilePath>
|
||||
</File>
|
||||
<File>
|
||||
<FileName>adc.c</FileName>
|
||||
<FileType>1</FileType>
|
||||
<FilePath>../Src/adc.c</FilePath>
|
||||
<FileOption>
|
||||
<CommonProperty>
|
||||
<UseCPPCompiler>2</UseCPPCompiler>
|
||||
<RVCTCodeConst>0</RVCTCodeConst>
|
||||
<RVCTZI>0</RVCTZI>
|
||||
<RVCTOtherData>0</RVCTOtherData>
|
||||
<ModuleSelection>0</ModuleSelection>
|
||||
<IncludeInBuild>1</IncludeInBuild>
|
||||
<AlwaysBuild>2</AlwaysBuild>
|
||||
<GenerateAssemblyFile>2</GenerateAssemblyFile>
|
||||
<AssembleAssemblyFile>2</AssembleAssemblyFile>
|
||||
<PublicsOnly>2</PublicsOnly>
|
||||
<StopOnExitCode>11</StopOnExitCode>
|
||||
<CustomArgument></CustomArgument>
|
||||
<IncludeLibraryModules></IncludeLibraryModules>
|
||||
<ComprImg>1</ComprImg>
|
||||
</CommonProperty>
|
||||
<FileArmAds>
|
||||
<Cads>
|
||||
<interw>2</interw>
|
||||
<Optim>0</Optim>
|
||||
<oTime>2</oTime>
|
||||
<SplitLS>2</SplitLS>
|
||||
<OneElfS>2</OneElfS>
|
||||
<Strict>2</Strict>
|
||||
<EnumInt>2</EnumInt>
|
||||
<PlainCh>2</PlainCh>
|
||||
<Ropi>2</Ropi>
|
||||
<Rwpi>2</Rwpi>
|
||||
<wLevel>0</wLevel>
|
||||
<uThumb>2</uThumb>
|
||||
<uSurpInc>2</uSurpInc>
|
||||
<uC99>2</uC99>
|
||||
<uGnu>2</uGnu>
|
||||
<useXO>2</useXO>
|
||||
<v6Lang>0</v6Lang>
|
||||
<v6LangP>0</v6LangP>
|
||||
<vShortEn>2</vShortEn>
|
||||
<vShortWch>2</vShortWch>
|
||||
<v6Lto>2</v6Lto>
|
||||
<v6WtE>2</v6WtE>
|
||||
<v6Rtti>2</v6Rtti>
|
||||
<VariousControls>
|
||||
<MiscControls></MiscControls>
|
||||
<Define></Define>
|
||||
<Undefine></Undefine>
|
||||
<IncludePath></IncludePath>
|
||||
</VariousControls>
|
||||
</Cads>
|
||||
</FileArmAds>
|
||||
</FileOption>
|
||||
</File>
|
||||
<File>
|
||||
<FileName>dma.c</FileName>
|
||||
<FileType>1</FileType>
|
||||
<FilePath>../Src/dma.c</FilePath>
|
||||
<FileOption>
|
||||
<CommonProperty>
|
||||
<UseCPPCompiler>2</UseCPPCompiler>
|
||||
<RVCTCodeConst>0</RVCTCodeConst>
|
||||
<RVCTZI>0</RVCTZI>
|
||||
<RVCTOtherData>0</RVCTOtherData>
|
||||
<ModuleSelection>0</ModuleSelection>
|
||||
<IncludeInBuild>1</IncludeInBuild>
|
||||
<AlwaysBuild>2</AlwaysBuild>
|
||||
<GenerateAssemblyFile>2</GenerateAssemblyFile>
|
||||
<AssembleAssemblyFile>2</AssembleAssemblyFile>
|
||||
<PublicsOnly>2</PublicsOnly>
|
||||
<StopOnExitCode>11</StopOnExitCode>
|
||||
<CustomArgument></CustomArgument>
|
||||
<IncludeLibraryModules></IncludeLibraryModules>
|
||||
<ComprImg>1</ComprImg>
|
||||
</CommonProperty>
|
||||
<FileArmAds>
|
||||
<Cads>
|
||||
<interw>2</interw>
|
||||
<Optim>0</Optim>
|
||||
<oTime>2</oTime>
|
||||
<SplitLS>2</SplitLS>
|
||||
<OneElfS>2</OneElfS>
|
||||
<Strict>2</Strict>
|
||||
<EnumInt>2</EnumInt>
|
||||
<PlainCh>2</PlainCh>
|
||||
<Ropi>2</Ropi>
|
||||
<Rwpi>2</Rwpi>
|
||||
<wLevel>0</wLevel>
|
||||
<uThumb>2</uThumb>
|
||||
<uSurpInc>2</uSurpInc>
|
||||
<uC99>2</uC99>
|
||||
<uGnu>2</uGnu>
|
||||
<useXO>2</useXO>
|
||||
<v6Lang>0</v6Lang>
|
||||
<v6LangP>0</v6LangP>
|
||||
<vShortEn>2</vShortEn>
|
||||
<vShortWch>2</vShortWch>
|
||||
<v6Lto>2</v6Lto>
|
||||
<v6WtE>2</v6WtE>
|
||||
<v6Rtti>2</v6Rtti>
|
||||
<VariousControls>
|
||||
<MiscControls></MiscControls>
|
||||
<Define></Define>
|
||||
<Undefine></Undefine>
|
||||
<IncludePath></IncludePath>
|
||||
</VariousControls>
|
||||
</Cads>
|
||||
</FileArmAds>
|
||||
</FileOption>
|
||||
</File>
|
||||
<File>
|
||||
<FileName>tim.c</FileName>
|
||||
<FileType>1</FileType>
|
||||
|
@ -587,9 +475,9 @@
|
|||
<FilePath>../Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_ll_gpio.c</FilePath>
|
||||
</File>
|
||||
<File>
|
||||
<FileName>stm32f4xx_ll_adc.c</FileName>
|
||||
<FileName>stm32f4xx_ll_tim.c</FileName>
|
||||
<FileType>1</FileType>
|
||||
<FilePath>../Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_ll_adc.c</FilePath>
|
||||
<FilePath>../Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_ll_tim.c</FilePath>
|
||||
<FileOption>
|
||||
<CommonProperty>
|
||||
<UseCPPCompiler>2</UseCPPCompiler>
|
||||
|
@ -713,10 +601,130 @@
|
|||
<FileType>1</FileType>
|
||||
<FilePath>../Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_ll_exti.c</FilePath>
|
||||
</File>
|
||||
</Files>
|
||||
</Group>
|
||||
<Group>
|
||||
<GroupName>Drivers/CMSIS</GroupName>
|
||||
<Files>
|
||||
<File>
|
||||
<FileName>stm32f4xx_ll_tim.c</FileName>
|
||||
<FileName>system_stm32f4xx.c</FileName>
|
||||
<FileType>1</FileType>
|
||||
<FilePath>../Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_ll_tim.c</FilePath>
|
||||
<FilePath>../Src/system_stm32f4xx.c</FilePath>
|
||||
</File>
|
||||
</Files>
|
||||
</Group>
|
||||
<Group>
|
||||
<GroupName>User/board</GroupName>
|
||||
<Files>
|
||||
<File>
|
||||
<FileName>board.c</FileName>
|
||||
<FileType>1</FileType>
|
||||
<FilePath>..\User\board\board.c</FilePath>
|
||||
</File>
|
||||
</Files>
|
||||
</Group>
|
||||
<Group>
|
||||
<GroupName>User/application</GroupName>
|
||||
<Files>
|
||||
<File>
|
||||
<FileName>app.c</FileName>
|
||||
<FileType>1</FileType>
|
||||
<FilePath>..\User\application\app.c</FilePath>
|
||||
</File>
|
||||
</Files>
|
||||
</Group>
|
||||
<Group>
|
||||
<GroupName>User/lib</GroupName>
|
||||
<Files>
|
||||
<File>
|
||||
<FileName>aes.c</FileName>
|
||||
<FileType>1</FileType>
|
||||
<FilePath>..\User\lib\src\aes.c</FilePath>
|
||||
</File>
|
||||
<File>
|
||||
<FileName>clist.c</FileName>
|
||||
<FileType>1</FileType>
|
||||
<FilePath>..\User\lib\src\clist.c</FilePath>
|
||||
</File>
|
||||
<File>
|
||||
<FileName>cmac.c</FileName>
|
||||
<FileType>1</FileType>
|
||||
<FilePath>..\User\lib\src\cmac.c</FilePath>
|
||||
</File>
|
||||
<File>
|
||||
<FileName>cmd.c</FileName>
|
||||
<FileType>1</FileType>
|
||||
<FilePath>..\User\lib\src\cmd.c</FilePath>
|
||||
</File>
|
||||
<File>
|
||||
<FileName>data_analysis.c</FileName>
|
||||
<FileType>1</FileType>
|
||||
<FilePath>..\User\lib\src\data_analysis.c</FilePath>
|
||||
</File>
|
||||
<File>
|
||||
<FileName>debug.c</FileName>
|
||||
<FileType>1</FileType>
|
||||
<FilePath>..\User\lib\src\debug.c</FilePath>
|
||||
</File>
|
||||
<File>
|
||||
<FileName>filter.c</FileName>
|
||||
<FileType>1</FileType>
|
||||
<FilePath>..\User\lib\src\filter.c</FilePath>
|
||||
</File>
|
||||
<File>
|
||||
<FileName>lib.c</FileName>
|
||||
<FileType>1</FileType>
|
||||
<FilePath>..\User\lib\src\lib.c</FilePath>
|
||||
</File>
|
||||
<File>
|
||||
<FileName>malloc.c</FileName>
|
||||
<FileType>1</FileType>
|
||||
<FilePath>..\User\lib\src\malloc.c</FilePath>
|
||||
</File>
|
||||
<File>
|
||||
<FileName>mlist.c</FileName>
|
||||
<FileType>1</FileType>
|
||||
<FilePath>..\User\lib\src\mlist.c</FilePath>
|
||||
</File>
|
||||
<File>
|
||||
<FileName>pbuf.c</FileName>
|
||||
<FileType>1</FileType>
|
||||
<FilePath>..\User\lib\src\pbuf.c</FilePath>
|
||||
</File>
|
||||
<File>
|
||||
<FileName>sqqueue.c</FileName>
|
||||
<FileType>1</FileType>
|
||||
<FilePath>..\User\lib\src\sqqueue.c</FilePath>
|
||||
</File>
|
||||
<File>
|
||||
<FileName>flow_core.c</FileName>
|
||||
<FileType>1</FileType>
|
||||
<FilePath>..\User\lib\flow\flow_core.c</FilePath>
|
||||
</File>
|
||||
</Files>
|
||||
</Group>
|
||||
<Group>
|
||||
<GroupName>User/system</GroupName>
|
||||
<Files>
|
||||
<File>
|
||||
<FileName>btn.c</FileName>
|
||||
<FileType>1</FileType>
|
||||
<FilePath>..\User\system\src\btn.c</FilePath>
|
||||
</File>
|
||||
<File>
|
||||
<FileName>delay.c</FileName>
|
||||
<FileType>1</FileType>
|
||||
<FilePath>..\User\system\src\delay.c</FilePath>
|
||||
</File>
|
||||
<File>
|
||||
<FileName>sys.c</FileName>
|
||||
<FileType>1</FileType>
|
||||
<FilePath>..\User\system\src\sys.c</FilePath>
|
||||
</File>
|
||||
<File>
|
||||
<FileName>adcs.c</FileName>
|
||||
<FileType>1</FileType>
|
||||
<FilePath>..\User\system\bsp\adcs.c</FilePath>
|
||||
<FileOption>
|
||||
<CommonProperty>
|
||||
<UseCPPCompiler>2</UseCPPCompiler>
|
||||
|
@ -724,8 +732,252 @@
|
|||
<RVCTZI>0</RVCTZI>
|
||||
<RVCTOtherData>0</RVCTOtherData>
|
||||
<ModuleSelection>0</ModuleSelection>
|
||||
<IncludeInBuild>1</IncludeInBuild>
|
||||
<AlwaysBuild>2</AlwaysBuild>
|
||||
<IncludeInBuild>0</IncludeInBuild>
|
||||
<AlwaysBuild>0</AlwaysBuild>
|
||||
<GenerateAssemblyFile>2</GenerateAssemblyFile>
|
||||
<AssembleAssemblyFile>2</AssembleAssemblyFile>
|
||||
<PublicsOnly>2</PublicsOnly>
|
||||
<StopOnExitCode>11</StopOnExitCode>
|
||||
<CustomArgument></CustomArgument>
|
||||
<IncludeLibraryModules></IncludeLibraryModules>
|
||||
<ComprImg>1</ComprImg>
|
||||
</CommonProperty>
|
||||
<FileArmAds>
|
||||
<Cads>
|
||||
<interw>2</interw>
|
||||
<Optim>0</Optim>
|
||||
<oTime>2</oTime>
|
||||
<SplitLS>2</SplitLS>
|
||||
<OneElfS>2</OneElfS>
|
||||
<Strict>2</Strict>
|
||||
<EnumInt>2</EnumInt>
|
||||
<PlainCh>2</PlainCh>
|
||||
<Ropi>2</Ropi>
|
||||
<Rwpi>2</Rwpi>
|
||||
<wLevel>0</wLevel>
|
||||
<uThumb>2</uThumb>
|
||||
<uSurpInc>2</uSurpInc>
|
||||
<uC99>2</uC99>
|
||||
<uGnu>2</uGnu>
|
||||
<useXO>2</useXO>
|
||||
<v6Lang>0</v6Lang>
|
||||
<v6LangP>0</v6LangP>
|
||||
<vShortEn>2</vShortEn>
|
||||
<vShortWch>2</vShortWch>
|
||||
<v6Lto>2</v6Lto>
|
||||
<v6WtE>2</v6WtE>
|
||||
<v6Rtti>2</v6Rtti>
|
||||
<VariousControls>
|
||||
<MiscControls></MiscControls>
|
||||
<Define></Define>
|
||||
<Undefine></Undefine>
|
||||
<IncludePath></IncludePath>
|
||||
</VariousControls>
|
||||
</Cads>
|
||||
</FileArmAds>
|
||||
</FileOption>
|
||||
</File>
|
||||
<File>
|
||||
<FileName>bsp.c</FileName>
|
||||
<FileType>1</FileType>
|
||||
<FilePath>..\User\system\bsp\bsp.c</FilePath>
|
||||
</File>
|
||||
<File>
|
||||
<FileName>gpios.c</FileName>
|
||||
<FileType>1</FileType>
|
||||
<FilePath>..\User\system\bsp\gpios.c</FilePath>
|
||||
</File>
|
||||
<File>
|
||||
<FileName>i2cs.c</FileName>
|
||||
<FileType>1</FileType>
|
||||
<FilePath>..\User\system\bsp\i2cs.c</FilePath>
|
||||
<FileOption>
|
||||
<CommonProperty>
|
||||
<UseCPPCompiler>2</UseCPPCompiler>
|
||||
<RVCTCodeConst>0</RVCTCodeConst>
|
||||
<RVCTZI>0</RVCTZI>
|
||||
<RVCTOtherData>0</RVCTOtherData>
|
||||
<ModuleSelection>0</ModuleSelection>
|
||||
<IncludeInBuild>0</IncludeInBuild>
|
||||
<AlwaysBuild>0</AlwaysBuild>
|
||||
<GenerateAssemblyFile>2</GenerateAssemblyFile>
|
||||
<AssembleAssemblyFile>2</AssembleAssemblyFile>
|
||||
<PublicsOnly>2</PublicsOnly>
|
||||
<StopOnExitCode>11</StopOnExitCode>
|
||||
<CustomArgument></CustomArgument>
|
||||
<IncludeLibraryModules></IncludeLibraryModules>
|
||||
<ComprImg>1</ComprImg>
|
||||
</CommonProperty>
|
||||
<FileArmAds>
|
||||
<Cads>
|
||||
<interw>2</interw>
|
||||
<Optim>0</Optim>
|
||||
<oTime>2</oTime>
|
||||
<SplitLS>2</SplitLS>
|
||||
<OneElfS>2</OneElfS>
|
||||
<Strict>2</Strict>
|
||||
<EnumInt>2</EnumInt>
|
||||
<PlainCh>2</PlainCh>
|
||||
<Ropi>2</Ropi>
|
||||
<Rwpi>2</Rwpi>
|
||||
<wLevel>0</wLevel>
|
||||
<uThumb>2</uThumb>
|
||||
<uSurpInc>2</uSurpInc>
|
||||
<uC99>2</uC99>
|
||||
<uGnu>2</uGnu>
|
||||
<useXO>2</useXO>
|
||||
<v6Lang>0</v6Lang>
|
||||
<v6LangP>0</v6LangP>
|
||||
<vShortEn>2</vShortEn>
|
||||
<vShortWch>2</vShortWch>
|
||||
<v6Lto>2</v6Lto>
|
||||
<v6WtE>2</v6WtE>
|
||||
<v6Rtti>2</v6Rtti>
|
||||
<VariousControls>
|
||||
<MiscControls></MiscControls>
|
||||
<Define></Define>
|
||||
<Undefine></Undefine>
|
||||
<IncludePath></IncludePath>
|
||||
</VariousControls>
|
||||
</Cads>
|
||||
</FileArmAds>
|
||||
</FileOption>
|
||||
</File>
|
||||
<File>
|
||||
<FileName>iwdgs.c</FileName>
|
||||
<FileType>1</FileType>
|
||||
<FilePath>..\User\system\bsp\iwdgs.c</FilePath>
|
||||
</File>
|
||||
<File>
|
||||
<FileName>pwms.c</FileName>
|
||||
<FileType>1</FileType>
|
||||
<FilePath>..\User\system\bsp\pwms.c</FilePath>
|
||||
<FileOption>
|
||||
<CommonProperty>
|
||||
<UseCPPCompiler>2</UseCPPCompiler>
|
||||
<RVCTCodeConst>0</RVCTCodeConst>
|
||||
<RVCTZI>0</RVCTZI>
|
||||
<RVCTOtherData>0</RVCTOtherData>
|
||||
<ModuleSelection>0</ModuleSelection>
|
||||
<IncludeInBuild>0</IncludeInBuild>
|
||||
<AlwaysBuild>0</AlwaysBuild>
|
||||
<GenerateAssemblyFile>2</GenerateAssemblyFile>
|
||||
<AssembleAssemblyFile>2</AssembleAssemblyFile>
|
||||
<PublicsOnly>2</PublicsOnly>
|
||||
<StopOnExitCode>11</StopOnExitCode>
|
||||
<CustomArgument></CustomArgument>
|
||||
<IncludeLibraryModules></IncludeLibraryModules>
|
||||
<ComprImg>1</ComprImg>
|
||||
</CommonProperty>
|
||||
<FileArmAds>
|
||||
<Cads>
|
||||
<interw>2</interw>
|
||||
<Optim>0</Optim>
|
||||
<oTime>2</oTime>
|
||||
<SplitLS>2</SplitLS>
|
||||
<OneElfS>2</OneElfS>
|
||||
<Strict>2</Strict>
|
||||
<EnumInt>2</EnumInt>
|
||||
<PlainCh>2</PlainCh>
|
||||
<Ropi>2</Ropi>
|
||||
<Rwpi>2</Rwpi>
|
||||
<wLevel>0</wLevel>
|
||||
<uThumb>2</uThumb>
|
||||
<uSurpInc>2</uSurpInc>
|
||||
<uC99>2</uC99>
|
||||
<uGnu>2</uGnu>
|
||||
<useXO>2</useXO>
|
||||
<v6Lang>0</v6Lang>
|
||||
<v6LangP>0</v6LangP>
|
||||
<vShortEn>2</vShortEn>
|
||||
<vShortWch>2</vShortWch>
|
||||
<v6Lto>2</v6Lto>
|
||||
<v6WtE>2</v6WtE>
|
||||
<v6Rtti>2</v6Rtti>
|
||||
<VariousControls>
|
||||
<MiscControls></MiscControls>
|
||||
<Define></Define>
|
||||
<Undefine></Undefine>
|
||||
<IncludePath></IncludePath>
|
||||
</VariousControls>
|
||||
</Cads>
|
||||
</FileArmAds>
|
||||
</FileOption>
|
||||
</File>
|
||||
<File>
|
||||
<FileName>spis.c</FileName>
|
||||
<FileType>1</FileType>
|
||||
<FilePath>..\User\system\bsp\spis.c</FilePath>
|
||||
<FileOption>
|
||||
<CommonProperty>
|
||||
<UseCPPCompiler>2</UseCPPCompiler>
|
||||
<RVCTCodeConst>0</RVCTCodeConst>
|
||||
<RVCTZI>0</RVCTZI>
|
||||
<RVCTOtherData>0</RVCTOtherData>
|
||||
<ModuleSelection>0</ModuleSelection>
|
||||
<IncludeInBuild>0</IncludeInBuild>
|
||||
<AlwaysBuild>0</AlwaysBuild>
|
||||
<GenerateAssemblyFile>2</GenerateAssemblyFile>
|
||||
<AssembleAssemblyFile>2</AssembleAssemblyFile>
|
||||
<PublicsOnly>2</PublicsOnly>
|
||||
<StopOnExitCode>11</StopOnExitCode>
|
||||
<CustomArgument></CustomArgument>
|
||||
<IncludeLibraryModules></IncludeLibraryModules>
|
||||
<ComprImg>1</ComprImg>
|
||||
</CommonProperty>
|
||||
<FileArmAds>
|
||||
<Cads>
|
||||
<interw>2</interw>
|
||||
<Optim>0</Optim>
|
||||
<oTime>2</oTime>
|
||||
<SplitLS>2</SplitLS>
|
||||
<OneElfS>2</OneElfS>
|
||||
<Strict>2</Strict>
|
||||
<EnumInt>2</EnumInt>
|
||||
<PlainCh>2</PlainCh>
|
||||
<Ropi>2</Ropi>
|
||||
<Rwpi>2</Rwpi>
|
||||
<wLevel>0</wLevel>
|
||||
<uThumb>2</uThumb>
|
||||
<uSurpInc>2</uSurpInc>
|
||||
<uC99>2</uC99>
|
||||
<uGnu>2</uGnu>
|
||||
<useXO>2</useXO>
|
||||
<v6Lang>0</v6Lang>
|
||||
<v6LangP>0</v6LangP>
|
||||
<vShortEn>2</vShortEn>
|
||||
<vShortWch>2</vShortWch>
|
||||
<v6Lto>2</v6Lto>
|
||||
<v6WtE>2</v6WtE>
|
||||
<v6Rtti>2</v6Rtti>
|
||||
<VariousControls>
|
||||
<MiscControls></MiscControls>
|
||||
<Define></Define>
|
||||
<Undefine></Undefine>
|
||||
<IncludePath></IncludePath>
|
||||
</VariousControls>
|
||||
</Cads>
|
||||
</FileArmAds>
|
||||
</FileOption>
|
||||
</File>
|
||||
<File>
|
||||
<FileName>tims.c</FileName>
|
||||
<FileType>1</FileType>
|
||||
<FilePath>..\User\system\bsp\tims.c</FilePath>
|
||||
</File>
|
||||
<File>
|
||||
<FileName>uarts.c</FileName>
|
||||
<FileType>1</FileType>
|
||||
<FilePath>..\User\system\bsp\uarts.c</FilePath>
|
||||
<FileOption>
|
||||
<CommonProperty>
|
||||
<UseCPPCompiler>2</UseCPPCompiler>
|
||||
<RVCTCodeConst>0</RVCTCodeConst>
|
||||
<RVCTZI>0</RVCTZI>
|
||||
<RVCTOtherData>0</RVCTOtherData>
|
||||
<ModuleSelection>0</ModuleSelection>
|
||||
<IncludeInBuild>0</IncludeInBuild>
|
||||
<AlwaysBuild>0</AlwaysBuild>
|
||||
<GenerateAssemblyFile>2</GenerateAssemblyFile>
|
||||
<AssembleAssemblyFile>2</AssembleAssemblyFile>
|
||||
<PublicsOnly>2</PublicsOnly>
|
||||
|
@ -771,161 +1023,6 @@
|
|||
</File>
|
||||
</Files>
|
||||
</Group>
|
||||
<Group>
|
||||
<GroupName>Drivers/CMSIS</GroupName>
|
||||
<Files>
|
||||
<File>
|
||||
<FileName>system_stm32f4xx.c</FileName>
|
||||
<FileType>1</FileType>
|
||||
<FilePath>../Src/system_stm32f4xx.c</FilePath>
|
||||
</File>
|
||||
</Files>
|
||||
</Group>
|
||||
<Group>
|
||||
<GroupName>User/board</GroupName>
|
||||
<Files>
|
||||
<File>
|
||||
<FileName>board.c</FileName>
|
||||
<FileType>1</FileType>
|
||||
<FilePath>..\User\board\board.c</FilePath>
|
||||
</File>
|
||||
</Files>
|
||||
</Group>
|
||||
<Group>
|
||||
<GroupName>User/application</GroupName>
|
||||
<Files>
|
||||
<File>
|
||||
<FileName>app.c</FileName>
|
||||
<FileType>1</FileType>
|
||||
<FilePath>..\User\application\app.c</FilePath>
|
||||
</File>
|
||||
</Files>
|
||||
</Group>
|
||||
<Group>
|
||||
<GroupName>User/system</GroupName>
|
||||
<Files>
|
||||
<File>
|
||||
<FileName>btn.c</FileName>
|
||||
<FileType>1</FileType>
|
||||
<FilePath>..\User\system\btn.c</FilePath>
|
||||
</File>
|
||||
<File>
|
||||
<FileName>delay.c</FileName>
|
||||
<FileType>1</FileType>
|
||||
<FilePath>..\User\system\delay.c</FilePath>
|
||||
</File>
|
||||
<File>
|
||||
<FileName>sys.c</FileName>
|
||||
<FileType>1</FileType>
|
||||
<FilePath>..\User\system\sys.c</FilePath>
|
||||
</File>
|
||||
</Files>
|
||||
</Group>
|
||||
<Group>
|
||||
<GroupName>User/lib</GroupName>
|
||||
<Files>
|
||||
<File>
|
||||
<FileName>aes.c</FileName>
|
||||
<FileType>1</FileType>
|
||||
<FilePath>..\User\system\lib\src\aes.c</FilePath>
|
||||
</File>
|
||||
<File>
|
||||
<FileName>clist.c</FileName>
|
||||
<FileType>1</FileType>
|
||||
<FilePath>..\User\system\lib\src\clist.c</FilePath>
|
||||
</File>
|
||||
<File>
|
||||
<FileName>cmac.c</FileName>
|
||||
<FileType>1</FileType>
|
||||
<FilePath>..\User\system\lib\src\cmac.c</FilePath>
|
||||
</File>
|
||||
<File>
|
||||
<FileName>cmd.c</FileName>
|
||||
<FileType>1</FileType>
|
||||
<FilePath>..\User\system\lib\src\cmd.c</FilePath>
|
||||
</File>
|
||||
<File>
|
||||
<FileName>data_analysis.c</FileName>
|
||||
<FileType>1</FileType>
|
||||
<FilePath>..\User\system\lib\src\data_analysis.c</FilePath>
|
||||
</File>
|
||||
<File>
|
||||
<FileName>debug.c</FileName>
|
||||
<FileType>1</FileType>
|
||||
<FilePath>..\User\system\lib\src\debug.c</FilePath>
|
||||
</File>
|
||||
<File>
|
||||
<FileName>filter.c</FileName>
|
||||
<FileType>1</FileType>
|
||||
<FilePath>..\User\system\lib\src\filter.c</FilePath>
|
||||
</File>
|
||||
<File>
|
||||
<FileName>lib.c</FileName>
|
||||
<FileType>1</FileType>
|
||||
<FilePath>..\User\system\lib\src\lib.c</FilePath>
|
||||
</File>
|
||||
<File>
|
||||
<FileName>malloc.c</FileName>
|
||||
<FileType>1</FileType>
|
||||
<FilePath>..\User\system\lib\src\malloc.c</FilePath>
|
||||
</File>
|
||||
<File>
|
||||
<FileName>mlist.c</FileName>
|
||||
<FileType>1</FileType>
|
||||
<FilePath>..\User\system\lib\src\mlist.c</FilePath>
|
||||
</File>
|
||||
<File>
|
||||
<FileName>pbuf.c</FileName>
|
||||
<FileType>1</FileType>
|
||||
<FilePath>..\User\system\lib\src\pbuf.c</FilePath>
|
||||
</File>
|
||||
<File>
|
||||
<FileName>sqqueue.c</FileName>
|
||||
<FileType>1</FileType>
|
||||
<FilePath>..\User\system\lib\src\sqqueue.c</FilePath>
|
||||
</File>
|
||||
<File>
|
||||
<FileName>storage.c</FileName>
|
||||
<FileType>1</FileType>
|
||||
<FilePath>..\User\system\lib\src\storage.c</FilePath>
|
||||
</File>
|
||||
<File>
|
||||
<FileName>wl_flash.c</FileName>
|
||||
<FileType>1</FileType>
|
||||
<FilePath>..\User\system\lib\src\wl_flash.c</FilePath>
|
||||
</File>
|
||||
<File>
|
||||
<FileName>flow_core.c</FileName>
|
||||
<FileType>1</FileType>
|
||||
<FilePath>..\User\system\lib\flow\flow_core.c</FilePath>
|
||||
</File>
|
||||
</Files>
|
||||
</Group>
|
||||
<Group>
|
||||
<GroupName>User/system/bsp</GroupName>
|
||||
<Files>
|
||||
<File>
|
||||
<FileName>adcs.c</FileName>
|
||||
<FileType>1</FileType>
|
||||
<FilePath>..\User\system\bsp\adcs.c</FilePath>
|
||||
</File>
|
||||
<File>
|
||||
<FileName>bsp.c</FileName>
|
||||
<FileType>1</FileType>
|
||||
<FilePath>..\User\system\bsp\bsp.c</FilePath>
|
||||
</File>
|
||||
<File>
|
||||
<FileName>gpios.c</FileName>
|
||||
<FileType>1</FileType>
|
||||
<FilePath>..\User\system\bsp\gpios.c</FilePath>
|
||||
</File>
|
||||
<File>
|
||||
<FileName>tims.c</FileName>
|
||||
<FileType>1</FileType>
|
||||
<FilePath>..\User\system\bsp\tims.c</FilePath>
|
||||
</File>
|
||||
</Files>
|
||||
</Group>
|
||||
<Group>
|
||||
<GroupName>::CMSIS</GroupName>
|
||||
</Group>
|
||||
|
|
|
@ -1,13 +1,13 @@
|
|||
:020000040800F2
|
||||
:10000000F0E50020A1010008AD0C00087D02000809
|
||||
:10001000A90C000851020008ED0E000800000000C5
|
||||
:10002000000000000000000000000000B30C000809
|
||||
:100030007B02000800000000B10C0008B50C0008AD
|
||||
:1000000080180020A101000815070008130200084D
|
||||
:10001000110700080D020008550900080000000043
|
||||
:100020000000000000000000000000001B070008A6
|
||||
:100030001102000800000000190700081D07000851
|
||||
:10004000BB010008BB010008BB010008BB010008A0
|
||||
:10005000BB010008BB010008BB010008BB01000890
|
||||
:10006000BB010008BB010008BB010008BB01000880
|
||||
:10007000BB010008BB010008BB010008BB01000870
|
||||
:10008000BB010008BB01000847020008BB010008D3
|
||||
:10008000BB010008BB010008BB010008BB01000860
|
||||
:10009000BB010008BB010008BB010008BB01000850
|
||||
:1000A000BB010008BB010008BB010008BB01000840
|
||||
:1000B000BB010008BB010008BB010008BB01000830
|
||||
|
@ -16,407 +16,200 @@
|
|||
:1000E000BB010008BB010008BB010008BB01000800
|
||||
:1000F000BB010008BB010008BB010008BB010008F0
|
||||
:10010000BB010008BB010008BB010008BB010008DF
|
||||
:10011000BB010008BB010008050E0008BB01000878
|
||||
:1001200071020008BB010008BB010008BB01000808
|
||||
:10011000BB010008BB0100086D080008BB01000816
|
||||
:10012000BB010008BB010008BB010008BB010008BF
|
||||
:10013000BB010008BB010008BB010008BB010008AF
|
||||
:10014000BB010008BB010008BB010008BB0100089F
|
||||
:10015000BB010008BB010008BB010008BB0100088F
|
||||
:10016000BB010008BB010008BB010008BB0100087F
|
||||
:10017000BB010008BB010008BB0100080000000033
|
||||
:10018000BB010008BB010008DFF810D000F02CF81C
|
||||
:1001900000480047D1150008AFF30080F0E50020CB
|
||||
:1001900000480047C90A0008AFF30080801800201B
|
||||
:1001A0000648804706480047FEE7FEE7FEE7FEE711
|
||||
:1001B000FEE7FEE7FEE7FEE7FEE7FEE7F10D0008DB
|
||||
:1001B000FEE7FEE7FEE7FEE7FEE7FEE75908000878
|
||||
:1001C00089010008D2B201E000F8012B491EFBD2E0
|
||||
:1001D00070470022F6E710B513460A460446194652
|
||||
:1001E000FFF7F0FF204610BD064C074D06E0E06823
|
||||
:1001F00040F0010394E8070098471034AC42F6D36E
|
||||
:10020000FFF7C6FF341900085419000830B58C18E0
|
||||
:1002100010F8012B12F00F0301D110F8013B120965
|
||||
:1002200006D110F8012B03E010F8015B01F8015B27
|
||||
:100230005B1EF9D101E001F8013B521EFBD1A14246
|
||||
:10024000E6D3002030BD10B5002000F0B5FE10BD93
|
||||
:1002500000BFFEE770B504460D4600BF2CB901F0A3
|
||||
:1002600003FB01E000BF00BFFCE700BF012070BD41
|
||||
:1002700010B5002000F076FE10BD704700BFFEE70D
|
||||
:100280002DE9F04105460C460026606800B100BF2C
|
||||
:10029000134800F049F80746124800F045F80743B4
|
||||
:1002A000114800F041F80743AFB9606860B1D4E984
|
||||
:1002B00000010843A1680843E168084369680B4AE4
|
||||
:1002C00011400843686007E06868084908402168F1
|
||||
:1002D0000843686000E001263046BDE8F081000078
|
||||
:1002E000002001400021014000220140E010FCFFFD
|
||||
:1002F00070B504460D460026204600F015F870B98A
|
||||
:10030000A968286808436168064A1140084360608C
|
||||
:10031000A06820F4006069680843A06000E001263E
|
||||
:10032000304670BDFFFEFFFC0146886800F001000A
|
||||
:100330007047000070B504460D460026686800B19D
|
||||
:1003400000BF2046FFF7F0FF00BB686830B160686F
|
||||
:1003500020F46840A9680843606003E0606820F406
|
||||
:1003600068406060286800F07060E96808432969A7
|
||||
:100370000843A168074A11400843A0606868E16A21
|
||||
:1003800021F470010143E16200BF00E00126304624
|
||||
:1003900070BD0000FDFCFFC070B501F440744FF467
|
||||
:1003A000407595FAA5F5B5FA85F5EC4000F12C05F8
|
||||
:1003B00005EB84031C6801F01F061F25B540AC4304
|
||||
:1003C00002F01F0501F01F06B5402C431C6070BDF4
|
||||
:1003D00070B501F000744FF0007595FAA5F5B5FA07
|
||||
:1003E00085F5EC4000F10C0505EB84031C6801F079
|
||||
:1003F000F8754FF0F87696FAA6F6B6FA86F6F54056
|
||||
:100400000726AE40B44301F0F8754FF0F87696FA3F
|
||||
:10041000A6F6B6FA86F6F54002FA05F52C431C60FE
|
||||
:1004200070BD426822F440020A434260704742684D
|
||||
:1004300022F440020A4342607047000008B50549B3
|
||||
:1004400009680143034A116011460968014000919F
|
||||
:1004500000BF08BD30380240F0B502460B4600240C
|
||||
:100460000021186890FAA0F0B0FA80F48AE0012523
|
||||
:10047000A540186800EA050100297DD058680128C8
|
||||
:1004800002D0586802281CD19868956891FAA1F6A4
|
||||
:10049000B6FA86F677000326BE40B54391FAA1F678
|
||||
:1004A000B6FA86F6760000FA06F63543956000BF88
|
||||
:1004B000D86855688D4301FB00F63543556000BF91
|
||||
:1004C00000BF1869D56891FAA1F6B6FA86F67700EA
|
||||
:1004D0000326BE40B54391FAA1F6B6FA86F6760039
|
||||
:1004E00000FA06F63543D56000BF5868022831D1BE
|
||||
:1004F00091FAA1F0B0FA80F0082814D25869156A70
|
||||
:1005000091FAA1F6B6FA86F6B7000F26BE40B543BB
|
||||
:1005100091FAA1F6B6FA86F6B60000FA06F6354369
|
||||
:10052000156200BF16E05869556A0E0A96FAA6F6DB
|
||||
:10053000B6FA86F6B7000F26BE40B5430E0A96FA05
|
||||
:10054000A6F6B6FA86F6B60000FA06F63543556208
|
||||
:1005500000BF00BF5868156891FAA1F6B6FA86F692
|
||||
:1005600077000326BE40B54391FAA1F6B6FA86F6A7
|
||||
:10057000760000FA06F600E003E03543156000BFA0
|
||||
:1005800000BF641C1868E04000287FF470AFF0BD25
|
||||
:1005900010B5426921EA020302EA010443EA044376
|
||||
:1005A000836110BD02480068401C01490860704723
|
||||
:1005B000240000204FF47A71B0FBF1F2521E4FF08C
|
||||
:1005C000E0235A6100229A6105221A6100BF704738
|
||||
:1005D00001490860704700000000002010B5024685
|
||||
:1005E00013682C4882420ED0B2F1804F0BD02A48BB
|
||||
:1005F000824208D02948824205D02948824202D04E
|
||||
:100600002848824204D123F070004C6840EA040379
|
||||
:100610002048824220D0B2F1804F1DD01E48824235
|
||||
:100620001AD01E48824217D01D48824214D01D485D
|
||||
:10063000824211D01C4882420ED01C4882420BD00C
|
||||
:100640001B48824208D01B48824205D01A48824289
|
||||
:1006500002D01A48824204D123F44070CC6840EAA8
|
||||
:10066000040313608868D06200BF0888906200BFEE
|
||||
:100670000848824202D00B48824203D108691063C5
|
||||
:1006800000BF00BF00BF506940F00100506100BFD3
|
||||
:10069000002010BD000001400004004000080040A0
|
||||
:1006A000000C0040000401400040014000440140B3
|
||||
:1006B0000048014000180040001C0040002000409D
|
||||
:1006C0000146086900F00100704708B54FF0E021CD
|
||||
:1006D0000969009100BF411C01B1401C06E04FF0C8
|
||||
:1006E000E021096901F4803101B1401E0028F6D1F2
|
||||
:1006F00008BD00002DE9F0418EB000200B900C9059
|
||||
:100700000D90142106A8FFF764FD002002900390CD
|
||||
:10071000049005904FF48070874909680143864A28
|
||||
:100720001160114609680140019100BF00BF834874
|
||||
:1007300000210A46824B5B5CC35823F0606313437D
|
||||
:100740007F4C645C035100BF00BF7D4B5B5CC358B2
|
||||
:1007500023F0C00313437A4C645C035100BF00BF15
|
||||
:10076000774B5B5CC35823F440331343744C645C95
|
||||
:10077000035100BF8215724B5B5CC35823F4907326
|
||||
:1007800013436F4C645C035100BF0A466C4B5B5CC7
|
||||
:10079000C35823F400731343694C645C035100BFD6
|
||||
:1007A0000215674B5B5CC35823F480631343644CAE
|
||||
:1007B000645C035100BFC214614B5B5CC35823F4FB
|
||||
:1007C000C05313435E4C645C035100BF92005C4B0A
|
||||
:1007D0005B5CC35823F4C0431343594C645C03511E
|
||||
:1007E00000BF00BF564A525C0244526922F0040224
|
||||
:1007F000534B5B5C03445A6100BF1221514B1B6891
|
||||
:10080000C3F30220002425460346C3F1070CBCF1C4
|
||||
:10081000040F02D94FF0040C01E0C3F1070C674646
|
||||
:1008200003F1040CBCF1070F02D24FF0000C01E001
|
||||
:10083000A3F1030C66464FF0010C0CFA07FCACF177
|
||||
:10084000010C0CEA040C0CFA06FC4FF0010808FA43
|
||||
:1008500006F8A8F1010808EA05084CEA080200BFFA
|
||||
:10086000002904DB1007030E3748435407E0100744
|
||||
:10087000040E34480C3001F00F031B1FC45400BF9A
|
||||
:100880001220002809DB00F01F02012191404209DB
|
||||
:10089000920002F1E022C2F8001100BF00200B908C
|
||||
:1008A0000C904FF480700D900BA92848FFF720FDA5
|
||||
:1008B000002006904FF4801007900020089002203E
|
||||
:1008C00009904FF440700A9006A92048FFF732FDC6
|
||||
:1008D00000201E49896821F4806101431B4A916010
|
||||
:1008E00000BF4FF4803002900020039002A9184806
|
||||
:1008F000FFF7C6FC174A4FF400711448FFF74CFD90
|
||||
:10090000022214491148FFF763FD4FF4000110481B
|
||||
:10091000FFF787FD104A910D0C48FFF73DFD0222BD
|
||||
:100920000D490A48FFF754FD4FF400010848FFF74E
|
||||
:1009300078FD0EB0BDE8F08144380240006402400A
|
||||
:10094000AC1800080CED00E000E400E000200140DD
|
||||
:100950000023014010002081110050812DE9F84151
|
||||
:100960004FF480002E49096801432D4A1160114659
|
||||
:1009700009680140009100BF00BF3821294B1B6866
|
||||
:10098000C3F30220002425460346C3F1070CBCF143
|
||||
:10099000040F02D94FF0040C01E0C3F1070C6746C5
|
||||
:1009A00003F1040CBCF1070F02D24FF0000C01E080
|
||||
:1009B000A3F1030C66464FF0010C0CFA07FCACF1F6
|
||||
:1009C000010C0CEA040C0CFA06FC4FF0010808FAC2
|
||||
:1009D00006F8A8F1010808EA05084CEA080200BF79
|
||||
:1009E000002904DB1007030E0F48435407E01007EB
|
||||
:1009F000040E0C480C3001F00F031B1FC45400BF41
|
||||
:100A00003820002809DB00F01F0201219140420933
|
||||
:100A1000920002F1E022C2F8001100BFBDE8F881A7
|
||||
:100A2000303802400CED00E000E400E000B587B093
|
||||
:100A3000182101A8FFF7CDFB1020FFF7FFFC4FF4B2
|
||||
:100A40008070FFF7FBFC0420FFF7F8FC2020FFF785
|
||||
:100A5000F5FC8020FFF7F2FC0120FFF7EFFC0220FD
|
||||
:100A6000FFF7ECFC4020FFF7E9FC0820FFF7E6FC6D
|
||||
:100A700003203A49886100BF4FF6FC7001900320C3
|
||||
:100A800002900020059001A93448FFF7E5FC40F6EC
|
||||
:100A9000FF700190032002900020059001A93048CA
|
||||
:100AA000FFF7DAFC43F6FF7001900320029000206C
|
||||
:100AB000059001A92B48FFF7CFFC4FF6FF7001907E
|
||||
:100AC000032002900020059001A92748FFF7C4FCED
|
||||
:100AD00049F6FF700190032002900020059001A9C3
|
||||
:100AE0002248FFF7B9FC4FF6FC70019003200290FA
|
||||
:100AF0000020059001A91E48FFF7AEFC4FF6FF70DD
|
||||
:100B00000190032002900020059001A91948FFF7E9
|
||||
:100B1000A3FC4FF6FF700190032002900020059087
|
||||
:100B200001A91548FFF798FC4FF6FF7001900320CC
|
||||
:100B300002900020059001A91048FFF78DFC0320CA
|
||||
:100B40000190012002900220039000200490059063
|
||||
:100B500001A90248FFF780FC07B000BD0010024069
|
||||
:100B60000020024000080240001402400000024041
|
||||
:100B7000001C02400004024000180240000C024029
|
||||
:100B80002DE9F04186B0142101A8FFF722FB1020C7
|
||||
:100B9000414909680143404A116011460968014012
|
||||
:100BA000009100BF00BF36213C4B1B68C3F30220FD
|
||||
:100BB000062400250346C3F1070CBCF1040F02D93B
|
||||
:100BC0004FF0040C01E0C3F1070C674603F1040C7D
|
||||
:100BD000BCF1070F02D24FF0000C01E0A3F1030CAF
|
||||
:100BE00066464FF0010C0CFA07FCACF1010C0CEA64
|
||||
:100BF000040C0CFA06FC4FF0010808FA06F8A8F1FC
|
||||
:100C0000010808EA05084CEA080200BF002904DBD5
|
||||
:100C10001007030E2248435407E01007040E1F4834
|
||||
:100C20000C3001F00F031B1FC45400BF36200028F6
|
||||
:100C300009DB00F01F02012191404209920002F1FC
|
||||
:100C4000E022C2F8001100BF42F2CF00ADF804006C
|
||||
:100C5000002002906320039001A91248FFF7BEFC18
|
||||
:100C600000BF1048006820F080000E49086000BFF7
|
||||
:100C70000020496821F0700101430A4A516000BF19
|
||||
:100C800000BF1046806820F080001146886000BFD9
|
||||
:100C900006B0BDE8F0810000403802400CED00E0F5
|
||||
:100CA00000E400E00010004000BFFEE700BFFEE7E8
|
||||
:100CB000704770477047000070B5052047490968C4
|
||||
:100CC00021F007010143454A116000BF00BF00BF8A
|
||||
:100CD0004248006800F007000528F8D14FF4804032
|
||||
:100CE0003F49096821F4804101433D4A116000BF3A
|
||||
:100CF00000BF3C48006840F480303A49086000BFBB
|
||||
:100D000000BF00BF37480068C0F340400028F8D05B
|
||||
:100D10004FF480000421A822002340EA010444EAA1
|
||||
:100D20008214304D2D1D2D682F4E35402C432D4DF6
|
||||
:100D30002D1D2C602C46246824F440341C432C6068
|
||||
:100D400000BF00BF281F006840F08070291F0860A6
|
||||
:100D500000BF00BF00BF23480068C0F34060002808
|
||||
:100D6000F8D000BF00BF1E484068C0F380300028A4
|
||||
:100D7000F8D000201B490831096821F0F001014337
|
||||
:100D8000184A0832116000BF4FF4A050114609689C
|
||||
:100D900021F4E0510143116000BF4FF400401146BF
|
||||
:100DA000096821F460410143116000BF022011462F
|
||||
:100DB000096821F003010143116000BF00BF00BFBB
|
||||
:100DC00008480830006800F00C000828F7D10748F0
|
||||
:100DD000FFF7F0FB0548FFF7FBFB70BD003C02404E
|
||||
:100DE00000700040003802400080BFFF007A030A14
|
||||
:100DF0000348006840F47000014908607047000033
|
||||
:100E000088ED00E010B53748FFF75AFC012868D19B
|
||||
:100E100000BF00BF33480069C0F3400060B100BFAD
|
||||
:100E20003048C068C0F3400030B100BF6FF002002E
|
||||
:100E30002C49086100BF00BF00BF2A480069C0F309
|
||||
:100E4000800060B100BF2748C068C0F3800030B1A7
|
||||
:100E500000BF6FF004002349086100BF00BF00BF5E
|
||||
:100E600020480069C0F3C00060B100BF1D48C068E1
|
||||
:100E7000C0F3C00030B100BF6FF00800194908612D
|
||||
:100E800000BF00BF00BF17480069C0F3001060B189
|
||||
:100E900000BF1448C068C0F3001030B100BF6FF04D
|
||||
:100EA00010001049086100BF00BF0E48FFF708FCA2
|
||||
:100EB00001280CD100BF0B48C06800F0010030B120
|
||||
:100EC00000BF6FF001000749086100BF00BF00BF0D
|
||||
:100ED000FFF768FB00BF04480068401C0249086037
|
||||
:100EE00000BF10BD001000405800002000BFFEE70A
|
||||
:100EF00002E008C8121F08C1002AFAD170477047E3
|
||||
:100F0000002001E001C1121F002AFBD17047000040
|
||||
:100F1000014601F1100000E0001D02681AB9024A02
|
||||
:100F200012689042F8D370473800002010B5064888
|
||||
:100F3000046803E02046FFF7EBFF0446034800681F
|
||||
:100F40008442F7D310BD0000340000203800002098
|
||||
:100F500010B501E000F8011B131EA2F10104A2B2BA
|
||||
:100F6000F8D110BD70B5054605EBC500114901EB80
|
||||
:100F700080040CB1012100E00021084640F2291153
|
||||
:100F8000FFF768F960680168C1F3C02129B16068A2
|
||||
:100F90004FF40061816000BF00BF60680168C1F369
|
||||
:100FA000402129B160684FF40071816000BF00BF2B
|
||||
:100FB00070BD000080E1002070B5054605EBC5005E
|
||||
:100FC0000D4901EB80040CB1012100E0002108462D
|
||||
:100FD0004FF49F71FFF73EF920680168C1F340119B
|
||||
:100FE00041B16069401C606120686FF020010160C0
|
||||
:100FF00000BF00BF70BD000080E10020014600205E
|
||||
:1010000001F001020AB1421CD0B201F002020AB1A1
|
||||
:10101000421CD0B201F004020AB1421CD0B201F06D
|
||||
:1010200008020AB1421CD0B201F010020AB1421CFF
|
||||
:10103000D0B201F020020AB1421CD0B201F040024D
|
||||
:101040000AB1421CD0B201F080020AB1421CD0B2F7
|
||||
:1010500001F480720AB1421CD0B201F400720AB1EC
|
||||
:10106000421CD0B201F480620AB1421CD0B201F439
|
||||
:1010700000620AB1421CD0B201F480520AB1421C93
|
||||
:10108000D0B201F400520AB1421CD0B201F4804245
|
||||
:101090000AB1421CD0B201F400420AB1421CD0B2E3
|
||||
:1010A00001F480320AB1421CD0B201F400220AB12C
|
||||
:1010B000421CD0B201F480220AB1421CD0B201F429
|
||||
:1010C00000320AB1421CD0B2704700002DE9FF4F38
|
||||
:1010D00081B006460F469046DDE90F95032E01DAF2
|
||||
:1010E000012100E0002108461C21FFF7B3F80FB1F1
|
||||
:1010F000012100E0002108461D21FFF7ABF8B8F1FF
|
||||
:10110000000F01D0012100E0002108461E21FFF759
|
||||
:10111000A1F8B9F1000F01DD012100E0002108462E
|
||||
:101120001F21FFF797F806EBC600744901EB800416
|
||||
:10113000242200212046FFF70BFF2760C4F804801B
|
||||
:101140000498A0600E98E0602561A4F818902846E5
|
||||
:10115000FFF754FFA076A07E00FB09F0A083A08BD0
|
||||
:101160004FEA400A5146012000F060FB2062216AEC
|
||||
:1011700009B1012100E0002108463221FFF76AF899
|
||||
:10118000A18B49040A0C0021206AFFF7E1FE201D13
|
||||
:1011900007C85B4B5B5CC35823F060631343DFF805
|
||||
:1011A00060C11CF801C040F80C3000BF554AD4E9BA
|
||||
:1011B0000101534B5B5CC358DFF84CC103EA0C03DD
|
||||
:1011C0001343DFF83CC11CF801C040F80C3000BFED
|
||||
:1011D0004FF0000BD4E900A0A1684FF0000ECDF84D
|
||||
:1011E00000E0BBF1000F04D10AF14C0ECDF800E095
|
||||
:1011F00003E0DFF818E1CDF800E0009AD4E901AB94
|
||||
:10120000236ADFF8FCE01EF80BE05AF80EE00EF05F
|
||||
:10121000C00C00BFBCF1400F0ED1DFF8E4A01AF8FB
|
||||
:1012200001A08244CAF80C20DFF8D4A01AF801A06B
|
||||
:101230008244CAF808300DE0DFF8C4A01AF801A013
|
||||
:101240008244CAF80820DFF8B8A01AF801A0824446
|
||||
:10125000CAF80C3000BFA28BD4E90101284B5B5CBB
|
||||
:1012600003445B686FF30F031343DFF894C01CF86B
|
||||
:1012700001C08444CCF8043000BFD4E90101204A05
|
||||
:10128000525C825842F001021D4B5B5CC25000BFB1
|
||||
:1012900002212068826822F002020A43826000BFB5
|
||||
:1012A0004FF440712068826822F440720A438260E1
|
||||
:1012B00000BF05F4002028B14FF40001134808389E
|
||||
:1012C000FFF7B5F805F4003028B14FF400010F48DE
|
||||
:1012D0000838FFF7ACF80A20FFF7F7F920688168B3
|
||||
:1012E00041F00101816000BF2068816841F08041C8
|
||||
:1012F000816000BF05B0BDE8F08F000080E10020F4
|
||||
:1013000008190008002D02001F80FCFF082301407F
|
||||
:101310002DE9F04705468846032D01DA012100E05A
|
||||
:1013200000210846EE21FEF795FF4FF00009002648
|
||||
:1013300005EBC500104901EB80040CB1012100E070
|
||||
:1013400000210846F221FEF785FF206A00EB4807DE
|
||||
:10135000002006E039880E44411C88B2A17E07EBCC
|
||||
:101360004107218B8142F5DC208BB6FBF0F01FFAA0
|
||||
:1013700080F94846BDE8F08780E100200C4B1988D1
|
||||
:101380009B1C1A88431A00EE903AF8EEE01A531AA2
|
||||
:1013900000EE903AF8EEE00A81EEA01ADFED051AB1
|
||||
:1013A000F3EE0E0A41EE210AB0EE600A704700002B
|
||||
:1013B0002C7AFF1F0000A0420E49098840F6E44243
|
||||
:1013C000514340F6FF72B1FBF2F100EE101AB8EE95
|
||||
:1013D000400AF0EE400A00EE100AB8EE400A80EE35
|
||||
:1013E000801A9FED050A21EE001ADFED041A81EE46
|
||||
:1013F000210A70472A7AFF1F00F07F4500007A44D7
|
||||
:1014000000200B4908600B49086000BF00BF0A4874
|
||||
:10141000006840F001000849086000BF00BF0846AE
|
||||
:10142000C06840F00100C86000BF00BF7047000006
|
||||
:1014300008000020100000200010004010B50348F4
|
||||
:1014400000F01CF8024800F087F810BD08000020EA
|
||||
:10145000100000200EB54FF420204FF4C871002278
|
||||
:101460001346CDE900210290024A03490020FFF70C
|
||||
:101470002DFE0EBD006402400020014038B5044638
|
||||
:1014800000200090206810B112281DD112E000BF8A
|
||||
:1014900000F02AF80F4880ED000A00F041F80D48EE
|
||||
:1014A00080ED010A00BF0C480068606000BF122098
|
||||
:1014B000206000BF084960680968081A642801D2E2
|
||||
:1014C000002038BD00BFE3E700202060009003202B
|
||||
:1014D000F7E70000180000205800002001490860CC
|
||||
:1014E000704700002000002010B52DED028B9FED0D
|
||||
:1014F0000A0AB0EE408A00210846FFF709FF0749B3
|
||||
:1015000008800888FFF73AFFB0EE408AB0EE480A3C
|
||||
:10151000BDEC028B10BD00000000000004000020A4
|
||||
:1015200010B52DED028B9FED0A0AB0EE408A012125
|
||||
:101530000020FFF7EDFE074948804888FFF73CFF91
|
||||
:10154000B0EE408AB0EE480ABDEC028B10BD000040
|
||||
:10155000000000000400002038B504460020009080
|
||||
:10156000206810B1252816D10BE000BF012000F043
|
||||
:1015700019F800BF0A480068606000BF252020609D
|
||||
:1015800000BF074960680968081A642801D2002072
|
||||
:1015900038BD00BFEAE70020206000900320F7E795
|
||||
:1015A0005800002010B5044614B1012C0AD104E003
|
||||
:1015B00001210648FEF7ECFF05E002210348FEF793
|
||||
:1015C000E7FF00E000BF00BF10BD000000100240B8
|
||||
:1015D00008B54FF48040444909680143424A11600C
|
||||
:1015E000114609680140009100BF00BF8003111F30
|
||||
:1015F00009680143121F11601146096801400091FA
|
||||
:1016000000BF00BF03200246384B19684FF6FF03A6
|
||||
:101610001940374B0B4343EA0221344B196000BF9A
|
||||
:10162000011F1B68C3F302200F2400250346C3F1EA
|
||||
:10163000070CBCF1040F02D94FF0040C01E0C3F118
|
||||
:10164000070C674603F1040CBCF1070F02D24FF000
|
||||
:10165000000C01E0A3F1030C66464FF0010C0CFAFC
|
||||
:1016600007FCACF1010C0CEA040C0CFA06FC4FF080
|
||||
:10167000010808FA06F8A8F1010808EA05084CEA8A
|
||||
:10168000080200BF002904DB1007030E1948435469
|
||||
:1016900007E01007040E15480C3001F00F031B1F64
|
||||
:1016A000C45400BFFFF708FB134800681349B0FBA0
|
||||
:1016B000F1F084B22046FFF711FFFFF7B7F9FFF70B
|
||||
:1016C0004DF9FFF75DFAFFF715F8002000F018F864
|
||||
:1016D000012000F015F8FFF7BDFEFFF791FE01E0D5
|
||||
:1016E000FFF7ACFEFCE70000443802400CED00E0E0
|
||||
:1016F0000000FA0500E400E00000002040420F0076
|
||||
:1017000010B504460C4951F824104A000B4951F811
|
||||
:101710002400002100F09EF8094951F824200749CF
|
||||
:10172000083951F82400002100F094F80121034801
|
||||
:101730000830015510BD0000F01800084C000020D2
|
||||
:10174000001900082DE9F04704460F460025A94678
|
||||
:101750002348005D20B92248183801682046884790
|
||||
:101760001FB94FF0FF30BDE8F0871E4850F8240045
|
||||
:10177000B7FBF0F61B4850F82400B7FBF0F100FB74
|
||||
:10178000117000B1761C184850F82400451E22E064
|
||||
:101790001348083850F8240030F8150010B909F142
|
||||
:1017A000010901E04FF00009B14513D14FF00008E5
|
||||
:1017B00009E00B48083850F8240005EB080220F82F
|
||||
:1017C000126008F10108B045F3D3064850F8240030
|
||||
:1017D0006843C8E76D1E002DDADA4FF0FF30C2E72C
|
||||
:1017E00054000020F8180008F018000810B5014651
|
||||
:1017F0000023002207E00B4850F8210030F81200C7
|
||||
:1018000000B15B1C521C084850F821009042F2D8ED
|
||||
:1018100064205843044C54F82140B0FBF4F0C0B2AB
|
||||
:1018200010BD00004C000020F018000870B5044600
|
||||
:101830000E4631462046FFF785FF0546681C08B96D
|
||||
:10184000002070BD024850F824002844F9E7000049
|
||||
:101850004400002030B5034601E003F8011B141ECC
|
||||
:10186000A2F10102F9D130BD00BF00BF00BF00BF2F
|
||||
:1018700000BFBFF34F8F00BF00BF00BF0948006823
|
||||
:1018800000F4E06008490843001D0649086000BFF5
|
||||
:1018900000BF00BFBFF34F8F00BF00BF00BF00BF3E
|
||||
:1018A00000BFFDE70CED00E00000FA0510284058ED
|
||||
:1018B0007088A0B8000000000404040000080000C4
|
||||
:1018C00000080000080000000800020406080A0CD6
|
||||
:1018D000000102030405065F6C697374006C697390
|
||||
:1018E0007420616C6C20636F6D6D616E640000002C
|
||||
:1018F000800C0000000A0000080000000800000042
|
||||
:101900000064000000500000102840587088A0B803
|
||||
:1019100000000000040404000008000000080000AB
|
||||
:10192000080000000800020406080A0C0001020377
|
||||
:101930000405060054190008000000207050000043
|
||||
:101940000C020008241A0008705000208095000046
|
||||
:10195000000F0008043A0024F43E01170008ED17B8
|
||||
:10196000000880500020600AFF2080B4002080CD55
|
||||
:10197000002001FF01FF01FF01FF01FF01FF01FF47
|
||||
:1019800001FF01FF01FF01FF01FF01FF01FF01FF57
|
||||
:1019900001FF01FF01FF01FF01FF01FF01FF01FF47
|
||||
:1019A00001FF01FF01FF01FF01FF01FF01FF01FF37
|
||||
:1019B00001FF01FF01FF01FF01FF01FF01FF01FF27
|
||||
:1019C00001FF01FF01FF01FF01FF01FF01FF01FF17
|
||||
:1019D00001FF01FF01FF01FF01FF01FF01FF01FF07
|
||||
:1019E00001FF01FF01FF01FF01FF01FF01FF01FFF7
|
||||
:1019F00001FF01FF01FF01FF01FF01FF01FF01FFE7
|
||||
:101A000001FF01FF01FF01FF01FF01FF01FF01FFD6
|
||||
:101A100001AD2FD7180008DD180008C6E533B42D36
|
||||
:041A20000F12080099
|
||||
:10020000FFF7C6FFB00C0008D00C000800BFFEE7E7
|
||||
:10021000704700BFFEE7000008B5054909680143C3
|
||||
:10022000034A1160114609680140009100BF08BDF2
|
||||
:1002300030380240F0B502460B4600240021186811
|
||||
:1002400090FAA0F0B0FA80F48AE00125A540186881
|
||||
:1002500000EA050100297DD05868012802D05868BD
|
||||
:1002600002281CD19868956891FAA1F6B6FA86F62C
|
||||
:1002700077000326BE40B54391FAA1F6B6FA86F69A
|
||||
:10028000760000FA06F63543956000BFD8685568D9
|
||||
:100290008D4301FB00F63543556000BF00BF186970
|
||||
:1002A000D56891FAA1F6B6FA86F677000326BE4025
|
||||
:1002B000B54391FAA1F6B6FA86F6760000FA06F68C
|
||||
:1002C0003543D56000BF5868022831D191FAA1F0BA
|
||||
:1002D000B0FA80F0082814D25869156A91FAA1F68C
|
||||
:1002E000B6FA86F6B7000F26BE40B54391FAA1F6DE
|
||||
:1002F000B6FA86F6B60000FA06F63543156200BF78
|
||||
:1003000016E05869556A0E0A96FAA6F6B6FA86F607
|
||||
:10031000B7000F26BE40B5430E0A96FAA6F6B6FA07
|
||||
:1003200086F6B60000FA06F63543556200BF00BFF8
|
||||
:100330005868156891FAA1F6B6FA86F67700032692
|
||||
:10034000BE40B54391FAA1F6B6FA86F6760000FAF9
|
||||
:1003500006F600E003E03543156000BF00BF641CF3
|
||||
:100360001868E04000287FF470AFF0BD02480068D4
|
||||
:10037000401C014908607047480000204FF47A7122
|
||||
:10038000B0FBF1F2521E4FF0E0235A6100229A6155
|
||||
:1003900005221A6100BF70470149086070470000DC
|
||||
:1003A0000000002010B5024613682C4882420ED08F
|
||||
:1003B000B2F1804F0BD02A48824208D029488242AD
|
||||
:1003C00005D02948824202D02848824204D123F035
|
||||
:1003D00070004C6840EA04032048824220D0B2F109
|
||||
:1003E000804F1DD01E4882421AD01E48824217D02C
|
||||
:1003F0001D48824214D01D48824211D01C488242BE
|
||||
:100400000ED01C4882420BD01B48824208D01B48A9
|
||||
:10041000824205D01A48824202D01A48824204D150
|
||||
:1004200023F44070CC6840EA040313608868D0620B
|
||||
:1004300000BF0888906200BF0848824202D00B4883
|
||||
:10044000824203D10869106300BF00BF00BF50693A
|
||||
:1004500040F00100506100BF002010BD00000140CD
|
||||
:100460000004004000080040000C0040000401406F
|
||||
:100470000040014000440140004801400018004095
|
||||
:10048000001C0040002000400146086900F0010007
|
||||
:100490007047000000B587B0182101A8FFF799FE4A
|
||||
:1004A0001020FFF7B9FE4FF48070FFF7B5FE04206F
|
||||
:1004B000FFF7B2FE2020FFF7AFFE8020FFF7ACFE73
|
||||
:1004C0000120FFF7A9FE0220FFF7A6FE4020FFF75C
|
||||
:1004D000A3FE0820FFF7A0FE03203A49886100BF71
|
||||
:1004E0004FF6FC700190032002900020059001A9B6
|
||||
:1004F0003448FFF79FFE40F6FF7001900320029002
|
||||
:100500000020059001A93048FFF794FE43F6FF70E4
|
||||
:100510000190032002900020059001A92B48FFF7CD
|
||||
:1005200089FE4FF6FF700190032002900020059095
|
||||
:1005300001A92748FFF77EFE49F6FF7001900320CE
|
||||
:1005400002900020059001A92248FFF773FE4FF6A4
|
||||
:10055000FC700190032002900020059001A91E4824
|
||||
:10056000FFF768FE4FF6FF70019003200290002015
|
||||
:10057000059001A91948FFF75DFE4FF6FF70019045
|
||||
:10058000032002900020059001A91548FFF752FEB4
|
||||
:100590004FF6FF700190032002900020059001A902
|
||||
:1005A0001048FFF747FE032001900120029002202F
|
||||
:1005B000039000200490059001A90248FFF73AFE3D
|
||||
:1005C00007B000BD001002400020024000080240B9
|
||||
:1005D0000014024000000240001C024000040240DF
|
||||
:1005E00000180240000C02402DE9F04186B01421B1
|
||||
:1005F00001A8FFF7EEFD1020414909680143404A78
|
||||
:100600001160114609680140009100BF00BF36210A
|
||||
:100610003C4B1B68C3F30220062400250346C3F1AC
|
||||
:10062000070CBCF1040F02D94FF0040C01E0C3F138
|
||||
:10063000070C674603F1040CBCF1070F02D24FF020
|
||||
:10064000000C01E0A3F1030C66464FF0010C0CFA1C
|
||||
:1006500007FCACF1010C0CEA040C0CFA06FC4FF0A0
|
||||
:10066000010808FA06F8A8F1010808EA05084CEAAA
|
||||
:10067000080200BF002904DB1007030E2248435480
|
||||
:1006800007E01007040E1F480C3001F00F031B1F7A
|
||||
:10069000C45400BF3620002809DB00F01F020121EE
|
||||
:1006A00091404209920002F1E022C2F8001100BF1D
|
||||
:1006B00044F29F10ADF804000020029063200390E4
|
||||
:1006C00001A91248FFF76EFE00BF1048006820F035
|
||||
:1006D00080000E49086000BF0020496821F07001C9
|
||||
:1006E00001430A4A516000BF00BF1046806820F0F5
|
||||
:1006F00080001146886000BF06B0BDE8F0810000B0
|
||||
:10070000403802400CED00E000E400E00010004042
|
||||
:1007100000BFFEE700BFFEE770477047704700006C
|
||||
:1007200070B505204749096821F007010143454A92
|
||||
:10073000116000BF00BF00BF4248006800F0070022
|
||||
:100740000528F8D14FF480403F49096821F48041E1
|
||||
:1007500001433D4A116000BF00BF3C48006840F4BF
|
||||
:1007600080303A49086000BF00BF00BF37480068CA
|
||||
:10077000C0F340400028F8D04FF480000421A822A4
|
||||
:10078000002340EA010444EA8214304D2D1D2D68F7
|
||||
:100790002F4E35402C432D4D2D1D2C602C462468AA
|
||||
:1007A00024F440341C432C6000BF00BF281F0068A5
|
||||
:1007B00040F08070291F086000BF00BF00BF2348C1
|
||||
:1007C0000068C0F340600028F8D000BF00BF1E489A
|
||||
:1007D0004068C0F380300028F8D000201B49083161
|
||||
:1007E000096821F0F0010143184A0832116000BF86
|
||||
:1007F0004FF4A0501146096821F4E0510143116003
|
||||
:1008000000BF4FF400401146096821F460410143E4
|
||||
:10081000116000BF02201146096821F00301014365
|
||||
:10082000116000BF00BF00BF08480830006800F03A
|
||||
:100830000C000828F7D10748FFF7A0FD0548FFF78F
|
||||
:10084000ABFD70BD003C024000700040003802402B
|
||||
:100850000080BFFF007A030A0348006840F470007C
|
||||
:10086000014908607047000088ED00E010B5374886
|
||||
:10087000FFF70AFE012868D100BF00BF33480069B6
|
||||
:10088000C0F3400060B100BF3048C068C0F3400012
|
||||
:1008900030B100BF6FF002002C49086100BF00BFFB
|
||||
:1008A00000BF2A480069C0F3800060B100BF27483C
|
||||
:1008B000C068C0F3800030B100BF6FF0040023496E
|
||||
:1008C000086100BF00BF00BF20480069C0F3C0003E
|
||||
:1008D00060B100BF1D48C068C0F3C00030B100BFA8
|
||||
:1008E0006FF008001949086100BF00BF00BF17483A
|
||||
:1008F0000069C0F3001060B100BF1448C068C0F3C5
|
||||
:10090000001030B100BF6FF010001049086100BF47
|
||||
:1009100000BF0E48FFF7B8FD01280CD100BF0B48FF
|
||||
:10092000C06800F0010030B100BF6FF0010007495E
|
||||
:10093000086100BF00BF00BFFFF718FD00BF0448FB
|
||||
:100940000068401C0249086000BF10BD0010004054
|
||||
:100950004000002000BFFEE702E008C8121F08C1E7
|
||||
:10096000002AFAD170477047002001E001C1121F30
|
||||
:10097000002AFBD170470000014601F1100000E0A1
|
||||
:10098000001D02681AB9024A12689042F8D37047F3
|
||||
:100990001C00002010B50648046803E02046FFF75D
|
||||
:1009A000EBFF0446034800688442F7D310BD000003
|
||||
:1009B000180000201C00002000200B4908600B4993
|
||||
:1009C000086000BF00BF0A48006840F00100084905
|
||||
:1009D000086000BF00BF0846C06840F00100C86062
|
||||
:1009E00000BF00BF70470000040000200C00002082
|
||||
:1009F0000010004010B5034800F00AF8024800F06B
|
||||
:100A000031F810BD040000200C00002070470000E9
|
||||
:100A100008B5014600200090086810B1112813D1D4
|
||||
:100A200008E000BF00BF0B480068486000BF11200D
|
||||
:100A3000086000BF074A48681268101A0A2801D2E5
|
||||
:100A4000002008BD00BFEDE70020086000900320F3
|
||||
:100A5000F7E70000400000200149086070470000EF
|
||||
:100A60004400002018B5014600200090086810B12D
|
||||
:100A700024281FD114E000BF0220114B5A6920EA3C
|
||||
:100A8000020302EA000443EA04430D4CA36100BFE1
|
||||
:100A900000BF0C480068486000BF2420086000BF09
|
||||
:100AA000084A48681268101A642801D2002018BD4C
|
||||
:100AB00000BFE1E70020086000900320F7E7000096
|
||||
:100AC000001002404000002008B54FF4804040492B
|
||||
:100AD000096801433E4A11601146096801400091CE
|
||||
:100AE00000BF00BF8003111F09680143121F11607E
|
||||
:100AF000114609680140009100BF00BF0320024673
|
||||
:100B0000344B19684FF6FF031940334B0B4343EA4C
|
||||
:100B10000221304B196000BF011F1B68C3F3022084
|
||||
:100B20000F2400250346C3F1070CBCF1040F02D9C2
|
||||
:100B30004FF0040C01E0C3F1070C674603F1040C0D
|
||||
:100B4000BCF1070F02D24FF0000C01E0A3F1030C3F
|
||||
:100B500066464FF0010C0CFA07FCACF1010C0CEAF4
|
||||
:100B6000040C0CFA06FC4FF0010808FA06F8A8F18C
|
||||
:100B7000010808EA05084CEA080200BF002904DB66
|
||||
:100B80001007030E1548435407E01007040E1148E0
|
||||
:100B90000C3001F00F031B1FC45400BFFFF7C0FD52
|
||||
:100BA0000F4800680F49B0FBF1F084B22046FFF710
|
||||
:100BB00053FFFFF76FFCFFF717FD002000F014F85C
|
||||
:100BC000FFF724FFFFF7F8FE01E0FFF713FFFCE754
|
||||
:100BD000443802400CED00E00000FA0500E400E0BB
|
||||
:100BE0000000002040420F0010B504460C4951F8A7
|
||||
:100BF00024104A000B4951F82400002100F036F877
|
||||
:100C0000094951F824200749083951F824000021E6
|
||||
:100C100000F02CF8012103480830015510BD0000F8
|
||||
:100C2000980C000834000020A80C000810B50146FC
|
||||
:100C30000023002207E00B4850F8210030F8120092
|
||||
:100C400000B15B1C521C084850F821009042F2D8B9
|
||||
:100C500064205843044C54F82140B0FBF4F0C0B277
|
||||
:100C600010BD000034000020980C000830B5034689
|
||||
:100C700001E003F8011B141EA2F10102F9D130BDFD
|
||||
:100C80005F6C697374006C69737420616C6C2063B1
|
||||
:100C90006F6D6D616E6400000002000000000000D6
|
||||
:100CA0000800000008000000001000000000000024
|
||||
:100CB000D00C00080000002068000000580900085F
|
||||
:100CC000380D0008680000201818000068090008A6
|
||||
:100CD0000024F400000000000000000000000000FC
|
||||
:100CE0000000000000000000000000000000000004
|
||||
:100CF00000000000E90B00082D0C00088000002017
|
||||
:100D000020000020801000202200002000000000B1
|
||||
:100D100000000000000000000000000000000000D3
|
||||
:100D20000000000000000000800C0008860C000895
|
||||
:080D3000C6E533B49509000883
|
||||
:040000050800018965
|
||||
:00000001FF
|
||||
|
|
Binary file not shown.
Binary file not shown.
107
Src/adc.c
107
Src/adc.c
|
@ -1,107 +0,0 @@
|
|||
/* USER CODE BEGIN Header */
|
||||
/**
|
||||
******************************************************************************
|
||||
* @file adc.c
|
||||
* @brief This file provides code for the configuration
|
||||
* of the ADC instances.
|
||||
******************************************************************************
|
||||
* @attention
|
||||
*
|
||||
* Copyright (c) 2024 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.
|
||||
*
|
||||
******************************************************************************
|
||||
*/
|
||||
/* USER CODE END Header */
|
||||
/* Includes ------------------------------------------------------------------*/
|
||||
#include "adc.h"
|
||||
|
||||
/* USER CODE BEGIN 0 */
|
||||
|
||||
/* USER CODE END 0 */
|
||||
|
||||
/* ADC1 init function */
|
||||
void MX_ADC1_Init(void)
|
||||
{
|
||||
|
||||
/* USER CODE BEGIN ADC1_Init 0 */
|
||||
|
||||
/* USER CODE END ADC1_Init 0 */
|
||||
|
||||
LL_ADC_InitTypeDef ADC_InitStruct = {0};
|
||||
LL_ADC_REG_InitTypeDef ADC_REG_InitStruct = {0};
|
||||
LL_ADC_CommonInitTypeDef ADC_CommonInitStruct = {0};
|
||||
|
||||
/* Peripheral clock enable */
|
||||
LL_APB2_GRP1_EnableClock(LL_APB2_GRP1_PERIPH_ADC1);
|
||||
|
||||
/* ADC1 DMA Init */
|
||||
|
||||
/* ADC1 Init */
|
||||
LL_DMA_SetChannelSelection(DMA2, LL_DMA_STREAM_0, LL_DMA_CHANNEL_0);
|
||||
|
||||
LL_DMA_SetDataTransferDirection(DMA2, LL_DMA_STREAM_0, LL_DMA_DIRECTION_PERIPH_TO_MEMORY);
|
||||
|
||||
LL_DMA_SetStreamPriorityLevel(DMA2, LL_DMA_STREAM_0, LL_DMA_PRIORITY_LOW);
|
||||
|
||||
LL_DMA_SetMode(DMA2, LL_DMA_STREAM_0, LL_DMA_MODE_CIRCULAR);
|
||||
|
||||
LL_DMA_SetPeriphIncMode(DMA2, LL_DMA_STREAM_0, LL_DMA_PERIPH_NOINCREMENT);
|
||||
|
||||
LL_DMA_SetMemoryIncMode(DMA2, LL_DMA_STREAM_0, LL_DMA_MEMORY_INCREMENT);
|
||||
|
||||
LL_DMA_SetPeriphSize(DMA2, LL_DMA_STREAM_0, LL_DMA_PDATAALIGN_HALFWORD);
|
||||
|
||||
LL_DMA_SetMemorySize(DMA2, LL_DMA_STREAM_0, LL_DMA_MDATAALIGN_HALFWORD);
|
||||
|
||||
LL_DMA_DisableFifoMode(DMA2, LL_DMA_STREAM_0);
|
||||
|
||||
/* ADC1 interrupt Init */
|
||||
NVIC_SetPriority(ADC_IRQn, NVIC_EncodePriority(NVIC_GetPriorityGrouping(),0, 0));
|
||||
NVIC_EnableIRQ(ADC_IRQn);
|
||||
|
||||
/* USER CODE BEGIN ADC1_Init 1 */
|
||||
|
||||
/* USER CODE END ADC1_Init 1 */
|
||||
|
||||
/** Common config
|
||||
*/
|
||||
ADC_InitStruct.Resolution = LL_ADC_RESOLUTION_12B;
|
||||
ADC_InitStruct.DataAlignment = LL_ADC_DATA_ALIGN_RIGHT;
|
||||
ADC_InitStruct.SequencersScanMode = LL_ADC_SEQ_SCAN_ENABLE;
|
||||
LL_ADC_Init(ADC1, &ADC_InitStruct);
|
||||
ADC_REG_InitStruct.TriggerSource = LL_ADC_REG_TRIG_SOFTWARE;
|
||||
ADC_REG_InitStruct.SequencerLength = LL_ADC_REG_SEQ_SCAN_ENABLE_2RANKS;
|
||||
ADC_REG_InitStruct.SequencerDiscont = LL_ADC_REG_SEQ_DISCONT_DISABLE;
|
||||
ADC_REG_InitStruct.ContinuousMode = LL_ADC_REG_CONV_CONTINUOUS;
|
||||
ADC_REG_InitStruct.DMATransfer = LL_ADC_REG_DMA_TRANSFER_UNLIMITED;
|
||||
LL_ADC_REG_Init(ADC1, &ADC_REG_InitStruct);
|
||||
LL_ADC_REG_SetFlagEndOfConversion(ADC1, LL_ADC_REG_FLAG_EOC_SEQUENCE_CONV);
|
||||
ADC_CommonInitStruct.CommonClock = LL_ADC_CLOCK_SYNC_PCLK_DIV4;
|
||||
ADC_CommonInitStruct.Multimode = LL_ADC_MULTI_INDEPENDENT;
|
||||
LL_ADC_CommonInit(__LL_ADC_COMMON_INSTANCE(ADC1), &ADC_CommonInitStruct);
|
||||
|
||||
/** Configure Regular Channel
|
||||
*/
|
||||
LL_ADC_REG_SetSequencerRanks(ADC1, LL_ADC_REG_RANK_1, LL_ADC_CHANNEL_TEMPSENSOR);
|
||||
LL_ADC_SetChannelSamplingTime(ADC1, LL_ADC_CHANNEL_TEMPSENSOR, LL_ADC_SAMPLINGTIME_28CYCLES);
|
||||
LL_ADC_SetCommonPathInternalCh(__LL_ADC_COMMON_INSTANCE(ADC1), LL_ADC_PATH_INTERNAL_TEMPSENSOR);
|
||||
|
||||
/** Configure Regular Channel
|
||||
*/
|
||||
LL_ADC_REG_SetSequencerRanks(ADC1, LL_ADC_REG_RANK_2, LL_ADC_CHANNEL_VREFINT);
|
||||
LL_ADC_SetChannelSamplingTime(ADC1, LL_ADC_CHANNEL_VREFINT, LL_ADC_SAMPLINGTIME_28CYCLES);
|
||||
LL_ADC_SetCommonPathInternalCh(__LL_ADC_COMMON_INSTANCE(ADC1), LL_ADC_PATH_INTERNAL_VREFINT);
|
||||
/* USER CODE BEGIN ADC1_Init 2 */
|
||||
|
||||
/* USER CODE END ADC1_Init 2 */
|
||||
|
||||
}
|
||||
|
||||
/* USER CODE BEGIN 1 */
|
||||
|
||||
/* USER CODE END 1 */
|
56
Src/dma.c
56
Src/dma.c
|
@ -1,56 +0,0 @@
|
|||
/* USER CODE BEGIN Header */
|
||||
/**
|
||||
******************************************************************************
|
||||
* @file dma.c
|
||||
* @brief This file provides code for the configuration
|
||||
* of all the requested memory to memory DMA transfers.
|
||||
******************************************************************************
|
||||
* @attention
|
||||
*
|
||||
* Copyright (c) 2024 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.
|
||||
*
|
||||
******************************************************************************
|
||||
*/
|
||||
/* USER CODE END Header */
|
||||
|
||||
/* Includes ------------------------------------------------------------------*/
|
||||
#include "dma.h"
|
||||
|
||||
/* USER CODE BEGIN 0 */
|
||||
|
||||
/* USER CODE END 0 */
|
||||
|
||||
/*----------------------------------------------------------------------------*/
|
||||
/* Configure DMA */
|
||||
/*----------------------------------------------------------------------------*/
|
||||
|
||||
/* USER CODE BEGIN 1 */
|
||||
|
||||
/* USER CODE END 1 */
|
||||
|
||||
/**
|
||||
* Enable DMA controller clock
|
||||
*/
|
||||
void MX_DMA_Init(void)
|
||||
{
|
||||
|
||||
/* Init with LL driver */
|
||||
/* DMA controller clock enable */
|
||||
LL_AHB1_GRP1_EnableClock(LL_AHB1_GRP1_PERIPH_DMA2);
|
||||
|
||||
/* DMA interrupt init */
|
||||
/* DMA2_Stream0_IRQn interrupt configuration */
|
||||
NVIC_SetPriority(DMA2_Stream0_IRQn, NVIC_EncodePriority(NVIC_GetPriorityGrouping(),0, 0));
|
||||
NVIC_EnableIRQ(DMA2_Stream0_IRQn);
|
||||
|
||||
}
|
||||
|
||||
/* USER CODE BEGIN 2 */
|
||||
|
||||
/* USER CODE END 2 */
|
||||
|
|
@ -18,8 +18,6 @@
|
|||
/* USER CODE END Header */
|
||||
/* Includes ------------------------------------------------------------------*/
|
||||
#include "main.h"
|
||||
#include "adc.h"
|
||||
#include "dma.h"
|
||||
#include "tim.h"
|
||||
#include "gpio.h"
|
||||
|
||||
|
@ -96,12 +94,9 @@ int main(void)
|
|||
|
||||
/* Initialize all configured peripherals */
|
||||
MX_GPIO_Init();
|
||||
MX_DMA_Init();
|
||||
MX_TIM6_Init();
|
||||
MX_ADC1_Init();
|
||||
/* USER CODE BEGIN 2 */
|
||||
my_mem_init(SRAMIN); // Initialize internal memory pool 1
|
||||
my_mem_init(SRAMEX); // Initialize external memory pool 2
|
||||
board_init();
|
||||
app_init();
|
||||
/* USER CODE END 2 */
|
||||
|
|
|
@ -202,20 +202,6 @@ void SysTick_Handler(void)
|
|||
/* please refer to the startup file (startup_stm32f4xx.s). */
|
||||
/******************************************************************************/
|
||||
|
||||
/**
|
||||
* @brief This function handles ADC1, ADC2 and ADC3 global interrupts.
|
||||
*/
|
||||
void ADC_IRQHandler(void)
|
||||
{
|
||||
/* USER CODE BEGIN ADC_IRQn 0 */
|
||||
|
||||
/* USER CODE END ADC_IRQn 0 */
|
||||
|
||||
/* USER CODE BEGIN ADC_IRQn 1 */
|
||||
adc_env_callback(ADCS_1);
|
||||
/* USER CODE END ADC_IRQn 1 */
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief This function handles TIM6 global interrupt, DAC1 and DAC2 underrun error interrupts.
|
||||
*/
|
||||
|
@ -235,20 +221,6 @@ void TIM6_DAC_IRQHandler(void)
|
|||
/* USER CODE END TIM6_DAC_IRQn 1 */
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief This function handles DMA2 stream0 global interrupt.
|
||||
*/
|
||||
void DMA2_Stream0_IRQHandler(void)
|
||||
{
|
||||
/* USER CODE BEGIN DMA2_Stream0_IRQn 0 */
|
||||
|
||||
/* USER CODE END DMA2_Stream0_IRQn 0 */
|
||||
|
||||
/* USER CODE BEGIN DMA2_Stream0_IRQn 1 */
|
||||
adc_dma_callback(ADCS_1);
|
||||
/* USER CODE END DMA2_Stream0_IRQn 1 */
|
||||
}
|
||||
|
||||
/* USER CODE BEGIN 1 */
|
||||
|
||||
/* USER CODE END 1 */
|
||||
|
|
|
@ -44,7 +44,7 @@ void MX_TIM6_Init(void)
|
|||
/* USER CODE BEGIN TIM6_Init 1 */
|
||||
|
||||
/* USER CODE END TIM6_Init 1 */
|
||||
TIM_InitStruct.Prescaler = 8399;
|
||||
TIM_InitStruct.Prescaler = 16799;
|
||||
TIM_InitStruct.CounterMode = LL_TIM_COUNTERMODE_UP;
|
||||
TIM_InitStruct.Autoreload = 99;
|
||||
LL_TIM_Init(TIM6, &TIM_InitStruct);
|
||||
|
|
|
@ -13,9 +13,8 @@ static uint8_t business_inspection(struct flow *fl)
|
|||
FL_HEAD(fl);
|
||||
for (;;)
|
||||
{
|
||||
app.cpu_temperature = get_cpu_temperature();
|
||||
app.cpu_volt = get_cpu_voltage();
|
||||
FL_LOCK_DELAY(fl, FL_CLOCK_SEC);
|
||||
|
||||
FL_LOCK_DELAY(fl, FL_CLOCK_100MSEC);
|
||||
}
|
||||
FL_TAIL(fl);
|
||||
}
|
||||
|
|
|
@ -11,8 +11,7 @@
|
|||
|
||||
typedef struct
|
||||
{
|
||||
float32 cpu_temperature;
|
||||
float32 cpu_volt;
|
||||
|
||||
} app_t;
|
||||
|
||||
extern app_t app;
|
||||
|
|
|
@ -1,13 +1,281 @@
|
|||
#include "work.h"
|
||||
#include "board.h"
|
||||
#define OUTPUT_INFORMATION_CYCLE_BASE 100
|
||||
#define DISTANCE 1000
|
||||
#define SPEED 80
|
||||
#define TARGET_POS 500
|
||||
#define TARGET_SPEED 20
|
||||
work_t work;
|
||||
|
||||
/**
|
||||
* @brief 输出信息
|
||||
*
|
||||
* 该函数用于输出一些信息,具体输出内容未实现。
|
||||
*/
|
||||
static void output_information(void)
|
||||
{
|
||||
char data[128];
|
||||
uint8_t len = 0;
|
||||
int32_t rst = 0;
|
||||
osel_memset((uint8_t *)data, 0, ARRAY_LEN(data));
|
||||
|
||||
if (work.type == WORK_MOTOR_POS)
|
||||
{
|
||||
rst = snprintf(data, ARRAY_LEN(data), "%d,%d,%f\r\n", work.target_pos, work.encoder_cnt, work.pwm_percent);
|
||||
}
|
||||
else if (work.type == WORK_MOTOR_SPEED)
|
||||
{
|
||||
rst = snprintf(data, ARRAY_LEN(data), "%d,%d,%f\r\n", work.target_speed, work.encoder_show, work.pwm_percent);
|
||||
}
|
||||
else
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
if (rst == 0 || rst > ARRAY_LEN(data))
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
len = osel_mstrlen((uint8_t *)data);
|
||||
uart_send((uint8_t *)data, len);
|
||||
}
|
||||
|
||||
static void pwm_map(void)
|
||||
{
|
||||
set_motor_pwm(work.pwm_percent);
|
||||
}
|
||||
|
||||
static void pwm_s_curve(void)
|
||||
{
|
||||
}
|
||||
|
||||
static void motor_pos(void)
|
||||
{
|
||||
int32_t code = work.encoder_cnt;
|
||||
work.pwm_percent = work.pid.pid_u.fuzzy.execute(&work.pid.pid_u.fuzzy, work.target_pos, code);
|
||||
set_motor_pwm(work.pwm_percent);
|
||||
}
|
||||
|
||||
static void motor_speed(void)
|
||||
{
|
||||
int32_t code = work.encoder_cnt;
|
||||
work.target_speed_filter = lpf_update(&work.target_speed_lpf, work.target_speed);
|
||||
work.encoder_show = lpf_update(&work.encoder_lpf, work.encoder_cnt);
|
||||
work.encoder_cnt = 0;
|
||||
work.pwm_percent = work.pid.pid_u.fuzzy.execute(&work.pid.pid_u.fuzzy, work.target_speed_filter + 1, code); // 补偿1
|
||||
set_motor_pwm(work.pwm_percent);
|
||||
}
|
||||
|
||||
static void pwm_map_key_handle(button_id_e id)
|
||||
{
|
||||
int8_t min = -100, max = 100;
|
||||
int8_t step = 10;
|
||||
switch (id)
|
||||
{
|
||||
case KEY_ADD:
|
||||
if (work.pwm_percent < max)
|
||||
{
|
||||
work.pwm_percent += step;
|
||||
}
|
||||
break;
|
||||
case KEY_SUB:
|
||||
if (work.pwm_percent > min)
|
||||
{
|
||||
work.pwm_percent -= step;
|
||||
}
|
||||
break;
|
||||
case KEY_S:
|
||||
work.pwm_percent = 10;
|
||||
work.encoder_cnt = 0;
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
static void motot_pos_key_handle(button_id_e id)
|
||||
{
|
||||
int16_t min = 0, max = DISTANCE;
|
||||
int16_t step = 100;
|
||||
switch (id)
|
||||
{
|
||||
case KEY_ADD:
|
||||
if (work.target_pos < max)
|
||||
{
|
||||
work.target_pos += step;
|
||||
}
|
||||
break;
|
||||
case KEY_SUB:
|
||||
if (work.target_pos > min)
|
||||
{
|
||||
work.target_pos -= step;
|
||||
}
|
||||
break;
|
||||
case KEY_S:
|
||||
work.target_pos = TARGET_POS;
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
static void motor_speed_key_handle(button_id_e id)
|
||||
{
|
||||
int16_t min = TARGET_SPEED, max = SPEED;
|
||||
int16_t step = 5;
|
||||
switch (id)
|
||||
{
|
||||
case KEY_ADD:
|
||||
if (work.target_speed < max)
|
||||
{
|
||||
work.target_speed += step;
|
||||
}
|
||||
break;
|
||||
case KEY_SUB:
|
||||
if (work.target_speed > min)
|
||||
{
|
||||
work.target_speed -= step;
|
||||
}
|
||||
break;
|
||||
case KEY_S:
|
||||
work.target_speed = TARGET_SPEED;
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
void work_key_handle_cb(button_id_e id)
|
||||
{
|
||||
|
||||
switch (work.type)
|
||||
{
|
||||
case WORK_PWM_MAP:
|
||||
pwm_map_key_handle(id);
|
||||
break;
|
||||
case WORK_MOTOR_POS:
|
||||
motot_pos_key_handle(id);
|
||||
break;
|
||||
case WORK_MOTOR_SPEED:
|
||||
motor_speed_key_handle(id);
|
||||
break;
|
||||
default:
|
||||
DBG_ASSERT(FALSE __DBG_LINE);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
static void work_data_update(void)
|
||||
{
|
||||
work.pid.pid_u.fuzzy.set_kp(&work.pid.pid_u.fuzzy, work.pid_params.kp);
|
||||
work.pid.pid_u.fuzzy.set_ki(&work.pid.pid_u.fuzzy, work.pid_params.ki);
|
||||
work.pid.pid_u.fuzzy.set_kd(&work.pid.pid_u.fuzzy, work.pid_params.kd);
|
||||
}
|
||||
|
||||
void work_process(void)
|
||||
{
|
||||
switch (work.type)
|
||||
{
|
||||
case WORK_PWM_MAP:
|
||||
pwm_map();
|
||||
break;
|
||||
case WORK_MOTOR_POS:
|
||||
motor_pos();
|
||||
break;
|
||||
case WORK_MOTOR_SPEED:
|
||||
motor_speed();
|
||||
break;
|
||||
case WORK_S_CURVE:
|
||||
pwm_s_curve();
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
if (work.enter_cnt++ % (OUTPUT_INFORMATION_CYCLE_BASE / work.timer_cycle) == 0)
|
||||
{
|
||||
output_information();
|
||||
}
|
||||
work_data_update();
|
||||
}
|
||||
|
||||
void work_encoder_exti(void)
|
||||
{
|
||||
if (GPIO_READ(MOTOR_B_GPIO_Port, MOTOR_B_Pin) == 1)
|
||||
{
|
||||
work.encoder_cnt++;
|
||||
}
|
||||
else
|
||||
{
|
||||
work.encoder_cnt--;
|
||||
}
|
||||
}
|
||||
|
||||
void work_init(void)
|
||||
{
|
||||
osel_memset((uint8_t *)&work, 0, sizeof(work_t));
|
||||
PWM_START(PWM_TIM, PWM_CHANNEL);
|
||||
PWM_SET_DUTY(PWM_TIM, PWM_CHANNEL, 0);
|
||||
work.pwm_feq = PWM_GET_FREQ(PWM_TIM);
|
||||
work.pwm_arr = PWM_GET_ARR(PWM_TIM);
|
||||
work.type = WORK_PWM_MAP;
|
||||
|
||||
// PID初始化
|
||||
|
||||
{
|
||||
work.pid.type = PID_TYPE_FUZZY;
|
||||
work.pid.pid_u.fuzzy.deadzone_dir = DEAD_ZONE_BOTH;
|
||||
|
||||
work.pid_params.dead_zone = 1;
|
||||
|
||||
if (work.type == WORK_MOTOR_POS)
|
||||
{
|
||||
work.pid_params.kp = 1;
|
||||
work.pid_params.ki = 0.01f;
|
||||
work.pid_params.kd = 10;
|
||||
work.pid.sub_type = PID_SUB_TYPE_POSITION;
|
||||
}
|
||||
else
|
||||
{
|
||||
work.pid_params.kp = 0.01;
|
||||
work.pid_params.ki = 0.1f;
|
||||
work.pid_params.kd = 0;
|
||||
work.pid.sub_type = PID_SUB_TYPE_INCREMENT;
|
||||
}
|
||||
pid_constructor(&work.pid);
|
||||
|
||||
if (work.type == WORK_MOTOR_POS)
|
||||
{
|
||||
work.pid.pid_u.fuzzy.set_ctrl_prm(&work.pid.pid_u.fuzzy, work.pid_params.kp, work.pid_params.ki,
|
||||
work.pid_params.kd, work.pid_params.dead_zone, 0, -90, 90); // 电机输出不要超过90
|
||||
work.pid.pid_u.fuzzy.set_kd_enable(&work.pid.pid_u.fuzzy, TRUE);
|
||||
work.position = &work.pid.pid_u.fuzzy.pri_u.position;
|
||||
}
|
||||
else
|
||||
{
|
||||
work.pid.pid_u.fuzzy.set_ctrl_prm(&work.pid.pid_u.fuzzy, work.pid_params.kp, work.pid_params.ki,
|
||||
work.pid_params.kd, work.pid_params.dead_zone, 0, -1 * ((int32_t)SPEED), SPEED);
|
||||
work.pid.pid_u.fuzzy.set_kd_enable(&work.pid.pid_u.fuzzy, FALSE);
|
||||
work.increment = &work.pid.pid_u.fuzzy.pri_u.increment;
|
||||
work.encoder_lpf.alpha = work.pid_params.ki * 1.5f;
|
||||
lpf_init(&work.encoder_lpf);
|
||||
|
||||
work.target_speed_lpf.alpha = work.pid_params.ki * 1.5f;
|
||||
lpf_init(&work.target_speed_lpf);
|
||||
|
||||
// 改变定时器周期
|
||||
uint16_t arr = LL_TIM_GetAutoReload(WORK_TIM);
|
||||
LL_TIM_SetAutoReload(WORK_TIM, arr * 10 - 1);
|
||||
}
|
||||
}
|
||||
|
||||
work.target_pos = TARGET_POS;
|
||||
work.target_speed = TARGET_SPEED;
|
||||
work.timer_cycle = TIM_CYCLE(WORK_TIM);
|
||||
if (work.type == WORK_PWM_MAP)
|
||||
{
|
||||
work.pwm_percent = 10;
|
||||
}
|
||||
|
||||
return;
|
||||
}
|
||||
|
|
|
@ -7,17 +7,47 @@
|
|||
#include "filter.h"
|
||||
typedef enum
|
||||
{
|
||||
|
||||
// PWM占空比映射到电机
|
||||
WORK_PWM_MAP = 0,
|
||||
// 电机位置控制
|
||||
WORK_MOTOR_POS = 1,
|
||||
// 电机速度控制
|
||||
WORK_MOTOR_SPEED = 2,
|
||||
// S曲线
|
||||
WORK_S_CURVE = 3,
|
||||
} work_e;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
work_e type;
|
||||
uint8_t timer_cycle; // 定时器周期
|
||||
uint32_t enter_cnt; // 进入次数
|
||||
int32_t encoder_cnt; // 编码器位置
|
||||
int32_t encoder_show; // 滤波后的编码器位置
|
||||
float32 pwm_percent; // PWM占空比
|
||||
uint32_t pwm_feq; // PWM频率
|
||||
uint16_t pwm_arr; // PWM自动重装载值
|
||||
pid_t pid;
|
||||
pid_common_position_t *position;
|
||||
pid_common_increment_t *increment;
|
||||
struct
|
||||
{
|
||||
float32 kp;
|
||||
float32 ki;
|
||||
float32 kd;
|
||||
float32 dead_zone;
|
||||
} pid_params;
|
||||
|
||||
int32_t target_pos; // 目标位置
|
||||
int32_t target_speed; // 目标速度
|
||||
int32_t target_speed_filter;
|
||||
lpf_t encoder_lpf;
|
||||
lpf_t target_speed_lpf;
|
||||
} work_t;
|
||||
extern work_t work;
|
||||
|
||||
void work_init(void);
|
||||
void work_process(void);
|
||||
|
||||
void work_key_handle_cb(button_id_e id);
|
||||
void work_encoder_exti(void);
|
||||
#endif // __WORK_H__
|
||||
|
|
|
@ -1,7 +1,5 @@
|
|||
#include "board.h"
|
||||
|
||||
board_t board;
|
||||
|
||||
void led_open(led_e led)
|
||||
{
|
||||
switch (led)
|
||||
|
@ -53,32 +51,4 @@ void led_toggle(led_e led)
|
|||
*/
|
||||
void board_init(void)
|
||||
{
|
||||
adc_init(ADCS_1, ADC1, DMA2, LL_DMA_STREAM_0, LL_DMA_CHANNEL_0, 400,
|
||||
INTEMP | INVREF); // 初始化ADC1通道,默认采集AD
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief 获取当前CPU温度
|
||||
* @return {float32} CPU温度
|
||||
* @note
|
||||
*/
|
||||
float32 get_cpu_temperature(void)
|
||||
{
|
||||
float32 tmp = 0.0f;
|
||||
board.adc_raw[ADC_TEMP_CHANNEL] = adc_result_average(ADCS_1, ADC_TEMP_CHANNEL);
|
||||
tmp = adc_result_temperature(board.adc_raw[ADC_TEMP_CHANNEL]);
|
||||
return tmp;
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief 获取当前CPU电压
|
||||
* @return {float32} CPU电压
|
||||
* @note
|
||||
*/
|
||||
float32 get_cpu_voltage(void)
|
||||
{
|
||||
float32 tmp = 0.0f;
|
||||
board.adc_raw[ADC_INVREF_CHANNEL] = adc_result_average(ADCS_1, ADC_INVREF_CHANNEL);
|
||||
tmp = adc_result_value_local(board.adc_raw[ADC_INVREF_CHANNEL]);
|
||||
return tmp;
|
||||
}
|
||||
|
|
|
@ -13,29 +13,9 @@ typedef enum
|
|||
LED_GREEN,
|
||||
} led_e;
|
||||
|
||||
/**
|
||||
* ADC通道定义: 主频4、分频系数8,根据公式 TCONV(转换时间) = (采样时间 + 12.5 个周期)/(主频/ADC分频系数) 计算每个通道单个采集时间
|
||||
*/
|
||||
typedef enum
|
||||
{
|
||||
ADC_TEMP_CHANNEL, ///< 内部参考温度
|
||||
ADC_INVREF_CHANNEL, ///< 内部参考电压
|
||||
ADC1_MAX, ///< ADC1通道最大数量
|
||||
} adc1_channel_e;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
uint16_t adc_raw[ADC1_MAX];
|
||||
} board_t;
|
||||
|
||||
extern board_t board;
|
||||
|
||||
void board_init(void);
|
||||
|
||||
void led_open(led_e led);
|
||||
void led_close(led_e led);
|
||||
void led_toggle(led_e led);
|
||||
|
||||
float32 get_cpu_temperature(void);
|
||||
float32 get_cpu_voltage(void);
|
||||
#endif
|
||||
|
|
|
@ -0,0 +1,737 @@
|
|||
/**
|
||||
* @file ssd1306_oled.c
|
||||
* @author xushenghao
|
||||
* @brief SSD1306 OLED display driver
|
||||
* @version 0.1
|
||||
* @note PB13-SCK PB12-SDA
|
||||
*/
|
||||
#include "ssd1306_oled.h"
|
||||
|
||||
#include "ssd1306_oled.h"
|
||||
|
||||
/************************************6*8的点阵************************************/
|
||||
const uint8_t F6x8[][6] =
|
||||
{
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // sp
|
||||
0x00, 0x00, 0x00, 0x2f, 0x00, 0x00, // !
|
||||
0x00, 0x00, 0x07, 0x00, 0x07, 0x00, // "
|
||||
0x00, 0x14, 0x7f, 0x14, 0x7f, 0x14, // #
|
||||
0x00, 0x24, 0x2a, 0x7f, 0x2a, 0x12, // $
|
||||
0x00, 0x62, 0x64, 0x08, 0x13, 0x23, // %
|
||||
0x00, 0x36, 0x49, 0x55, 0x22, 0x50, // &
|
||||
0x00, 0x00, 0x05, 0x03, 0x00, 0x00, // '
|
||||
0x00, 0x00, 0x1c, 0x22, 0x41, 0x00, // (
|
||||
0x00, 0x00, 0x41, 0x22, 0x1c, 0x00, // )
|
||||
0x00, 0x14, 0x08, 0x3E, 0x08, 0x14, // *
|
||||
0x00, 0x08, 0x08, 0x3E, 0x08, 0x08, // +
|
||||
0x00, 0x00, 0x00, 0xA0, 0x60, 0x00, // ,
|
||||
0x00, 0x08, 0x08, 0x08, 0x08, 0x08, // -
|
||||
0x00, 0x00, 0x60, 0x60, 0x00, 0x00, // .
|
||||
0x00, 0x20, 0x10, 0x08, 0x04, 0x02, // /
|
||||
0x00, 0x3E, 0x51, 0x49, 0x45, 0x3E, // 0
|
||||
0x00, 0x00, 0x42, 0x7F, 0x40, 0x00, // 1
|
||||
0x00, 0x42, 0x61, 0x51, 0x49, 0x46, // 2
|
||||
0x00, 0x21, 0x41, 0x45, 0x4B, 0x31, // 3
|
||||
0x00, 0x18, 0x14, 0x12, 0x7F, 0x10, // 4
|
||||
0x00, 0x27, 0x45, 0x45, 0x45, 0x39, // 5
|
||||
0x00, 0x3C, 0x4A, 0x49, 0x49, 0x30, // 6
|
||||
0x00, 0x01, 0x71, 0x09, 0x05, 0x03, // 7
|
||||
0x00, 0x36, 0x49, 0x49, 0x49, 0x36, // 8
|
||||
0x00, 0x06, 0x49, 0x49, 0x29, 0x1E, // 9
|
||||
0x00, 0x00, 0x36, 0x36, 0x00, 0x00, // :
|
||||
0x00, 0x00, 0x56, 0x36, 0x00, 0x00, // ;
|
||||
0x00, 0x08, 0x14, 0x22, 0x41, 0x00, // <
|
||||
0x00, 0x14, 0x14, 0x14, 0x14, 0x14, // =
|
||||
0x00, 0x00, 0x41, 0x22, 0x14, 0x08, // >
|
||||
0x00, 0x02, 0x01, 0x51, 0x09, 0x06, // ?
|
||||
0x00, 0x32, 0x49, 0x59, 0x51, 0x3E, // @
|
||||
0x00, 0x7C, 0x12, 0x11, 0x12, 0x7C, // A
|
||||
0x00, 0x7F, 0x49, 0x49, 0x49, 0x36, // B
|
||||
0x00, 0x3E, 0x41, 0x41, 0x41, 0x22, // C
|
||||
0x00, 0x7F, 0x41, 0x41, 0x22, 0x1C, // D
|
||||
0x00, 0x7F, 0x49, 0x49, 0x49, 0x41, // E
|
||||
0x00, 0x7F, 0x09, 0x09, 0x09, 0x01, // F
|
||||
0x00, 0x3E, 0x41, 0x49, 0x49, 0x7A, // G
|
||||
0x00, 0x7F, 0x08, 0x08, 0x08, 0x7F, // H
|
||||
0x00, 0x00, 0x41, 0x7F, 0x41, 0x00, // I
|
||||
0x00, 0x20, 0x40, 0x41, 0x3F, 0x01, // J
|
||||
0x00, 0x7F, 0x08, 0x14, 0x22, 0x41, // K
|
||||
0x00, 0x7F, 0x40, 0x40, 0x40, 0x40, // L
|
||||
0x00, 0x7F, 0x02, 0x0C, 0x02, 0x7F, // M
|
||||
0x00, 0x7F, 0x04, 0x08, 0x10, 0x7F, // N
|
||||
0x00, 0x3E, 0x41, 0x41, 0x41, 0x3E, // O
|
||||
0x00, 0x7F, 0x09, 0x09, 0x09, 0x06, // P
|
||||
0x00, 0x3E, 0x41, 0x51, 0x21, 0x5E, // Q
|
||||
0x00, 0x7F, 0x09, 0x19, 0x29, 0x46, // R
|
||||
0x00, 0x46, 0x49, 0x49, 0x49, 0x31, // S
|
||||
0x00, 0x01, 0x01, 0x7F, 0x01, 0x01, // T
|
||||
0x00, 0x3F, 0x40, 0x40, 0x40, 0x3F, // U
|
||||
0x00, 0x1F, 0x20, 0x40, 0x20, 0x1F, // V
|
||||
0x00, 0x3F, 0x40, 0x38, 0x40, 0x3F, // W
|
||||
0x00, 0x63, 0x14, 0x08, 0x14, 0x63, // X
|
||||
0x00, 0x07, 0x08, 0x70, 0x08, 0x07, // Y
|
||||
0x00, 0x61, 0x51, 0x49, 0x45, 0x43, // Z
|
||||
0x00, 0x00, 0x7F, 0x41, 0x41, 0x00, // [
|
||||
0x00, 0x55, 0x2A, 0x55, 0x2A, 0x55, // 55
|
||||
0x00, 0x00, 0x41, 0x41, 0x7F, 0x00, // ]
|
||||
0x00, 0x04, 0x02, 0x01, 0x02, 0x04, // ^
|
||||
0x00, 0x40, 0x40, 0x40, 0x40, 0x40, // _
|
||||
0x00, 0x00, 0x01, 0x02, 0x04, 0x00, // '
|
||||
0x00, 0x20, 0x54, 0x54, 0x54, 0x78, // a
|
||||
0x00, 0x7F, 0x48, 0x44, 0x44, 0x38, // b
|
||||
0x00, 0x38, 0x44, 0x44, 0x44, 0x20, // c
|
||||
0x00, 0x38, 0x44, 0x44, 0x48, 0x7F, // d
|
||||
0x00, 0x38, 0x54, 0x54, 0x54, 0x18, // e
|
||||
0x00, 0x08, 0x7E, 0x09, 0x01, 0x02, // f
|
||||
0x00, 0x18, 0xA4, 0xA4, 0xA4, 0x7C, // g
|
||||
0x00, 0x7F, 0x08, 0x04, 0x04, 0x78, // h
|
||||
0x00, 0x00, 0x44, 0x7D, 0x40, 0x00, // i
|
||||
0x00, 0x40, 0x80, 0x84, 0x7D, 0x00, // j
|
||||
0x00, 0x7F, 0x10, 0x28, 0x44, 0x00, // k
|
||||
0x00, 0x00, 0x41, 0x7F, 0x40, 0x00, // l
|
||||
0x00, 0x7C, 0x04, 0x18, 0x04, 0x78, // m
|
||||
0x00, 0x7C, 0x08, 0x04, 0x04, 0x78, // n
|
||||
0x00, 0x38, 0x44, 0x44, 0x44, 0x38, // o
|
||||
0x00, 0xFC, 0x24, 0x24, 0x24, 0x18, // p
|
||||
0x00, 0x18, 0x24, 0x24, 0x18, 0xFC, // q
|
||||
0x00, 0x7C, 0x08, 0x04, 0x04, 0x08, // r
|
||||
0x00, 0x48, 0x54, 0x54, 0x54, 0x20, // s
|
||||
0x00, 0x04, 0x3F, 0x44, 0x40, 0x20, // t
|
||||
0x00, 0x3C, 0x40, 0x40, 0x20, 0x7C, // u
|
||||
0x00, 0x1C, 0x20, 0x40, 0x20, 0x1C, // v
|
||||
0x00, 0x3C, 0x40, 0x30, 0x40, 0x3C, // w
|
||||
0x00, 0x44, 0x28, 0x10, 0x28, 0x44, // x
|
||||
0x00, 0x1C, 0xA0, 0xA0, 0xA0, 0x7C, // y
|
||||
0x00, 0x44, 0x64, 0x54, 0x4C, 0x44, // z
|
||||
0x14, 0x14, 0x14, 0x14, 0x14, 0x14, // horiz lines
|
||||
};
|
||||
/****************************************8*16的点阵************************************/
|
||||
const uint8_t F8X16[] =
|
||||
{
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 0
|
||||
0x00, 0x00, 0x00, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x33, 0x30, 0x00, 0x00, 0x00, //! 1
|
||||
0x00, 0x10, 0x0C, 0x06, 0x10, 0x0C, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //" 2
|
||||
0x40, 0xC0, 0x78, 0x40, 0xC0, 0x78, 0x40, 0x00, 0x04, 0x3F, 0x04, 0x04, 0x3F, 0x04, 0x04, 0x00, // # 3
|
||||
0x00, 0x70, 0x88, 0xFC, 0x08, 0x30, 0x00, 0x00, 0x00, 0x18, 0x20, 0xFF, 0x21, 0x1E, 0x00, 0x00, //$ 4
|
||||
0xF0, 0x08, 0xF0, 0x00, 0xE0, 0x18, 0x00, 0x00, 0x00, 0x21, 0x1C, 0x03, 0x1E, 0x21, 0x1E, 0x00, //% 5
|
||||
0x00, 0xF0, 0x08, 0x88, 0x70, 0x00, 0x00, 0x00, 0x1E, 0x21, 0x23, 0x24, 0x19, 0x27, 0x21, 0x10, //& 6
|
||||
0x10, 0x16, 0x0E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //' 7
|
||||
0x00, 0x00, 0x00, 0xE0, 0x18, 0x04, 0x02, 0x00, 0x00, 0x00, 0x00, 0x07, 0x18, 0x20, 0x40, 0x00, //( 8
|
||||
0x00, 0x02, 0x04, 0x18, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x40, 0x20, 0x18, 0x07, 0x00, 0x00, 0x00, //) 9
|
||||
0x40, 0x40, 0x80, 0xF0, 0x80, 0x40, 0x40, 0x00, 0x02, 0x02, 0x01, 0x0F, 0x01, 0x02, 0x02, 0x00, //* 10
|
||||
0x00, 0x00, 0x00, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x1F, 0x01, 0x01, 0x01, 0x00, //+ 11
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xB0, 0x70, 0x00, 0x00, 0x00, 0x00, 0x00, //, 12
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, //- 13
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, //. 14
|
||||
0x00, 0x00, 0x00, 0x00, 0x80, 0x60, 0x18, 0x04, 0x00, 0x60, 0x18, 0x06, 0x01, 0x00, 0x00, 0x00, /// 15
|
||||
0x00, 0xE0, 0x10, 0x08, 0x08, 0x10, 0xE0, 0x00, 0x00, 0x0F, 0x10, 0x20, 0x20, 0x10, 0x0F, 0x00, // 0 16
|
||||
0x00, 0x10, 0x10, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x20, 0x3F, 0x20, 0x20, 0x00, 0x00, // 1 17
|
||||
0x00, 0x70, 0x08, 0x08, 0x08, 0x88, 0x70, 0x00, 0x00, 0x30, 0x28, 0x24, 0x22, 0x21, 0x30, 0x00, // 2 18
|
||||
0x00, 0x30, 0x08, 0x88, 0x88, 0x48, 0x30, 0x00, 0x00, 0x18, 0x20, 0x20, 0x20, 0x11, 0x0E, 0x00, // 3 19
|
||||
0x00, 0x00, 0xC0, 0x20, 0x10, 0xF8, 0x00, 0x00, 0x00, 0x07, 0x04, 0x24, 0x24, 0x3F, 0x24, 0x00, // 4 20
|
||||
0x00, 0xF8, 0x08, 0x88, 0x88, 0x08, 0x08, 0x00, 0x00, 0x19, 0x21, 0x20, 0x20, 0x11, 0x0E, 0x00, // 5 21
|
||||
0x00, 0xE0, 0x10, 0x88, 0x88, 0x18, 0x00, 0x00, 0x00, 0x0F, 0x11, 0x20, 0x20, 0x11, 0x0E, 0x00, // 6 22
|
||||
0x00, 0x38, 0x08, 0x08, 0xC8, 0x38, 0x08, 0x00, 0x00, 0x00, 0x00, 0x3F, 0x00, 0x00, 0x00, 0x00, // 7 23
|
||||
0x00, 0x70, 0x88, 0x08, 0x08, 0x88, 0x70, 0x00, 0x00, 0x1C, 0x22, 0x21, 0x21, 0x22, 0x1C, 0x00, // 8 24
|
||||
0x00, 0xE0, 0x10, 0x08, 0x08, 0x10, 0xE0, 0x00, 0x00, 0x00, 0x31, 0x22, 0x22, 0x11, 0x0F, 0x00, // 9 25
|
||||
0x00, 0x00, 0x00, 0xC0, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x30, 0x00, 0x00, 0x00, //: 26
|
||||
0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x60, 0x00, 0x00, 0x00, 0x00, //; 27
|
||||
0x00, 0x00, 0x80, 0x40, 0x20, 0x10, 0x08, 0x00, 0x00, 0x01, 0x02, 0x04, 0x08, 0x10, 0x20, 0x00, //< 28
|
||||
0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x00, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x00, //= 29
|
||||
0x00, 0x08, 0x10, 0x20, 0x40, 0x80, 0x00, 0x00, 0x00, 0x20, 0x10, 0x08, 0x04, 0x02, 0x01, 0x00, //> 30
|
||||
0x00, 0x70, 0x48, 0x08, 0x08, 0x08, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x30, 0x36, 0x01, 0x00, 0x00, //? 31
|
||||
0xC0, 0x30, 0xC8, 0x28, 0xE8, 0x10, 0xE0, 0x00, 0x07, 0x18, 0x27, 0x24, 0x23, 0x14, 0x0B, 0x00, //@ 32
|
||||
0x00, 0x00, 0xC0, 0x38, 0xE0, 0x00, 0x00, 0x00, 0x20, 0x3C, 0x23, 0x02, 0x02, 0x27, 0x38, 0x20, // A 33
|
||||
0x08, 0xF8, 0x88, 0x88, 0x88, 0x70, 0x00, 0x00, 0x20, 0x3F, 0x20, 0x20, 0x20, 0x11, 0x0E, 0x00, // B 34
|
||||
0xC0, 0x30, 0x08, 0x08, 0x08, 0x08, 0x38, 0x00, 0x07, 0x18, 0x20, 0x20, 0x20, 0x10, 0x08, 0x00, // C 35
|
||||
0x08, 0xF8, 0x08, 0x08, 0x08, 0x10, 0xE0, 0x00, 0x20, 0x3F, 0x20, 0x20, 0x20, 0x10, 0x0F, 0x00, // D 36
|
||||
0x08, 0xF8, 0x88, 0x88, 0xE8, 0x08, 0x10, 0x00, 0x20, 0x3F, 0x20, 0x20, 0x23, 0x20, 0x18, 0x00, // E 37
|
||||
0x08, 0xF8, 0x88, 0x88, 0xE8, 0x08, 0x10, 0x00, 0x20, 0x3F, 0x20, 0x00, 0x03, 0x00, 0x00, 0x00, // F 38
|
||||
0xC0, 0x30, 0x08, 0x08, 0x08, 0x38, 0x00, 0x00, 0x07, 0x18, 0x20, 0x20, 0x22, 0x1E, 0x02, 0x00, // G 39
|
||||
0x08, 0xF8, 0x08, 0x00, 0x00, 0x08, 0xF8, 0x08, 0x20, 0x3F, 0x21, 0x01, 0x01, 0x21, 0x3F, 0x20, // H 40
|
||||
0x00, 0x08, 0x08, 0xF8, 0x08, 0x08, 0x00, 0x00, 0x00, 0x20, 0x20, 0x3F, 0x20, 0x20, 0x00, 0x00, // I 41
|
||||
0x00, 0x00, 0x08, 0x08, 0xF8, 0x08, 0x08, 0x00, 0xC0, 0x80, 0x80, 0x80, 0x7F, 0x00, 0x00, 0x00, // J 42
|
||||
0x08, 0xF8, 0x88, 0xC0, 0x28, 0x18, 0x08, 0x00, 0x20, 0x3F, 0x20, 0x01, 0x26, 0x38, 0x20, 0x00, // K 43
|
||||
0x08, 0xF8, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x3F, 0x20, 0x20, 0x20, 0x20, 0x30, 0x00, // L 44
|
||||
0x08, 0xF8, 0xF8, 0x00, 0xF8, 0xF8, 0x08, 0x00, 0x20, 0x3F, 0x00, 0x3F, 0x00, 0x3F, 0x20, 0x00, // M 45
|
||||
0x08, 0xF8, 0x30, 0xC0, 0x00, 0x08, 0xF8, 0x08, 0x20, 0x3F, 0x20, 0x00, 0x07, 0x18, 0x3F, 0x00, // N 46
|
||||
0xE0, 0x10, 0x08, 0x08, 0x08, 0x10, 0xE0, 0x00, 0x0F, 0x10, 0x20, 0x20, 0x20, 0x10, 0x0F, 0x00, // O 47
|
||||
0x08, 0xF8, 0x08, 0x08, 0x08, 0x08, 0xF0, 0x00, 0x20, 0x3F, 0x21, 0x01, 0x01, 0x01, 0x00, 0x00, // P 48
|
||||
0xE0, 0x10, 0x08, 0x08, 0x08, 0x10, 0xE0, 0x00, 0x0F, 0x18, 0x24, 0x24, 0x38, 0x50, 0x4F, 0x00, // Q 49
|
||||
0x08, 0xF8, 0x88, 0x88, 0x88, 0x88, 0x70, 0x00, 0x20, 0x3F, 0x20, 0x00, 0x03, 0x0C, 0x30, 0x20, // R 50
|
||||
0x00, 0x70, 0x88, 0x08, 0x08, 0x08, 0x38, 0x00, 0x00, 0x38, 0x20, 0x21, 0x21, 0x22, 0x1C, 0x00, // S 51
|
||||
0x18, 0x08, 0x08, 0xF8, 0x08, 0x08, 0x18, 0x00, 0x00, 0x00, 0x20, 0x3F, 0x20, 0x00, 0x00, 0x00, // T 52
|
||||
0x08, 0xF8, 0x08, 0x00, 0x00, 0x08, 0xF8, 0x08, 0x00, 0x1F, 0x20, 0x20, 0x20, 0x20, 0x1F, 0x00, // U 53
|
||||
0x08, 0x78, 0x88, 0x00, 0x00, 0xC8, 0x38, 0x08, 0x00, 0x00, 0x07, 0x38, 0x0E, 0x01, 0x00, 0x00, // V 54
|
||||
0xF8, 0x08, 0x00, 0xF8, 0x00, 0x08, 0xF8, 0x00, 0x03, 0x3C, 0x07, 0x00, 0x07, 0x3C, 0x03, 0x00, // W 55
|
||||
0x08, 0x18, 0x68, 0x80, 0x80, 0x68, 0x18, 0x08, 0x20, 0x30, 0x2C, 0x03, 0x03, 0x2C, 0x30, 0x20, // X 56
|
||||
0x08, 0x38, 0xC8, 0x00, 0xC8, 0x38, 0x08, 0x00, 0x00, 0x00, 0x20, 0x3F, 0x20, 0x00, 0x00, 0x00, // Y 57
|
||||
0x10, 0x08, 0x08, 0x08, 0xC8, 0x38, 0x08, 0x00, 0x20, 0x38, 0x26, 0x21, 0x20, 0x20, 0x18, 0x00, // Z 58
|
||||
0x00, 0x00, 0x00, 0xFE, 0x02, 0x02, 0x02, 0x00, 0x00, 0x00, 0x00, 0x7F, 0x40, 0x40, 0x40, 0x00, //[ 59
|
||||
0x00, 0x0C, 0x30, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x06, 0x38, 0xC0, 0x00, //\ 60
|
||||
0x00, 0x02, 0x02, 0x02, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x40, 0x40, 0x40, 0x7F, 0x00, 0x00, 0x00, //] 61
|
||||
0x00, 0x00, 0x04, 0x02, 0x02, 0x02, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //^ 62
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, //_ 63
|
||||
0x00, 0x02, 0x02, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //` 64
|
||||
0x00, 0x00, 0x80, 0x80, 0x80, 0x80, 0x00, 0x00, 0x00, 0x19, 0x24, 0x22, 0x22, 0x22, 0x3F, 0x20, // a 65
|
||||
0x08, 0xF8, 0x00, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x3F, 0x11, 0x20, 0x20, 0x11, 0x0E, 0x00, // b 66
|
||||
0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0x00, 0x00, 0x00, 0x0E, 0x11, 0x20, 0x20, 0x20, 0x11, 0x00, // c 67
|
||||
0x00, 0x00, 0x00, 0x80, 0x80, 0x88, 0xF8, 0x00, 0x00, 0x0E, 0x11, 0x20, 0x20, 0x10, 0x3F, 0x20, // d 68
|
||||
0x00, 0x00, 0x80, 0x80, 0x80, 0x80, 0x00, 0x00, 0x00, 0x1F, 0x22, 0x22, 0x22, 0x22, 0x13, 0x00, // e 69
|
||||
0x00, 0x80, 0x80, 0xF0, 0x88, 0x88, 0x88, 0x18, 0x00, 0x20, 0x20, 0x3F, 0x20, 0x20, 0x00, 0x00, // f 70
|
||||
0x00, 0x00, 0x80, 0x80, 0x80, 0x80, 0x80, 0x00, 0x00, 0x6B, 0x94, 0x94, 0x94, 0x93, 0x60, 0x00, // g 71
|
||||
0x08, 0xF8, 0x00, 0x80, 0x80, 0x80, 0x00, 0x00, 0x20, 0x3F, 0x21, 0x00, 0x00, 0x20, 0x3F, 0x20, // h 72
|
||||
0x00, 0x80, 0x98, 0x98, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x20, 0x3F, 0x20, 0x20, 0x00, 0x00, // i 73
|
||||
0x00, 0x00, 0x00, 0x80, 0x98, 0x98, 0x00, 0x00, 0x00, 0xC0, 0x80, 0x80, 0x80, 0x7F, 0x00, 0x00, // j 74
|
||||
0x08, 0xF8, 0x00, 0x00, 0x80, 0x80, 0x80, 0x00, 0x20, 0x3F, 0x24, 0x02, 0x2D, 0x30, 0x20, 0x00, // k 75
|
||||
0x00, 0x08, 0x08, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x20, 0x3F, 0x20, 0x20, 0x00, 0x00, // l 76
|
||||
0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x00, 0x20, 0x3F, 0x20, 0x00, 0x3F, 0x20, 0x00, 0x3F, // m 77
|
||||
0x80, 0x80, 0x00, 0x80, 0x80, 0x80, 0x00, 0x00, 0x20, 0x3F, 0x21, 0x00, 0x00, 0x20, 0x3F, 0x20, // n 78
|
||||
0x00, 0x00, 0x80, 0x80, 0x80, 0x80, 0x00, 0x00, 0x00, 0x1F, 0x20, 0x20, 0x20, 0x20, 0x1F, 0x00, // o 79
|
||||
0x80, 0x80, 0x00, 0x80, 0x80, 0x00, 0x00, 0x00, 0x80, 0xFF, 0xA1, 0x20, 0x20, 0x11, 0x0E, 0x00, // p 80
|
||||
0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0x80, 0x00, 0x00, 0x0E, 0x11, 0x20, 0x20, 0xA0, 0xFF, 0x80, // q 81
|
||||
0x80, 0x80, 0x80, 0x00, 0x80, 0x80, 0x80, 0x00, 0x20, 0x20, 0x3F, 0x21, 0x20, 0x00, 0x01, 0x00, // r 82
|
||||
0x00, 0x00, 0x80, 0x80, 0x80, 0x80, 0x80, 0x00, 0x00, 0x33, 0x24, 0x24, 0x24, 0x24, 0x19, 0x00, // s 83
|
||||
0x00, 0x80, 0x80, 0xE0, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x20, 0x20, 0x00, 0x00, // t 84
|
||||
0x80, 0x80, 0x00, 0x00, 0x00, 0x80, 0x80, 0x00, 0x00, 0x1F, 0x20, 0x20, 0x20, 0x10, 0x3F, 0x20, // u 85
|
||||
0x80, 0x80, 0x80, 0x00, 0x00, 0x80, 0x80, 0x80, 0x00, 0x01, 0x0E, 0x30, 0x08, 0x06, 0x01, 0x00, // v 86
|
||||
0x80, 0x80, 0x00, 0x80, 0x00, 0x80, 0x80, 0x80, 0x0F, 0x30, 0x0C, 0x03, 0x0C, 0x30, 0x0F, 0x00, // w 87
|
||||
0x00, 0x80, 0x80, 0x00, 0x80, 0x80, 0x80, 0x00, 0x00, 0x20, 0x31, 0x2E, 0x0E, 0x31, 0x20, 0x00, // x 88
|
||||
0x80, 0x80, 0x80, 0x00, 0x00, 0x80, 0x80, 0x80, 0x80, 0x81, 0x8E, 0x70, 0x18, 0x06, 0x01, 0x00, // y 89
|
||||
0x00, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x00, 0x00, 0x21, 0x30, 0x2C, 0x22, 0x21, 0x30, 0x00, // z 90
|
||||
0x00, 0x00, 0x00, 0x00, 0x80, 0x7C, 0x02, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3F, 0x40, 0x40, //{ 91
|
||||
0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, //| 92
|
||||
0x00, 0x02, 0x02, 0x7C, 0x80, 0x00, 0x00, 0x00, 0x00, 0x40, 0x40, 0x3F, 0x00, 0x00, 0x00, 0x00, //} 93
|
||||
0x00, 0x06, 0x01, 0x01, 0x02, 0x02, 0x04, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //~ 94
|
||||
};
|
||||
|
||||
static uint8_t _buffer[SSD1306_WIDTH * SSD1306_HEIGHT / 8]; // 定义屏幕缓冲区
|
||||
|
||||
static void i2c_start(void)
|
||||
{
|
||||
SDA_OUT();
|
||||
GPIO_SET(SSD1306_SDA_PORT, SSD1306_SDA_PIN);
|
||||
GPIO_SET(SSD1306_SCK_PORT, SSD1306_SCK_PIN);
|
||||
delay_us(4);
|
||||
GPIO_RESET(SSD1306_SDA_PORT, SSD1306_SDA_PIN);
|
||||
delay_us(4);
|
||||
GPIO_RESET(SSD1306_SCK_PORT, SSD1306_SCK_PIN);
|
||||
}
|
||||
|
||||
static void i2c_stop(void)
|
||||
{
|
||||
SDA_OUT();
|
||||
GPIO_RESET(SSD1306_SCK_PORT, SSD1306_SCK_PIN);
|
||||
GPIO_RESET(SSD1306_SDA_PORT, SSD1306_SDA_PIN);
|
||||
delay_us(4);
|
||||
GPIO_SET(SSD1306_SCK_PORT, SSD1306_SCK_PIN);
|
||||
GPIO_SET(SSD1306_SDA_PORT, SSD1306_SDA_PIN);
|
||||
delay_us(4);
|
||||
}
|
||||
|
||||
static BOOL i2c_wait_ack(void)
|
||||
{
|
||||
uint8_t count = 0;
|
||||
SDA_IN();
|
||||
GPIO_SET(SSD1306_SDA_PORT, SSD1306_SDA_PIN);
|
||||
delay_us(4);
|
||||
GPIO_SET(SSD1306_SCK_PORT, SSD1306_SCK_PIN);
|
||||
delay_us(4);
|
||||
while (GPIO_READ(SSD1306_SDA_PORT, SSD1306_SDA_PIN))
|
||||
{
|
||||
count++;
|
||||
if (count > 250)
|
||||
{
|
||||
i2c_stop();
|
||||
return FALSE;
|
||||
}
|
||||
}
|
||||
GPIO_RESET(SSD1306_SCK_PORT, SSD1306_SCK_PIN);
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
static void i2c_ack(void)
|
||||
{
|
||||
GPIO_RESET(SSD1306_SCK_PORT, SSD1306_SCK_PIN);
|
||||
SDA_OUT();
|
||||
GPIO_RESET(SSD1306_SDA_PORT, SSD1306_SDA_PIN);
|
||||
delay_us(2);
|
||||
GPIO_SET(SSD1306_SCK_PORT, SSD1306_SCK_PIN);
|
||||
delay_us(2);
|
||||
GPIO_RESET(SSD1306_SCK_PORT, SSD1306_SCK_PIN);
|
||||
}
|
||||
|
||||
static void i2c_nack(void)
|
||||
{
|
||||
GPIO_RESET(SSD1306_SCK_PORT, SSD1306_SCK_PIN);
|
||||
SDA_OUT();
|
||||
GPIO_SET(SSD1306_SDA_PORT, SSD1306_SDA_PIN);
|
||||
delay_us(2);
|
||||
GPIO_SET(SSD1306_SCK_PORT, SSD1306_SCK_PIN);
|
||||
delay_us(2);
|
||||
GPIO_RESET(SSD1306_SCK_PORT, SSD1306_SCK_PIN);
|
||||
}
|
||||
|
||||
uint8_t i2c_read_byte(BOOL ack)
|
||||
{
|
||||
uint8_t i = 0, receive = 0;
|
||||
SDA_IN();
|
||||
for (i = 0; i < 8; i++)
|
||||
{
|
||||
GPIO_RESET(SSD1306_SCK_PORT, SSD1306_SCK_PIN);
|
||||
delay_us(2);
|
||||
GPIO_SET(SSD1306_SCK_PORT, SSD1306_SCK_PIN);
|
||||
receive <<= 1;
|
||||
if (GPIO_READ(SSD1306_SDA_PORT, SSD1306_SDA_PIN))
|
||||
{
|
||||
receive++;
|
||||
}
|
||||
delay_us(1);
|
||||
}
|
||||
|
||||
if (!ack)
|
||||
{
|
||||
i2c_nack();
|
||||
}
|
||||
else
|
||||
{
|
||||
i2c_ack();
|
||||
}
|
||||
|
||||
return receive;
|
||||
}
|
||||
|
||||
void i2c_write_byte(uint8_t data)
|
||||
{
|
||||
uint8_t i = 0;
|
||||
SDA_OUT();
|
||||
GPIO_RESET(SSD1306_SCK_PORT, SSD1306_SCK_PIN);
|
||||
for (i = 0; i < 8; i++)
|
||||
{
|
||||
// IIC_SDA=(txd&0x80)>>7;
|
||||
if ((data & 0x80) >> 7)
|
||||
GPIO_SET(SSD1306_SDA_PORT, SSD1306_SDA_PIN);
|
||||
else
|
||||
GPIO_RESET(SSD1306_SDA_PORT, SSD1306_SDA_PIN);
|
||||
|
||||
data <<= 1;
|
||||
delay_us(2);
|
||||
GPIO_SET(SSD1306_SCK_PORT, SSD1306_SCK_PIN);
|
||||
delay_us(2);
|
||||
GPIO_RESET(SSD1306_SCK_PORT, SSD1306_SCK_PIN);
|
||||
delay_us(2);
|
||||
}
|
||||
}
|
||||
|
||||
static void i2c_write_command(uint8_t command)
|
||||
{
|
||||
uint8_t dd[2];
|
||||
dd[0] = SSD1306_CMD_SET_LOW_COLUMN; // Co = 0, D/C# = 0
|
||||
dd[1] = command;
|
||||
i2c_start();
|
||||
i2c_write_byte(SSD1306_I2C_ADDRESS);
|
||||
i2c_wait_ack();
|
||||
|
||||
i2c_write_byte(dd[0]);
|
||||
i2c_wait_ack();
|
||||
|
||||
i2c_write_byte(dd[1]);
|
||||
i2c_wait_ack();
|
||||
i2c_stop();
|
||||
}
|
||||
|
||||
static void i2c_write_data(uint8_t data)
|
||||
{
|
||||
uint8_t dd[2];
|
||||
dd[0] = SSD1306_CMD_SET_START_LINE; // Co = 0, D/C# = 1
|
||||
dd[1] = data;
|
||||
i2c_start();
|
||||
i2c_write_byte(SSD1306_I2C_ADDRESS);
|
||||
i2c_wait_ack();
|
||||
|
||||
i2c_write_byte(dd[0]);
|
||||
i2c_wait_ack();
|
||||
|
||||
i2c_write_byte(dd[1]);
|
||||
i2c_wait_ack();
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief 设置SSD1306 OLED显示屏上的显示位置
|
||||
*
|
||||
* 该函数用于设置SSD1306 OLED显示屏上的显示位置,通过x和y坐标确定显示位置。
|
||||
*
|
||||
* @param x 要设置的横坐标(0-127)
|
||||
* @param y 要设置的纵坐标(0-7,对应SSD1306 OLED的8个页面)
|
||||
*/
|
||||
void set_position(uint8_t x, uint8_t y)
|
||||
{
|
||||
i2c_write_command(0xb0 + y);
|
||||
i2c_write_command(((x & 0xf0) >> 4) | 0x10);
|
||||
i2c_write_command((x & 0x0f) | 0x01);
|
||||
}
|
||||
|
||||
void ssd1306_test(void)
|
||||
{
|
||||
ssd1306_f8x16_string(0, 0, " TEST");
|
||||
ssd1306_f8x16_number(40, 0, -15.26, 2);
|
||||
ssd1306_f6x8_string_number(0, 3, " @ADC1:", 'V', 24);
|
||||
ssd1306_update_screen();
|
||||
}
|
||||
|
||||
void ssd1306_init(void)
|
||||
{
|
||||
i2c_write_command(SSD1306_CMD_DISPLAY_OFF); // display off
|
||||
i2c_write_command(SSD1306_CMD_MEMORY_MODE); // Set Memory Addressing Mode
|
||||
i2c_write_command(SSD1306_CMD_SET_HIGH_COLUMN); // 00,Horizontal Addressing Mode;01,Vertical Addressing Mode;10,Page Addressing Mode (RESET);11,Invalid
|
||||
i2c_write_command(SSD1306_CMD_COM_SCAN_DEC); // Set COM Output Scan Direction
|
||||
i2c_write_command(SSD1306_CMD_SET_LOW_COLUMN); //---set low column address
|
||||
i2c_write_command(SSD1306_CMD_SET_HIGH_COLUMN); //---set high column address
|
||||
i2c_write_command(SSD1306_CMD_SET_START_LINE); //--set start line address
|
||||
i2c_write_command(SSD1306_CMD_SET_CONTRAST); //--set contrast control register
|
||||
i2c_write_command(0xff); // 亮度调节 0x00~0xff
|
||||
i2c_write_command(0xa1); //--set segment re-map 0 to 127
|
||||
i2c_write_command(SSD1306_CMD_NORMAL_DISPLAY); //--set normal display
|
||||
i2c_write_command(SSD1306_CMD_SET_MULTIPLEX); //--set multiplex ratio(1 to 64)
|
||||
i2c_write_command(0x3f); //
|
||||
i2c_write_command(SSD1306_CMD_DISPLAY_ALL_ON_RESUME); // 0xa4,Output follows RAM content;0xa5,Output ignores RAM content
|
||||
i2c_write_command(SSD1306_CMD_SET_DISPLAY_OFFSET); //-set display offset
|
||||
i2c_write_command(SSD1306_CMD_SET_LOW_COLUMN); //-not offset
|
||||
i2c_write_command(SSD1306_CMD_SET_DISPLAY_CLOCK_DIV); //--set display clock divide ratio/oscillator frequency
|
||||
i2c_write_command(0xf0); //--set divide ratio
|
||||
i2c_write_command(SSD1306_CMD_SET_PRECHARGE); //--set pre-charge period
|
||||
i2c_write_command(SSD1306_CMD_PAGE_ADDR); //
|
||||
i2c_write_command(SSD1306_CMD_SET_COM_PINS); //--set com pins hardware configuration
|
||||
i2c_write_command(0x12);
|
||||
i2c_write_command(SSD1306_CMD_SET_VCOM_DETECT); //--set vcomh
|
||||
i2c_write_command(SSD1306_CMD_MEMORY_MODE); // 0x20,0.77xVcc
|
||||
i2c_write_command(SSD1306_CMD_CHARGE_PUMP); //--set DC-DC enable
|
||||
i2c_write_command(SSD1306_CMD_SET_DC_DC_ENABLE); //
|
||||
i2c_write_command(SSD1306_CMD_DISPLAY_ON); //--turn on oled panel
|
||||
ssd1306_fill(0);
|
||||
|
||||
// ssd1306_test();
|
||||
}
|
||||
|
||||
void ssd1306_display_on(void)
|
||||
{
|
||||
i2c_write_command(SSD1306_CMD_CHARGE_PUMP); // 设置电荷泵
|
||||
i2c_write_command(SSD1306_CMD_SET_DC_DC_ENABLE); // 开启电荷泵
|
||||
i2c_write_command(SSD1306_CMD_DISPLAY_ON); // OLED唤醒
|
||||
}
|
||||
|
||||
void ssd1306_display_off(void)
|
||||
{
|
||||
i2c_write_command(SSD1306_CMD_CHARGE_PUMP); // 设置电荷泵
|
||||
i2c_write_command(SSD1306_CMD_SET_HIGH_COLUMN); // 关闭电荷泵
|
||||
i2c_write_command(SSD1306_CMD_DISPLAY_OFF); // OLED休眠
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief 更新SSD1306 OLED显示屏的内容
|
||||
*
|
||||
* 此函数将缓冲区中的数据写入SSD1306 OLED显示屏,从而更新显示内容。
|
||||
*
|
||||
* 首先,通过发送命令设置列地址和页地址,然后将缓冲区中的数据逐行写入显示屏。
|
||||
*
|
||||
* @note 在调用此函数之前,需要将需要显示的数据写入缓冲区。
|
||||
*/
|
||||
void ssd1306_update_screen(void)
|
||||
{
|
||||
for (uint8_t i = 0; i < SSD1306_HEIGHT / 8; i++)
|
||||
{
|
||||
i2c_write_command(0xb0 + i);
|
||||
i2c_write_command(0x01);
|
||||
i2c_write_command(0x10);
|
||||
for (uint8_t j = 0; j < SSD1306_WIDTH; j++)
|
||||
{
|
||||
i2c_write_data(_buffer[j + i * SSD1306_WIDTH]);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief 填充整个屏幕为指定颜色
|
||||
*
|
||||
* 该函数将 SSD1306 OLED 显示屏的每一个像素点都设置为指定的颜色。
|
||||
*
|
||||
* @param color 颜色值,0x00 表示关闭像素点(黑色),0xFF 表示打开像素点(白色)
|
||||
*/
|
||||
void ssd1306_fill(uint8_t color)
|
||||
{
|
||||
osel_memset(_buffer, color, ARRAY_LEN(_buffer));
|
||||
ssd1306_update_screen();
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief 清空SSD1306显示屏
|
||||
*
|
||||
* 该函数通过向SSD1306显示屏发送一系列命令来清空显示内容。
|
||||
*
|
||||
* 首先,通过循环遍历每个页面(SSD1306显示屏有8个页面),
|
||||
* 对每个页面执行以下操作:
|
||||
* 1. 发送页面地址命令(0xb0 + y),其中y为当前页面索引。
|
||||
* 2. 发送列地址低位命令(0x01)。
|
||||
* 3. 发送列地址高位命令(0x10),表示从第一列开始。
|
||||
* 4. 循环遍历每一列(SSD1306显示屏的宽度),
|
||||
* 发送数据0x00以清空该列的内容。
|
||||
*/
|
||||
void ssd1306_clear(void)
|
||||
{
|
||||
osel_memset(_buffer, 0, ARRAY_LEN(_buffer));
|
||||
ssd1306_update_screen();
|
||||
}
|
||||
|
||||
void ssd1306_clear_buffer(void)
|
||||
{
|
||||
osel_memset(_buffer, 0, ARRAY_LEN(_buffer));
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief 在指定区域内绘制BMP
|
||||
*
|
||||
* 在指定坐标区域内绘制一个BMP,使用SSD1306 OLED显示屏
|
||||
* ssd1306_draw_bmp(0, 0, SSD1306_WIDTH, 2);
|
||||
* @param x0 BMP绘制的起始X坐标
|
||||
* @param y0 BMP绘制的起始Y坐标
|
||||
* @param x1 BMP绘制的结束X坐标
|
||||
* @param y1 BMP绘制的结束Y坐标
|
||||
*/
|
||||
void ssd1306_draw_bmp(uint8_t x0, uint8_t y0, uint8_t x1, uint8_t y1, uint8_t *bmp)
|
||||
{
|
||||
uint8_t j = 0;
|
||||
uint8_t x, y;
|
||||
osel_memset(_buffer, 0, ARRAY_LEN(_buffer));
|
||||
if (y1 % 8 == 0)
|
||||
y = y1 / 8;
|
||||
else
|
||||
y = y1 / 8 + 1;
|
||||
for (y = y0; y < y1; y++)
|
||||
{
|
||||
set_position(x0, y);
|
||||
for (x = x0; x < x1; x++)
|
||||
{
|
||||
i2c_write_data(bmp[j++]);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief 在SSD1306 OLED显示屏上显示字符串
|
||||
*
|
||||
* 在SSD1306 OLED显示屏上以6x8像素的字体显示给定的字符串。
|
||||
*
|
||||
* @param x 显示字符串的起始x坐标
|
||||
* @param y 显示字符串的起始y坐标
|
||||
* @param str 要显示的字符串
|
||||
*/
|
||||
void ssd1306_f6x8_string(uint8_t x, uint8_t y, const uint8_t *ch)
|
||||
{
|
||||
uint8_t c = 0, i = 0, j = 0;
|
||||
while (ch[j] != '\0')
|
||||
{
|
||||
c = ch[j] - 32;
|
||||
if (x > 126)
|
||||
{
|
||||
x = 0;
|
||||
y++;
|
||||
}
|
||||
for (i = 0; i < 6; i++)
|
||||
_buffer[(y * SSD1306_WIDTH) + x + i] = F6x8[c][i];
|
||||
x += 6;
|
||||
j++;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief 在SSD1306 OLED屏幕上显示字符串和数字
|
||||
*
|
||||
* 该函数用于在SSD1306 OLED屏幕上显示字符串和数字。首先显示一个字符串,
|
||||
* 然后显示一个浮点数。字符串和数字按照指定的位置和单位显示。
|
||||
*
|
||||
* @param x 起始位置的x坐标
|
||||
* @param y 起始位置的y坐标
|
||||
* @param ch 要显示的字符串
|
||||
* @param unit 数字的单位,例如'm'表示米
|
||||
* @param num 要显示的浮点数
|
||||
*/
|
||||
void ssd1306_f6x8_string_number(uint8_t x, uint8_t y, const uint8_t *ch, uint8_t unit, float32 num)
|
||||
{
|
||||
uint8_t c = 0, i = 0, j = 0;
|
||||
int8_t a, number[7] = {0, 0, 0, -2, 0, 0, 0};
|
||||
uint32_t d;
|
||||
while (ch[j] != '\0')
|
||||
{
|
||||
c = ch[j] - 32;
|
||||
if (x > 126)
|
||||
{
|
||||
x = 0;
|
||||
y++;
|
||||
}
|
||||
for (i = 0; i < 6; i++)
|
||||
_buffer[(y * SSD1306_WIDTH) + x + i] = F6x8[c][i];
|
||||
x += 6;
|
||||
j++;
|
||||
}
|
||||
d = 1000 * num;
|
||||
for (a = 0; a < 3; a++)
|
||||
{
|
||||
number[6 - a] = d % 10;
|
||||
d = d / 10;
|
||||
}
|
||||
for (a = 4; a < 7; a++)
|
||||
{
|
||||
number[6 - a] = d % 10;
|
||||
d = d / 10;
|
||||
}
|
||||
if (num >= 100)
|
||||
{
|
||||
a = 0;
|
||||
}
|
||||
else if (num >= 10)
|
||||
{
|
||||
a = 1;
|
||||
}
|
||||
else if (num >= 0)
|
||||
{
|
||||
a = 2;
|
||||
}
|
||||
for (; a < 7; a++)
|
||||
{
|
||||
c = number[a] + 16;
|
||||
if (x > 126)
|
||||
{
|
||||
x = 0;
|
||||
y++;
|
||||
}
|
||||
for (i = 0; i < 6; i++)
|
||||
_buffer[(y * SSD1306_WIDTH) + x + i] = F6x8[c][i];
|
||||
x += 6;
|
||||
j++;
|
||||
}
|
||||
for (int h = 0; h < 7; h++)
|
||||
{
|
||||
c = unit - 32;
|
||||
for (i = 0; i < 6; i++)
|
||||
_buffer[(y * SSD1306_WIDTH) + x + i] = F6x8[c][i];
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief 在SSD1306 OLED显示屏上显示8x16大小的字符串
|
||||
*
|
||||
* 该函数使用8x16字体在SSD1306 OLED显示屏上显示指定的字符串。字符串的字符位置由x和y参数指定。
|
||||
*
|
||||
* @param x 显示字符串的起始x坐标
|
||||
* @param y 显示字符串的起始y坐标
|
||||
* @param str 要显示的字符串
|
||||
*/
|
||||
void ssd1306_f8x16_string(uint8_t x, uint8_t y, const uint8_t *ch)
|
||||
{
|
||||
uint8_t c = 0, i = 0, j = 0;
|
||||
while (ch[j] != '\0')
|
||||
{
|
||||
c = ch[j] - 32;
|
||||
if (x > 120)
|
||||
{
|
||||
x = 0;
|
||||
y++;
|
||||
}
|
||||
for (i = 0; i < 8; i++)
|
||||
_buffer[(y * SSD1306_WIDTH) + x + i] = F8X16[c * 16 + i];
|
||||
for (i = 0; i < 8; i++)
|
||||
_buffer[((y + 1) * SSD1306_WIDTH) + x + i] = F8X16[c * 16 + i + 8];
|
||||
x += 8;
|
||||
j++;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief 在SSD1306 OLED显示屏上以8x16像素字体显示浮点数
|
||||
*
|
||||
* 在指定的坐标位置 (x, y) 上,使用8x16像素大小的字体显示浮点数 num,并显示指定数量的小数点 dot_num。
|
||||
*
|
||||
* @param x 显示位置的x坐标
|
||||
* @param y 显示位置的y坐标
|
||||
* @param num 要显示的浮点数
|
||||
* @param dot_num 要显示的小数点数量
|
||||
*/
|
||||
void ssd1306_f8x16_number(uint8_t x, uint8_t y, float32 num, uint8_t dot_num)
|
||||
{
|
||||
uint8_t ch[9] = {'\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0', '\0'};
|
||||
uint8_t c = 0, i = 0, j = 0;
|
||||
if (num < 0)
|
||||
{
|
||||
ch[i++] = '-';
|
||||
num = -num;
|
||||
}
|
||||
if (num > 32000)
|
||||
return;
|
||||
|
||||
c = 8 - i;
|
||||
|
||||
if (num >= 10000)
|
||||
{
|
||||
ch[i++] = num / 10000 + 48;
|
||||
ch[i++] = (int32_t)(num) % 10000 / 1000 + 48;
|
||||
ch[i++] = (int32_t)(num) % 1000 / 100 + 48;
|
||||
ch[i++] = (int32_t)(num) % 100 / 10 + 48;
|
||||
ch[i++] = (int32_t)(num) % 10 + 48;
|
||||
}
|
||||
else if (num >= 1000)
|
||||
{
|
||||
ch[i++] = (int32_t)(num) % 10000 / 1000 + 48;
|
||||
ch[i++] = (int32_t)(num) % 1000 / 100 + 48;
|
||||
ch[i++] = (int32_t)(num) % 100 / 10 + 48;
|
||||
ch[i++] = (int32_t)(num) % 10 + 48;
|
||||
}
|
||||
else if (num >= 100)
|
||||
{
|
||||
ch[i++] = (int32_t)(num) % 1000 / 100 + 48;
|
||||
ch[i++] = (int32_t)(num) % 100 / 10 + 48;
|
||||
ch[i++] = (int32_t)(num) % 10 + 48;
|
||||
}
|
||||
else if (num >= 10)
|
||||
{
|
||||
ch[i++] = (int32_t)(num) % 100 / 10 + 48;
|
||||
ch[i++] = (int32_t)(num) % 10 + 48;
|
||||
}
|
||||
else if (num >= 0)
|
||||
{
|
||||
ch[i++] = (int32_t)(num) % 10 + 48;
|
||||
}
|
||||
if (dot_num > 0 && i < 7)
|
||||
{
|
||||
ch[i++] = '.';
|
||||
num = num - (int32_t)num;
|
||||
|
||||
if (dot_num == 1 && i < 8)
|
||||
{
|
||||
num = num * 10;
|
||||
ch[i++] = (int32_t)(num + 0.5) % 10 + 48;
|
||||
}
|
||||
if (dot_num >= 2 && i < 8)
|
||||
{
|
||||
num = num * 100;
|
||||
ch[i++] = (int32_t)num % 100 / 10 + 48;
|
||||
if (i < 8)
|
||||
ch[i++] = (int32_t)(num + 0.5) % 10 + 48;
|
||||
}
|
||||
}
|
||||
|
||||
while (ch[j] != '\0')
|
||||
{
|
||||
c = ch[j] - 32;
|
||||
if (x > 120)
|
||||
{
|
||||
x = 0;
|
||||
y++;
|
||||
}
|
||||
for (i = 0; i < 8; i++)
|
||||
_buffer[(y * SSD1306_WIDTH) + x + i] = F8X16[c * 16 + i];
|
||||
for (i = 0; i < 8; i++)
|
||||
_buffer[((y + 1) * SSD1306_WIDTH) + x + i] = F8X16[c * 16 + i + 8];
|
||||
x += 8;
|
||||
j++;
|
||||
}
|
||||
}
|
|
@ -0,0 +1,68 @@
|
|||
#ifndef __SSD1306_OLED_H
|
||||
#define __SSD1306_OLED_H
|
||||
|
||||
#include "main.h"
|
||||
|
||||
// OLED引脚定义
|
||||
#define SSD1306_SDA_PORT OLED_SDA_GPIO_Port
|
||||
#define SSD1306_SDA_PIN OLED_SDA_Pin
|
||||
#define SSD1306_SCK_PORT OLDE_SCK_GPIO_Port
|
||||
#define SSD1306_SCK_PIN OLDE_SCK_Pin
|
||||
|
||||
// I2C地址
|
||||
#define SSD1306_I2C_ADDRESS 0x78
|
||||
// OLED显示参数
|
||||
#define SSD1306_WIDTH 128
|
||||
#define SSD1306_HEIGHT 64
|
||||
|
||||
// OLED命令定义
|
||||
#define SSD1306_CMD_DISPLAY_OFF 0xAE
|
||||
#define SSD1306_CMD_DISPLAY_ON 0xAF
|
||||
#define SSD1306_CMD_SET_CONTRAST 0x81
|
||||
#define SSD1306_CMD_DISPLAY_ALL_ON_RESUME 0xA4
|
||||
#define SSD1306_CMD_DISPLAY_ALL_ON 0xA5
|
||||
#define SSD1306_CMD_NORMAL_DISPLAY 0xA6
|
||||
#define SSD1306_CMD_INVERT_DISPLAY 0xA7
|
||||
#define SSD1306_CMD_SET_DISPLAY_OFFSET 0xD3
|
||||
#define SSD1306_CMD_SET_COM_PINS 0xDA
|
||||
#define SSD1306_CMD_SET_VCOM_DETECT 0xDB
|
||||
#define SSD1306_CMD_SET_DISPLAY_CLOCK_DIV 0xD5
|
||||
#define SSD1306_CMD_SET_PRECHARGE 0xD9
|
||||
#define SSD1306_CMD_SET_MULTIPLEX 0xA8
|
||||
#define SSD1306_CMD_SET_LOW_COLUMN 0x00
|
||||
#define SSD1306_CMD_SET_HIGH_COLUMN 0x10
|
||||
#define SSD1306_CMD_SET_START_LINE 0x40
|
||||
#define SSD1306_CMD_MEMORY_MODE 0x20
|
||||
#define SSD1306_CMD_COLUMN_ADDR 0x21
|
||||
#define SSD1306_CMD_PAGE_ADDR 0x22
|
||||
#define SSD1306_CMD_COM_SCAN_INC 0xC0
|
||||
#define SSD1306_CMD_COM_SCAN_DEC 0xC8
|
||||
#define SSD1306_CMD_SEG_REMAP 0xA0
|
||||
#define SSD1306_CMD_CHARGE_PUMP 0x8D
|
||||
#define SSD1306_CMD_SET_DC_DC_ENABLE 0x14
|
||||
|
||||
#define SDA_OUT() \
|
||||
{ \
|
||||
GPIO_SET_OUTPUT(SSD1306_SDA_PORT, SSD1306_SDA_PIN); \
|
||||
}
|
||||
|
||||
#define SDA_IN() \
|
||||
{ \
|
||||
GPIO_SET_INPUT(SSD1306_SDA_PORT, SSD1306_SDA_PIN); \
|
||||
}
|
||||
|
||||
// 函数声明
|
||||
void ssd1306_init(void);
|
||||
void ssd1306_display_on(void);
|
||||
void ssd1306_display_off(void);
|
||||
void ssd1306_update_screen(void);
|
||||
|
||||
void ssd1306_fill(uint8_t color);
|
||||
void ssd1306_clear(void);
|
||||
void ssd1306_clear_buffer(void);
|
||||
void ssd1306_draw_bmp(uint8_t x0, uint8_t y0, uint8_t x1, uint8_t y1, uint8_t *bmp);
|
||||
void ssd1306_f6x8_string(uint8_t x, uint8_t y, const uint8_t *ch);
|
||||
void ssd1306_f6x8_string_number(uint8_t x, uint8_t y, const uint8_t *ch, uint8_t unit, float32 num);
|
||||
void ssd1306_f8x16_string(uint8_t x, uint8_t y, const uint8_t *ch);
|
||||
void ssd1306_f8x16_number(uint8_t x, uint8_t y, float32 num, uint8_t dot_num);
|
||||
#endif // __SSD1306_OLED_H
|
|
@ -1,17 +1,9 @@
|
|||
#ifndef __PID_H__
|
||||
#define __PID_H__
|
||||
#include "lib.h"
|
||||
|
||||
#include "pid_auto_tune.h"
|
||||
|
||||
#include "pid_c.h"
|
||||
#include "pid_g.h"
|
||||
#include "pid_x.h"
|
||||
#include "pid_zh.h"
|
||||
#include "pid_zh1.h"
|
||||
#include "pid_hd.h"
|
||||
|
||||
#define INCOMPLETE_DIFFEREN 1 // 不完全微分
|
||||
#define INCOMPLETE_DIFFEREN 0 // 不完全微分
|
||||
|
||||
typedef enum
|
||||
{
|
||||
|
@ -62,7 +54,6 @@ typedef struct
|
|||
float32 err_limit;
|
||||
BOOL detach;
|
||||
float32 err_dead;
|
||||
// 不完全微分方式在微分环节采用了低通滤波有效地提高了微分项的特性。其中α的取值是一个0~1之间的数。两个极限值,在0时其实就是没有滤波的普通微分环节;而取1时,则没有微分作用。所以α的取值对不完全微分的效果是至关重要的,一般要根据被控对象的特性来确定
|
||||
float32 alpha;
|
||||
float32 lastdev;
|
||||
float32 out;
|
||||
|
@ -228,14 +219,6 @@ typedef struct
|
|||
pid_common_t common;
|
||||
pid_neural_t neural;
|
||||
pid_fuzzy_t fuzzy;
|
||||
|
||||
// 自定义PID
|
||||
pid_c_t cao;
|
||||
pid_g_t gao;
|
||||
pid_x_t xu;
|
||||
pid_zh_t zhang;
|
||||
pid_zh1_t zhang1;
|
||||
pid_hd_t hd;
|
||||
} pid_u;
|
||||
pid_auto_tune_t auto_tune;
|
||||
} pid_t;
|
|
@ -0,0 +1,30 @@
|
|||
#ifndef __S_CURVE_H
|
||||
#define __S_CURVE_H
|
||||
#include "lib.h"
|
||||
|
||||
typedef struct
|
||||
{
|
||||
// 起始频率
|
||||
float32 f0;
|
||||
// 加加速段斜率
|
||||
float32 faa;
|
||||
// 减减速段斜率
|
||||
float32 frr;
|
||||
// 加加速段时间
|
||||
float32 taa;
|
||||
// 匀加速段时间
|
||||
float32 tua;
|
||||
// 减加速段时间
|
||||
float32 tra;
|
||||
// 匀速段时间
|
||||
float32 tuu;
|
||||
// 加减速段时间
|
||||
float32 tar;
|
||||
// 匀减速段时间
|
||||
float32 tur;
|
||||
// 减减速段时间
|
||||
float32 trr;
|
||||
} s_curve_t;
|
||||
|
||||
void s_curve_table_gen(uint16_t tmin, uint16_t tmax);
|
||||
#endif // __S_CURVE_H
|
|
@ -20,22 +20,6 @@ void pid_constructor(pid_t *self)
|
|||
case PID_TYPE_AUTO_TUNE:
|
||||
pid_auto_tune_constructor(&self->auto_tune);
|
||||
break;
|
||||
case PID_TYPE_CUSTOM_CAO:
|
||||
pid_c_constructor(&self->pid_u.cao);
|
||||
break;
|
||||
case PID_TYPE_CUSTOM_GAO:
|
||||
pid_g_constructor(&self->pid_u.gao);
|
||||
break;
|
||||
case PID_TYPE_CUSTOM_XU:
|
||||
pid_x_constructor(&self->pid_u.xu);
|
||||
break;
|
||||
case PID_TYPE_CUSTOM_ZHANG:
|
||||
// pid_zh_constructor(&self->pid_u.zhang);
|
||||
pid_zh_constructor1(&self->pid_u.zhang1);
|
||||
break;
|
||||
case PID_TYPE_CUSTOM_HANGDIAN:
|
||||
pid_hd_constructor(&self->pid_u.hd);
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
|
@ -13,17 +13,17 @@
|
|||
#define PL 3
|
||||
|
||||
// 定义偏差E的范围,因为设置了非线性区间,误差在10时才开始进行PID调节,这里E的范围为10
|
||||
#define MAXE (30)
|
||||
#define MAXE (100)
|
||||
#define MINE (-MAXE)
|
||||
// 定义EC的范围,因为变化非常缓慢!,每次的EC都非常小,这里可以根据实际需求来调整,
|
||||
#define MAXEC (30)
|
||||
#define MAXEC (100)
|
||||
#define MINEC (-MAXEC)
|
||||
// 定义e,ec的量化因子
|
||||
#define KE 3 / MAXE
|
||||
#define KEC 3 / MAXEC
|
||||
|
||||
// 定义输出量比例因子
|
||||
#define KUP 3.0f // 这里只使用了模糊PID的比例增益
|
||||
#define KUP 1.0f // 这里只使用了模糊PID的比例增益
|
||||
#define KUI 0.0f
|
||||
#define KUD 0.0f
|
||||
|
||||
|
@ -442,7 +442,6 @@ static void _set_ctrl_prm(struct PID_FUZZY *self, float32 kp, float32 ki, float3
|
|||
pri->detach = FALSE;
|
||||
pri->sm = FALSE;
|
||||
pri->ki_enable = TRUE;
|
||||
pri->alpha = 0.25;
|
||||
}
|
||||
else
|
||||
{
|
||||
|
@ -457,7 +456,6 @@ static void _set_ctrl_prm(struct PID_FUZZY *self, float32 kp, float32 ki, float3
|
|||
pri->out_max = out_max;
|
||||
pri->out_min = out_min;
|
||||
pri->ki_enable = TRUE;
|
||||
pri->alpha = 0.25;
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,171 @@
|
|||
#include "s_curve.h"
|
||||
|
||||
// s曲线加速度各段参数定义
|
||||
// 起始速度
|
||||
#define F0 0.0f
|
||||
|
||||
// 加加速度与减减速度
|
||||
#define FAA 0.0f
|
||||
#define FRR 0.0f
|
||||
|
||||
// 加速段三个时间
|
||||
#define TAA 0.1f
|
||||
#define TUA 0.2f
|
||||
#define TRA 0.1f
|
||||
|
||||
// 匀速段
|
||||
#define TUU 5.0f
|
||||
|
||||
// 减速段
|
||||
#define TAR 0.1f
|
||||
#define TUR 0.2f
|
||||
#define TRR 0.1f
|
||||
|
||||
// 表格长度
|
||||
#define S_CURVE_TABLE_LEN 400
|
||||
int16_t s_curve_table[S_CURVE_TABLE_LEN] = {0};
|
||||
|
||||
static int16_t s_curve_func(s_curve_t *s, float32 t, float32 *freq, float32 *acc)
|
||||
{
|
||||
// 辅助常数项
|
||||
float32 A, B, C, D, E, F;
|
||||
// 表达式中间值
|
||||
float32 f3, f4, f5;
|
||||
// 加速段,匀速段,减速段时间
|
||||
float32 Ta, Tu, Tr;
|
||||
// 减加速与加减速段斜率
|
||||
float32 fra, far;
|
||||
// 起始频率与加加速频率,减减速频率
|
||||
float32 f0, faa, frr;
|
||||
float32 taa, tua, tra, tuu, tar, tur, trr;
|
||||
|
||||
// 获取参数
|
||||
faa = s->faa;
|
||||
frr = s->frr;
|
||||
|
||||
taa = s->taa;
|
||||
tua = s->tua;
|
||||
tra = s->tra;
|
||||
tuu = s->tuu;
|
||||
tar = s->tar;
|
||||
tur = s->tur;
|
||||
trr = s->trr;
|
||||
|
||||
f0 = s->f0;
|
||||
|
||||
fra = faa * taa / tra;
|
||||
far = frr * trr / tar;
|
||||
|
||||
Ta = taa + tua + tra;
|
||||
Tu = tuu;
|
||||
Tr = tar + tur + trr;
|
||||
|
||||
A = f0;
|
||||
B = f0 - 0.5 * faa * taa * taa;
|
||||
C = f0 + 0.5 * faa * taa * taa + faa * taa * tua + 0.5 * fra * (taa + tua) * (taa + tua) - fra * Ta * (taa + tua);
|
||||
|
||||
// f1 = f0 + 0.5 * faa * taa * taa;
|
||||
// f2 = f0 + 0.5 * faa * taa * taa + faa * taa * tua;
|
||||
f3 = 0.5 * fra * Ta * Ta + C;
|
||||
|
||||
D = f3 - 0.5 * far * (Ta + Tu) * (Ta + Tu);
|
||||
f4 = -far * 0.5 * (Ta + Tu + tar) * (Ta + Tu + tar) + far * (Ta + Tu) * (Ta + Tu + tar) + D;
|
||||
|
||||
E = f4 + far * tar * (Ta + Tu + tar);
|
||||
f5 = -far * tar * (Ta + Tu + Tr - trr) + E;
|
||||
|
||||
F = f5 + frr * (Ta + Tu + Tr) * (Ta + Tu + Tr - trr) - 0.5 * frr * (Ta + Tu + Tr - trr) * (Ta + Tu + Tr - trr);
|
||||
|
||||
// 如果时间点在全行程规定的时间段内
|
||||
if ((t >= 0) && (t <= Ta + Tu + Tr))
|
||||
{
|
||||
// 加加速段
|
||||
if ((t >= 0) && (t <= taa))
|
||||
{
|
||||
*freq = 0.5 * faa * t * t + A;
|
||||
*acc = faa * t;
|
||||
}
|
||||
// 匀加速段
|
||||
else if ((t >= taa) && (t <= taa + tua))
|
||||
{
|
||||
*freq = faa * taa * t + B;
|
||||
*acc = faa * taa;
|
||||
}
|
||||
// 加减速段
|
||||
else if ((t >= taa + tua) && (t <= taa + tua + tra))
|
||||
{
|
||||
*freq = -0.5 * fra * t * t + fra * Ta * t + C;
|
||||
*acc = -fra * t + fra * Ta;
|
||||
}
|
||||
// 匀速段
|
||||
else if ((t >= Ta) && (t <= Ta + tuu))
|
||||
{
|
||||
*freq = f3;
|
||||
*acc = 0;
|
||||
}
|
||||
// 加减速段
|
||||
else if ((t >= Ta + Tu) && (t <= Ta + Tu + tar))
|
||||
{
|
||||
*freq = -0.5 * far * t * t + far * (Ta + Tu) * t + D;
|
||||
*acc = -far * t + far * (Ta + Tu);
|
||||
}
|
||||
// 匀减速
|
||||
else if ((t >= Ta + Tu + tar) && (t <= Ta + Tu + tar + tur))
|
||||
{
|
||||
*freq = -far * tar * t + E;
|
||||
*acc = -far * tar;
|
||||
}
|
||||
// 减减速
|
||||
else if ((t >= Ta + Tu + Tr - trr) && (t <= Ta + Tu + Tr))
|
||||
{
|
||||
*freq = 0.5 * frr * t * t - frr * (Ta + Tu + Tr) * t + F;
|
||||
*acc = frr * t - frr * (Ta + Tu + Tr);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
return -1;
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
// S型曲线初始化
|
||||
void s_curve_table_gen(uint16_t tmin, uint16_t tmax)
|
||||
{
|
||||
uint16_t i, tint;
|
||||
float32 ti;
|
||||
float32 freq;
|
||||
float32 acc;
|
||||
float32 fi;
|
||||
s_curve_t s;
|
||||
osel_memset((uint8_t *)&s, 0, sizeof(s_curve_t));
|
||||
|
||||
s.f0 = F0;
|
||||
s.taa = TAA;
|
||||
s.tua = TUA;
|
||||
s.tra = TRA;
|
||||
s.tuu = TUU;
|
||||
s.tar = TAR;
|
||||
s.tur = TUR;
|
||||
s.trr = TRR;
|
||||
|
||||
// 根据约束条件求出加加速段与减减速段斜率
|
||||
s.faa = 2.0 / (s.taa * (s.taa + s.tra + 2 * s.tua));
|
||||
s.frr = 2.0 / (s.trr * (s.tar + s.trr + 2 * s.tur));
|
||||
|
||||
for (i = 0; i < S_CURVE_TABLE_LEN; i++)
|
||||
{
|
||||
// 求出每个时间点对应的频率以及加速度
|
||||
fi = i * (TAA + TUA + TRA + TUU + TAR + TUR + TRR) / S_CURVE_TABLE_LEN;
|
||||
s_curve_func(&s, fi, &freq, &acc);
|
||||
|
||||
// 根据最大与最小装载值确定定时器实际值
|
||||
ti = tmax - (tmax - tmin) * freq;
|
||||
// 转换为整数值
|
||||
tint = (uint16_t)ti;
|
||||
|
||||
// 存入s曲线表
|
||||
s_curve_table[i] = tint;
|
||||
}
|
||||
}
|
|
@ -8,8 +8,8 @@
|
|||
"args": [],
|
||||
"stopAtEntry": false,
|
||||
"externalConsole": true,
|
||||
"cwd": "e:/work/stm32/study/motor_cs103/User/system/lib/driver",
|
||||
"program": "e:/work/stm32/study/motor_cs103/User/system/lib/driver/build/Debug/outDebug",
|
||||
"cwd": "e:/work/stm32/epm/User/lib/flow",
|
||||
"program": "e:/work/stm32/epm/User/lib/flow/build/Debug/outDebug",
|
||||
"MIMode": "gdb",
|
||||
"miDebuggerPath": "gdb",
|
||||
"setupCommands": [
|
|
@ -4,7 +4,7 @@
|
|||
"C_Cpp_Runner.debuggerPath": "gdb",
|
||||
"C_Cpp_Runner.cStandard": "",
|
||||
"C_Cpp_Runner.cppStandard": "",
|
||||
"C_Cpp_Runner.msvcBatchPath": "C:/Program Files/Microsoft Visual Studio/VR_NR/Community/VC/Auxiliary/Build/vcvarsall.bat",
|
||||
"C_Cpp_Runner.msvcBatchPath": "C:/Program Files/Microsoft Visual Studio/2022/Community/VC/Auxiliary/Build/vcvarsall.bat",
|
||||
"C_Cpp_Runner.useMsvc": false,
|
||||
"C_Cpp_Runner.warnings": [
|
||||
"-Wall",
|
||||
|
@ -54,7 +54,5 @@
|
|||
"C_Cpp_Runner.useUndefinedSanitizer": false,
|
||||
"C_Cpp_Runner.useLeakSanitizer": false,
|
||||
"C_Cpp_Runner.showCompilationTime": false,
|
||||
"C_Cpp_Runner.useLinkTimeOptimization": false,
|
||||
"C_Cpp_Runner.msvcSecureNoWarnings": false,
|
||||
"C_Cpp.errorSquiggles": "disabled"
|
||||
"C_Cpp_Runner.useLinkTimeOptimization": false
|
||||
}
|
|
@ -88,16 +88,6 @@ typedef struct
|
|||
float32 b;
|
||||
} linear_func_param_t;
|
||||
|
||||
#define S_CURVE_POINTS 70
|
||||
typedef struct
|
||||
{
|
||||
float32 start;
|
||||
float32 end;
|
||||
float32 current;
|
||||
float32 t[S_CURVE_POINTS];
|
||||
uint16_t index;
|
||||
} s_curve_generator_t;
|
||||
|
||||
extern void assic_to_str(uint8_t *assic, uint8_t len, uint8_t *str); // ASCII码转字符串
|
||||
extern void get_cpu_id(uint32_t *id); // 获取CPU ID
|
||||
extern uint32_t cpu_encrypt(void); // CPU加密
|
||||
|
@ -134,7 +124,4 @@ extern void add_commas(uint32_t num, char *result);
|
|||
|
||||
extern linear_func_param_t calculate_linear_regression(const point_t *points, int32_t count); // 计算线性回归
|
||||
extern float32 get_linearity_value(const point_t *points, int32_t count, linear_func_param_t param); // 获取线性度
|
||||
|
||||
void s_curve_generator_init(s_curve_generator_t *gen, float32 start);
|
||||
float32 s_curve_generate_point(s_curve_generator_t *gen, float32 target);
|
||||
#endif //__LIB_H
|
||||
#endif //__LIB_H
|
|
@ -15,12 +15,12 @@
|
|||
|
||||
// mem1内存参数设定.mem1完全处于内部SRAM里面.(设置内部SARM的内存池和内存表的参数)
|
||||
#define MEM1_BLOCK_SIZE 8 // 一个内存块大小为32字节
|
||||
#define MEM1_MAX_SIZE 25 * 1024 // 最大管理内存 1K (我们这个内存管理系统的内部SRAM可控制的内存大小)
|
||||
#define MEM1_MAX_SIZE 4 * 1024 // 最大管理内存 1K (我们这个内存管理系统的内部SRAM可控制的内存大小)
|
||||
#define MEM1_ALLOC_TABLE_SIZE MEM1_MAX_SIZE / MEM1_BLOCK_SIZE // 内存表大小(有多少块内存块)
|
||||
|
||||
// mem2内存参数设定.mem2的内存池处于外部SRAM里面
|
||||
#define MEM2_BLOCK_SIZE 8 // 一个内存块大小为32字节
|
||||
#define MEM2_MAX_SIZE 20 * 1024 // 因为精英版没有外扩内存,故这里设置一个最小值
|
||||
#define MEM2_MAX_SIZE 0 * 1024 // 因为精英版没有外扩内存,故这里设置一个最小值
|
||||
#define MEM2_ALLOC_TABLE_SIZE MEM2_MAX_SIZE / MEM2_BLOCK_SIZE // 内存表大小
|
||||
|
||||
// 内存管理控制器结构体
|
|
@ -36,6 +36,7 @@ BOOL DBG_ASSERT(uint8_t cond _DBG_LINE_)
|
|||
#if DEBUG_ENABLE == FALSE
|
||||
sys_soft_reset();
|
||||
#endif
|
||||
GPIO_TOGGLE(LED_GREEN_GPIO_Port, LED_GREEN_Pin);
|
||||
while (1)
|
||||
{
|
||||
LOG_ERR("DBG_ASSERT:%d", line);
|
|
@ -11,7 +11,6 @@
|
|||
#include "../inc/lib.h"
|
||||
#include <stdio.h>
|
||||
#include <string.h>
|
||||
#include "math.h"
|
||||
#include "cmac.h"
|
||||
const uint8_t _days[12] = {31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
|
||||
const uint16_t _month_days[12] = {0, 31, 59, 90, 120, 151, 181, 212, 243, 273, 304, 334};
|
||||
|
@ -808,39 +807,6 @@ float32 get_linearity_value(const point_t *points, int32_t count, linear_func_pa
|
|||
return dYMax / ABS(yLast - yFirst) * 100;
|
||||
}
|
||||
|
||||
void s_curve_generator_init(s_curve_generator_t *gen, float32 start)
|
||||
{
|
||||
gen->start = start;
|
||||
gen->end = 0;
|
||||
gen->current = start;
|
||||
gen->index = 0;
|
||||
for (uint16_t i = 0; i < S_CURVE_POINTS; i++)
|
||||
{
|
||||
gen->t[i] = (float32)i / (S_CURVE_POINTS - 1);
|
||||
}
|
||||
}
|
||||
|
||||
float32 s_curve_generate_point(s_curve_generator_t *gen, float32 target)
|
||||
{
|
||||
if (gen->end != target)
|
||||
{
|
||||
gen->start = gen->current;
|
||||
gen->end = target;
|
||||
gen->index = 0;
|
||||
}
|
||||
|
||||
if (gen->index == S_CURVE_POINTS)
|
||||
{
|
||||
gen->start = gen->current;
|
||||
gen->index = 0;
|
||||
}
|
||||
|
||||
float32 t = gen->t[gen->index];
|
||||
float32 s_curve_value = gen->start + (gen->end - gen->start) * (10 * pow(t, 3) - 15 * pow(t, 4) + 6 * pow(t, 5));
|
||||
gen->index++;
|
||||
gen->current = gen->start + (gen->end - gen->start) * ((float32)gen->index / S_CURVE_POINTS);
|
||||
return s_curve_value;
|
||||
}
|
||||
/**
|
||||
// 示例使用
|
||||
int main()
|
||||
|
@ -850,7 +816,7 @@ int main()
|
|||
linear_func_param_t param = calculate_linear_regression(points, count);
|
||||
printf("Linear Regression: y = %f * x + %f\n", param.a, param.b);
|
||||
|
||||
float32 linearity = get_linearity_value(points, count, param);
|
||||
double linearity = get_linearity_value(points, count, param);
|
||||
printf("Linearity Value: %f%%\n", linearity);
|
||||
|
||||
return 0;
|
|
@ -47,7 +47,7 @@ sizeof(B) = 8(内存空间大小8个字节)
|
|||
// 内存池(32字节对齐)
|
||||
// 可控制的内存大小
|
||||
__attribute__((aligned(32))) uint8_t mem1base[MEM1_MAX_SIZE]; // 内部SRAM内存池
|
||||
__attribute__((aligned(32))) uint8_t mem2base[MEM2_MAX_SIZE] __attribute__((section(".sram2")));
|
||||
__attribute__((aligned(32))) uint8_t mem2base[MEM2_MAX_SIZE];
|
||||
// __attribute__((aligned(32))) uint8_t mem2base[MEM2_MAX_SIZE] __attribute__((at(0X68000000))); // 外部SRAM内存池
|
||||
// 内存管理表
|
||||
// 可控制的内存控制块个数(每个内存块大小为32字节)
|
|
@ -132,8 +132,8 @@ static pbuf_type_t pbuf_type_select(uint16_t size)
|
|||
#if PBUF_DBG_EN > 0
|
||||
static void add_to_pbuf_used_ptr(pbuf_t *pbuf, pbuf_type_t pbuf_type)
|
||||
{
|
||||
// hal_int_state_t s;
|
||||
// HAL_ENTER_CRITICAL(s);
|
||||
// // hal_int_state_t s;
|
||||
// // HAL_ENTER_CRITICAL(s);
|
||||
for (uint8_t i = 0; i < PBUF_NUM_MAX; i++)
|
||||
{
|
||||
if (pbuf_used_p[pbuf_type.type][i] == NULL)
|
||||
|
@ -142,7 +142,7 @@ static void add_to_pbuf_used_ptr(pbuf_t *pbuf, pbuf_type_t pbuf_type)
|
|||
break;
|
||||
}
|
||||
}
|
||||
// HAL_EXIT_CRITICAL(s);
|
||||
// // HAL_EXIT_CRITICAL(s);
|
||||
}
|
||||
#endif
|
||||
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue