From 68fe2a8137a90e9d76e67fcf54fa8930135b8127 Mon Sep 17 00:00:00 2001 From: "Elise.B" Date: Mon, 19 Oct 2020 11:00:20 +0200 Subject: [PATCH 1/6] creation branche anti chavirement --- LLDrivers/inc/stm32f1xx_ll_adc.h | 3932 +++++++++++++++++++++++++++ LLDrivers/inc/stm32f1xx_ll_bus.h | 1015 +++++++ LLDrivers/inc/stm32f1xx_ll_cortex.h | 640 +++++ LLDrivers/inc/stm32f1xx_ll_crc.h | 204 ++ LLDrivers/inc/stm32f1xx_ll_dac.h | 1326 +++++++++ LLDrivers/inc/stm32f1xx_ll_dma.h | 1960 +++++++++++++ LLDrivers/inc/stm32f1xx_ll_exti.h | 888 ++++++ LLDrivers/inc/stm32f1xx_ll_fsmc.h | 951 +++++++ LLDrivers/inc/stm32f1xx_ll_gpio.h | 2345 ++++++++++++++++ LLDrivers/inc/stm32f1xx_ll_i2c.h | 1784 ++++++++++++ LLDrivers/inc/stm32f1xx_ll_iwdg.h | 311 +++ LLDrivers/inc/stm32f1xx_ll_pwr.h | 440 +++ LLDrivers/inc/stm32f1xx_ll_rtc.h | 1003 +++++++ LLDrivers/inc/stm32f1xx_ll_sdmmc.h | 1112 ++++++++ LLDrivers/inc/stm32f1xx_ll_spi.h | 1938 +++++++++++++ LLDrivers/inc/stm32f1xx_ll_tim.h | 3831 ++++++++++++++++++++++++++ LLDrivers/inc/stm32f1xx_ll_usart.h | 2569 +++++++++++++++++ LLDrivers/inc/stm32f1xx_ll_usb.h | 651 +++++ LLDrivers/inc/stm32f1xx_ll_wwdg.h | 318 +++ LLDrivers/src/stm32f1xx_ll_adc.c | 886 ++++++ LLDrivers/src/stm32f1xx_ll_crc.c | 108 + LLDrivers/src/stm32f1xx_ll_dac.c | 274 ++ LLDrivers/src/stm32f1xx_ll_dma.c | 314 +++ LLDrivers/src/stm32f1xx_ll_exti.c | 215 ++ LLDrivers/src/stm32f1xx_ll_fsmc.c | 985 +++++++ LLDrivers/src/stm32f1xx_ll_gpio.c | 253 ++ LLDrivers/src/stm32f1xx_ll_i2c.c | 221 ++ LLDrivers/src/stm32f1xx_ll_pwr.c | 86 + LLDrivers/src/stm32f1xx_ll_rtc.c | 544 ++++ LLDrivers/src/stm32f1xx_ll_sdmmc.c | 1521 +++++++++++ LLDrivers/src/stm32f1xx_ll_spi.c | 530 ++++ LLDrivers/src/stm32f1xx_ll_tim.c | 1198 ++++++++ LLDrivers/src/stm32f1xx_ll_usart.c | 446 +++ LLDrivers/src/stm32f1xx_ll_usb.c | 2591 ++++++++++++++++++ 34 files changed, 37390 insertions(+) create mode 100644 LLDrivers/inc/stm32f1xx_ll_adc.h create mode 100644 LLDrivers/inc/stm32f1xx_ll_bus.h create mode 100644 LLDrivers/inc/stm32f1xx_ll_cortex.h create mode 100644 LLDrivers/inc/stm32f1xx_ll_crc.h create mode 100644 LLDrivers/inc/stm32f1xx_ll_dac.h create mode 100644 LLDrivers/inc/stm32f1xx_ll_dma.h create mode 100644 LLDrivers/inc/stm32f1xx_ll_exti.h create mode 100644 LLDrivers/inc/stm32f1xx_ll_fsmc.h create mode 100644 LLDrivers/inc/stm32f1xx_ll_gpio.h create mode 100644 LLDrivers/inc/stm32f1xx_ll_i2c.h create mode 100644 LLDrivers/inc/stm32f1xx_ll_iwdg.h create mode 100644 LLDrivers/inc/stm32f1xx_ll_pwr.h create mode 100644 LLDrivers/inc/stm32f1xx_ll_rtc.h create mode 100644 LLDrivers/inc/stm32f1xx_ll_sdmmc.h create mode 100644 LLDrivers/inc/stm32f1xx_ll_spi.h create mode 100644 LLDrivers/inc/stm32f1xx_ll_tim.h create mode 100644 LLDrivers/inc/stm32f1xx_ll_usart.h create mode 100644 LLDrivers/inc/stm32f1xx_ll_usb.h create mode 100644 LLDrivers/inc/stm32f1xx_ll_wwdg.h create mode 100644 LLDrivers/src/stm32f1xx_ll_adc.c create mode 100644 LLDrivers/src/stm32f1xx_ll_crc.c create mode 100644 LLDrivers/src/stm32f1xx_ll_dac.c create mode 100644 LLDrivers/src/stm32f1xx_ll_dma.c create mode 100644 LLDrivers/src/stm32f1xx_ll_exti.c create mode 100644 LLDrivers/src/stm32f1xx_ll_fsmc.c create mode 100644 LLDrivers/src/stm32f1xx_ll_gpio.c create mode 100644 LLDrivers/src/stm32f1xx_ll_i2c.c create mode 100644 LLDrivers/src/stm32f1xx_ll_pwr.c create mode 100644 LLDrivers/src/stm32f1xx_ll_rtc.c create mode 100644 LLDrivers/src/stm32f1xx_ll_sdmmc.c create mode 100644 LLDrivers/src/stm32f1xx_ll_spi.c create mode 100644 LLDrivers/src/stm32f1xx_ll_tim.c create mode 100644 LLDrivers/src/stm32f1xx_ll_usart.c create mode 100644 LLDrivers/src/stm32f1xx_ll_usb.c diff --git a/LLDrivers/inc/stm32f1xx_ll_adc.h b/LLDrivers/inc/stm32f1xx_ll_adc.h new file mode 100644 index 0000000..b8cd276 --- /dev/null +++ b/LLDrivers/inc/stm32f1xx_ll_adc.h @@ -0,0 +1,3932 @@ +/** + ****************************************************************************** + * @file stm32f1xx_ll_adc.h + * @author MCD Application Team + * @brief Header file of ADC LL module. + ****************************************************************************** + * @attention + * + *

© Copyright (c) 2017 STMicroelectronics. + * All rights reserved.

+ * + * This software component is licensed by ST under BSD 3-Clause license, + * the "License"; You may not use this file except in compliance with the + * License. You may obtain a copy of the License at: + * opensource.org/licenses/BSD-3-Clause + * + ****************************************************************************** + */ + +/* Define to prevent recursive inclusion -------------------------------------*/ +#ifndef __STM32F1xx_LL_ADC_H +#define __STM32F1xx_LL_ADC_H + +#ifdef __cplusplus +extern "C" { +#endif + +/* Includes ------------------------------------------------------------------*/ +#include "stm32f1xx.h" + +/** @addtogroup STM32F1xx_LL_Driver + * @{ + */ + +#if defined (ADC1) || defined (ADC2) || defined (ADC3) + +/** @defgroup ADC_LL ADC + * @{ + */ + +/* Private types -------------------------------------------------------------*/ +/* Private variables ---------------------------------------------------------*/ + +/* Private constants ---------------------------------------------------------*/ +/** @defgroup ADC_LL_Private_Constants ADC Private Constants + * @{ + */ + +/* Internal mask for ADC group regular sequencer: */ +/* To select into literal LL_ADC_REG_RANK_x the relevant bits for: */ +/* - sequencer register offset */ +/* - sequencer rank bits position into the selected register */ + +/* Internal register offset for ADC group regular sequencer configuration */ +/* (offset placed into a spare area of literal definition) */ +#define ADC_SQR1_REGOFFSET 0x00000000U +#define ADC_SQR2_REGOFFSET 0x00000100U +#define ADC_SQR3_REGOFFSET 0x00000200U +#define ADC_SQR4_REGOFFSET 0x00000300U + +#define ADC_REG_SQRX_REGOFFSET_MASK (ADC_SQR1_REGOFFSET | ADC_SQR2_REGOFFSET | ADC_SQR3_REGOFFSET | ADC_SQR4_REGOFFSET) +#define ADC_REG_RANK_ID_SQRX_MASK (ADC_CHANNEL_ID_NUMBER_MASK_POSBIT0) + +/* Definition of ADC group regular sequencer bits information to be inserted */ +/* into ADC group regular sequencer ranks literals definition. */ +#define ADC_REG_RANK_1_SQRX_BITOFFSET_POS ( 0U) /* Value equivalent to POSITION_VAL(ADC_SQR3_SQ1) */ +#define ADC_REG_RANK_2_SQRX_BITOFFSET_POS ( 5U) /* Value equivalent to POSITION_VAL(ADC_SQR3_SQ2) */ +#define ADC_REG_RANK_3_SQRX_BITOFFSET_POS (10U) /* Value equivalent to POSITION_VAL(ADC_SQR3_SQ3) */ +#define ADC_REG_RANK_4_SQRX_BITOFFSET_POS (15U) /* Value equivalent to POSITION_VAL(ADC_SQR3_SQ4) */ +#define ADC_REG_RANK_5_SQRX_BITOFFSET_POS (20U) /* Value equivalent to POSITION_VAL(ADC_SQR3_SQ5) */ +#define ADC_REG_RANK_6_SQRX_BITOFFSET_POS (25U) /* Value equivalent to POSITION_VAL(ADC_SQR3_SQ6) */ +#define ADC_REG_RANK_7_SQRX_BITOFFSET_POS ( 0U) /* Value equivalent to POSITION_VAL(ADC_SQR2_SQ7) */ +#define ADC_REG_RANK_8_SQRX_BITOFFSET_POS ( 5U) /* Value equivalent to POSITION_VAL(ADC_SQR2_SQ8) */ +#define ADC_REG_RANK_9_SQRX_BITOFFSET_POS (10U) /* Value equivalent to POSITION_VAL(ADC_SQR2_SQ9) */ +#define ADC_REG_RANK_10_SQRX_BITOFFSET_POS (15U) /* Value equivalent to POSITION_VAL(ADC_SQR2_SQ10) */ +#define ADC_REG_RANK_11_SQRX_BITOFFSET_POS (20U) /* Value equivalent to POSITION_VAL(ADC_SQR2_SQ11) */ +#define ADC_REG_RANK_12_SQRX_BITOFFSET_POS (25U) /* Value equivalent to POSITION_VAL(ADC_SQR2_SQ12) */ +#define ADC_REG_RANK_13_SQRX_BITOFFSET_POS ( 0U) /* Value equivalent to POSITION_VAL(ADC_SQR1_SQ13) */ +#define ADC_REG_RANK_14_SQRX_BITOFFSET_POS ( 5U) /* Value equivalent to POSITION_VAL(ADC_SQR1_SQ14) */ +#define ADC_REG_RANK_15_SQRX_BITOFFSET_POS (10U) /* Value equivalent to POSITION_VAL(ADC_SQR1_SQ15) */ +#define ADC_REG_RANK_16_SQRX_BITOFFSET_POS (15U) /* Value equivalent to POSITION_VAL(ADC_SQR1_SQ16) */ + +/* Internal mask for ADC group injected sequencer: */ +/* To select into literal LL_ADC_INJ_RANK_x the relevant bits for: */ +/* - data register offset */ +/* - offset register offset */ +/* - sequencer rank bits position into the selected register */ + +/* Internal register offset for ADC group injected data register */ +/* (offset placed into a spare area of literal definition) */ +#define ADC_JDR1_REGOFFSET 0x00000000U +#define ADC_JDR2_REGOFFSET 0x00000100U +#define ADC_JDR3_REGOFFSET 0x00000200U +#define ADC_JDR4_REGOFFSET 0x00000300U + +/* Internal register offset for ADC group injected offset configuration */ +/* (offset placed into a spare area of literal definition) */ +#define ADC_JOFR1_REGOFFSET 0x00000000U +#define ADC_JOFR2_REGOFFSET 0x00001000U +#define ADC_JOFR3_REGOFFSET 0x00002000U +#define ADC_JOFR4_REGOFFSET 0x00003000U + +#define ADC_INJ_JDRX_REGOFFSET_MASK (ADC_JDR1_REGOFFSET | ADC_JDR2_REGOFFSET | ADC_JDR3_REGOFFSET | ADC_JDR4_REGOFFSET) +#define ADC_INJ_JOFRX_REGOFFSET_MASK (ADC_JOFR1_REGOFFSET | ADC_JOFR2_REGOFFSET | ADC_JOFR3_REGOFFSET | ADC_JOFR4_REGOFFSET) +#define ADC_INJ_RANK_ID_JSQR_MASK (ADC_CHANNEL_ID_NUMBER_MASK_POSBIT0) + +/* Internal mask for ADC channel: */ +/* To select into literal LL_ADC_CHANNEL_x the relevant bits for: */ +/* - channel identifier defined by number */ +/* - channel differentiation between external channels (connected to */ +/* GPIO pins) and internal channels (connected to internal paths) */ +/* - channel sampling time defined by SMPRx register offset */ +/* and SMPx bits positions into SMPRx register */ +#define ADC_CHANNEL_ID_NUMBER_MASK (ADC_CR1_AWDCH) +#define ADC_CHANNEL_ID_NUMBER_BITOFFSET_POS ( 0U)/* Value equivalent to POSITION_VAL(ADC_CHANNEL_ID_NUMBER_MASK) */ +#define ADC_CHANNEL_ID_MASK (ADC_CHANNEL_ID_NUMBER_MASK | ADC_CHANNEL_ID_INTERNAL_CH_MASK) +/* Equivalent mask of ADC_CHANNEL_NUMBER_MASK aligned on register LSB (bit 0) */ +#define ADC_CHANNEL_ID_NUMBER_MASK_POSBIT0 0x0000001FU /* Equivalent to shift: (ADC_CHANNEL_NUMBER_MASK >> POSITION_VAL(ADC_CHANNEL_NUMBER_MASK)) */ + +/* Channel differentiation between external and internal channels */ +#define ADC_CHANNEL_ID_INTERNAL_CH 0x80000000U /* Marker of internal channel */ +#define ADC_CHANNEL_ID_INTERNAL_CH_2 0x40000000U /* Marker of internal channel for other ADC instances, in case of different ADC internal channels mapped on same channel number on different ADC instances */ +#define ADC_CHANNEL_ID_INTERNAL_CH_MASK (ADC_CHANNEL_ID_INTERNAL_CH | ADC_CHANNEL_ID_INTERNAL_CH_2) + +/* Internal register offset for ADC channel sampling time configuration */ +/* (offset placed into a spare area of literal definition) */ +#define ADC_SMPR1_REGOFFSET 0x00000000U +#define ADC_SMPR2_REGOFFSET 0x02000000U +#define ADC_CHANNEL_SMPRX_REGOFFSET_MASK (ADC_SMPR1_REGOFFSET | ADC_SMPR2_REGOFFSET) + +#define ADC_CHANNEL_SMPx_BITOFFSET_MASK 0x01F00000U +#define ADC_CHANNEL_SMPx_BITOFFSET_POS (20U) /* Value equivalent to POSITION_VAL(ADC_CHANNEL_SMPx_BITOFFSET_MASK) */ + +/* Definition of channels ID number information to be inserted into */ +/* channels literals definition. */ +#define ADC_CHANNEL_0_NUMBER 0x00000000U +#define ADC_CHANNEL_1_NUMBER ( ADC_CR1_AWDCH_0) +#define ADC_CHANNEL_2_NUMBER ( ADC_CR1_AWDCH_1 ) +#define ADC_CHANNEL_3_NUMBER ( ADC_CR1_AWDCH_1 | ADC_CR1_AWDCH_0) +#define ADC_CHANNEL_4_NUMBER ( ADC_CR1_AWDCH_2 ) +#define ADC_CHANNEL_5_NUMBER ( ADC_CR1_AWDCH_2 | ADC_CR1_AWDCH_0) +#define ADC_CHANNEL_6_NUMBER ( ADC_CR1_AWDCH_2 | ADC_CR1_AWDCH_1 ) +#define ADC_CHANNEL_7_NUMBER ( ADC_CR1_AWDCH_2 | ADC_CR1_AWDCH_1 | ADC_CR1_AWDCH_0) +#define ADC_CHANNEL_8_NUMBER ( ADC_CR1_AWDCH_3 ) +#define ADC_CHANNEL_9_NUMBER ( ADC_CR1_AWDCH_3 | ADC_CR1_AWDCH_0) +#define ADC_CHANNEL_10_NUMBER ( ADC_CR1_AWDCH_3 | ADC_CR1_AWDCH_1 ) +#define ADC_CHANNEL_11_NUMBER ( ADC_CR1_AWDCH_3 | ADC_CR1_AWDCH_1 | ADC_CR1_AWDCH_0) +#define ADC_CHANNEL_12_NUMBER ( ADC_CR1_AWDCH_3 | ADC_CR1_AWDCH_2 ) +#define ADC_CHANNEL_13_NUMBER ( ADC_CR1_AWDCH_3 | ADC_CR1_AWDCH_2 | ADC_CR1_AWDCH_0) +#define ADC_CHANNEL_14_NUMBER ( ADC_CR1_AWDCH_3 | ADC_CR1_AWDCH_2 | ADC_CR1_AWDCH_1 ) +#define ADC_CHANNEL_15_NUMBER ( ADC_CR1_AWDCH_3 | ADC_CR1_AWDCH_2 | ADC_CR1_AWDCH_1 | ADC_CR1_AWDCH_0) +#define ADC_CHANNEL_16_NUMBER (ADC_CR1_AWDCH_4 ) +#define ADC_CHANNEL_17_NUMBER (ADC_CR1_AWDCH_4 | ADC_CR1_AWDCH_0) + +/* Definition of channels sampling time information to be inserted into */ +/* channels literals definition. */ +#define ADC_CHANNEL_0_SMP (ADC_SMPR2_REGOFFSET | (( 0U) << ADC_CHANNEL_SMPx_BITOFFSET_POS)) /* Value shifted is equivalent to POSITION_VAL(ADC_SMPR2_SMP0) */ +#define ADC_CHANNEL_1_SMP (ADC_SMPR2_REGOFFSET | (( 3U) << ADC_CHANNEL_SMPx_BITOFFSET_POS)) /* Value shifted is equivalent to POSITION_VAL(ADC_SMPR2_SMP1) */ +#define ADC_CHANNEL_2_SMP (ADC_SMPR2_REGOFFSET | (( 6U) << ADC_CHANNEL_SMPx_BITOFFSET_POS)) /* Value shifted is equivalent to POSITION_VAL(ADC_SMPR2_SMP2) */ +#define ADC_CHANNEL_3_SMP (ADC_SMPR2_REGOFFSET | (( 9U) << ADC_CHANNEL_SMPx_BITOFFSET_POS)) /* Value shifted is equivalent to POSITION_VAL(ADC_SMPR2_SMP3) */ +#define ADC_CHANNEL_4_SMP (ADC_SMPR2_REGOFFSET | ((12U) << ADC_CHANNEL_SMPx_BITOFFSET_POS)) /* Value shifted is equivalent to POSITION_VAL(ADC_SMPR2_SMP4) */ +#define ADC_CHANNEL_5_SMP (ADC_SMPR2_REGOFFSET | ((15U) << ADC_CHANNEL_SMPx_BITOFFSET_POS)) /* Value shifted is equivalent to POSITION_VAL(ADC_SMPR2_SMP5) */ +#define ADC_CHANNEL_6_SMP (ADC_SMPR2_REGOFFSET | ((18U) << ADC_CHANNEL_SMPx_BITOFFSET_POS)) /* Value shifted is equivalent to POSITION_VAL(ADC_SMPR2_SMP6) */ +#define ADC_CHANNEL_7_SMP (ADC_SMPR2_REGOFFSET | ((21U) << ADC_CHANNEL_SMPx_BITOFFSET_POS)) /* Value shifted is equivalent to POSITION_VAL(ADC_SMPR2_SMP7) */ +#define ADC_CHANNEL_8_SMP (ADC_SMPR2_REGOFFSET | ((24U) << ADC_CHANNEL_SMPx_BITOFFSET_POS)) /* Value shifted is equivalent to POSITION_VAL(ADC_SMPR2_SMP8) */ +#define ADC_CHANNEL_9_SMP (ADC_SMPR2_REGOFFSET | ((27U) << ADC_CHANNEL_SMPx_BITOFFSET_POS)) /* Value shifted is equivalent to POSITION_VAL(ADC_SMPR2_SMP9) */ +#define ADC_CHANNEL_10_SMP (ADC_SMPR1_REGOFFSET | (( 0U) << ADC_CHANNEL_SMPx_BITOFFSET_POS)) /* Value shifted is equivalent to POSITION_VAL(ADC_SMPR1_SMP10) */ +#define ADC_CHANNEL_11_SMP (ADC_SMPR1_REGOFFSET | (( 3U) << ADC_CHANNEL_SMPx_BITOFFSET_POS)) /* Value shifted is equivalent to POSITION_VAL(ADC_SMPR1_SMP11) */ +#define ADC_CHANNEL_12_SMP (ADC_SMPR1_REGOFFSET | (( 6U) << ADC_CHANNEL_SMPx_BITOFFSET_POS)) /* Value shifted is equivalent to POSITION_VAL(ADC_SMPR1_SMP12) */ +#define ADC_CHANNEL_13_SMP (ADC_SMPR1_REGOFFSET | (( 9U) << ADC_CHANNEL_SMPx_BITOFFSET_POS)) /* Value shifted is equivalent to POSITION_VAL(ADC_SMPR1_SMP13) */ +#define ADC_CHANNEL_14_SMP (ADC_SMPR1_REGOFFSET | ((12U) << ADC_CHANNEL_SMPx_BITOFFSET_POS)) /* Value shifted is equivalent to POSITION_VAL(ADC_SMPR1_SMP14) */ +#define ADC_CHANNEL_15_SMP (ADC_SMPR1_REGOFFSET | ((15U) << ADC_CHANNEL_SMPx_BITOFFSET_POS)) /* Value shifted is equivalent to POSITION_VAL(ADC_SMPR1_SMP15) */ +#define ADC_CHANNEL_16_SMP (ADC_SMPR1_REGOFFSET | ((18U) << ADC_CHANNEL_SMPx_BITOFFSET_POS)) /* Value shifted is equivalent to POSITION_VAL(ADC_SMPR1_SMP16) */ +#define ADC_CHANNEL_17_SMP (ADC_SMPR1_REGOFFSET | ((21U) << ADC_CHANNEL_SMPx_BITOFFSET_POS)) /* Value shifted is equivalent to POSITION_VAL(ADC_SMPR1_SMP17) */ + +/* Internal mask for ADC analog watchdog: */ +/* To select into literals LL_ADC_AWD_CHANNELx_xxx the relevant bits for: */ +/* (concatenation of multiple bits used in different analog watchdogs, */ +/* (feature of several watchdogs not available on all STM32 families)). */ +/* - analog watchdog 1: monitored channel defined by number, */ +/* selection of ADC group (ADC groups regular and-or injected). */ + +/* Internal register offset for ADC analog watchdog channel configuration */ +#define ADC_AWD_CR1_REGOFFSET 0x00000000U + +#define ADC_AWD_CRX_REGOFFSET_MASK (ADC_AWD_CR1_REGOFFSET) + +#define ADC_AWD_CR1_CHANNEL_MASK (ADC_CR1_AWDCH | ADC_CR1_JAWDEN | ADC_CR1_AWDEN | ADC_CR1_AWDSGL) +#define ADC_AWD_CR_ALL_CHANNEL_MASK (ADC_AWD_CR1_CHANNEL_MASK) + +/* Internal register offset for ADC analog watchdog threshold configuration */ +#define ADC_AWD_TR1_HIGH_REGOFFSET 0x00000000U +#define ADC_AWD_TR1_LOW_REGOFFSET 0x00000001U +#define ADC_AWD_TRX_REGOFFSET_MASK (ADC_AWD_TR1_HIGH_REGOFFSET | ADC_AWD_TR1_LOW_REGOFFSET) + +/* ADC registers bits positions */ +#define ADC_CR1_DUALMOD_BITOFFSET_POS (16U) /* Value equivalent to POSITION_VAL(ADC_CR1_DUALMOD) */ + +/** + * @} + */ + + +/* Private macros ------------------------------------------------------------*/ +/** @defgroup ADC_LL_Private_Macros ADC Private Macros + * @{ + */ + +/** + * @brief Driver macro reserved for internal use: isolate bits with the + * selected mask and shift them to the register LSB + * (shift mask on register position bit 0). + * @param __BITS__ Bits in register 32 bits + * @param __MASK__ Mask in register 32 bits + * @retval Bits in register 32 bits + */ +#define __ADC_MASK_SHIFT(__BITS__, __MASK__) \ + (((__BITS__) & (__MASK__)) >> POSITION_VAL((__MASK__))) + +/** + * @brief Driver macro reserved for internal use: set a pointer to + * a register from a register basis from which an offset + * is applied. + * @param __REG__ Register basis from which the offset is applied. + * @param __REG_OFFFSET__ Offset to be applied (unit: number of registers). + * @retval Pointer to register address + */ +#define __ADC_PTR_REG_OFFSET(__REG__, __REG_OFFFSET__) \ + ((__IO uint32_t *)((uint32_t) ((uint32_t)(&(__REG__)) + ((__REG_OFFFSET__) << 2U)))) + +/** + * @} + */ + + +/* Exported types ------------------------------------------------------------*/ +#if defined(USE_FULL_LL_DRIVER) +/** @defgroup ADC_LL_ES_INIT ADC Exported Init structure + * @{ + */ + +/** + * @brief Structure definition of some features of ADC common parameters + * and multimode + * (all ADC instances belonging to the same ADC common instance). + * @note The setting of these parameters by function @ref LL_ADC_CommonInit() + * is conditioned to ADC instances state (all ADC instances + * sharing the same ADC common instance): + * All ADC instances sharing the same ADC common instance must be + * disabled. + */ +typedef struct +{ + uint32_t Multimode; /*!< Set ADC multimode configuration to operate in independent mode or multimode (for devices with several ADC instances). + This parameter can be a value of @ref ADC_LL_EC_MULTI_MODE + + This feature can be modified afterwards using unitary function @ref LL_ADC_SetMultimode(). */ +} LL_ADC_CommonInitTypeDef; +/** + * @brief Structure definition of 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. + */ +typedef struct +{ + uint32_t DataAlignment; /*!< Set ADC conversion data alignment. + This parameter can be a value of @ref ADC_LL_EC_DATA_ALIGN + + This feature can be modified afterwards using unitary function @ref LL_ADC_SetDataAlignment(). */ + + uint32_t SequencersScanMode; /*!< Set ADC scan selection. + This parameter can be a value of @ref ADC_LL_EC_SCAN_SELECTION + + This feature can be modified afterwards using unitary function @ref LL_ADC_SetSequencersScanMode(). */ + +} LL_ADC_InitTypeDef; + +/** + * @brief Structure definition of 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_REG_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. + */ +typedef struct +{ + uint32_t TriggerSource; /*!< Set ADC group regular conversion trigger source: internal (SW start) or from external IP (timer event, external interrupt line). + This parameter can be a value of @ref ADC_LL_EC_REG_TRIGGER_SOURCE + @note On this STM32 serie, external trigger is set with trigger polarity: rising edge + (only trigger polarity available on this STM32 serie). + + This feature can be modified afterwards using unitary function @ref LL_ADC_REG_SetTriggerSource(). */ + + uint32_t SequencerLength; /*!< Set ADC group regular sequencer length. + This parameter can be a value of @ref ADC_LL_EC_REG_SEQ_SCAN_LENGTH + @note This parameter is discarded if scan mode is disabled (refer to parameter 'ADC_SequencersScanMode'). + + This feature can be modified afterwards using unitary function @ref LL_ADC_REG_SetSequencerLength(). */ + + uint32_t SequencerDiscont; /*!< Set ADC group regular sequencer discontinuous mode: sequence subdivided and scan conversions interrupted every selected number of ranks. + This parameter can be a value of @ref ADC_LL_EC_REG_SEQ_DISCONT_MODE + @note This parameter has an effect only if group regular sequencer is enabled + (scan length of 2 ranks or more). + + This feature can be modified afterwards using unitary function @ref LL_ADC_REG_SetSequencerDiscont(). */ + + uint32_t ContinuousMode; /*!< Set ADC continuous conversion mode on ADC group regular, whether ADC conversions are performed in single mode (one conversion per trigger) or in continuous mode (after the first trigger, following conversions launched successively automatically). + This parameter can be a value of @ref ADC_LL_EC_REG_CONTINUOUS_MODE + Note: It is not possible to enable both ADC group regular continuous mode and discontinuous mode. + + This feature can be modified afterwards using unitary function @ref LL_ADC_REG_SetContinuousMode(). */ + + uint32_t DMATransfer; /*!< Set ADC group regular conversion data transfer: no transfer or transfer by DMA, and DMA requests mode. + This parameter can be a value of @ref ADC_LL_EC_REG_DMA_TRANSFER + + This feature can be modified afterwards using unitary function @ref LL_ADC_REG_SetDMATransfer(). */ + +} LL_ADC_REG_InitTypeDef; + +/** + * @brief Structure definition of 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_INJ_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. + */ +typedef struct +{ + uint32_t TriggerSource; /*!< Set ADC group injected conversion trigger source: internal (SW start) or from external IP (timer event, external interrupt line). + This parameter can be a value of @ref ADC_LL_EC_INJ_TRIGGER_SOURCE + @note On this STM32 serie, external trigger is set with trigger polarity: rising edge + (only trigger polarity available on this STM32 serie). + + This feature can be modified afterwards using unitary function @ref LL_ADC_INJ_SetTriggerSource(). */ + + uint32_t SequencerLength; /*!< Set ADC group injected sequencer length. + This parameter can be a value of @ref ADC_LL_EC_INJ_SEQ_SCAN_LENGTH + @note This parameter is discarded if scan mode is disabled (refer to parameter 'ADC_SequencersScanMode'). + + This feature can be modified afterwards using unitary function @ref LL_ADC_INJ_SetSequencerLength(). */ + + uint32_t SequencerDiscont; /*!< Set ADC group injected sequencer discontinuous mode: sequence subdivided and scan conversions interrupted every selected number of ranks. + This parameter can be a value of @ref ADC_LL_EC_INJ_SEQ_DISCONT_MODE + @note This parameter has an effect only if group injected sequencer is enabled + (scan length of 2 ranks or more). + + This feature can be modified afterwards using unitary function @ref LL_ADC_INJ_SetSequencerDiscont(). */ + + uint32_t TrigAuto; /*!< Set ADC group injected conversion trigger: independent or from ADC group regular. + This parameter can be a value of @ref ADC_LL_EC_INJ_TRIG_AUTO + Note: This parameter must be set to set to independent trigger if injected trigger source is set to an external trigger. + + This feature can be modified afterwards using unitary function @ref LL_ADC_INJ_SetTrigAuto(). */ + +} LL_ADC_INJ_InitTypeDef; + +/** + * @} + */ +#endif /* USE_FULL_LL_DRIVER */ + +/* Exported constants --------------------------------------------------------*/ +/** @defgroup ADC_LL_Exported_Constants ADC Exported Constants + * @{ + */ + +/** @defgroup ADC_LL_EC_FLAG ADC flags + * @brief Flags defines which can be used with LL_ADC_ReadReg function + * @{ + */ +#define LL_ADC_FLAG_STRT ADC_SR_STRT /*!< ADC flag ADC group regular conversion start */ +#define LL_ADC_FLAG_EOS ADC_SR_EOC /*!< ADC flag ADC group regular end of sequence conversions (Note: on this STM32 serie, there is no flag ADC group regular end of unitary conversion. Flag noted as "EOC" is corresponding to flag "EOS" in other STM32 families) */ +#define LL_ADC_FLAG_JSTRT ADC_SR_JSTRT /*!< ADC flag ADC group injected conversion start */ +#define LL_ADC_FLAG_JEOS ADC_SR_JEOC /*!< ADC flag ADC group injected end of sequence conversions (Note: on this STM32 serie, there is no flag ADC group injected end of unitary conversion. Flag noted as "JEOC" is corresponding to flag "JEOS" in other STM32 families) */ +#define LL_ADC_FLAG_AWD1 ADC_SR_AWD /*!< ADC flag ADC analog watchdog 1 */ +#if defined(ADC_MULTIMODE_SUPPORT) +#define LL_ADC_FLAG_EOS_MST ADC_SR_EOC /*!< ADC flag ADC multimode master group regular end of sequence conversions (Note: on this STM32 serie, there is no flag ADC group regular end of unitary conversion. Flag noted as "EOC" is corresponding to flag "EOS" in other STM32 families) */ +#define LL_ADC_FLAG_EOS_SLV ADC_SR_EOC /*!< ADC flag ADC multimode slave group regular end of sequence conversions (Note: on this STM32 serie, there is no flag ADC group regular end of unitary conversion. Flag noted as "EOC" is corresponding to flag "EOS" in other STM32 families) (on STM32F1, this flag must be read from ADC instance slave: ADC2) */ +#define LL_ADC_FLAG_JEOS_MST ADC_SR_JEOC /*!< ADC flag ADC multimode master group injected end of sequence conversions (Note: on this STM32 serie, there is no flag ADC group injected end of unitary conversion. Flag noted as "JEOC" is corresponding to flag "JEOS" in other STM32 families) */ +#define LL_ADC_FLAG_JEOS_SLV ADC_SR_JEOC /*!< ADC flag ADC multimode slave group injected end of sequence conversions (Note: on this STM32 serie, there is no flag ADC group injected end of unitary conversion. Flag noted as "JEOC" is corresponding to flag "JEOS" in other STM32 families) (on STM32F1, this flag must be read from ADC instance slave: ADC2) */ +#define LL_ADC_FLAG_AWD1_MST ADC_SR_AWD /*!< ADC flag ADC multimode master analog watchdog 1 of the ADC master */ +#define LL_ADC_FLAG_AWD1_SLV ADC_SR_AWD /*!< ADC flag ADC multimode slave analog watchdog 1 of the ADC slave (on STM32F1, this flag must be read from ADC instance slave: ADC2) */ +#endif +/** + * @} + */ + +/** @defgroup ADC_LL_EC_IT ADC interruptions for configuration (interruption enable or disable) + * @brief IT defines which can be used with LL_ADC_ReadReg and LL_ADC_WriteReg functions + * @{ + */ +#define LL_ADC_IT_EOS ADC_CR1_EOCIE /*!< ADC interruption ADC group regular end of sequence conversions (Note: on this STM32 serie, there is no flag ADC group regular end of unitary conversion. Flag noted as "EOC" is corresponding to flag "EOS" in other STM32 families) */ +#define LL_ADC_IT_JEOS ADC_CR1_JEOCIE /*!< ADC interruption ADC group injected end of sequence conversions (Note: on this STM32 serie, there is no flag ADC group injected end of unitary conversion. Flag noted as "JEOC" is corresponding to flag "JEOS" in other STM32 families) */ +#define LL_ADC_IT_AWD1 ADC_CR1_AWDIE /*!< ADC interruption ADC analog watchdog 1 */ +/** + * @} + */ + +/** @defgroup ADC_LL_EC_REGISTERS ADC registers compliant with specific purpose + * @{ + */ +/* List of ADC registers intended to be used (most commonly) with */ +/* DMA transfer. */ +/* Refer to function @ref LL_ADC_DMA_GetRegAddr(). */ +#define LL_ADC_DMA_REG_REGULAR_DATA 0x00000000U /* ADC group regular conversion data register (corresponding to register DR) to be used with ADC configured in independent mode. Without DMA transfer, register accessed by LL function @ref LL_ADC_REG_ReadConversionData32() and other functions @ref LL_ADC_REG_ReadConversionDatax() */ +#if defined(ADC_MULTIMODE_SUPPORT) +#define LL_ADC_DMA_REG_REGULAR_DATA_MULTI 0x00000001U /* ADC group regular conversion data register (corresponding to register CDR) to be used with ADC configured in multimode (available on STM32 devices with several ADC instances). Without DMA transfer, register accessed by LL function @ref LL_ADC_REG_ReadMultiConversionData32() */ +#endif +/** + * @} + */ + +/** @defgroup ADC_LL_EC_COMMON_PATH_INTERNAL ADC common - Measurement path to internal channels + * @{ + */ +/* Note: Other measurement paths to internal channels may be available */ +/* (connections to other peripherals). */ +/* If they are not listed below, they do not require any specific */ +/* path enable. In this case, Access to measurement path is done */ +/* only by selecting the corresponding ADC internal channel. */ +#define LL_ADC_PATH_INTERNAL_NONE 0x00000000U /*!< ADC measurement pathes all disabled */ +#define LL_ADC_PATH_INTERNAL_VREFINT (ADC_CR2_TSVREFE) /*!< ADC measurement path to internal channel VrefInt */ +#define LL_ADC_PATH_INTERNAL_TEMPSENSOR (ADC_CR2_TSVREFE) /*!< ADC measurement path to internal channel temperature sensor */ +/** + * @} + */ + +/** @defgroup ADC_LL_EC_RESOLUTION ADC instance - Resolution + * @{ + */ +#define LL_ADC_RESOLUTION_12B 0x00000000U /*!< ADC resolution 12 bits */ +/** + * @} + */ + +/** @defgroup ADC_LL_EC_DATA_ALIGN ADC instance - Data alignment + * @{ + */ +#define LL_ADC_DATA_ALIGN_RIGHT 0x00000000U /*!< ADC conversion data alignment: right aligned (alignment on data register LSB bit 0)*/ +#define LL_ADC_DATA_ALIGN_LEFT (ADC_CR2_ALIGN) /*!< ADC conversion data alignment: left aligned (aligment on data register MSB bit 15)*/ +/** + * @} + */ + +/** @defgroup ADC_LL_EC_SCAN_SELECTION ADC instance - Scan selection + * @{ + */ +#define LL_ADC_SEQ_SCAN_DISABLE 0x00000000U /*!< ADC conversion is performed in unitary conversion mode (one channel converted, that defined in rank 1). Configuration of both groups regular and injected sequencers (sequence length, ...) is discarded: equivalent to length of 1 rank.*/ +#define LL_ADC_SEQ_SCAN_ENABLE (ADC_CR1_SCAN) /*!< ADC conversions are performed in sequence conversions mode, according to configuration of both groups regular and injected sequencers (sequence length, ...). */ +/** + * @} + */ + +/** @defgroup ADC_LL_EC_GROUPS ADC instance - Groups + * @{ + */ +#define LL_ADC_GROUP_REGULAR 0x00000001U /*!< ADC group regular (available on all STM32 devices) */ +#define LL_ADC_GROUP_INJECTED 0x00000002U /*!< ADC group injected (not available on all STM32 devices)*/ +#define LL_ADC_GROUP_REGULAR_INJECTED 0x00000003U /*!< ADC both groups regular and injected */ +/** + * @} + */ + +/** @defgroup ADC_LL_EC_CHANNEL ADC instance - Channel number + * @{ + */ +#define LL_ADC_CHANNEL_0 (ADC_CHANNEL_0_NUMBER | ADC_CHANNEL_0_SMP) /*!< ADC external channel (channel connected to GPIO pin) ADCx_IN0 */ +#define LL_ADC_CHANNEL_1 (ADC_CHANNEL_1_NUMBER | ADC_CHANNEL_1_SMP) /*!< ADC external channel (channel connected to GPIO pin) ADCx_IN1 */ +#define LL_ADC_CHANNEL_2 (ADC_CHANNEL_2_NUMBER | ADC_CHANNEL_2_SMP) /*!< ADC external channel (channel connected to GPIO pin) ADCx_IN2 */ +#define LL_ADC_CHANNEL_3 (ADC_CHANNEL_3_NUMBER | ADC_CHANNEL_3_SMP) /*!< ADC external channel (channel connected to GPIO pin) ADCx_IN3 */ +#define LL_ADC_CHANNEL_4 (ADC_CHANNEL_4_NUMBER | ADC_CHANNEL_4_SMP) /*!< ADC external channel (channel connected to GPIO pin) ADCx_IN4 */ +#define LL_ADC_CHANNEL_5 (ADC_CHANNEL_5_NUMBER | ADC_CHANNEL_5_SMP) /*!< ADC external channel (channel connected to GPIO pin) ADCx_IN5 */ +#define LL_ADC_CHANNEL_6 (ADC_CHANNEL_6_NUMBER | ADC_CHANNEL_6_SMP) /*!< ADC external channel (channel connected to GPIO pin) ADCx_IN6 */ +#define LL_ADC_CHANNEL_7 (ADC_CHANNEL_7_NUMBER | ADC_CHANNEL_7_SMP) /*!< ADC external channel (channel connected to GPIO pin) ADCx_IN7 */ +#define LL_ADC_CHANNEL_8 (ADC_CHANNEL_8_NUMBER | ADC_CHANNEL_8_SMP) /*!< ADC external channel (channel connected to GPIO pin) ADCx_IN8 */ +#define LL_ADC_CHANNEL_9 (ADC_CHANNEL_9_NUMBER | ADC_CHANNEL_9_SMP) /*!< ADC external channel (channel connected to GPIO pin) ADCx_IN9 */ +#define LL_ADC_CHANNEL_10 (ADC_CHANNEL_10_NUMBER | ADC_CHANNEL_10_SMP) /*!< ADC external channel (channel connected to GPIO pin) ADCx_IN10 */ +#define LL_ADC_CHANNEL_11 (ADC_CHANNEL_11_NUMBER | ADC_CHANNEL_11_SMP) /*!< ADC external channel (channel connected to GPIO pin) ADCx_IN11 */ +#define LL_ADC_CHANNEL_12 (ADC_CHANNEL_12_NUMBER | ADC_CHANNEL_12_SMP) /*!< ADC external channel (channel connected to GPIO pin) ADCx_IN12 */ +#define LL_ADC_CHANNEL_13 (ADC_CHANNEL_13_NUMBER | ADC_CHANNEL_13_SMP) /*!< ADC external channel (channel connected to GPIO pin) ADCx_IN13 */ +#define LL_ADC_CHANNEL_14 (ADC_CHANNEL_14_NUMBER | ADC_CHANNEL_14_SMP) /*!< ADC external channel (channel connected to GPIO pin) ADCx_IN14 */ +#define LL_ADC_CHANNEL_15 (ADC_CHANNEL_15_NUMBER | ADC_CHANNEL_15_SMP) /*!< ADC external channel (channel connected to GPIO pin) ADCx_IN15 */ +#define LL_ADC_CHANNEL_16 (ADC_CHANNEL_16_NUMBER | ADC_CHANNEL_16_SMP) /*!< ADC external channel (channel connected to GPIO pin) ADCx_IN16 */ +#define LL_ADC_CHANNEL_17 (ADC_CHANNEL_17_NUMBER | ADC_CHANNEL_17_SMP) /*!< ADC external channel (channel connected to GPIO pin) ADCx_IN17 */ +#define LL_ADC_CHANNEL_VREFINT (LL_ADC_CHANNEL_17 | ADC_CHANNEL_ID_INTERNAL_CH) /*!< ADC internal channel connected to VrefInt: Internal voltage reference. On STM32F1, ADC channel available only on ADC instance: ADC1. */ +#define LL_ADC_CHANNEL_TEMPSENSOR (LL_ADC_CHANNEL_16 | ADC_CHANNEL_ID_INTERNAL_CH) /*!< ADC internal channel connected to Temperature sensor. */ +/** + * @} + */ + +/** @defgroup ADC_LL_EC_REG_TRIGGER_SOURCE ADC group regular - Trigger source + * @{ + */ +/* ADC group regular external triggers for ADC instances: ADC1, ADC2, ADC3 (for ADC instances ADCx available on the selected device) */ +#define LL_ADC_REG_TRIG_SOFTWARE (ADC_CR2_EXTSEL_2 | ADC_CR2_EXTSEL_1 | ADC_CR2_EXTSEL_0) /*!< ADC group regular conversion trigger internal: SW start. */ +#define LL_ADC_REG_TRIG_EXT_TIM1_CH3 (ADC_CR2_EXTSEL_1) /*!< ADC group regular conversion trigger from external IP: TIM1 channel 3 event (capture compare: input capture or output capture). Trigger edge set to rising edge (default setting). */ +/* ADC group regular external triggers for ADC instances: ADC1, ADC2 (for ADC instances ADCx available on the selected device) */ +#define LL_ADC_REG_TRIG_EXT_TIM1_CH1 0x00000000U /*!< ADC group regular conversion trigger from external IP: TIM1 channel 1 event (capture compare: input capture or output capture). Trigger edge set to rising edge (default setting). */ +#define LL_ADC_REG_TRIG_EXT_TIM1_CH2 (ADC_CR2_EXTSEL_0) /*!< ADC group regular conversion trigger from external IP: TIM1 channel 2 event (capture compare: input capture or output capture). Trigger edge set to rising edge (default setting). */ +#define LL_ADC_REG_TRIG_EXT_TIM2_CH2 (ADC_CR2_EXTSEL_1 | ADC_CR2_EXTSEL_0) /*!< ADC group regular conversion trigger from external IP: TIM2 channel 2 event (capture compare: input capture or output capture). Trigger edge set to rising edge (default setting). */ +#define LL_ADC_REG_TRIG_EXT_TIM3_TRGO (ADC_CR2_EXTSEL_2) /*!< ADC group regular conversion trigger from external IP: TIM3 TRGO. Trigger edge set to rising edge (default setting). */ +#define LL_ADC_REG_TRIG_EXT_TIM4_CH4 (ADC_CR2_EXTSEL_2 | ADC_CR2_EXTSEL_0) /*!< ADC group regular conversion trigger from external IP: TIM4 channel 4 event (capture compare: input capture or output capture). Trigger edge set to rising edge (default setting). */ +#define LL_ADC_REG_TRIG_EXT_EXTI_LINE11 (ADC_CR2_EXTSEL_2 | ADC_CR2_EXTSEL_1) /*!< ADC group regular conversion trigger from external IP: external interrupt line 11. Trigger edge set to rising edge (default setting). */ +#if defined (STM32F101xE) || defined (STM32F103xE) || defined (STM32F103xG) || defined (STM32F105xC) || defined (STM32F107xC) +/* Note: TIM8_TRGO is available on ADC1 and ADC2 only in high-density and */ +/* XL-density devices. */ +/* Note: To use TIM8_TRGO on ADC1 or ADC2, a remap of trigger must be done */ +/* A remap of trigger must be done at top level (refer to */ +/* AFIO peripheral). */ +#define LL_ADC_REG_TRIG_EXT_TIM8_TRGO (LL_ADC_REG_TRIG_EXT_EXTI_LINE11) /*!< ADC group regular conversion trigger from external IP: TIM8 TRGO. Trigger edge set to rising edge (default setting). Available only on high-density and XL-density devices. A remap of trigger must be done at top level (refer to AFIO peripheral).*/ +#endif /* STM32F101xE || STM32F103xE || STM32F103xG || STM32F105xC || STM32F107xC */ +#if defined (STM32F103xE) || defined (STM32F103xG) +/* ADC group regular external triggers for ADC instances: ADC3 (for ADC instances ADCx available on the selected device) */ +#define LL_ADC_REG_TRIG_EXT_TIM3_CH1 (LL_ADC_REG_TRIG_EXT_TIM1_CH1) /*!< ADC group regular conversion trigger from external IP: TIM3 channel 1 event (capture compare: input capture or output capture). Trigger edge set to rising edge (default setting). */ +#define LL_ADC_REG_TRIG_EXT_TIM2_CH3 (LL_ADC_REG_TRIG_EXT_TIM1_CH2) /*!< ADC group regular conversion trigger from external IP: TIM2 channel 3 event (capture compare: input capture or output capture). Trigger edge set to rising edge (default setting). */ +#define LL_ADC_REG_TRIG_EXT_TIM8_CH1 (LL_ADC_REG_TRIG_EXT_TIM2_CH2) /*!< ADC group regular conversion trigger from external IP: TIM8 channel 1 event (capture compare: input capture or output capture). Trigger edge set to rising edge (default setting). */ +#define LL_ADC_REG_TRIG_EXT_TIM8_TRGO_ADC3 (LL_ADC_REG_TRIG_EXT_TIM3_TRGO) /*!< ADC group regular conversion trigger from external IP: TIM8 TRGO. Trigger edge set to rising edge (default setting). */ +#define LL_ADC_REG_TRIG_EXT_TIM5_CH1 (LL_ADC_REG_TRIG_EXT_TIM4_CH4) /*!< ADC group regular conversion trigger from external IP: TIM5 channel 1 event (capture compare: input capture or output capture). Trigger edge set to rising edge (default setting). */ +#define LL_ADC_REG_TRIG_EXT_TIM5_CH3 (LL_ADC_REG_TRIG_EXT_EXTI_LINE11) /*!< ADC group regular conversion trigger from external IP: TIM5 channel 3 event (capture compare: input capture or output capture). Trigger edge set to rising edge (default setting). */ +#endif +/** + * @} + */ + +/** @defgroup ADC_LL_EC_REG_TRIGGER_EDGE ADC group regular - Trigger edge + * @{ + */ +#define LL_ADC_REG_TRIG_EXT_RISING ADC_CR2_EXTTRIG /*!< ADC group regular conversion trigger polarity set to rising edge */ +/** + * @} + */ + +/** @defgroup ADC_LL_EC_REG_CONTINUOUS_MODE ADC group regular - Continuous mode +* @{ +*/ +#define LL_ADC_REG_CONV_SINGLE 0x00000000U /*!< ADC conversions are performed in single mode: one conversion per trigger */ +#define LL_ADC_REG_CONV_CONTINUOUS (ADC_CR2_CONT) /*!< ADC conversions are performed in continuous mode: after the first trigger, following conversions launched successively automatically */ +/** + * @} + */ + +/** @defgroup ADC_LL_EC_REG_DMA_TRANSFER ADC group regular - DMA transfer of ADC conversion data + * @{ + */ +#define LL_ADC_REG_DMA_TRANSFER_NONE 0x00000000U /*!< ADC conversions are not transferred by DMA */ +#define LL_ADC_REG_DMA_TRANSFER_UNLIMITED (ADC_CR2_DMA) /*!< ADC conversion data are transferred by DMA, in unlimited mode: DMA transfer requests are unlimited, whatever number of DMA data transferred (number of ADC conversions). This ADC mode is intended to be used with DMA mode circular. */ +/** + * @} + */ + +/** @defgroup ADC_LL_EC_REG_SEQ_SCAN_LENGTH ADC group regular - Sequencer scan length + * @{ + */ +#define LL_ADC_REG_SEQ_SCAN_DISABLE 0x00000000U /*!< ADC group regular sequencer disable (equivalent to sequencer of 1 rank: ADC conversion on only 1 channel) */ +#define LL_ADC_REG_SEQ_SCAN_ENABLE_2RANKS ( ADC_SQR1_L_0) /*!< ADC group regular sequencer enable with 2 ranks in the sequence */ +#define LL_ADC_REG_SEQ_SCAN_ENABLE_3RANKS ( ADC_SQR1_L_1 ) /*!< ADC group regular sequencer enable with 3 ranks in the sequence */ +#define LL_ADC_REG_SEQ_SCAN_ENABLE_4RANKS ( ADC_SQR1_L_1 | ADC_SQR1_L_0) /*!< ADC group regular sequencer enable with 4 ranks in the sequence */ +#define LL_ADC_REG_SEQ_SCAN_ENABLE_5RANKS ( ADC_SQR1_L_2 ) /*!< ADC group regular sequencer enable with 5 ranks in the sequence */ +#define LL_ADC_REG_SEQ_SCAN_ENABLE_6RANKS ( ADC_SQR1_L_2 | ADC_SQR1_L_0) /*!< ADC group regular sequencer enable with 6 ranks in the sequence */ +#define LL_ADC_REG_SEQ_SCAN_ENABLE_7RANKS ( ADC_SQR1_L_2 | ADC_SQR1_L_1 ) /*!< ADC group regular sequencer enable with 7 ranks in the sequence */ +#define LL_ADC_REG_SEQ_SCAN_ENABLE_8RANKS ( ADC_SQR1_L_2 | ADC_SQR1_L_1 | ADC_SQR1_L_0) /*!< ADC group regular sequencer enable with 8 ranks in the sequence */ +#define LL_ADC_REG_SEQ_SCAN_ENABLE_9RANKS (ADC_SQR1_L_3 ) /*!< ADC group regular sequencer enable with 9 ranks in the sequence */ +#define LL_ADC_REG_SEQ_SCAN_ENABLE_10RANKS (ADC_SQR1_L_3 | ADC_SQR1_L_0) /*!< ADC group regular sequencer enable with 10 ranks in the sequence */ +#define LL_ADC_REG_SEQ_SCAN_ENABLE_11RANKS (ADC_SQR1_L_3 | ADC_SQR1_L_1 ) /*!< ADC group regular sequencer enable with 11 ranks in the sequence */ +#define LL_ADC_REG_SEQ_SCAN_ENABLE_12RANKS (ADC_SQR1_L_3 | ADC_SQR1_L_1 | ADC_SQR1_L_0) /*!< ADC group regular sequencer enable with 12 ranks in the sequence */ +#define LL_ADC_REG_SEQ_SCAN_ENABLE_13RANKS (ADC_SQR1_L_3 | ADC_SQR1_L_2 ) /*!< ADC group regular sequencer enable with 13 ranks in the sequence */ +#define LL_ADC_REG_SEQ_SCAN_ENABLE_14RANKS (ADC_SQR1_L_3 | ADC_SQR1_L_2 | ADC_SQR1_L_0) /*!< ADC group regular sequencer enable with 14 ranks in the sequence */ +#define LL_ADC_REG_SEQ_SCAN_ENABLE_15RANKS (ADC_SQR1_L_3 | ADC_SQR1_L_2 | ADC_SQR1_L_1 ) /*!< ADC group regular sequencer enable with 15 ranks in the sequence */ +#define LL_ADC_REG_SEQ_SCAN_ENABLE_16RANKS (ADC_SQR1_L_3 | ADC_SQR1_L_2 | ADC_SQR1_L_1 | ADC_SQR1_L_0) /*!< ADC group regular sequencer enable with 16 ranks in the sequence */ +/** + * @} + */ + +/** @defgroup ADC_LL_EC_REG_SEQ_DISCONT_MODE ADC group regular - Sequencer discontinuous mode + * @{ + */ +#define LL_ADC_REG_SEQ_DISCONT_DISABLE 0x00000000U /*!< ADC group regular sequencer discontinuous mode disable */ +#define LL_ADC_REG_SEQ_DISCONT_1RANK ( ADC_CR1_DISCEN) /*!< ADC group regular sequencer discontinuous mode enable with sequence interruption every rank */ +#define LL_ADC_REG_SEQ_DISCONT_2RANKS ( ADC_CR1_DISCNUM_0 | ADC_CR1_DISCEN) /*!< ADC group regular sequencer discontinuous mode enabled with sequence interruption every 2 ranks */ +#define LL_ADC_REG_SEQ_DISCONT_3RANKS ( ADC_CR1_DISCNUM_1 | ADC_CR1_DISCEN) /*!< ADC group regular sequencer discontinuous mode enable with sequence interruption every 3 ranks */ +#define LL_ADC_REG_SEQ_DISCONT_4RANKS ( ADC_CR1_DISCNUM_1 | ADC_CR1_DISCNUM_0 | ADC_CR1_DISCEN) /*!< ADC group regular sequencer discontinuous mode enable with sequence interruption every 4 ranks */ +#define LL_ADC_REG_SEQ_DISCONT_5RANKS (ADC_CR1_DISCNUM_2 | ADC_CR1_DISCEN) /*!< ADC group regular sequencer discontinuous mode enable with sequence interruption every 5 ranks */ +#define LL_ADC_REG_SEQ_DISCONT_6RANKS (ADC_CR1_DISCNUM_2 | ADC_CR1_DISCNUM_0 | ADC_CR1_DISCEN) /*!< ADC group regular sequencer discontinuous mode enable with sequence interruption every 6 ranks */ +#define LL_ADC_REG_SEQ_DISCONT_7RANKS (ADC_CR1_DISCNUM_2 | ADC_CR1_DISCNUM_1 | ADC_CR1_DISCEN) /*!< ADC group regular sequencer discontinuous mode enable with sequence interruption every 7 ranks */ +#define LL_ADC_REG_SEQ_DISCONT_8RANKS (ADC_CR1_DISCNUM_2 | ADC_CR1_DISCNUM_1 | ADC_CR1_DISCNUM_0 | ADC_CR1_DISCEN) /*!< ADC group regular sequencer discontinuous mode enable with sequence interruption every 8 ranks */ +/** + * @} + */ + +/** @defgroup ADC_LL_EC_REG_SEQ_RANKS ADC group regular - Sequencer ranks + * @{ + */ +#define LL_ADC_REG_RANK_1 (ADC_SQR3_REGOFFSET | ADC_REG_RANK_1_SQRX_BITOFFSET_POS) /*!< ADC group regular sequencer rank 1 */ +#define LL_ADC_REG_RANK_2 (ADC_SQR3_REGOFFSET | ADC_REG_RANK_2_SQRX_BITOFFSET_POS) /*!< ADC group regular sequencer rank 2 */ +#define LL_ADC_REG_RANK_3 (ADC_SQR3_REGOFFSET | ADC_REG_RANK_3_SQRX_BITOFFSET_POS) /*!< ADC group regular sequencer rank 3 */ +#define LL_ADC_REG_RANK_4 (ADC_SQR3_REGOFFSET | ADC_REG_RANK_4_SQRX_BITOFFSET_POS) /*!< ADC group regular sequencer rank 4 */ +#define LL_ADC_REG_RANK_5 (ADC_SQR3_REGOFFSET | ADC_REG_RANK_5_SQRX_BITOFFSET_POS) /*!< ADC group regular sequencer rank 5 */ +#define LL_ADC_REG_RANK_6 (ADC_SQR3_REGOFFSET | ADC_REG_RANK_6_SQRX_BITOFFSET_POS) /*!< ADC group regular sequencer rank 6 */ +#define LL_ADC_REG_RANK_7 (ADC_SQR2_REGOFFSET | ADC_REG_RANK_7_SQRX_BITOFFSET_POS) /*!< ADC group regular sequencer rank 7 */ +#define LL_ADC_REG_RANK_8 (ADC_SQR2_REGOFFSET | ADC_REG_RANK_8_SQRX_BITOFFSET_POS) /*!< ADC group regular sequencer rank 8 */ +#define LL_ADC_REG_RANK_9 (ADC_SQR2_REGOFFSET | ADC_REG_RANK_9_SQRX_BITOFFSET_POS) /*!< ADC group regular sequencer rank 9 */ +#define LL_ADC_REG_RANK_10 (ADC_SQR2_REGOFFSET | ADC_REG_RANK_10_SQRX_BITOFFSET_POS) /*!< ADC group regular sequencer rank 10 */ +#define LL_ADC_REG_RANK_11 (ADC_SQR2_REGOFFSET | ADC_REG_RANK_11_SQRX_BITOFFSET_POS) /*!< ADC group regular sequencer rank 11 */ +#define LL_ADC_REG_RANK_12 (ADC_SQR2_REGOFFSET | ADC_REG_RANK_12_SQRX_BITOFFSET_POS) /*!< ADC group regular sequencer rank 12 */ +#define LL_ADC_REG_RANK_13 (ADC_SQR1_REGOFFSET | ADC_REG_RANK_13_SQRX_BITOFFSET_POS) /*!< ADC group regular sequencer rank 13 */ +#define LL_ADC_REG_RANK_14 (ADC_SQR1_REGOFFSET | ADC_REG_RANK_14_SQRX_BITOFFSET_POS) /*!< ADC group regular sequencer rank 14 */ +#define LL_ADC_REG_RANK_15 (ADC_SQR1_REGOFFSET | ADC_REG_RANK_15_SQRX_BITOFFSET_POS) /*!< ADC group regular sequencer rank 15 */ +#define LL_ADC_REG_RANK_16 (ADC_SQR1_REGOFFSET | ADC_REG_RANK_16_SQRX_BITOFFSET_POS) /*!< ADC group regular sequencer rank 16 */ +/** + * @} + */ + +/** @defgroup ADC_LL_EC_INJ_TRIGGER_SOURCE ADC group injected - Trigger source + * @{ + */ +/* ADC group injected external triggers for ADC instances: ADC1, ADC2, ADC3 (for ADC instances ADCx available on the selected device) */ +#define LL_ADC_INJ_TRIG_SOFTWARE (ADC_CR2_JEXTSEL_2 | ADC_CR2_JEXTSEL_1 | ADC_CR2_JEXTSEL_0) /*!< ADC group injected conversion trigger internal: SW start. */ +#define LL_ADC_INJ_TRIG_EXT_TIM1_TRGO 0x00000000U /*!< ADC group injected conversion trigger from external IP: TIM1 TRGO. Trigger edge set to rising edge (default setting). */ +#define LL_ADC_INJ_TRIG_EXT_TIM1_CH4 (ADC_CR2_JEXTSEL_0) /*!< ADC group injected conversion trigger from external IP: TIM1 channel 4 event (capture compare: input capture or output capture). Trigger edge set to rising edge (default setting). */ +/* ADC group injected external triggers for ADC instances: ADC1, ADC2 (for ADC instances ADCx available on the selected device) */ +#define LL_ADC_INJ_TRIG_EXT_TIM2_TRGO (ADC_CR2_JEXTSEL_1) /*!< ADC group injected conversion trigger from external IP: TIM2 TRGO. Trigger edge set to rising edge (default setting). */ +#define LL_ADC_INJ_TRIG_EXT_TIM2_CH1 (ADC_CR2_JEXTSEL_1 | ADC_CR2_JEXTSEL_0) /*!< ADC group injected conversion trigger from external IP: TIM2 channel 1 event (capture compare: input capture or output capture). Trigger edge set to rising edge (default setting). */ +#define LL_ADC_INJ_TRIG_EXT_TIM3_CH4 (ADC_CR2_JEXTSEL_2) /*!< ADC group injected conversion trigger from external IP: TIM3 channel 4 event (capture compare: input capture or output capture). Trigger edge set to rising edge (default setting). */ +#define LL_ADC_INJ_TRIG_EXT_TIM4_TRGO (ADC_CR2_JEXTSEL_2 | ADC_CR2_JEXTSEL_0) /*!< ADC group injected conversion trigger from external IP: TIM4 TRGO. Trigger edge set to rising edge (default setting). */ +#define LL_ADC_INJ_TRIG_EXT_EXTI_LINE15 (ADC_CR2_JEXTSEL_2 | ADC_CR2_JEXTSEL_1) /*!< ADC group injected conversion trigger from external IP: external interrupt line 15. Trigger edge set to rising edge (default setting). */ +#if defined (STM32F101xE) || defined (STM32F103xE) || defined (STM32F103xG) || defined (STM32F105xC) || defined (STM32F107xC) +/* Note: TIM8_CH4 is available on ADC1 and ADC2 only in high-density and */ +/* XL-density devices. */ +/* Note: To use TIM8_TRGO on ADC1 or ADC2, a remap of trigger must be done */ +/* A remap of trigger must be done at top level (refer to */ +/* AFIO peripheral). */ +#define LL_ADC_INJ_TRIG_EXT_TIM8_CH4 (LL_ADC_INJ_TRIG_EXT_EXTI_LINE15) /*!< ADC group injected conversion trigger from external IP: TIM8 channel 4 event (capture compare: input capture or output capture). Trigger edge set to rising edge (default setting). Available only on high-density and XL-density devices. A remap of trigger must be done at top level (refer to AFIO peripheral). */ +#endif /* STM32F101xE || STM32F103xE || STM32F103xG || STM32F105xC || STM32F107xC */ +#if defined (STM32F103xE) || defined (STM32F103xG) +/* ADC group injected external triggers for ADC instances: ADC3 (for ADC instances ADCx available on the selected device) */ +#define LL_ADC_INJ_TRIG_EXT_TIM4_CH3 (LL_ADC_INJ_TRIG_EXT_TIM2_TRGO) /*!< ADC group injected conversion trigger from external IP: TIM4 channel 3 event (capture compare: input capture or output capture). Trigger edge set to rising edge (default setting). */ +#define LL_ADC_INJ_TRIG_EXT_TIM8_CH2 (LL_ADC_INJ_TRIG_EXT_TIM2_CH1) /*!< ADC group injected conversion trigger from external IP: TIM8 channel 2 event (capture compare: input capture or output capture). Trigger edge set to rising edge (default setting). */ +#define LL_ADC_INJ_TRIG_EXT_TIM8_CH4_ADC3 (LL_ADC_INJ_TRIG_EXT_TIM3_CH4) /*!< ADC group injected conversion trigger from external IP: TIM8 channel 4 event (capture compare: input capture or output capture). Trigger edge set to rising edge (default setting). */ +#define LL_ADC_INJ_TRIG_EXT_TIM5_TRGO (LL_ADC_INJ_TRIG_EXT_TIM4_TRGO) /*!< ADC group injected conversion trigger from external IP: TIM5 TRGO. Trigger edge set to rising edge (default setting). */ +#define LL_ADC_INJ_TRIG_EXT_TIM5_CH4 (LL_ADC_INJ_TRIG_EXT_EXTI_LINE15) /*!< ADC group injected conversion trigger from external IP: TIM5 channel 4 event (capture compare: input capture or output capture). Trigger edge set to rising edge (default setting). */ +#endif +/** + * @} + */ + +/** @defgroup ADC_LL_EC_INJ_TRIGGER_EDGE ADC group injected - Trigger edge + * @{ + */ +#define LL_ADC_INJ_TRIG_EXT_RISING ADC_CR2_JEXTTRIG /*!< ADC group injected conversion trigger polarity set to rising edge */ +/** + * @} + */ + +/** @defgroup ADC_LL_EC_INJ_TRIG_AUTO ADC group injected - Automatic trigger mode +* @{ +*/ +#define LL_ADC_INJ_TRIG_INDEPENDENT 0x00000000U /*!< ADC group injected conversion trigger independent. Setting mandatory if ADC group injected injected trigger source is set to an external trigger. */ +#define LL_ADC_INJ_TRIG_FROM_GRP_REGULAR (ADC_CR1_JAUTO) /*!< ADC group injected conversion trigger from ADC group regular. Setting compliant only with group injected trigger source set to SW start, without any further action on ADC group injected conversion start or stop: in this case, ADC group injected is controlled only from ADC group regular. */ +/** + * @} + */ + + +/** @defgroup ADC_LL_EC_INJ_SEQ_SCAN_LENGTH ADC group injected - Sequencer scan length + * @{ + */ +#define LL_ADC_INJ_SEQ_SCAN_DISABLE 0x00000000U /*!< ADC group injected sequencer disable (equivalent to sequencer of 1 rank: ADC conversion on only 1 channel) */ +#define LL_ADC_INJ_SEQ_SCAN_ENABLE_2RANKS ( ADC_JSQR_JL_0) /*!< ADC group injected sequencer enable with 2 ranks in the sequence */ +#define LL_ADC_INJ_SEQ_SCAN_ENABLE_3RANKS (ADC_JSQR_JL_1 ) /*!< ADC group injected sequencer enable with 3 ranks in the sequence */ +#define LL_ADC_INJ_SEQ_SCAN_ENABLE_4RANKS (ADC_JSQR_JL_1 | ADC_JSQR_JL_0) /*!< ADC group injected sequencer enable with 4 ranks in the sequence */ +/** + * @} + */ + +/** @defgroup ADC_LL_EC_INJ_SEQ_DISCONT_MODE ADC group injected - Sequencer discontinuous mode + * @{ + */ +#define LL_ADC_INJ_SEQ_DISCONT_DISABLE 0x00000000U /*!< ADC group injected sequencer discontinuous mode disable */ +#define LL_ADC_INJ_SEQ_DISCONT_1RANK (ADC_CR1_JDISCEN) /*!< ADC group injected sequencer discontinuous mode enable with sequence interruption every rank */ +/** + * @} + */ + +/** @defgroup ADC_LL_EC_INJ_SEQ_RANKS ADC group injected - Sequencer ranks + * @{ + */ +#define LL_ADC_INJ_RANK_1 (ADC_JDR1_REGOFFSET | ADC_JOFR1_REGOFFSET | 0x00000001U) /*!< ADC group injected sequencer rank 1 */ +#define LL_ADC_INJ_RANK_2 (ADC_JDR2_REGOFFSET | ADC_JOFR2_REGOFFSET | 0x00000002U) /*!< ADC group injected sequencer rank 2 */ +#define LL_ADC_INJ_RANK_3 (ADC_JDR3_REGOFFSET | ADC_JOFR3_REGOFFSET | 0x00000003U) /*!< ADC group injected sequencer rank 3 */ +#define LL_ADC_INJ_RANK_4 (ADC_JDR4_REGOFFSET | ADC_JOFR4_REGOFFSET | 0x00000004U) /*!< ADC group injected sequencer rank 4 */ +/** + * @} + */ + +/** @defgroup ADC_LL_EC_CHANNEL_SAMPLINGTIME Channel - Sampling time + * @{ + */ +#define LL_ADC_SAMPLINGTIME_1CYCLE_5 0x00000000U /*!< Sampling time 1.5 ADC clock cycle */ +#define LL_ADC_SAMPLINGTIME_7CYCLES_5 (ADC_SMPR2_SMP0_0) /*!< Sampling time 7.5 ADC clock cycles */ +#define LL_ADC_SAMPLINGTIME_13CYCLES_5 (ADC_SMPR2_SMP0_1) /*!< Sampling time 13.5 ADC clock cycles */ +#define LL_ADC_SAMPLINGTIME_28CYCLES_5 (ADC_SMPR2_SMP0_1 | ADC_SMPR2_SMP0_0) /*!< Sampling time 28.5 ADC clock cycles */ +#define LL_ADC_SAMPLINGTIME_41CYCLES_5 (ADC_SMPR2_SMP0_2) /*!< Sampling time 41.5 ADC clock cycles */ +#define LL_ADC_SAMPLINGTIME_55CYCLES_5 (ADC_SMPR2_SMP0_2 | ADC_SMPR2_SMP0_0) /*!< Sampling time 55.5 ADC clock cycles */ +#define LL_ADC_SAMPLINGTIME_71CYCLES_5 (ADC_SMPR2_SMP0_2 | ADC_SMPR2_SMP0_1) /*!< Sampling time 71.5 ADC clock cycles */ +#define LL_ADC_SAMPLINGTIME_239CYCLES_5 (ADC_SMPR2_SMP0_2 | ADC_SMPR2_SMP0_1 | ADC_SMPR2_SMP0_0) /*!< Sampling time 239.5 ADC clock cycles */ +/** + * @} + */ + +/** @defgroup ADC_LL_EC_AWD_NUMBER Analog watchdog - Analog watchdog number + * @{ + */ +#define LL_ADC_AWD1 (ADC_AWD_CR1_CHANNEL_MASK | ADC_AWD_CR1_REGOFFSET) /*!< ADC analog watchdog number 1 */ +/** + * @} + */ + +/** @defgroup ADC_LL_EC_AWD_CHANNELS Analog watchdog - Monitored channels + * @{ + */ +#define LL_ADC_AWD_DISABLE 0x00000000U /*!< ADC analog watchdog monitoring disabled */ +#define LL_ADC_AWD_ALL_CHANNELS_REG ( ADC_CR1_AWDEN ) /*!< ADC analog watchdog monitoring of all channels, converted by group regular only */ +#define LL_ADC_AWD_ALL_CHANNELS_INJ ( ADC_CR1_JAWDEN ) /*!< ADC analog watchdog monitoring of all channels, converted by group injected only */ +#define LL_ADC_AWD_ALL_CHANNELS_REG_INJ ( ADC_CR1_JAWDEN | ADC_CR1_AWDEN ) /*!< ADC analog watchdog monitoring of all channels, converted by either group regular or injected */ +#define LL_ADC_AWD_CHANNEL_0_REG ((LL_ADC_CHANNEL_0 & ADC_CHANNEL_ID_MASK) | ADC_CR1_AWDEN | ADC_CR1_AWDSGL) /*!< ADC analog watchdog monitoring of ADC external channel (channel connected to GPIO pin) ADCx_IN0, converted by group regular only */ +#define LL_ADC_AWD_CHANNEL_0_INJ ((LL_ADC_CHANNEL_0 & ADC_CHANNEL_ID_MASK) | ADC_CR1_JAWDEN | ADC_CR1_AWDSGL) /*!< ADC analog watchdog monitoring of ADC external channel (channel connected to GPIO pin) ADCx_IN0, converted by group injected only */ +#define LL_ADC_AWD_CHANNEL_0_REG_INJ ((LL_ADC_CHANNEL_0 & ADC_CHANNEL_ID_MASK) | ADC_CR1_JAWDEN | ADC_CR1_AWDEN | ADC_CR1_AWDSGL) /*!< ADC analog watchdog monitoring of ADC external channel (channel connected to GPIO pin) ADCx_IN0, converted by either group regular or injected */ +#define LL_ADC_AWD_CHANNEL_1_REG ((LL_ADC_CHANNEL_1 & ADC_CHANNEL_ID_MASK) | ADC_CR1_AWDEN | ADC_CR1_AWDSGL) /*!< ADC analog watchdog monitoring of ADC external channel (channel connected to GPIO pin) ADCx_IN1, converted by group regular only */ +#define LL_ADC_AWD_CHANNEL_1_INJ ((LL_ADC_CHANNEL_1 & ADC_CHANNEL_ID_MASK) | ADC_CR1_JAWDEN | ADC_CR1_AWDSGL) /*!< ADC analog watchdog monitoring of ADC external channel (channel connected to GPIO pin) ADCx_IN1, converted by group injected only */ +#define LL_ADC_AWD_CHANNEL_1_REG_INJ ((LL_ADC_CHANNEL_1 & ADC_CHANNEL_ID_MASK) | ADC_CR1_JAWDEN | ADC_CR1_AWDEN | ADC_CR1_AWDSGL) /*!< ADC analog watchdog monitoring of ADC external channel (channel connected to GPIO pin) ADCx_IN1, converted by either group regular or injected */ +#define LL_ADC_AWD_CHANNEL_2_REG ((LL_ADC_CHANNEL_2 & ADC_CHANNEL_ID_MASK) | ADC_CR1_AWDEN | ADC_CR1_AWDSGL) /*!< ADC analog watchdog monitoring of ADC external channel (channel connected to GPIO pin) ADCx_IN2, converted by group regular only */ +#define LL_ADC_AWD_CHANNEL_2_INJ ((LL_ADC_CHANNEL_2 & ADC_CHANNEL_ID_MASK) | ADC_CR1_JAWDEN | ADC_CR1_AWDSGL) /*!< ADC analog watchdog monitoring of ADC external channel (channel connected to GPIO pin) ADCx_IN2, converted by group injected only */ +#define LL_ADC_AWD_CHANNEL_2_REG_INJ ((LL_ADC_CHANNEL_2 & ADC_CHANNEL_ID_MASK) | ADC_CR1_JAWDEN | ADC_CR1_AWDEN | ADC_CR1_AWDSGL) /*!< ADC analog watchdog monitoring of ADC external channel (channel connected to GPIO pin) ADCx_IN2, converted by either group regular or injected */ +#define LL_ADC_AWD_CHANNEL_3_REG ((LL_ADC_CHANNEL_3 & ADC_CHANNEL_ID_MASK) | ADC_CR1_AWDEN | ADC_CR1_AWDSGL) /*!< ADC analog watchdog monitoring of ADC external channel (channel connected to GPIO pin) ADCx_IN3, converted by group regular only */ +#define LL_ADC_AWD_CHANNEL_3_INJ ((LL_ADC_CHANNEL_3 & ADC_CHANNEL_ID_MASK) | ADC_CR1_JAWDEN | ADC_CR1_AWDSGL) /*!< ADC analog watchdog monitoring of ADC external channel (channel connected to GPIO pin) ADCx_IN3, converted by group injected only */ +#define LL_ADC_AWD_CHANNEL_3_REG_INJ ((LL_ADC_CHANNEL_3 & ADC_CHANNEL_ID_MASK) | ADC_CR1_JAWDEN | ADC_CR1_AWDEN | ADC_CR1_AWDSGL) /*!< ADC analog watchdog monitoring of ADC external channel (channel connected to GPIO pin) ADCx_IN3, converted by either group regular or injected */ +#define LL_ADC_AWD_CHANNEL_4_REG ((LL_ADC_CHANNEL_4 & ADC_CHANNEL_ID_MASK) | ADC_CR1_AWDEN | ADC_CR1_AWDSGL) /*!< ADC analog watchdog monitoring of ADC external channel (channel connected to GPIO pin) ADCx_IN4, converted by group regular only */ +#define LL_ADC_AWD_CHANNEL_4_INJ ((LL_ADC_CHANNEL_4 & ADC_CHANNEL_ID_MASK) | ADC_CR1_JAWDEN | ADC_CR1_AWDSGL) /*!< ADC analog watchdog monitoring of ADC external channel (channel connected to GPIO pin) ADCx_IN4, converted by group injected only */ +#define LL_ADC_AWD_CHANNEL_4_REG_INJ ((LL_ADC_CHANNEL_4 & ADC_CHANNEL_ID_MASK) | ADC_CR1_JAWDEN | ADC_CR1_AWDEN | ADC_CR1_AWDSGL) /*!< ADC analog watchdog monitoring of ADC external channel (channel connected to GPIO pin) ADCx_IN4, converted by either group regular or injected */ +#define LL_ADC_AWD_CHANNEL_5_REG ((LL_ADC_CHANNEL_5 & ADC_CHANNEL_ID_MASK) | ADC_CR1_AWDEN | ADC_CR1_AWDSGL) /*!< ADC analog watchdog monitoring of ADC external channel (channel connected to GPIO pin) ADCx_IN5, converted by group regular only */ +#define LL_ADC_AWD_CHANNEL_5_INJ ((LL_ADC_CHANNEL_5 & ADC_CHANNEL_ID_MASK) | ADC_CR1_JAWDEN | ADC_CR1_AWDSGL) /*!< ADC analog watchdog monitoring of ADC external channel (channel connected to GPIO pin) ADCx_IN5, converted by group injected only */ +#define LL_ADC_AWD_CHANNEL_5_REG_INJ ((LL_ADC_CHANNEL_5 & ADC_CHANNEL_ID_MASK) | ADC_CR1_JAWDEN | ADC_CR1_AWDEN | ADC_CR1_AWDSGL) /*!< ADC analog watchdog monitoring of ADC external channel (channel connected to GPIO pin) ADCx_IN5, converted by either group regular or injected */ +#define LL_ADC_AWD_CHANNEL_6_REG ((LL_ADC_CHANNEL_6 & ADC_CHANNEL_ID_MASK) | ADC_CR1_AWDEN | ADC_CR1_AWDSGL) /*!< ADC analog watchdog monitoring of ADC external channel (channel connected to GPIO pin) ADCx_IN6, converted by group regular only */ +#define LL_ADC_AWD_CHANNEL_6_INJ ((LL_ADC_CHANNEL_6 & ADC_CHANNEL_ID_MASK) | ADC_CR1_JAWDEN | ADC_CR1_AWDSGL) /*!< ADC analog watchdog monitoring of ADC external channel (channel connected to GPIO pin) ADCx_IN6, converted by group injected only */ +#define LL_ADC_AWD_CHANNEL_6_REG_INJ ((LL_ADC_CHANNEL_6 & ADC_CHANNEL_ID_MASK) | ADC_CR1_JAWDEN | ADC_CR1_AWDEN | ADC_CR1_AWDSGL) /*!< ADC analog watchdog monitoring of ADC external channel (channel connected to GPIO pin) ADCx_IN6, converted by either group regular or injected */ +#define LL_ADC_AWD_CHANNEL_7_REG ((LL_ADC_CHANNEL_7 & ADC_CHANNEL_ID_MASK) | ADC_CR1_AWDEN | ADC_CR1_AWDSGL) /*!< ADC analog watchdog monitoring of ADC external channel (channel connected to GPIO pin) ADCx_IN7, converted by group regular only */ +#define LL_ADC_AWD_CHANNEL_7_INJ ((LL_ADC_CHANNEL_7 & ADC_CHANNEL_ID_MASK) | ADC_CR1_JAWDEN | ADC_CR1_AWDSGL) /*!< ADC analog watchdog monitoring of ADC external channel (channel connected to GPIO pin) ADCx_IN7, converted by group injected only */ +#define LL_ADC_AWD_CHANNEL_7_REG_INJ ((LL_ADC_CHANNEL_7 & ADC_CHANNEL_ID_MASK) | ADC_CR1_JAWDEN | ADC_CR1_AWDEN | ADC_CR1_AWDSGL) /*!< ADC analog watchdog monitoring of ADC external channel (channel connected to GPIO pin) ADCx_IN7, converted by either group regular or injected */ +#define LL_ADC_AWD_CHANNEL_8_REG ((LL_ADC_CHANNEL_8 & ADC_CHANNEL_ID_MASK) | ADC_CR1_AWDEN | ADC_CR1_AWDSGL) /*!< ADC analog watchdog monitoring of ADC external channel (channel connected to GPIO pin) ADCx_IN8, converted by group regular only */ +#define LL_ADC_AWD_CHANNEL_8_INJ ((LL_ADC_CHANNEL_8 & ADC_CHANNEL_ID_MASK) | ADC_CR1_JAWDEN | ADC_CR1_AWDSGL) /*!< ADC analog watchdog monitoring of ADC external channel (channel connected to GPIO pin) ADCx_IN8, converted by group injected only */ +#define LL_ADC_AWD_CHANNEL_8_REG_INJ ((LL_ADC_CHANNEL_8 & ADC_CHANNEL_ID_MASK) | ADC_CR1_JAWDEN | ADC_CR1_AWDEN | ADC_CR1_AWDSGL) /*!< ADC analog watchdog monitoring of ADC external channel (channel connected to GPIO pin) ADCx_IN8, converted by either group regular or injected */ +#define LL_ADC_AWD_CHANNEL_9_REG ((LL_ADC_CHANNEL_9 & ADC_CHANNEL_ID_MASK) | ADC_CR1_AWDEN | ADC_CR1_AWDSGL) /*!< ADC analog watchdog monitoring of ADC external channel (channel connected to GPIO pin) ADCx_IN9, converted by group regular only */ +#define LL_ADC_AWD_CHANNEL_9_INJ ((LL_ADC_CHANNEL_9 & ADC_CHANNEL_ID_MASK) | ADC_CR1_JAWDEN | ADC_CR1_AWDSGL) /*!< ADC analog watchdog monitoring of ADC external channel (channel connected to GPIO pin) ADCx_IN9, converted by group injected only */ +#define LL_ADC_AWD_CHANNEL_9_REG_INJ ((LL_ADC_CHANNEL_9 & ADC_CHANNEL_ID_MASK) | ADC_CR1_JAWDEN | ADC_CR1_AWDEN | ADC_CR1_AWDSGL) /*!< ADC analog watchdog monitoring of ADC external channel (channel connected to GPIO pin) ADCx_IN9, converted by either group regular or injected */ +#define LL_ADC_AWD_CHANNEL_10_REG ((LL_ADC_CHANNEL_10 & ADC_CHANNEL_ID_MASK) | ADC_CR1_AWDEN | ADC_CR1_AWDSGL) /*!< ADC analog watchdog monitoring of ADC external channel (channel connected to GPIO pin) ADCx_IN10, converted by group regular only */ +#define LL_ADC_AWD_CHANNEL_10_INJ ((LL_ADC_CHANNEL_10 & ADC_CHANNEL_ID_MASK) | ADC_CR1_JAWDEN | ADC_CR1_AWDSGL) /*!< ADC analog watchdog monitoring of ADC external channel (channel connected to GPIO pin) ADCx_IN10, converted by group injected only */ +#define LL_ADC_AWD_CHANNEL_10_REG_INJ ((LL_ADC_CHANNEL_10 & ADC_CHANNEL_ID_MASK) | ADC_CR1_JAWDEN | ADC_CR1_AWDEN | ADC_CR1_AWDSGL) /*!< ADC analog watchdog monitoring of ADC external channel (channel connected to GPIO pin) ADCx_IN10, converted by either group regular or injected */ +#define LL_ADC_AWD_CHANNEL_11_REG ((LL_ADC_CHANNEL_11 & ADC_CHANNEL_ID_MASK) | ADC_CR1_AWDEN | ADC_CR1_AWDSGL) /*!< ADC analog watchdog monitoring of ADC external channel (channel connected to GPIO pin) ADCx_IN11, converted by group regular only */ +#define LL_ADC_AWD_CHANNEL_11_INJ ((LL_ADC_CHANNEL_11 & ADC_CHANNEL_ID_MASK) | ADC_CR1_JAWDEN | ADC_CR1_AWDSGL) /*!< ADC analog watchdog monitoring of ADC external channel (channel connected to GPIO pin) ADCx_IN11, converted by group injected only */ +#define LL_ADC_AWD_CHANNEL_11_REG_INJ ((LL_ADC_CHANNEL_11 & ADC_CHANNEL_ID_MASK) | ADC_CR1_JAWDEN | ADC_CR1_AWDEN | ADC_CR1_AWDSGL) /*!< ADC analog watchdog monitoring of ADC external channel (channel connected to GPIO pin) ADCx_IN11, converted by either group regular or injected */ +#define LL_ADC_AWD_CHANNEL_12_REG ((LL_ADC_CHANNEL_12 & ADC_CHANNEL_ID_MASK) | ADC_CR1_AWDEN | ADC_CR1_AWDSGL) /*!< ADC analog watchdog monitoring of ADC external channel (channel connected to GPIO pin) ADCx_IN12, converted by group regular only */ +#define LL_ADC_AWD_CHANNEL_12_INJ ((LL_ADC_CHANNEL_12 & ADC_CHANNEL_ID_MASK) | ADC_CR1_JAWDEN | ADC_CR1_AWDSGL) /*!< ADC analog watchdog monitoring of ADC external channel (channel connected to GPIO pin) ADCx_IN12, converted by group injected only */ +#define LL_ADC_AWD_CHANNEL_12_REG_INJ ((LL_ADC_CHANNEL_12 & ADC_CHANNEL_ID_MASK) | ADC_CR1_JAWDEN | ADC_CR1_AWDEN | ADC_CR1_AWDSGL) /*!< ADC analog watchdog monitoring of ADC external channel (channel connected to GPIO pin) ADCx_IN12, converted by either group regular or injected */ +#define LL_ADC_AWD_CHANNEL_13_REG ((LL_ADC_CHANNEL_13 & ADC_CHANNEL_ID_MASK) | ADC_CR1_AWDEN | ADC_CR1_AWDSGL) /*!< ADC analog watchdog monitoring of ADC external channel (channel connected to GPIO pin) ADCx_IN13, converted by group regular only */ +#define LL_ADC_AWD_CHANNEL_13_INJ ((LL_ADC_CHANNEL_13 & ADC_CHANNEL_ID_MASK) | ADC_CR1_JAWDEN | ADC_CR1_AWDSGL) /*!< ADC analog watchdog monitoring of ADC external channel (channel connected to GPIO pin) ADCx_IN13, converted by group injected only */ +#define LL_ADC_AWD_CHANNEL_13_REG_INJ ((LL_ADC_CHANNEL_13 & ADC_CHANNEL_ID_MASK) | ADC_CR1_JAWDEN | ADC_CR1_AWDEN | ADC_CR1_AWDSGL) /*!< ADC analog watchdog monitoring of ADC external channel (channel connected to GPIO pin) ADCx_IN13, converted by either group regular or injected */ +#define LL_ADC_AWD_CHANNEL_14_REG ((LL_ADC_CHANNEL_14 & ADC_CHANNEL_ID_MASK) | ADC_CR1_AWDEN | ADC_CR1_AWDSGL) /*!< ADC analog watchdog monitoring of ADC external channel (channel connected to GPIO pin) ADCx_IN14, converted by group regular only */ +#define LL_ADC_AWD_CHANNEL_14_INJ ((LL_ADC_CHANNEL_14 & ADC_CHANNEL_ID_MASK) | ADC_CR1_JAWDEN | ADC_CR1_AWDSGL) /*!< ADC analog watchdog monitoring of ADC external channel (channel connected to GPIO pin) ADCx_IN14, converted by group injected only */ +#define LL_ADC_AWD_CHANNEL_14_REG_INJ ((LL_ADC_CHANNEL_14 & ADC_CHANNEL_ID_MASK) | ADC_CR1_JAWDEN | ADC_CR1_AWDEN | ADC_CR1_AWDSGL) /*!< ADC analog watchdog monitoring of ADC external channel (channel connected to GPIO pin) ADCx_IN14, converted by either group regular or injected */ +#define LL_ADC_AWD_CHANNEL_15_REG ((LL_ADC_CHANNEL_15 & ADC_CHANNEL_ID_MASK) | ADC_CR1_AWDEN | ADC_CR1_AWDSGL) /*!< ADC analog watchdog monitoring of ADC external channel (channel connected to GPIO pin) ADCx_IN15, converted by group regular only */ +#define LL_ADC_AWD_CHANNEL_15_INJ ((LL_ADC_CHANNEL_15 & ADC_CHANNEL_ID_MASK) | ADC_CR1_JAWDEN | ADC_CR1_AWDSGL) /*!< ADC analog watchdog monitoring of ADC external channel (channel connected to GPIO pin) ADCx_IN15, converted by group injected only */ +#define LL_ADC_AWD_CHANNEL_15_REG_INJ ((LL_ADC_CHANNEL_15 & ADC_CHANNEL_ID_MASK) | ADC_CR1_JAWDEN | ADC_CR1_AWDEN | ADC_CR1_AWDSGL) /*!< ADC analog watchdog monitoring of ADC external channel (channel connected to GPIO pin) ADCx_IN15, converted by either group regular or injected */ +#define LL_ADC_AWD_CHANNEL_16_REG ((LL_ADC_CHANNEL_16 & ADC_CHANNEL_ID_MASK) | ADC_CR1_AWDEN | ADC_CR1_AWDSGL) /*!< ADC analog watchdog monitoring of ADC external channel (channel connected to GPIO pin) ADCx_IN16, converted by group regular only */ +#define LL_ADC_AWD_CHANNEL_16_INJ ((LL_ADC_CHANNEL_16 & ADC_CHANNEL_ID_MASK) | ADC_CR1_JAWDEN | ADC_CR1_AWDSGL) /*!< ADC analog watchdog monitoring of ADC external channel (channel connected to GPIO pin) ADCx_IN16, converted by group injected only */ +#define LL_ADC_AWD_CHANNEL_16_REG_INJ ((LL_ADC_CHANNEL_16 & ADC_CHANNEL_ID_MASK) | ADC_CR1_JAWDEN | ADC_CR1_AWDEN | ADC_CR1_AWDSGL) /*!< ADC analog watchdog monitoring of ADC external channel (channel connected to GPIO pin) ADCx_IN16, converted by either group regular or injected */ +#define LL_ADC_AWD_CHANNEL_17_REG ((LL_ADC_CHANNEL_17 & ADC_CHANNEL_ID_MASK) | ADC_CR1_AWDEN | ADC_CR1_AWDSGL) /*!< ADC analog watchdog monitoring of ADC external channel (channel connected to GPIO pin) ADCx_IN17, converted by group regular only */ +#define LL_ADC_AWD_CHANNEL_17_INJ ((LL_ADC_CHANNEL_17 & ADC_CHANNEL_ID_MASK) | ADC_CR1_JAWDEN | ADC_CR1_AWDSGL) /*!< ADC analog watchdog monitoring of ADC external channel (channel connected to GPIO pin) ADCx_IN17, converted by group injected only */ +#define LL_ADC_AWD_CHANNEL_17_REG_INJ ((LL_ADC_CHANNEL_17 & ADC_CHANNEL_ID_MASK) | ADC_CR1_JAWDEN | ADC_CR1_AWDEN | ADC_CR1_AWDSGL) /*!< ADC analog watchdog monitoring of ADC external channel (channel connected to GPIO pin) ADCx_IN17, converted by either group regular or injected */ +#define LL_ADC_AWD_CH_VREFINT_REG ((LL_ADC_CHANNEL_VREFINT & ADC_CHANNEL_ID_MASK) | ADC_CR1_AWDEN | ADC_CR1_AWDSGL) /*!< ADC analog watchdog monitoring of ADC internal channel connected to VrefInt: Internal voltage reference, converted by group regular only */ +#define LL_ADC_AWD_CH_VREFINT_INJ ((LL_ADC_CHANNEL_VREFINT & ADC_CHANNEL_ID_MASK) | ADC_CR1_JAWDEN | ADC_CR1_AWDSGL) /*!< ADC analog watchdog monitoring of ADC internal channel connected to VrefInt: Internal voltage reference, converted by group injected only */ +#define LL_ADC_AWD_CH_VREFINT_REG_INJ ((LL_ADC_CHANNEL_VREFINT & ADC_CHANNEL_ID_MASK) | ADC_CR1_JAWDEN | ADC_CR1_AWDEN | ADC_CR1_AWDSGL) /*!< ADC analog watchdog monitoring of ADC internal channel connected to VrefInt: Internal voltage reference, converted by either group regular or injected */ +#define LL_ADC_AWD_CH_TEMPSENSOR_REG ((LL_ADC_CHANNEL_TEMPSENSOR & ADC_CHANNEL_ID_MASK) | ADC_CR1_AWDEN | ADC_CR1_AWDSGL) /*!< ADC analog watchdog monitoring of ADC internal channel connected to Temperature sensor, converted by group regular only */ +#define LL_ADC_AWD_CH_TEMPSENSOR_INJ ((LL_ADC_CHANNEL_TEMPSENSOR & ADC_CHANNEL_ID_MASK) | ADC_CR1_JAWDEN | ADC_CR1_AWDSGL) /*!< ADC analog watchdog monitoring of ADC internal channel connected to Temperature sensor, converted by group injected only */ +#define LL_ADC_AWD_CH_TEMPSENSOR_REG_INJ ((LL_ADC_CHANNEL_TEMPSENSOR & ADC_CHANNEL_ID_MASK) | ADC_CR1_JAWDEN | ADC_CR1_AWDEN | ADC_CR1_AWDSGL) /*!< ADC analog watchdog monitoring of ADC internal channel connected to Temperature sensor, converted by either group regular or injected */ +/** + * @} + */ + +/** @defgroup ADC_LL_EC_AWD_THRESHOLDS Analog watchdog - Thresholds + * @{ + */ +#define LL_ADC_AWD_THRESHOLD_HIGH (ADC_AWD_TR1_HIGH_REGOFFSET) /*!< ADC analog watchdog threshold high */ +#define LL_ADC_AWD_THRESHOLD_LOW (ADC_AWD_TR1_LOW_REGOFFSET) /*!< ADC analog watchdog threshold low */ +/** + * @} + */ + +#if !defined(ADC_MULTIMODE_SUPPORT) +/** @defgroup ADC_LL_EC_MULTI_MODE Multimode - Mode + * @{ + */ +#define LL_ADC_MULTI_INDEPENDENT 0x00000000U /*!< ADC dual mode disabled (ADC independent mode) */ +/** + * @} + */ +#endif +#if defined(ADC_MULTIMODE_SUPPORT) +/** @defgroup ADC_LL_EC_MULTI_MODE Multimode - Mode + * @{ + */ +#define LL_ADC_MULTI_INDEPENDENT 0x00000000U /*!< ADC dual mode disabled (ADC independent mode) */ +#define LL_ADC_MULTI_DUAL_REG_SIMULT ( ADC_CR1_DUALMOD_2 | ADC_CR1_DUALMOD_1 ) /*!< ADC dual mode enabled: group regular simultaneous */ +#define LL_ADC_MULTI_DUAL_REG_INTERL_FAST ( ADC_CR1_DUALMOD_2 | ADC_CR1_DUALMOD_1 | ADC_CR1_DUALMOD_0) /*!< ADC dual mode enabled: Combined group regular interleaved fast (delay between ADC sampling phases: 7 ADC clock cycles) (equivalent to multimode sampling delay set to "LL_ADC_MULTI_TWOSMP_DELAY_7CYCLES" on other STM32 devices)) */ +#define LL_ADC_MULTI_DUAL_REG_INTERL_SLOW (ADC_CR1_DUALMOD_3 ) /*!< ADC dual mode enabled: Combined group regular interleaved slow (delay between ADC sampling phases: 14 ADC clock cycles) (equivalent to multimode sampling delay set to "LL_ADC_MULTI_TWOSMP_DELAY_14CYCLES" on other STM32 devices)) */ +#define LL_ADC_MULTI_DUAL_INJ_SIMULT ( ADC_CR1_DUALMOD_2 | ADC_CR1_DUALMOD_0) /*!< ADC dual mode enabled: group injected simultaneous slow (delay between ADC sampling phases: 14 ADC clock cycles) (equivalent to multimode sampling delay set to "LL_ADC_MULTI_TWOSMP_DELAY_14CYCLES" on other STM32 devices)) */ +#define LL_ADC_MULTI_DUAL_INJ_ALTERN (ADC_CR1_DUALMOD_3 | ADC_CR1_DUALMOD_0) /*!< ADC dual mode enabled: group injected alternate trigger. Works only with external triggers (not internal SW start) */ +#define LL_ADC_MULTI_DUAL_REG_SIM_INJ_SIM ( ADC_CR1_DUALMOD_0) /*!< ADC dual mode enabled: Combined group regular simultaneous + group injected simultaneous */ +#define LL_ADC_MULTI_DUAL_REG_SIM_INJ_ALT ( ADC_CR1_DUALMOD_1 ) /*!< ADC dual mode enabled: Combined group regular simultaneous + group injected alternate trigger */ +#define LL_ADC_MULTI_DUAL_REG_INTFAST_INJ_SIM ( ADC_CR1_DUALMOD_1 | ADC_CR1_DUALMOD_0) /*!< ADC dual mode enabled: Combined group regular interleaved fast (delay between ADC sampling phases: 7 ADC clock cycles) + group injected simultaneous */ +#define LL_ADC_MULTI_DUAL_REG_INTSLOW_INJ_SIM ( ADC_CR1_DUALMOD_2 ) /*!< ADC dual mode enabled: Combined group regular interleaved slow (delay between ADC sampling phases: 14 ADC clock cycles) + group injected simultaneous */ + +/** + * @} + */ + +/** @defgroup ADC_LL_EC_MULTI_MASTER_SLAVE Multimode - ADC master or slave + * @{ + */ +#define LL_ADC_MULTI_MASTER ( ADC_DR_DATA) /*!< In multimode, selection among several ADC instances: ADC master */ +#define LL_ADC_MULTI_SLAVE (ADC_DR_ADC2DATA ) /*!< In multimode, selection among several ADC instances: ADC slave */ +#define LL_ADC_MULTI_MASTER_SLAVE (ADC_DR_ADC2DATA | ADC_DR_DATA) /*!< In multimode, selection among several ADC instances: both ADC master and ADC slave */ +/** + * @} + */ + +#endif /* ADC_MULTIMODE_SUPPORT */ + + +/** @defgroup ADC_LL_EC_HW_DELAYS Definitions of ADC hardware constraints delays + * @note Only ADC IP HW delays are defined in ADC LL driver driver, + * not timeout values. + * For details on delays values, refer to descriptions in source code + * above each literal definition. + * @{ + */ + +/* Note: Only ADC IP HW delays are defined in ADC LL driver driver, */ +/* not timeout values. */ +/* Timeout values for ADC operations are dependent to device clock */ +/* configuration (system clock versus ADC clock), */ +/* and therefore must be defined in user application. */ +/* Indications for estimation of ADC timeout delays, for this */ +/* STM32 serie: */ +/* - ADC enable time: maximum delay is 1us */ +/* (refer to device datasheet, parameter "tSTAB") */ +/* - ADC conversion time: duration depending on ADC clock and ADC */ +/* configuration. */ +/* (refer to device reference manual, section "Timing") */ + +/* Delay for temperature sensor stabilization time. */ +/* Literal set to maximum value (refer to device datasheet, */ +/* parameter "tSTART"). */ +/* Unit: us */ +#define LL_ADC_DELAY_TEMPSENSOR_STAB_US (10U) /*!< Delay for internal voltage reference stabilization time */ + +/* Delay required between ADC disable and ADC calibration start. */ +/* Note: On this STM32 serie, before starting a calibration, */ +/* ADC must be disabled. */ +/* A minimum number of ADC clock cycles are required */ +/* between ADC disable state and calibration start. */ +/* Refer to literal @ref LL_ADC_DELAY_ENABLE_CALIB_ADC_CYCLES. */ +/* Wait time can be computed in user application by waiting for the */ +/* equivalent number of CPU cycles, by taking into account */ +/* ratio of CPU clock versus ADC clock prescalers. */ +/* Unit: ADC clock cycles. */ +#define LL_ADC_DELAY_DISABLE_CALIB_ADC_CYCLES (2U) /*!< Delay required between ADC disable and ADC calibration start */ + +/* Delay required between end of ADC Enable and the start of ADC calibration. */ +/* Note: On this STM32 serie, a minimum number of ADC clock cycles */ +/* are required between the end of ADC enable and the start of ADC */ +/* calibration. */ +/* Wait time can be computed in user application by waiting for the */ +/* equivalent number of CPU cycles, by taking into account */ +/* ratio of CPU clock versus ADC clock prescalers. */ +/* Unit: ADC clock cycles. */ +#define LL_ADC_DELAY_ENABLE_CALIB_ADC_CYCLES (2U) /*!< Delay required between end of ADC enable and the start of ADC calibration */ + +/** + * @} + */ + +/** + * @} + */ + + +/* Exported macro ------------------------------------------------------------*/ +/** @defgroup ADC_LL_Exported_Macros ADC Exported Macros + * @{ + */ + +/** @defgroup ADC_LL_EM_WRITE_READ Common write and read registers Macros + * @{ + */ + +/** + * @brief Write a value in ADC register + * @param __INSTANCE__ ADC Instance + * @param __REG__ Register to be written + * @param __VALUE__ Value to be written in the register + * @retval None + */ +#define LL_ADC_WriteReg(__INSTANCE__, __REG__, __VALUE__) WRITE_REG(__INSTANCE__->__REG__, (__VALUE__)) + +/** + * @brief Read a value in ADC register + * @param __INSTANCE__ ADC Instance + * @param __REG__ Register to be read + * @retval Register value + */ +#define LL_ADC_ReadReg(__INSTANCE__, __REG__) READ_REG(__INSTANCE__->__REG__) +/** + * @} + */ + +/** @defgroup ADC_LL_EM_HELPER_MACRO ADC helper macro + * @{ + */ + +/** + * @brief Helper macro to get ADC channel number in decimal format + * from literals LL_ADC_CHANNEL_x. + * @note Example: + * __LL_ADC_CHANNEL_TO_DECIMAL_NB(LL_ADC_CHANNEL_4) + * will return decimal number "4". + * @note The input can be a value from functions where a channel + * number is returned, either defined with number + * or with bitfield (only one bit must be set). + * @param __CHANNEL__ This parameter can be one of the following values: + * @arg @ref LL_ADC_CHANNEL_0 + * @arg @ref LL_ADC_CHANNEL_1 + * @arg @ref LL_ADC_CHANNEL_2 + * @arg @ref LL_ADC_CHANNEL_3 + * @arg @ref LL_ADC_CHANNEL_4 + * @arg @ref LL_ADC_CHANNEL_5 + * @arg @ref LL_ADC_CHANNEL_6 + * @arg @ref LL_ADC_CHANNEL_7 + * @arg @ref LL_ADC_CHANNEL_8 + * @arg @ref LL_ADC_CHANNEL_9 + * @arg @ref LL_ADC_CHANNEL_10 + * @arg @ref LL_ADC_CHANNEL_11 + * @arg @ref LL_ADC_CHANNEL_12 + * @arg @ref LL_ADC_CHANNEL_13 + * @arg @ref LL_ADC_CHANNEL_14 + * @arg @ref LL_ADC_CHANNEL_15 + * @arg @ref LL_ADC_CHANNEL_16 + * @arg @ref LL_ADC_CHANNEL_17 + * @arg @ref LL_ADC_CHANNEL_VREFINT (1) + * @arg @ref LL_ADC_CHANNEL_TEMPSENSOR (1) + * + * (1) On STM32F1, parameter available only on ADC instance: ADC1. + * @retval Value between Min_Data=0 and Max_Data=18 + */ +#define __LL_ADC_CHANNEL_TO_DECIMAL_NB(__CHANNEL__) \ + (((__CHANNEL__) & ADC_CHANNEL_ID_NUMBER_MASK) >> ADC_CHANNEL_ID_NUMBER_BITOFFSET_POS) + +/** + * @brief Helper macro to get ADC channel in literal format LL_ADC_CHANNEL_x + * from number in decimal format. + * @note Example: + * __LL_ADC_DECIMAL_NB_TO_CHANNEL(4) + * will return a data equivalent to "LL_ADC_CHANNEL_4". + * @param __DECIMAL_NB__: Value between Min_Data=0 and Max_Data=18 + * @retval Returned value can be one of the following values: + * @arg @ref LL_ADC_CHANNEL_0 + * @arg @ref LL_ADC_CHANNEL_1 + * @arg @ref LL_ADC_CHANNEL_2 + * @arg @ref LL_ADC_CHANNEL_3 + * @arg @ref LL_ADC_CHANNEL_4 + * @arg @ref LL_ADC_CHANNEL_5 + * @arg @ref LL_ADC_CHANNEL_6 + * @arg @ref LL_ADC_CHANNEL_7 + * @arg @ref LL_ADC_CHANNEL_8 + * @arg @ref LL_ADC_CHANNEL_9 + * @arg @ref LL_ADC_CHANNEL_10 + * @arg @ref LL_ADC_CHANNEL_11 + * @arg @ref LL_ADC_CHANNEL_12 + * @arg @ref LL_ADC_CHANNEL_13 + * @arg @ref LL_ADC_CHANNEL_14 + * @arg @ref LL_ADC_CHANNEL_15 + * @arg @ref LL_ADC_CHANNEL_16 + * @arg @ref LL_ADC_CHANNEL_17 + * @arg @ref LL_ADC_CHANNEL_VREFINT (1) + * @arg @ref LL_ADC_CHANNEL_TEMPSENSOR (1) + * + * (1) On STM32F1, parameter available only on ADC instance: ADC1.\n + * (1) For ADC channel read back from ADC register, + * comparison with internal channel parameter to be done + * using helper macro @ref __LL_ADC_CHANNEL_INTERNAL_TO_EXTERNAL(). + */ +#define __LL_ADC_DECIMAL_NB_TO_CHANNEL(__DECIMAL_NB__) \ + (((__DECIMAL_NB__) <= 9U) \ + ? ( \ + ((__DECIMAL_NB__) << ADC_CHANNEL_ID_NUMBER_BITOFFSET_POS) | \ + (ADC_SMPR2_REGOFFSET | (((uint32_t) (3U * (__DECIMAL_NB__))) << ADC_CHANNEL_SMPx_BITOFFSET_POS)) \ + ) \ + : \ + ( \ + ((__DECIMAL_NB__) << ADC_CHANNEL_ID_NUMBER_BITOFFSET_POS) | \ + (ADC_SMPR1_REGOFFSET | (((uint32_t) (3U * ((__DECIMAL_NB__) - 10U))) << ADC_CHANNEL_SMPx_BITOFFSET_POS)) \ + ) \ + ) + +/** + * @brief Helper macro to determine whether the selected channel + * corresponds to literal definitions of driver. + * @note The different literal definitions of ADC channels are: + * - ADC internal channel: + * LL_ADC_CHANNEL_VREFINT, LL_ADC_CHANNEL_TEMPSENSOR, ... + * - ADC external channel (channel connected to a GPIO pin): + * LL_ADC_CHANNEL_1, LL_ADC_CHANNEL_2, ... + * @note The channel parameter must be a value defined from literal + * definition of a ADC internal channel (LL_ADC_CHANNEL_VREFINT, + * LL_ADC_CHANNEL_TEMPSENSOR, ...), + * ADC external channel (LL_ADC_CHANNEL_1, LL_ADC_CHANNEL_2, ...), + * must not be a value from functions where a channel number is + * returned from ADC registers, + * because internal and external channels share the same channel + * number in ADC registers. The differentiation is made only with + * parameters definitions of driver. + * @param __CHANNEL__ This parameter can be one of the following values: + * @arg @ref LL_ADC_CHANNEL_0 + * @arg @ref LL_ADC_CHANNEL_1 + * @arg @ref LL_ADC_CHANNEL_2 + * @arg @ref LL_ADC_CHANNEL_3 + * @arg @ref LL_ADC_CHANNEL_4 + * @arg @ref LL_ADC_CHANNEL_5 + * @arg @ref LL_ADC_CHANNEL_6 + * @arg @ref LL_ADC_CHANNEL_7 + * @arg @ref LL_ADC_CHANNEL_8 + * @arg @ref LL_ADC_CHANNEL_9 + * @arg @ref LL_ADC_CHANNEL_10 + * @arg @ref LL_ADC_CHANNEL_11 + * @arg @ref LL_ADC_CHANNEL_12 + * @arg @ref LL_ADC_CHANNEL_13 + * @arg @ref LL_ADC_CHANNEL_14 + * @arg @ref LL_ADC_CHANNEL_15 + * @arg @ref LL_ADC_CHANNEL_16 + * @arg @ref LL_ADC_CHANNEL_17 + * @arg @ref LL_ADC_CHANNEL_VREFINT (1) + * @arg @ref LL_ADC_CHANNEL_TEMPSENSOR (1) + * + * (1) On STM32F1, parameter available only on ADC instance: ADC1. + * @retval Value "0" if the channel corresponds to a parameter definition of a ADC external channel (channel connected to a GPIO pin). + * Value "1" if the channel corresponds to a parameter definition of a ADC internal channel. + */ +#define __LL_ADC_IS_CHANNEL_INTERNAL(__CHANNEL__) \ + (((__CHANNEL__) & ADC_CHANNEL_ID_INTERNAL_CH_MASK) != 0U) + +/** + * @brief Helper macro to convert a channel defined from parameter + * definition of a ADC internal channel (LL_ADC_CHANNEL_VREFINT, + * LL_ADC_CHANNEL_TEMPSENSOR, ...), + * to its equivalent parameter definition of a ADC external channel + * (LL_ADC_CHANNEL_1, LL_ADC_CHANNEL_2, ...). + * @note The channel parameter can be, additionally to a value + * defined from parameter definition of a ADC internal channel + * (LL_ADC_CHANNEL_VREFINT, LL_ADC_CHANNEL_TEMPSENSOR, ...), + * a value defined from parameter definition of + * ADC external channel (LL_ADC_CHANNEL_1, LL_ADC_CHANNEL_2, ...) + * or a value from functions where a channel number is returned + * from ADC registers. + * @param __CHANNEL__ This parameter can be one of the following values: + * @arg @ref LL_ADC_CHANNEL_0 + * @arg @ref LL_ADC_CHANNEL_1 + * @arg @ref LL_ADC_CHANNEL_2 + * @arg @ref LL_ADC_CHANNEL_3 + * @arg @ref LL_ADC_CHANNEL_4 + * @arg @ref LL_ADC_CHANNEL_5 + * @arg @ref LL_ADC_CHANNEL_6 + * @arg @ref LL_ADC_CHANNEL_7 + * @arg @ref LL_ADC_CHANNEL_8 + * @arg @ref LL_ADC_CHANNEL_9 + * @arg @ref LL_ADC_CHANNEL_10 + * @arg @ref LL_ADC_CHANNEL_11 + * @arg @ref LL_ADC_CHANNEL_12 + * @arg @ref LL_ADC_CHANNEL_13 + * @arg @ref LL_ADC_CHANNEL_14 + * @arg @ref LL_ADC_CHANNEL_15 + * @arg @ref LL_ADC_CHANNEL_16 + * @arg @ref LL_ADC_CHANNEL_17 + * @arg @ref LL_ADC_CHANNEL_VREFINT (1) + * @arg @ref LL_ADC_CHANNEL_TEMPSENSOR (1) + * + * (1) On STM32F1, parameter available only on ADC instance: ADC1. + * @retval Returned value can be one of the following values: + * @arg @ref LL_ADC_CHANNEL_0 + * @arg @ref LL_ADC_CHANNEL_1 + * @arg @ref LL_ADC_CHANNEL_2 + * @arg @ref LL_ADC_CHANNEL_3 + * @arg @ref LL_ADC_CHANNEL_4 + * @arg @ref LL_ADC_CHANNEL_5 + * @arg @ref LL_ADC_CHANNEL_6 + * @arg @ref LL_ADC_CHANNEL_7 + * @arg @ref LL_ADC_CHANNEL_8 + * @arg @ref LL_ADC_CHANNEL_9 + * @arg @ref LL_ADC_CHANNEL_10 + * @arg @ref LL_ADC_CHANNEL_11 + * @arg @ref LL_ADC_CHANNEL_12 + * @arg @ref LL_ADC_CHANNEL_13 + * @arg @ref LL_ADC_CHANNEL_14 + * @arg @ref LL_ADC_CHANNEL_15 + * @arg @ref LL_ADC_CHANNEL_16 + * @arg @ref LL_ADC_CHANNEL_17 + */ +#define __LL_ADC_CHANNEL_INTERNAL_TO_EXTERNAL(__CHANNEL__) \ + ((__CHANNEL__) & ~ADC_CHANNEL_ID_INTERNAL_CH_MASK) + +/** + * @brief Helper macro to determine whether the internal channel + * selected is available on the ADC instance selected. + * @note The channel parameter must be a value defined from parameter + * definition of a ADC internal channel (LL_ADC_CHANNEL_VREFINT, + * LL_ADC_CHANNEL_TEMPSENSOR, ...), + * must not be a value defined from parameter definition of + * ADC external channel (LL_ADC_CHANNEL_1, LL_ADC_CHANNEL_2, ...) + * or a value from functions where a channel number is + * returned from ADC registers, + * because internal and external channels share the same channel + * number in ADC registers. The differentiation is made only with + * parameters definitions of driver. + * @param __ADC_INSTANCE__ ADC instance + * @param __CHANNEL__ This parameter can be one of the following values: + * @arg @ref LL_ADC_CHANNEL_VREFINT (1) + * @arg @ref LL_ADC_CHANNEL_TEMPSENSOR (1) + * + * (1) On STM32F1, parameter available only on ADC instance: ADC1. + * @retval Value "0" if the internal channel selected is not available on the ADC instance selected. + * Value "1" if the internal channel selected is available on the ADC instance selected. + */ +#define __LL_ADC_IS_CHANNEL_INTERNAL_AVAILABLE(__ADC_INSTANCE__, __CHANNEL__) \ + (((__ADC_INSTANCE__) == ADC1) \ + ? ( \ + ((__CHANNEL__) == LL_ADC_CHANNEL_VREFINT) || \ + ((__CHANNEL__) == LL_ADC_CHANNEL_TEMPSENSOR) \ + ) \ + : \ + (0U) \ + ) + +/** + * @brief Helper macro to define ADC analog watchdog parameter: + * define a single channel to monitor with analog watchdog + * from sequencer channel and groups definition. + * @note To be used with function @ref LL_ADC_SetAnalogWDMonitChannels(). + * Example: + * LL_ADC_SetAnalogWDMonitChannels( + * ADC1, LL_ADC_AWD1, + * __LL_ADC_ANALOGWD_CHANNEL_GROUP(LL_ADC_CHANNEL4, LL_ADC_GROUP_REGULAR)) + * @param __CHANNEL__ This parameter can be one of the following values: + * @arg @ref LL_ADC_CHANNEL_0 + * @arg @ref LL_ADC_CHANNEL_1 + * @arg @ref LL_ADC_CHANNEL_2 + * @arg @ref LL_ADC_CHANNEL_3 + * @arg @ref LL_ADC_CHANNEL_4 + * @arg @ref LL_ADC_CHANNEL_5 + * @arg @ref LL_ADC_CHANNEL_6 + * @arg @ref LL_ADC_CHANNEL_7 + * @arg @ref LL_ADC_CHANNEL_8 + * @arg @ref LL_ADC_CHANNEL_9 + * @arg @ref LL_ADC_CHANNEL_10 + * @arg @ref LL_ADC_CHANNEL_11 + * @arg @ref LL_ADC_CHANNEL_12 + * @arg @ref LL_ADC_CHANNEL_13 + * @arg @ref LL_ADC_CHANNEL_14 + * @arg @ref LL_ADC_CHANNEL_15 + * @arg @ref LL_ADC_CHANNEL_16 + * @arg @ref LL_ADC_CHANNEL_17 + * @arg @ref LL_ADC_CHANNEL_VREFINT (1) + * @arg @ref LL_ADC_CHANNEL_TEMPSENSOR (1) + * + * (1) On STM32F1, parameter available only on ADC instance: ADC1.\n + * (1) For ADC channel read back from ADC register, + * comparison with internal channel parameter to be done + * using helper macro @ref __LL_ADC_CHANNEL_INTERNAL_TO_EXTERNAL(). + * @param __GROUP__ This parameter can be one of the following values: + * @arg @ref LL_ADC_GROUP_REGULAR + * @arg @ref LL_ADC_GROUP_INJECTED + * @arg @ref LL_ADC_GROUP_REGULAR_INJECTED + * @retval Returned value can be one of the following values: + * @arg @ref LL_ADC_AWD_DISABLE + * @arg @ref LL_ADC_AWD_ALL_CHANNELS_REG + * @arg @ref LL_ADC_AWD_ALL_CHANNELS_INJ + * @arg @ref LL_ADC_AWD_ALL_CHANNELS_REG_INJ + * @arg @ref LL_ADC_AWD_CHANNEL_0_REG + * @arg @ref LL_ADC_AWD_CHANNEL_0_INJ + * @arg @ref LL_ADC_AWD_CHANNEL_0_REG_INJ + * @arg @ref LL_ADC_AWD_CHANNEL_1_REG + * @arg @ref LL_ADC_AWD_CHANNEL_1_INJ + * @arg @ref LL_ADC_AWD_CHANNEL_1_REG_INJ + * @arg @ref LL_ADC_AWD_CHANNEL_2_REG + * @arg @ref LL_ADC_AWD_CHANNEL_2_INJ + * @arg @ref LL_ADC_AWD_CHANNEL_2_REG_INJ + * @arg @ref LL_ADC_AWD_CHANNEL_3_REG + * @arg @ref LL_ADC_AWD_CHANNEL_3_INJ + * @arg @ref LL_ADC_AWD_CHANNEL_3_REG_INJ + * @arg @ref LL_ADC_AWD_CHANNEL_4_REG + * @arg @ref LL_ADC_AWD_CHANNEL_4_INJ + * @arg @ref LL_ADC_AWD_CHANNEL_4_REG_INJ + * @arg @ref LL_ADC_AWD_CHANNEL_5_REG + * @arg @ref LL_ADC_AWD_CHANNEL_5_INJ + * @arg @ref LL_ADC_AWD_CHANNEL_5_REG_INJ + * @arg @ref LL_ADC_AWD_CHANNEL_6_REG + * @arg @ref LL_ADC_AWD_CHANNEL_6_INJ + * @arg @ref LL_ADC_AWD_CHANNEL_6_REG_INJ + * @arg @ref LL_ADC_AWD_CHANNEL_7_REG + * @arg @ref LL_ADC_AWD_CHANNEL_7_INJ + * @arg @ref LL_ADC_AWD_CHANNEL_7_REG_INJ + * @arg @ref LL_ADC_AWD_CHANNEL_8_REG + * @arg @ref LL_ADC_AWD_CHANNEL_8_INJ + * @arg @ref LL_ADC_AWD_CHANNEL_8_REG_INJ + * @arg @ref LL_ADC_AWD_CHANNEL_9_REG + * @arg @ref LL_ADC_AWD_CHANNEL_9_INJ + * @arg @ref LL_ADC_AWD_CHANNEL_9_REG_INJ + * @arg @ref LL_ADC_AWD_CHANNEL_10_REG + * @arg @ref LL_ADC_AWD_CHANNEL_10_INJ + * @arg @ref LL_ADC_AWD_CHANNEL_10_REG_INJ + * @arg @ref LL_ADC_AWD_CHANNEL_11_REG + * @arg @ref LL_ADC_AWD_CHANNEL_11_INJ + * @arg @ref LL_ADC_AWD_CHANNEL_11_REG_INJ + * @arg @ref LL_ADC_AWD_CHANNEL_12_REG + * @arg @ref LL_ADC_AWD_CHANNEL_12_INJ + * @arg @ref LL_ADC_AWD_CHANNEL_12_REG_INJ + * @arg @ref LL_ADC_AWD_CHANNEL_13_REG + * @arg @ref LL_ADC_AWD_CHANNEL_13_INJ + * @arg @ref LL_ADC_AWD_CHANNEL_13_REG_INJ + * @arg @ref LL_ADC_AWD_CHANNEL_14_REG + * @arg @ref LL_ADC_AWD_CHANNEL_14_INJ + * @arg @ref LL_ADC_AWD_CHANNEL_14_REG_INJ + * @arg @ref LL_ADC_AWD_CHANNEL_15_REG + * @arg @ref LL_ADC_AWD_CHANNEL_15_INJ + * @arg @ref LL_ADC_AWD_CHANNEL_15_REG_INJ + * @arg @ref LL_ADC_AWD_CHANNEL_16_REG + * @arg @ref LL_ADC_AWD_CHANNEL_16_INJ + * @arg @ref LL_ADC_AWD_CHANNEL_16_REG_INJ + * @arg @ref LL_ADC_AWD_CHANNEL_17_REG + * @arg @ref LL_ADC_AWD_CHANNEL_17_INJ + * @arg @ref LL_ADC_AWD_CHANNEL_17_REG_INJ + * @arg @ref LL_ADC_AWD_CH_VREFINT_REG (1) + * @arg @ref LL_ADC_AWD_CH_VREFINT_INJ (1) + * @arg @ref LL_ADC_AWD_CH_VREFINT_REG_INJ (1) + * @arg @ref LL_ADC_AWD_CH_TEMPSENSOR_REG (1) + * @arg @ref LL_ADC_AWD_CH_TEMPSENSOR_INJ (1) + * @arg @ref LL_ADC_AWD_CH_TEMPSENSOR_REG_INJ (1) + * + * (1) On STM32F1, parameter available only on ADC instance: ADC1. + */ +#define __LL_ADC_ANALOGWD_CHANNEL_GROUP(__CHANNEL__, __GROUP__) \ + (((__GROUP__) == LL_ADC_GROUP_REGULAR) \ + ? (((__CHANNEL__) & ADC_CHANNEL_ID_MASK) | ADC_CR1_AWDEN | ADC_CR1_AWDSGL) \ + : \ + ((__GROUP__) == LL_ADC_GROUP_INJECTED) \ + ? (((__CHANNEL__) & ADC_CHANNEL_ID_MASK) | ADC_CR1_JAWDEN | ADC_CR1_AWDSGL) \ + : \ + (((__CHANNEL__) & ADC_CHANNEL_ID_MASK) | ADC_CR1_JAWDEN | ADC_CR1_AWDEN | ADC_CR1_AWDSGL) \ + ) + +/** + * @brief Helper macro to set the value of ADC analog watchdog threshold high + * or low in function of ADC resolution, when ADC resolution is + * different of 12 bits. + * @note To be used with function @ref LL_ADC_SetAnalogWDThresholds(). + * Example, with a ADC resolution of 8 bits, to set the value of + * analog watchdog threshold high (on 8 bits): + * LL_ADC_SetAnalogWDThresholds + * (< ADCx param >, + * __LL_ADC_ANALOGWD_SET_THRESHOLD_RESOLUTION(LL_ADC_RESOLUTION_8B, ) + * ); + * @param __ADC_RESOLUTION__ This parameter can be one of the following values: + * @arg @ref LL_ADC_RESOLUTION_12B + * @param __AWD_THRESHOLD__ Value between Min_Data=0x000 and Max_Data=0xFFF + * @retval Value between Min_Data=0x000 and Max_Data=0xFFF + */ +/* Note: On this STM32 serie, ADC is fixed to resolution 12 bits. */ +/* This macro has been kept anyway for compatibility with other */ +/* STM32 families featuring different ADC resolutions. */ +#define __LL_ADC_ANALOGWD_SET_THRESHOLD_RESOLUTION(__ADC_RESOLUTION__, __AWD_THRESHOLD__) \ + ((__AWD_THRESHOLD__) << (0U)) + +/** + * @brief Helper macro to get the value of ADC analog watchdog threshold high + * or low in function of ADC resolution, when ADC resolution is + * different of 12 bits. + * @note To be used with function @ref LL_ADC_GetAnalogWDThresholds(). + * Example, with a ADC resolution of 8 bits, to get the value of + * analog watchdog threshold high (on 8 bits): + * < threshold_value_6_bits > = __LL_ADC_ANALOGWD_GET_THRESHOLD_RESOLUTION + * (LL_ADC_RESOLUTION_8B, + * LL_ADC_GetAnalogWDThresholds(, LL_ADC_AWD_THRESHOLD_HIGH) + * ); + * @param __ADC_RESOLUTION__ This parameter can be one of the following values: + * @arg @ref LL_ADC_RESOLUTION_12B + * @param __AWD_THRESHOLD_12_BITS__ Value between Min_Data=0x000 and Max_Data=0xFFF + * @retval Value between Min_Data=0x000 and Max_Data=0xFFF + */ +/* Note: On this STM32 serie, ADC is fixed to resolution 12 bits. */ +/* This macro has been kept anyway for compatibility with other */ +/* STM32 families featuring different ADC resolutions. */ +#define __LL_ADC_ANALOGWD_GET_THRESHOLD_RESOLUTION(__ADC_RESOLUTION__, __AWD_THRESHOLD_12_BITS__) \ + (__AWD_THRESHOLD_12_BITS__) + +#if defined(ADC_MULTIMODE_SUPPORT) +/** + * @brief Helper macro to get the ADC multimode conversion data of ADC master + * or ADC slave from raw value with both ADC conversion data concatenated. + * @note This macro is intended to be used when multimode transfer by DMA + * is enabled. + * In this case the transferred data need to processed with this macro + * to separate the conversion data of ADC master and ADC slave. + * @param __ADC_MULTI_MASTER_SLAVE__ This parameter can be one of the following values: + * @arg @ref LL_ADC_MULTI_MASTER + * @arg @ref LL_ADC_MULTI_SLAVE + * @param __ADC_MULTI_CONV_DATA__ Value between Min_Data=0x000 and Max_Data=0xFFF + * @retval Value between Min_Data=0x000 and Max_Data=0xFFF + */ +#define __LL_ADC_MULTI_CONV_DATA_MASTER_SLAVE(__ADC_MULTI_MASTER_SLAVE__, __ADC_MULTI_CONV_DATA__) \ + (((__ADC_MULTI_CONV_DATA__) >> POSITION_VAL((__ADC_MULTI_MASTER_SLAVE__))) & ADC_DR_DATA) +#endif + +/** + * @brief Helper macro to select the ADC common instance + * to which is belonging the selected ADC instance. + * @note ADC common register instance can be used for: + * - Set parameters common to several ADC instances + * - Multimode (for devices with several ADC instances) + * Refer to functions having argument "ADCxy_COMMON" as parameter. + * @note On STM32F1, there is no common ADC instance. + * However, ADC instance ADC1 has a role of common ADC instance + * for ADC1 and ADC2: + * this instance is used to manage internal channels + * and multimode (these features are managed in ADC common + * instances on some other STM32 devices). + * ADC instance ADC3 (if available on the selected device) + * has no ADC common instance. + * @param __ADCx__ ADC instance + * @retval ADC common register instance + */ +#if defined(ADC1) && defined(ADC2) && defined(ADC3) +#define __LL_ADC_COMMON_INSTANCE(__ADCx__) \ + ((((__ADCx__) == ADC1) || ((__ADCx__) == ADC2)) \ + ? ( \ + (ADC12_COMMON) \ + ) \ + : \ + ( \ + (0U) \ + ) \ + ) +#elif defined(ADC1) && defined(ADC2) +#define __LL_ADC_COMMON_INSTANCE(__ADCx__) \ + (ADC12_COMMON) +#else +#define __LL_ADC_COMMON_INSTANCE(__ADCx__) \ + (ADC1_COMMON) +#endif + +/** + * @brief Helper macro to check if all ADC instances sharing the same + * ADC common instance are disabled. + * @note This check is required by functions with setting conditioned to + * ADC state: + * All ADC instances of the ADC common group must be disabled. + * Refer to functions having argument "ADCxy_COMMON" as parameter. + * @note On devices with only 1 ADC common instance, parameter of this macro + * is useless and can be ignored (parameter kept for compatibility + * with devices featuring several ADC common instances). + * @note On STM32F1, there is no common ADC instance. + * However, ADC instance ADC1 has a role of common ADC instance + * for ADC1 and ADC2: + * this instance is used to manage internal channels + * and multimode (these features are managed in ADC common + * instances on some other STM32 devices). + * ADC instance ADC3 (if available on the selected device) + * has no ADC common instance. + * @param __ADCXY_COMMON__ ADC common instance + * (can be set directly from CMSIS definition or by using helper macro @ref __LL_ADC_COMMON_INSTANCE() ) + * @retval Value "0" if all ADC instances sharing the same ADC common instance + * are disabled. + * Value "1" if at least one ADC instance sharing the same ADC common instance + * is enabled. + */ +#if defined(ADC1) && defined(ADC2) && defined(ADC3) +#define __LL_ADC_IS_ENABLED_ALL_COMMON_INSTANCE(__ADCXY_COMMON__) \ + (((__ADCXY_COMMON__) == ADC12_COMMON) \ + ? ( \ + (LL_ADC_IsEnabled(ADC1) | \ + LL_ADC_IsEnabled(ADC2) ) \ + ) \ + : \ + ( \ + LL_ADC_IsEnabled(ADC3) \ + ) \ + ) +#elif defined(ADC1) && defined(ADC2) +#define __LL_ADC_IS_ENABLED_ALL_COMMON_INSTANCE(__ADCXY_COMMON__) \ + (LL_ADC_IsEnabled(ADC1) | \ + LL_ADC_IsEnabled(ADC2) ) +#else +#define __LL_ADC_IS_ENABLED_ALL_COMMON_INSTANCE(__ADCXY_COMMON__) \ + LL_ADC_IsEnabled(ADC1) +#endif + +/** + * @brief Helper macro to define the ADC conversion data full-scale digital + * value corresponding to the selected ADC resolution. + * @note ADC conversion data full-scale corresponds to voltage range + * determined by analog voltage references Vref+ and Vref- + * (refer to reference manual). + * @param __ADC_RESOLUTION__ This parameter can be one of the following values: + * @arg @ref LL_ADC_RESOLUTION_12B + * @retval ADC conversion data equivalent voltage value (unit: mVolt) + */ +#define __LL_ADC_DIGITAL_SCALE(__ADC_RESOLUTION__) \ + (0xFFFU) + + +/** + * @brief Helper macro to calculate the voltage (unit: mVolt) + * corresponding to a ADC conversion data (unit: digital value). + * @note Analog reference voltage (Vref+) must be known from + * user board environment or can be calculated using ADC measurement. + * @param __VREFANALOG_VOLTAGE__ Analog reference voltage (unit: mV) + * @param __ADC_DATA__ ADC conversion data (resolution 12 bits) + * (unit: digital value). + * @param __ADC_RESOLUTION__ This parameter can be one of the following values: + * @arg @ref LL_ADC_RESOLUTION_12B + * @retval ADC conversion data equivalent voltage value (unit: mVolt) + */ +#define __LL_ADC_CALC_DATA_TO_VOLTAGE(__VREFANALOG_VOLTAGE__,\ + __ADC_DATA__,\ + __ADC_RESOLUTION__) \ + ((__ADC_DATA__) * (__VREFANALOG_VOLTAGE__) \ + / __LL_ADC_DIGITAL_SCALE(__ADC_RESOLUTION__) \ + ) + + +/** + * @brief Helper macro to calculate the temperature (unit: degree Celsius) + * from ADC conversion data of internal temperature sensor. + * @note Computation is using temperature sensor typical values + * (refer to device datasheet). + * @note Calculation formula: + * Temperature = (TS_TYP_CALx_VOLT(uV) - TS_ADC_DATA * Conversion_uV) + * / Avg_Slope + CALx_TEMP + * with TS_ADC_DATA = temperature sensor raw data measured by ADC + * (unit: digital value) + * Avg_Slope = temperature sensor slope + * (unit: uV/Degree Celsius) + * TS_TYP_CALx_VOLT = temperature sensor digital value at + * temperature CALx_TEMP (unit: mV) + * Caution: Calculation relevancy under reserve the temperature sensor + * of the current device has characteristics in line with + * datasheet typical values. + * If temperature sensor calibration values are available on + * on this device (presence of macro __LL_ADC_CALC_TEMPERATURE()), + * temperature calculation will be more accurate using + * helper macro @ref __LL_ADC_CALC_TEMPERATURE(). + * @note As calculation input, the analog reference voltage (Vref+) must be + * defined as it impacts the ADC LSB equivalent voltage. + * @note Analog reference voltage (Vref+) must be known from + * user board environment or can be calculated using ADC measurement. + * @note ADC measurement data must correspond to a resolution of 12bits + * (full scale digital value 4095). If not the case, the data must be + * preliminarily rescaled to an equivalent resolution of 12 bits. + * @param __TEMPSENSOR_TYP_AVGSLOPE__ Device datasheet data: Temperature sensor slope typical value (unit: uV/DegCelsius). + * On STM32F1, refer to device datasheet parameter "Avg_Slope". + * @param __TEMPSENSOR_TYP_CALX_V__ Device datasheet data: Temperature sensor voltage typical value (at temperature and Vref+ defined in parameters below) (unit: mV). + * On STM32F1, refer to device datasheet parameter "V25". + * @param __TEMPSENSOR_CALX_TEMP__ Device datasheet data: Temperature at which temperature sensor voltage (see parameter above) is corresponding (unit: mV) + * @param __VREFANALOG_VOLTAGE__ Analog voltage reference (Vref+) voltage (unit: mV) + * @param __TEMPSENSOR_ADC_DATA__ ADC conversion data of internal temperature sensor (unit: digital value). + * @param __ADC_RESOLUTION__ ADC resolution at which internal temperature sensor voltage has been measured. + * This parameter can be one of the following values: + * @arg @ref LL_ADC_RESOLUTION_12B + * @retval Temperature (unit: degree Celsius) + */ +#define __LL_ADC_CALC_TEMPERATURE_TYP_PARAMS(__TEMPSENSOR_TYP_AVGSLOPE__,\ + __TEMPSENSOR_TYP_CALX_V__,\ + __TEMPSENSOR_CALX_TEMP__,\ + __VREFANALOG_VOLTAGE__,\ + __TEMPSENSOR_ADC_DATA__,\ + __ADC_RESOLUTION__) \ + ((( ( \ + (int32_t)(((__TEMPSENSOR_TYP_CALX_V__)) \ + * 1000) \ + - \ + (int32_t)((((__TEMPSENSOR_ADC_DATA__) * (__VREFANALOG_VOLTAGE__)) \ + / __LL_ADC_DIGITAL_SCALE(__ADC_RESOLUTION__)) \ + * 1000) \ + ) \ + ) / (__TEMPSENSOR_TYP_AVGSLOPE__) \ + ) + (__TEMPSENSOR_CALX_TEMP__) \ + ) + +/** + * @} + */ + +/** + * @} + */ + + +/* Exported functions --------------------------------------------------------*/ +/** @defgroup ADC_LL_Exported_Functions ADC Exported Functions + * @{ + */ + +/** @defgroup ADC_LL_EF_DMA_Management ADC DMA management + * @{ + */ +/* Note: LL ADC functions to set DMA transfer are located into sections of */ +/* configuration of ADC instance, groups and multimode (if available): */ +/* @ref LL_ADC_REG_SetDMATransfer(), ... */ + +/** + * @brief Function to help to configure DMA transfer from ADC: retrieve the + * ADC register address from ADC instance and a list of ADC registers + * intended to be used (most commonly) with DMA transfer. + * @note These ADC registers are data registers: + * when ADC conversion data is available in ADC data registers, + * ADC generates a DMA transfer request. + * @note This macro is intended to be used with LL DMA driver, refer to + * function "LL_DMA_ConfigAddresses()". + * Example: + * LL_DMA_ConfigAddresses(DMA1, + * LL_DMA_CHANNEL_1, + * LL_ADC_DMA_GetRegAddr(ADC1, LL_ADC_DMA_REG_REGULAR_DATA), + * (uint32_t)&< array or variable >, + * LL_DMA_DIRECTION_PERIPH_TO_MEMORY); + * @note For devices with several ADC: in multimode, some devices + * use a different data register outside of ADC instance scope + * (common data register). This macro manages this register difference, + * only ADC instance has to be set as parameter. + * @note On STM32F1, only ADC instances ADC1 and ADC3 have DMA transfer + * capability, not ADC2 (ADC2 and ADC3 instances not available on + * all devices). + * @note On STM32F1, multimode can be used only with ADC1 and ADC2, not ADC3. + * Therefore, the corresponding parameter of data transfer + * for multimode can be used only with ADC1 and ADC2. + * (ADC2 and ADC3 instances not available on all devices). + * @rmtoll DR DATA LL_ADC_DMA_GetRegAddr + * @param ADCx ADC instance + * @param Register This parameter can be one of the following values: + * @arg @ref LL_ADC_DMA_REG_REGULAR_DATA + * @arg @ref LL_ADC_DMA_REG_REGULAR_DATA_MULTI (1) + * + * (1) Available on devices with several ADC instances. + * @retval ADC register address + */ +#if defined(ADC_MULTIMODE_SUPPORT) +__STATIC_INLINE uint32_t LL_ADC_DMA_GetRegAddr(ADC_TypeDef *ADCx, uint32_t Register) +{ + register uint32_t data_reg_addr = 0U; + + if (Register == LL_ADC_DMA_REG_REGULAR_DATA) + { + /* Retrieve address of register DR */ + data_reg_addr = (uint32_t)&(ADCx->DR); + } + else /* (Register == LL_ADC_DMA_REG_REGULAR_DATA_MULTI) */ + { + /* Retrieve address of register of multimode data */ + data_reg_addr = (uint32_t)&(ADC12_COMMON->DR); + } + + return data_reg_addr; +} +#else +__STATIC_INLINE uint32_t LL_ADC_DMA_GetRegAddr(ADC_TypeDef *ADCx, uint32_t Register) +{ + /* Retrieve address of register DR */ + return (uint32_t)&(ADCx->DR); +} +#endif + +/** + * @} + */ + +/** @defgroup ADC_LL_EF_Configuration_ADC_Common Configuration of ADC hierarchical scope: common to several ADC instances + * @{ + */ + +/** + * @brief Set parameter common to several ADC: measurement path to internal + * channels (VrefInt, temperature sensor, ...). + * @note One or several values can be selected. + * Example: (LL_ADC_PATH_INTERNAL_VREFINT | + * LL_ADC_PATH_INTERNAL_TEMPSENSOR) + * @note Stabilization time of measurement path to internal channel: + * After enabling internal paths, before starting ADC conversion, + * a delay is required for internal voltage reference and + * temperature sensor stabilization time. + * Refer to device datasheet. + * Refer to literal @ref LL_ADC_DELAY_TEMPSENSOR_STAB_US. + * @note ADC internal channel sampling time constraint: + * For ADC conversion of internal channels, + * a sampling time minimum value is required. + * Refer to device datasheet. + * @rmtoll CR2 TSVREFE LL_ADC_SetCommonPathInternalCh + * @param ADCxy_COMMON ADC common instance + * (can be set directly from CMSIS definition or by using helper macro @ref __LL_ADC_COMMON_INSTANCE() ) + * @param PathInternal This parameter can be a combination of the following values: + * @arg @ref LL_ADC_PATH_INTERNAL_NONE + * @arg @ref LL_ADC_PATH_INTERNAL_VREFINT + * @arg @ref LL_ADC_PATH_INTERNAL_TEMPSENSOR + * @retval None + */ +__STATIC_INLINE void LL_ADC_SetCommonPathInternalCh(ADC_Common_TypeDef *ADCxy_COMMON, uint32_t PathInternal) +{ + MODIFY_REG(ADCxy_COMMON->CR2, (ADC_CR2_TSVREFE), PathInternal); +} + +/** + * @brief Get parameter common to several ADC: measurement path to internal + * channels (VrefInt, temperature sensor, ...). + * @note One or several values can be selected. + * Example: (LL_ADC_PATH_INTERNAL_VREFINT | + * LL_ADC_PATH_INTERNAL_TEMPSENSOR) + * @rmtoll CR2 TSVREFE LL_ADC_GetCommonPathInternalCh + * @param ADCxy_COMMON ADC common instance + * (can be set directly from CMSIS definition or by using helper macro @ref __LL_ADC_COMMON_INSTANCE() ) + * @retval Returned value can be a combination of the following values: + * @arg @ref LL_ADC_PATH_INTERNAL_NONE + * @arg @ref LL_ADC_PATH_INTERNAL_VREFINT + * @arg @ref LL_ADC_PATH_INTERNAL_TEMPSENSOR + */ +__STATIC_INLINE uint32_t LL_ADC_GetCommonPathInternalCh(ADC_Common_TypeDef *ADCxy_COMMON) +{ + return (uint32_t)(READ_BIT(ADCxy_COMMON->CR2, ADC_CR2_TSVREFE)); +} + +/** + * @} + */ + +/** @defgroup ADC_LL_EF_Configuration_ADC_Instance Configuration of ADC hierarchical scope: ADC instance + * @{ + */ + +/** + * @brief Set ADC conversion data alignment. + * @note Refer to reference manual for alignments formats + * dependencies to ADC resolutions. + * @rmtoll CR2 ALIGN LL_ADC_SetDataAlignment + * @param ADCx ADC instance + * @param DataAlignment This parameter can be one of the following values: + * @arg @ref LL_ADC_DATA_ALIGN_RIGHT + * @arg @ref LL_ADC_DATA_ALIGN_LEFT + * @retval None + */ +__STATIC_INLINE void LL_ADC_SetDataAlignment(ADC_TypeDef *ADCx, uint32_t DataAlignment) +{ + MODIFY_REG(ADCx->CR2, ADC_CR2_ALIGN, DataAlignment); +} + +/** + * @brief Get ADC conversion data alignment. + * @note Refer to reference manual for alignments formats + * dependencies to ADC resolutions. + * @rmtoll CR2 ALIGN LL_ADC_SetDataAlignment + * @param ADCx ADC instance + * @retval Returned value can be one of the following values: + * @arg @ref LL_ADC_DATA_ALIGN_RIGHT + * @arg @ref LL_ADC_DATA_ALIGN_LEFT + */ +__STATIC_INLINE uint32_t LL_ADC_GetDataAlignment(ADC_TypeDef *ADCx) +{ + return (uint32_t)(READ_BIT(ADCx->CR2, ADC_CR2_ALIGN)); +} + +/** + * @brief Set ADC sequencers scan mode, for all ADC groups + * (group regular, group injected). + * @note According to sequencers scan mode : + * - If disabled: ADC conversion is performed in unitary conversion + * mode (one channel converted, that defined in rank 1). + * Configuration of sequencers of all ADC groups + * (sequencer scan length, ...) is discarded: equivalent to + * scan length of 1 rank. + * - If enabled: ADC conversions are performed in sequence conversions + * mode, according to configuration of sequencers of + * each ADC group (sequencer scan length, ...). + * Refer to function @ref LL_ADC_REG_SetSequencerLength() + * and to function @ref LL_ADC_INJ_SetSequencerLength(). + * @rmtoll CR1 SCAN LL_ADC_SetSequencersScanMode + * @param ADCx ADC instance + * @param ScanMode This parameter can be one of the following values: + * @arg @ref LL_ADC_SEQ_SCAN_DISABLE + * @arg @ref LL_ADC_SEQ_SCAN_ENABLE + * @retval None + */ +__STATIC_INLINE void LL_ADC_SetSequencersScanMode(ADC_TypeDef *ADCx, uint32_t ScanMode) +{ + MODIFY_REG(ADCx->CR1, ADC_CR1_SCAN, ScanMode); +} + +/** + * @brief Get ADC sequencers scan mode, for all ADC groups + * (group regular, group injected). + * @note According to sequencers scan mode : + * - If disabled: ADC conversion is performed in unitary conversion + * mode (one channel converted, that defined in rank 1). + * Configuration of sequencers of all ADC groups + * (sequencer scan length, ...) is discarded: equivalent to + * scan length of 1 rank. + * - If enabled: ADC conversions are performed in sequence conversions + * mode, according to configuration of sequencers of + * each ADC group (sequencer scan length, ...). + * Refer to function @ref LL_ADC_REG_SetSequencerLength() + * and to function @ref LL_ADC_INJ_SetSequencerLength(). + * @rmtoll CR1 SCAN LL_ADC_GetSequencersScanMode + * @param ADCx ADC instance + * @retval Returned value can be one of the following values: + * @arg @ref LL_ADC_SEQ_SCAN_DISABLE + * @arg @ref LL_ADC_SEQ_SCAN_ENABLE + */ +__STATIC_INLINE uint32_t LL_ADC_GetSequencersScanMode(ADC_TypeDef *ADCx) +{ + return (uint32_t)(READ_BIT(ADCx->CR1, ADC_CR1_SCAN)); +} + +/** + * @} + */ + +/** @defgroup ADC_LL_EF_Configuration_ADC_Group_Regular Configuration of ADC hierarchical scope: group regular + * @{ + */ + +/** + * @brief Set ADC group regular conversion trigger source: + * internal (SW start) or from external IP (timer event, + * external interrupt line). + * @note On this STM32 serie, external trigger is set with trigger polarity: + * rising edge (only trigger polarity available on this STM32 serie). + * @note Availability of parameters of trigger sources from timer + * depends on timers availability on the selected device. + * @rmtoll CR2 EXTSEL LL_ADC_REG_SetTriggerSource + * @param ADCx ADC instance + * @param TriggerSource This parameter can be one of the following values: + * @arg @ref LL_ADC_REG_TRIG_SOFTWARE + * @arg @ref LL_ADC_REG_TRIG_EXT_TIM1_CH3 (1) + * @arg @ref LL_ADC_REG_TRIG_EXT_TIM1_CH1 (2) + * @arg @ref LL_ADC_REG_TRIG_EXT_TIM1_CH2 (2) + * @arg @ref LL_ADC_REG_TRIG_EXT_TIM2_CH2 (2) + * @arg @ref LL_ADC_REG_TRIG_EXT_TIM3_TRGO (2) + * @arg @ref LL_ADC_REG_TRIG_EXT_TIM4_CH4 (2) + * @arg @ref LL_ADC_REG_TRIG_EXT_EXTI_LINE11 (2) + * @arg @ref LL_ADC_REG_TRIG_EXT_TIM8_TRGO (2)(4) + * @arg @ref LL_ADC_REG_TRIG_EXT_TIM8_TRGO_ADC3 (3) + * @arg @ref LL_ADC_REG_TRIG_EXT_TIM3_CH1 (3) + * @arg @ref LL_ADC_REG_TRIG_EXT_TIM2_CH3 (3) + * @arg @ref LL_ADC_REG_TRIG_EXT_TIM8_CH1 (3) + * @arg @ref LL_ADC_REG_TRIG_EXT_TIM8_TRGO (3) + * @arg @ref LL_ADC_REG_TRIG_EXT_TIM5_CH1 (3) + * @arg @ref LL_ADC_REG_TRIG_EXT_TIM5_CH3 (3) + * + * (1) On STM32F1, parameter available on all ADC instances: ADC1, ADC2, ADC3 (for ADC instances ADCx available on the selected device).\n + * (2) On STM32F1, parameter available only on ADC instances: ADC1, ADC2 (for ADC instances ADCx available on the selected device).\n + * (3) On STM32F1, parameter available only on ADC instances: ADC3 (for ADC instances ADCx available on the selected device).\n + * (4) On STM32F1, parameter available only on high-density and XL-density devices. A remap of trigger must be done at top level (refer to AFIO peripheral). + * @retval None + */ +__STATIC_INLINE void LL_ADC_REG_SetTriggerSource(ADC_TypeDef *ADCx, uint32_t TriggerSource) +{ +/* Note: On this STM32 serie, ADC group regular external trigger edge */ +/* is used to perform a ADC conversion start. */ +/* This function does not set external trigger edge. */ +/* This feature is set using function */ +/* @ref LL_ADC_REG_StartConversionExtTrig(). */ + MODIFY_REG(ADCx->CR2, ADC_CR2_EXTSEL, (TriggerSource & ADC_CR2_EXTSEL)); +} + +/** + * @brief Get ADC group regular conversion trigger source: + * internal (SW start) or from external IP (timer event, + * external interrupt line). + * @note To determine whether group regular trigger source is + * internal (SW start) or external, without detail + * of which peripheral is selected as external trigger, + * (equivalent to + * "if(LL_ADC_REG_GetTriggerSource(ADC1) == LL_ADC_REG_TRIG_SOFTWARE)") + * use function @ref LL_ADC_REG_IsTriggerSourceSWStart. + * @note Availability of parameters of trigger sources from timer + * depends on timers availability on the selected device. + * @rmtoll CR2 EXTSEL LL_ADC_REG_GetTriggerSource + * @param ADCx ADC instance + * @retval Returned value can be one of the following values: + * @arg @ref LL_ADC_REG_TRIG_SOFTWARE + * @arg @ref LL_ADC_REG_TRIG_EXT_TIM1_CH3 (1) + * @arg @ref LL_ADC_REG_TRIG_EXT_TIM1_CH1 (2) + * @arg @ref LL_ADC_REG_TRIG_EXT_TIM1_CH2 (2) + * @arg @ref LL_ADC_REG_TRIG_EXT_TIM2_CH2 (2) + * @arg @ref LL_ADC_REG_TRIG_EXT_TIM3_TRGO (2) + * @arg @ref LL_ADC_REG_TRIG_EXT_TIM4_CH4 (2) + * @arg @ref LL_ADC_REG_TRIG_EXT_EXTI_LINE11 (2) + * @arg @ref LL_ADC_REG_TRIG_EXT_TIM8_TRGO (2)(4) + * @arg @ref LL_ADC_REG_TRIG_EXT_TIM8_TRGO_ADC3 (3) + * @arg @ref LL_ADC_REG_TRIG_EXT_TIM3_CH1 (3) + * @arg @ref LL_ADC_REG_TRIG_EXT_TIM2_CH3 (3) + * @arg @ref LL_ADC_REG_TRIG_EXT_TIM8_CH1 (3) + * @arg @ref LL_ADC_REG_TRIG_EXT_TIM8_TRGO (3) + * @arg @ref LL_ADC_REG_TRIG_EXT_TIM5_CH1 (3) + * @arg @ref LL_ADC_REG_TRIG_EXT_TIM5_CH3 (3) + * + * (1) On STM32F1, parameter available on all ADC instances: ADC1, ADC2, ADC3 (for ADC instances ADCx available on the selected device).\n + * (2) On STM32F1, parameter available only on ADC instances: ADC1, ADC2 (for ADC instances ADCx available on the selected device).\n + * (3) On STM32F1, parameter available only on ADC instances: ADC3 (for ADC instances ADCx available on the selected device).\n + * (4) On STM32F1, parameter available only on high-density and XL-density devices. A remap of trigger must be done at top level (refer to AFIO peripheral). + */ +__STATIC_INLINE uint32_t LL_ADC_REG_GetTriggerSource(ADC_TypeDef *ADCx) +{ + return (uint32_t)(READ_BIT(ADCx->CR2, ADC_CR2_EXTSEL)); +} + +/** + * @brief Get ADC group regular conversion trigger source internal (SW start) + or external. + * @note In case of group regular trigger source set to external trigger, + * to determine which peripheral is selected as external trigger, + * use function @ref LL_ADC_REG_GetTriggerSource(). + * @rmtoll CR2 EXTSEL LL_ADC_REG_IsTriggerSourceSWStart + * @param ADCx ADC instance + * @retval Value "0" if trigger source external trigger + * Value "1" if trigger source SW start. + */ +__STATIC_INLINE uint32_t LL_ADC_REG_IsTriggerSourceSWStart(ADC_TypeDef *ADCx) +{ + return (READ_BIT(ADCx->CR2, ADC_CR2_EXTSEL) == (LL_ADC_REG_TRIG_SOFTWARE)); +} + + +/** + * @brief Set ADC group regular sequencer length and scan direction. + * @note Description of ADC group regular sequencer features: + * - For devices with sequencer fully configurable + * (function "LL_ADC_REG_SetSequencerRanks()" available): + * sequencer length and each rank affectation to a channel + * are configurable. + * This function performs configuration of: + * - Sequence length: Number of ranks in the scan sequence. + * - Sequence direction: Unless specified in parameters, sequencer + * scan direction is forward (from rank 1 to rank n). + * Sequencer ranks are selected using + * function "LL_ADC_REG_SetSequencerRanks()". + * - For devices with sequencer not fully configurable + * (function "LL_ADC_REG_SetSequencerChannels()" available): + * sequencer length and each rank affectation to a channel + * are defined by channel number. + * This function performs configuration of: + * - Sequence length: Number of ranks in the scan sequence is + * defined by number of channels set in the sequence, + * rank of each channel is fixed by channel HW number. + * (channel 0 fixed on rank 0, channel 1 fixed on rank1, ...). + * - Sequence direction: Unless specified in parameters, sequencer + * scan direction is forward (from lowest channel number to + * highest channel number). + * Sequencer ranks are selected using + * function "LL_ADC_REG_SetSequencerChannels()". + * @note On this STM32 serie, group regular sequencer configuration + * is conditioned to ADC instance sequencer mode. + * If ADC instance sequencer mode is disabled, sequencers of + * all groups (group regular, group injected) can be configured + * but their execution is disabled (limited to rank 1). + * Refer to function @ref LL_ADC_SetSequencersScanMode(). + * @note Sequencer disabled is equivalent to sequencer of 1 rank: + * ADC conversion on only 1 channel. + * @rmtoll SQR1 L LL_ADC_REG_SetSequencerLength + * @param ADCx ADC instance + * @param SequencerNbRanks This parameter can be one of the following values: + * @arg @ref LL_ADC_REG_SEQ_SCAN_DISABLE + * @arg @ref LL_ADC_REG_SEQ_SCAN_ENABLE_2RANKS + * @arg @ref LL_ADC_REG_SEQ_SCAN_ENABLE_3RANKS + * @arg @ref LL_ADC_REG_SEQ_SCAN_ENABLE_4RANKS + * @arg @ref LL_ADC_REG_SEQ_SCAN_ENABLE_5RANKS + * @arg @ref LL_ADC_REG_SEQ_SCAN_ENABLE_6RANKS + * @arg @ref LL_ADC_REG_SEQ_SCAN_ENABLE_7RANKS + * @arg @ref LL_ADC_REG_SEQ_SCAN_ENABLE_8RANKS + * @arg @ref LL_ADC_REG_SEQ_SCAN_ENABLE_9RANKS + * @arg @ref LL_ADC_REG_SEQ_SCAN_ENABLE_10RANKS + * @arg @ref LL_ADC_REG_SEQ_SCAN_ENABLE_11RANKS + * @arg @ref LL_ADC_REG_SEQ_SCAN_ENABLE_12RANKS + * @arg @ref LL_ADC_REG_SEQ_SCAN_ENABLE_13RANKS + * @arg @ref LL_ADC_REG_SEQ_SCAN_ENABLE_14RANKS + * @arg @ref LL_ADC_REG_SEQ_SCAN_ENABLE_15RANKS + * @arg @ref LL_ADC_REG_SEQ_SCAN_ENABLE_16RANKS + * @retval None + */ +__STATIC_INLINE void LL_ADC_REG_SetSequencerLength(ADC_TypeDef *ADCx, uint32_t SequencerNbRanks) +{ + MODIFY_REG(ADCx->SQR1, ADC_SQR1_L, SequencerNbRanks); +} + +/** + * @brief Get ADC group regular sequencer length and scan direction. + * @note Description of ADC group regular sequencer features: + * - For devices with sequencer fully configurable + * (function "LL_ADC_REG_SetSequencerRanks()" available): + * sequencer length and each rank affectation to a channel + * are configurable. + * This function retrieves: + * - Sequence length: Number of ranks in the scan sequence. + * - Sequence direction: Unless specified in parameters, sequencer + * scan direction is forward (from rank 1 to rank n). + * Sequencer ranks are selected using + * function "LL_ADC_REG_SetSequencerRanks()". + * - For devices with sequencer not fully configurable + * (function "LL_ADC_REG_SetSequencerChannels()" available): + * sequencer length and each rank affectation to a channel + * are defined by channel number. + * This function retrieves: + * - Sequence length: Number of ranks in the scan sequence is + * defined by number of channels set in the sequence, + * rank of each channel is fixed by channel HW number. + * (channel 0 fixed on rank 0, channel 1 fixed on rank1, ...). + * - Sequence direction: Unless specified in parameters, sequencer + * scan direction is forward (from lowest channel number to + * highest channel number). + * Sequencer ranks are selected using + * function "LL_ADC_REG_SetSequencerChannels()". + * @note On this STM32 serie, group regular sequencer configuration + * is conditioned to ADC instance sequencer mode. + * If ADC instance sequencer mode is disabled, sequencers of + * all groups (group regular, group injected) can be configured + * but their execution is disabled (limited to rank 1). + * Refer to function @ref LL_ADC_SetSequencersScanMode(). + * @note Sequencer disabled is equivalent to sequencer of 1 rank: + * ADC conversion on only 1 channel. + * @rmtoll SQR1 L LL_ADC_REG_SetSequencerLength + * @param ADCx ADC instance + * @retval Returned value can be one of the following values: + * @arg @ref LL_ADC_REG_SEQ_SCAN_DISABLE + * @arg @ref LL_ADC_REG_SEQ_SCAN_ENABLE_2RANKS + * @arg @ref LL_ADC_REG_SEQ_SCAN_ENABLE_3RANKS + * @arg @ref LL_ADC_REG_SEQ_SCAN_ENABLE_4RANKS + * @arg @ref LL_ADC_REG_SEQ_SCAN_ENABLE_5RANKS + * @arg @ref LL_ADC_REG_SEQ_SCAN_ENABLE_6RANKS + * @arg @ref LL_ADC_REG_SEQ_SCAN_ENABLE_7RANKS + * @arg @ref LL_ADC_REG_SEQ_SCAN_ENABLE_8RANKS + * @arg @ref LL_ADC_REG_SEQ_SCAN_ENABLE_9RANKS + * @arg @ref LL_ADC_REG_SEQ_SCAN_ENABLE_10RANKS + * @arg @ref LL_ADC_REG_SEQ_SCAN_ENABLE_11RANKS + * @arg @ref LL_ADC_REG_SEQ_SCAN_ENABLE_12RANKS + * @arg @ref LL_ADC_REG_SEQ_SCAN_ENABLE_13RANKS + * @arg @ref LL_ADC_REG_SEQ_SCAN_ENABLE_14RANKS + * @arg @ref LL_ADC_REG_SEQ_SCAN_ENABLE_15RANKS + * @arg @ref LL_ADC_REG_SEQ_SCAN_ENABLE_16RANKS + */ +__STATIC_INLINE uint32_t LL_ADC_REG_GetSequencerLength(ADC_TypeDef *ADCx) +{ + return (uint32_t)(READ_BIT(ADCx->SQR1, ADC_SQR1_L)); +} + +/** + * @brief Set ADC group regular sequencer discontinuous mode: + * sequence subdivided and scan conversions interrupted every selected + * number of ranks. + * @note It is not possible to enable both ADC group regular + * continuous mode and sequencer discontinuous mode. + * @note It is not possible to enable both ADC auto-injected mode + * and ADC group regular sequencer discontinuous mode. + * @rmtoll CR1 DISCEN LL_ADC_REG_SetSequencerDiscont\n + * CR1 DISCNUM LL_ADC_REG_SetSequencerDiscont + * @param ADCx ADC instance + * @param SeqDiscont This parameter can be one of the following values: + * @arg @ref LL_ADC_REG_SEQ_DISCONT_DISABLE + * @arg @ref LL_ADC_REG_SEQ_DISCONT_1RANK + * @arg @ref LL_ADC_REG_SEQ_DISCONT_2RANKS + * @arg @ref LL_ADC_REG_SEQ_DISCONT_3RANKS + * @arg @ref LL_ADC_REG_SEQ_DISCONT_4RANKS + * @arg @ref LL_ADC_REG_SEQ_DISCONT_5RANKS + * @arg @ref LL_ADC_REG_SEQ_DISCONT_6RANKS + * @arg @ref LL_ADC_REG_SEQ_DISCONT_7RANKS + * @arg @ref LL_ADC_REG_SEQ_DISCONT_8RANKS + * @retval None + */ +__STATIC_INLINE void LL_ADC_REG_SetSequencerDiscont(ADC_TypeDef *ADCx, uint32_t SeqDiscont) +{ + MODIFY_REG(ADCx->CR1, ADC_CR1_DISCEN | ADC_CR1_DISCNUM, SeqDiscont); +} + +/** + * @brief Get ADC group regular sequencer discontinuous mode: + * sequence subdivided and scan conversions interrupted every selected + * number of ranks. + * @rmtoll CR1 DISCEN LL_ADC_REG_GetSequencerDiscont\n + * CR1 DISCNUM LL_ADC_REG_GetSequencerDiscont + * @param ADCx ADC instance + * @retval Returned value can be one of the following values: + * @arg @ref LL_ADC_REG_SEQ_DISCONT_DISABLE + * @arg @ref LL_ADC_REG_SEQ_DISCONT_1RANK + * @arg @ref LL_ADC_REG_SEQ_DISCONT_2RANKS + * @arg @ref LL_ADC_REG_SEQ_DISCONT_3RANKS + * @arg @ref LL_ADC_REG_SEQ_DISCONT_4RANKS + * @arg @ref LL_ADC_REG_SEQ_DISCONT_5RANKS + * @arg @ref LL_ADC_REG_SEQ_DISCONT_6RANKS + * @arg @ref LL_ADC_REG_SEQ_DISCONT_7RANKS + * @arg @ref LL_ADC_REG_SEQ_DISCONT_8RANKS + */ +__STATIC_INLINE uint32_t LL_ADC_REG_GetSequencerDiscont(ADC_TypeDef *ADCx) +{ + return (uint32_t)(READ_BIT(ADCx->CR1, ADC_CR1_DISCEN | ADC_CR1_DISCNUM)); +} + +/** + * @brief Set ADC group regular sequence: channel on the selected + * scan sequence rank. + * @note This function performs configuration of: + * - Channels ordering into each rank of scan sequence: + * whatever channel can be placed into whatever rank. + * @note On this STM32 serie, ADC group regular sequencer is + * fully configurable: sequencer length and each rank + * affectation to a channel are configurable. + * Refer to description of function @ref LL_ADC_REG_SetSequencerLength(). + * @note Depending on devices and packages, some channels may not be available. + * Refer to device datasheet for channels availability. + * @note On this STM32 serie, to measure internal channels (VrefInt, + * TempSensor, ...), measurement paths to internal channels must be + * enabled separately. + * This can be done using function @ref LL_ADC_SetCommonPathInternalCh(). + * @rmtoll SQR3 SQ1 LL_ADC_REG_SetSequencerRanks\n + * SQR3 SQ2 LL_ADC_REG_SetSequencerRanks\n + * SQR3 SQ3 LL_ADC_REG_SetSequencerRanks\n + * SQR3 SQ4 LL_ADC_REG_SetSequencerRanks\n + * SQR3 SQ5 LL_ADC_REG_SetSequencerRanks\n + * SQR3 SQ6 LL_ADC_REG_SetSequencerRanks\n + * SQR2 SQ7 LL_ADC_REG_SetSequencerRanks\n + * SQR2 SQ8 LL_ADC_REG_SetSequencerRanks\n + * SQR2 SQ9 LL_ADC_REG_SetSequencerRanks\n + * SQR2 SQ10 LL_ADC_REG_SetSequencerRanks\n + * SQR2 SQ11 LL_ADC_REG_SetSequencerRanks\n + * SQR2 SQ12 LL_ADC_REG_SetSequencerRanks\n + * SQR1 SQ13 LL_ADC_REG_SetSequencerRanks\n + * SQR1 SQ14 LL_ADC_REG_SetSequencerRanks\n + * SQR1 SQ15 LL_ADC_REG_SetSequencerRanks\n + * SQR1 SQ16 LL_ADC_REG_SetSequencerRanks + * @param ADCx ADC instance + * @param Rank This parameter can be one of the following values: + * @arg @ref LL_ADC_REG_RANK_1 + * @arg @ref LL_ADC_REG_RANK_2 + * @arg @ref LL_ADC_REG_RANK_3 + * @arg @ref LL_ADC_REG_RANK_4 + * @arg @ref LL_ADC_REG_RANK_5 + * @arg @ref LL_ADC_REG_RANK_6 + * @arg @ref LL_ADC_REG_RANK_7 + * @arg @ref LL_ADC_REG_RANK_8 + * @arg @ref LL_ADC_REG_RANK_9 + * @arg @ref LL_ADC_REG_RANK_10 + * @arg @ref LL_ADC_REG_RANK_11 + * @arg @ref LL_ADC_REG_RANK_12 + * @arg @ref LL_ADC_REG_RANK_13 + * @arg @ref LL_ADC_REG_RANK_14 + * @arg @ref LL_ADC_REG_RANK_15 + * @arg @ref LL_ADC_REG_RANK_16 + * @param Channel This parameter can be one of the following values: + * @arg @ref LL_ADC_CHANNEL_0 + * @arg @ref LL_ADC_CHANNEL_1 + * @arg @ref LL_ADC_CHANNEL_2 + * @arg @ref LL_ADC_CHANNEL_3 + * @arg @ref LL_ADC_CHANNEL_4 + * @arg @ref LL_ADC_CHANNEL_5 + * @arg @ref LL_ADC_CHANNEL_6 + * @arg @ref LL_ADC_CHANNEL_7 + * @arg @ref LL_ADC_CHANNEL_8 + * @arg @ref LL_ADC_CHANNEL_9 + * @arg @ref LL_ADC_CHANNEL_10 + * @arg @ref LL_ADC_CHANNEL_11 + * @arg @ref LL_ADC_CHANNEL_12 + * @arg @ref LL_ADC_CHANNEL_13 + * @arg @ref LL_ADC_CHANNEL_14 + * @arg @ref LL_ADC_CHANNEL_15 + * @arg @ref LL_ADC_CHANNEL_16 + * @arg @ref LL_ADC_CHANNEL_17 + * @arg @ref LL_ADC_CHANNEL_VREFINT (1) + * @arg @ref LL_ADC_CHANNEL_TEMPSENSOR (1) + * + * (1) On STM32F1, parameter available only on ADC instance: ADC1. + * @retval None + */ +__STATIC_INLINE void LL_ADC_REG_SetSequencerRanks(ADC_TypeDef *ADCx, uint32_t Rank, uint32_t Channel) +{ + /* Set bits with content of parameter "Channel" with bits position */ + /* in register and register position depending on parameter "Rank". */ + /* Parameters "Rank" and "Channel" are used with masks because containing */ + /* other bits reserved for other purpose. */ + register __IO uint32_t *preg = __ADC_PTR_REG_OFFSET(ADCx->SQR1, __ADC_MASK_SHIFT(Rank, ADC_REG_SQRX_REGOFFSET_MASK)); + + MODIFY_REG(*preg, + ADC_CHANNEL_ID_NUMBER_MASK << (Rank & ADC_REG_RANK_ID_SQRX_MASK), + (Channel & ADC_CHANNEL_ID_NUMBER_MASK) << (Rank & ADC_REG_RANK_ID_SQRX_MASK)); +} + +/** + * @brief Get ADC group regular sequence: channel on the selected + * scan sequence rank. + * @note On this STM32 serie, ADC group regular sequencer is + * fully configurable: sequencer length and each rank + * affectation to a channel are configurable. + * Refer to description of function @ref LL_ADC_REG_SetSequencerLength(). + * @note Depending on devices and packages, some channels may not be available. + * Refer to device datasheet for channels availability. + * @note Usage of the returned channel number: + * - To reinject this channel into another function LL_ADC_xxx: + * the returned channel number is only partly formatted on definition + * of literals LL_ADC_CHANNEL_x. Therefore, it has to be compared + * with parts of literals LL_ADC_CHANNEL_x or using + * helper macro @ref __LL_ADC_CHANNEL_TO_DECIMAL_NB(). + * Then the selected literal LL_ADC_CHANNEL_x can be used + * as parameter for another function. + * - To get the channel number in decimal format: + * process the returned value with the helper macro + * @ref __LL_ADC_CHANNEL_TO_DECIMAL_NB(). + * @rmtoll SQR3 SQ1 LL_ADC_REG_GetSequencerRanks\n + * SQR3 SQ2 LL_ADC_REG_GetSequencerRanks\n + * SQR3 SQ3 LL_ADC_REG_GetSequencerRanks\n + * SQR3 SQ4 LL_ADC_REG_GetSequencerRanks\n + * SQR3 SQ5 LL_ADC_REG_GetSequencerRanks\n + * SQR3 SQ6 LL_ADC_REG_GetSequencerRanks\n + * SQR2 SQ7 LL_ADC_REG_GetSequencerRanks\n + * SQR2 SQ8 LL_ADC_REG_GetSequencerRanks\n + * SQR2 SQ9 LL_ADC_REG_GetSequencerRanks\n + * SQR2 SQ10 LL_ADC_REG_GetSequencerRanks\n + * SQR2 SQ11 LL_ADC_REG_GetSequencerRanks\n + * SQR2 SQ12 LL_ADC_REG_GetSequencerRanks\n + * SQR1 SQ13 LL_ADC_REG_GetSequencerRanks\n + * SQR1 SQ14 LL_ADC_REG_GetSequencerRanks\n + * SQR1 SQ15 LL_ADC_REG_GetSequencerRanks\n + * SQR1 SQ16 LL_ADC_REG_GetSequencerRanks + * @param ADCx ADC instance + * @param Rank This parameter can be one of the following values: + * @arg @ref LL_ADC_REG_RANK_1 + * @arg @ref LL_ADC_REG_RANK_2 + * @arg @ref LL_ADC_REG_RANK_3 + * @arg @ref LL_ADC_REG_RANK_4 + * @arg @ref LL_ADC_REG_RANK_5 + * @arg @ref LL_ADC_REG_RANK_6 + * @arg @ref LL_ADC_REG_RANK_7 + * @arg @ref LL_ADC_REG_RANK_8 + * @arg @ref LL_ADC_REG_RANK_9 + * @arg @ref LL_ADC_REG_RANK_10 + * @arg @ref LL_ADC_REG_RANK_11 + * @arg @ref LL_ADC_REG_RANK_12 + * @arg @ref LL_ADC_REG_RANK_13 + * @arg @ref LL_ADC_REG_RANK_14 + * @arg @ref LL_ADC_REG_RANK_15 + * @arg @ref LL_ADC_REG_RANK_16 + * @retval Returned value can be one of the following values: + * @arg @ref LL_ADC_CHANNEL_0 + * @arg @ref LL_ADC_CHANNEL_1 + * @arg @ref LL_ADC_CHANNEL_2 + * @arg @ref LL_ADC_CHANNEL_3 + * @arg @ref LL_ADC_CHANNEL_4 + * @arg @ref LL_ADC_CHANNEL_5 + * @arg @ref LL_ADC_CHANNEL_6 + * @arg @ref LL_ADC_CHANNEL_7 + * @arg @ref LL_ADC_CHANNEL_8 + * @arg @ref LL_ADC_CHANNEL_9 + * @arg @ref LL_ADC_CHANNEL_10 + * @arg @ref LL_ADC_CHANNEL_11 + * @arg @ref LL_ADC_CHANNEL_12 + * @arg @ref LL_ADC_CHANNEL_13 + * @arg @ref LL_ADC_CHANNEL_14 + * @arg @ref LL_ADC_CHANNEL_15 + * @arg @ref LL_ADC_CHANNEL_16 + * @arg @ref LL_ADC_CHANNEL_17 + * @arg @ref LL_ADC_CHANNEL_VREFINT (1) + * @arg @ref LL_ADC_CHANNEL_TEMPSENSOR (1) + * + * (1) On STM32F1, parameter available only on ADC instance: ADC1.\n + * (1) For ADC channel read back from ADC register, + * comparison with internal channel parameter to be done + * using helper macro @ref __LL_ADC_CHANNEL_INTERNAL_TO_EXTERNAL(). + */ +__STATIC_INLINE uint32_t LL_ADC_REG_GetSequencerRanks(ADC_TypeDef *ADCx, uint32_t Rank) +{ + register __IO uint32_t *preg = __ADC_PTR_REG_OFFSET(ADCx->SQR1, __ADC_MASK_SHIFT(Rank, ADC_REG_SQRX_REGOFFSET_MASK)); + + return (uint32_t) (READ_BIT(*preg, + ADC_CHANNEL_ID_NUMBER_MASK << (Rank & ADC_REG_RANK_ID_SQRX_MASK)) + >> (Rank & ADC_REG_RANK_ID_SQRX_MASK) + ); +} + +/** + * @brief Set ADC continuous conversion mode on ADC group regular. + * @note Description of ADC continuous conversion mode: + * - single mode: one conversion per trigger + * - continuous mode: after the first trigger, following + * conversions launched successively automatically. + * @note It is not possible to enable both ADC group regular + * continuous mode and sequencer discontinuous mode. + * @rmtoll CR2 CONT LL_ADC_REG_SetContinuousMode + * @param ADCx ADC instance + * @param Continuous This parameter can be one of the following values: + * @arg @ref LL_ADC_REG_CONV_SINGLE + * @arg @ref LL_ADC_REG_CONV_CONTINUOUS + * @retval None + */ +__STATIC_INLINE void LL_ADC_REG_SetContinuousMode(ADC_TypeDef *ADCx, uint32_t Continuous) +{ + MODIFY_REG(ADCx->CR2, ADC_CR2_CONT, Continuous); +} + +/** + * @brief Get ADC continuous conversion mode on ADC group regular. + * @note Description of ADC continuous conversion mode: + * - single mode: one conversion per trigger + * - continuous mode: after the first trigger, following + * conversions launched successively automatically. + * @rmtoll CR2 CONT LL_ADC_REG_GetContinuousMode + * @param ADCx ADC instance + * @retval Returned value can be one of the following values: + * @arg @ref LL_ADC_REG_CONV_SINGLE + * @arg @ref LL_ADC_REG_CONV_CONTINUOUS + */ +__STATIC_INLINE uint32_t LL_ADC_REG_GetContinuousMode(ADC_TypeDef *ADCx) +{ + return (uint32_t)(READ_BIT(ADCx->CR2, ADC_CR2_CONT)); +} + +/** + * @brief Set ADC group regular conversion data transfer: no transfer or + * transfer by DMA, and DMA requests mode. + * @note If transfer by DMA selected, specifies the DMA requests + * mode: + * - Limited mode (One shot mode): DMA transfer requests are stopped + * when number of DMA data transfers (number of + * ADC conversions) is reached. + * This ADC mode is intended to be used with DMA mode non-circular. + * - Unlimited mode: DMA transfer requests are unlimited, + * whatever number of DMA data transfers (number of + * ADC conversions). + * This ADC mode is intended to be used with DMA mode circular. + * @note If ADC DMA requests mode is set to unlimited and DMA is set to + * mode non-circular: + * when DMA transfers size will be reached, DMA will stop transfers of + * ADC conversions data ADC will raise an overrun error + * (overrun flag and interruption if enabled). + * @note To configure DMA source address (peripheral address), + * use function @ref LL_ADC_DMA_GetRegAddr(). + * @rmtoll CR2 DMA LL_ADC_REG_SetDMATransfer + * @param ADCx ADC instance + * @param DMATransfer This parameter can be one of the following values: + * @arg @ref LL_ADC_REG_DMA_TRANSFER_NONE + * @arg @ref LL_ADC_REG_DMA_TRANSFER_UNLIMITED + * @retval None + */ +__STATIC_INLINE void LL_ADC_REG_SetDMATransfer(ADC_TypeDef *ADCx, uint32_t DMATransfer) +{ + MODIFY_REG(ADCx->CR2, ADC_CR2_DMA, DMATransfer); +} + +/** + * @brief Get ADC group regular conversion data transfer: no transfer or + * transfer by DMA, and DMA requests mode. + * @note If transfer by DMA selected, specifies the DMA requests + * mode: + * - Limited mode (One shot mode): DMA transfer requests are stopped + * when number of DMA data transfers (number of + * ADC conversions) is reached. + * This ADC mode is intended to be used with DMA mode non-circular. + * - Unlimited mode: DMA transfer requests are unlimited, + * whatever number of DMA data transfers (number of + * ADC conversions). + * This ADC mode is intended to be used with DMA mode circular. + * @note If ADC DMA requests mode is set to unlimited and DMA is set to + * mode non-circular: + * when DMA transfers size will be reached, DMA will stop transfers of + * ADC conversions data ADC will raise an overrun error + * (overrun flag and interruption if enabled). + * @note To configure DMA source address (peripheral address), + * use function @ref LL_ADC_DMA_GetRegAddr(). + * @rmtoll CR2 DMA LL_ADC_REG_GetDMATransfer + * @param ADCx ADC instance + * @retval Returned value can be one of the following values: + * @arg @ref LL_ADC_REG_DMA_TRANSFER_NONE + * @arg @ref LL_ADC_REG_DMA_TRANSFER_UNLIMITED + */ +__STATIC_INLINE uint32_t LL_ADC_REG_GetDMATransfer(ADC_TypeDef *ADCx) +{ + return (uint32_t)(READ_BIT(ADCx->CR2, ADC_CR2_DMA)); +} + +/** + * @} + */ + +/** @defgroup ADC_LL_EF_Configuration_ADC_Group_Injected Configuration of ADC hierarchical scope: group injected + * @{ + */ + +/** + * @brief Set ADC group injected conversion trigger source: + * internal (SW start) or from external IP (timer event, + * external interrupt line). + * @note On this STM32 serie, external trigger is set with trigger polarity: + * rising edge (only trigger polarity available on this STM32 serie). + * @note Availability of parameters of trigger sources from timer + * depends on timers availability on the selected device. + * @rmtoll CR2 JEXTSEL LL_ADC_INJ_SetTriggerSource + * @param ADCx ADC instance + * @param TriggerSource This parameter can be one of the following values: + * @arg @ref LL_ADC_INJ_TRIG_SOFTWARE + * @arg @ref LL_ADC_INJ_TRIG_EXT_TIM1_TRGO (1) + * @arg @ref LL_ADC_INJ_TRIG_EXT_TIM1_CH4 (1) + * @arg @ref LL_ADC_INJ_TRIG_EXT_TIM2_TRGO (2) + * @arg @ref LL_ADC_INJ_TRIG_EXT_TIM2_CH1 (2) + * @arg @ref LL_ADC_INJ_TRIG_EXT_TIM3_CH4 (2) + * @arg @ref LL_ADC_INJ_TRIG_EXT_TIM4_TRGO (2) + * @arg @ref LL_ADC_INJ_TRIG_EXT_EXTI_LINE15 (2) + * @arg @ref LL_ADC_INJ_TRIG_EXT_TIM8_CH4 (2)(4) + * @arg @ref LL_ADC_INJ_TRIG_EXT_TIM8_CH4_ADC3 (3) + * @arg @ref LL_ADC_INJ_TRIG_EXT_TIM4_CH3 (3) + * @arg @ref LL_ADC_INJ_TRIG_EXT_TIM8_CH2 (3) + * @arg @ref LL_ADC_INJ_TRIG_EXT_TIM8_CH4 (3) + * @arg @ref LL_ADC_INJ_TRIG_EXT_TIM5_TRGO (3) + * @arg @ref LL_ADC_INJ_TRIG_EXT_TIM5_CH4 (3) + * + * (1) On STM32F1, parameter available on all ADC instances: ADC1, ADC2, ADC3 (for ADC instances ADCx available on the selected device).\n + * (2) On STM32F1, parameter available only on ADC instances: ADC1, ADC2 (for ADC instances ADCx available on the selected device).\n + * (3) On STM32F1, parameter available only on ADC instances: ADC3 (for ADC instances ADCx available on the selected device).\n + * (4) On STM32F1, parameter available only on high-density and XL-density devices. A remap of trigger must be done at top level (refer to AFIO peripheral). + * @retval None + */ +__STATIC_INLINE void LL_ADC_INJ_SetTriggerSource(ADC_TypeDef *ADCx, uint32_t TriggerSource) +{ +/* Note: On this STM32 serie, ADC group injected external trigger edge */ +/* is used to perform a ADC conversion start. */ +/* This function does not set external trigger edge. */ +/* This feature is set using function */ +/* @ref LL_ADC_INJ_StartConversionExtTrig(). */ + MODIFY_REG(ADCx->CR2, ADC_CR2_JEXTSEL, (TriggerSource & ADC_CR2_JEXTSEL)); +} + +/** + * @brief Get ADC group injected conversion trigger source: + * internal (SW start) or from external IP (timer event, + * external interrupt line). + * @note To determine whether group injected trigger source is + * internal (SW start) or external, without detail + * of which peripheral is selected as external trigger, + * (equivalent to + * "if(LL_ADC_INJ_GetTriggerSource(ADC1) == LL_ADC_INJ_TRIG_SOFTWARE)") + * use function @ref LL_ADC_INJ_IsTriggerSourceSWStart. + * @note Availability of parameters of trigger sources from timer + * depends on timers availability on the selected device. + * @rmtoll CR2 JEXTSEL LL_ADC_INJ_GetTriggerSource + * @param ADCx ADC instance + * @retval Returned value can be one of the following values: + * @arg @ref LL_ADC_INJ_TRIG_SOFTWARE + * @arg @ref LL_ADC_INJ_TRIG_EXT_TIM1_TRGO (1) + * @arg @ref LL_ADC_INJ_TRIG_EXT_TIM1_CH4 (1) + * @arg @ref LL_ADC_INJ_TRIG_EXT_TIM2_TRGO (2) + * @arg @ref LL_ADC_INJ_TRIG_EXT_TIM2_CH1 (2) + * @arg @ref LL_ADC_INJ_TRIG_EXT_TIM3_CH4 (2) + * @arg @ref LL_ADC_INJ_TRIG_EXT_TIM4_TRGO (2) + * @arg @ref LL_ADC_INJ_TRIG_EXT_EXTI_LINE15 (2) + * @arg @ref LL_ADC_INJ_TRIG_EXT_TIM8_CH4 (2)(4) + * @arg @ref LL_ADC_INJ_TRIG_EXT_TIM8_CH4_ADC3 (3) + * @arg @ref LL_ADC_INJ_TRIG_EXT_TIM4_CH3 (3) + * @arg @ref LL_ADC_INJ_TRIG_EXT_TIM8_CH2 (3) + * @arg @ref LL_ADC_INJ_TRIG_EXT_TIM8_CH4 (3) + * @arg @ref LL_ADC_INJ_TRIG_EXT_TIM5_TRGO (3) + * @arg @ref LL_ADC_INJ_TRIG_EXT_TIM5_CH4 (3) + * + * (1) On STM32F1, parameter available on all ADC instances: ADC1, ADC2, ADC3 (for ADC instances ADCx available on the selected device).\n + * (2) On STM32F1, parameter available only on ADC instances: ADC1, ADC2 (for ADC instances ADCx available on the selected device).\n + * (3) On STM32F1, parameter available only on ADC instances: ADC3 (for ADC instances ADCx available on the selected device).\n + * (4) On STM32F1, parameter available only on high-density and XL-density devices. A remap of trigger must be done at top level (refer to AFIO peripheral). + */ +__STATIC_INLINE uint32_t LL_ADC_INJ_GetTriggerSource(ADC_TypeDef *ADCx) +{ + return (uint32_t)(READ_BIT(ADCx->CR2, ADC_CR2_JEXTSEL)); +} + +/** + * @brief Get ADC group injected conversion trigger source internal (SW start) + or external + * @note In case of group injected trigger source set to external trigger, + * to determine which peripheral is selected as external trigger, + * use function @ref LL_ADC_INJ_GetTriggerSource. + * @rmtoll CR2 JEXTSEL LL_ADC_INJ_IsTriggerSourceSWStart + * @param ADCx ADC instance + * @retval Value "0" if trigger source external trigger + * Value "1" if trigger source SW start. + */ +__STATIC_INLINE uint32_t LL_ADC_INJ_IsTriggerSourceSWStart(ADC_TypeDef *ADCx) +{ + return (READ_BIT(ADCx->CR2, ADC_CR2_JEXTSEL) == LL_ADC_INJ_TRIG_SOFTWARE); +} + +/** + * @brief Set ADC group injected sequencer length and scan direction. + * @note This function performs configuration of: + * - Sequence length: Number of ranks in the scan sequence. + * - Sequence direction: Unless specified in parameters, sequencer + * scan direction is forward (from rank 1 to rank n). + * @note On this STM32 serie, group injected sequencer configuration + * is conditioned to ADC instance sequencer mode. + * If ADC instance sequencer mode is disabled, sequencers of + * all groups (group regular, group injected) can be configured + * but their execution is disabled (limited to rank 1). + * Refer to function @ref LL_ADC_SetSequencersScanMode(). + * @note Sequencer disabled is equivalent to sequencer of 1 rank: + * ADC conversion on only 1 channel. + * @rmtoll JSQR JL LL_ADC_INJ_SetSequencerLength + * @param ADCx ADC instance + * @param SequencerNbRanks This parameter can be one of the following values: + * @arg @ref LL_ADC_INJ_SEQ_SCAN_DISABLE + * @arg @ref LL_ADC_INJ_SEQ_SCAN_ENABLE_2RANKS + * @arg @ref LL_ADC_INJ_SEQ_SCAN_ENABLE_3RANKS + * @arg @ref LL_ADC_INJ_SEQ_SCAN_ENABLE_4RANKS + * @retval None + */ +__STATIC_INLINE void LL_ADC_INJ_SetSequencerLength(ADC_TypeDef *ADCx, uint32_t SequencerNbRanks) +{ + MODIFY_REG(ADCx->JSQR, ADC_JSQR_JL, SequencerNbRanks); +} + +/** + * @brief Get ADC group injected sequencer length and scan direction. + * @note This function retrieves: + * - Sequence length: Number of ranks in the scan sequence. + * - Sequence direction: Unless specified in parameters, sequencer + * scan direction is forward (from rank 1 to rank n). + * @note On this STM32 serie, group injected sequencer configuration + * is conditioned to ADC instance sequencer mode. + * If ADC instance sequencer mode is disabled, sequencers of + * all groups (group regular, group injected) can be configured + * but their execution is disabled (limited to rank 1). + * Refer to function @ref LL_ADC_SetSequencersScanMode(). + * @note Sequencer disabled is equivalent to sequencer of 1 rank: + * ADC conversion on only 1 channel. + * @rmtoll JSQR JL LL_ADC_INJ_GetSequencerLength + * @param ADCx ADC instance + * @retval Returned value can be one of the following values: + * @arg @ref LL_ADC_INJ_SEQ_SCAN_DISABLE + * @arg @ref LL_ADC_INJ_SEQ_SCAN_ENABLE_2RANKS + * @arg @ref LL_ADC_INJ_SEQ_SCAN_ENABLE_3RANKS + * @arg @ref LL_ADC_INJ_SEQ_SCAN_ENABLE_4RANKS + */ +__STATIC_INLINE uint32_t LL_ADC_INJ_GetSequencerLength(ADC_TypeDef *ADCx) +{ + return (uint32_t)(READ_BIT(ADCx->JSQR, ADC_JSQR_JL)); +} + +/** + * @brief Set ADC group injected sequencer discontinuous mode: + * sequence subdivided and scan conversions interrupted every selected + * number of ranks. + * @note It is not possible to enable both ADC group injected + * auto-injected mode and sequencer discontinuous mode. + * @rmtoll CR1 DISCEN LL_ADC_INJ_SetSequencerDiscont + * @param ADCx ADC instance + * @param SeqDiscont This parameter can be one of the following values: + * @arg @ref LL_ADC_INJ_SEQ_DISCONT_DISABLE + * @arg @ref LL_ADC_INJ_SEQ_DISCONT_1RANK + * @retval None + */ +__STATIC_INLINE void LL_ADC_INJ_SetSequencerDiscont(ADC_TypeDef *ADCx, uint32_t SeqDiscont) +{ + MODIFY_REG(ADCx->CR1, ADC_CR1_JDISCEN, SeqDiscont); +} + +/** + * @brief Get ADC group injected sequencer discontinuous mode: + * sequence subdivided and scan conversions interrupted every selected + * number of ranks. + * @rmtoll CR1 DISCEN LL_ADC_REG_GetSequencerDiscont + * @param ADCx ADC instance + * @retval Returned value can be one of the following values: + * @arg @ref LL_ADC_INJ_SEQ_DISCONT_DISABLE + * @arg @ref LL_ADC_INJ_SEQ_DISCONT_1RANK + */ +__STATIC_INLINE uint32_t LL_ADC_INJ_GetSequencerDiscont(ADC_TypeDef *ADCx) +{ + return (uint32_t)(READ_BIT(ADCx->CR1, ADC_CR1_JDISCEN)); +} + +/** + * @brief Set ADC group injected sequence: channel on the selected + * sequence rank. + * @note Depending on devices and packages, some channels may not be available. + * Refer to device datasheet for channels availability. + * @note On this STM32 serie, to measure internal channels (VrefInt, + * TempSensor, ...), measurement paths to internal channels must be + * enabled separately. + * This can be done using function @ref LL_ADC_SetCommonPathInternalCh(). + * @rmtoll JSQR JSQ1 LL_ADC_INJ_SetSequencerRanks\n + * JSQR JSQ2 LL_ADC_INJ_SetSequencerRanks\n + * JSQR JSQ3 LL_ADC_INJ_SetSequencerRanks\n + * JSQR JSQ4 LL_ADC_INJ_SetSequencerRanks + * @param ADCx ADC instance + * @param Rank This parameter can be one of the following values: + * @arg @ref LL_ADC_INJ_RANK_1 + * @arg @ref LL_ADC_INJ_RANK_2 + * @arg @ref LL_ADC_INJ_RANK_3 + * @arg @ref LL_ADC_INJ_RANK_4 + * @param Channel This parameter can be one of the following values: + * @arg @ref LL_ADC_CHANNEL_0 + * @arg @ref LL_ADC_CHANNEL_1 + * @arg @ref LL_ADC_CHANNEL_2 + * @arg @ref LL_ADC_CHANNEL_3 + * @arg @ref LL_ADC_CHANNEL_4 + * @arg @ref LL_ADC_CHANNEL_5 + * @arg @ref LL_ADC_CHANNEL_6 + * @arg @ref LL_ADC_CHANNEL_7 + * @arg @ref LL_ADC_CHANNEL_8 + * @arg @ref LL_ADC_CHANNEL_9 + * @arg @ref LL_ADC_CHANNEL_10 + * @arg @ref LL_ADC_CHANNEL_11 + * @arg @ref LL_ADC_CHANNEL_12 + * @arg @ref LL_ADC_CHANNEL_13 + * @arg @ref LL_ADC_CHANNEL_14 + * @arg @ref LL_ADC_CHANNEL_15 + * @arg @ref LL_ADC_CHANNEL_16 + * @arg @ref LL_ADC_CHANNEL_17 + * @arg @ref LL_ADC_CHANNEL_VREFINT (1) + * @arg @ref LL_ADC_CHANNEL_TEMPSENSOR (1) + * + * (1) On STM32F1, parameter available only on ADC instance: ADC1. + * @retval None + */ +__STATIC_INLINE void LL_ADC_INJ_SetSequencerRanks(ADC_TypeDef *ADCx, uint32_t Rank, uint32_t Channel) +{ + /* Set bits with content of parameter "Channel" with bits position */ + /* in register depending on parameter "Rank". */ + /* Parameters "Rank" and "Channel" are used with masks because containing */ + /* other bits reserved for other purpose. */ + register uint32_t tmpreg1 = (READ_BIT(ADCx->JSQR, ADC_JSQR_JL) >> ADC_JSQR_JL_Pos) + 1U; + + MODIFY_REG(ADCx->JSQR, + ADC_CHANNEL_ID_NUMBER_MASK << (5U * (uint8_t)(((Rank) + 3U) - (tmpreg1))), + (Channel & ADC_CHANNEL_ID_NUMBER_MASK) << (5U * (uint8_t)(((Rank) + 3U) - (tmpreg1)))); +} + +/** + * @brief Get ADC group injected sequence: channel on the selected + * sequence rank. + * @note Depending on devices and packages, some channels may not be available. + * Refer to device datasheet for channels availability. + * @note Usage of the returned channel number: + * - To reinject this channel into another function LL_ADC_xxx: + * the returned channel number is only partly formatted on definition + * of literals LL_ADC_CHANNEL_x. Therefore, it has to be compared + * with parts of literals LL_ADC_CHANNEL_x or using + * helper macro @ref __LL_ADC_CHANNEL_TO_DECIMAL_NB(). + * Then the selected literal LL_ADC_CHANNEL_x can be used + * as parameter for another function. + * - To get the channel number in decimal format: + * process the returned value with the helper macro + * @ref __LL_ADC_CHANNEL_TO_DECIMAL_NB(). + * @rmtoll JSQR JSQ1 LL_ADC_INJ_SetSequencerRanks\n + * JSQR JSQ2 LL_ADC_INJ_SetSequencerRanks\n + * JSQR JSQ3 LL_ADC_INJ_SetSequencerRanks\n + * JSQR JSQ4 LL_ADC_INJ_SetSequencerRanks + * @param ADCx ADC instance + * @param Rank This parameter can be one of the following values: + * @arg @ref LL_ADC_INJ_RANK_1 + * @arg @ref LL_ADC_INJ_RANK_2 + * @arg @ref LL_ADC_INJ_RANK_3 + * @arg @ref LL_ADC_INJ_RANK_4 + * @retval Returned value can be one of the following values: + * @arg @ref LL_ADC_CHANNEL_0 + * @arg @ref LL_ADC_CHANNEL_1 + * @arg @ref LL_ADC_CHANNEL_2 + * @arg @ref LL_ADC_CHANNEL_3 + * @arg @ref LL_ADC_CHANNEL_4 + * @arg @ref LL_ADC_CHANNEL_5 + * @arg @ref LL_ADC_CHANNEL_6 + * @arg @ref LL_ADC_CHANNEL_7 + * @arg @ref LL_ADC_CHANNEL_8 + * @arg @ref LL_ADC_CHANNEL_9 + * @arg @ref LL_ADC_CHANNEL_10 + * @arg @ref LL_ADC_CHANNEL_11 + * @arg @ref LL_ADC_CHANNEL_12 + * @arg @ref LL_ADC_CHANNEL_13 + * @arg @ref LL_ADC_CHANNEL_14 + * @arg @ref LL_ADC_CHANNEL_15 + * @arg @ref LL_ADC_CHANNEL_16 + * @arg @ref LL_ADC_CHANNEL_17 + * @arg @ref LL_ADC_CHANNEL_VREFINT (1) + * @arg @ref LL_ADC_CHANNEL_TEMPSENSOR (1) + * + * (1) On STM32F1, parameter available only on ADC instance: ADC1.\n + * (1) For ADC channel read back from ADC register, + * comparison with internal channel parameter to be done + * using helper macro @ref __LL_ADC_CHANNEL_INTERNAL_TO_EXTERNAL(). + */ +__STATIC_INLINE uint32_t LL_ADC_INJ_GetSequencerRanks(ADC_TypeDef *ADCx, uint32_t Rank) +{ + register uint32_t tmpreg1 = (READ_BIT(ADCx->JSQR, ADC_JSQR_JL) >> ADC_JSQR_JL_Pos) + 1U; + + return (uint32_t)(READ_BIT(ADCx->JSQR, + ADC_CHANNEL_ID_NUMBER_MASK << (5U * (uint8_t)(((Rank) + 3U) - (tmpreg1)))) + >> (5U * (uint8_t)(((Rank) + 3U) - (tmpreg1))) + ); +} + +/** + * @brief Set ADC group injected conversion trigger: + * independent or from ADC group regular. + * @note This mode can be used to extend number of data registers + * updated after one ADC conversion trigger and with data + * permanently kept (not erased by successive conversions of scan of + * ADC sequencer ranks), up to 5 data registers: + * 1 data register on ADC group regular, 4 data registers + * on ADC group injected. + * @note If ADC group injected injected trigger source is set to an + * external trigger, this feature must be must be set to + * independent trigger. + * ADC group injected automatic trigger is compliant only with + * group injected trigger source set to SW start, without any + * further action on ADC group injected conversion start or stop: + * in this case, ADC group injected is controlled only + * from ADC group regular. + * @note It is not possible to enable both ADC group injected + * auto-injected mode and sequencer discontinuous mode. + * @rmtoll CR1 JAUTO LL_ADC_INJ_SetTrigAuto + * @param ADCx ADC instance + * @param TrigAuto This parameter can be one of the following values: + * @arg @ref LL_ADC_INJ_TRIG_INDEPENDENT + * @arg @ref LL_ADC_INJ_TRIG_FROM_GRP_REGULAR + * @retval None + */ +__STATIC_INLINE void LL_ADC_INJ_SetTrigAuto(ADC_TypeDef *ADCx, uint32_t TrigAuto) +{ + MODIFY_REG(ADCx->CR1, ADC_CR1_JAUTO, TrigAuto); +} + +/** + * @brief Get ADC group injected conversion trigger: + * independent or from ADC group regular. + * @rmtoll CR1 JAUTO LL_ADC_INJ_GetTrigAuto + * @param ADCx ADC instance + * @retval Returned value can be one of the following values: + * @arg @ref LL_ADC_INJ_TRIG_INDEPENDENT + * @arg @ref LL_ADC_INJ_TRIG_FROM_GRP_REGULAR + */ +__STATIC_INLINE uint32_t LL_ADC_INJ_GetTrigAuto(ADC_TypeDef *ADCx) +{ + return (uint32_t)(READ_BIT(ADCx->CR1, ADC_CR1_JAUTO)); +} + +/** + * @brief Set ADC group injected offset. + * @note It sets: + * - ADC group injected rank to which the offset programmed + * will be applied + * - Offset level (offset to be subtracted from the raw + * converted data). + * Caution: Offset format is dependent to ADC resolution: + * offset has to be left-aligned on bit 11, the LSB (right bits) + * are set to 0. + * @note Offset cannot be enabled or disabled. + * To emulate offset disabled, set an offset value equal to 0. + * @rmtoll JOFR1 JOFFSET1 LL_ADC_INJ_SetOffset\n + * JOFR2 JOFFSET2 LL_ADC_INJ_SetOffset\n + * JOFR3 JOFFSET3 LL_ADC_INJ_SetOffset\n + * JOFR4 JOFFSET4 LL_ADC_INJ_SetOffset + * @param ADCx ADC instance + * @param Rank This parameter can be one of the following values: + * @arg @ref LL_ADC_INJ_RANK_1 + * @arg @ref LL_ADC_INJ_RANK_2 + * @arg @ref LL_ADC_INJ_RANK_3 + * @arg @ref LL_ADC_INJ_RANK_4 + * @param OffsetLevel Value between Min_Data=0x000 and Max_Data=0xFFF + * @retval None + */ +__STATIC_INLINE void LL_ADC_INJ_SetOffset(ADC_TypeDef *ADCx, uint32_t Rank, uint32_t OffsetLevel) +{ + register __IO uint32_t *preg = __ADC_PTR_REG_OFFSET(ADCx->JOFR1, __ADC_MASK_SHIFT(Rank, ADC_INJ_JOFRX_REGOFFSET_MASK)); + + MODIFY_REG(*preg, + ADC_JOFR1_JOFFSET1, + OffsetLevel); +} + +/** + * @brief Get ADC group injected offset. + * @note It gives offset level (offset to be subtracted from the raw converted data). + * Caution: Offset format is dependent to ADC resolution: + * offset has to be left-aligned on bit 11, the LSB (right bits) + * are set to 0. + * @rmtoll JOFR1 JOFFSET1 LL_ADC_INJ_GetOffset\n + * JOFR2 JOFFSET2 LL_ADC_INJ_GetOffset\n + * JOFR3 JOFFSET3 LL_ADC_INJ_GetOffset\n + * JOFR4 JOFFSET4 LL_ADC_INJ_GetOffset + * @param ADCx ADC instance + * @param Rank This parameter can be one of the following values: + * @arg @ref LL_ADC_INJ_RANK_1 + * @arg @ref LL_ADC_INJ_RANK_2 + * @arg @ref LL_ADC_INJ_RANK_3 + * @arg @ref LL_ADC_INJ_RANK_4 + * @retval Value between Min_Data=0x000 and Max_Data=0xFFF + */ +__STATIC_INLINE uint32_t LL_ADC_INJ_GetOffset(ADC_TypeDef *ADCx, uint32_t Rank) +{ + register __IO uint32_t *preg = __ADC_PTR_REG_OFFSET(ADCx->JOFR1, __ADC_MASK_SHIFT(Rank, ADC_INJ_JOFRX_REGOFFSET_MASK)); + + return (uint32_t)(READ_BIT(*preg, + ADC_JOFR1_JOFFSET1) + ); +} + +/** + * @} + */ + +/** @defgroup ADC_LL_EF_Configuration_Channels Configuration of ADC hierarchical scope: channels + * @{ + */ + +/** + * @brief Set sampling time of the selected ADC channel + * Unit: ADC clock cycles. + * @note On this device, sampling time is on channel scope: independently + * of channel mapped on ADC group regular or injected. + * @note In case of internal channel (VrefInt, TempSensor, ...) to be + * converted: + * sampling time constraints must be respected (sampling time can be + * adjusted in function of ADC clock frequency and sampling time + * setting). + * Refer to device datasheet for timings values (parameters TS_vrefint, + * TS_temp, ...). + * @note Conversion time is the addition of sampling time and processing time. + * Refer to reference manual for ADC processing time of + * this STM32 serie. + * @note In case of ADC conversion of internal channel (VrefInt, + * temperature sensor, ...), a sampling time minimum value + * is required. + * Refer to device datasheet. + * @rmtoll SMPR1 SMP17 LL_ADC_SetChannelSamplingTime\n + * SMPR1 SMP16 LL_ADC_SetChannelSamplingTime\n + * SMPR1 SMP15 LL_ADC_SetChannelSamplingTime\n + * SMPR1 SMP14 LL_ADC_SetChannelSamplingTime\n + * SMPR1 SMP13 LL_ADC_SetChannelSamplingTime\n + * SMPR1 SMP12 LL_ADC_SetChannelSamplingTime\n + * SMPR1 SMP11 LL_ADC_SetChannelSamplingTime\n + * SMPR1 SMP10 LL_ADC_SetChannelSamplingTime\n + * SMPR2 SMP9 LL_ADC_SetChannelSamplingTime\n + * SMPR2 SMP8 LL_ADC_SetChannelSamplingTime\n + * SMPR2 SMP7 LL_ADC_SetChannelSamplingTime\n + * SMPR2 SMP6 LL_ADC_SetChannelSamplingTime\n + * SMPR2 SMP5 LL_ADC_SetChannelSamplingTime\n + * SMPR2 SMP4 LL_ADC_SetChannelSamplingTime\n + * SMPR2 SMP3 LL_ADC_SetChannelSamplingTime\n + * SMPR2 SMP2 LL_ADC_SetChannelSamplingTime\n + * SMPR2 SMP1 LL_ADC_SetChannelSamplingTime\n + * SMPR2 SMP0 LL_ADC_SetChannelSamplingTime + * @param ADCx ADC instance + * @param Channel This parameter can be one of the following values: + * @arg @ref LL_ADC_CHANNEL_0 + * @arg @ref LL_ADC_CHANNEL_1 + * @arg @ref LL_ADC_CHANNEL_2 + * @arg @ref LL_ADC_CHANNEL_3 + * @arg @ref LL_ADC_CHANNEL_4 + * @arg @ref LL_ADC_CHANNEL_5 + * @arg @ref LL_ADC_CHANNEL_6 + * @arg @ref LL_ADC_CHANNEL_7 + * @arg @ref LL_ADC_CHANNEL_8 + * @arg @ref LL_ADC_CHANNEL_9 + * @arg @ref LL_ADC_CHANNEL_10 + * @arg @ref LL_ADC_CHANNEL_11 + * @arg @ref LL_ADC_CHANNEL_12 + * @arg @ref LL_ADC_CHANNEL_13 + * @arg @ref LL_ADC_CHANNEL_14 + * @arg @ref LL_ADC_CHANNEL_15 + * @arg @ref LL_ADC_CHANNEL_16 + * @arg @ref LL_ADC_CHANNEL_17 + * @arg @ref LL_ADC_CHANNEL_VREFINT (1) + * @arg @ref LL_ADC_CHANNEL_TEMPSENSOR (1) + * + * (1) On STM32F1, parameter available only on ADC instance: ADC1. + * @param SamplingTime This parameter can be one of the following values: + * @arg @ref LL_ADC_SAMPLINGTIME_1CYCLE_5 + * @arg @ref LL_ADC_SAMPLINGTIME_7CYCLES_5 + * @arg @ref LL_ADC_SAMPLINGTIME_13CYCLES_5 + * @arg @ref LL_ADC_SAMPLINGTIME_28CYCLES_5 + * @arg @ref LL_ADC_SAMPLINGTIME_41CYCLES_5 + * @arg @ref LL_ADC_SAMPLINGTIME_55CYCLES_5 + * @arg @ref LL_ADC_SAMPLINGTIME_71CYCLES_5 + * @arg @ref LL_ADC_SAMPLINGTIME_239CYCLES_5 + * @retval None + */ +__STATIC_INLINE void LL_ADC_SetChannelSamplingTime(ADC_TypeDef *ADCx, uint32_t Channel, uint32_t SamplingTime) +{ + /* Set bits with content of parameter "SamplingTime" with bits position */ + /* in register and register position depending on parameter "Channel". */ + /* Parameter "Channel" is used with masks because containing */ + /* other bits reserved for other purpose. */ + register __IO uint32_t *preg = __ADC_PTR_REG_OFFSET(ADCx->SMPR1, __ADC_MASK_SHIFT(Channel, ADC_CHANNEL_SMPRX_REGOFFSET_MASK)); + + MODIFY_REG(*preg, + ADC_SMPR2_SMP0 << __ADC_MASK_SHIFT(Channel, ADC_CHANNEL_SMPx_BITOFFSET_MASK), + SamplingTime << __ADC_MASK_SHIFT(Channel, ADC_CHANNEL_SMPx_BITOFFSET_MASK)); +} + +/** + * @brief Get sampling time of the selected ADC channel + * Unit: ADC clock cycles. + * @note On this device, sampling time is on channel scope: independently + * of channel mapped on ADC group regular or injected. + * @note Conversion time is the addition of sampling time and processing time. + * Refer to reference manual for ADC processing time of + * this STM32 serie. + * @rmtoll SMPR1 SMP17 LL_ADC_GetChannelSamplingTime\n + * SMPR1 SMP16 LL_ADC_GetChannelSamplingTime\n + * SMPR1 SMP15 LL_ADC_GetChannelSamplingTime\n + * SMPR1 SMP14 LL_ADC_GetChannelSamplingTime\n + * SMPR1 SMP13 LL_ADC_GetChannelSamplingTime\n + * SMPR1 SMP12 LL_ADC_GetChannelSamplingTime\n + * SMPR1 SMP11 LL_ADC_GetChannelSamplingTime\n + * SMPR1 SMP10 LL_ADC_GetChannelSamplingTime\n + * SMPR2 SMP9 LL_ADC_GetChannelSamplingTime\n + * SMPR2 SMP8 LL_ADC_GetChannelSamplingTime\n + * SMPR2 SMP7 LL_ADC_GetChannelSamplingTime\n + * SMPR2 SMP6 LL_ADC_GetChannelSamplingTime\n + * SMPR2 SMP5 LL_ADC_GetChannelSamplingTime\n + * SMPR2 SMP4 LL_ADC_GetChannelSamplingTime\n + * SMPR2 SMP3 LL_ADC_GetChannelSamplingTime\n + * SMPR2 SMP2 LL_ADC_GetChannelSamplingTime\n + * SMPR2 SMP1 LL_ADC_GetChannelSamplingTime\n + * SMPR2 SMP0 LL_ADC_GetChannelSamplingTime + * @param ADCx ADC instance + * @param Channel This parameter can be one of the following values: + * @arg @ref LL_ADC_CHANNEL_0 + * @arg @ref LL_ADC_CHANNEL_1 + * @arg @ref LL_ADC_CHANNEL_2 + * @arg @ref LL_ADC_CHANNEL_3 + * @arg @ref LL_ADC_CHANNEL_4 + * @arg @ref LL_ADC_CHANNEL_5 + * @arg @ref LL_ADC_CHANNEL_6 + * @arg @ref LL_ADC_CHANNEL_7 + * @arg @ref LL_ADC_CHANNEL_8 + * @arg @ref LL_ADC_CHANNEL_9 + * @arg @ref LL_ADC_CHANNEL_10 + * @arg @ref LL_ADC_CHANNEL_11 + * @arg @ref LL_ADC_CHANNEL_12 + * @arg @ref LL_ADC_CHANNEL_13 + * @arg @ref LL_ADC_CHANNEL_14 + * @arg @ref LL_ADC_CHANNEL_15 + * @arg @ref LL_ADC_CHANNEL_16 + * @arg @ref LL_ADC_CHANNEL_17 + * @arg @ref LL_ADC_CHANNEL_VREFINT (1) + * @arg @ref LL_ADC_CHANNEL_TEMPSENSOR (1) + * + * (1) On STM32F1, parameter available only on ADC instance: ADC1. + * @retval Returned value can be one of the following values: + * @arg @ref LL_ADC_SAMPLINGTIME_1CYCLE_5 + * @arg @ref LL_ADC_SAMPLINGTIME_7CYCLES_5 + * @arg @ref LL_ADC_SAMPLINGTIME_13CYCLES_5 + * @arg @ref LL_ADC_SAMPLINGTIME_28CYCLES_5 + * @arg @ref LL_ADC_SAMPLINGTIME_41CYCLES_5 + * @arg @ref LL_ADC_SAMPLINGTIME_55CYCLES_5 + * @arg @ref LL_ADC_SAMPLINGTIME_71CYCLES_5 + * @arg @ref LL_ADC_SAMPLINGTIME_239CYCLES_5 + */ +__STATIC_INLINE uint32_t LL_ADC_GetChannelSamplingTime(ADC_TypeDef *ADCx, uint32_t Channel) +{ + register __IO uint32_t *preg = __ADC_PTR_REG_OFFSET(ADCx->SMPR1, __ADC_MASK_SHIFT(Channel, ADC_CHANNEL_SMPRX_REGOFFSET_MASK)); + + return (uint32_t)(READ_BIT(*preg, + ADC_SMPR2_SMP0 << __ADC_MASK_SHIFT(Channel, ADC_CHANNEL_SMPx_BITOFFSET_MASK)) + >> __ADC_MASK_SHIFT(Channel, ADC_CHANNEL_SMPx_BITOFFSET_MASK) + ); +} + +/** + * @} + */ + +/** @defgroup ADC_LL_EF_Configuration_ADC_AnalogWatchdog Configuration of ADC transversal scope: analog watchdog + * @{ + */ + +/** + * @brief Set ADC analog watchdog monitored channels: + * a single channel or all channels, + * on ADC groups regular and-or injected. + * @note Once monitored channels are selected, analog watchdog + * is enabled. + * @note In case of need to define a single channel to monitor + * with analog watchdog from sequencer channel definition, + * use helper macro @ref __LL_ADC_ANALOGWD_CHANNEL_GROUP(). + * @note On this STM32 serie, there is only 1 kind of analog watchdog + * instance: + * - AWD standard (instance AWD1): + * - channels monitored: can monitor 1 channel or all channels. + * - groups monitored: ADC groups regular and-or injected. + * - resolution: resolution is not limited (corresponds to + * ADC resolution configured). + * @rmtoll CR1 AWD1CH LL_ADC_SetAnalogWDMonitChannels\n + * CR1 AWD1SGL LL_ADC_SetAnalogWDMonitChannels\n + * CR1 AWD1EN LL_ADC_SetAnalogWDMonitChannels + * @param ADCx ADC instance + * @param AWDChannelGroup This parameter can be one of the following values: + * @arg @ref LL_ADC_AWD_DISABLE + * @arg @ref LL_ADC_AWD_ALL_CHANNELS_REG + * @arg @ref LL_ADC_AWD_ALL_CHANNELS_INJ + * @arg @ref LL_ADC_AWD_ALL_CHANNELS_REG_INJ + * @arg @ref LL_ADC_AWD_CHANNEL_0_REG + * @arg @ref LL_ADC_AWD_CHANNEL_0_INJ + * @arg @ref LL_ADC_AWD_CHANNEL_0_REG_INJ + * @arg @ref LL_ADC_AWD_CHANNEL_1_REG + * @arg @ref LL_ADC_AWD_CHANNEL_1_INJ + * @arg @ref LL_ADC_AWD_CHANNEL_1_REG_INJ + * @arg @ref LL_ADC_AWD_CHANNEL_2_REG + * @arg @ref LL_ADC_AWD_CHANNEL_2_INJ + * @arg @ref LL_ADC_AWD_CHANNEL_2_REG_INJ + * @arg @ref LL_ADC_AWD_CHANNEL_3_REG + * @arg @ref LL_ADC_AWD_CHANNEL_3_INJ + * @arg @ref LL_ADC_AWD_CHANNEL_3_REG_INJ + * @arg @ref LL_ADC_AWD_CHANNEL_4_REG + * @arg @ref LL_ADC_AWD_CHANNEL_4_INJ + * @arg @ref LL_ADC_AWD_CHANNEL_4_REG_INJ + * @arg @ref LL_ADC_AWD_CHANNEL_5_REG + * @arg @ref LL_ADC_AWD_CHANNEL_5_INJ + * @arg @ref LL_ADC_AWD_CHANNEL_5_REG_INJ + * @arg @ref LL_ADC_AWD_CHANNEL_6_REG + * @arg @ref LL_ADC_AWD_CHANNEL_6_INJ + * @arg @ref LL_ADC_AWD_CHANNEL_6_REG_INJ + * @arg @ref LL_ADC_AWD_CHANNEL_7_REG + * @arg @ref LL_ADC_AWD_CHANNEL_7_INJ + * @arg @ref LL_ADC_AWD_CHANNEL_7_REG_INJ + * @arg @ref LL_ADC_AWD_CHANNEL_8_REG + * @arg @ref LL_ADC_AWD_CHANNEL_8_INJ + * @arg @ref LL_ADC_AWD_CHANNEL_8_REG_INJ + * @arg @ref LL_ADC_AWD_CHANNEL_9_REG + * @arg @ref LL_ADC_AWD_CHANNEL_9_INJ + * @arg @ref LL_ADC_AWD_CHANNEL_9_REG_INJ + * @arg @ref LL_ADC_AWD_CHANNEL_10_REG + * @arg @ref LL_ADC_AWD_CHANNEL_10_INJ + * @arg @ref LL_ADC_AWD_CHANNEL_10_REG_INJ + * @arg @ref LL_ADC_AWD_CHANNEL_11_REG + * @arg @ref LL_ADC_AWD_CHANNEL_11_INJ + * @arg @ref LL_ADC_AWD_CHANNEL_11_REG_INJ + * @arg @ref LL_ADC_AWD_CHANNEL_12_REG + * @arg @ref LL_ADC_AWD_CHANNEL_12_INJ + * @arg @ref LL_ADC_AWD_CHANNEL_12_REG_INJ + * @arg @ref LL_ADC_AWD_CHANNEL_13_REG + * @arg @ref LL_ADC_AWD_CHANNEL_13_INJ + * @arg @ref LL_ADC_AWD_CHANNEL_13_REG_INJ + * @arg @ref LL_ADC_AWD_CHANNEL_14_REG + * @arg @ref LL_ADC_AWD_CHANNEL_14_INJ + * @arg @ref LL_ADC_AWD_CHANNEL_14_REG_INJ + * @arg @ref LL_ADC_AWD_CHANNEL_15_REG + * @arg @ref LL_ADC_AWD_CHANNEL_15_INJ + * @arg @ref LL_ADC_AWD_CHANNEL_15_REG_INJ + * @arg @ref LL_ADC_AWD_CHANNEL_16_REG + * @arg @ref LL_ADC_AWD_CHANNEL_16_INJ + * @arg @ref LL_ADC_AWD_CHANNEL_16_REG_INJ + * @arg @ref LL_ADC_AWD_CHANNEL_17_REG + * @arg @ref LL_ADC_AWD_CHANNEL_17_INJ + * @arg @ref LL_ADC_AWD_CHANNEL_17_REG_INJ + * @arg @ref LL_ADC_AWD_CH_VREFINT_REG (1) + * @arg @ref LL_ADC_AWD_CH_VREFINT_INJ (1) + * @arg @ref LL_ADC_AWD_CH_VREFINT_REG_INJ (1) + * @arg @ref LL_ADC_AWD_CH_TEMPSENSOR_REG (1) + * @arg @ref LL_ADC_AWD_CH_TEMPSENSOR_INJ (1) + * @arg @ref LL_ADC_AWD_CH_TEMPSENSOR_REG_INJ (1) + * + * (1) On STM32F1, parameter available only on ADC instance: ADC1. + * @retval None + */ +__STATIC_INLINE void LL_ADC_SetAnalogWDMonitChannels(ADC_TypeDef *ADCx, uint32_t AWDChannelGroup) +{ + MODIFY_REG(ADCx->CR1, + (ADC_CR1_AWDEN | ADC_CR1_JAWDEN | ADC_CR1_AWDSGL | ADC_CR1_AWDCH), + AWDChannelGroup); +} + +/** + * @brief Get ADC analog watchdog monitored channel. + * @note Usage of the returned channel number: + * - To reinject this channel into another function LL_ADC_xxx: + * the returned channel number is only partly formatted on definition + * of literals LL_ADC_CHANNEL_x. Therefore, it has to be compared + * with parts of literals LL_ADC_CHANNEL_x or using + * helper macro @ref __LL_ADC_CHANNEL_TO_DECIMAL_NB(). + * Then the selected literal LL_ADC_CHANNEL_x can be used + * as parameter for another function. + * - To get the channel number in decimal format: + * process the returned value with the helper macro + * @ref __LL_ADC_CHANNEL_TO_DECIMAL_NB(). + * Applicable only when the analog watchdog is set to monitor + * one channel. + * @note On this STM32 serie, there is only 1 kind of analog watchdog + * instance: + * - AWD standard (instance AWD1): + * - channels monitored: can monitor 1 channel or all channels. + * - groups monitored: ADC groups regular and-or injected. + * - resolution: resolution is not limited (corresponds to + * ADC resolution configured). + * @rmtoll CR1 AWD1CH LL_ADC_GetAnalogWDMonitChannels\n + * CR1 AWD1SGL LL_ADC_GetAnalogWDMonitChannels\n + * CR1 AWD1EN LL_ADC_GetAnalogWDMonitChannels + * @param ADCx ADC instance + * @retval Returned value can be one of the following values: + * @arg @ref LL_ADC_AWD_DISABLE + * @arg @ref LL_ADC_AWD_ALL_CHANNELS_REG + * @arg @ref LL_ADC_AWD_ALL_CHANNELS_INJ + * @arg @ref LL_ADC_AWD_ALL_CHANNELS_REG_INJ + * @arg @ref LL_ADC_AWD_CHANNEL_0_REG + * @arg @ref LL_ADC_AWD_CHANNEL_0_INJ + * @arg @ref LL_ADC_AWD_CHANNEL_0_REG_INJ + * @arg @ref LL_ADC_AWD_CHANNEL_1_REG + * @arg @ref LL_ADC_AWD_CHANNEL_1_INJ + * @arg @ref LL_ADC_AWD_CHANNEL_1_REG_INJ + * @arg @ref LL_ADC_AWD_CHANNEL_2_REG + * @arg @ref LL_ADC_AWD_CHANNEL_2_INJ + * @arg @ref LL_ADC_AWD_CHANNEL_2_REG_INJ + * @arg @ref LL_ADC_AWD_CHANNEL_3_REG + * @arg @ref LL_ADC_AWD_CHANNEL_3_INJ + * @arg @ref LL_ADC_AWD_CHANNEL_3_REG_INJ + * @arg @ref LL_ADC_AWD_CHANNEL_4_REG + * @arg @ref LL_ADC_AWD_CHANNEL_4_INJ + * @arg @ref LL_ADC_AWD_CHANNEL_4_REG_INJ + * @arg @ref LL_ADC_AWD_CHANNEL_5_REG + * @arg @ref LL_ADC_AWD_CHANNEL_5_INJ + * @arg @ref LL_ADC_AWD_CHANNEL_5_REG_INJ + * @arg @ref LL_ADC_AWD_CHANNEL_6_REG + * @arg @ref LL_ADC_AWD_CHANNEL_6_INJ + * @arg @ref LL_ADC_AWD_CHANNEL_6_REG_INJ + * @arg @ref LL_ADC_AWD_CHANNEL_7_REG + * @arg @ref LL_ADC_AWD_CHANNEL_7_INJ + * @arg @ref LL_ADC_AWD_CHANNEL_7_REG_INJ + * @arg @ref LL_ADC_AWD_CHANNEL_8_REG + * @arg @ref LL_ADC_AWD_CHANNEL_8_INJ + * @arg @ref LL_ADC_AWD_CHANNEL_8_REG_INJ + * @arg @ref LL_ADC_AWD_CHANNEL_9_REG + * @arg @ref LL_ADC_AWD_CHANNEL_9_INJ + * @arg @ref LL_ADC_AWD_CHANNEL_9_REG_INJ + * @arg @ref LL_ADC_AWD_CHANNEL_10_REG + * @arg @ref LL_ADC_AWD_CHANNEL_10_INJ + * @arg @ref LL_ADC_AWD_CHANNEL_10_REG_INJ + * @arg @ref LL_ADC_AWD_CHANNEL_11_REG + * @arg @ref LL_ADC_AWD_CHANNEL_11_INJ + * @arg @ref LL_ADC_AWD_CHANNEL_11_REG_INJ + * @arg @ref LL_ADC_AWD_CHANNEL_12_REG + * @arg @ref LL_ADC_AWD_CHANNEL_12_INJ + * @arg @ref LL_ADC_AWD_CHANNEL_12_REG_INJ + * @arg @ref LL_ADC_AWD_CHANNEL_13_REG + * @arg @ref LL_ADC_AWD_CHANNEL_13_INJ + * @arg @ref LL_ADC_AWD_CHANNEL_13_REG_INJ + * @arg @ref LL_ADC_AWD_CHANNEL_14_REG + * @arg @ref LL_ADC_AWD_CHANNEL_14_INJ + * @arg @ref LL_ADC_AWD_CHANNEL_14_REG_INJ + * @arg @ref LL_ADC_AWD_CHANNEL_15_REG + * @arg @ref LL_ADC_AWD_CHANNEL_15_INJ + * @arg @ref LL_ADC_AWD_CHANNEL_15_REG_INJ + * @arg @ref LL_ADC_AWD_CHANNEL_16_REG + * @arg @ref LL_ADC_AWD_CHANNEL_16_INJ + * @arg @ref LL_ADC_AWD_CHANNEL_16_REG_INJ + * @arg @ref LL_ADC_AWD_CHANNEL_17_REG + * @arg @ref LL_ADC_AWD_CHANNEL_17_INJ + * @arg @ref LL_ADC_AWD_CHANNEL_17_REG_INJ + */ +__STATIC_INLINE uint32_t LL_ADC_GetAnalogWDMonitChannels(ADC_TypeDef *ADCx) +{ + return (uint32_t)(READ_BIT(ADCx->CR1, (ADC_CR1_AWDEN | ADC_CR1_JAWDEN | ADC_CR1_AWDSGL | ADC_CR1_AWDCH))); +} + +/** + * @brief Set ADC analog watchdog threshold value of threshold + * high or low. + * @note On this STM32 serie, there is only 1 kind of analog watchdog + * instance: + * - AWD standard (instance AWD1): + * - channels monitored: can monitor 1 channel or all channels. + * - groups monitored: ADC groups regular and-or injected. + * - resolution: resolution is not limited (corresponds to + * ADC resolution configured). + * @rmtoll HTR HT LL_ADC_SetAnalogWDThresholds\n + * LTR LT LL_ADC_SetAnalogWDThresholds + * @param ADCx ADC instance + * @param AWDThresholdsHighLow This parameter can be one of the following values: + * @arg @ref LL_ADC_AWD_THRESHOLD_HIGH + * @arg @ref LL_ADC_AWD_THRESHOLD_LOW + * @param AWDThresholdValue: Value between Min_Data=0x000 and Max_Data=0xFFF + * @retval None + */ +__STATIC_INLINE void LL_ADC_SetAnalogWDThresholds(ADC_TypeDef *ADCx, uint32_t AWDThresholdsHighLow, uint32_t AWDThresholdValue) +{ + register __IO uint32_t *preg = __ADC_PTR_REG_OFFSET(ADCx->HTR, AWDThresholdsHighLow); + + MODIFY_REG(*preg, + ADC_HTR_HT, + AWDThresholdValue); +} + +/** + * @brief Get ADC analog watchdog threshold value of threshold high or + * threshold low. + * @note In case of ADC resolution different of 12 bits, + * analog watchdog thresholds data require a specific shift. + * Use helper macro @ref __LL_ADC_ANALOGWD_GET_THRESHOLD_RESOLUTION(). + * @rmtoll HTR HT LL_ADC_GetAnalogWDThresholds\n + * LTR LT LL_ADC_GetAnalogWDThresholds + * @param ADCx ADC instance + * @param AWDThresholdsHighLow This parameter can be one of the following values: + * @arg @ref LL_ADC_AWD_THRESHOLD_HIGH + * @arg @ref LL_ADC_AWD_THRESHOLD_LOW + * @retval Value between Min_Data=0x000 and Max_Data=0xFFF +*/ +__STATIC_INLINE uint32_t LL_ADC_GetAnalogWDThresholds(ADC_TypeDef *ADCx, uint32_t AWDThresholdsHighLow) +{ + register __IO uint32_t *preg = __ADC_PTR_REG_OFFSET(ADCx->HTR, AWDThresholdsHighLow); + + return (uint32_t)(READ_BIT(*preg, ADC_HTR_HT)); +} + +/** + * @} + */ + +/** @defgroup ADC_LL_EF_Configuration_ADC_Multimode Configuration of ADC hierarchical scope: multimode + * @{ + */ + +#if defined(ADC_MULTIMODE_SUPPORT) +/** + * @brief Set ADC multimode configuration to operate in independent mode + * or multimode (for devices with several ADC instances). + * @note If multimode configuration: the selected ADC instance is + * either master or slave depending on hardware. + * Refer to reference manual. + * @rmtoll CR1 DUALMOD LL_ADC_SetMultimode + * @param ADCxy_COMMON ADC common instance + * (can be set directly from CMSIS definition or by using helper macro @ref __LL_ADC_COMMON_INSTANCE() ) + * @param Multimode This parameter can be one of the following values: + * @arg @ref LL_ADC_MULTI_INDEPENDENT + * @arg @ref LL_ADC_MULTI_DUAL_REG_SIMULT + * @arg @ref LL_ADC_MULTI_DUAL_REG_INTERL_FAST + * @arg @ref LL_ADC_MULTI_DUAL_REG_INTERL_SLOW + * @arg @ref LL_ADC_MULTI_DUAL_INJ_SIMULT + * @arg @ref LL_ADC_MULTI_DUAL_INJ_ALTERN + * @arg @ref LL_ADC_MULTI_DUAL_REG_SIM_INJ_SIM + * @arg @ref LL_ADC_MULTI_DUAL_REG_SIM_INJ_ALT + * @arg @ref LL_ADC_MULTI_DUAL_REG_INTFAST_INJ_SIM + * @arg @ref LL_ADC_MULTI_DUAL_REG_INTSLOW_INJ_SIM + * @retval None + */ +__STATIC_INLINE void LL_ADC_SetMultimode(ADC_Common_TypeDef *ADCxy_COMMON, uint32_t Multimode) +{ + MODIFY_REG(ADCxy_COMMON->CR1, ADC_CR1_DUALMOD, Multimode); +} + +/** + * @brief Get ADC multimode configuration to operate in independent mode + * or multimode (for devices with several ADC instances). + * @note If multimode configuration: the selected ADC instance is + * either master or slave depending on hardware. + * Refer to reference manual. + * @rmtoll CR1 DUALMOD LL_ADC_GetMultimode + * @param ADCxy_COMMON ADC common instance + * (can be set directly from CMSIS definition or by using helper macro @ref __LL_ADC_COMMON_INSTANCE() ) + * @retval Returned value can be one of the following values: + * @arg @ref LL_ADC_MULTI_INDEPENDENT + * @arg @ref LL_ADC_MULTI_DUAL_REG_SIMULT + * @arg @ref LL_ADC_MULTI_DUAL_REG_INTERL_FAST + * @arg @ref LL_ADC_MULTI_DUAL_REG_INTERL_SLOW + * @arg @ref LL_ADC_MULTI_DUAL_INJ_SIMULT + * @arg @ref LL_ADC_MULTI_DUAL_INJ_ALTERN + * @arg @ref LL_ADC_MULTI_DUAL_REG_SIM_INJ_SIM + * @arg @ref LL_ADC_MULTI_DUAL_REG_SIM_INJ_ALT + * @arg @ref LL_ADC_MULTI_DUAL_REG_INTFAST_INJ_SIM + * @arg @ref LL_ADC_MULTI_DUAL_REG_INTSLOW_INJ_SIM + */ +__STATIC_INLINE uint32_t LL_ADC_GetMultimode(ADC_Common_TypeDef *ADCxy_COMMON) +{ + return (uint32_t)(READ_BIT(ADCxy_COMMON->CR1, ADC_CR1_DUALMOD)); +} + +#endif /* ADC_MULTIMODE_SUPPORT */ + +/** + * @} + */ +/** @defgroup ADC_LL_EF_Operation_ADC_Instance Operation on ADC hierarchical scope: ADC instance + * @{ + */ + +/** + * @brief Enable the selected ADC instance. + * @note On this STM32 serie, after ADC enable, a delay for + * ADC internal analog stabilization is required before performing a + * ADC conversion start. + * Refer to device datasheet, parameter tSTAB. + * @rmtoll CR2 ADON LL_ADC_Enable + * @param ADCx ADC instance + * @retval None + */ +__STATIC_INLINE void LL_ADC_Enable(ADC_TypeDef *ADCx) +{ + SET_BIT(ADCx->CR2, ADC_CR2_ADON); +} + +/** + * @brief Disable the selected ADC instance. + * @rmtoll CR2 ADON LL_ADC_Disable + * @param ADCx ADC instance + * @retval None + */ +__STATIC_INLINE void LL_ADC_Disable(ADC_TypeDef *ADCx) +{ + CLEAR_BIT(ADCx->CR2, ADC_CR2_ADON); +} + +/** + * @brief Get the selected ADC instance enable state. + * @rmtoll CR2 ADON LL_ADC_IsEnabled + * @param ADCx ADC instance + * @retval 0: ADC is disabled, 1: ADC is enabled. + */ +__STATIC_INLINE uint32_t LL_ADC_IsEnabled(ADC_TypeDef *ADCx) +{ + return (READ_BIT(ADCx->CR2, ADC_CR2_ADON) == (ADC_CR2_ADON)); +} + +/** + * @brief Start ADC calibration in the mode single-ended + * or differential (for devices with differential mode available). + * @note On this STM32 serie, before starting a calibration, + * ADC must be disabled. + * A minimum number of ADC clock cycles are required + * between ADC disable state and calibration start. + * Refer to literal @ref LL_ADC_DELAY_DISABLE_CALIB_ADC_CYCLES. + * @note On this STM32 serie, hardware prerequisite before starting a calibration: + the ADC must have been in power-on state for at least + two ADC clock cycles. + * @rmtoll CR2 CAL LL_ADC_StartCalibration + * @param ADCx ADC instance + * @retval None + */ +__STATIC_INLINE void LL_ADC_StartCalibration(ADC_TypeDef *ADCx) +{ + SET_BIT(ADCx->CR2, ADC_CR2_CAL); +} + +/** + * @brief Get ADC calibration state. + * @rmtoll CR2 CAL LL_ADC_IsCalibrationOnGoing + * @param ADCx ADC instance + * @retval 0: calibration complete, 1: calibration in progress. + */ +__STATIC_INLINE uint32_t LL_ADC_IsCalibrationOnGoing(ADC_TypeDef *ADCx) +{ + return (READ_BIT(ADCx->CR2, ADC_CR2_CAL) == (ADC_CR2_CAL)); +} + +/** + * @} + */ + +/** @defgroup ADC_LL_EF_Operation_ADC_Group_Regular Operation on ADC hierarchical scope: group regular + * @{ + */ + +/** + * @brief Start ADC group regular conversion. + * @note On this STM32 serie, this function is relevant only for + * internal trigger (SW start), not for external trigger: + * - If ADC trigger has been set to software start, ADC conversion + * starts immediately. + * - If ADC trigger has been set to external trigger, ADC conversion + * start must be performed using function + * @ref LL_ADC_REG_StartConversionExtTrig(). + * (if external trigger edge would have been set during ADC other + * settings, ADC conversion would start at trigger event + * as soon as ADC is enabled). + * @rmtoll CR2 SWSTART LL_ADC_REG_StartConversionSWStart + * @param ADCx ADC instance + * @retval None + */ +__STATIC_INLINE void LL_ADC_REG_StartConversionSWStart(ADC_TypeDef *ADCx) +{ + SET_BIT(ADCx->CR2, (ADC_CR2_SWSTART | ADC_CR2_EXTTRIG)); +} + +/** + * @brief Start ADC group regular conversion from external trigger. + * @note ADC conversion will start at next trigger event (on the selected + * trigger edge) following the ADC start conversion command. + * @note On this STM32 serie, this function is relevant for + * ADC conversion start from external trigger. + * If internal trigger (SW start) is needed, perform ADC conversion + * start using function @ref LL_ADC_REG_StartConversionSWStart(). + * @rmtoll CR2 EXTEN LL_ADC_REG_StartConversionExtTrig + * @param ExternalTriggerEdge This parameter can be one of the following values: + * @arg @ref LL_ADC_REG_TRIG_EXT_RISING + * @param ADCx ADC instance + * @retval None + */ +__STATIC_INLINE void LL_ADC_REG_StartConversionExtTrig(ADC_TypeDef *ADCx, uint32_t ExternalTriggerEdge) +{ + SET_BIT(ADCx->CR2, ExternalTriggerEdge); +} + +/** + * @brief Stop ADC group regular conversion from external trigger. + * @note No more ADC conversion will start at next trigger event + * following the ADC stop conversion command. + * If a conversion is on-going, it will be completed. + * @note On this STM32 serie, there is no specific command + * to stop a conversion on-going or to stop ADC converting + * in continuous mode. These actions can be performed + * using function @ref LL_ADC_Disable(). + * @rmtoll CR2 EXTSEL LL_ADC_REG_StopConversionExtTrig + * @param ADCx ADC instance + * @retval None + */ +__STATIC_INLINE void LL_ADC_REG_StopConversionExtTrig(ADC_TypeDef *ADCx) +{ + CLEAR_BIT(ADCx->CR2, ADC_CR2_EXTTRIG); +} + +/** + * @brief Get ADC group regular conversion data, range fit for + * all ADC configurations: all ADC resolutions and + * all oversampling increased data width (for devices + * with feature oversampling). + * @rmtoll DR RDATA LL_ADC_REG_ReadConversionData32 + * @param ADCx ADC instance + * @retval Value between Min_Data=0x00000000 and Max_Data=0xFFFFFFFF + */ +__STATIC_INLINE uint32_t LL_ADC_REG_ReadConversionData32(ADC_TypeDef *ADCx) +{ + return (uint16_t)(READ_BIT(ADCx->DR, ADC_DR_DATA)); +} + +/** + * @brief Get ADC group regular conversion data, range fit for + * ADC resolution 12 bits. + * @note For devices with feature oversampling: Oversampling + * can increase data width, function for extended range + * may be needed: @ref LL_ADC_REG_ReadConversionData32. + * @rmtoll DR RDATA LL_ADC_REG_ReadConversionData12 + * @param ADCx ADC instance + * @retval Value between Min_Data=0x000 and Max_Data=0xFFF + */ +__STATIC_INLINE uint16_t LL_ADC_REG_ReadConversionData12(ADC_TypeDef *ADCx) +{ + return (uint16_t)(READ_BIT(ADCx->DR, ADC_DR_DATA)); +} + +#if defined(ADC_MULTIMODE_SUPPORT) +/** + * @brief Get ADC multimode conversion data of ADC master, ADC slave + * or raw data with ADC master and slave concatenated. + * @note If raw data with ADC master and slave concatenated is retrieved, + * a macro is available to get the conversion data of + * ADC master or ADC slave: see helper macro + * @ref __LL_ADC_MULTI_CONV_DATA_MASTER_SLAVE(). + * (however this macro is mainly intended for multimode + * transfer by DMA, because this function can do the same + * by getting multimode conversion data of ADC master or ADC slave + * separately). + * @rmtoll DR DATA LL_ADC_REG_ReadMultiConversionData32\n + * DR ADC2DATA LL_ADC_REG_ReadMultiConversionData32 + * @param ADCx ADC instance + * (can be set directly from CMSIS definition or by using helper macro @ref __LL_ADC_COMMON_INSTANCE() ) + * @param ConversionData This parameter can be one of the following values: + * @arg @ref LL_ADC_MULTI_MASTER + * @arg @ref LL_ADC_MULTI_SLAVE + * @arg @ref LL_ADC_MULTI_MASTER_SLAVE + * @retval Value between Min_Data=0x00000000 and Max_Data=0xFFFFFFFF + */ +__STATIC_INLINE uint32_t LL_ADC_REG_ReadMultiConversionData32(ADC_TypeDef *ADCx, uint32_t ConversionData) +{ + return (uint32_t)(READ_BIT(ADCx->DR, + ADC_DR_ADC2DATA) + >> POSITION_VAL(ConversionData) + ); +} +#endif /* ADC_MULTIMODE_SUPPORT */ + +/** + * @} + */ + +/** @defgroup ADC_LL_EF_Operation_ADC_Group_Injected Operation on ADC hierarchical scope: group injected + * @{ + */ + +/** + * @brief Start ADC group injected conversion. + * @note On this STM32 serie, this function is relevant only for + * internal trigger (SW start), not for external trigger: + * - If ADC trigger has been set to software start, ADC conversion + * starts immediately. + * - If ADC trigger has been set to external trigger, ADC conversion + * start must be performed using function + * @ref LL_ADC_INJ_StartConversionExtTrig(). + * (if external trigger edge would have been set during ADC other + * settings, ADC conversion would start at trigger event + * as soon as ADC is enabled). + * @rmtoll CR2 JSWSTART LL_ADC_INJ_StartConversionSWStart + * @param ADCx ADC instance + * @retval None + */ +__STATIC_INLINE void LL_ADC_INJ_StartConversionSWStart(ADC_TypeDef *ADCx) +{ + SET_BIT(ADCx->CR2, (ADC_CR2_JSWSTART | ADC_CR2_JEXTTRIG)); +} + +/** + * @brief Start ADC group injected conversion from external trigger. + * @note ADC conversion will start at next trigger event (on the selected + * trigger edge) following the ADC start conversion command. + * @note On this STM32 serie, this function is relevant for + * ADC conversion start from external trigger. + * If internal trigger (SW start) is needed, perform ADC conversion + * start using function @ref LL_ADC_INJ_StartConversionSWStart(). + * @rmtoll CR2 JEXTEN LL_ADC_INJ_StartConversionExtTrig + * @param ExternalTriggerEdge This parameter can be one of the following values: + * @arg @ref LL_ADC_INJ_TRIG_EXT_RISING + * @param ADCx ADC instance + * @retval None + */ +__STATIC_INLINE void LL_ADC_INJ_StartConversionExtTrig(ADC_TypeDef *ADCx, uint32_t ExternalTriggerEdge) +{ + SET_BIT(ADCx->CR2, ExternalTriggerEdge); +} + +/** + * @brief Stop ADC group injected conversion from external trigger. + * @note No more ADC conversion will start at next trigger event + * following the ADC stop conversion command. + * If a conversion is on-going, it will be completed. + * @note On this STM32 serie, there is no specific command + * to stop a conversion on-going or to stop ADC converting + * in continuous mode. These actions can be performed + * using function @ref LL_ADC_Disable(). + * @rmtoll CR2 JEXTSEL LL_ADC_INJ_StopConversionExtTrig + * @param ADCx ADC instance + * @retval None + */ +__STATIC_INLINE void LL_ADC_INJ_StopConversionExtTrig(ADC_TypeDef *ADCx) +{ + CLEAR_BIT(ADCx->CR2, ADC_CR2_JEXTTRIG); +} + +/** + * @brief Get ADC group regular conversion data, range fit for + * all ADC configurations: all ADC resolutions and + * all oversampling increased data width (for devices + * with feature oversampling). + * @rmtoll JDR1 JDATA LL_ADC_INJ_ReadConversionData32\n + * JDR2 JDATA LL_ADC_INJ_ReadConversionData32\n + * JDR3 JDATA LL_ADC_INJ_ReadConversionData32\n + * JDR4 JDATA LL_ADC_INJ_ReadConversionData32 + * @param ADCx ADC instance + * @param Rank This parameter can be one of the following values: + * @arg @ref LL_ADC_INJ_RANK_1 + * @arg @ref LL_ADC_INJ_RANK_2 + * @arg @ref LL_ADC_INJ_RANK_3 + * @arg @ref LL_ADC_INJ_RANK_4 + * @retval Value between Min_Data=0x00000000 and Max_Data=0xFFFFFFFF + */ +__STATIC_INLINE uint32_t LL_ADC_INJ_ReadConversionData32(ADC_TypeDef *ADCx, uint32_t Rank) +{ + register __IO uint32_t *preg = __ADC_PTR_REG_OFFSET(ADCx->JDR1, __ADC_MASK_SHIFT(Rank, ADC_INJ_JDRX_REGOFFSET_MASK)); + + return (uint32_t)(READ_BIT(*preg, + ADC_JDR1_JDATA) + ); +} + +/** + * @brief Get ADC group injected conversion data, range fit for + * ADC resolution 12 bits. + * @note For devices with feature oversampling: Oversampling + * can increase data width, function for extended range + * may be needed: @ref LL_ADC_INJ_ReadConversionData32. + * @rmtoll JDR1 JDATA LL_ADC_INJ_ReadConversionData12\n + * JDR2 JDATA LL_ADC_INJ_ReadConversionData12\n + * JDR3 JDATA LL_ADC_INJ_ReadConversionData12\n + * JDR4 JDATA LL_ADC_INJ_ReadConversionData12 + * @param ADCx ADC instance + * @param Rank This parameter can be one of the following values: + * @arg @ref LL_ADC_INJ_RANK_1 + * @arg @ref LL_ADC_INJ_RANK_2 + * @arg @ref LL_ADC_INJ_RANK_3 + * @arg @ref LL_ADC_INJ_RANK_4 + * @retval Value between Min_Data=0x000 and Max_Data=0xFFF + */ +__STATIC_INLINE uint16_t LL_ADC_INJ_ReadConversionData12(ADC_TypeDef *ADCx, uint32_t Rank) +{ + register __IO uint32_t *preg = __ADC_PTR_REG_OFFSET(ADCx->JDR1, __ADC_MASK_SHIFT(Rank, ADC_INJ_JDRX_REGOFFSET_MASK)); + + return (uint16_t)(READ_BIT(*preg, + ADC_JDR1_JDATA) + ); +} + +/** + * @} + */ + +/** @defgroup ADC_LL_EF_FLAG_Management ADC flag management + * @{ + */ + +/** + * @brief Get flag ADC group regular end of sequence conversions. + * @rmtoll SR EOC LL_ADC_IsActiveFlag_EOS + * @param ADCx ADC instance + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_ADC_IsActiveFlag_EOS(ADC_TypeDef *ADCx) +{ + /* Note: on this STM32 serie, there is no flag ADC group regular */ + /* end of unitary conversion. */ + /* Flag noted as "EOC" is corresponding to flag "EOS" */ + /* in other STM32 families). */ + return (READ_BIT(ADCx->SR, LL_ADC_FLAG_EOS) == (LL_ADC_FLAG_EOS)); +} + + +/** + * @brief Get flag ADC group injected end of sequence conversions. + * @rmtoll SR JEOC LL_ADC_IsActiveFlag_JEOS + * @param ADCx ADC instance + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_ADC_IsActiveFlag_JEOS(ADC_TypeDef *ADCx) +{ + /* Note: on this STM32 serie, there is no flag ADC group injected */ + /* end of unitary conversion. */ + /* Flag noted as "JEOC" is corresponding to flag "JEOS" */ + /* in other STM32 families). */ + return (READ_BIT(ADCx->SR, LL_ADC_FLAG_JEOS) == (LL_ADC_FLAG_JEOS)); +} + +/** + * @brief Get flag ADC analog watchdog 1 flag + * @rmtoll SR AWD LL_ADC_IsActiveFlag_AWD1 + * @param ADCx ADC instance + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_ADC_IsActiveFlag_AWD1(ADC_TypeDef *ADCx) +{ + return (READ_BIT(ADCx->SR, LL_ADC_FLAG_AWD1) == (LL_ADC_FLAG_AWD1)); +} + +/** + * @brief Clear flag ADC group regular end of sequence conversions. + * @rmtoll SR EOC LL_ADC_ClearFlag_EOS + * @param ADCx ADC instance + * @retval None + */ +__STATIC_INLINE void LL_ADC_ClearFlag_EOS(ADC_TypeDef *ADCx) +{ + /* Note: on this STM32 serie, there is no flag ADC group regular */ + /* end of unitary conversion. */ + /* Flag noted as "EOC" is corresponding to flag "EOS" */ + /* in other STM32 families). */ + WRITE_REG(ADCx->SR, ~LL_ADC_FLAG_EOS); +} + + +/** + * @brief Clear flag ADC group injected end of sequence conversions. + * @rmtoll SR JEOC LL_ADC_ClearFlag_JEOS + * @param ADCx ADC instance + * @retval None + */ +__STATIC_INLINE void LL_ADC_ClearFlag_JEOS(ADC_TypeDef *ADCx) +{ + /* Note: on this STM32 serie, there is no flag ADC group injected */ + /* end of unitary conversion. */ + /* Flag noted as "JEOC" is corresponding to flag "JEOS" */ + /* in other STM32 families). */ + WRITE_REG(ADCx->SR, ~LL_ADC_FLAG_JEOS); +} + +/** + * @brief Clear flag ADC analog watchdog 1. + * @rmtoll SR AWD LL_ADC_ClearFlag_AWD1 + * @param ADCx ADC instance + * @retval None + */ +__STATIC_INLINE void LL_ADC_ClearFlag_AWD1(ADC_TypeDef *ADCx) +{ + WRITE_REG(ADCx->SR, ~LL_ADC_FLAG_AWD1); +} + +#if defined(ADC_MULTIMODE_SUPPORT) +/** + * @brief Get flag multimode ADC group regular end of sequence conversions of the ADC master. + * @rmtoll SR EOC LL_ADC_IsActiveFlag_MST_EOS + * @param ADCxy_COMMON ADC common instance + * (can be set directly from CMSIS definition or by using helper macro @ref __LL_ADC_COMMON_INSTANCE() ) + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_ADC_IsActiveFlag_MST_EOS(ADC_Common_TypeDef *ADCxy_COMMON) +{ + /* Note: on this STM32 serie, there is no flag ADC group regular */ + /* end of unitary conversion. */ + /* Flag noted as "EOC" is corresponding to flag "EOS" */ + /* in other STM32 families). */ + return (READ_BIT(ADCxy_COMMON->SR, ADC_SR_EOC) == (ADC_SR_EOC)); +} + +/** + * @brief Get flag multimode ADC group regular end of sequence conversions of the ADC slave. + * @rmtoll SR EOC LL_ADC_IsActiveFlag_SLV_EOS + * @param ADCxy_COMMON ADC common instance + * (can be set directly from CMSIS definition or by using helper macro @ref __LL_ADC_COMMON_INSTANCE() ) + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_ADC_IsActiveFlag_SLV_EOS(ADC_Common_TypeDef *ADCxy_COMMON) +{ + /* Note: on this STM32 serie, there is no flag ADC group regular */ + /* end of unitary conversion. */ + /* Flag noted as "EOC" is corresponding to flag "EOS" */ + /* in other STM32 families). */ + + register __IO uint32_t *preg = __ADC_PTR_REG_OFFSET(ADCxy_COMMON->SR, 1U); + + return (READ_BIT(*preg, LL_ADC_FLAG_EOS_SLV) == (LL_ADC_FLAG_EOS_SLV)); +} + + +/** + * @brief Get flag multimode ADC group injected end of sequence conversions of the ADC master. + * @rmtoll SR JEOC LL_ADC_IsActiveFlag_MST_JEOS + * @param ADCxy_COMMON ADC common instance + * (can be set directly from CMSIS definition or by using helper macro @ref __LL_ADC_COMMON_INSTANCE() ) + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_ADC_IsActiveFlag_MST_JEOS(ADC_Common_TypeDef *ADCxy_COMMON) +{ + /* Note: on this STM32 serie, there is no flag ADC group injected */ + /* end of unitary conversion. */ + /* Flag noted as "JEOC" is corresponding to flag "JEOS" */ + /* in other STM32 families). */ + return (READ_BIT(ADC1->SR, ADC_SR_JEOC) == (ADC_SR_JEOC)); +} + +/** + * @brief Get flag multimode ADC group injected end of sequence conversions of the ADC slave. + * @rmtoll SR JEOC LL_ADC_IsActiveFlag_SLV_JEOS + * @param ADCxy_COMMON ADC common instance + * (can be set directly from CMSIS definition or by using helper macro @ref __LL_ADC_COMMON_INSTANCE() ) + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_ADC_IsActiveFlag_SLV_JEOS(ADC_Common_TypeDef *ADCxy_COMMON) +{ + /* Note: on this STM32 serie, there is no flag ADC group injected */ + /* end of unitary conversion. */ + /* Flag noted as "JEOC" is corresponding to flag "JEOS" */ + /* in other STM32 families). */ + + register __IO uint32_t *preg = __ADC_PTR_REG_OFFSET(ADCxy_COMMON->SR, 1U); + + return (READ_BIT(*preg, LL_ADC_FLAG_JEOS_SLV) == (LL_ADC_FLAG_JEOS_SLV)); +} + +/** + * @brief Get flag multimode ADC analog watchdog 1 of the ADC master. + * @rmtoll SR AWD LL_ADC_IsActiveFlag_MST_AWD1 + * @param ADCxy_COMMON ADC common instance + * (can be set directly from CMSIS definition or by using helper macro @ref __LL_ADC_COMMON_INSTANCE() ) + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_ADC_IsActiveFlag_MST_AWD1(ADC_Common_TypeDef *ADCxy_COMMON) +{ + return (READ_BIT(ADC1->SR, LL_ADC_FLAG_AWD1) == (LL_ADC_FLAG_AWD1)); +} + +/** + * @brief Get flag multimode analog watchdog 1 of the ADC slave. + * @rmtoll SR AWD LL_ADC_IsActiveFlag_SLV_AWD1 + * @param ADCxy_COMMON ADC common instance + * (can be set directly from CMSIS definition or by using helper macro @ref __LL_ADC_COMMON_INSTANCE() ) + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_ADC_IsActiveFlag_SLV_AWD1(ADC_Common_TypeDef *ADCxy_COMMON) +{ + register __IO uint32_t *preg = __ADC_PTR_REG_OFFSET(ADCxy_COMMON->SR, 1U); + + return (READ_BIT(*preg, LL_ADC_FLAG_AWD1) == (LL_ADC_FLAG_AWD1)); +} + +#endif /* ADC_MULTIMODE_SUPPORT */ + +/** + * @} + */ + +/** @defgroup ADC_LL_EF_IT_Management ADC IT management + * @{ + */ + +/** + * @brief Enable interruption ADC group regular end of sequence conversions. + * @rmtoll CR1 EOCIE LL_ADC_EnableIT_EOS + * @param ADCx ADC instance + * @retval None + */ +__STATIC_INLINE void LL_ADC_EnableIT_EOS(ADC_TypeDef *ADCx) +{ + /* Note: on this STM32 serie, there is no flag ADC group regular */ + /* end of unitary conversion. */ + /* Flag noted as "EOC" is corresponding to flag "EOS" */ + /* in other STM32 families). */ + SET_BIT(ADCx->CR1, ADC_CR1_EOCIE); +} + + +/** + * @brief Enable interruption ADC group injected end of sequence conversions. + * @rmtoll CR1 JEOCIE LL_ADC_EnableIT_JEOS + * @param ADCx ADC instance + * @retval None + */ +__STATIC_INLINE void LL_ADC_EnableIT_JEOS(ADC_TypeDef *ADCx) +{ + /* Note: on this STM32 serie, there is no flag ADC group injected */ + /* end of unitary conversion. */ + /* Flag noted as "JEOC" is corresponding to flag "JEOS" */ + /* in other STM32 families). */ + SET_BIT(ADCx->CR1, LL_ADC_IT_JEOS); +} + +/** + * @brief Enable interruption ADC analog watchdog 1. + * @rmtoll CR1 AWDIE LL_ADC_EnableIT_AWD1 + * @param ADCx ADC instance + * @retval None + */ +__STATIC_INLINE void LL_ADC_EnableIT_AWD1(ADC_TypeDef *ADCx) +{ + SET_BIT(ADCx->CR1, LL_ADC_IT_AWD1); +} + +/** + * @brief Disable interruption ADC group regular end of sequence conversions. + * @rmtoll CR1 EOCIE LL_ADC_DisableIT_EOS + * @param ADCx ADC instance + * @retval None + */ +__STATIC_INLINE void LL_ADC_DisableIT_EOS(ADC_TypeDef *ADCx) +{ + /* Note: on this STM32 serie, there is no flag ADC group regular */ + /* end of unitary conversion. */ + /* Flag noted as "EOC" is corresponding to flag "EOS" */ + /* in other STM32 families). */ + CLEAR_BIT(ADCx->CR1, ADC_CR1_EOCIE); +} + + +/** + * @brief Disable interruption ADC group injected end of sequence conversions. + * @rmtoll CR1 JEOCIE LL_ADC_EnableIT_JEOS + * @param ADCx ADC instance + * @retval None + */ +__STATIC_INLINE void LL_ADC_DisableIT_JEOS(ADC_TypeDef *ADCx) +{ + /* Note: on this STM32 serie, there is no flag ADC group injected */ + /* end of unitary conversion. */ + /* Flag noted as "JEOC" is corresponding to flag "JEOS" */ + /* in other STM32 families). */ + CLEAR_BIT(ADCx->CR1, LL_ADC_IT_JEOS); +} + +/** + * @brief Disable interruption ADC analog watchdog 1. + * @rmtoll CR1 AWDIE LL_ADC_EnableIT_AWD1 + * @param ADCx ADC instance + * @retval None + */ +__STATIC_INLINE void LL_ADC_DisableIT_AWD1(ADC_TypeDef *ADCx) +{ + CLEAR_BIT(ADCx->CR1, LL_ADC_IT_AWD1); +} + +/** + * @brief Get state of interruption ADC group regular end of sequence conversions + * (0: interrupt disabled, 1: interrupt enabled). + * @rmtoll CR1 EOCIE LL_ADC_IsEnabledIT_EOS + * @param ADCx ADC instance + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_ADC_IsEnabledIT_EOS(ADC_TypeDef *ADCx) +{ + /* Note: on this STM32 serie, there is no flag ADC group regular */ + /* end of unitary conversion. */ + /* Flag noted as "EOC" is corresponding to flag "EOS" */ + /* in other STM32 families). */ + return (READ_BIT(ADCx->CR1, LL_ADC_IT_EOS) == (LL_ADC_IT_EOS)); +} + + +/** + * @brief Get state of interruption ADC group injected end of sequence conversions + * (0: interrupt disabled, 1: interrupt enabled). + * @rmtoll CR1 JEOCIE LL_ADC_EnableIT_JEOS + * @param ADCx ADC instance + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_ADC_IsEnabledIT_JEOS(ADC_TypeDef *ADCx) +{ + /* Note: on this STM32 serie, there is no flag ADC group injected */ + /* end of unitary conversion. */ + /* Flag noted as "JEOC" is corresponding to flag "JEOS" */ + /* in other STM32 families). */ + return (READ_BIT(ADCx->CR1, LL_ADC_IT_JEOS) == (LL_ADC_IT_JEOS)); +} + +/** + * @brief Get state of interruption ADC analog watchdog 1 + * (0: interrupt disabled, 1: interrupt enabled). + * @rmtoll CR1 AWDIE LL_ADC_EnableIT_AWD1 + * @param ADCx ADC instance + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_ADC_IsEnabledIT_AWD1(ADC_TypeDef *ADCx) +{ + return (READ_BIT(ADCx->CR1, LL_ADC_IT_AWD1) == (LL_ADC_IT_AWD1)); +} + +/** + * @} + */ + +#if defined(USE_FULL_LL_DRIVER) +/** @defgroup ADC_LL_EF_Init Initialization and de-initialization functions + * @{ + */ + +/* Initialization of some features of ADC common parameters and multimode */ +ErrorStatus LL_ADC_CommonDeInit(ADC_Common_TypeDef *ADCxy_COMMON); +ErrorStatus LL_ADC_CommonInit(ADC_Common_TypeDef *ADCxy_COMMON, LL_ADC_CommonInitTypeDef *ADC_CommonInitStruct); +void LL_ADC_CommonStructInit(LL_ADC_CommonInitTypeDef *ADC_CommonInitStruct); + +/* De-initialization of ADC instance, ADC group regular and ADC group injected */ +/* (availability of ADC group injected depends on STM32 families) */ +ErrorStatus LL_ADC_DeInit(ADC_TypeDef *ADCx); + +/* Initialization of some features of ADC instance */ +ErrorStatus LL_ADC_Init(ADC_TypeDef *ADCx, LL_ADC_InitTypeDef *ADC_InitStruct); +void LL_ADC_StructInit(LL_ADC_InitTypeDef *ADC_InitStruct); + +/* Initialization of some features of ADC instance and ADC group regular */ +ErrorStatus LL_ADC_REG_Init(ADC_TypeDef *ADCx, LL_ADC_REG_InitTypeDef *ADC_REG_InitStruct); +void LL_ADC_REG_StructInit(LL_ADC_REG_InitTypeDef *ADC_REG_InitStruct); + +/* Initialization of some features of ADC instance and ADC group injected */ +ErrorStatus LL_ADC_INJ_Init(ADC_TypeDef *ADCx, LL_ADC_INJ_InitTypeDef *ADC_INJ_InitStruct); +void LL_ADC_INJ_StructInit(LL_ADC_INJ_InitTypeDef *ADC_INJ_InitStruct); + +/** + * @} + */ +#endif /* USE_FULL_LL_DRIVER */ + +/** + * @} + */ + +/** + * @} + */ + +#endif /* ADC1 || ADC2 || ADC3 */ + +/** + * @} + */ + +#ifdef __cplusplus +} +#endif + +#endif /* __STM32F1xx_LL_ADC_H */ + +/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/ diff --git a/LLDrivers/inc/stm32f1xx_ll_bus.h b/LLDrivers/inc/stm32f1xx_ll_bus.h new file mode 100644 index 0000000..8857920 --- /dev/null +++ b/LLDrivers/inc/stm32f1xx_ll_bus.h @@ -0,0 +1,1015 @@ +/** + ****************************************************************************** + * @file stm32f1xx_ll_bus.h + * @author MCD Application Team + * @brief Header file of BUS LL module. + + @verbatim + ##### RCC Limitations ##### + ============================================================================== + [..] + A delay between an RCC peripheral clock enable and the effective peripheral + enabling should be taken into account in order to manage the peripheral read/write + from/to registers. + (+) This delay depends on the peripheral mapping. + (++) AHB & APB peripherals, 1 dummy read is necessary + + [..] + Workarounds: + (#) For AHB & APB peripherals, a dummy read to the peripheral register has been + inserted in each LL_{BUS}_GRP{x}_EnableClock() function. + + @endverbatim + ****************************************************************************** + * @attention + * + *

© Copyright (c) 2016 STMicroelectronics. + * All rights reserved.

+ * + * This software component is licensed by ST under BSD 3-Clause license, + * the "License"; You may not use this file except in compliance with the + * License. You may obtain a copy of the License at: + * opensource.org/licenses/BSD-3-Clause + * + ****************************************************************************** + */ + +/* Define to prevent recursive inclusion -------------------------------------*/ +#ifndef __STM32F1xx_LL_BUS_H +#define __STM32F1xx_LL_BUS_H + +#ifdef __cplusplus +extern "C" { +#endif + +/* Includes ------------------------------------------------------------------*/ +#include "stm32f1xx.h" + +/** @addtogroup STM32F1xx_LL_Driver + * @{ + */ + +#if defined(RCC) + +/** @defgroup BUS_LL BUS + * @{ + */ + +/* Private types -------------------------------------------------------------*/ +/* Private variables ---------------------------------------------------------*/ + +/* Private constants ---------------------------------------------------------*/ +#if defined(RCC_AHBRSTR_OTGFSRST) || defined(RCC_AHBRSTR_ETHMACRST) +#define RCC_AHBRSTR_SUPPORT +#endif /* RCC_AHBRSTR_OTGFSRST || RCC_AHBRSTR_ETHMACRST */ + +/* Private macros ------------------------------------------------------------*/ + +/* Exported types ------------------------------------------------------------*/ +/* Exported constants --------------------------------------------------------*/ +/** @defgroup BUS_LL_Exported_Constants BUS Exported Constants + * @{ + */ + +/** @defgroup BUS_LL_EC_AHB1_GRP1_PERIPH AHB1 GRP1 PERIPH + * @{ + */ +#define LL_AHB1_GRP1_PERIPH_ALL (uint32_t)0xFFFFFFFFU +#define LL_AHB1_GRP1_PERIPH_CRC RCC_AHBENR_CRCEN +#define LL_AHB1_GRP1_PERIPH_DMA1 RCC_AHBENR_DMA1EN +#if defined(DMA2) +#define LL_AHB1_GRP1_PERIPH_DMA2 RCC_AHBENR_DMA2EN +#endif /*DMA2*/ +#if defined(ETH) +#define LL_AHB1_GRP1_PERIPH_ETHMAC RCC_AHBENR_ETHMACEN +#define LL_AHB1_GRP1_PERIPH_ETHMACRX RCC_AHBENR_ETHMACRXEN +#define LL_AHB1_GRP1_PERIPH_ETHMACTX RCC_AHBENR_ETHMACTXEN +#endif /*ETH*/ +#define LL_AHB1_GRP1_PERIPH_FLASH RCC_AHBENR_FLITFEN +#if defined(FSMC_Bank1) +#define LL_AHB1_GRP1_PERIPH_FSMC RCC_AHBENR_FSMCEN +#endif /*FSMC_Bank1*/ +#if defined(USB_OTG_FS) +#define LL_AHB1_GRP1_PERIPH_OTGFS RCC_AHBENR_OTGFSEN +#endif /*USB_OTG_FS*/ +#if defined(SDIO) +#define LL_AHB1_GRP1_PERIPH_SDIO RCC_AHBENR_SDIOEN +#endif /*SDIO*/ +#define LL_AHB1_GRP1_PERIPH_SRAM RCC_AHBENR_SRAMEN +/** + * @} + */ + +/** @defgroup BUS_LL_EC_APB1_GRP1_PERIPH APB1 GRP1 PERIPH + * @{ + */ +#define LL_APB1_GRP1_PERIPH_ALL (uint32_t)0xFFFFFFFFU +#define LL_APB1_GRP1_PERIPH_BKP RCC_APB1ENR_BKPEN +#if defined(CAN1) +#define LL_APB1_GRP1_PERIPH_CAN1 RCC_APB1ENR_CAN1EN +#endif /*CAN1*/ +#if defined(CAN2) +#define LL_APB1_GRP1_PERIPH_CAN2 RCC_APB1ENR_CAN2EN +#endif /*CAN2*/ +#if defined(CEC) +#define LL_APB1_GRP1_PERIPH_CEC RCC_APB1ENR_CECEN +#endif /*CEC*/ +#if defined(DAC) +#define LL_APB1_GRP1_PERIPH_DAC1 RCC_APB1ENR_DACEN +#endif /*DAC*/ +#define LL_APB1_GRP1_PERIPH_I2C1 RCC_APB1ENR_I2C1EN +#if defined(I2C2) +#define LL_APB1_GRP1_PERIPH_I2C2 RCC_APB1ENR_I2C2EN +#endif /*I2C2*/ +#define LL_APB1_GRP1_PERIPH_PWR RCC_APB1ENR_PWREN +#if defined(SPI2) +#define LL_APB1_GRP1_PERIPH_SPI2 RCC_APB1ENR_SPI2EN +#endif /*SPI2*/ +#if defined(SPI3) +#define LL_APB1_GRP1_PERIPH_SPI3 RCC_APB1ENR_SPI3EN +#endif /*SPI3*/ +#if defined(TIM12) +#define LL_APB1_GRP1_PERIPH_TIM12 RCC_APB1ENR_TIM12EN +#endif /*TIM12*/ +#if defined(TIM13) +#define LL_APB1_GRP1_PERIPH_TIM13 RCC_APB1ENR_TIM13EN +#endif /*TIM13*/ +#if defined(TIM14) +#define LL_APB1_GRP1_PERIPH_TIM14 RCC_APB1ENR_TIM14EN +#endif /*TIM14*/ +#define LL_APB1_GRP1_PERIPH_TIM2 RCC_APB1ENR_TIM2EN +#define LL_APB1_GRP1_PERIPH_TIM3 RCC_APB1ENR_TIM3EN +#if defined(TIM4) +#define LL_APB1_GRP1_PERIPH_TIM4 RCC_APB1ENR_TIM4EN +#endif /*TIM4*/ +#if defined(TIM5) +#define LL_APB1_GRP1_PERIPH_TIM5 RCC_APB1ENR_TIM5EN +#endif /*TIM5*/ +#if defined(TIM6) +#define LL_APB1_GRP1_PERIPH_TIM6 RCC_APB1ENR_TIM6EN +#endif /*TIM6*/ +#if defined(TIM7) +#define LL_APB1_GRP1_PERIPH_TIM7 RCC_APB1ENR_TIM7EN +#endif /*TIM7*/ +#if defined(UART4) +#define LL_APB1_GRP1_PERIPH_UART4 RCC_APB1ENR_UART4EN +#endif /*UART4*/ +#if defined(UART5) +#define LL_APB1_GRP1_PERIPH_UART5 RCC_APB1ENR_UART5EN +#endif /*UART5*/ +#define LL_APB1_GRP1_PERIPH_USART2 RCC_APB1ENR_USART2EN +#if defined(USART3) +#define LL_APB1_GRP1_PERIPH_USART3 RCC_APB1ENR_USART3EN +#endif /*USART3*/ +#if defined(USB) +#define LL_APB1_GRP1_PERIPH_USB RCC_APB1ENR_USBEN +#endif /*USB*/ +#define LL_APB1_GRP1_PERIPH_WWDG RCC_APB1ENR_WWDGEN +/** + * @} + */ + +/** @defgroup BUS_LL_EC_APB2_GRP1_PERIPH APB2 GRP1 PERIPH + * @{ + */ +#define LL_APB2_GRP1_PERIPH_ALL (uint32_t)0xFFFFFFFFU +#define LL_APB2_GRP1_PERIPH_ADC1 RCC_APB2ENR_ADC1EN +#if defined(ADC2) +#define LL_APB2_GRP1_PERIPH_ADC2 RCC_APB2ENR_ADC2EN +#endif /*ADC2*/ +#if defined(ADC3) +#define LL_APB2_GRP1_PERIPH_ADC3 RCC_APB2ENR_ADC3EN +#endif /*ADC3*/ +#define LL_APB2_GRP1_PERIPH_AFIO RCC_APB2ENR_AFIOEN +#define LL_APB2_GRP1_PERIPH_GPIOA RCC_APB2ENR_IOPAEN +#define LL_APB2_GRP1_PERIPH_GPIOB RCC_APB2ENR_IOPBEN +#define LL_APB2_GRP1_PERIPH_GPIOC RCC_APB2ENR_IOPCEN +#define LL_APB2_GRP1_PERIPH_GPIOD RCC_APB2ENR_IOPDEN +#if defined(GPIOE) +#define LL_APB2_GRP1_PERIPH_GPIOE RCC_APB2ENR_IOPEEN +#endif /*GPIOE*/ +#if defined(GPIOF) +#define LL_APB2_GRP1_PERIPH_GPIOF RCC_APB2ENR_IOPFEN +#endif /*GPIOF*/ +#if defined(GPIOG) +#define LL_APB2_GRP1_PERIPH_GPIOG RCC_APB2ENR_IOPGEN +#endif /*GPIOG*/ +#define LL_APB2_GRP1_PERIPH_SPI1 RCC_APB2ENR_SPI1EN +#if defined(TIM10) +#define LL_APB2_GRP1_PERIPH_TIM10 RCC_APB2ENR_TIM10EN +#endif /*TIM10*/ +#if defined(TIM11) +#define LL_APB2_GRP1_PERIPH_TIM11 RCC_APB2ENR_TIM11EN +#endif /*TIM11*/ +#if defined(TIM15) +#define LL_APB2_GRP1_PERIPH_TIM15 RCC_APB2ENR_TIM15EN +#endif /*TIM15*/ +#if defined(TIM16) +#define LL_APB2_GRP1_PERIPH_TIM16 RCC_APB2ENR_TIM16EN +#endif /*TIM16*/ +#if defined(TIM17) +#define LL_APB2_GRP1_PERIPH_TIM17 RCC_APB2ENR_TIM17EN +#endif /*TIM17*/ +#define LL_APB2_GRP1_PERIPH_TIM1 RCC_APB2ENR_TIM1EN +#if defined(TIM8) +#define LL_APB2_GRP1_PERIPH_TIM8 RCC_APB2ENR_TIM8EN +#endif /*TIM8*/ +#if defined(TIM9) +#define LL_APB2_GRP1_PERIPH_TIM9 RCC_APB2ENR_TIM9EN +#endif /*TIM9*/ +#define LL_APB2_GRP1_PERIPH_USART1 RCC_APB2ENR_USART1EN +/** + * @} + */ + +/** + * @} + */ + +/* Exported macro ------------------------------------------------------------*/ + +/* Exported functions --------------------------------------------------------*/ +/** @defgroup BUS_LL_Exported_Functions BUS Exported Functions + * @{ + */ + +/** @defgroup BUS_LL_EF_AHB1 AHB1 + * @{ + */ + +/** + * @brief Enable AHB1 peripherals clock. + * @rmtoll AHBENR CRCEN LL_AHB1_GRP1_EnableClock\n + * AHBENR DMA1EN LL_AHB1_GRP1_EnableClock\n + * AHBENR DMA2EN LL_AHB1_GRP1_EnableClock\n + * AHBENR ETHMACEN LL_AHB1_GRP1_EnableClock\n + * AHBENR ETHMACRXEN LL_AHB1_GRP1_EnableClock\n + * AHBENR ETHMACTXEN LL_AHB1_GRP1_EnableClock\n + * AHBENR FLITFEN LL_AHB1_GRP1_EnableClock\n + * AHBENR FSMCEN LL_AHB1_GRP1_EnableClock\n + * AHBENR OTGFSEN LL_AHB1_GRP1_EnableClock\n + * AHBENR SDIOEN LL_AHB1_GRP1_EnableClock\n + * AHBENR SRAMEN LL_AHB1_GRP1_EnableClock + * @param Periphs This parameter can be a combination of the following values: + * @arg @ref LL_AHB1_GRP1_PERIPH_CRC + * @arg @ref LL_AHB1_GRP1_PERIPH_DMA1 + * @arg @ref LL_AHB1_GRP1_PERIPH_DMA2 (*) + * @arg @ref LL_AHB1_GRP1_PERIPH_ETHMAC (*) + * @arg @ref LL_AHB1_GRP1_PERIPH_ETHMACRX (*) + * @arg @ref LL_AHB1_GRP1_PERIPH_ETHMACTX (*) + * @arg @ref LL_AHB1_GRP1_PERIPH_FLASH + * @arg @ref LL_AHB1_GRP1_PERIPH_FSMC (*) + * @arg @ref LL_AHB1_GRP1_PERIPH_OTGFS (*) + * @arg @ref LL_AHB1_GRP1_PERIPH_SDIO (*) + * @arg @ref LL_AHB1_GRP1_PERIPH_SRAM + * + * (*) value not defined in all devices. + * @retval None +*/ +__STATIC_INLINE void LL_AHB1_GRP1_EnableClock(uint32_t Periphs) +{ + __IO uint32_t tmpreg; + SET_BIT(RCC->AHBENR, Periphs); + /* Delay after an RCC peripheral clock enabling */ + tmpreg = READ_BIT(RCC->AHBENR, Periphs); + (void)tmpreg; +} + +/** + * @brief Check if AHB1 peripheral clock is enabled or not + * @rmtoll AHBENR CRCEN LL_AHB1_GRP1_IsEnabledClock\n + * AHBENR DMA1EN LL_AHB1_GRP1_IsEnabledClock\n + * AHBENR DMA2EN LL_AHB1_GRP1_IsEnabledClock\n + * AHBENR ETHMACEN LL_AHB1_GRP1_IsEnabledClock\n + * AHBENR ETHMACRXEN LL_AHB1_GRP1_IsEnabledClock\n + * AHBENR ETHMACTXEN LL_AHB1_GRP1_IsEnabledClock\n + * AHBENR FLITFEN LL_AHB1_GRP1_IsEnabledClock\n + * AHBENR FSMCEN LL_AHB1_GRP1_IsEnabledClock\n + * AHBENR OTGFSEN LL_AHB1_GRP1_IsEnabledClock\n + * AHBENR SDIOEN LL_AHB1_GRP1_IsEnabledClock\n + * AHBENR SRAMEN LL_AHB1_GRP1_IsEnabledClock + * @param Periphs This parameter can be a combination of the following values: + * @arg @ref LL_AHB1_GRP1_PERIPH_CRC + * @arg @ref LL_AHB1_GRP1_PERIPH_DMA1 + * @arg @ref LL_AHB1_GRP1_PERIPH_DMA2 (*) + * @arg @ref LL_AHB1_GRP1_PERIPH_ETHMAC (*) + * @arg @ref LL_AHB1_GRP1_PERIPH_ETHMACRX (*) + * @arg @ref LL_AHB1_GRP1_PERIPH_ETHMACTX (*) + * @arg @ref LL_AHB1_GRP1_PERIPH_FLASH + * @arg @ref LL_AHB1_GRP1_PERIPH_FSMC (*) + * @arg @ref LL_AHB1_GRP1_PERIPH_OTGFS (*) + * @arg @ref LL_AHB1_GRP1_PERIPH_SDIO (*) + * @arg @ref LL_AHB1_GRP1_PERIPH_SRAM + * + * (*) value not defined in all devices. + * @retval State of Periphs (1 or 0). +*/ +__STATIC_INLINE uint32_t LL_AHB1_GRP1_IsEnabledClock(uint32_t Periphs) +{ + return (READ_BIT(RCC->AHBENR, Periphs) == Periphs); +} + +/** + * @brief Disable AHB1 peripherals clock. + * @rmtoll AHBENR CRCEN LL_AHB1_GRP1_DisableClock\n + * AHBENR DMA1EN LL_AHB1_GRP1_DisableClock\n + * AHBENR DMA2EN LL_AHB1_GRP1_DisableClock\n + * AHBENR ETHMACEN LL_AHB1_GRP1_DisableClock\n + * AHBENR ETHMACRXEN LL_AHB1_GRP1_DisableClock\n + * AHBENR ETHMACTXEN LL_AHB1_GRP1_DisableClock\n + * AHBENR FLITFEN LL_AHB1_GRP1_DisableClock\n + * AHBENR FSMCEN LL_AHB1_GRP1_DisableClock\n + * AHBENR OTGFSEN LL_AHB1_GRP1_DisableClock\n + * AHBENR SDIOEN LL_AHB1_GRP1_DisableClock\n + * AHBENR SRAMEN LL_AHB1_GRP1_DisableClock + * @param Periphs This parameter can be a combination of the following values: + * @arg @ref LL_AHB1_GRP1_PERIPH_CRC + * @arg @ref LL_AHB1_GRP1_PERIPH_DMA1 + * @arg @ref LL_AHB1_GRP1_PERIPH_DMA2 (*) + * @arg @ref LL_AHB1_GRP1_PERIPH_ETHMAC (*) + * @arg @ref LL_AHB1_GRP1_PERIPH_ETHMACRX (*) + * @arg @ref LL_AHB1_GRP1_PERIPH_ETHMACTX (*) + * @arg @ref LL_AHB1_GRP1_PERIPH_FLASH + * @arg @ref LL_AHB1_GRP1_PERIPH_FSMC (*) + * @arg @ref LL_AHB1_GRP1_PERIPH_OTGFS (*) + * @arg @ref LL_AHB1_GRP1_PERIPH_SDIO (*) + * @arg @ref LL_AHB1_GRP1_PERIPH_SRAM + * + * (*) value not defined in all devices. + * @retval None +*/ +__STATIC_INLINE void LL_AHB1_GRP1_DisableClock(uint32_t Periphs) +{ + CLEAR_BIT(RCC->AHBENR, Periphs); +} + +#if defined(RCC_AHBRSTR_SUPPORT) +/** + * @brief Force AHB1 peripherals reset. + * @rmtoll AHBRSTR ETHMACRST LL_AHB1_GRP1_ForceReset\n + * AHBRSTR OTGFSRST LL_AHB1_GRP1_ForceReset + * @param Periphs This parameter can be a combination of the following values: + * @arg @ref LL_AHB1_GRP1_PERIPH_ALL + * @arg @ref LL_AHB1_GRP1_PERIPH_ETHMAC (*) + * @arg @ref LL_AHB1_GRP1_PERIPH_OTGFS (*) + * + * (*) value not defined in all devices. + * @retval None +*/ +__STATIC_INLINE void LL_AHB1_GRP1_ForceReset(uint32_t Periphs) +{ + SET_BIT(RCC->AHBRSTR, Periphs); +} + +/** + * @brief Release AHB1 peripherals reset. + * @rmtoll AHBRSTR ETHMACRST LL_AHB1_GRP1_ReleaseReset\n + * AHBRSTR OTGFSRST LL_AHB1_GRP1_ReleaseReset + * @param Periphs This parameter can be a combination of the following values: + * @arg @ref LL_AHB1_GRP1_PERIPH_ALL + * @arg @ref LL_AHB1_GRP1_PERIPH_ETHMAC (*) + * @arg @ref LL_AHB1_GRP1_PERIPH_OTGFS (*) + * + * (*) value not defined in all devices. + * @retval None +*/ +__STATIC_INLINE void LL_AHB1_GRP1_ReleaseReset(uint32_t Periphs) +{ + CLEAR_BIT(RCC->AHBRSTR, Periphs); +} +#endif /* RCC_AHBRSTR_SUPPORT */ + +/** + * @} + */ + +/** @defgroup BUS_LL_EF_APB1 APB1 + * @{ + */ + +/** + * @brief Enable APB1 peripherals clock. + * @rmtoll APB1ENR BKPEN LL_APB1_GRP1_EnableClock\n + * APB1ENR CAN1EN LL_APB1_GRP1_EnableClock\n + * APB1ENR CAN2EN LL_APB1_GRP1_EnableClock\n + * APB1ENR CECEN LL_APB1_GRP1_EnableClock\n + * APB1ENR DACEN LL_APB1_GRP1_EnableClock\n + * APB1ENR I2C1EN LL_APB1_GRP1_EnableClock\n + * APB1ENR I2C2EN LL_APB1_GRP1_EnableClock\n + * APB1ENR PWREN LL_APB1_GRP1_EnableClock\n + * APB1ENR SPI2EN LL_APB1_GRP1_EnableClock\n + * APB1ENR SPI3EN LL_APB1_GRP1_EnableClock\n + * APB1ENR TIM12EN LL_APB1_GRP1_EnableClock\n + * APB1ENR TIM13EN LL_APB1_GRP1_EnableClock\n + * APB1ENR TIM14EN LL_APB1_GRP1_EnableClock\n + * APB1ENR TIM2EN LL_APB1_GRP1_EnableClock\n + * APB1ENR TIM3EN LL_APB1_GRP1_EnableClock\n + * APB1ENR TIM4EN LL_APB1_GRP1_EnableClock\n + * APB1ENR TIM5EN LL_APB1_GRP1_EnableClock\n + * APB1ENR TIM6EN LL_APB1_GRP1_EnableClock\n + * APB1ENR TIM7EN LL_APB1_GRP1_EnableClock\n + * APB1ENR UART4EN LL_APB1_GRP1_EnableClock\n + * APB1ENR UART5EN LL_APB1_GRP1_EnableClock\n + * APB1ENR USART2EN LL_APB1_GRP1_EnableClock\n + * APB1ENR USART3EN LL_APB1_GRP1_EnableClock\n + * APB1ENR USBEN LL_APB1_GRP1_EnableClock\n + * APB1ENR WWDGEN LL_APB1_GRP1_EnableClock + * @param Periphs This parameter can be a combination of the following values: + * @arg @ref LL_APB1_GRP1_PERIPH_BKP + * @arg @ref LL_APB1_GRP1_PERIPH_CAN1 (*) + * @arg @ref LL_APB1_GRP1_PERIPH_CAN2 (*) + * @arg @ref LL_APB1_GRP1_PERIPH_CEC (*) + * @arg @ref LL_APB1_GRP1_PERIPH_DAC1 (*) + * @arg @ref LL_APB1_GRP1_PERIPH_I2C1 + * @arg @ref LL_APB1_GRP1_PERIPH_I2C2 (*) + * @arg @ref LL_APB1_GRP1_PERIPH_PWR + * @arg @ref LL_APB1_GRP1_PERIPH_SPI2 (*) + * @arg @ref LL_APB1_GRP1_PERIPH_SPI3 (*) + * @arg @ref LL_APB1_GRP1_PERIPH_TIM12 (*) + * @arg @ref LL_APB1_GRP1_PERIPH_TIM13 (*) + * @arg @ref LL_APB1_GRP1_PERIPH_TIM14 (*) + * @arg @ref LL_APB1_GRP1_PERIPH_TIM2 + * @arg @ref LL_APB1_GRP1_PERIPH_TIM3 + * @arg @ref LL_APB1_GRP1_PERIPH_TIM4 (*) + * @arg @ref LL_APB1_GRP1_PERIPH_TIM5 (*) + * @arg @ref LL_APB1_GRP1_PERIPH_TIM6 (*) + * @arg @ref LL_APB1_GRP1_PERIPH_TIM7 (*) + * @arg @ref LL_APB1_GRP1_PERIPH_UART4 (*) + * @arg @ref LL_APB1_GRP1_PERIPH_UART5 (*) + * @arg @ref LL_APB1_GRP1_PERIPH_USART2 + * @arg @ref LL_APB1_GRP1_PERIPH_USART3 (*) + * @arg @ref LL_APB1_GRP1_PERIPH_USB (*) + * @arg @ref LL_APB1_GRP1_PERIPH_WWDG + * + * (*) value not defined in all devices. + * @retval None +*/ +__STATIC_INLINE void LL_APB1_GRP1_EnableClock(uint32_t Periphs) +{ + __IO uint32_t tmpreg; + SET_BIT(RCC->APB1ENR, Periphs); + /* Delay after an RCC peripheral clock enabling */ + tmpreg = READ_BIT(RCC->APB1ENR, Periphs); + (void)tmpreg; +} + +/** + * @brief Check if APB1 peripheral clock is enabled or not + * @rmtoll APB1ENR BKPEN LL_APB1_GRP1_IsEnabledClock\n + * APB1ENR CAN1EN LL_APB1_GRP1_IsEnabledClock\n + * APB1ENR CAN2EN LL_APB1_GRP1_IsEnabledClock\n + * APB1ENR CECEN LL_APB1_GRP1_IsEnabledClock\n + * APB1ENR DACEN LL_APB1_GRP1_IsEnabledClock\n + * APB1ENR I2C1EN LL_APB1_GRP1_IsEnabledClock\n + * APB1ENR I2C2EN LL_APB1_GRP1_IsEnabledClock\n + * APB1ENR PWREN LL_APB1_GRP1_IsEnabledClock\n + * APB1ENR SPI2EN LL_APB1_GRP1_IsEnabledClock\n + * APB1ENR SPI3EN LL_APB1_GRP1_IsEnabledClock\n + * APB1ENR TIM12EN LL_APB1_GRP1_IsEnabledClock\n + * APB1ENR TIM13EN LL_APB1_GRP1_IsEnabledClock\n + * APB1ENR TIM14EN LL_APB1_GRP1_IsEnabledClock\n + * APB1ENR TIM2EN LL_APB1_GRP1_IsEnabledClock\n + * APB1ENR TIM3EN LL_APB1_GRP1_IsEnabledClock\n + * APB1ENR TIM4EN LL_APB1_GRP1_IsEnabledClock\n + * APB1ENR TIM5EN LL_APB1_GRP1_IsEnabledClock\n + * APB1ENR TIM6EN LL_APB1_GRP1_IsEnabledClock\n + * APB1ENR TIM7EN LL_APB1_GRP1_IsEnabledClock\n + * APB1ENR UART4EN LL_APB1_GRP1_IsEnabledClock\n + * APB1ENR UART5EN LL_APB1_GRP1_IsEnabledClock\n + * APB1ENR USART2EN LL_APB1_GRP1_IsEnabledClock\n + * APB1ENR USART3EN LL_APB1_GRP1_IsEnabledClock\n + * APB1ENR USBEN LL_APB1_GRP1_IsEnabledClock\n + * APB1ENR WWDGEN LL_APB1_GRP1_IsEnabledClock + * @param Periphs This parameter can be a combination of the following values: + * @arg @ref LL_APB1_GRP1_PERIPH_BKP + * @arg @ref LL_APB1_GRP1_PERIPH_CAN1 (*) + * @arg @ref LL_APB1_GRP1_PERIPH_CAN2 (*) + * @arg @ref LL_APB1_GRP1_PERIPH_CEC (*) + * @arg @ref LL_APB1_GRP1_PERIPH_DAC1 (*) + * @arg @ref LL_APB1_GRP1_PERIPH_I2C1 + * @arg @ref LL_APB1_GRP1_PERIPH_I2C2 (*) + * @arg @ref LL_APB1_GRP1_PERIPH_PWR + * @arg @ref LL_APB1_GRP1_PERIPH_SPI2 (*) + * @arg @ref LL_APB1_GRP1_PERIPH_SPI3 (*) + * @arg @ref LL_APB1_GRP1_PERIPH_TIM12 (*) + * @arg @ref LL_APB1_GRP1_PERIPH_TIM13 (*) + * @arg @ref LL_APB1_GRP1_PERIPH_TIM14 (*) + * @arg @ref LL_APB1_GRP1_PERIPH_TIM2 + * @arg @ref LL_APB1_GRP1_PERIPH_TIM3 + * @arg @ref LL_APB1_GRP1_PERIPH_TIM4 (*) + * @arg @ref LL_APB1_GRP1_PERIPH_TIM5 (*) + * @arg @ref LL_APB1_GRP1_PERIPH_TIM6 (*) + * @arg @ref LL_APB1_GRP1_PERIPH_TIM7 (*) + * @arg @ref LL_APB1_GRP1_PERIPH_UART4 (*) + * @arg @ref LL_APB1_GRP1_PERIPH_UART5 (*) + * @arg @ref LL_APB1_GRP1_PERIPH_USART2 + * @arg @ref LL_APB1_GRP1_PERIPH_USART3 (*) + * @arg @ref LL_APB1_GRP1_PERIPH_USB (*) + * @arg @ref LL_APB1_GRP1_PERIPH_WWDG + * + * (*) value not defined in all devices. + * @retval State of Periphs (1 or 0). +*/ +__STATIC_INLINE uint32_t LL_APB1_GRP1_IsEnabledClock(uint32_t Periphs) +{ + return (READ_BIT(RCC->APB1ENR, Periphs) == Periphs); +} + +/** + * @brief Disable APB1 peripherals clock. + * @rmtoll APB1ENR BKPEN LL_APB1_GRP1_DisableClock\n + * APB1ENR CAN1EN LL_APB1_GRP1_DisableClock\n + * APB1ENR CAN2EN LL_APB1_GRP1_DisableClock\n + * APB1ENR CECEN LL_APB1_GRP1_DisableClock\n + * APB1ENR DACEN LL_APB1_GRP1_DisableClock\n + * APB1ENR I2C1EN LL_APB1_GRP1_DisableClock\n + * APB1ENR I2C2EN LL_APB1_GRP1_DisableClock\n + * APB1ENR PWREN LL_APB1_GRP1_DisableClock\n + * APB1ENR SPI2EN LL_APB1_GRP1_DisableClock\n + * APB1ENR SPI3EN LL_APB1_GRP1_DisableClock\n + * APB1ENR TIM12EN LL_APB1_GRP1_DisableClock\n + * APB1ENR TIM13EN LL_APB1_GRP1_DisableClock\n + * APB1ENR TIM14EN LL_APB1_GRP1_DisableClock\n + * APB1ENR TIM2EN LL_APB1_GRP1_DisableClock\n + * APB1ENR TIM3EN LL_APB1_GRP1_DisableClock\n + * APB1ENR TIM4EN LL_APB1_GRP1_DisableClock\n + * APB1ENR TIM5EN LL_APB1_GRP1_DisableClock\n + * APB1ENR TIM6EN LL_APB1_GRP1_DisableClock\n + * APB1ENR TIM7EN LL_APB1_GRP1_DisableClock\n + * APB1ENR UART4EN LL_APB1_GRP1_DisableClock\n + * APB1ENR UART5EN LL_APB1_GRP1_DisableClock\n + * APB1ENR USART2EN LL_APB1_GRP1_DisableClock\n + * APB1ENR USART3EN LL_APB1_GRP1_DisableClock\n + * APB1ENR USBEN LL_APB1_GRP1_DisableClock\n + * APB1ENR WWDGEN LL_APB1_GRP1_DisableClock + * @param Periphs This parameter can be a combination of the following values: + * @arg @ref LL_APB1_GRP1_PERIPH_BKP + * @arg @ref LL_APB1_GRP1_PERIPH_CAN1 (*) + * @arg @ref LL_APB1_GRP1_PERIPH_CAN2 (*) + * @arg @ref LL_APB1_GRP1_PERIPH_CEC (*) + * @arg @ref LL_APB1_GRP1_PERIPH_DAC1 (*) + * @arg @ref LL_APB1_GRP1_PERIPH_I2C1 + * @arg @ref LL_APB1_GRP1_PERIPH_I2C2 (*) + * @arg @ref LL_APB1_GRP1_PERIPH_PWR + * @arg @ref LL_APB1_GRP1_PERIPH_SPI2 (*) + * @arg @ref LL_APB1_GRP1_PERIPH_SPI3 (*) + * @arg @ref LL_APB1_GRP1_PERIPH_TIM12 (*) + * @arg @ref LL_APB1_GRP1_PERIPH_TIM13 (*) + * @arg @ref LL_APB1_GRP1_PERIPH_TIM14 (*) + * @arg @ref LL_APB1_GRP1_PERIPH_TIM2 + * @arg @ref LL_APB1_GRP1_PERIPH_TIM3 + * @arg @ref LL_APB1_GRP1_PERIPH_TIM4 (*) + * @arg @ref LL_APB1_GRP1_PERIPH_TIM5 (*) + * @arg @ref LL_APB1_GRP1_PERIPH_TIM6 (*) + * @arg @ref LL_APB1_GRP1_PERIPH_TIM7 (*) + * @arg @ref LL_APB1_GRP1_PERIPH_UART4 (*) + * @arg @ref LL_APB1_GRP1_PERIPH_UART5 (*) + * @arg @ref LL_APB1_GRP1_PERIPH_USART2 + * @arg @ref LL_APB1_GRP1_PERIPH_USART3 (*) + * @arg @ref LL_APB1_GRP1_PERIPH_USB (*) + * @arg @ref LL_APB1_GRP1_PERIPH_WWDG + * + * (*) value not defined in all devices. + * @retval None +*/ +__STATIC_INLINE void LL_APB1_GRP1_DisableClock(uint32_t Periphs) +{ + CLEAR_BIT(RCC->APB1ENR, Periphs); +} + +/** + * @brief Force APB1 peripherals reset. + * @rmtoll APB1RSTR BKPRST LL_APB1_GRP1_ForceReset\n + * APB1RSTR CAN1RST LL_APB1_GRP1_ForceReset\n + * APB1RSTR CAN2RST LL_APB1_GRP1_ForceReset\n + * APB1RSTR CECRST LL_APB1_GRP1_ForceReset\n + * APB1RSTR DACRST LL_APB1_GRP1_ForceReset\n + * APB1RSTR I2C1RST LL_APB1_GRP1_ForceReset\n + * APB1RSTR I2C2RST LL_APB1_GRP1_ForceReset\n + * APB1RSTR PWRRST LL_APB1_GRP1_ForceReset\n + * APB1RSTR SPI2RST LL_APB1_GRP1_ForceReset\n + * APB1RSTR SPI3RST LL_APB1_GRP1_ForceReset\n + * APB1RSTR TIM12RST LL_APB1_GRP1_ForceReset\n + * APB1RSTR TIM13RST LL_APB1_GRP1_ForceReset\n + * APB1RSTR TIM14RST LL_APB1_GRP1_ForceReset\n + * APB1RSTR TIM2RST LL_APB1_GRP1_ForceReset\n + * APB1RSTR TIM3RST LL_APB1_GRP1_ForceReset\n + * APB1RSTR TIM4RST LL_APB1_GRP1_ForceReset\n + * APB1RSTR TIM5RST LL_APB1_GRP1_ForceReset\n + * APB1RSTR TIM6RST LL_APB1_GRP1_ForceReset\n + * APB1RSTR TIM7RST LL_APB1_GRP1_ForceReset\n + * APB1RSTR UART4RST LL_APB1_GRP1_ForceReset\n + * APB1RSTR UART5RST LL_APB1_GRP1_ForceReset\n + * APB1RSTR USART2RST LL_APB1_GRP1_ForceReset\n + * APB1RSTR USART3RST LL_APB1_GRP1_ForceReset\n + * APB1RSTR USBRST LL_APB1_GRP1_ForceReset\n + * APB1RSTR WWDGRST LL_APB1_GRP1_ForceReset + * @param Periphs This parameter can be a combination of the following values: + * @arg @ref LL_APB1_GRP1_PERIPH_ALL + * @arg @ref LL_APB1_GRP1_PERIPH_BKP + * @arg @ref LL_APB1_GRP1_PERIPH_CAN1 (*) + * @arg @ref LL_APB1_GRP1_PERIPH_CAN2 (*) + * @arg @ref LL_APB1_GRP1_PERIPH_CEC (*) + * @arg @ref LL_APB1_GRP1_PERIPH_DAC1 (*) + * @arg @ref LL_APB1_GRP1_PERIPH_I2C1 + * @arg @ref LL_APB1_GRP1_PERIPH_I2C2 (*) + * @arg @ref LL_APB1_GRP1_PERIPH_PWR + * @arg @ref LL_APB1_GRP1_PERIPH_SPI2 (*) + * @arg @ref LL_APB1_GRP1_PERIPH_SPI3 (*) + * @arg @ref LL_APB1_GRP1_PERIPH_TIM12 (*) + * @arg @ref LL_APB1_GRP1_PERIPH_TIM13 (*) + * @arg @ref LL_APB1_GRP1_PERIPH_TIM14 (*) + * @arg @ref LL_APB1_GRP1_PERIPH_TIM2 + * @arg @ref LL_APB1_GRP1_PERIPH_TIM3 + * @arg @ref LL_APB1_GRP1_PERIPH_TIM4 (*) + * @arg @ref LL_APB1_GRP1_PERIPH_TIM5 (*) + * @arg @ref LL_APB1_GRP1_PERIPH_TIM6 (*) + * @arg @ref LL_APB1_GRP1_PERIPH_TIM7 (*) + * @arg @ref LL_APB1_GRP1_PERIPH_UART4 (*) + * @arg @ref LL_APB1_GRP1_PERIPH_UART5 (*) + * @arg @ref LL_APB1_GRP1_PERIPH_USART2 + * @arg @ref LL_APB1_GRP1_PERIPH_USART3 (*) + * @arg @ref LL_APB1_GRP1_PERIPH_USB (*) + * @arg @ref LL_APB1_GRP1_PERIPH_WWDG + * + * (*) value not defined in all devices. + * @retval None +*/ +__STATIC_INLINE void LL_APB1_GRP1_ForceReset(uint32_t Periphs) +{ + SET_BIT(RCC->APB1RSTR, Periphs); +} + +/** + * @brief Release APB1 peripherals reset. + * @rmtoll APB1RSTR BKPRST LL_APB1_GRP1_ReleaseReset\n + * APB1RSTR CAN1RST LL_APB1_GRP1_ReleaseReset\n + * APB1RSTR CAN2RST LL_APB1_GRP1_ReleaseReset\n + * APB1RSTR CECRST LL_APB1_GRP1_ReleaseReset\n + * APB1RSTR DACRST LL_APB1_GRP1_ReleaseReset\n + * APB1RSTR I2C1RST LL_APB1_GRP1_ReleaseReset\n + * APB1RSTR I2C2RST LL_APB1_GRP1_ReleaseReset\n + * APB1RSTR PWRRST LL_APB1_GRP1_ReleaseReset\n + * APB1RSTR SPI2RST LL_APB1_GRP1_ReleaseReset\n + * APB1RSTR SPI3RST LL_APB1_GRP1_ReleaseReset\n + * APB1RSTR TIM12RST LL_APB1_GRP1_ReleaseReset\n + * APB1RSTR TIM13RST LL_APB1_GRP1_ReleaseReset\n + * APB1RSTR TIM14RST LL_APB1_GRP1_ReleaseReset\n + * APB1RSTR TIM2RST LL_APB1_GRP1_ReleaseReset\n + * APB1RSTR TIM3RST LL_APB1_GRP1_ReleaseReset\n + * APB1RSTR TIM4RST LL_APB1_GRP1_ReleaseReset\n + * APB1RSTR TIM5RST LL_APB1_GRP1_ReleaseReset\n + * APB1RSTR TIM6RST LL_APB1_GRP1_ReleaseReset\n + * APB1RSTR TIM7RST LL_APB1_GRP1_ReleaseReset\n + * APB1RSTR UART4RST LL_APB1_GRP1_ReleaseReset\n + * APB1RSTR UART5RST LL_APB1_GRP1_ReleaseReset\n + * APB1RSTR USART2RST LL_APB1_GRP1_ReleaseReset\n + * APB1RSTR USART3RST LL_APB1_GRP1_ReleaseReset\n + * APB1RSTR USBRST LL_APB1_GRP1_ReleaseReset\n + * APB1RSTR WWDGRST LL_APB1_GRP1_ReleaseReset + * @param Periphs This parameter can be a combination of the following values: + * @arg @ref LL_APB1_GRP1_PERIPH_ALL + * @arg @ref LL_APB1_GRP1_PERIPH_BKP + * @arg @ref LL_APB1_GRP1_PERIPH_CAN1 (*) + * @arg @ref LL_APB1_GRP1_PERIPH_CAN2 (*) + * @arg @ref LL_APB1_GRP1_PERIPH_CEC (*) + * @arg @ref LL_APB1_GRP1_PERIPH_DAC1 (*) + * @arg @ref LL_APB1_GRP1_PERIPH_I2C1 + * @arg @ref LL_APB1_GRP1_PERIPH_I2C2 (*) + * @arg @ref LL_APB1_GRP1_PERIPH_PWR + * @arg @ref LL_APB1_GRP1_PERIPH_SPI2 (*) + * @arg @ref LL_APB1_GRP1_PERIPH_SPI3 (*) + * @arg @ref LL_APB1_GRP1_PERIPH_TIM12 (*) + * @arg @ref LL_APB1_GRP1_PERIPH_TIM13 (*) + * @arg @ref LL_APB1_GRP1_PERIPH_TIM14 (*) + * @arg @ref LL_APB1_GRP1_PERIPH_TIM2 + * @arg @ref LL_APB1_GRP1_PERIPH_TIM3 + * @arg @ref LL_APB1_GRP1_PERIPH_TIM4 (*) + * @arg @ref LL_APB1_GRP1_PERIPH_TIM5 (*) + * @arg @ref LL_APB1_GRP1_PERIPH_TIM6 (*) + * @arg @ref LL_APB1_GRP1_PERIPH_TIM7 (*) + * @arg @ref LL_APB1_GRP1_PERIPH_UART4 (*) + * @arg @ref LL_APB1_GRP1_PERIPH_UART5 (*) + * @arg @ref LL_APB1_GRP1_PERIPH_USART2 + * @arg @ref LL_APB1_GRP1_PERIPH_USART3 (*) + * @arg @ref LL_APB1_GRP1_PERIPH_USB (*) + * @arg @ref LL_APB1_GRP1_PERIPH_WWDG + * + * (*) value not defined in all devices. + * @retval None +*/ +__STATIC_INLINE void LL_APB1_GRP1_ReleaseReset(uint32_t Periphs) +{ + CLEAR_BIT(RCC->APB1RSTR, Periphs); +} + +/** + * @} + */ + +/** @defgroup BUS_LL_EF_APB2 APB2 + * @{ + */ + +/** + * @brief Enable APB2 peripherals clock. + * @rmtoll APB2ENR ADC1EN LL_APB2_GRP1_EnableClock\n + * APB2ENR ADC2EN LL_APB2_GRP1_EnableClock\n + * APB2ENR ADC3EN LL_APB2_GRP1_EnableClock\n + * APB2ENR AFIOEN LL_APB2_GRP1_EnableClock\n + * APB2ENR IOPAEN LL_APB2_GRP1_EnableClock\n + * APB2ENR IOPBEN LL_APB2_GRP1_EnableClock\n + * APB2ENR IOPCEN LL_APB2_GRP1_EnableClock\n + * APB2ENR IOPDEN LL_APB2_GRP1_EnableClock\n + * APB2ENR IOPEEN LL_APB2_GRP1_EnableClock\n + * APB2ENR IOPFEN LL_APB2_GRP1_EnableClock\n + * APB2ENR IOPGEN LL_APB2_GRP1_EnableClock\n + * APB2ENR SPI1EN LL_APB2_GRP1_EnableClock\n + * APB2ENR TIM10EN LL_APB2_GRP1_EnableClock\n + * APB2ENR TIM11EN LL_APB2_GRP1_EnableClock\n + * APB2ENR TIM15EN LL_APB2_GRP1_EnableClock\n + * APB2ENR TIM16EN LL_APB2_GRP1_EnableClock\n + * APB2ENR TIM17EN LL_APB2_GRP1_EnableClock\n + * APB2ENR TIM1EN LL_APB2_GRP1_EnableClock\n + * APB2ENR TIM8EN LL_APB2_GRP1_EnableClock\n + * APB2ENR TIM9EN LL_APB2_GRP1_EnableClock\n + * APB2ENR USART1EN LL_APB2_GRP1_EnableClock + * @param Periphs This parameter can be a combination of the following values: + * @arg @ref LL_APB2_GRP1_PERIPH_ADC1 + * @arg @ref LL_APB2_GRP1_PERIPH_ADC2 (*) + * @arg @ref LL_APB2_GRP1_PERIPH_ADC3 (*) + * @arg @ref LL_APB2_GRP1_PERIPH_AFIO + * @arg @ref LL_APB2_GRP1_PERIPH_GPIOA + * @arg @ref LL_APB2_GRP1_PERIPH_GPIOB + * @arg @ref LL_APB2_GRP1_PERIPH_GPIOC + * @arg @ref LL_APB2_GRP1_PERIPH_GPIOD + * @arg @ref LL_APB2_GRP1_PERIPH_GPIOE (*) + * @arg @ref LL_APB2_GRP1_PERIPH_GPIOF (*) + * @arg @ref LL_APB2_GRP1_PERIPH_GPIOG (*) + * @arg @ref LL_APB2_GRP1_PERIPH_SPI1 + * @arg @ref LL_APB2_GRP1_PERIPH_TIM10 (*) + * @arg @ref LL_APB2_GRP1_PERIPH_TIM11 (*) + * @arg @ref LL_APB2_GRP1_PERIPH_TIM15 (*) + * @arg @ref LL_APB2_GRP1_PERIPH_TIM16 (*) + * @arg @ref LL_APB2_GRP1_PERIPH_TIM17 (*) + * @arg @ref LL_APB2_GRP1_PERIPH_TIM1 + * @arg @ref LL_APB2_GRP1_PERIPH_TIM8 (*) + * @arg @ref LL_APB2_GRP1_PERIPH_TIM9 (*) + * @arg @ref LL_APB2_GRP1_PERIPH_USART1 + * + * (*) value not defined in all devices. + * @retval None +*/ +__STATIC_INLINE void LL_APB2_GRP1_EnableClock(uint32_t Periphs) +{ + __IO uint32_t tmpreg; + SET_BIT(RCC->APB2ENR, Periphs); + /* Delay after an RCC peripheral clock enabling */ + tmpreg = READ_BIT(RCC->APB2ENR, Periphs); + (void)tmpreg; +} + +/** + * @brief Check if APB2 peripheral clock is enabled or not + * @rmtoll APB2ENR ADC1EN LL_APB2_GRP1_IsEnabledClock\n + * APB2ENR ADC2EN LL_APB2_GRP1_IsEnabledClock\n + * APB2ENR ADC3EN LL_APB2_GRP1_IsEnabledClock\n + * APB2ENR AFIOEN LL_APB2_GRP1_IsEnabledClock\n + * APB2ENR IOPAEN LL_APB2_GRP1_IsEnabledClock\n + * APB2ENR IOPBEN LL_APB2_GRP1_IsEnabledClock\n + * APB2ENR IOPCEN LL_APB2_GRP1_IsEnabledClock\n + * APB2ENR IOPDEN LL_APB2_GRP1_IsEnabledClock\n + * APB2ENR IOPEEN LL_APB2_GRP1_IsEnabledClock\n + * APB2ENR IOPFEN LL_APB2_GRP1_IsEnabledClock\n + * APB2ENR IOPGEN LL_APB2_GRP1_IsEnabledClock\n + * APB2ENR SPI1EN LL_APB2_GRP1_IsEnabledClock\n + * APB2ENR TIM10EN LL_APB2_GRP1_IsEnabledClock\n + * APB2ENR TIM11EN LL_APB2_GRP1_IsEnabledClock\n + * APB2ENR TIM15EN LL_APB2_GRP1_IsEnabledClock\n + * APB2ENR TIM16EN LL_APB2_GRP1_IsEnabledClock\n + * APB2ENR TIM17EN LL_APB2_GRP1_IsEnabledClock\n + * APB2ENR TIM1EN LL_APB2_GRP1_IsEnabledClock\n + * APB2ENR TIM8EN LL_APB2_GRP1_IsEnabledClock\n + * APB2ENR TIM9EN LL_APB2_GRP1_IsEnabledClock\n + * APB2ENR USART1EN LL_APB2_GRP1_IsEnabledClock + * @param Periphs This parameter can be a combination of the following values: + * @arg @ref LL_APB2_GRP1_PERIPH_ADC1 + * @arg @ref LL_APB2_GRP1_PERIPH_ADC2 (*) + * @arg @ref LL_APB2_GRP1_PERIPH_ADC3 (*) + * @arg @ref LL_APB2_GRP1_PERIPH_AFIO + * @arg @ref LL_APB2_GRP1_PERIPH_GPIOA + * @arg @ref LL_APB2_GRP1_PERIPH_GPIOB + * @arg @ref LL_APB2_GRP1_PERIPH_GPIOC + * @arg @ref LL_APB2_GRP1_PERIPH_GPIOD + * @arg @ref LL_APB2_GRP1_PERIPH_GPIOE (*) + * @arg @ref LL_APB2_GRP1_PERIPH_GPIOF (*) + * @arg @ref LL_APB2_GRP1_PERIPH_GPIOG (*) + * @arg @ref LL_APB2_GRP1_PERIPH_SPI1 + * @arg @ref LL_APB2_GRP1_PERIPH_TIM10 (*) + * @arg @ref LL_APB2_GRP1_PERIPH_TIM11 (*) + * @arg @ref LL_APB2_GRP1_PERIPH_TIM15 (*) + * @arg @ref LL_APB2_GRP1_PERIPH_TIM16 (*) + * @arg @ref LL_APB2_GRP1_PERIPH_TIM17 (*) + * @arg @ref LL_APB2_GRP1_PERIPH_TIM1 + * @arg @ref LL_APB2_GRP1_PERIPH_TIM8 (*) + * @arg @ref LL_APB2_GRP1_PERIPH_TIM9 (*) + * @arg @ref LL_APB2_GRP1_PERIPH_USART1 + * + * (*) value not defined in all devices. + * @retval State of Periphs (1 or 0). +*/ +__STATIC_INLINE uint32_t LL_APB2_GRP1_IsEnabledClock(uint32_t Periphs) +{ + return (READ_BIT(RCC->APB2ENR, Periphs) == Periphs); +} + +/** + * @brief Disable APB2 peripherals clock. + * @rmtoll APB2ENR ADC1EN LL_APB2_GRP1_DisableClock\n + * APB2ENR ADC2EN LL_APB2_GRP1_DisableClock\n + * APB2ENR ADC3EN LL_APB2_GRP1_DisableClock\n + * APB2ENR AFIOEN LL_APB2_GRP1_DisableClock\n + * APB2ENR IOPAEN LL_APB2_GRP1_DisableClock\n + * APB2ENR IOPBEN LL_APB2_GRP1_DisableClock\n + * APB2ENR IOPCEN LL_APB2_GRP1_DisableClock\n + * APB2ENR IOPDEN LL_APB2_GRP1_DisableClock\n + * APB2ENR IOPEEN LL_APB2_GRP1_DisableClock\n + * APB2ENR IOPFEN LL_APB2_GRP1_DisableClock\n + * APB2ENR IOPGEN LL_APB2_GRP1_DisableClock\n + * APB2ENR SPI1EN LL_APB2_GRP1_DisableClock\n + * APB2ENR TIM10EN LL_APB2_GRP1_DisableClock\n + * APB2ENR TIM11EN LL_APB2_GRP1_DisableClock\n + * APB2ENR TIM15EN LL_APB2_GRP1_DisableClock\n + * APB2ENR TIM16EN LL_APB2_GRP1_DisableClock\n + * APB2ENR TIM17EN LL_APB2_GRP1_DisableClock\n + * APB2ENR TIM1EN LL_APB2_GRP1_DisableClock\n + * APB2ENR TIM8EN LL_APB2_GRP1_DisableClock\n + * APB2ENR TIM9EN LL_APB2_GRP1_DisableClock\n + * APB2ENR USART1EN LL_APB2_GRP1_DisableClock + * @param Periphs This parameter can be a combination of the following values: + * @arg @ref LL_APB2_GRP1_PERIPH_ADC1 + * @arg @ref LL_APB2_GRP1_PERIPH_ADC2 (*) + * @arg @ref LL_APB2_GRP1_PERIPH_ADC3 (*) + * @arg @ref LL_APB2_GRP1_PERIPH_AFIO + * @arg @ref LL_APB2_GRP1_PERIPH_GPIOA + * @arg @ref LL_APB2_GRP1_PERIPH_GPIOB + * @arg @ref LL_APB2_GRP1_PERIPH_GPIOC + * @arg @ref LL_APB2_GRP1_PERIPH_GPIOD + * @arg @ref LL_APB2_GRP1_PERIPH_GPIOE (*) + * @arg @ref LL_APB2_GRP1_PERIPH_GPIOF (*) + * @arg @ref LL_APB2_GRP1_PERIPH_GPIOG (*) + * @arg @ref LL_APB2_GRP1_PERIPH_SPI1 + * @arg @ref LL_APB2_GRP1_PERIPH_TIM10 (*) + * @arg @ref LL_APB2_GRP1_PERIPH_TIM11 (*) + * @arg @ref LL_APB2_GRP1_PERIPH_TIM15 (*) + * @arg @ref LL_APB2_GRP1_PERIPH_TIM16 (*) + * @arg @ref LL_APB2_GRP1_PERIPH_TIM17 (*) + * @arg @ref LL_APB2_GRP1_PERIPH_TIM1 + * @arg @ref LL_APB2_GRP1_PERIPH_TIM8 (*) + * @arg @ref LL_APB2_GRP1_PERIPH_TIM9 (*) + * @arg @ref LL_APB2_GRP1_PERIPH_USART1 + * + * (*) value not defined in all devices. + * @retval None +*/ +__STATIC_INLINE void LL_APB2_GRP1_DisableClock(uint32_t Periphs) +{ + CLEAR_BIT(RCC->APB2ENR, Periphs); +} + +/** + * @brief Force APB2 peripherals reset. + * @rmtoll APB2RSTR ADC1RST LL_APB2_GRP1_ForceReset\n + * APB2RSTR ADC2RST LL_APB2_GRP1_ForceReset\n + * APB2RSTR ADC3RST LL_APB2_GRP1_ForceReset\n + * APB2RSTR AFIORST LL_APB2_GRP1_ForceReset\n + * APB2RSTR IOPARST LL_APB2_GRP1_ForceReset\n + * APB2RSTR IOPBRST LL_APB2_GRP1_ForceReset\n + * APB2RSTR IOPCRST LL_APB2_GRP1_ForceReset\n + * APB2RSTR IOPDRST LL_APB2_GRP1_ForceReset\n + * APB2RSTR IOPERST LL_APB2_GRP1_ForceReset\n + * APB2RSTR IOPFRST LL_APB2_GRP1_ForceReset\n + * APB2RSTR IOPGRST LL_APB2_GRP1_ForceReset\n + * APB2RSTR SPI1RST LL_APB2_GRP1_ForceReset\n + * APB2RSTR TIM10RST LL_APB2_GRP1_ForceReset\n + * APB2RSTR TIM11RST LL_APB2_GRP1_ForceReset\n + * APB2RSTR TIM15RST LL_APB2_GRP1_ForceReset\n + * APB2RSTR TIM16RST LL_APB2_GRP1_ForceReset\n + * APB2RSTR TIM17RST LL_APB2_GRP1_ForceReset\n + * APB2RSTR TIM1RST LL_APB2_GRP1_ForceReset\n + * APB2RSTR TIM8RST LL_APB2_GRP1_ForceReset\n + * APB2RSTR TIM9RST LL_APB2_GRP1_ForceReset\n + * APB2RSTR USART1RST LL_APB2_GRP1_ForceReset + * @param Periphs This parameter can be a combination of the following values: + * @arg @ref LL_APB2_GRP1_PERIPH_ALL + * @arg @ref LL_APB2_GRP1_PERIPH_ADC1 + * @arg @ref LL_APB2_GRP1_PERIPH_ADC2 (*) + * @arg @ref LL_APB2_GRP1_PERIPH_ADC3 (*) + * @arg @ref LL_APB2_GRP1_PERIPH_AFIO + * @arg @ref LL_APB2_GRP1_PERIPH_GPIOA + * @arg @ref LL_APB2_GRP1_PERIPH_GPIOB + * @arg @ref LL_APB2_GRP1_PERIPH_GPIOC + * @arg @ref LL_APB2_GRP1_PERIPH_GPIOD + * @arg @ref LL_APB2_GRP1_PERIPH_GPIOE (*) + * @arg @ref LL_APB2_GRP1_PERIPH_GPIOF (*) + * @arg @ref LL_APB2_GRP1_PERIPH_GPIOG (*) + * @arg @ref LL_APB2_GRP1_PERIPH_SPI1 + * @arg @ref LL_APB2_GRP1_PERIPH_TIM10 (*) + * @arg @ref LL_APB2_GRP1_PERIPH_TIM11 (*) + * @arg @ref LL_APB2_GRP1_PERIPH_TIM15 (*) + * @arg @ref LL_APB2_GRP1_PERIPH_TIM16 (*) + * @arg @ref LL_APB2_GRP1_PERIPH_TIM17 (*) + * @arg @ref LL_APB2_GRP1_PERIPH_TIM1 + * @arg @ref LL_APB2_GRP1_PERIPH_TIM8 (*) + * @arg @ref LL_APB2_GRP1_PERIPH_TIM9 (*) + * @arg @ref LL_APB2_GRP1_PERIPH_USART1 + * + * (*) value not defined in all devices. + * @retval None +*/ +__STATIC_INLINE void LL_APB2_GRP1_ForceReset(uint32_t Periphs) +{ + SET_BIT(RCC->APB2RSTR, Periphs); +} + +/** + * @brief Release APB2 peripherals reset. + * @rmtoll APB2RSTR ADC1RST LL_APB2_GRP1_ReleaseReset\n + * APB2RSTR ADC2RST LL_APB2_GRP1_ReleaseReset\n + * APB2RSTR ADC3RST LL_APB2_GRP1_ReleaseReset\n + * APB2RSTR AFIORST LL_APB2_GRP1_ReleaseReset\n + * APB2RSTR IOPARST LL_APB2_GRP1_ReleaseReset\n + * APB2RSTR IOPBRST LL_APB2_GRP1_ReleaseReset\n + * APB2RSTR IOPCRST LL_APB2_GRP1_ReleaseReset\n + * APB2RSTR IOPDRST LL_APB2_GRP1_ReleaseReset\n + * APB2RSTR IOPERST LL_APB2_GRP1_ReleaseReset\n + * APB2RSTR IOPFRST LL_APB2_GRP1_ReleaseReset\n + * APB2RSTR IOPGRST LL_APB2_GRP1_ReleaseReset\n + * APB2RSTR SPI1RST LL_APB2_GRP1_ReleaseReset\n + * APB2RSTR TIM10RST LL_APB2_GRP1_ReleaseReset\n + * APB2RSTR TIM11RST LL_APB2_GRP1_ReleaseReset\n + * APB2RSTR TIM15RST LL_APB2_GRP1_ReleaseReset\n + * APB2RSTR TIM16RST LL_APB2_GRP1_ReleaseReset\n + * APB2RSTR TIM17RST LL_APB2_GRP1_ReleaseReset\n + * APB2RSTR TIM1RST LL_APB2_GRP1_ReleaseReset\n + * APB2RSTR TIM8RST LL_APB2_GRP1_ReleaseReset\n + * APB2RSTR TIM9RST LL_APB2_GRP1_ReleaseReset\n + * APB2RSTR USART1RST LL_APB2_GRP1_ReleaseReset + * @param Periphs This parameter can be a combination of the following values: + * @arg @ref LL_APB2_GRP1_PERIPH_ALL + * @arg @ref LL_APB2_GRP1_PERIPH_ADC1 + * @arg @ref LL_APB2_GRP1_PERIPH_ADC2 (*) + * @arg @ref LL_APB2_GRP1_PERIPH_ADC3 (*) + * @arg @ref LL_APB2_GRP1_PERIPH_AFIO + * @arg @ref LL_APB2_GRP1_PERIPH_GPIOA + * @arg @ref LL_APB2_GRP1_PERIPH_GPIOB + * @arg @ref LL_APB2_GRP1_PERIPH_GPIOC + * @arg @ref LL_APB2_GRP1_PERIPH_GPIOD + * @arg @ref LL_APB2_GRP1_PERIPH_GPIOE (*) + * @arg @ref LL_APB2_GRP1_PERIPH_GPIOF (*) + * @arg @ref LL_APB2_GRP1_PERIPH_GPIOG (*) + * @arg @ref LL_APB2_GRP1_PERIPH_SPI1 + * @arg @ref LL_APB2_GRP1_PERIPH_TIM10 (*) + * @arg @ref LL_APB2_GRP1_PERIPH_TIM11 (*) + * @arg @ref LL_APB2_GRP1_PERIPH_TIM15 (*) + * @arg @ref LL_APB2_GRP1_PERIPH_TIM16 (*) + * @arg @ref LL_APB2_GRP1_PERIPH_TIM17 (*) + * @arg @ref LL_APB2_GRP1_PERIPH_TIM1 + * @arg @ref LL_APB2_GRP1_PERIPH_TIM8 (*) + * @arg @ref LL_APB2_GRP1_PERIPH_TIM9 (*) + * @arg @ref LL_APB2_GRP1_PERIPH_USART1 + * + * (*) value not defined in all devices. + * @retval None +*/ +__STATIC_INLINE void LL_APB2_GRP1_ReleaseReset(uint32_t Periphs) +{ + CLEAR_BIT(RCC->APB2RSTR, Periphs); +} + +/** + * @} + */ + + +/** + * @} + */ + +/** + * @} + */ + +#endif /* defined(RCC) */ + +/** + * @} + */ + +#ifdef __cplusplus +} +#endif + +#endif /* __STM32F1xx_LL_BUS_H */ + +/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/ diff --git a/LLDrivers/inc/stm32f1xx_ll_cortex.h b/LLDrivers/inc/stm32f1xx_ll_cortex.h new file mode 100644 index 0000000..a1444a8 --- /dev/null +++ b/LLDrivers/inc/stm32f1xx_ll_cortex.h @@ -0,0 +1,640 @@ +/** + ****************************************************************************** + * @file stm32f1xx_ll_cortex.h + * @author MCD Application Team + * @brief Header file of CORTEX LL module. + @verbatim + ============================================================================== + ##### How to use this driver ##### + ============================================================================== + [..] + The LL CORTEX driver contains a set of generic APIs that can be + used by user: + (+) SYSTICK configuration used by @ref LL_mDelay and @ref LL_Init1msTick + functions + (+) Low power mode configuration (SCB register of Cortex-MCU) + (+) MPU API to configure and enable regions + (MPU services provided only on some devices) + (+) API to access to MCU info (CPUID register) + (+) API to enable fault handler (SHCSR accesses) + + @endverbatim + ****************************************************************************** + * @attention + * + *

© Copyright (c) 2016 STMicroelectronics. + * All rights reserved.

+ * + * This software component is licensed by ST under BSD 3-Clause license, + * the "License"; You may not use this file except in compliance with the + * License. You may obtain a copy of the License at: + * opensource.org/licenses/BSD-3-Clause + * + ****************************************************************************** + */ + +/* Define to prevent recursive inclusion -------------------------------------*/ +#ifndef __STM32F1xx_LL_CORTEX_H +#define __STM32F1xx_LL_CORTEX_H + +#ifdef __cplusplus +extern "C" { +#endif + +/* Includes ------------------------------------------------------------------*/ +#include "stm32f1xx.h" + +/** @addtogroup STM32F1xx_LL_Driver + * @{ + */ + +/** @defgroup CORTEX_LL CORTEX + * @{ + */ + +/* Private types -------------------------------------------------------------*/ +/* Private variables ---------------------------------------------------------*/ + +/* Private constants ---------------------------------------------------------*/ + +/* Private macros ------------------------------------------------------------*/ + +/* Exported types ------------------------------------------------------------*/ +/* Exported constants --------------------------------------------------------*/ +/** @defgroup CORTEX_LL_Exported_Constants CORTEX Exported Constants + * @{ + */ + +/** @defgroup CORTEX_LL_EC_CLKSOURCE_HCLK SYSTICK Clock Source + * @{ + */ +#define LL_SYSTICK_CLKSOURCE_HCLK_DIV8 0x00000000U /*!< AHB clock divided by 8 selected as SysTick clock source.*/ +#define LL_SYSTICK_CLKSOURCE_HCLK SysTick_CTRL_CLKSOURCE_Msk /*!< AHB clock selected as SysTick clock source. */ +/** + * @} + */ + +/** @defgroup CORTEX_LL_EC_FAULT Handler Fault type + * @{ + */ +#define LL_HANDLER_FAULT_USG SCB_SHCSR_USGFAULTENA_Msk /*!< Usage fault */ +#define LL_HANDLER_FAULT_BUS SCB_SHCSR_BUSFAULTENA_Msk /*!< Bus fault */ +#define LL_HANDLER_FAULT_MEM SCB_SHCSR_MEMFAULTENA_Msk /*!< Memory management fault */ +/** + * @} + */ + +#if __MPU_PRESENT + +/** @defgroup CORTEX_LL_EC_CTRL_HFNMI_PRIVDEF MPU Control + * @{ + */ +#define LL_MPU_CTRL_HFNMI_PRIVDEF_NONE 0x00000000U /*!< Disable NMI and privileged SW access */ +#define LL_MPU_CTRL_HARDFAULT_NMI MPU_CTRL_HFNMIENA_Msk /*!< Enables the operation of MPU during hard fault, NMI, and FAULTMASK handlers */ +#define LL_MPU_CTRL_PRIVILEGED_DEFAULT MPU_CTRL_PRIVDEFENA_Msk /*!< Enable privileged software access to default memory map */ +#define LL_MPU_CTRL_HFNMI_PRIVDEF (MPU_CTRL_HFNMIENA_Msk | MPU_CTRL_PRIVDEFENA_Msk) /*!< Enable NMI and privileged SW access */ +/** + * @} + */ + +/** @defgroup CORTEX_LL_EC_REGION MPU Region Number + * @{ + */ +#define LL_MPU_REGION_NUMBER0 0x00U /*!< REGION Number 0 */ +#define LL_MPU_REGION_NUMBER1 0x01U /*!< REGION Number 1 */ +#define LL_MPU_REGION_NUMBER2 0x02U /*!< REGION Number 2 */ +#define LL_MPU_REGION_NUMBER3 0x03U /*!< REGION Number 3 */ +#define LL_MPU_REGION_NUMBER4 0x04U /*!< REGION Number 4 */ +#define LL_MPU_REGION_NUMBER5 0x05U /*!< REGION Number 5 */ +#define LL_MPU_REGION_NUMBER6 0x06U /*!< REGION Number 6 */ +#define LL_MPU_REGION_NUMBER7 0x07U /*!< REGION Number 7 */ +/** + * @} + */ + +/** @defgroup CORTEX_LL_EC_REGION_SIZE MPU Region Size + * @{ + */ +#define LL_MPU_REGION_SIZE_32B (0x04U << MPU_RASR_SIZE_Pos) /*!< 32B Size of the MPU protection region */ +#define LL_MPU_REGION_SIZE_64B (0x05U << MPU_RASR_SIZE_Pos) /*!< 64B Size of the MPU protection region */ +#define LL_MPU_REGION_SIZE_128B (0x06U << MPU_RASR_SIZE_Pos) /*!< 128B Size of the MPU protection region */ +#define LL_MPU_REGION_SIZE_256B (0x07U << MPU_RASR_SIZE_Pos) /*!< 256B Size of the MPU protection region */ +#define LL_MPU_REGION_SIZE_512B (0x08U << MPU_RASR_SIZE_Pos) /*!< 512B Size of the MPU protection region */ +#define LL_MPU_REGION_SIZE_1KB (0x09U << MPU_RASR_SIZE_Pos) /*!< 1KB Size of the MPU protection region */ +#define LL_MPU_REGION_SIZE_2KB (0x0AU << MPU_RASR_SIZE_Pos) /*!< 2KB Size of the MPU protection region */ +#define LL_MPU_REGION_SIZE_4KB (0x0BU << MPU_RASR_SIZE_Pos) /*!< 4KB Size of the MPU protection region */ +#define LL_MPU_REGION_SIZE_8KB (0x0CU << MPU_RASR_SIZE_Pos) /*!< 8KB Size of the MPU protection region */ +#define LL_MPU_REGION_SIZE_16KB (0x0DU << MPU_RASR_SIZE_Pos) /*!< 16KB Size of the MPU protection region */ +#define LL_MPU_REGION_SIZE_32KB (0x0EU << MPU_RASR_SIZE_Pos) /*!< 32KB Size of the MPU protection region */ +#define LL_MPU_REGION_SIZE_64KB (0x0FU << MPU_RASR_SIZE_Pos) /*!< 64KB Size of the MPU protection region */ +#define LL_MPU_REGION_SIZE_128KB (0x10U << MPU_RASR_SIZE_Pos) /*!< 128KB Size of the MPU protection region */ +#define LL_MPU_REGION_SIZE_256KB (0x11U << MPU_RASR_SIZE_Pos) /*!< 256KB Size of the MPU protection region */ +#define LL_MPU_REGION_SIZE_512KB (0x12U << MPU_RASR_SIZE_Pos) /*!< 512KB Size of the MPU protection region */ +#define LL_MPU_REGION_SIZE_1MB (0x13U << MPU_RASR_SIZE_Pos) /*!< 1MB Size of the MPU protection region */ +#define LL_MPU_REGION_SIZE_2MB (0x14U << MPU_RASR_SIZE_Pos) /*!< 2MB Size of the MPU protection region */ +#define LL_MPU_REGION_SIZE_4MB (0x15U << MPU_RASR_SIZE_Pos) /*!< 4MB Size of the MPU protection region */ +#define LL_MPU_REGION_SIZE_8MB (0x16U << MPU_RASR_SIZE_Pos) /*!< 8MB Size of the MPU protection region */ +#define LL_MPU_REGION_SIZE_16MB (0x17U << MPU_RASR_SIZE_Pos) /*!< 16MB Size of the MPU protection region */ +#define LL_MPU_REGION_SIZE_32MB (0x18U << MPU_RASR_SIZE_Pos) /*!< 32MB Size of the MPU protection region */ +#define LL_MPU_REGION_SIZE_64MB (0x19U << MPU_RASR_SIZE_Pos) /*!< 64MB Size of the MPU protection region */ +#define LL_MPU_REGION_SIZE_128MB (0x1AU << MPU_RASR_SIZE_Pos) /*!< 128MB Size of the MPU protection region */ +#define LL_MPU_REGION_SIZE_256MB (0x1BU << MPU_RASR_SIZE_Pos) /*!< 256MB Size of the MPU protection region */ +#define LL_MPU_REGION_SIZE_512MB (0x1CU << MPU_RASR_SIZE_Pos) /*!< 512MB Size of the MPU protection region */ +#define LL_MPU_REGION_SIZE_1GB (0x1DU << MPU_RASR_SIZE_Pos) /*!< 1GB Size of the MPU protection region */ +#define LL_MPU_REGION_SIZE_2GB (0x1EU << MPU_RASR_SIZE_Pos) /*!< 2GB Size of the MPU protection region */ +#define LL_MPU_REGION_SIZE_4GB (0x1FU << MPU_RASR_SIZE_Pos) /*!< 4GB Size of the MPU protection region */ +/** + * @} + */ + +/** @defgroup CORTEX_LL_EC_REGION_PRIVILEDGES MPU Region Privileges + * @{ + */ +#define LL_MPU_REGION_NO_ACCESS (0x00U << MPU_RASR_AP_Pos) /*!< No access*/ +#define LL_MPU_REGION_PRIV_RW (0x01U << MPU_RASR_AP_Pos) /*!< RW privileged (privileged access only)*/ +#define LL_MPU_REGION_PRIV_RW_URO (0x02U << MPU_RASR_AP_Pos) /*!< RW privileged - RO user (Write in a user program generates a fault) */ +#define LL_MPU_REGION_FULL_ACCESS (0x03U << MPU_RASR_AP_Pos) /*!< RW privileged & user (Full access) */ +#define LL_MPU_REGION_PRIV_RO (0x05U << MPU_RASR_AP_Pos) /*!< RO privileged (privileged read only)*/ +#define LL_MPU_REGION_PRIV_RO_URO (0x06U << MPU_RASR_AP_Pos) /*!< RO privileged & user (read only) */ +/** + * @} + */ + +/** @defgroup CORTEX_LL_EC_TEX MPU TEX Level + * @{ + */ +#define LL_MPU_TEX_LEVEL0 (0x00U << MPU_RASR_TEX_Pos) /*!< b000 for TEX bits */ +#define LL_MPU_TEX_LEVEL1 (0x01U << MPU_RASR_TEX_Pos) /*!< b001 for TEX bits */ +#define LL_MPU_TEX_LEVEL2 (0x02U << MPU_RASR_TEX_Pos) /*!< b010 for TEX bits */ +#define LL_MPU_TEX_LEVEL4 (0x04U << MPU_RASR_TEX_Pos) /*!< b100 for TEX bits */ +/** + * @} + */ + +/** @defgroup CORTEX_LL_EC_INSTRUCTION_ACCESS MPU Instruction Access + * @{ + */ +#define LL_MPU_INSTRUCTION_ACCESS_ENABLE 0x00U /*!< Instruction fetches enabled */ +#define LL_MPU_INSTRUCTION_ACCESS_DISABLE MPU_RASR_XN_Msk /*!< Instruction fetches disabled*/ +/** + * @} + */ + +/** @defgroup CORTEX_LL_EC_SHAREABLE_ACCESS MPU Shareable Access + * @{ + */ +#define LL_MPU_ACCESS_SHAREABLE MPU_RASR_S_Msk /*!< Shareable memory attribute */ +#define LL_MPU_ACCESS_NOT_SHAREABLE 0x00U /*!< Not Shareable memory attribute */ +/** + * @} + */ + +/** @defgroup CORTEX_LL_EC_CACHEABLE_ACCESS MPU Cacheable Access + * @{ + */ +#define LL_MPU_ACCESS_CACHEABLE MPU_RASR_C_Msk /*!< Cacheable memory attribute */ +#define LL_MPU_ACCESS_NOT_CACHEABLE 0x00U /*!< Not Cacheable memory attribute */ +/** + * @} + */ + +/** @defgroup CORTEX_LL_EC_BUFFERABLE_ACCESS MPU Bufferable Access + * @{ + */ +#define LL_MPU_ACCESS_BUFFERABLE MPU_RASR_B_Msk /*!< Bufferable memory attribute */ +#define LL_MPU_ACCESS_NOT_BUFFERABLE 0x00U /*!< Not Bufferable memory attribute */ +/** + * @} + */ +#endif /* __MPU_PRESENT */ +/** + * @} + */ + +/* Exported macro ------------------------------------------------------------*/ + +/* Exported functions --------------------------------------------------------*/ +/** @defgroup CORTEX_LL_Exported_Functions CORTEX Exported Functions + * @{ + */ + +/** @defgroup CORTEX_LL_EF_SYSTICK SYSTICK + * @{ + */ + +/** + * @brief This function checks if the Systick counter flag is active or not. + * @note It can be used in timeout function on application side. + * @rmtoll STK_CTRL COUNTFLAG LL_SYSTICK_IsActiveCounterFlag + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_SYSTICK_IsActiveCounterFlag(void) +{ + return ((SysTick->CTRL & SysTick_CTRL_COUNTFLAG_Msk) == (SysTick_CTRL_COUNTFLAG_Msk)); +} + +/** + * @brief Configures the SysTick clock source + * @rmtoll STK_CTRL CLKSOURCE LL_SYSTICK_SetClkSource + * @param Source This parameter can be one of the following values: + * @arg @ref LL_SYSTICK_CLKSOURCE_HCLK_DIV8 + * @arg @ref LL_SYSTICK_CLKSOURCE_HCLK + * @retval None + */ +__STATIC_INLINE void LL_SYSTICK_SetClkSource(uint32_t Source) +{ + if (Source == LL_SYSTICK_CLKSOURCE_HCLK) + { + SET_BIT(SysTick->CTRL, LL_SYSTICK_CLKSOURCE_HCLK); + } + else + { + CLEAR_BIT(SysTick->CTRL, LL_SYSTICK_CLKSOURCE_HCLK); + } +} + +/** + * @brief Get the SysTick clock source + * @rmtoll STK_CTRL CLKSOURCE LL_SYSTICK_GetClkSource + * @retval Returned value can be one of the following values: + * @arg @ref LL_SYSTICK_CLKSOURCE_HCLK_DIV8 + * @arg @ref LL_SYSTICK_CLKSOURCE_HCLK + */ +__STATIC_INLINE uint32_t LL_SYSTICK_GetClkSource(void) +{ + return READ_BIT(SysTick->CTRL, LL_SYSTICK_CLKSOURCE_HCLK); +} + +/** + * @brief Enable SysTick exception request + * @rmtoll STK_CTRL TICKINT LL_SYSTICK_EnableIT + * @retval None + */ +__STATIC_INLINE void LL_SYSTICK_EnableIT(void) +{ + SET_BIT(SysTick->CTRL, SysTick_CTRL_TICKINT_Msk); +} + +/** + * @brief Disable SysTick exception request + * @rmtoll STK_CTRL TICKINT LL_SYSTICK_DisableIT + * @retval None + */ +__STATIC_INLINE void LL_SYSTICK_DisableIT(void) +{ + CLEAR_BIT(SysTick->CTRL, SysTick_CTRL_TICKINT_Msk); +} + +/** + * @brief Checks if the SYSTICK interrupt is enabled or disabled. + * @rmtoll STK_CTRL TICKINT LL_SYSTICK_IsEnabledIT + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_SYSTICK_IsEnabledIT(void) +{ + return (READ_BIT(SysTick->CTRL, SysTick_CTRL_TICKINT_Msk) == (SysTick_CTRL_TICKINT_Msk)); +} + +/** + * @} + */ + +/** @defgroup CORTEX_LL_EF_LOW_POWER_MODE LOW POWER MODE + * @{ + */ + +/** + * @brief Processor uses sleep as its low power mode + * @rmtoll SCB_SCR SLEEPDEEP LL_LPM_EnableSleep + * @retval None + */ +__STATIC_INLINE void LL_LPM_EnableSleep(void) +{ + /* Clear SLEEPDEEP bit of Cortex System Control Register */ + CLEAR_BIT(SCB->SCR, ((uint32_t)SCB_SCR_SLEEPDEEP_Msk)); +} + +/** + * @brief Processor uses deep sleep as its low power mode + * @rmtoll SCB_SCR SLEEPDEEP LL_LPM_EnableDeepSleep + * @retval None + */ +__STATIC_INLINE void LL_LPM_EnableDeepSleep(void) +{ + /* Set SLEEPDEEP bit of Cortex System Control Register */ + SET_BIT(SCB->SCR, ((uint32_t)SCB_SCR_SLEEPDEEP_Msk)); +} + +/** + * @brief Configures sleep-on-exit when returning from Handler mode to Thread mode. + * @note Setting this bit to 1 enables an interrupt-driven application to avoid returning to an + * empty main application. + * @rmtoll SCB_SCR SLEEPONEXIT LL_LPM_EnableSleepOnExit + * @retval None + */ +__STATIC_INLINE void LL_LPM_EnableSleepOnExit(void) +{ + /* Set SLEEPONEXIT bit of Cortex System Control Register */ + SET_BIT(SCB->SCR, ((uint32_t)SCB_SCR_SLEEPONEXIT_Msk)); +} + +/** + * @brief Do not sleep when returning to Thread mode. + * @rmtoll SCB_SCR SLEEPONEXIT LL_LPM_DisableSleepOnExit + * @retval None + */ +__STATIC_INLINE void LL_LPM_DisableSleepOnExit(void) +{ + /* Clear SLEEPONEXIT bit of Cortex System Control Register */ + CLEAR_BIT(SCB->SCR, ((uint32_t)SCB_SCR_SLEEPONEXIT_Msk)); +} + +/** + * @brief Enabled events and all interrupts, including disabled interrupts, can wakeup the + * processor. + * @rmtoll SCB_SCR SEVEONPEND LL_LPM_EnableEventOnPend + * @retval None + */ +__STATIC_INLINE void LL_LPM_EnableEventOnPend(void) +{ + /* Set SEVEONPEND bit of Cortex System Control Register */ + SET_BIT(SCB->SCR, ((uint32_t)SCB_SCR_SEVONPEND_Msk)); +} + +/** + * @brief Only enabled interrupts or events can wakeup the processor, disabled interrupts are + * excluded + * @rmtoll SCB_SCR SEVEONPEND LL_LPM_DisableEventOnPend + * @retval None + */ +__STATIC_INLINE void LL_LPM_DisableEventOnPend(void) +{ + /* Clear SEVEONPEND bit of Cortex System Control Register */ + CLEAR_BIT(SCB->SCR, ((uint32_t)SCB_SCR_SEVONPEND_Msk)); +} + +/** + * @} + */ + +/** @defgroup CORTEX_LL_EF_HANDLER HANDLER + * @{ + */ + +/** + * @brief Enable a fault in System handler control register (SHCSR) + * @rmtoll SCB_SHCSR MEMFAULTENA LL_HANDLER_EnableFault + * @param Fault This parameter can be a combination of the following values: + * @arg @ref LL_HANDLER_FAULT_USG + * @arg @ref LL_HANDLER_FAULT_BUS + * @arg @ref LL_HANDLER_FAULT_MEM + * @retval None + */ +__STATIC_INLINE void LL_HANDLER_EnableFault(uint32_t Fault) +{ + /* Enable the system handler fault */ + SET_BIT(SCB->SHCSR, Fault); +} + +/** + * @brief Disable a fault in System handler control register (SHCSR) + * @rmtoll SCB_SHCSR MEMFAULTENA LL_HANDLER_DisableFault + * @param Fault This parameter can be a combination of the following values: + * @arg @ref LL_HANDLER_FAULT_USG + * @arg @ref LL_HANDLER_FAULT_BUS + * @arg @ref LL_HANDLER_FAULT_MEM + * @retval None + */ +__STATIC_INLINE void LL_HANDLER_DisableFault(uint32_t Fault) +{ + /* Disable the system handler fault */ + CLEAR_BIT(SCB->SHCSR, Fault); +} + +/** + * @} + */ + +/** @defgroup CORTEX_LL_EF_MCU_INFO MCU INFO + * @{ + */ + +/** + * @brief Get Implementer code + * @rmtoll SCB_CPUID IMPLEMENTER LL_CPUID_GetImplementer + * @retval Value should be equal to 0x41 for ARM + */ +__STATIC_INLINE uint32_t LL_CPUID_GetImplementer(void) +{ + return (uint32_t)(READ_BIT(SCB->CPUID, SCB_CPUID_IMPLEMENTER_Msk) >> SCB_CPUID_IMPLEMENTER_Pos); +} + +/** + * @brief Get Variant number (The r value in the rnpn product revision identifier) + * @rmtoll SCB_CPUID VARIANT LL_CPUID_GetVariant + * @retval Value between 0 and 255 (0x1: revision 1, 0x2: revision 2) + */ +__STATIC_INLINE uint32_t LL_CPUID_GetVariant(void) +{ + return (uint32_t)(READ_BIT(SCB->CPUID, SCB_CPUID_VARIANT_Msk) >> SCB_CPUID_VARIANT_Pos); +} + +/** + * @brief Get Constant number + * @rmtoll SCB_CPUID ARCHITECTURE LL_CPUID_GetConstant + * @retval Value should be equal to 0xF for Cortex-M3 devices + */ +__STATIC_INLINE uint32_t LL_CPUID_GetConstant(void) +{ + return (uint32_t)(READ_BIT(SCB->CPUID, SCB_CPUID_ARCHITECTURE_Msk) >> SCB_CPUID_ARCHITECTURE_Pos); +} + +/** + * @brief Get Part number + * @rmtoll SCB_CPUID PARTNO LL_CPUID_GetParNo + * @retval Value should be equal to 0xC23 for Cortex-M3 + */ +__STATIC_INLINE uint32_t LL_CPUID_GetParNo(void) +{ + return (uint32_t)(READ_BIT(SCB->CPUID, SCB_CPUID_PARTNO_Msk) >> SCB_CPUID_PARTNO_Pos); +} + +/** + * @brief Get Revision number (The p value in the rnpn product revision identifier, indicates patch release) + * @rmtoll SCB_CPUID REVISION LL_CPUID_GetRevision + * @retval Value between 0 and 255 (0x0: patch 0, 0x1: patch 1) + */ +__STATIC_INLINE uint32_t LL_CPUID_GetRevision(void) +{ + return (uint32_t)(READ_BIT(SCB->CPUID, SCB_CPUID_REVISION_Msk) >> SCB_CPUID_REVISION_Pos); +} + +/** + * @} + */ + +#if __MPU_PRESENT +/** @defgroup CORTEX_LL_EF_MPU MPU + * @{ + */ + +/** + * @brief Enable MPU with input options + * @rmtoll MPU_CTRL ENABLE LL_MPU_Enable + * @param Options This parameter can be one of the following values: + * @arg @ref LL_MPU_CTRL_HFNMI_PRIVDEF_NONE + * @arg @ref LL_MPU_CTRL_HARDFAULT_NMI + * @arg @ref LL_MPU_CTRL_PRIVILEGED_DEFAULT + * @arg @ref LL_MPU_CTRL_HFNMI_PRIVDEF + * @retval None + */ +__STATIC_INLINE void LL_MPU_Enable(uint32_t Options) +{ + /* Enable the MPU*/ + WRITE_REG(MPU->CTRL, (MPU_CTRL_ENABLE_Msk | Options)); + /* Ensure MPU settings take effects */ + __DSB(); + /* Sequence instruction fetches using update settings */ + __ISB(); +} + +/** + * @brief Disable MPU + * @rmtoll MPU_CTRL ENABLE LL_MPU_Disable + * @retval None + */ +__STATIC_INLINE void LL_MPU_Disable(void) +{ + /* Make sure outstanding transfers are done */ + __DMB(); + /* Disable MPU*/ + WRITE_REG(MPU->CTRL, 0U); +} + +/** + * @brief Check if MPU is enabled or not + * @rmtoll MPU_CTRL ENABLE LL_MPU_IsEnabled + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_MPU_IsEnabled(void) +{ + return (READ_BIT(MPU->CTRL, MPU_CTRL_ENABLE_Msk) == (MPU_CTRL_ENABLE_Msk)); +} + +/** + * @brief Enable a MPU region + * @rmtoll MPU_RASR ENABLE LL_MPU_EnableRegion + * @param Region This parameter can be one of the following values: + * @arg @ref LL_MPU_REGION_NUMBER0 + * @arg @ref LL_MPU_REGION_NUMBER1 + * @arg @ref LL_MPU_REGION_NUMBER2 + * @arg @ref LL_MPU_REGION_NUMBER3 + * @arg @ref LL_MPU_REGION_NUMBER4 + * @arg @ref LL_MPU_REGION_NUMBER5 + * @arg @ref LL_MPU_REGION_NUMBER6 + * @arg @ref LL_MPU_REGION_NUMBER7 + * @retval None + */ +__STATIC_INLINE void LL_MPU_EnableRegion(uint32_t Region) +{ + /* Set Region number */ + WRITE_REG(MPU->RNR, Region); + /* Enable the MPU region */ + SET_BIT(MPU->RASR, MPU_RASR_ENABLE_Msk); +} + +/** + * @brief Configure and enable a region + * @rmtoll MPU_RNR REGION LL_MPU_ConfigRegion\n + * MPU_RBAR REGION LL_MPU_ConfigRegion\n + * MPU_RBAR ADDR LL_MPU_ConfigRegion\n + * MPU_RASR XN LL_MPU_ConfigRegion\n + * MPU_RASR AP LL_MPU_ConfigRegion\n + * MPU_RASR S LL_MPU_ConfigRegion\n + * MPU_RASR C LL_MPU_ConfigRegion\n + * MPU_RASR B LL_MPU_ConfigRegion\n + * MPU_RASR SIZE LL_MPU_ConfigRegion + * @param Region This parameter can be one of the following values: + * @arg @ref LL_MPU_REGION_NUMBER0 + * @arg @ref LL_MPU_REGION_NUMBER1 + * @arg @ref LL_MPU_REGION_NUMBER2 + * @arg @ref LL_MPU_REGION_NUMBER3 + * @arg @ref LL_MPU_REGION_NUMBER4 + * @arg @ref LL_MPU_REGION_NUMBER5 + * @arg @ref LL_MPU_REGION_NUMBER6 + * @arg @ref LL_MPU_REGION_NUMBER7 + * @param Address Value of region base address + * @param SubRegionDisable Sub-region disable value between Min_Data = 0x00 and Max_Data = 0xFF + * @param Attributes This parameter can be a combination of the following values: + * @arg @ref LL_MPU_REGION_SIZE_32B or @ref LL_MPU_REGION_SIZE_64B or @ref LL_MPU_REGION_SIZE_128B or @ref LL_MPU_REGION_SIZE_256B or @ref LL_MPU_REGION_SIZE_512B + * or @ref LL_MPU_REGION_SIZE_1KB or @ref LL_MPU_REGION_SIZE_2KB or @ref LL_MPU_REGION_SIZE_4KB or @ref LL_MPU_REGION_SIZE_8KB or @ref LL_MPU_REGION_SIZE_16KB + * or @ref LL_MPU_REGION_SIZE_32KB or @ref LL_MPU_REGION_SIZE_64KB or @ref LL_MPU_REGION_SIZE_128KB or @ref LL_MPU_REGION_SIZE_256KB or @ref LL_MPU_REGION_SIZE_512KB + * or @ref LL_MPU_REGION_SIZE_1MB or @ref LL_MPU_REGION_SIZE_2MB or @ref LL_MPU_REGION_SIZE_4MB or @ref LL_MPU_REGION_SIZE_8MB or @ref LL_MPU_REGION_SIZE_16MB + * or @ref LL_MPU_REGION_SIZE_32MB or @ref LL_MPU_REGION_SIZE_64MB or @ref LL_MPU_REGION_SIZE_128MB or @ref LL_MPU_REGION_SIZE_256MB or @ref LL_MPU_REGION_SIZE_512MB + * or @ref LL_MPU_REGION_SIZE_1GB or @ref LL_MPU_REGION_SIZE_2GB or @ref LL_MPU_REGION_SIZE_4GB + * @arg @ref LL_MPU_REGION_NO_ACCESS or @ref LL_MPU_REGION_PRIV_RW or @ref LL_MPU_REGION_PRIV_RW_URO or @ref LL_MPU_REGION_FULL_ACCESS + * or @ref LL_MPU_REGION_PRIV_RO or @ref LL_MPU_REGION_PRIV_RO_URO + * @arg @ref LL_MPU_TEX_LEVEL0 or @ref LL_MPU_TEX_LEVEL1 or @ref LL_MPU_TEX_LEVEL2 or @ref LL_MPU_TEX_LEVEL4 + * @arg @ref LL_MPU_INSTRUCTION_ACCESS_ENABLE or @ref LL_MPU_INSTRUCTION_ACCESS_DISABLE + * @arg @ref LL_MPU_ACCESS_SHAREABLE or @ref LL_MPU_ACCESS_NOT_SHAREABLE + * @arg @ref LL_MPU_ACCESS_CACHEABLE or @ref LL_MPU_ACCESS_NOT_CACHEABLE + * @arg @ref LL_MPU_ACCESS_BUFFERABLE or @ref LL_MPU_ACCESS_NOT_BUFFERABLE + * @retval None + */ +__STATIC_INLINE void LL_MPU_ConfigRegion(uint32_t Region, uint32_t SubRegionDisable, uint32_t Address, uint32_t Attributes) +{ + /* Set Region number */ + WRITE_REG(MPU->RNR, Region); + /* Set base address */ + WRITE_REG(MPU->RBAR, (Address & 0xFFFFFFE0U)); + /* Configure MPU */ + WRITE_REG(MPU->RASR, (MPU_RASR_ENABLE_Msk | Attributes | SubRegionDisable << MPU_RASR_SRD_Pos)); +} + +/** + * @brief Disable a region + * @rmtoll MPU_RNR REGION LL_MPU_DisableRegion\n + * MPU_RASR ENABLE LL_MPU_DisableRegion + * @param Region This parameter can be one of the following values: + * @arg @ref LL_MPU_REGION_NUMBER0 + * @arg @ref LL_MPU_REGION_NUMBER1 + * @arg @ref LL_MPU_REGION_NUMBER2 + * @arg @ref LL_MPU_REGION_NUMBER3 + * @arg @ref LL_MPU_REGION_NUMBER4 + * @arg @ref LL_MPU_REGION_NUMBER5 + * @arg @ref LL_MPU_REGION_NUMBER6 + * @arg @ref LL_MPU_REGION_NUMBER7 + * @retval None + */ +__STATIC_INLINE void LL_MPU_DisableRegion(uint32_t Region) +{ + /* Set Region number */ + WRITE_REG(MPU->RNR, Region); + /* Disable the MPU region */ + CLEAR_BIT(MPU->RASR, MPU_RASR_ENABLE_Msk); +} + +/** + * @} + */ + +#endif /* __MPU_PRESENT */ +/** + * @} + */ + +/** + * @} + */ + +/** + * @} + */ + +#ifdef __cplusplus +} +#endif + +#endif /* __STM32F1xx_LL_CORTEX_H */ + +/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/ diff --git a/LLDrivers/inc/stm32f1xx_ll_crc.h b/LLDrivers/inc/stm32f1xx_ll_crc.h new file mode 100644 index 0000000..c29119e --- /dev/null +++ b/LLDrivers/inc/stm32f1xx_ll_crc.h @@ -0,0 +1,204 @@ +/** + ****************************************************************************** + * @file stm32f1xx_ll_crc.h + * @author MCD Application Team + * @brief Header file of CRC LL module. + ****************************************************************************** + * @attention + * + *

© Copyright (c) 2016 STMicroelectronics. + * All rights reserved.

+ * + * This software component is licensed by ST under BSD 3-Clause license, + * the "License"; You may not use this file except in compliance with the + * License. You may obtain a copy of the License at: + * opensource.org/licenses/BSD-3-Clause + * + ****************************************************************************** + */ + +/* Define to prevent recursive inclusion -------------------------------------*/ +#ifndef STM32F1xx_LL_CRC_H +#define STM32F1xx_LL_CRC_H + +#ifdef __cplusplus +extern "C" { +#endif + +/* Includes ------------------------------------------------------------------*/ +#include "stm32f1xx.h" + +/** @addtogroup STM32F1xx_LL_Driver + * @{ + */ + +#if defined(CRC) + +/** @defgroup CRC_LL CRC + * @{ + */ + +/* Private types -------------------------------------------------------------*/ +/* Private variables ---------------------------------------------------------*/ +/* Private constants ---------------------------------------------------------*/ +/* Private macros ------------------------------------------------------------*/ + +/* Exported types ------------------------------------------------------------*/ +/* Exported constants --------------------------------------------------------*/ +/** @defgroup CRC_LL_Exported_Constants CRC Exported Constants + * @{ + */ + +/** + * @} + */ + +/* Exported macro ------------------------------------------------------------*/ +/** @defgroup CRC_LL_Exported_Macros CRC Exported Macros + * @{ + */ + +/** @defgroup CRC_LL_EM_WRITE_READ Common Write and read registers Macros + * @{ + */ + +/** + * @brief Write a value in CRC register + * @param __INSTANCE__ CRC Instance + * @param __REG__ Register to be written + * @param __VALUE__ Value to be written in the register + * @retval None + */ +#define LL_CRC_WriteReg(__INSTANCE__, __REG__, __VALUE__) WRITE_REG(__INSTANCE__->__REG__, __VALUE__) + +/** + * @brief Read a value in CRC register + * @param __INSTANCE__ CRC Instance + * @param __REG__ Register to be read + * @retval Register value + */ +#define LL_CRC_ReadReg(__INSTANCE__, __REG__) READ_REG(__INSTANCE__->__REG__) +/** + * @} + */ + +/** + * @} + */ + + +/* Exported functions --------------------------------------------------------*/ +/** @defgroup CRC_LL_Exported_Functions CRC Exported Functions + * @{ + */ + +/** @defgroup CRC_LL_EF_Configuration CRC Configuration functions + * @{ + */ + +/** + * @brief Reset the CRC calculation unit. + * @note If Programmable Initial CRC value feature + * is available, also set the Data Register to the value stored in the + * CRC_INIT register, otherwise, reset Data Register to its default value. + * @rmtoll CR RESET LL_CRC_ResetCRCCalculationUnit + * @param CRCx CRC Instance + * @retval None + */ +__STATIC_INLINE void LL_CRC_ResetCRCCalculationUnit(CRC_TypeDef *CRCx) +{ + SET_BIT(CRCx->CR, CRC_CR_RESET); +} + +/** + * @} + */ + +/** @defgroup CRC_LL_EF_Data_Management Data_Management + * @{ + */ + +/** + * @brief Write given 32-bit data to the CRC calculator + * @rmtoll DR DR LL_CRC_FeedData32 + * @param CRCx CRC Instance + * @param InData value to be provided to CRC calculator between between Min_Data=0 and Max_Data=0xFFFFFFFF + * @retval None + */ +__STATIC_INLINE void LL_CRC_FeedData32(CRC_TypeDef *CRCx, uint32_t InData) +{ + WRITE_REG(CRCx->DR, InData); +} + +/** + * @brief Return current CRC calculation result. 32 bits value is returned. + * @rmtoll DR DR LL_CRC_ReadData32 + * @param CRCx CRC Instance + * @retval Current CRC calculation result as stored in CRC_DR register (32 bits). + */ +__STATIC_INLINE uint32_t LL_CRC_ReadData32(CRC_TypeDef *CRCx) +{ + return (uint32_t)(READ_REG(CRCx->DR)); +} + +/** + * @brief Return data stored in the Independent Data(IDR) register. + * @note This register can be used as a temporary storage location for one byte. + * @rmtoll IDR IDR LL_CRC_Read_IDR + * @param CRCx CRC Instance + * @retval Value stored in CRC_IDR register (General-purpose 8-bit data register). + */ +__STATIC_INLINE uint32_t LL_CRC_Read_IDR(CRC_TypeDef *CRCx) +{ + return (uint32_t)(READ_REG(CRCx->IDR)); +} + +/** + * @brief Store data in the Independent Data(IDR) register. + * @note This register can be used as a temporary storage location for one byte. + * @rmtoll IDR IDR LL_CRC_Write_IDR + * @param CRCx CRC Instance + * @param InData value to be stored in CRC_IDR register (8-bit) between Min_Data=0 and Max_Data=0xFF + * @retval None + */ +__STATIC_INLINE void LL_CRC_Write_IDR(CRC_TypeDef *CRCx, uint32_t InData) +{ + *((uint8_t __IO *)(&CRCx->IDR)) = (uint8_t) InData; +} +/** + * @} + */ + +#if defined(USE_FULL_LL_DRIVER) +/** @defgroup CRC_LL_EF_Init Initialization and de-initialization functions + * @{ + */ + +ErrorStatus LL_CRC_DeInit(CRC_TypeDef *CRCx); + +/** + * @} + */ +#endif /* USE_FULL_LL_DRIVER */ + +/** + * @} + */ + +/** + * @} + */ + +#endif /* defined(CRC) */ + +/** + * @} + */ + +#ifdef __cplusplus +} +#endif + +#endif /* STM32F1xx_LL_CRC_H */ + +/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/ diff --git a/LLDrivers/inc/stm32f1xx_ll_dac.h b/LLDrivers/inc/stm32f1xx_ll_dac.h new file mode 100644 index 0000000..af13cd1 --- /dev/null +++ b/LLDrivers/inc/stm32f1xx_ll_dac.h @@ -0,0 +1,1326 @@ +/** + ****************************************************************************** + * @file stm32f1xx_ll_dac.h + * @author MCD Application Team + * @brief Header file of DAC LL module. + ****************************************************************************** + * @attention + * + *

© Copyright (c) 2016 STMicroelectronics. + * All rights reserved.

+ * + * This software component is licensed by ST under BSD 3-Clause license, + * the "License"; You may not use this file except in compliance with the + * License. You may obtain a copy of the License at: + * opensource.org/licenses/BSD-3-Clause + * + ****************************************************************************** + */ + +/* Define to prevent recursive inclusion -------------------------------------*/ +#ifndef STM32F1xx_LL_DAC_H +#define STM32F1xx_LL_DAC_H + +#ifdef __cplusplus +extern "C" { +#endif + +/* Includes ------------------------------------------------------------------*/ +#include "stm32f1xx.h" + +/** @addtogroup STM32F1xx_LL_Driver + * @{ + */ + +#if defined(DAC) + +/** @defgroup DAC_LL DAC + * @{ + */ + +/* Private types -------------------------------------------------------------*/ +/* Private variables ---------------------------------------------------------*/ + +/* Private constants ---------------------------------------------------------*/ +/** @defgroup DAC_LL_Private_Constants DAC Private Constants + * @{ + */ + +/* Internal masks for DAC channels definition */ +/* To select into literal LL_DAC_CHANNEL_x the relevant bits for: */ +/* - channel bits position into registers CR, MCR, CCR, SHHR, SHRR */ +/* - channel bits position into register SWTRIG */ +/* - channel register offset of data holding register DHRx */ +/* - channel register offset of data output register DORx */ +#define DAC_CR_CH1_BITOFFSET 0U /* Position of channel bits into registers CR, MCR, CCR, SHHR, SHRR of channel 1 */ +#define DAC_CR_CH2_BITOFFSET 16U /* Position of channel bits into registers CR, MCR, CCR, SHHR, SHRR of channel 2 */ +#define DAC_CR_CHX_BITOFFSET_MASK (DAC_CR_CH1_BITOFFSET | DAC_CR_CH2_BITOFFSET) + +#define DAC_SWTR_CH1 (DAC_SWTRIGR_SWTRIG1) /* Channel bit into register SWTRIGR of channel 1. */ +#define DAC_SWTR_CH2 (DAC_SWTRIGR_SWTRIG2) /* Channel bit into register SWTRIGR of channel 2. */ +#define DAC_SWTR_CHX_MASK (DAC_SWTR_CH1 | DAC_SWTR_CH2) + +#define DAC_REG_DHR12R1_REGOFFSET 0x00000000U /* Register DHR12Rx channel 1 taken as reference */ +#define DAC_REG_DHR12L1_REGOFFSET 0x00100000U /* Register offset of DHR12Lx channel 1 versus DHR12Rx channel 1 (shifted left of 20 bits) */ +#define DAC_REG_DHR8R1_REGOFFSET 0x02000000U /* Register offset of DHR8Rx channel 1 versus DHR12Rx channel 1 (shifted left of 24 bits) */ +#define DAC_REG_DHR12R2_REGOFFSET 0x00030000U /* Register offset of DHR12Rx channel 2 versus DHR12Rx channel 1 (shifted left of 16 bits) */ +#define DAC_REG_DHR12L2_REGOFFSET 0x00400000U /* Register offset of DHR12Lx channel 2 versus DHR12Rx channel 1 (shifted left of 20 bits) */ +#define DAC_REG_DHR8R2_REGOFFSET 0x05000000U /* Register offset of DHR8Rx channel 2 versus DHR12Rx channel 1 (shifted left of 24 bits) */ +#define DAC_REG_DHR12RX_REGOFFSET_MASK 0x000F0000U +#define DAC_REG_DHR12LX_REGOFFSET_MASK 0x00F00000U +#define DAC_REG_DHR8RX_REGOFFSET_MASK 0x0F000000U +#define DAC_REG_DHRX_REGOFFSET_MASK (DAC_REG_DHR12RX_REGOFFSET_MASK | DAC_REG_DHR12LX_REGOFFSET_MASK | DAC_REG_DHR8RX_REGOFFSET_MASK) + +#define DAC_REG_DOR1_REGOFFSET 0x00000000U /* Register DORx channel 1 taken as reference */ +#define DAC_REG_DOR2_REGOFFSET 0x10000000U /* Register offset of DORx channel 1 versus DORx channel 2 (shifted left of 28 bits) */ +#define DAC_REG_DORX_REGOFFSET_MASK (DAC_REG_DOR1_REGOFFSET | DAC_REG_DOR2_REGOFFSET) + + +#define DAC_REG_DHR_REGOFFSET_MASK_POSBIT0 0x0000000FU /* Mask of data hold registers offset (DHR12Rx, DHR12Lx, DHR8Rx, ...) when shifted to position 0 */ +#define DAC_REG_DORX_REGOFFSET_MASK_POSBIT0 0x00000001U /* Mask of DORx registers offset when shifted to position 0 */ +#define DAC_REG_SHSRX_REGOFFSET_MASK_POSBIT0 0x00000001U /* Mask of SHSRx registers offset when shifted to position 0 */ + +#define DAC_REG_DHR12RX_REGOFFSET_BITOFFSET_POS 16U /* Position of bits register offset of DHR12Rx channel 1 or 2 versus DHR12Rx channel 1 (shifted left of 16 bits) */ +#define DAC_REG_DHR12LX_REGOFFSET_BITOFFSET_POS 20U /* Position of bits register offset of DHR12Lx channel 1 or 2 versus DHR12Rx channel 1 (shifted left of 20 bits) */ +#define DAC_REG_DHR8RX_REGOFFSET_BITOFFSET_POS 24U /* Position of bits register offset of DHR8Rx channel 1 or 2 versus DHR12Rx channel 1 (shifted left of 24 bits) */ +#define DAC_REG_DORX_REGOFFSET_BITOFFSET_POS 28U /* Position of bits register offset of DORx channel 1 or 2 versus DORx channel 1 (shifted left of 28 bits) */ + +/* DAC registers bits positions */ +#define DAC_DHR12RD_DACC2DHR_BITOFFSET_POS DAC_DHR12RD_DACC2DHR_Pos +#define DAC_DHR12LD_DACC2DHR_BITOFFSET_POS DAC_DHR12LD_DACC2DHR_Pos +#define DAC_DHR8RD_DACC2DHR_BITOFFSET_POS DAC_DHR8RD_DACC2DHR_Pos + +/* Miscellaneous data */ +#define DAC_DIGITAL_SCALE_12BITS 4095U /* Full-scale digital value with a resolution of 12 bits (voltage range determined by analog voltage references Vref+ and Vref-, refer to reference manual) */ + +/** + * @} + */ + + +/* Private macros ------------------------------------------------------------*/ +/** @defgroup DAC_LL_Private_Macros DAC Private Macros + * @{ + */ + +/** + * @brief Driver macro reserved for internal use: set a pointer to + * a register from a register basis from which an offset + * is applied. + * @param __REG__ Register basis from which the offset is applied. + * @param __REG_OFFFSET__ Offset to be applied (unit: number of registers). + * @retval Pointer to register address +*/ +#define __DAC_PTR_REG_OFFSET(__REG__, __REG_OFFFSET__) \ + ((uint32_t *)((uint32_t) ((uint32_t)(&(__REG__)) + ((__REG_OFFFSET__) << 2U)))) + +/** + * @} + */ + + +/* Exported types ------------------------------------------------------------*/ +#if defined(USE_FULL_LL_DRIVER) +/** @defgroup DAC_LL_ES_INIT DAC Exported Init structure + * @{ + */ + +/** + * @brief Structure definition of some features of DAC instance. + */ +typedef struct +{ + uint32_t TriggerSource; /*!< Set the conversion trigger source for the selected DAC channel: internal (SW start) or from external peripheral (timer event, external interrupt line). + This parameter can be a value of @ref DAC_LL_EC_TRIGGER_SOURCE + + This feature can be modified afterwards using unitary function @ref LL_DAC_SetTriggerSource(). */ + + uint32_t WaveAutoGeneration; /*!< Set the waveform automatic generation mode for the selected DAC channel. + This parameter can be a value of @ref DAC_LL_EC_WAVE_AUTO_GENERATION_MODE + + This feature can be modified afterwards using unitary function @ref LL_DAC_SetWaveAutoGeneration(). */ + + uint32_t WaveAutoGenerationConfig; /*!< Set the waveform automatic generation mode for the selected DAC channel. + If waveform automatic generation mode is set to noise, this parameter can be a value of @ref DAC_LL_EC_WAVE_NOISE_LFSR_UNMASK_BITS + If waveform automatic generation mode is set to triangle, this parameter can be a value of @ref DAC_LL_EC_WAVE_TRIANGLE_AMPLITUDE + @note If waveform automatic generation mode is disabled, this parameter is discarded. + + This feature can be modified afterwards using unitary function @ref LL_DAC_SetWaveNoiseLFSR(), @ref LL_DAC_SetWaveTriangleAmplitude() + depending on the wave automatic generation selected. */ + + uint32_t OutputBuffer; /*!< Set the output buffer for the selected DAC channel. + This parameter can be a value of @ref DAC_LL_EC_OUTPUT_BUFFER + + This feature can be modified afterwards using unitary function @ref LL_DAC_SetOutputBuffer(). */ + +} LL_DAC_InitTypeDef; + +/** + * @} + */ +#endif /* USE_FULL_LL_DRIVER */ + +/* Exported constants --------------------------------------------------------*/ +/** @defgroup DAC_LL_Exported_Constants DAC Exported Constants + * @{ + */ + +/** @defgroup DAC_LL_EC_GET_FLAG DAC flags + * @brief Flags defines which can be used with LL_DAC_ReadReg function + * @{ + */ +/* DAC channel 1 flags */ +#define LL_DAC_FLAG_DMAUDR1 (DAC_SR_DMAUDR1) /*!< DAC channel 1 flag DMA underrun */ + +/* DAC channel 2 flags */ +#define LL_DAC_FLAG_DMAUDR2 (DAC_SR_DMAUDR2) /*!< DAC channel 2 flag DMA underrun */ +/** + * @} + */ + +/** @defgroup DAC_LL_EC_IT DAC interruptions + * @brief IT defines which can be used with LL_DAC_ReadReg and LL_DAC_WriteReg functions + * @{ + */ +#define LL_DAC_IT_DMAUDRIE1 (DAC_CR_DMAUDRIE1) /*!< DAC channel 1 interruption DMA underrun */ +#define LL_DAC_IT_DMAUDRIE2 (DAC_CR_DMAUDRIE2) /*!< DAC channel 2 interruption DMA underrun */ +/** + * @} + */ + +/** @defgroup DAC_LL_EC_CHANNEL DAC channels + * @{ + */ +#define LL_DAC_CHANNEL_1 (DAC_REG_DOR1_REGOFFSET | DAC_REG_DHR12R1_REGOFFSET | DAC_REG_DHR12L1_REGOFFSET | DAC_REG_DHR8R1_REGOFFSET | DAC_CR_CH1_BITOFFSET | DAC_SWTR_CH1) /*!< DAC channel 1 */ +#define LL_DAC_CHANNEL_2 (DAC_REG_DOR2_REGOFFSET | DAC_REG_DHR12R2_REGOFFSET | DAC_REG_DHR12L2_REGOFFSET | DAC_REG_DHR8R2_REGOFFSET | DAC_CR_CH2_BITOFFSET | DAC_SWTR_CH2) /*!< DAC channel 2 */ +/** + * @} + */ + +/** @defgroup DAC_LL_EC_TRIGGER_SOURCE DAC trigger source + * @{ + */ +#define LL_DAC_TRIG_SOFTWARE (DAC_CR_TSEL1_2 | DAC_CR_TSEL1_1 | DAC_CR_TSEL1_0) /*!< DAC channel conversion trigger internal (SW start) */ +#define LL_DAC_TRIG_EXT_TIM3_TRGO ( DAC_CR_TSEL1_0) /*!< DAC channel conversion trigger from external peripheral: TIM3 TRGO. */ +#define LL_DAC_TRIG_EXT_TIM15_TRGO ( DAC_CR_TSEL1_1 | DAC_CR_TSEL1_0) /*!< DAC channel conversion trigger from external peripheral: TIM15 TRGO. */ +#define LL_DAC_TRIG_EXT_TIM2_TRGO (DAC_CR_TSEL1_2 ) /*!< DAC channel conversion trigger from external peripheral: TIM2 TRGO. */ +#define LL_DAC_TRIG_EXT_TIM8_TRGO ( DAC_CR_TSEL1_0) /*!< DAC channel conversion trigger from external peripheral: TIM8 TRGO. */ +#define LL_DAC_TRIG_EXT_TIM4_TRGO (DAC_CR_TSEL1_2 | DAC_CR_TSEL1_0) /*!< DAC channel conversion trigger from external peripheral: TIM4 TRGO. */ +#define LL_DAC_TRIG_EXT_TIM6_TRGO 0x00000000U /*!< DAC channel conversion trigger from external peripheral: TIM6 TRGO. */ +#define LL_DAC_TRIG_EXT_TIM7_TRGO ( DAC_CR_TSEL1_1 ) /*!< DAC channel conversion trigger from external peripheral: TIM7 TRGO. */ +#define LL_DAC_TRIG_EXT_TIM5_TRGO ( DAC_CR_TSEL1_1 | DAC_CR_TSEL1_0) /*!< DAC channel conversion trigger from external peripheral: TIM5 TRGO. */ +#define LL_DAC_TRIG_EXT_EXTI_LINE9 (DAC_CR_TSEL1_2 | DAC_CR_TSEL1_1 ) /*!< DAC channel conversion trigger from external peripheral: external interrupt line 9. */ +/** + * @} + */ + +/** @defgroup DAC_LL_EC_WAVE_AUTO_GENERATION_MODE DAC waveform automatic generation mode + * @{ + */ +#define LL_DAC_WAVE_AUTO_GENERATION_NONE 0x00000000U /*!< DAC channel wave auto generation mode disabled. */ +#define LL_DAC_WAVE_AUTO_GENERATION_NOISE ( DAC_CR_WAVE1_0) /*!< DAC channel wave auto generation mode enabled, set generated noise waveform. */ +#define LL_DAC_WAVE_AUTO_GENERATION_TRIANGLE (DAC_CR_WAVE1_1 ) /*!< DAC channel wave auto generation mode enabled, set generated triangle waveform. */ +/** + * @} + */ + +/** @defgroup DAC_LL_EC_WAVE_NOISE_LFSR_UNMASK_BITS DAC wave generation - Noise LFSR unmask bits + * @{ + */ +#define LL_DAC_NOISE_LFSR_UNMASK_BIT0 0x00000000U /*!< Noise wave generation, unmask LFSR bit0, for the selected DAC channel */ +#define LL_DAC_NOISE_LFSR_UNMASK_BITS1_0 ( DAC_CR_MAMP1_0) /*!< Noise wave generation, unmask LFSR bits[1:0], for the selected DAC channel */ +#define LL_DAC_NOISE_LFSR_UNMASK_BITS2_0 ( DAC_CR_MAMP1_1 ) /*!< Noise wave generation, unmask LFSR bits[2:0], for the selected DAC channel */ +#define LL_DAC_NOISE_LFSR_UNMASK_BITS3_0 ( DAC_CR_MAMP1_1 | DAC_CR_MAMP1_0) /*!< Noise wave generation, unmask LFSR bits[3:0], for the selected DAC channel */ +#define LL_DAC_NOISE_LFSR_UNMASK_BITS4_0 ( DAC_CR_MAMP1_2 ) /*!< Noise wave generation, unmask LFSR bits[4:0], for the selected DAC channel */ +#define LL_DAC_NOISE_LFSR_UNMASK_BITS5_0 ( DAC_CR_MAMP1_2 | DAC_CR_MAMP1_0) /*!< Noise wave generation, unmask LFSR bits[5:0], for the selected DAC channel */ +#define LL_DAC_NOISE_LFSR_UNMASK_BITS6_0 ( DAC_CR_MAMP1_2 | DAC_CR_MAMP1_1 ) /*!< Noise wave generation, unmask LFSR bits[6:0], for the selected DAC channel */ +#define LL_DAC_NOISE_LFSR_UNMASK_BITS7_0 ( DAC_CR_MAMP1_2 | DAC_CR_MAMP1_1 | DAC_CR_MAMP1_0) /*!< Noise wave generation, unmask LFSR bits[7:0], for the selected DAC channel */ +#define LL_DAC_NOISE_LFSR_UNMASK_BITS8_0 (DAC_CR_MAMP1_3 ) /*!< Noise wave generation, unmask LFSR bits[8:0], for the selected DAC channel */ +#define LL_DAC_NOISE_LFSR_UNMASK_BITS9_0 (DAC_CR_MAMP1_3 | DAC_CR_MAMP1_0) /*!< Noise wave generation, unmask LFSR bits[9:0], for the selected DAC channel */ +#define LL_DAC_NOISE_LFSR_UNMASK_BITS10_0 (DAC_CR_MAMP1_3 | DAC_CR_MAMP1_1 ) /*!< Noise wave generation, unmask LFSR bits[10:0], for the selected DAC channel */ +#define LL_DAC_NOISE_LFSR_UNMASK_BITS11_0 (DAC_CR_MAMP1_3 | DAC_CR_MAMP1_1 | DAC_CR_MAMP1_0) /*!< Noise wave generation, unmask LFSR bits[11:0], for the selected DAC channel */ +/** + * @} + */ + +/** @defgroup DAC_LL_EC_WAVE_TRIANGLE_AMPLITUDE DAC wave generation - Triangle amplitude + * @{ + */ +#define LL_DAC_TRIANGLE_AMPLITUDE_1 0x00000000U /*!< Triangle wave generation, amplitude of 1 LSB of DAC output range, for the selected DAC channel */ +#define LL_DAC_TRIANGLE_AMPLITUDE_3 ( DAC_CR_MAMP1_0) /*!< Triangle wave generation, amplitude of 3 LSB of DAC output range, for the selected DAC channel */ +#define LL_DAC_TRIANGLE_AMPLITUDE_7 ( DAC_CR_MAMP1_1 ) /*!< Triangle wave generation, amplitude of 7 LSB of DAC output range, for the selected DAC channel */ +#define LL_DAC_TRIANGLE_AMPLITUDE_15 ( DAC_CR_MAMP1_1 | DAC_CR_MAMP1_0) /*!< Triangle wave generation, amplitude of 15 LSB of DAC output range, for the selected DAC channel */ +#define LL_DAC_TRIANGLE_AMPLITUDE_31 ( DAC_CR_MAMP1_2 ) /*!< Triangle wave generation, amplitude of 31 LSB of DAC output range, for the selected DAC channel */ +#define LL_DAC_TRIANGLE_AMPLITUDE_63 ( DAC_CR_MAMP1_2 | DAC_CR_MAMP1_0) /*!< Triangle wave generation, amplitude of 63 LSB of DAC output range, for the selected DAC channel */ +#define LL_DAC_TRIANGLE_AMPLITUDE_127 ( DAC_CR_MAMP1_2 | DAC_CR_MAMP1_1 ) /*!< Triangle wave generation, amplitude of 127 LSB of DAC output range, for the selected DAC channel */ +#define LL_DAC_TRIANGLE_AMPLITUDE_255 ( DAC_CR_MAMP1_2 | DAC_CR_MAMP1_1 | DAC_CR_MAMP1_0) /*!< Triangle wave generation, amplitude of 255 LSB of DAC output range, for the selected DAC channel */ +#define LL_DAC_TRIANGLE_AMPLITUDE_511 (DAC_CR_MAMP1_3 ) /*!< Triangle wave generation, amplitude of 512 LSB of DAC output range, for the selected DAC channel */ +#define LL_DAC_TRIANGLE_AMPLITUDE_1023 (DAC_CR_MAMP1_3 | DAC_CR_MAMP1_0) /*!< Triangle wave generation, amplitude of 1023 LSB of DAC output range, for the selected DAC channel */ +#define LL_DAC_TRIANGLE_AMPLITUDE_2047 (DAC_CR_MAMP1_3 | DAC_CR_MAMP1_1 ) /*!< Triangle wave generation, amplitude of 2047 LSB of DAC output range, for the selected DAC channel */ +#define LL_DAC_TRIANGLE_AMPLITUDE_4095 (DAC_CR_MAMP1_3 | DAC_CR_MAMP1_1 | DAC_CR_MAMP1_0) /*!< Triangle wave generation, amplitude of 4095 LSB of DAC output range, for the selected DAC channel */ +/** + * @} + */ + +/** @defgroup DAC_LL_EC_OUTPUT_BUFFER DAC channel output buffer + * @{ + */ +#define LL_DAC_OUTPUT_BUFFER_ENABLE 0x00000000U /*!< The selected DAC channel output is buffered: higher drive current capability, but also higher current consumption */ +#define LL_DAC_OUTPUT_BUFFER_DISABLE (DAC_CR_BOFF1) /*!< The selected DAC channel output is not buffered: lower drive current capability, but also lower current consumption */ +/** + * @} + */ + +/** @defgroup DAC_LL_EC_RESOLUTION DAC channel output resolution + * @{ + */ +#define LL_DAC_RESOLUTION_12B 0x00000000U /*!< DAC channel resolution 12 bits */ +#define LL_DAC_RESOLUTION_8B 0x00000002U /*!< DAC channel resolution 8 bits */ +/** + * @} + */ + +/** @defgroup DAC_LL_EC_REGISTERS DAC registers compliant with specific purpose + * @{ + */ +/* List of DAC registers intended to be used (most commonly) with */ +/* DMA transfer. */ +/* Refer to function @ref LL_DAC_DMA_GetRegAddr(). */ +#define LL_DAC_DMA_REG_DATA_12BITS_RIGHT_ALIGNED DAC_REG_DHR12RX_REGOFFSET_BITOFFSET_POS /*!< DAC channel data holding register 12 bits right aligned */ +#define LL_DAC_DMA_REG_DATA_12BITS_LEFT_ALIGNED DAC_REG_DHR12LX_REGOFFSET_BITOFFSET_POS /*!< DAC channel data holding register 12 bits left aligned */ +#define LL_DAC_DMA_REG_DATA_8BITS_RIGHT_ALIGNED DAC_REG_DHR8RX_REGOFFSET_BITOFFSET_POS /*!< DAC channel data holding register 8 bits right aligned */ +/** + * @} + */ + +/** @defgroup DAC_LL_EC_HW_DELAYS Definitions of DAC hardware constraints delays + * @note Only DAC peripheral HW delays are defined in DAC LL driver driver, + * not timeout values. + * For details on delays values, refer to descriptions in source code + * above each literal definition. + * @{ + */ + +/* Delay for DAC channel voltage settling time from DAC channel startup */ +/* (transition from disable to enable). */ +/* Note: DAC channel startup time depends on board application environment: */ +/* impedance connected to DAC channel output. */ +/* The delay below is specified under conditions: */ +/* - voltage maximum transition (lowest to highest value) */ +/* - until voltage reaches final value +-1LSB */ +/* - DAC channel output buffer enabled */ +/* - load impedance of 5kOhm (min), 50pF (max) */ +/* Literal set to maximum value (refer to device datasheet, */ +/* parameter "tWAKEUP"). */ +/* Unit: us */ +#define LL_DAC_DELAY_STARTUP_VOLTAGE_SETTLING_US 15U /*!< Delay for DAC channel voltage settling time from DAC channel startup (transition from disable to enable) */ + +/* Delay for DAC channel voltage settling time. */ +/* Note: DAC channel startup time depends on board application environment: */ +/* impedance connected to DAC channel output. */ +/* The delay below is specified under conditions: */ +/* - voltage maximum transition (lowest to highest value) */ +/* - until voltage reaches final value +-1LSB */ +/* - DAC channel output buffer enabled */ +/* - load impedance of 5kOhm min, 50pF max */ +/* Literal set to maximum value (refer to device datasheet, */ +/* parameter "tSETTLING"). */ +/* Unit: us */ +#define LL_DAC_DELAY_VOLTAGE_SETTLING_US 12U /*!< Delay for DAC channel voltage settling time */ + +/** + * @} + */ + +/** + * @} + */ + +/* Exported macro ------------------------------------------------------------*/ +/** @defgroup DAC_LL_Exported_Macros DAC Exported Macros + * @{ + */ + +/** @defgroup DAC_LL_EM_WRITE_READ Common write and read registers macros + * @{ + */ + +/** + * @brief Write a value in DAC register + * @param __INSTANCE__ DAC Instance + * @param __REG__ Register to be written + * @param __VALUE__ Value to be written in the register + * @retval None + */ +#define LL_DAC_WriteReg(__INSTANCE__, __REG__, __VALUE__) WRITE_REG(__INSTANCE__->__REG__, (__VALUE__)) + +/** + * @brief Read a value in DAC register + * @param __INSTANCE__ DAC Instance + * @param __REG__ Register to be read + * @retval Register value + */ +#define LL_DAC_ReadReg(__INSTANCE__, __REG__) READ_REG(__INSTANCE__->__REG__) + +/** + * @} + */ + +/** @defgroup DAC_LL_EM_HELPER_MACRO DAC helper macro + * @{ + */ + +/** + * @brief Helper macro to get DAC channel number in decimal format + * from literals LL_DAC_CHANNEL_x. + * Example: + * __LL_DAC_CHANNEL_TO_DECIMAL_NB(LL_DAC_CHANNEL_1) + * will return decimal number "1". + * @note The input can be a value from functions where a channel + * number is returned. + * @param __CHANNEL__ This parameter can be one of the following values: + * @arg @ref LL_DAC_CHANNEL_1 + * @arg @ref LL_DAC_CHANNEL_2 + * @retval 1...2 + */ +#define __LL_DAC_CHANNEL_TO_DECIMAL_NB(__CHANNEL__) \ + ((__CHANNEL__) & DAC_SWTR_CHX_MASK) + +/** + * @brief Helper macro to get DAC channel in literal format LL_DAC_CHANNEL_x + * from number in decimal format. + * Example: + * __LL_DAC_DECIMAL_NB_TO_CHANNEL(1) + * will return a data equivalent to "LL_DAC_CHANNEL_1". + * @note If the input parameter does not correspond to a DAC channel, + * this macro returns value '0'. + * @param __DECIMAL_NB__ 1...2 + * @retval Returned value can be one of the following values: + * @arg @ref LL_DAC_CHANNEL_1 + * @arg @ref LL_DAC_CHANNEL_2 + */ +#define __LL_DAC_DECIMAL_NB_TO_CHANNEL(__DECIMAL_NB__) \ + (((__DECIMAL_NB__) == 1U) \ + ? ( \ + LL_DAC_CHANNEL_1 \ + ) \ + : \ + (((__DECIMAL_NB__) == 2U) \ + ? ( \ + LL_DAC_CHANNEL_2 \ + ) \ + : \ + ( \ + 0U \ + ) \ + ) \ + ) + +/** + * @brief Helper macro to define the DAC conversion data full-scale digital + * value corresponding to the selected DAC resolution. + * @note DAC conversion data full-scale corresponds to voltage range + * determined by analog voltage references Vref+ and Vref- + * (refer to reference manual). + * @param __DAC_RESOLUTION__ This parameter can be one of the following values: + * @arg @ref LL_DAC_RESOLUTION_12B + * @arg @ref LL_DAC_RESOLUTION_8B + * @retval ADC conversion data equivalent voltage value (unit: mVolt) + */ +#define __LL_DAC_DIGITAL_SCALE(__DAC_RESOLUTION__) \ + ((0x00000FFFU) >> ((__DAC_RESOLUTION__) << 1U)) + +/** + * @brief Helper macro to calculate the DAC conversion data (unit: digital + * value) corresponding to a voltage (unit: mVolt). + * @note This helper macro is intended to provide input data in voltage + * rather than digital value, + * to be used with LL DAC functions such as + * @ref LL_DAC_ConvertData12RightAligned(). + * @note Analog reference voltage (Vref+) must be either known from + * user board environment or can be calculated using ADC measurement + * and ADC helper macro @ref __LL_ADC_CALC_VREFANALOG_VOLTAGE(). + * @param __VREFANALOG_VOLTAGE__ Analog reference voltage (unit: mV) + * @param __DAC_VOLTAGE__ Voltage to be generated by DAC channel + * (unit: mVolt). + * @param __DAC_RESOLUTION__ This parameter can be one of the following values: + * @arg @ref LL_DAC_RESOLUTION_12B + * @arg @ref LL_DAC_RESOLUTION_8B + * @retval DAC conversion data (unit: digital value) + */ +#define __LL_DAC_CALC_VOLTAGE_TO_DATA(__VREFANALOG_VOLTAGE__,\ + __DAC_VOLTAGE__,\ + __DAC_RESOLUTION__) \ + ((__DAC_VOLTAGE__) * __LL_DAC_DIGITAL_SCALE(__DAC_RESOLUTION__) \ + / (__VREFANALOG_VOLTAGE__) \ + ) + +/** + * @} + */ + +/** + * @} + */ + + +/* Exported functions --------------------------------------------------------*/ +/** @defgroup DAC_LL_Exported_Functions DAC Exported Functions + * @{ + */ +/** + * @brief Set the conversion trigger source for the selected DAC channel. + * @note For conversion trigger source to be effective, DAC trigger + * must be enabled using function @ref LL_DAC_EnableTrigger(). + * @note To set conversion trigger source, DAC channel must be disabled. + * Otherwise, the setting is discarded. + * @note Availability of parameters of trigger sources from timer + * depends on timers availability on the selected device. + * @rmtoll CR TSEL1 LL_DAC_SetTriggerSource\n + * CR TSEL2 LL_DAC_SetTriggerSource + * @param DACx DAC instance + * @param DAC_Channel This parameter can be one of the following values: + * @arg @ref LL_DAC_CHANNEL_1 + * @arg @ref LL_DAC_CHANNEL_2 + * @param TriggerSource This parameter can be one of the following values: + * @arg @ref LL_DAC_TRIG_SOFTWARE + * @arg @ref LL_DAC_TRIG_EXT_TIM2_TRGO + * @arg @ref LL_DAC_TRIG_EXT_TIM3_TRGO + * @arg @ref LL_DAC_TRIG_EXT_TIM4_TRGO + * @arg @ref LL_DAC_TRIG_EXT_TIM5_TRGO + * @arg @ref LL_DAC_TRIG_EXT_TIM6_TRGO + * @arg @ref LL_DAC_TRIG_EXT_TIM7_TRGO + * @arg @ref LL_DAC_TRIG_EXT_TIM15_TRGO + * @arg @ref LL_DAC_TRIG_EXT_EXTI_LINE9 + * @retval None + */ +__STATIC_INLINE void LL_DAC_SetTriggerSource(DAC_TypeDef *DACx, uint32_t DAC_Channel, uint32_t TriggerSource) +{ + MODIFY_REG(DACx->CR, + DAC_CR_TSEL1 << (DAC_Channel & DAC_CR_CHX_BITOFFSET_MASK), + TriggerSource << (DAC_Channel & DAC_CR_CHX_BITOFFSET_MASK)); +} + +/** + * @brief Get the conversion trigger source for the selected DAC channel. + * @note For conversion trigger source to be effective, DAC trigger + * must be enabled using function @ref LL_DAC_EnableTrigger(). + * @note Availability of parameters of trigger sources from timer + * depends on timers availability on the selected device. + * @rmtoll CR TSEL1 LL_DAC_GetTriggerSource\n + * CR TSEL2 LL_DAC_GetTriggerSource + * @param DACx DAC instance + * @param DAC_Channel This parameter can be one of the following values: + * @arg @ref LL_DAC_CHANNEL_1 + * @arg @ref LL_DAC_CHANNEL_2 + * @retval Returned value can be one of the following values: + * @arg @ref LL_DAC_TRIG_SOFTWARE + * @arg @ref LL_DAC_TRIG_EXT_TIM2_TRGO + * @arg @ref LL_DAC_TRIG_EXT_TIM3_TRGO + * @arg @ref LL_DAC_TRIG_EXT_TIM4_TRGO + * @arg @ref LL_DAC_TRIG_EXT_TIM5_TRGO + * @arg @ref LL_DAC_TRIG_EXT_TIM6_TRGO + * @arg @ref LL_DAC_TRIG_EXT_TIM7_TRGO + * @arg @ref LL_DAC_TRIG_EXT_TIM15_TRGO + * @arg @ref LL_DAC_TRIG_EXT_EXTI_LINE9 + */ +__STATIC_INLINE uint32_t LL_DAC_GetTriggerSource(DAC_TypeDef *DACx, uint32_t DAC_Channel) +{ + return (uint32_t)(READ_BIT(DACx->CR, DAC_CR_TSEL1 << (DAC_Channel & DAC_CR_CHX_BITOFFSET_MASK)) + >> (DAC_Channel & DAC_CR_CHX_BITOFFSET_MASK) + ); +} + +/** + * @brief Set the waveform automatic generation mode + * for the selected DAC channel. + * @rmtoll CR WAVE1 LL_DAC_SetWaveAutoGeneration\n + * CR WAVE2 LL_DAC_SetWaveAutoGeneration + * @param DACx DAC instance + * @param DAC_Channel This parameter can be one of the following values: + * @arg @ref LL_DAC_CHANNEL_1 + * @arg @ref LL_DAC_CHANNEL_2 + * @param WaveAutoGeneration This parameter can be one of the following values: + * @arg @ref LL_DAC_WAVE_AUTO_GENERATION_NONE + * @arg @ref LL_DAC_WAVE_AUTO_GENERATION_NOISE + * @arg @ref LL_DAC_WAVE_AUTO_GENERATION_TRIANGLE + * @retval None + */ +__STATIC_INLINE void LL_DAC_SetWaveAutoGeneration(DAC_TypeDef *DACx, uint32_t DAC_Channel, uint32_t WaveAutoGeneration) +{ + MODIFY_REG(DACx->CR, + DAC_CR_WAVE1 << (DAC_Channel & DAC_CR_CHX_BITOFFSET_MASK), + WaveAutoGeneration << (DAC_Channel & DAC_CR_CHX_BITOFFSET_MASK)); +} + +/** + * @brief Get the waveform automatic generation mode + * for the selected DAC channel. + * @rmtoll CR WAVE1 LL_DAC_GetWaveAutoGeneration\n + * CR WAVE2 LL_DAC_GetWaveAutoGeneration + * @param DACx DAC instance + * @param DAC_Channel This parameter can be one of the following values: + * @arg @ref LL_DAC_CHANNEL_1 + * @arg @ref LL_DAC_CHANNEL_2 + * @retval Returned value can be one of the following values: + * @arg @ref LL_DAC_WAVE_AUTO_GENERATION_NONE + * @arg @ref LL_DAC_WAVE_AUTO_GENERATION_NOISE + * @arg @ref LL_DAC_WAVE_AUTO_GENERATION_TRIANGLE + */ +__STATIC_INLINE uint32_t LL_DAC_GetWaveAutoGeneration(DAC_TypeDef *DACx, uint32_t DAC_Channel) +{ + return (uint32_t)(READ_BIT(DACx->CR, DAC_CR_WAVE1 << (DAC_Channel & DAC_CR_CHX_BITOFFSET_MASK)) + >> (DAC_Channel & DAC_CR_CHX_BITOFFSET_MASK) + ); +} + +/** + * @brief Set the noise waveform generation for the selected DAC channel: + * Noise mode and parameters LFSR (linear feedback shift register). + * @note For wave generation to be effective, DAC channel + * wave generation mode must be enabled using + * function @ref LL_DAC_SetWaveAutoGeneration(). + * @note This setting can be set when the selected DAC channel is disabled + * (otherwise, the setting operation is ignored). + * @rmtoll CR MAMP1 LL_DAC_SetWaveNoiseLFSR\n + * CR MAMP2 LL_DAC_SetWaveNoiseLFSR + * @param DACx DAC instance + * @param DAC_Channel This parameter can be one of the following values: + * @arg @ref LL_DAC_CHANNEL_1 + * @arg @ref LL_DAC_CHANNEL_2 + * @param NoiseLFSRMask This parameter can be one of the following values: + * @arg @ref LL_DAC_NOISE_LFSR_UNMASK_BIT0 + * @arg @ref LL_DAC_NOISE_LFSR_UNMASK_BITS1_0 + * @arg @ref LL_DAC_NOISE_LFSR_UNMASK_BITS2_0 + * @arg @ref LL_DAC_NOISE_LFSR_UNMASK_BITS3_0 + * @arg @ref LL_DAC_NOISE_LFSR_UNMASK_BITS4_0 + * @arg @ref LL_DAC_NOISE_LFSR_UNMASK_BITS5_0 + * @arg @ref LL_DAC_NOISE_LFSR_UNMASK_BITS6_0 + * @arg @ref LL_DAC_NOISE_LFSR_UNMASK_BITS7_0 + * @arg @ref LL_DAC_NOISE_LFSR_UNMASK_BITS8_0 + * @arg @ref LL_DAC_NOISE_LFSR_UNMASK_BITS9_0 + * @arg @ref LL_DAC_NOISE_LFSR_UNMASK_BITS10_0 + * @arg @ref LL_DAC_NOISE_LFSR_UNMASK_BITS11_0 + * @retval None + */ +__STATIC_INLINE void LL_DAC_SetWaveNoiseLFSR(DAC_TypeDef *DACx, uint32_t DAC_Channel, uint32_t NoiseLFSRMask) +{ + MODIFY_REG(DACx->CR, + DAC_CR_MAMP1 << (DAC_Channel & DAC_CR_CHX_BITOFFSET_MASK), + NoiseLFSRMask << (DAC_Channel & DAC_CR_CHX_BITOFFSET_MASK)); +} + +/** + * @brief Get the noise waveform generation for the selected DAC channel: + * Noise mode and parameters LFSR (linear feedback shift register). + * @rmtoll CR MAMP1 LL_DAC_GetWaveNoiseLFSR\n + * CR MAMP2 LL_DAC_GetWaveNoiseLFSR + * @param DACx DAC instance + * @param DAC_Channel This parameter can be one of the following values: + * @arg @ref LL_DAC_CHANNEL_1 + * @arg @ref LL_DAC_CHANNEL_2 + * @retval Returned value can be one of the following values: + * @arg @ref LL_DAC_NOISE_LFSR_UNMASK_BIT0 + * @arg @ref LL_DAC_NOISE_LFSR_UNMASK_BITS1_0 + * @arg @ref LL_DAC_NOISE_LFSR_UNMASK_BITS2_0 + * @arg @ref LL_DAC_NOISE_LFSR_UNMASK_BITS3_0 + * @arg @ref LL_DAC_NOISE_LFSR_UNMASK_BITS4_0 + * @arg @ref LL_DAC_NOISE_LFSR_UNMASK_BITS5_0 + * @arg @ref LL_DAC_NOISE_LFSR_UNMASK_BITS6_0 + * @arg @ref LL_DAC_NOISE_LFSR_UNMASK_BITS7_0 + * @arg @ref LL_DAC_NOISE_LFSR_UNMASK_BITS8_0 + * @arg @ref LL_DAC_NOISE_LFSR_UNMASK_BITS9_0 + * @arg @ref LL_DAC_NOISE_LFSR_UNMASK_BITS10_0 + * @arg @ref LL_DAC_NOISE_LFSR_UNMASK_BITS11_0 + */ +__STATIC_INLINE uint32_t LL_DAC_GetWaveNoiseLFSR(DAC_TypeDef *DACx, uint32_t DAC_Channel) +{ + return (uint32_t)(READ_BIT(DACx->CR, DAC_CR_MAMP1 << (DAC_Channel & DAC_CR_CHX_BITOFFSET_MASK)) + >> (DAC_Channel & DAC_CR_CHX_BITOFFSET_MASK) + ); +} + +/** + * @brief Set the triangle waveform generation for the selected DAC channel: + * triangle mode and amplitude. + * @note For wave generation to be effective, DAC channel + * wave generation mode must be enabled using + * function @ref LL_DAC_SetWaveAutoGeneration(). + * @note This setting can be set when the selected DAC channel is disabled + * (otherwise, the setting operation is ignored). + * @rmtoll CR MAMP1 LL_DAC_SetWaveTriangleAmplitude\n + * CR MAMP2 LL_DAC_SetWaveTriangleAmplitude + * @param DACx DAC instance + * @param DAC_Channel This parameter can be one of the following values: + * @arg @ref LL_DAC_CHANNEL_1 + * @arg @ref LL_DAC_CHANNEL_2 + * @param TriangleAmplitude This parameter can be one of the following values: + * @arg @ref LL_DAC_TRIANGLE_AMPLITUDE_1 + * @arg @ref LL_DAC_TRIANGLE_AMPLITUDE_3 + * @arg @ref LL_DAC_TRIANGLE_AMPLITUDE_7 + * @arg @ref LL_DAC_TRIANGLE_AMPLITUDE_15 + * @arg @ref LL_DAC_TRIANGLE_AMPLITUDE_31 + * @arg @ref LL_DAC_TRIANGLE_AMPLITUDE_63 + * @arg @ref LL_DAC_TRIANGLE_AMPLITUDE_127 + * @arg @ref LL_DAC_TRIANGLE_AMPLITUDE_255 + * @arg @ref LL_DAC_TRIANGLE_AMPLITUDE_511 + * @arg @ref LL_DAC_TRIANGLE_AMPLITUDE_1023 + * @arg @ref LL_DAC_TRIANGLE_AMPLITUDE_2047 + * @arg @ref LL_DAC_TRIANGLE_AMPLITUDE_4095 + * @retval None + */ +__STATIC_INLINE void LL_DAC_SetWaveTriangleAmplitude(DAC_TypeDef *DACx, uint32_t DAC_Channel, + uint32_t TriangleAmplitude) +{ + MODIFY_REG(DACx->CR, + DAC_CR_MAMP1 << (DAC_Channel & DAC_CR_CHX_BITOFFSET_MASK), + TriangleAmplitude << (DAC_Channel & DAC_CR_CHX_BITOFFSET_MASK)); +} + +/** + * @brief Get the triangle waveform generation for the selected DAC channel: + * triangle mode and amplitude. + * @rmtoll CR MAMP1 LL_DAC_GetWaveTriangleAmplitude\n + * CR MAMP2 LL_DAC_GetWaveTriangleAmplitude + * @param DACx DAC instance + * @param DAC_Channel This parameter can be one of the following values: + * @arg @ref LL_DAC_CHANNEL_1 + * @arg @ref LL_DAC_CHANNEL_2 + * @retval Returned value can be one of the following values: + * @arg @ref LL_DAC_TRIANGLE_AMPLITUDE_1 + * @arg @ref LL_DAC_TRIANGLE_AMPLITUDE_3 + * @arg @ref LL_DAC_TRIANGLE_AMPLITUDE_7 + * @arg @ref LL_DAC_TRIANGLE_AMPLITUDE_15 + * @arg @ref LL_DAC_TRIANGLE_AMPLITUDE_31 + * @arg @ref LL_DAC_TRIANGLE_AMPLITUDE_63 + * @arg @ref LL_DAC_TRIANGLE_AMPLITUDE_127 + * @arg @ref LL_DAC_TRIANGLE_AMPLITUDE_255 + * @arg @ref LL_DAC_TRIANGLE_AMPLITUDE_511 + * @arg @ref LL_DAC_TRIANGLE_AMPLITUDE_1023 + * @arg @ref LL_DAC_TRIANGLE_AMPLITUDE_2047 + * @arg @ref LL_DAC_TRIANGLE_AMPLITUDE_4095 + */ +__STATIC_INLINE uint32_t LL_DAC_GetWaveTriangleAmplitude(DAC_TypeDef *DACx, uint32_t DAC_Channel) +{ + return (uint32_t)(READ_BIT(DACx->CR, DAC_CR_MAMP1 << (DAC_Channel & DAC_CR_CHX_BITOFFSET_MASK)) + >> (DAC_Channel & DAC_CR_CHX_BITOFFSET_MASK) + ); +} + +/** + * @brief Set the output buffer for the selected DAC channel. + * @rmtoll CR BOFF1 LL_DAC_SetOutputBuffer\n + * CR BOFF2 LL_DAC_SetOutputBuffer + * @param DACx DAC instance + * @param DAC_Channel This parameter can be one of the following values: + * @arg @ref LL_DAC_CHANNEL_1 + * @arg @ref LL_DAC_CHANNEL_2 + * @param OutputBuffer This parameter can be one of the following values: + * @arg @ref LL_DAC_OUTPUT_BUFFER_ENABLE + * @arg @ref LL_DAC_OUTPUT_BUFFER_DISABLE + * @retval None + */ +__STATIC_INLINE void LL_DAC_SetOutputBuffer(DAC_TypeDef *DACx, uint32_t DAC_Channel, uint32_t OutputBuffer) +{ + MODIFY_REG(DACx->CR, + DAC_CR_BOFF1 << (DAC_Channel & DAC_CR_CHX_BITOFFSET_MASK), + OutputBuffer << (DAC_Channel & DAC_CR_CHX_BITOFFSET_MASK)); +} + +/** + * @brief Get the output buffer state for the selected DAC channel. + * @rmtoll CR BOFF1 LL_DAC_GetOutputBuffer\n + * CR BOFF2 LL_DAC_GetOutputBuffer + * @param DACx DAC instance + * @param DAC_Channel This parameter can be one of the following values: + * @arg @ref LL_DAC_CHANNEL_1 + * @arg @ref LL_DAC_CHANNEL_2 + * @retval Returned value can be one of the following values: + * @arg @ref LL_DAC_OUTPUT_BUFFER_ENABLE + * @arg @ref LL_DAC_OUTPUT_BUFFER_DISABLE + */ +__STATIC_INLINE uint32_t LL_DAC_GetOutputBuffer(DAC_TypeDef *DACx, uint32_t DAC_Channel) +{ + return (uint32_t)(READ_BIT(DACx->CR, DAC_CR_BOFF1 << (DAC_Channel & DAC_CR_CHX_BITOFFSET_MASK)) + >> (DAC_Channel & DAC_CR_CHX_BITOFFSET_MASK) + ); +} + +/** + * @} + */ + +/** @defgroup DAC_LL_EF_DMA_Management DMA Management + * @{ + */ + +/** + * @brief Enable DAC DMA transfer request of the selected channel. + * @note To configure DMA source address (peripheral address), + * use function @ref LL_DAC_DMA_GetRegAddr(). + * @rmtoll CR DMAEN1 LL_DAC_EnableDMAReq\n + * CR DMAEN2 LL_DAC_EnableDMAReq + * @param DACx DAC instance + * @param DAC_Channel This parameter can be one of the following values: + * @arg @ref LL_DAC_CHANNEL_1 + * @arg @ref LL_DAC_CHANNEL_2 + * @retval None + */ +__STATIC_INLINE void LL_DAC_EnableDMAReq(DAC_TypeDef *DACx, uint32_t DAC_Channel) +{ + SET_BIT(DACx->CR, + DAC_CR_DMAEN1 << (DAC_Channel & DAC_CR_CHX_BITOFFSET_MASK)); +} + +/** + * @brief Disable DAC DMA transfer request of the selected channel. + * @note To configure DMA source address (peripheral address), + * use function @ref LL_DAC_DMA_GetRegAddr(). + * @rmtoll CR DMAEN1 LL_DAC_DisableDMAReq\n + * CR DMAEN2 LL_DAC_DisableDMAReq + * @param DACx DAC instance + * @param DAC_Channel This parameter can be one of the following values: + * @arg @ref LL_DAC_CHANNEL_1 + * @arg @ref LL_DAC_CHANNEL_2 + * @retval None + */ +__STATIC_INLINE void LL_DAC_DisableDMAReq(DAC_TypeDef *DACx, uint32_t DAC_Channel) +{ + CLEAR_BIT(DACx->CR, + DAC_CR_DMAEN1 << (DAC_Channel & DAC_CR_CHX_BITOFFSET_MASK)); +} + +/** + * @brief Get DAC DMA transfer request state of the selected channel. + * (0: DAC DMA transfer request is disabled, 1: DAC DMA transfer request is enabled) + * @rmtoll CR DMAEN1 LL_DAC_IsDMAReqEnabled\n + * CR DMAEN2 LL_DAC_IsDMAReqEnabled + * @param DACx DAC instance + * @param DAC_Channel This parameter can be one of the following values: + * @arg @ref LL_DAC_CHANNEL_1 + * @arg @ref LL_DAC_CHANNEL_2 + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_DAC_IsDMAReqEnabled(DAC_TypeDef *DACx, uint32_t DAC_Channel) +{ + return ((READ_BIT(DACx->CR, + DAC_CR_DMAEN1 << (DAC_Channel & DAC_CR_CHX_BITOFFSET_MASK)) + == (DAC_CR_DMAEN1 << (DAC_Channel & DAC_CR_CHX_BITOFFSET_MASK))) ? 1UL : 0UL); +} + +/** + * @brief Function to help to configure DMA transfer to DAC: retrieve the + * DAC register address from DAC instance and a list of DAC registers + * intended to be used (most commonly) with DMA transfer. + * @note These DAC registers are data holding registers: + * when DAC conversion is requested, DAC generates a DMA transfer + * request to have data available in DAC data holding registers. + * @note This macro is intended to be used with LL DMA driver, refer to + * function "LL_DMA_ConfigAddresses()". + * Example: + * LL_DMA_ConfigAddresses(DMA1, + * LL_DMA_CHANNEL_1, + * (uint32_t)&< array or variable >, + * LL_DAC_DMA_GetRegAddr(DAC1, LL_DAC_CHANNEL_1, LL_DAC_DMA_REG_DATA_12BITS_RIGHT_ALIGNED), + * LL_DMA_DIRECTION_MEMORY_TO_PERIPH); + * @rmtoll DHR12R1 DACC1DHR LL_DAC_DMA_GetRegAddr\n + * DHR12L1 DACC1DHR LL_DAC_DMA_GetRegAddr\n + * DHR8R1 DACC1DHR LL_DAC_DMA_GetRegAddr\n + * DHR12R2 DACC2DHR LL_DAC_DMA_GetRegAddr\n + * DHR12L2 DACC2DHR LL_DAC_DMA_GetRegAddr\n + * DHR8R2 DACC2DHR LL_DAC_DMA_GetRegAddr + * @param DACx DAC instance + * @param DAC_Channel This parameter can be one of the following values: + * @arg @ref LL_DAC_CHANNEL_1 + * @arg @ref LL_DAC_CHANNEL_2 + * @param Register This parameter can be one of the following values: + * @arg @ref LL_DAC_DMA_REG_DATA_12BITS_RIGHT_ALIGNED + * @arg @ref LL_DAC_DMA_REG_DATA_12BITS_LEFT_ALIGNED + * @arg @ref LL_DAC_DMA_REG_DATA_8BITS_RIGHT_ALIGNED + * @retval DAC register address + */ +__STATIC_INLINE uint32_t LL_DAC_DMA_GetRegAddr(DAC_TypeDef *DACx, uint32_t DAC_Channel, uint32_t Register) +{ + /* Retrieve address of register DHR12Rx, DHR12Lx or DHR8Rx depending on */ + /* DAC channel selected. */ + return ((uint32_t)(__DAC_PTR_REG_OFFSET((DACx)->DHR12R1, + ((DAC_Channel >> (Register & 0x1FUL)) & DAC_REG_DHR_REGOFFSET_MASK_POSBIT0)))); +} +/** + * @} + */ + +/** @defgroup DAC_LL_EF_Operation Operation on DAC channels + * @{ + */ + +/** + * @brief Enable DAC selected channel. + * @rmtoll CR EN1 LL_DAC_Enable\n + * CR EN2 LL_DAC_Enable + * @note After enable from off state, DAC channel requires a delay + * for output voltage to reach accuracy +/- 1 LSB. + * Refer to device datasheet, parameter "tWAKEUP". + * @param DACx DAC instance + * @param DAC_Channel This parameter can be one of the following values: + * @arg @ref LL_DAC_CHANNEL_1 + * @arg @ref LL_DAC_CHANNEL_2 + * @retval None + */ +__STATIC_INLINE void LL_DAC_Enable(DAC_TypeDef *DACx, uint32_t DAC_Channel) +{ + SET_BIT(DACx->CR, + DAC_CR_EN1 << (DAC_Channel & DAC_CR_CHX_BITOFFSET_MASK)); +} + +/** + * @brief Disable DAC selected channel. + * @rmtoll CR EN1 LL_DAC_Disable\n + * CR EN2 LL_DAC_Disable + * @param DACx DAC instance + * @param DAC_Channel This parameter can be one of the following values: + * @arg @ref LL_DAC_CHANNEL_1 + * @arg @ref LL_DAC_CHANNEL_2 + * @retval None + */ +__STATIC_INLINE void LL_DAC_Disable(DAC_TypeDef *DACx, uint32_t DAC_Channel) +{ + CLEAR_BIT(DACx->CR, + DAC_CR_EN1 << (DAC_Channel & DAC_CR_CHX_BITOFFSET_MASK)); +} + +/** + * @brief Get DAC enable state of the selected channel. + * (0: DAC channel is disabled, 1: DAC channel is enabled) + * @rmtoll CR EN1 LL_DAC_IsEnabled\n + * CR EN2 LL_DAC_IsEnabled + * @param DACx DAC instance + * @param DAC_Channel This parameter can be one of the following values: + * @arg @ref LL_DAC_CHANNEL_1 + * @arg @ref LL_DAC_CHANNEL_2 + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_DAC_IsEnabled(DAC_TypeDef *DACx, uint32_t DAC_Channel) +{ + return ((READ_BIT(DACx->CR, + DAC_CR_EN1 << (DAC_Channel & DAC_CR_CHX_BITOFFSET_MASK)) + == (DAC_CR_EN1 << (DAC_Channel & DAC_CR_CHX_BITOFFSET_MASK))) ? 1UL : 0UL); +} + +/** + * @brief Enable DAC trigger of the selected channel. + * @note - If DAC trigger is disabled, DAC conversion is performed + * automatically once the data holding register is updated, + * using functions "LL_DAC_ConvertData{8; 12}{Right; Left} Aligned()": + * @ref LL_DAC_ConvertData12RightAligned(), ... + * - If DAC trigger is enabled, DAC conversion is performed + * only when a hardware of software trigger event is occurring. + * Select trigger source using + * function @ref LL_DAC_SetTriggerSource(). + * @rmtoll CR TEN1 LL_DAC_EnableTrigger\n + * CR TEN2 LL_DAC_EnableTrigger + * @param DACx DAC instance + * @param DAC_Channel This parameter can be one of the following values: + * @arg @ref LL_DAC_CHANNEL_1 + * @arg @ref LL_DAC_CHANNEL_2 + * @retval None + */ +__STATIC_INLINE void LL_DAC_EnableTrigger(DAC_TypeDef *DACx, uint32_t DAC_Channel) +{ + SET_BIT(DACx->CR, + DAC_CR_TEN1 << (DAC_Channel & DAC_CR_CHX_BITOFFSET_MASK)); +} + +/** + * @brief Disable DAC trigger of the selected channel. + * @rmtoll CR TEN1 LL_DAC_DisableTrigger\n + * CR TEN2 LL_DAC_DisableTrigger + * @param DACx DAC instance + * @param DAC_Channel This parameter can be one of the following values: + * @arg @ref LL_DAC_CHANNEL_1 + * @arg @ref LL_DAC_CHANNEL_2 + * @retval None + */ +__STATIC_INLINE void LL_DAC_DisableTrigger(DAC_TypeDef *DACx, uint32_t DAC_Channel) +{ + CLEAR_BIT(DACx->CR, + DAC_CR_TEN1 << (DAC_Channel & DAC_CR_CHX_BITOFFSET_MASK)); +} + +/** + * @brief Get DAC trigger state of the selected channel. + * (0: DAC trigger is disabled, 1: DAC trigger is enabled) + * @rmtoll CR TEN1 LL_DAC_IsTriggerEnabled\n + * CR TEN2 LL_DAC_IsTriggerEnabled + * @param DACx DAC instance + * @param DAC_Channel This parameter can be one of the following values: + * @arg @ref LL_DAC_CHANNEL_1 + * @arg @ref LL_DAC_CHANNEL_2 + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_DAC_IsTriggerEnabled(DAC_TypeDef *DACx, uint32_t DAC_Channel) +{ + return ((READ_BIT(DACx->CR, + DAC_CR_TEN1 << (DAC_Channel & DAC_CR_CHX_BITOFFSET_MASK)) + == (DAC_CR_TEN1 << (DAC_Channel & DAC_CR_CHX_BITOFFSET_MASK))) ? 1UL : 0UL); +} + +/** + * @brief Trig DAC conversion by software for the selected DAC channel. + * @note Preliminarily, DAC trigger must be set to software trigger + * using function + * @ref LL_DAC_Init() + * @ref LL_DAC_SetTriggerSource() + * with parameter "LL_DAC_TRIGGER_SOFTWARE". + * and DAC trigger must be enabled using + * function @ref LL_DAC_EnableTrigger(). + * @note For devices featuring DAC with 2 channels: this function + * can perform a SW start of both DAC channels simultaneously. + * Two channels can be selected as parameter. + * Example: (LL_DAC_CHANNEL_1 | LL_DAC_CHANNEL_2) + * @rmtoll SWTRIGR SWTRIG1 LL_DAC_TrigSWConversion\n + * SWTRIGR SWTRIG2 LL_DAC_TrigSWConversion + * @param DACx DAC instance + * @param DAC_Channel This parameter can a combination of the following values: + * @arg @ref LL_DAC_CHANNEL_1 + * @arg @ref LL_DAC_CHANNEL_2 + * @retval None + */ +__STATIC_INLINE void LL_DAC_TrigSWConversion(DAC_TypeDef *DACx, uint32_t DAC_Channel) +{ + SET_BIT(DACx->SWTRIGR, + (DAC_Channel & DAC_SWTR_CHX_MASK)); +} + +/** + * @brief Set the data to be loaded in the data holding register + * in format 12 bits left alignment (LSB aligned on bit 0), + * for the selected DAC channel. + * @rmtoll DHR12R1 DACC1DHR LL_DAC_ConvertData12RightAligned\n + * DHR12R2 DACC2DHR LL_DAC_ConvertData12RightAligned + * @param DACx DAC instance + * @param DAC_Channel This parameter can be one of the following values: + * @arg @ref LL_DAC_CHANNEL_1 + * @arg @ref LL_DAC_CHANNEL_2 + * @param Data Value between Min_Data=0x000 and Max_Data=0xFFF + * @retval None + */ +__STATIC_INLINE void LL_DAC_ConvertData12RightAligned(DAC_TypeDef *DACx, uint32_t DAC_Channel, uint32_t Data) +{ + __IO uint32_t *preg = __DAC_PTR_REG_OFFSET(DACx->DHR12R1, (DAC_Channel >> DAC_REG_DHR12RX_REGOFFSET_BITOFFSET_POS) & DAC_REG_DHR_REGOFFSET_MASK_POSBIT0); + + MODIFY_REG(*preg, + DAC_DHR12R1_DACC1DHR, + Data); +} + +/** + * @brief Set the data to be loaded in the data holding register + * in format 12 bits left alignment (MSB aligned on bit 15), + * for the selected DAC channel. + * @rmtoll DHR12L1 DACC1DHR LL_DAC_ConvertData12LeftAligned\n + * DHR12L2 DACC2DHR LL_DAC_ConvertData12LeftAligned + * @param DACx DAC instance + * @param DAC_Channel This parameter can be one of the following values: + * @arg @ref LL_DAC_CHANNEL_1 + * @arg @ref LL_DAC_CHANNEL_2 + * @param Data Value between Min_Data=0x000 and Max_Data=0xFFF + * @retval None + */ +__STATIC_INLINE void LL_DAC_ConvertData12LeftAligned(DAC_TypeDef *DACx, uint32_t DAC_Channel, uint32_t Data) +{ + __IO uint32_t *preg = __DAC_PTR_REG_OFFSET(DACx->DHR12R1, (DAC_Channel >> DAC_REG_DHR12LX_REGOFFSET_BITOFFSET_POS) & DAC_REG_DHR_REGOFFSET_MASK_POSBIT0); + + MODIFY_REG(*preg, + DAC_DHR12L1_DACC1DHR, + Data); +} + +/** + * @brief Set the data to be loaded in the data holding register + * in format 8 bits left alignment (LSB aligned on bit 0), + * for the selected DAC channel. + * @rmtoll DHR8R1 DACC1DHR LL_DAC_ConvertData8RightAligned\n + * DHR8R2 DACC2DHR LL_DAC_ConvertData8RightAligned + * @param DACx DAC instance + * @param DAC_Channel This parameter can be one of the following values: + * @arg @ref LL_DAC_CHANNEL_1 + * @arg @ref LL_DAC_CHANNEL_2 + * @param Data Value between Min_Data=0x00 and Max_Data=0xFF + * @retval None + */ +__STATIC_INLINE void LL_DAC_ConvertData8RightAligned(DAC_TypeDef *DACx, uint32_t DAC_Channel, uint32_t Data) +{ + __IO uint32_t *preg = __DAC_PTR_REG_OFFSET(DACx->DHR12R1, (DAC_Channel >> DAC_REG_DHR8RX_REGOFFSET_BITOFFSET_POS) & DAC_REG_DHR_REGOFFSET_MASK_POSBIT0); + + MODIFY_REG(*preg, + DAC_DHR8R1_DACC1DHR, + Data); +} + + +/** + * @brief Set the data to be loaded in the data holding register + * in format 12 bits left alignment (LSB aligned on bit 0), + * for both DAC channels. + * @rmtoll DHR12RD DACC1DHR LL_DAC_ConvertDualData12RightAligned\n + * DHR12RD DACC2DHR LL_DAC_ConvertDualData12RightAligned + * @param DACx DAC instance + * @param DataChannel1 Value between Min_Data=0x000 and Max_Data=0xFFF + * @param DataChannel2 Value between Min_Data=0x000 and Max_Data=0xFFF + * @retval None + */ +__STATIC_INLINE void LL_DAC_ConvertDualData12RightAligned(DAC_TypeDef *DACx, uint32_t DataChannel1, + uint32_t DataChannel2) +{ + MODIFY_REG(DACx->DHR12RD, + (DAC_DHR12RD_DACC2DHR | DAC_DHR12RD_DACC1DHR), + ((DataChannel2 << DAC_DHR12RD_DACC2DHR_BITOFFSET_POS) | DataChannel1)); +} + +/** + * @brief Set the data to be loaded in the data holding register + * in format 12 bits left alignment (MSB aligned on bit 15), + * for both DAC channels. + * @rmtoll DHR12LD DACC1DHR LL_DAC_ConvertDualData12LeftAligned\n + * DHR12LD DACC2DHR LL_DAC_ConvertDualData12LeftAligned + * @param DACx DAC instance + * @param DataChannel1 Value between Min_Data=0x000 and Max_Data=0xFFF + * @param DataChannel2 Value between Min_Data=0x000 and Max_Data=0xFFF + * @retval None + */ +__STATIC_INLINE void LL_DAC_ConvertDualData12LeftAligned(DAC_TypeDef *DACx, uint32_t DataChannel1, + uint32_t DataChannel2) +{ + /* Note: Data of DAC channel 2 shift value subtracted of 4 because */ + /* data on 16 bits and DAC channel 2 bits field is on the 12 MSB, */ + /* the 4 LSB must be taken into account for the shift value. */ + MODIFY_REG(DACx->DHR12LD, + (DAC_DHR12LD_DACC2DHR | DAC_DHR12LD_DACC1DHR), + ((DataChannel2 << (DAC_DHR12LD_DACC2DHR_BITOFFSET_POS - 4U)) | DataChannel1)); +} + +/** + * @brief Set the data to be loaded in the data holding register + * in format 8 bits left alignment (LSB aligned on bit 0), + * for both DAC channels. + * @rmtoll DHR8RD DACC1DHR LL_DAC_ConvertDualData8RightAligned\n + * DHR8RD DACC2DHR LL_DAC_ConvertDualData8RightAligned + * @param DACx DAC instance + * @param DataChannel1 Value between Min_Data=0x00 and Max_Data=0xFF + * @param DataChannel2 Value between Min_Data=0x00 and Max_Data=0xFF + * @retval None + */ +__STATIC_INLINE void LL_DAC_ConvertDualData8RightAligned(DAC_TypeDef *DACx, uint32_t DataChannel1, + uint32_t DataChannel2) +{ + MODIFY_REG(DACx->DHR8RD, + (DAC_DHR8RD_DACC2DHR | DAC_DHR8RD_DACC1DHR), + ((DataChannel2 << DAC_DHR8RD_DACC2DHR_BITOFFSET_POS) | DataChannel1)); +} + + +/** + * @brief Retrieve output data currently generated for the selected DAC channel. + * @note Whatever alignment and resolution settings + * (using functions "LL_DAC_ConvertData{8; 12}{Right; Left} Aligned()": + * @ref LL_DAC_ConvertData12RightAligned(), ...), + * output data format is 12 bits right aligned (LSB aligned on bit 0). + * @rmtoll DOR1 DACC1DOR LL_DAC_RetrieveOutputData\n + * DOR2 DACC2DOR LL_DAC_RetrieveOutputData + * @param DACx DAC instance + * @param DAC_Channel This parameter can be one of the following values: + * @arg @ref LL_DAC_CHANNEL_1 + * @arg @ref LL_DAC_CHANNEL_2 + * @retval Value between Min_Data=0x000 and Max_Data=0xFFF + */ +__STATIC_INLINE uint32_t LL_DAC_RetrieveOutputData(DAC_TypeDef *DACx, uint32_t DAC_Channel) +{ + __IO uint32_t const *preg = __DAC_PTR_REG_OFFSET(DACx->DOR1, (DAC_Channel >> DAC_REG_DORX_REGOFFSET_BITOFFSET_POS) & DAC_REG_DORX_REGOFFSET_MASK_POSBIT0); + + return (uint16_t) READ_BIT(*preg, DAC_DOR1_DACC1DOR); +} + +/** + * @} + */ + +/** @defgroup DAC_LL_EF_FLAG_Management FLAG Management + * @{ + */ +#if defined(DAC_SR_DMAUDR1) +/** + * @brief Get DAC underrun flag for DAC channel 1 + * @rmtoll SR DMAUDR1 LL_DAC_IsActiveFlag_DMAUDR1 + * @param DACx DAC instance + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_DAC_IsActiveFlag_DMAUDR1(DAC_TypeDef *DACx) +{ + return ((READ_BIT(DACx->SR, LL_DAC_FLAG_DMAUDR1) == (LL_DAC_FLAG_DMAUDR1)) ? 1UL : 0UL); +} +#endif /* DAC_SR_DMAUDR1 */ + +#if defined(DAC_SR_DMAUDR2) +/** + * @brief Get DAC underrun flag for DAC channel 2 + * @rmtoll SR DMAUDR2 LL_DAC_IsActiveFlag_DMAUDR2 + * @param DACx DAC instance + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_DAC_IsActiveFlag_DMAUDR2(DAC_TypeDef *DACx) +{ + return ((READ_BIT(DACx->SR, LL_DAC_FLAG_DMAUDR2) == (LL_DAC_FLAG_DMAUDR2)) ? 1UL : 0UL); +} +#endif /* DAC_SR_DMAUDR2 */ + +#if defined(DAC_SR_DMAUDR1) +/** + * @brief Clear DAC underrun flag for DAC channel 1 + * @rmtoll SR DMAUDR1 LL_DAC_ClearFlag_DMAUDR1 + * @param DACx DAC instance + * @retval None + */ +__STATIC_INLINE void LL_DAC_ClearFlag_DMAUDR1(DAC_TypeDef *DACx) +{ + WRITE_REG(DACx->SR, LL_DAC_FLAG_DMAUDR1); +} +#endif /* DAC_SR_DMAUDR1 */ + +#if defined(DAC_SR_DMAUDR2) +/** + * @brief Clear DAC underrun flag for DAC channel 2 + * @rmtoll SR DMAUDR2 LL_DAC_ClearFlag_DMAUDR2 + * @param DACx DAC instance + * @retval None + */ +__STATIC_INLINE void LL_DAC_ClearFlag_DMAUDR2(DAC_TypeDef *DACx) +{ + WRITE_REG(DACx->SR, LL_DAC_FLAG_DMAUDR2); +} +#endif /* DAC_SR_DMAUDR2 */ + +/** + * @} + */ + +/** @defgroup DAC_LL_EF_IT_Management IT management + * @{ + */ +#if defined(DAC_CR_DMAUDRIE1) +/** + * @brief Enable DMA underrun interrupt for DAC channel 1 + * @rmtoll CR DMAUDRIE1 LL_DAC_EnableIT_DMAUDR1 + * @param DACx DAC instance + * @retval None + */ +__STATIC_INLINE void LL_DAC_EnableIT_DMAUDR1(DAC_TypeDef *DACx) +{ + SET_BIT(DACx->CR, LL_DAC_IT_DMAUDRIE1); +} +#endif /* DAC_CR_DMAUDRIE1 */ + +#if defined(DAC_CR_DMAUDRIE2) +/** + * @brief Enable DMA underrun interrupt for DAC channel 2 + * @rmtoll CR DMAUDRIE2 LL_DAC_EnableIT_DMAUDR2 + * @param DACx DAC instance + * @retval None + */ +__STATIC_INLINE void LL_DAC_EnableIT_DMAUDR2(DAC_TypeDef *DACx) +{ + SET_BIT(DACx->CR, LL_DAC_IT_DMAUDRIE2); +} +#endif /* DAC_CR_DMAUDRIE2 */ + +#if defined(DAC_CR_DMAUDRIE1) +/** + * @brief Disable DMA underrun interrupt for DAC channel 1 + * @rmtoll CR DMAUDRIE1 LL_DAC_DisableIT_DMAUDR1 + * @param DACx DAC instance + * @retval None + */ +__STATIC_INLINE void LL_DAC_DisableIT_DMAUDR1(DAC_TypeDef *DACx) +{ + CLEAR_BIT(DACx->CR, LL_DAC_IT_DMAUDRIE1); +} +#endif /* DAC_CR_DMAUDRIE1 */ + +#if defined(DAC_CR_DMAUDRIE2) +/** + * @brief Disable DMA underrun interrupt for DAC channel 2 + * @rmtoll CR DMAUDRIE2 LL_DAC_DisableIT_DMAUDR2 + * @param DACx DAC instance + * @retval None + */ +__STATIC_INLINE void LL_DAC_DisableIT_DMAUDR2(DAC_TypeDef *DACx) +{ + CLEAR_BIT(DACx->CR, LL_DAC_IT_DMAUDRIE2); +} +#endif /* DAC_CR_DMAUDRIE2 */ + +#if defined(DAC_CR_DMAUDRIE1) +/** + * @brief Get DMA underrun interrupt for DAC channel 1 + * @rmtoll CR DMAUDRIE1 LL_DAC_IsEnabledIT_DMAUDR1 + * @param DACx DAC instance + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_DAC_IsEnabledIT_DMAUDR1(DAC_TypeDef *DACx) +{ + return ((READ_BIT(DACx->CR, LL_DAC_IT_DMAUDRIE1) == (LL_DAC_IT_DMAUDRIE1)) ? 1UL : 0UL); +} +#endif /* DAC_CR_DMAUDRIE1 */ + +#if defined(DAC_CR_DMAUDRIE2) +/** + * @brief Get DMA underrun interrupt for DAC channel 2 + * @rmtoll CR DMAUDRIE2 LL_DAC_IsEnabledIT_DMAUDR2 + * @param DACx DAC instance + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_DAC_IsEnabledIT_DMAUDR2(DAC_TypeDef *DACx) +{ + return ((READ_BIT(DACx->CR, LL_DAC_IT_DMAUDRIE2) == (LL_DAC_IT_DMAUDRIE2)) ? 1UL : 0UL); +} +#endif /* DAC_CR_DMAUDRIE2 */ + +/** + * @} + */ + +#if defined(USE_FULL_LL_DRIVER) +/** @defgroup DAC_LL_EF_Init Initialization and de-initialization functions + * @{ + */ + +ErrorStatus LL_DAC_DeInit(DAC_TypeDef *DACx); +ErrorStatus LL_DAC_Init(DAC_TypeDef *DACx, uint32_t DAC_Channel, LL_DAC_InitTypeDef *DAC_InitStruct); +void LL_DAC_StructInit(LL_DAC_InitTypeDef *DAC_InitStruct); + +/** + * @} + */ +#endif /* USE_FULL_LL_DRIVER */ + +/** + * @} + */ + +/** + * @} + */ + +#endif /* DAC */ + +/** + * @} + */ + +#ifdef __cplusplus +} +#endif + +#endif /* STM32F1xx_LL_DAC_H */ + +/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/ diff --git a/LLDrivers/inc/stm32f1xx_ll_dma.h b/LLDrivers/inc/stm32f1xx_ll_dma.h new file mode 100644 index 0000000..e205066 --- /dev/null +++ b/LLDrivers/inc/stm32f1xx_ll_dma.h @@ -0,0 +1,1960 @@ +/** + ****************************************************************************** + * @file stm32f1xx_ll_dma.h + * @author MCD Application Team + * @brief Header file of DMA LL module. + ****************************************************************************** + * @attention + * + *

© Copyright (c) 2016 STMicroelectronics. + * All rights reserved.

+ * + * This software component is licensed by ST under BSD 3-Clause license, + * the "License"; You may not use this file except in compliance with the + * License. You may obtain a copy of the License at: + * opensource.org/licenses/BSD-3-Clause + * + ****************************************************************************** + */ + +/* Define to prevent recursive inclusion -------------------------------------*/ +#ifndef __STM32F1xx_LL_DMA_H +#define __STM32F1xx_LL_DMA_H + +#ifdef __cplusplus +extern "C" { +#endif + +/* Includes ------------------------------------------------------------------*/ +#include "stm32f1xx.h" + +/** @addtogroup STM32F1xx_LL_Driver + * @{ + */ + +#if defined (DMA1) || defined (DMA2) + +/** @defgroup DMA_LL DMA + * @{ + */ + +/* Private types -------------------------------------------------------------*/ +/* Private variables ---------------------------------------------------------*/ +/** @defgroup DMA_LL_Private_Variables DMA Private Variables + * @{ + */ +/* Array used to get the DMA channel register offset versus channel index LL_DMA_CHANNEL_x */ +static const uint8_t CHANNEL_OFFSET_TAB[] = +{ + (uint8_t)(DMA1_Channel1_BASE - DMA1_BASE), + (uint8_t)(DMA1_Channel2_BASE - DMA1_BASE), + (uint8_t)(DMA1_Channel3_BASE - DMA1_BASE), + (uint8_t)(DMA1_Channel4_BASE - DMA1_BASE), + (uint8_t)(DMA1_Channel5_BASE - DMA1_BASE), + (uint8_t)(DMA1_Channel6_BASE - DMA1_BASE), + (uint8_t)(DMA1_Channel7_BASE - DMA1_BASE) +}; +/** + * @} + */ +/* Private constants ---------------------------------------------------------*/ +/* Private macros ------------------------------------------------------------*/ +#if defined(USE_FULL_LL_DRIVER) +/** @defgroup DMA_LL_Private_Macros DMA Private Macros + * @{ + */ +/** + * @} + */ +#endif /*USE_FULL_LL_DRIVER*/ + +/* Exported types ------------------------------------------------------------*/ +#if defined(USE_FULL_LL_DRIVER) +/** @defgroup DMA_LL_ES_INIT DMA Exported Init structure + * @{ + */ +typedef struct +{ + uint32_t PeriphOrM2MSrcAddress; /*!< Specifies the peripheral base address for DMA transfer + or as Source base address in case of memory to memory transfer direction. + + This parameter must be a value between Min_Data = 0 and Max_Data = 0xFFFFFFFF. */ + + uint32_t MemoryOrM2MDstAddress; /*!< Specifies the memory base address for DMA transfer + or as Destination base address in case of memory to memory transfer direction. + + This parameter must be a value between Min_Data = 0 and Max_Data = 0xFFFFFFFF. */ + + uint32_t Direction; /*!< Specifies if the data will be transferred from memory to peripheral, + from memory to memory or from peripheral to memory. + This parameter can be a value of @ref DMA_LL_EC_DIRECTION + + This feature can be modified afterwards using unitary function @ref LL_DMA_SetDataTransferDirection(). */ + + uint32_t Mode; /*!< Specifies the normal or circular operation mode. + This parameter can be a value of @ref DMA_LL_EC_MODE + @note: The circular buffer mode cannot be used if the memory to memory + data transfer direction is configured on the selected Channel + + This feature can be modified afterwards using unitary function @ref LL_DMA_SetMode(). */ + + uint32_t PeriphOrM2MSrcIncMode; /*!< Specifies whether the Peripheral address or Source address in case of memory to memory transfer direction + is incremented or not. + This parameter can be a value of @ref DMA_LL_EC_PERIPH + + This feature can be modified afterwards using unitary function @ref LL_DMA_SetPeriphIncMode(). */ + + uint32_t MemoryOrM2MDstIncMode; /*!< Specifies whether the Memory address or Destination address in case of memory to memory transfer direction + is incremented or not. + This parameter can be a value of @ref DMA_LL_EC_MEMORY + + This feature can be modified afterwards using unitary function @ref LL_DMA_SetMemoryIncMode(). */ + + uint32_t PeriphOrM2MSrcDataSize; /*!< Specifies the Peripheral data size alignment or Source data size alignment (byte, half word, word) + in case of memory to memory transfer direction. + This parameter can be a value of @ref DMA_LL_EC_PDATAALIGN + + This feature can be modified afterwards using unitary function @ref LL_DMA_SetPeriphSize(). */ + + uint32_t MemoryOrM2MDstDataSize; /*!< Specifies the Memory data size alignment or Destination data size alignment (byte, half word, word) + in case of memory to memory transfer direction. + This parameter can be a value of @ref DMA_LL_EC_MDATAALIGN + + This feature can be modified afterwards using unitary function @ref LL_DMA_SetMemorySize(). */ + + uint32_t NbData; /*!< Specifies the number of data to transfer, in data unit. + The data unit is equal to the source buffer configuration set in PeripheralSize + or MemorySize parameters depending in the transfer direction. + This parameter must be a value between Min_Data = 0 and Max_Data = 0x0000FFFF + + This feature can be modified afterwards using unitary function @ref LL_DMA_SetDataLength(). */ + + uint32_t Priority; /*!< Specifies the channel priority level. + This parameter can be a value of @ref DMA_LL_EC_PRIORITY + + This feature can be modified afterwards using unitary function @ref LL_DMA_SetChannelPriorityLevel(). */ + +} LL_DMA_InitTypeDef; +/** + * @} + */ +#endif /*USE_FULL_LL_DRIVER*/ + +/* Exported constants --------------------------------------------------------*/ +/** @defgroup DMA_LL_Exported_Constants DMA Exported Constants + * @{ + */ +/** @defgroup DMA_LL_EC_CLEAR_FLAG Clear Flags Defines + * @brief Flags defines which can be used with LL_DMA_WriteReg function + * @{ + */ +#define LL_DMA_IFCR_CGIF1 DMA_IFCR_CGIF1 /*!< Channel 1 global flag */ +#define LL_DMA_IFCR_CTCIF1 DMA_IFCR_CTCIF1 /*!< Channel 1 transfer complete flag */ +#define LL_DMA_IFCR_CHTIF1 DMA_IFCR_CHTIF1 /*!< Channel 1 half transfer flag */ +#define LL_DMA_IFCR_CTEIF1 DMA_IFCR_CTEIF1 /*!< Channel 1 transfer error flag */ +#define LL_DMA_IFCR_CGIF2 DMA_IFCR_CGIF2 /*!< Channel 2 global flag */ +#define LL_DMA_IFCR_CTCIF2 DMA_IFCR_CTCIF2 /*!< Channel 2 transfer complete flag */ +#define LL_DMA_IFCR_CHTIF2 DMA_IFCR_CHTIF2 /*!< Channel 2 half transfer flag */ +#define LL_DMA_IFCR_CTEIF2 DMA_IFCR_CTEIF2 /*!< Channel 2 transfer error flag */ +#define LL_DMA_IFCR_CGIF3 DMA_IFCR_CGIF3 /*!< Channel 3 global flag */ +#define LL_DMA_IFCR_CTCIF3 DMA_IFCR_CTCIF3 /*!< Channel 3 transfer complete flag */ +#define LL_DMA_IFCR_CHTIF3 DMA_IFCR_CHTIF3 /*!< Channel 3 half transfer flag */ +#define LL_DMA_IFCR_CTEIF3 DMA_IFCR_CTEIF3 /*!< Channel 3 transfer error flag */ +#define LL_DMA_IFCR_CGIF4 DMA_IFCR_CGIF4 /*!< Channel 4 global flag */ +#define LL_DMA_IFCR_CTCIF4 DMA_IFCR_CTCIF4 /*!< Channel 4 transfer complete flag */ +#define LL_DMA_IFCR_CHTIF4 DMA_IFCR_CHTIF4 /*!< Channel 4 half transfer flag */ +#define LL_DMA_IFCR_CTEIF4 DMA_IFCR_CTEIF4 /*!< Channel 4 transfer error flag */ +#define LL_DMA_IFCR_CGIF5 DMA_IFCR_CGIF5 /*!< Channel 5 global flag */ +#define LL_DMA_IFCR_CTCIF5 DMA_IFCR_CTCIF5 /*!< Channel 5 transfer complete flag */ +#define LL_DMA_IFCR_CHTIF5 DMA_IFCR_CHTIF5 /*!< Channel 5 half transfer flag */ +#define LL_DMA_IFCR_CTEIF5 DMA_IFCR_CTEIF5 /*!< Channel 5 transfer error flag */ +#define LL_DMA_IFCR_CGIF6 DMA_IFCR_CGIF6 /*!< Channel 6 global flag */ +#define LL_DMA_IFCR_CTCIF6 DMA_IFCR_CTCIF6 /*!< Channel 6 transfer complete flag */ +#define LL_DMA_IFCR_CHTIF6 DMA_IFCR_CHTIF6 /*!< Channel 6 half transfer flag */ +#define LL_DMA_IFCR_CTEIF6 DMA_IFCR_CTEIF6 /*!< Channel 6 transfer error flag */ +#define LL_DMA_IFCR_CGIF7 DMA_IFCR_CGIF7 /*!< Channel 7 global flag */ +#define LL_DMA_IFCR_CTCIF7 DMA_IFCR_CTCIF7 /*!< Channel 7 transfer complete flag */ +#define LL_DMA_IFCR_CHTIF7 DMA_IFCR_CHTIF7 /*!< Channel 7 half transfer flag */ +#define LL_DMA_IFCR_CTEIF7 DMA_IFCR_CTEIF7 /*!< Channel 7 transfer error flag */ +/** + * @} + */ + +/** @defgroup DMA_LL_EC_GET_FLAG Get Flags Defines + * @brief Flags defines which can be used with LL_DMA_ReadReg function + * @{ + */ +#define LL_DMA_ISR_GIF1 DMA_ISR_GIF1 /*!< Channel 1 global flag */ +#define LL_DMA_ISR_TCIF1 DMA_ISR_TCIF1 /*!< Channel 1 transfer complete flag */ +#define LL_DMA_ISR_HTIF1 DMA_ISR_HTIF1 /*!< Channel 1 half transfer flag */ +#define LL_DMA_ISR_TEIF1 DMA_ISR_TEIF1 /*!< Channel 1 transfer error flag */ +#define LL_DMA_ISR_GIF2 DMA_ISR_GIF2 /*!< Channel 2 global flag */ +#define LL_DMA_ISR_TCIF2 DMA_ISR_TCIF2 /*!< Channel 2 transfer complete flag */ +#define LL_DMA_ISR_HTIF2 DMA_ISR_HTIF2 /*!< Channel 2 half transfer flag */ +#define LL_DMA_ISR_TEIF2 DMA_ISR_TEIF2 /*!< Channel 2 transfer error flag */ +#define LL_DMA_ISR_GIF3 DMA_ISR_GIF3 /*!< Channel 3 global flag */ +#define LL_DMA_ISR_TCIF3 DMA_ISR_TCIF3 /*!< Channel 3 transfer complete flag */ +#define LL_DMA_ISR_HTIF3 DMA_ISR_HTIF3 /*!< Channel 3 half transfer flag */ +#define LL_DMA_ISR_TEIF3 DMA_ISR_TEIF3 /*!< Channel 3 transfer error flag */ +#define LL_DMA_ISR_GIF4 DMA_ISR_GIF4 /*!< Channel 4 global flag */ +#define LL_DMA_ISR_TCIF4 DMA_ISR_TCIF4 /*!< Channel 4 transfer complete flag */ +#define LL_DMA_ISR_HTIF4 DMA_ISR_HTIF4 /*!< Channel 4 half transfer flag */ +#define LL_DMA_ISR_TEIF4 DMA_ISR_TEIF4 /*!< Channel 4 transfer error flag */ +#define LL_DMA_ISR_GIF5 DMA_ISR_GIF5 /*!< Channel 5 global flag */ +#define LL_DMA_ISR_TCIF5 DMA_ISR_TCIF5 /*!< Channel 5 transfer complete flag */ +#define LL_DMA_ISR_HTIF5 DMA_ISR_HTIF5 /*!< Channel 5 half transfer flag */ +#define LL_DMA_ISR_TEIF5 DMA_ISR_TEIF5 /*!< Channel 5 transfer error flag */ +#define LL_DMA_ISR_GIF6 DMA_ISR_GIF6 /*!< Channel 6 global flag */ +#define LL_DMA_ISR_TCIF6 DMA_ISR_TCIF6 /*!< Channel 6 transfer complete flag */ +#define LL_DMA_ISR_HTIF6 DMA_ISR_HTIF6 /*!< Channel 6 half transfer flag */ +#define LL_DMA_ISR_TEIF6 DMA_ISR_TEIF6 /*!< Channel 6 transfer error flag */ +#define LL_DMA_ISR_GIF7 DMA_ISR_GIF7 /*!< Channel 7 global flag */ +#define LL_DMA_ISR_TCIF7 DMA_ISR_TCIF7 /*!< Channel 7 transfer complete flag */ +#define LL_DMA_ISR_HTIF7 DMA_ISR_HTIF7 /*!< Channel 7 half transfer flag */ +#define LL_DMA_ISR_TEIF7 DMA_ISR_TEIF7 /*!< Channel 7 transfer error flag */ +/** + * @} + */ + +/** @defgroup DMA_LL_EC_IT IT Defines + * @brief IT defines which can be used with LL_DMA_ReadReg and LL_DMA_WriteReg functions + * @{ + */ +#define LL_DMA_CCR_TCIE DMA_CCR_TCIE /*!< Transfer complete interrupt */ +#define LL_DMA_CCR_HTIE DMA_CCR_HTIE /*!< Half Transfer interrupt */ +#define LL_DMA_CCR_TEIE DMA_CCR_TEIE /*!< Transfer error interrupt */ +/** + * @} + */ + +/** @defgroup DMA_LL_EC_CHANNEL CHANNEL + * @{ + */ +#define LL_DMA_CHANNEL_1 0x00000001U /*!< DMA Channel 1 */ +#define LL_DMA_CHANNEL_2 0x00000002U /*!< DMA Channel 2 */ +#define LL_DMA_CHANNEL_3 0x00000003U /*!< DMA Channel 3 */ +#define LL_DMA_CHANNEL_4 0x00000004U /*!< DMA Channel 4 */ +#define LL_DMA_CHANNEL_5 0x00000005U /*!< DMA Channel 5 */ +#define LL_DMA_CHANNEL_6 0x00000006U /*!< DMA Channel 6 */ +#define LL_DMA_CHANNEL_7 0x00000007U /*!< DMA Channel 7 */ +#if defined(USE_FULL_LL_DRIVER) +#define LL_DMA_CHANNEL_ALL 0xFFFF0000U /*!< DMA Channel all (used only for function @ref LL_DMA_DeInit(). */ +#endif /*USE_FULL_LL_DRIVER*/ +/** + * @} + */ + +/** @defgroup DMA_LL_EC_DIRECTION Transfer Direction + * @{ + */ +#define LL_DMA_DIRECTION_PERIPH_TO_MEMORY 0x00000000U /*!< Peripheral to memory direction */ +#define LL_DMA_DIRECTION_MEMORY_TO_PERIPH DMA_CCR_DIR /*!< Memory to peripheral direction */ +#define LL_DMA_DIRECTION_MEMORY_TO_MEMORY DMA_CCR_MEM2MEM /*!< Memory to memory direction */ +/** + * @} + */ + +/** @defgroup DMA_LL_EC_MODE Transfer mode + * @{ + */ +#define LL_DMA_MODE_NORMAL 0x00000000U /*!< Normal Mode */ +#define LL_DMA_MODE_CIRCULAR DMA_CCR_CIRC /*!< Circular Mode */ +/** + * @} + */ + +/** @defgroup DMA_LL_EC_PERIPH Peripheral increment mode + * @{ + */ +#define LL_DMA_PERIPH_INCREMENT DMA_CCR_PINC /*!< Peripheral increment mode Enable */ +#define LL_DMA_PERIPH_NOINCREMENT 0x00000000U /*!< Peripheral increment mode Disable */ +/** + * @} + */ + +/** @defgroup DMA_LL_EC_MEMORY Memory increment mode + * @{ + */ +#define LL_DMA_MEMORY_INCREMENT DMA_CCR_MINC /*!< Memory increment mode Enable */ +#define LL_DMA_MEMORY_NOINCREMENT 0x00000000U /*!< Memory increment mode Disable */ +/** + * @} + */ + +/** @defgroup DMA_LL_EC_PDATAALIGN Peripheral data alignment + * @{ + */ +#define LL_DMA_PDATAALIGN_BYTE 0x00000000U /*!< Peripheral data alignment : Byte */ +#define LL_DMA_PDATAALIGN_HALFWORD DMA_CCR_PSIZE_0 /*!< Peripheral data alignment : HalfWord */ +#define LL_DMA_PDATAALIGN_WORD DMA_CCR_PSIZE_1 /*!< Peripheral data alignment : Word */ +/** + * @} + */ + +/** @defgroup DMA_LL_EC_MDATAALIGN Memory data alignment + * @{ + */ +#define LL_DMA_MDATAALIGN_BYTE 0x00000000U /*!< Memory data alignment : Byte */ +#define LL_DMA_MDATAALIGN_HALFWORD DMA_CCR_MSIZE_0 /*!< Memory data alignment : HalfWord */ +#define LL_DMA_MDATAALIGN_WORD DMA_CCR_MSIZE_1 /*!< Memory data alignment : Word */ +/** + * @} + */ + +/** @defgroup DMA_LL_EC_PRIORITY Transfer Priority level + * @{ + */ +#define LL_DMA_PRIORITY_LOW 0x00000000U /*!< Priority level : Low */ +#define LL_DMA_PRIORITY_MEDIUM DMA_CCR_PL_0 /*!< Priority level : Medium */ +#define LL_DMA_PRIORITY_HIGH DMA_CCR_PL_1 /*!< Priority level : High */ +#define LL_DMA_PRIORITY_VERYHIGH DMA_CCR_PL /*!< Priority level : Very_High */ +/** + * @} + */ + +/** + * @} + */ + +/* Exported macro ------------------------------------------------------------*/ +/** @defgroup DMA_LL_Exported_Macros DMA Exported Macros + * @{ + */ + +/** @defgroup DMA_LL_EM_WRITE_READ Common Write and read registers macros + * @{ + */ +/** + * @brief Write a value in DMA register + * @param __INSTANCE__ DMA Instance + * @param __REG__ Register to be written + * @param __VALUE__ Value to be written in the register + * @retval None + */ +#define LL_DMA_WriteReg(__INSTANCE__, __REG__, __VALUE__) WRITE_REG(__INSTANCE__->__REG__, (__VALUE__)) + +/** + * @brief Read a value in DMA register + * @param __INSTANCE__ DMA Instance + * @param __REG__ Register to be read + * @retval Register value + */ +#define LL_DMA_ReadReg(__INSTANCE__, __REG__) READ_REG(__INSTANCE__->__REG__) +/** + * @} + */ + +/** @defgroup DMA_LL_EM_CONVERT_DMAxCHANNELy Convert DMAxChannely + * @{ + */ + +/** + * @brief Convert DMAx_Channely into DMAx + * @param __CHANNEL_INSTANCE__ DMAx_Channely + * @retval DMAx + */ +#if defined(DMA2) +#define __LL_DMA_GET_INSTANCE(__CHANNEL_INSTANCE__) \ +(((uint32_t)(__CHANNEL_INSTANCE__) > ((uint32_t)DMA1_Channel7)) ? DMA2 : DMA1) +#else +#define __LL_DMA_GET_INSTANCE(__CHANNEL_INSTANCE__) (DMA1) +#endif + +/** + * @brief Convert DMAx_Channely into LL_DMA_CHANNEL_y + * @param __CHANNEL_INSTANCE__ DMAx_Channely + * @retval LL_DMA_CHANNEL_y + */ +#if defined (DMA2) +#define __LL_DMA_GET_CHANNEL(__CHANNEL_INSTANCE__) \ +(((uint32_t)(__CHANNEL_INSTANCE__) == ((uint32_t)DMA1_Channel1)) ? LL_DMA_CHANNEL_1 : \ + ((uint32_t)(__CHANNEL_INSTANCE__) == ((uint32_t)DMA2_Channel1)) ? LL_DMA_CHANNEL_1 : \ + ((uint32_t)(__CHANNEL_INSTANCE__) == ((uint32_t)DMA1_Channel2)) ? LL_DMA_CHANNEL_2 : \ + ((uint32_t)(__CHANNEL_INSTANCE__) == ((uint32_t)DMA2_Channel2)) ? LL_DMA_CHANNEL_2 : \ + ((uint32_t)(__CHANNEL_INSTANCE__) == ((uint32_t)DMA1_Channel3)) ? LL_DMA_CHANNEL_3 : \ + ((uint32_t)(__CHANNEL_INSTANCE__) == ((uint32_t)DMA2_Channel3)) ? LL_DMA_CHANNEL_3 : \ + ((uint32_t)(__CHANNEL_INSTANCE__) == ((uint32_t)DMA1_Channel4)) ? LL_DMA_CHANNEL_4 : \ + ((uint32_t)(__CHANNEL_INSTANCE__) == ((uint32_t)DMA2_Channel4)) ? LL_DMA_CHANNEL_4 : \ + ((uint32_t)(__CHANNEL_INSTANCE__) == ((uint32_t)DMA1_Channel5)) ? LL_DMA_CHANNEL_5 : \ + ((uint32_t)(__CHANNEL_INSTANCE__) == ((uint32_t)DMA2_Channel5)) ? LL_DMA_CHANNEL_5 : \ + ((uint32_t)(__CHANNEL_INSTANCE__) == ((uint32_t)DMA1_Channel6)) ? LL_DMA_CHANNEL_6 : \ + LL_DMA_CHANNEL_7) +#else +#define __LL_DMA_GET_CHANNEL(__CHANNEL_INSTANCE__) \ +(((uint32_t)(__CHANNEL_INSTANCE__) == ((uint32_t)DMA1_Channel1)) ? LL_DMA_CHANNEL_1 : \ + ((uint32_t)(__CHANNEL_INSTANCE__) == ((uint32_t)DMA1_Channel2)) ? LL_DMA_CHANNEL_2 : \ + ((uint32_t)(__CHANNEL_INSTANCE__) == ((uint32_t)DMA1_Channel3)) ? LL_DMA_CHANNEL_3 : \ + ((uint32_t)(__CHANNEL_INSTANCE__) == ((uint32_t)DMA1_Channel4)) ? LL_DMA_CHANNEL_4 : \ + ((uint32_t)(__CHANNEL_INSTANCE__) == ((uint32_t)DMA1_Channel5)) ? LL_DMA_CHANNEL_5 : \ + ((uint32_t)(__CHANNEL_INSTANCE__) == ((uint32_t)DMA1_Channel6)) ? LL_DMA_CHANNEL_6 : \ + LL_DMA_CHANNEL_7) +#endif + +/** + * @brief Convert DMA Instance DMAx and LL_DMA_CHANNEL_y into DMAx_Channely + * @param __DMA_INSTANCE__ DMAx + * @param __CHANNEL__ LL_DMA_CHANNEL_y + * @retval DMAx_Channely + */ +#if defined (DMA2) +#define __LL_DMA_GET_CHANNEL_INSTANCE(__DMA_INSTANCE__, __CHANNEL__) \ +((((uint32_t)(__DMA_INSTANCE__) == ((uint32_t)DMA1)) && ((uint32_t)(__CHANNEL__) == ((uint32_t)LL_DMA_CHANNEL_1))) ? DMA1_Channel1 : \ + (((uint32_t)(__DMA_INSTANCE__) == ((uint32_t)DMA2)) && ((uint32_t)(__CHANNEL__) == ((uint32_t)LL_DMA_CHANNEL_1))) ? DMA2_Channel1 : \ + (((uint32_t)(__DMA_INSTANCE__) == ((uint32_t)DMA1)) && ((uint32_t)(__CHANNEL__) == ((uint32_t)LL_DMA_CHANNEL_2))) ? DMA1_Channel2 : \ + (((uint32_t)(__DMA_INSTANCE__) == ((uint32_t)DMA2)) && ((uint32_t)(__CHANNEL__) == ((uint32_t)LL_DMA_CHANNEL_2))) ? DMA2_Channel2 : \ + (((uint32_t)(__DMA_INSTANCE__) == ((uint32_t)DMA1)) && ((uint32_t)(__CHANNEL__) == ((uint32_t)LL_DMA_CHANNEL_3))) ? DMA1_Channel3 : \ + (((uint32_t)(__DMA_INSTANCE__) == ((uint32_t)DMA2)) && ((uint32_t)(__CHANNEL__) == ((uint32_t)LL_DMA_CHANNEL_3))) ? DMA2_Channel3 : \ + (((uint32_t)(__DMA_INSTANCE__) == ((uint32_t)DMA1)) && ((uint32_t)(__CHANNEL__) == ((uint32_t)LL_DMA_CHANNEL_4))) ? DMA1_Channel4 : \ + (((uint32_t)(__DMA_INSTANCE__) == ((uint32_t)DMA2)) && ((uint32_t)(__CHANNEL__) == ((uint32_t)LL_DMA_CHANNEL_4))) ? DMA2_Channel4 : \ + (((uint32_t)(__DMA_INSTANCE__) == ((uint32_t)DMA1)) && ((uint32_t)(__CHANNEL__) == ((uint32_t)LL_DMA_CHANNEL_5))) ? DMA1_Channel5 : \ + (((uint32_t)(__DMA_INSTANCE__) == ((uint32_t)DMA2)) && ((uint32_t)(__CHANNEL__) == ((uint32_t)LL_DMA_CHANNEL_5))) ? DMA2_Channel5 : \ + (((uint32_t)(__DMA_INSTANCE__) == ((uint32_t)DMA1)) && ((uint32_t)(__CHANNEL__) == ((uint32_t)LL_DMA_CHANNEL_6))) ? DMA1_Channel6 : \ + DMA1_Channel7) +#else +#define __LL_DMA_GET_CHANNEL_INSTANCE(__DMA_INSTANCE__, __CHANNEL__) \ +((((uint32_t)(__DMA_INSTANCE__) == ((uint32_t)DMA1)) && ((uint32_t)(__CHANNEL__) == ((uint32_t)LL_DMA_CHANNEL_1))) ? DMA1_Channel1 : \ + (((uint32_t)(__DMA_INSTANCE__) == ((uint32_t)DMA1)) && ((uint32_t)(__CHANNEL__) == ((uint32_t)LL_DMA_CHANNEL_2))) ? DMA1_Channel2 : \ + (((uint32_t)(__DMA_INSTANCE__) == ((uint32_t)DMA1)) && ((uint32_t)(__CHANNEL__) == ((uint32_t)LL_DMA_CHANNEL_3))) ? DMA1_Channel3 : \ + (((uint32_t)(__DMA_INSTANCE__) == ((uint32_t)DMA1)) && ((uint32_t)(__CHANNEL__) == ((uint32_t)LL_DMA_CHANNEL_4))) ? DMA1_Channel4 : \ + (((uint32_t)(__DMA_INSTANCE__) == ((uint32_t)DMA1)) && ((uint32_t)(__CHANNEL__) == ((uint32_t)LL_DMA_CHANNEL_5))) ? DMA1_Channel5 : \ + (((uint32_t)(__DMA_INSTANCE__) == ((uint32_t)DMA1)) && ((uint32_t)(__CHANNEL__) == ((uint32_t)LL_DMA_CHANNEL_6))) ? DMA1_Channel6 : \ + DMA1_Channel7) +#endif + +/** + * @} + */ + +/** + * @} + */ + +/* Exported functions --------------------------------------------------------*/ +/** @defgroup DMA_LL_Exported_Functions DMA Exported Functions + * @{ + */ + +/** @defgroup DMA_LL_EF_Configuration Configuration + * @{ + */ +/** + * @brief Enable DMA channel. + * @rmtoll CCR EN LL_DMA_EnableChannel + * @param DMAx DMAx Instance + * @param Channel This parameter can be one of the following values: + * @arg @ref LL_DMA_CHANNEL_1 + * @arg @ref LL_DMA_CHANNEL_2 + * @arg @ref LL_DMA_CHANNEL_3 + * @arg @ref LL_DMA_CHANNEL_4 + * @arg @ref LL_DMA_CHANNEL_5 + * @arg @ref LL_DMA_CHANNEL_6 + * @arg @ref LL_DMA_CHANNEL_7 + * @retval None + */ +__STATIC_INLINE void LL_DMA_EnableChannel(DMA_TypeDef *DMAx, uint32_t Channel) +{ + SET_BIT(((DMA_Channel_TypeDef *)((uint32_t)((uint32_t)DMAx + CHANNEL_OFFSET_TAB[Channel - 1U])))->CCR, DMA_CCR_EN); +} + +/** + * @brief Disable DMA channel. + * @rmtoll CCR EN LL_DMA_DisableChannel + * @param DMAx DMAx Instance + * @param Channel This parameter can be one of the following values: + * @arg @ref LL_DMA_CHANNEL_1 + * @arg @ref LL_DMA_CHANNEL_2 + * @arg @ref LL_DMA_CHANNEL_3 + * @arg @ref LL_DMA_CHANNEL_4 + * @arg @ref LL_DMA_CHANNEL_5 + * @arg @ref LL_DMA_CHANNEL_6 + * @arg @ref LL_DMA_CHANNEL_7 + * @retval None + */ +__STATIC_INLINE void LL_DMA_DisableChannel(DMA_TypeDef *DMAx, uint32_t Channel) +{ + CLEAR_BIT(((DMA_Channel_TypeDef *)((uint32_t)((uint32_t)DMAx + CHANNEL_OFFSET_TAB[Channel - 1U])))->CCR, DMA_CCR_EN); +} + +/** + * @brief Check if DMA channel is enabled or disabled. + * @rmtoll CCR EN LL_DMA_IsEnabledChannel + * @param DMAx DMAx Instance + * @param Channel This parameter can be one of the following values: + * @arg @ref LL_DMA_CHANNEL_1 + * @arg @ref LL_DMA_CHANNEL_2 + * @arg @ref LL_DMA_CHANNEL_3 + * @arg @ref LL_DMA_CHANNEL_4 + * @arg @ref LL_DMA_CHANNEL_5 + * @arg @ref LL_DMA_CHANNEL_6 + * @arg @ref LL_DMA_CHANNEL_7 + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_DMA_IsEnabledChannel(DMA_TypeDef *DMAx, uint32_t Channel) +{ + return (READ_BIT(((DMA_Channel_TypeDef *)((uint32_t)((uint32_t)DMAx + CHANNEL_OFFSET_TAB[Channel - 1U])))->CCR, + DMA_CCR_EN) == (DMA_CCR_EN)); +} + +/** + * @brief Configure all parameters link to DMA transfer. + * @rmtoll CCR DIR LL_DMA_ConfigTransfer\n + * CCR MEM2MEM LL_DMA_ConfigTransfer\n + * CCR CIRC LL_DMA_ConfigTransfer\n + * CCR PINC LL_DMA_ConfigTransfer\n + * CCR MINC LL_DMA_ConfigTransfer\n + * CCR PSIZE LL_DMA_ConfigTransfer\n + * CCR MSIZE LL_DMA_ConfigTransfer\n + * CCR PL LL_DMA_ConfigTransfer + * @param DMAx DMAx Instance + * @param Channel This parameter can be one of the following values: + * @arg @ref LL_DMA_CHANNEL_1 + * @arg @ref LL_DMA_CHANNEL_2 + * @arg @ref LL_DMA_CHANNEL_3 + * @arg @ref LL_DMA_CHANNEL_4 + * @arg @ref LL_DMA_CHANNEL_5 + * @arg @ref LL_DMA_CHANNEL_6 + * @arg @ref LL_DMA_CHANNEL_7 + * @param Configuration This parameter must be a combination of all the following values: + * @arg @ref LL_DMA_DIRECTION_PERIPH_TO_MEMORY or @ref LL_DMA_DIRECTION_MEMORY_TO_PERIPH or @ref LL_DMA_DIRECTION_MEMORY_TO_MEMORY + * @arg @ref LL_DMA_MODE_NORMAL or @ref LL_DMA_MODE_CIRCULAR + * @arg @ref LL_DMA_PERIPH_INCREMENT or @ref LL_DMA_PERIPH_NOINCREMENT + * @arg @ref LL_DMA_MEMORY_INCREMENT or @ref LL_DMA_MEMORY_NOINCREMENT + * @arg @ref LL_DMA_PDATAALIGN_BYTE or @ref LL_DMA_PDATAALIGN_HALFWORD or @ref LL_DMA_PDATAALIGN_WORD + * @arg @ref LL_DMA_MDATAALIGN_BYTE or @ref LL_DMA_MDATAALIGN_HALFWORD or @ref LL_DMA_MDATAALIGN_WORD + * @arg @ref LL_DMA_PRIORITY_LOW or @ref LL_DMA_PRIORITY_MEDIUM or @ref LL_DMA_PRIORITY_HIGH or @ref LL_DMA_PRIORITY_VERYHIGH + * @retval None + */ +__STATIC_INLINE void LL_DMA_ConfigTransfer(DMA_TypeDef *DMAx, uint32_t Channel, uint32_t Configuration) +{ + MODIFY_REG(((DMA_Channel_TypeDef *)((uint32_t)((uint32_t)DMAx + CHANNEL_OFFSET_TAB[Channel - 1U])))->CCR, + DMA_CCR_DIR | DMA_CCR_MEM2MEM | DMA_CCR_CIRC | DMA_CCR_PINC | DMA_CCR_MINC | DMA_CCR_PSIZE | DMA_CCR_MSIZE | DMA_CCR_PL, + Configuration); +} + +/** + * @brief Set Data transfer direction (read from peripheral or from memory). + * @rmtoll CCR DIR LL_DMA_SetDataTransferDirection\n + * CCR MEM2MEM LL_DMA_SetDataTransferDirection + * @param DMAx DMAx Instance + * @param Channel This parameter can be one of the following values: + * @arg @ref LL_DMA_CHANNEL_1 + * @arg @ref LL_DMA_CHANNEL_2 + * @arg @ref LL_DMA_CHANNEL_3 + * @arg @ref LL_DMA_CHANNEL_4 + * @arg @ref LL_DMA_CHANNEL_5 + * @arg @ref LL_DMA_CHANNEL_6 + * @arg @ref LL_DMA_CHANNEL_7 + * @param Direction This parameter can be one of the following values: + * @arg @ref LL_DMA_DIRECTION_PERIPH_TO_MEMORY + * @arg @ref LL_DMA_DIRECTION_MEMORY_TO_PERIPH + * @arg @ref LL_DMA_DIRECTION_MEMORY_TO_MEMORY + * @retval None + */ +__STATIC_INLINE void LL_DMA_SetDataTransferDirection(DMA_TypeDef *DMAx, uint32_t Channel, uint32_t Direction) +{ + MODIFY_REG(((DMA_Channel_TypeDef *)((uint32_t)((uint32_t)DMAx + CHANNEL_OFFSET_TAB[Channel - 1U])))->CCR, + DMA_CCR_DIR | DMA_CCR_MEM2MEM, Direction); +} + +/** + * @brief Get Data transfer direction (read from peripheral or from memory). + * @rmtoll CCR DIR LL_DMA_GetDataTransferDirection\n + * CCR MEM2MEM LL_DMA_GetDataTransferDirection + * @param DMAx DMAx Instance + * @param Channel This parameter can be one of the following values: + * @arg @ref LL_DMA_CHANNEL_1 + * @arg @ref LL_DMA_CHANNEL_2 + * @arg @ref LL_DMA_CHANNEL_3 + * @arg @ref LL_DMA_CHANNEL_4 + * @arg @ref LL_DMA_CHANNEL_5 + * @arg @ref LL_DMA_CHANNEL_6 + * @arg @ref LL_DMA_CHANNEL_7 + * @retval Returned value can be one of the following values: + * @arg @ref LL_DMA_DIRECTION_PERIPH_TO_MEMORY + * @arg @ref LL_DMA_DIRECTION_MEMORY_TO_PERIPH + * @arg @ref LL_DMA_DIRECTION_MEMORY_TO_MEMORY + */ +__STATIC_INLINE uint32_t LL_DMA_GetDataTransferDirection(DMA_TypeDef *DMAx, uint32_t Channel) +{ + return (READ_BIT(((DMA_Channel_TypeDef *)((uint32_t)((uint32_t)DMAx + CHANNEL_OFFSET_TAB[Channel - 1U])))->CCR, + DMA_CCR_DIR | DMA_CCR_MEM2MEM)); +} + +/** + * @brief Set DMA mode circular or normal. + * @note The circular buffer mode cannot be used if the memory-to-memory + * data transfer is configured on the selected Channel. + * @rmtoll CCR CIRC LL_DMA_SetMode + * @param DMAx DMAx Instance + * @param Channel This parameter can be one of the following values: + * @arg @ref LL_DMA_CHANNEL_1 + * @arg @ref LL_DMA_CHANNEL_2 + * @arg @ref LL_DMA_CHANNEL_3 + * @arg @ref LL_DMA_CHANNEL_4 + * @arg @ref LL_DMA_CHANNEL_5 + * @arg @ref LL_DMA_CHANNEL_6 + * @arg @ref LL_DMA_CHANNEL_7 + * @param Mode This parameter can be one of the following values: + * @arg @ref LL_DMA_MODE_NORMAL + * @arg @ref LL_DMA_MODE_CIRCULAR + * @retval None + */ +__STATIC_INLINE void LL_DMA_SetMode(DMA_TypeDef *DMAx, uint32_t Channel, uint32_t Mode) +{ + MODIFY_REG(((DMA_Channel_TypeDef *)((uint32_t)((uint32_t)DMAx + CHANNEL_OFFSET_TAB[Channel - 1U])))->CCR, DMA_CCR_CIRC, + Mode); +} + +/** + * @brief Get DMA mode circular or normal. + * @rmtoll CCR CIRC LL_DMA_GetMode + * @param DMAx DMAx Instance + * @param Channel This parameter can be one of the following values: + * @arg @ref LL_DMA_CHANNEL_1 + * @arg @ref LL_DMA_CHANNEL_2 + * @arg @ref LL_DMA_CHANNEL_3 + * @arg @ref LL_DMA_CHANNEL_4 + * @arg @ref LL_DMA_CHANNEL_5 + * @arg @ref LL_DMA_CHANNEL_6 + * @arg @ref LL_DMA_CHANNEL_7 + * @retval Returned value can be one of the following values: + * @arg @ref LL_DMA_MODE_NORMAL + * @arg @ref LL_DMA_MODE_CIRCULAR + */ +__STATIC_INLINE uint32_t LL_DMA_GetMode(DMA_TypeDef *DMAx, uint32_t Channel) +{ + return (READ_BIT(((DMA_Channel_TypeDef *)((uint32_t)((uint32_t)DMAx + CHANNEL_OFFSET_TAB[Channel - 1U])))->CCR, + DMA_CCR_CIRC)); +} + +/** + * @brief Set Peripheral increment mode. + * @rmtoll CCR PINC LL_DMA_SetPeriphIncMode + * @param DMAx DMAx Instance + * @param Channel This parameter can be one of the following values: + * @arg @ref LL_DMA_CHANNEL_1 + * @arg @ref LL_DMA_CHANNEL_2 + * @arg @ref LL_DMA_CHANNEL_3 + * @arg @ref LL_DMA_CHANNEL_4 + * @arg @ref LL_DMA_CHANNEL_5 + * @arg @ref LL_DMA_CHANNEL_6 + * @arg @ref LL_DMA_CHANNEL_7 + * @param PeriphOrM2MSrcIncMode This parameter can be one of the following values: + * @arg @ref LL_DMA_PERIPH_INCREMENT + * @arg @ref LL_DMA_PERIPH_NOINCREMENT + * @retval None + */ +__STATIC_INLINE void LL_DMA_SetPeriphIncMode(DMA_TypeDef *DMAx, uint32_t Channel, uint32_t PeriphOrM2MSrcIncMode) +{ + MODIFY_REG(((DMA_Channel_TypeDef *)((uint32_t)((uint32_t)DMAx + CHANNEL_OFFSET_TAB[Channel - 1U])))->CCR, DMA_CCR_PINC, + PeriphOrM2MSrcIncMode); +} + +/** + * @brief Get Peripheral increment mode. + * @rmtoll CCR PINC LL_DMA_GetPeriphIncMode + * @param DMAx DMAx Instance + * @param Channel This parameter can be one of the following values: + * @arg @ref LL_DMA_CHANNEL_1 + * @arg @ref LL_DMA_CHANNEL_2 + * @arg @ref LL_DMA_CHANNEL_3 + * @arg @ref LL_DMA_CHANNEL_4 + * @arg @ref LL_DMA_CHANNEL_5 + * @arg @ref LL_DMA_CHANNEL_6 + * @arg @ref LL_DMA_CHANNEL_7 + * @retval Returned value can be one of the following values: + * @arg @ref LL_DMA_PERIPH_INCREMENT + * @arg @ref LL_DMA_PERIPH_NOINCREMENT + */ +__STATIC_INLINE uint32_t LL_DMA_GetPeriphIncMode(DMA_TypeDef *DMAx, uint32_t Channel) +{ + return (READ_BIT(((DMA_Channel_TypeDef *)((uint32_t)((uint32_t)DMAx + CHANNEL_OFFSET_TAB[Channel - 1U])))->CCR, + DMA_CCR_PINC)); +} + +/** + * @brief Set Memory increment mode. + * @rmtoll CCR MINC LL_DMA_SetMemoryIncMode + * @param DMAx DMAx Instance + * @param Channel This parameter can be one of the following values: + * @arg @ref LL_DMA_CHANNEL_1 + * @arg @ref LL_DMA_CHANNEL_2 + * @arg @ref LL_DMA_CHANNEL_3 + * @arg @ref LL_DMA_CHANNEL_4 + * @arg @ref LL_DMA_CHANNEL_5 + * @arg @ref LL_DMA_CHANNEL_6 + * @arg @ref LL_DMA_CHANNEL_7 + * @param MemoryOrM2MDstIncMode This parameter can be one of the following values: + * @arg @ref LL_DMA_MEMORY_INCREMENT + * @arg @ref LL_DMA_MEMORY_NOINCREMENT + * @retval None + */ +__STATIC_INLINE void LL_DMA_SetMemoryIncMode(DMA_TypeDef *DMAx, uint32_t Channel, uint32_t MemoryOrM2MDstIncMode) +{ + MODIFY_REG(((DMA_Channel_TypeDef *)((uint32_t)((uint32_t)DMAx + CHANNEL_OFFSET_TAB[Channel - 1U])))->CCR, DMA_CCR_MINC, + MemoryOrM2MDstIncMode); +} + +/** + * @brief Get Memory increment mode. + * @rmtoll CCR MINC LL_DMA_GetMemoryIncMode + * @param DMAx DMAx Instance + * @param Channel This parameter can be one of the following values: + * @arg @ref LL_DMA_CHANNEL_1 + * @arg @ref LL_DMA_CHANNEL_2 + * @arg @ref LL_DMA_CHANNEL_3 + * @arg @ref LL_DMA_CHANNEL_4 + * @arg @ref LL_DMA_CHANNEL_5 + * @arg @ref LL_DMA_CHANNEL_6 + * @arg @ref LL_DMA_CHANNEL_7 + * @retval Returned value can be one of the following values: + * @arg @ref LL_DMA_MEMORY_INCREMENT + * @arg @ref LL_DMA_MEMORY_NOINCREMENT + */ +__STATIC_INLINE uint32_t LL_DMA_GetMemoryIncMode(DMA_TypeDef *DMAx, uint32_t Channel) +{ + return (READ_BIT(((DMA_Channel_TypeDef *)((uint32_t)((uint32_t)DMAx + CHANNEL_OFFSET_TAB[Channel - 1U])))->CCR, + DMA_CCR_MINC)); +} + +/** + * @brief Set Peripheral size. + * @rmtoll CCR PSIZE LL_DMA_SetPeriphSize + * @param DMAx DMAx Instance + * @param Channel This parameter can be one of the following values: + * @arg @ref LL_DMA_CHANNEL_1 + * @arg @ref LL_DMA_CHANNEL_2 + * @arg @ref LL_DMA_CHANNEL_3 + * @arg @ref LL_DMA_CHANNEL_4 + * @arg @ref LL_DMA_CHANNEL_5 + * @arg @ref LL_DMA_CHANNEL_6 + * @arg @ref LL_DMA_CHANNEL_7 + * @param PeriphOrM2MSrcDataSize This parameter can be one of the following values: + * @arg @ref LL_DMA_PDATAALIGN_BYTE + * @arg @ref LL_DMA_PDATAALIGN_HALFWORD + * @arg @ref LL_DMA_PDATAALIGN_WORD + * @retval None + */ +__STATIC_INLINE void LL_DMA_SetPeriphSize(DMA_TypeDef *DMAx, uint32_t Channel, uint32_t PeriphOrM2MSrcDataSize) +{ + MODIFY_REG(((DMA_Channel_TypeDef *)((uint32_t)((uint32_t)DMAx + CHANNEL_OFFSET_TAB[Channel - 1U])))->CCR, DMA_CCR_PSIZE, + PeriphOrM2MSrcDataSize); +} + +/** + * @brief Get Peripheral size. + * @rmtoll CCR PSIZE LL_DMA_GetPeriphSize + * @param DMAx DMAx Instance + * @param Channel This parameter can be one of the following values: + * @arg @ref LL_DMA_CHANNEL_1 + * @arg @ref LL_DMA_CHANNEL_2 + * @arg @ref LL_DMA_CHANNEL_3 + * @arg @ref LL_DMA_CHANNEL_4 + * @arg @ref LL_DMA_CHANNEL_5 + * @arg @ref LL_DMA_CHANNEL_6 + * @arg @ref LL_DMA_CHANNEL_7 + * @retval Returned value can be one of the following values: + * @arg @ref LL_DMA_PDATAALIGN_BYTE + * @arg @ref LL_DMA_PDATAALIGN_HALFWORD + * @arg @ref LL_DMA_PDATAALIGN_WORD + */ +__STATIC_INLINE uint32_t LL_DMA_GetPeriphSize(DMA_TypeDef *DMAx, uint32_t Channel) +{ + return (READ_BIT(((DMA_Channel_TypeDef *)((uint32_t)((uint32_t)DMAx + CHANNEL_OFFSET_TAB[Channel - 1U])))->CCR, + DMA_CCR_PSIZE)); +} + +/** + * @brief Set Memory size. + * @rmtoll CCR MSIZE LL_DMA_SetMemorySize + * @param DMAx DMAx Instance + * @param Channel This parameter can be one of the following values: + * @arg @ref LL_DMA_CHANNEL_1 + * @arg @ref LL_DMA_CHANNEL_2 + * @arg @ref LL_DMA_CHANNEL_3 + * @arg @ref LL_DMA_CHANNEL_4 + * @arg @ref LL_DMA_CHANNEL_5 + * @arg @ref LL_DMA_CHANNEL_6 + * @arg @ref LL_DMA_CHANNEL_7 + * @param MemoryOrM2MDstDataSize This parameter can be one of the following values: + * @arg @ref LL_DMA_MDATAALIGN_BYTE + * @arg @ref LL_DMA_MDATAALIGN_HALFWORD + * @arg @ref LL_DMA_MDATAALIGN_WORD + * @retval None + */ +__STATIC_INLINE void LL_DMA_SetMemorySize(DMA_TypeDef *DMAx, uint32_t Channel, uint32_t MemoryOrM2MDstDataSize) +{ + MODIFY_REG(((DMA_Channel_TypeDef *)((uint32_t)((uint32_t)DMAx + CHANNEL_OFFSET_TAB[Channel - 1U])))->CCR, DMA_CCR_MSIZE, + MemoryOrM2MDstDataSize); +} + +/** + * @brief Get Memory size. + * @rmtoll CCR MSIZE LL_DMA_GetMemorySize + * @param DMAx DMAx Instance + * @param Channel This parameter can be one of the following values: + * @arg @ref LL_DMA_CHANNEL_1 + * @arg @ref LL_DMA_CHANNEL_2 + * @arg @ref LL_DMA_CHANNEL_3 + * @arg @ref LL_DMA_CHANNEL_4 + * @arg @ref LL_DMA_CHANNEL_5 + * @arg @ref LL_DMA_CHANNEL_6 + * @arg @ref LL_DMA_CHANNEL_7 + * @retval Returned value can be one of the following values: + * @arg @ref LL_DMA_MDATAALIGN_BYTE + * @arg @ref LL_DMA_MDATAALIGN_HALFWORD + * @arg @ref LL_DMA_MDATAALIGN_WORD + */ +__STATIC_INLINE uint32_t LL_DMA_GetMemorySize(DMA_TypeDef *DMAx, uint32_t Channel) +{ + return (READ_BIT(((DMA_Channel_TypeDef *)((uint32_t)((uint32_t)DMAx + CHANNEL_OFFSET_TAB[Channel - 1U])))->CCR, + DMA_CCR_MSIZE)); +} + +/** + * @brief Set Channel priority level. + * @rmtoll CCR PL LL_DMA_SetChannelPriorityLevel + * @param DMAx DMAx Instance + * @param Channel This parameter can be one of the following values: + * @arg @ref LL_DMA_CHANNEL_1 + * @arg @ref LL_DMA_CHANNEL_2 + * @arg @ref LL_DMA_CHANNEL_3 + * @arg @ref LL_DMA_CHANNEL_4 + * @arg @ref LL_DMA_CHANNEL_5 + * @arg @ref LL_DMA_CHANNEL_6 + * @arg @ref LL_DMA_CHANNEL_7 + * @param Priority This parameter can be one of the following values: + * @arg @ref LL_DMA_PRIORITY_LOW + * @arg @ref LL_DMA_PRIORITY_MEDIUM + * @arg @ref LL_DMA_PRIORITY_HIGH + * @arg @ref LL_DMA_PRIORITY_VERYHIGH + * @retval None + */ +__STATIC_INLINE void LL_DMA_SetChannelPriorityLevel(DMA_TypeDef *DMAx, uint32_t Channel, uint32_t Priority) +{ + MODIFY_REG(((DMA_Channel_TypeDef *)((uint32_t)((uint32_t)DMAx + CHANNEL_OFFSET_TAB[Channel - 1U])))->CCR, DMA_CCR_PL, + Priority); +} + +/** + * @brief Get Channel priority level. + * @rmtoll CCR PL LL_DMA_GetChannelPriorityLevel + * @param DMAx DMAx Instance + * @param Channel This parameter can be one of the following values: + * @arg @ref LL_DMA_CHANNEL_1 + * @arg @ref LL_DMA_CHANNEL_2 + * @arg @ref LL_DMA_CHANNEL_3 + * @arg @ref LL_DMA_CHANNEL_4 + * @arg @ref LL_DMA_CHANNEL_5 + * @arg @ref LL_DMA_CHANNEL_6 + * @arg @ref LL_DMA_CHANNEL_7 + * @retval Returned value can be one of the following values: + * @arg @ref LL_DMA_PRIORITY_LOW + * @arg @ref LL_DMA_PRIORITY_MEDIUM + * @arg @ref LL_DMA_PRIORITY_HIGH + * @arg @ref LL_DMA_PRIORITY_VERYHIGH + */ +__STATIC_INLINE uint32_t LL_DMA_GetChannelPriorityLevel(DMA_TypeDef *DMAx, uint32_t Channel) +{ + return (READ_BIT(((DMA_Channel_TypeDef *)((uint32_t)((uint32_t)DMAx + CHANNEL_OFFSET_TAB[Channel - 1U])))->CCR, + DMA_CCR_PL)); +} + +/** + * @brief Set Number of data to transfer. + * @note This action has no effect if + * channel is enabled. + * @rmtoll CNDTR NDT LL_DMA_SetDataLength + * @param DMAx DMAx Instance + * @param Channel This parameter can be one of the following values: + * @arg @ref LL_DMA_CHANNEL_1 + * @arg @ref LL_DMA_CHANNEL_2 + * @arg @ref LL_DMA_CHANNEL_3 + * @arg @ref LL_DMA_CHANNEL_4 + * @arg @ref LL_DMA_CHANNEL_5 + * @arg @ref LL_DMA_CHANNEL_6 + * @arg @ref LL_DMA_CHANNEL_7 + * @param NbData Between Min_Data = 0 and Max_Data = 0x0000FFFF + * @retval None + */ +__STATIC_INLINE void LL_DMA_SetDataLength(DMA_TypeDef *DMAx, uint32_t Channel, uint32_t NbData) +{ + MODIFY_REG(((DMA_Channel_TypeDef *)((uint32_t)((uint32_t)DMAx + CHANNEL_OFFSET_TAB[Channel - 1U])))->CNDTR, + DMA_CNDTR_NDT, NbData); +} + +/** + * @brief Get Number of data to transfer. + * @note Once the channel is enabled, the return value indicate the + * remaining bytes to be transmitted. + * @rmtoll CNDTR NDT LL_DMA_GetDataLength + * @param DMAx DMAx Instance + * @param Channel This parameter can be one of the following values: + * @arg @ref LL_DMA_CHANNEL_1 + * @arg @ref LL_DMA_CHANNEL_2 + * @arg @ref LL_DMA_CHANNEL_3 + * @arg @ref LL_DMA_CHANNEL_4 + * @arg @ref LL_DMA_CHANNEL_5 + * @arg @ref LL_DMA_CHANNEL_6 + * @arg @ref LL_DMA_CHANNEL_7 + * @retval Between Min_Data = 0 and Max_Data = 0xFFFFFFFF + */ +__STATIC_INLINE uint32_t LL_DMA_GetDataLength(DMA_TypeDef *DMAx, uint32_t Channel) +{ + return (READ_BIT(((DMA_Channel_TypeDef *)((uint32_t)((uint32_t)DMAx + CHANNEL_OFFSET_TAB[Channel - 1U])))->CNDTR, + DMA_CNDTR_NDT)); +} + +/** + * @brief Configure the Source and Destination addresses. + * @note This API must not be called when the DMA channel is enabled. + * @note Each IP using DMA provides an API to get directly the register adress (LL_PPP_DMA_GetRegAddr). + * @rmtoll CPAR PA LL_DMA_ConfigAddresses\n + * CMAR MA LL_DMA_ConfigAddresses + * @param DMAx DMAx Instance + * @param Channel This parameter can be one of the following values: + * @arg @ref LL_DMA_CHANNEL_1 + * @arg @ref LL_DMA_CHANNEL_2 + * @arg @ref LL_DMA_CHANNEL_3 + * @arg @ref LL_DMA_CHANNEL_4 + * @arg @ref LL_DMA_CHANNEL_5 + * @arg @ref LL_DMA_CHANNEL_6 + * @arg @ref LL_DMA_CHANNEL_7 + * @param SrcAddress Between Min_Data = 0 and Max_Data = 0xFFFFFFFF + * @param DstAddress Between Min_Data = 0 and Max_Data = 0xFFFFFFFF + * @param Direction This parameter can be one of the following values: + * @arg @ref LL_DMA_DIRECTION_PERIPH_TO_MEMORY + * @arg @ref LL_DMA_DIRECTION_MEMORY_TO_PERIPH + * @arg @ref LL_DMA_DIRECTION_MEMORY_TO_MEMORY + * @retval None + */ +__STATIC_INLINE void LL_DMA_ConfigAddresses(DMA_TypeDef *DMAx, uint32_t Channel, uint32_t SrcAddress, + uint32_t DstAddress, uint32_t Direction) +{ + /* Direction Memory to Periph */ + if (Direction == LL_DMA_DIRECTION_MEMORY_TO_PERIPH) + { + WRITE_REG(((DMA_Channel_TypeDef *)((uint32_t)((uint32_t)DMAx + CHANNEL_OFFSET_TAB[Channel - 1U])))->CMAR, SrcAddress); + WRITE_REG(((DMA_Channel_TypeDef *)((uint32_t)((uint32_t)DMAx + CHANNEL_OFFSET_TAB[Channel - 1U])))->CPAR, DstAddress); + } + /* Direction Periph to Memory and Memory to Memory */ + else + { + WRITE_REG(((DMA_Channel_TypeDef *)((uint32_t)((uint32_t)DMAx + CHANNEL_OFFSET_TAB[Channel - 1U])))->CPAR, SrcAddress); + WRITE_REG(((DMA_Channel_TypeDef *)((uint32_t)((uint32_t)DMAx + CHANNEL_OFFSET_TAB[Channel - 1U])))->CMAR, DstAddress); + } +} + +/** + * @brief Set the Memory address. + * @note Interface used for direction LL_DMA_DIRECTION_PERIPH_TO_MEMORY or LL_DMA_DIRECTION_MEMORY_TO_PERIPH only. + * @note This API must not be called when the DMA channel is enabled. + * @rmtoll CMAR MA LL_DMA_SetMemoryAddress + * @param DMAx DMAx Instance + * @param Channel This parameter can be one of the following values: + * @arg @ref LL_DMA_CHANNEL_1 + * @arg @ref LL_DMA_CHANNEL_2 + * @arg @ref LL_DMA_CHANNEL_3 + * @arg @ref LL_DMA_CHANNEL_4 + * @arg @ref LL_DMA_CHANNEL_5 + * @arg @ref LL_DMA_CHANNEL_6 + * @arg @ref LL_DMA_CHANNEL_7 + * @param MemoryAddress Between Min_Data = 0 and Max_Data = 0xFFFFFFFF + * @retval None + */ +__STATIC_INLINE void LL_DMA_SetMemoryAddress(DMA_TypeDef *DMAx, uint32_t Channel, uint32_t MemoryAddress) +{ + WRITE_REG(((DMA_Channel_TypeDef *)((uint32_t)((uint32_t)DMAx + CHANNEL_OFFSET_TAB[Channel - 1U])))->CMAR, MemoryAddress); +} + +/** + * @brief Set the Peripheral address. + * @note Interface used for direction LL_DMA_DIRECTION_PERIPH_TO_MEMORY or LL_DMA_DIRECTION_MEMORY_TO_PERIPH only. + * @note This API must not be called when the DMA channel is enabled. + * @rmtoll CPAR PA LL_DMA_SetPeriphAddress + * @param DMAx DMAx Instance + * @param Channel This parameter can be one of the following values: + * @arg @ref LL_DMA_CHANNEL_1 + * @arg @ref LL_DMA_CHANNEL_2 + * @arg @ref LL_DMA_CHANNEL_3 + * @arg @ref LL_DMA_CHANNEL_4 + * @arg @ref LL_DMA_CHANNEL_5 + * @arg @ref LL_DMA_CHANNEL_6 + * @arg @ref LL_DMA_CHANNEL_7 + * @param PeriphAddress Between Min_Data = 0 and Max_Data = 0xFFFFFFFF + * @retval None + */ +__STATIC_INLINE void LL_DMA_SetPeriphAddress(DMA_TypeDef *DMAx, uint32_t Channel, uint32_t PeriphAddress) +{ + WRITE_REG(((DMA_Channel_TypeDef *)((uint32_t)((uint32_t)DMAx + CHANNEL_OFFSET_TAB[Channel - 1U])))->CPAR, PeriphAddress); +} + +/** + * @brief Get Memory address. + * @note Interface used for direction LL_DMA_DIRECTION_PERIPH_TO_MEMORY or LL_DMA_DIRECTION_MEMORY_TO_PERIPH only. + * @rmtoll CMAR MA LL_DMA_GetMemoryAddress + * @param DMAx DMAx Instance + * @param Channel This parameter can be one of the following values: + * @arg @ref LL_DMA_CHANNEL_1 + * @arg @ref LL_DMA_CHANNEL_2 + * @arg @ref LL_DMA_CHANNEL_3 + * @arg @ref LL_DMA_CHANNEL_4 + * @arg @ref LL_DMA_CHANNEL_5 + * @arg @ref LL_DMA_CHANNEL_6 + * @arg @ref LL_DMA_CHANNEL_7 + * @retval Between Min_Data = 0 and Max_Data = 0xFFFFFFFF + */ +__STATIC_INLINE uint32_t LL_DMA_GetMemoryAddress(DMA_TypeDef *DMAx, uint32_t Channel) +{ + return (READ_REG(((DMA_Channel_TypeDef *)((uint32_t)((uint32_t)DMAx + CHANNEL_OFFSET_TAB[Channel - 1U])))->CMAR)); +} + +/** + * @brief Get Peripheral address. + * @note Interface used for direction LL_DMA_DIRECTION_PERIPH_TO_MEMORY or LL_DMA_DIRECTION_MEMORY_TO_PERIPH only. + * @rmtoll CPAR PA LL_DMA_GetPeriphAddress + * @param DMAx DMAx Instance + * @param Channel This parameter can be one of the following values: + * @arg @ref LL_DMA_CHANNEL_1 + * @arg @ref LL_DMA_CHANNEL_2 + * @arg @ref LL_DMA_CHANNEL_3 + * @arg @ref LL_DMA_CHANNEL_4 + * @arg @ref LL_DMA_CHANNEL_5 + * @arg @ref LL_DMA_CHANNEL_6 + * @arg @ref LL_DMA_CHANNEL_7 + * @retval Between Min_Data = 0 and Max_Data = 0xFFFFFFFF + */ +__STATIC_INLINE uint32_t LL_DMA_GetPeriphAddress(DMA_TypeDef *DMAx, uint32_t Channel) +{ + return (READ_REG(((DMA_Channel_TypeDef *)((uint32_t)((uint32_t)DMAx + CHANNEL_OFFSET_TAB[Channel - 1U])))->CPAR)); +} + +/** + * @brief Set the Memory to Memory Source address. + * @note Interface used for direction LL_DMA_DIRECTION_MEMORY_TO_MEMORY only. + * @note This API must not be called when the DMA channel is enabled. + * @rmtoll CPAR PA LL_DMA_SetM2MSrcAddress + * @param DMAx DMAx Instance + * @param Channel This parameter can be one of the following values: + * @arg @ref LL_DMA_CHANNEL_1 + * @arg @ref LL_DMA_CHANNEL_2 + * @arg @ref LL_DMA_CHANNEL_3 + * @arg @ref LL_DMA_CHANNEL_4 + * @arg @ref LL_DMA_CHANNEL_5 + * @arg @ref LL_DMA_CHANNEL_6 + * @arg @ref LL_DMA_CHANNEL_7 + * @param MemoryAddress Between Min_Data = 0 and Max_Data = 0xFFFFFFFF + * @retval None + */ +__STATIC_INLINE void LL_DMA_SetM2MSrcAddress(DMA_TypeDef *DMAx, uint32_t Channel, uint32_t MemoryAddress) +{ + WRITE_REG(((DMA_Channel_TypeDef *)((uint32_t)((uint32_t)DMAx + CHANNEL_OFFSET_TAB[Channel - 1U])))->CPAR, MemoryAddress); +} + +/** + * @brief Set the Memory to Memory Destination address. + * @note Interface used for direction LL_DMA_DIRECTION_MEMORY_TO_MEMORY only. + * @note This API must not be called when the DMA channel is enabled. + * @rmtoll CMAR MA LL_DMA_SetM2MDstAddress + * @param DMAx DMAx Instance + * @param Channel This parameter can be one of the following values: + * @arg @ref LL_DMA_CHANNEL_1 + * @arg @ref LL_DMA_CHANNEL_2 + * @arg @ref LL_DMA_CHANNEL_3 + * @arg @ref LL_DMA_CHANNEL_4 + * @arg @ref LL_DMA_CHANNEL_5 + * @arg @ref LL_DMA_CHANNEL_6 + * @arg @ref LL_DMA_CHANNEL_7 + * @param MemoryAddress Between Min_Data = 0 and Max_Data = 0xFFFFFFFF + * @retval None + */ +__STATIC_INLINE void LL_DMA_SetM2MDstAddress(DMA_TypeDef *DMAx, uint32_t Channel, uint32_t MemoryAddress) +{ + WRITE_REG(((DMA_Channel_TypeDef *)((uint32_t)((uint32_t)DMAx + CHANNEL_OFFSET_TAB[Channel - 1U])))->CMAR, MemoryAddress); +} + +/** + * @brief Get the Memory to Memory Source address. + * @note Interface used for direction LL_DMA_DIRECTION_MEMORY_TO_MEMORY only. + * @rmtoll CPAR PA LL_DMA_GetM2MSrcAddress + * @param DMAx DMAx Instance + * @param Channel This parameter can be one of the following values: + * @arg @ref LL_DMA_CHANNEL_1 + * @arg @ref LL_DMA_CHANNEL_2 + * @arg @ref LL_DMA_CHANNEL_3 + * @arg @ref LL_DMA_CHANNEL_4 + * @arg @ref LL_DMA_CHANNEL_5 + * @arg @ref LL_DMA_CHANNEL_6 + * @arg @ref LL_DMA_CHANNEL_7 + * @retval Between Min_Data = 0 and Max_Data = 0xFFFFFFFF + */ +__STATIC_INLINE uint32_t LL_DMA_GetM2MSrcAddress(DMA_TypeDef *DMAx, uint32_t Channel) +{ + return (READ_REG(((DMA_Channel_TypeDef *)((uint32_t)((uint32_t)DMAx + CHANNEL_OFFSET_TAB[Channel - 1U])))->CPAR)); +} + +/** + * @brief Get the Memory to Memory Destination address. + * @note Interface used for direction LL_DMA_DIRECTION_MEMORY_TO_MEMORY only. + * @rmtoll CMAR MA LL_DMA_GetM2MDstAddress + * @param DMAx DMAx Instance + * @param Channel This parameter can be one of the following values: + * @arg @ref LL_DMA_CHANNEL_1 + * @arg @ref LL_DMA_CHANNEL_2 + * @arg @ref LL_DMA_CHANNEL_3 + * @arg @ref LL_DMA_CHANNEL_4 + * @arg @ref LL_DMA_CHANNEL_5 + * @arg @ref LL_DMA_CHANNEL_6 + * @arg @ref LL_DMA_CHANNEL_7 + * @retval Between Min_Data = 0 and Max_Data = 0xFFFFFFFF + */ +__STATIC_INLINE uint32_t LL_DMA_GetM2MDstAddress(DMA_TypeDef *DMAx, uint32_t Channel) +{ + return (READ_REG(((DMA_Channel_TypeDef *)((uint32_t)((uint32_t)DMAx + CHANNEL_OFFSET_TAB[Channel - 1U])))->CMAR)); +} + +/** + * @} + */ + +/** @defgroup DMA_LL_EF_FLAG_Management FLAG_Management + * @{ + */ + +/** + * @brief Get Channel 1 global interrupt flag. + * @rmtoll ISR GIF1 LL_DMA_IsActiveFlag_GI1 + * @param DMAx DMAx Instance + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_DMA_IsActiveFlag_GI1(DMA_TypeDef *DMAx) +{ + return (READ_BIT(DMAx->ISR, DMA_ISR_GIF1) == (DMA_ISR_GIF1)); +} + +/** + * @brief Get Channel 2 global interrupt flag. + * @rmtoll ISR GIF2 LL_DMA_IsActiveFlag_GI2 + * @param DMAx DMAx Instance + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_DMA_IsActiveFlag_GI2(DMA_TypeDef *DMAx) +{ + return (READ_BIT(DMAx->ISR, DMA_ISR_GIF2) == (DMA_ISR_GIF2)); +} + +/** + * @brief Get Channel 3 global interrupt flag. + * @rmtoll ISR GIF3 LL_DMA_IsActiveFlag_GI3 + * @param DMAx DMAx Instance + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_DMA_IsActiveFlag_GI3(DMA_TypeDef *DMAx) +{ + return (READ_BIT(DMAx->ISR, DMA_ISR_GIF3) == (DMA_ISR_GIF3)); +} + +/** + * @brief Get Channel 4 global interrupt flag. + * @rmtoll ISR GIF4 LL_DMA_IsActiveFlag_GI4 + * @param DMAx DMAx Instance + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_DMA_IsActiveFlag_GI4(DMA_TypeDef *DMAx) +{ + return (READ_BIT(DMAx->ISR, DMA_ISR_GIF4) == (DMA_ISR_GIF4)); +} + +/** + * @brief Get Channel 5 global interrupt flag. + * @rmtoll ISR GIF5 LL_DMA_IsActiveFlag_GI5 + * @param DMAx DMAx Instance + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_DMA_IsActiveFlag_GI5(DMA_TypeDef *DMAx) +{ + return (READ_BIT(DMAx->ISR, DMA_ISR_GIF5) == (DMA_ISR_GIF5)); +} + +/** + * @brief Get Channel 6 global interrupt flag. + * @rmtoll ISR GIF6 LL_DMA_IsActiveFlag_GI6 + * @param DMAx DMAx Instance + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_DMA_IsActiveFlag_GI6(DMA_TypeDef *DMAx) +{ + return (READ_BIT(DMAx->ISR, DMA_ISR_GIF6) == (DMA_ISR_GIF6)); +} + +/** + * @brief Get Channel 7 global interrupt flag. + * @rmtoll ISR GIF7 LL_DMA_IsActiveFlag_GI7 + * @param DMAx DMAx Instance + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_DMA_IsActiveFlag_GI7(DMA_TypeDef *DMAx) +{ + return (READ_BIT(DMAx->ISR, DMA_ISR_GIF7) == (DMA_ISR_GIF7)); +} + +/** + * @brief Get Channel 1 transfer complete flag. + * @rmtoll ISR TCIF1 LL_DMA_IsActiveFlag_TC1 + * @param DMAx DMAx Instance + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_DMA_IsActiveFlag_TC1(DMA_TypeDef *DMAx) +{ + return (READ_BIT(DMAx->ISR, DMA_ISR_TCIF1) == (DMA_ISR_TCIF1)); +} + +/** + * @brief Get Channel 2 transfer complete flag. + * @rmtoll ISR TCIF2 LL_DMA_IsActiveFlag_TC2 + * @param DMAx DMAx Instance + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_DMA_IsActiveFlag_TC2(DMA_TypeDef *DMAx) +{ + return (READ_BIT(DMAx->ISR, DMA_ISR_TCIF2) == (DMA_ISR_TCIF2)); +} + +/** + * @brief Get Channel 3 transfer complete flag. + * @rmtoll ISR TCIF3 LL_DMA_IsActiveFlag_TC3 + * @param DMAx DMAx Instance + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_DMA_IsActiveFlag_TC3(DMA_TypeDef *DMAx) +{ + return (READ_BIT(DMAx->ISR, DMA_ISR_TCIF3) == (DMA_ISR_TCIF3)); +} + +/** + * @brief Get Channel 4 transfer complete flag. + * @rmtoll ISR TCIF4 LL_DMA_IsActiveFlag_TC4 + * @param DMAx DMAx Instance + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_DMA_IsActiveFlag_TC4(DMA_TypeDef *DMAx) +{ + return (READ_BIT(DMAx->ISR, DMA_ISR_TCIF4) == (DMA_ISR_TCIF4)); +} + +/** + * @brief Get Channel 5 transfer complete flag. + * @rmtoll ISR TCIF5 LL_DMA_IsActiveFlag_TC5 + * @param DMAx DMAx Instance + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_DMA_IsActiveFlag_TC5(DMA_TypeDef *DMAx) +{ + return (READ_BIT(DMAx->ISR, DMA_ISR_TCIF5) == (DMA_ISR_TCIF5)); +} + +/** + * @brief Get Channel 6 transfer complete flag. + * @rmtoll ISR TCIF6 LL_DMA_IsActiveFlag_TC6 + * @param DMAx DMAx Instance + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_DMA_IsActiveFlag_TC6(DMA_TypeDef *DMAx) +{ + return (READ_BIT(DMAx->ISR, DMA_ISR_TCIF6) == (DMA_ISR_TCIF6)); +} + +/** + * @brief Get Channel 7 transfer complete flag. + * @rmtoll ISR TCIF7 LL_DMA_IsActiveFlag_TC7 + * @param DMAx DMAx Instance + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_DMA_IsActiveFlag_TC7(DMA_TypeDef *DMAx) +{ + return (READ_BIT(DMAx->ISR, DMA_ISR_TCIF7) == (DMA_ISR_TCIF7)); +} + +/** + * @brief Get Channel 1 half transfer flag. + * @rmtoll ISR HTIF1 LL_DMA_IsActiveFlag_HT1 + * @param DMAx DMAx Instance + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_DMA_IsActiveFlag_HT1(DMA_TypeDef *DMAx) +{ + return (READ_BIT(DMAx->ISR, DMA_ISR_HTIF1) == (DMA_ISR_HTIF1)); +} + +/** + * @brief Get Channel 2 half transfer flag. + * @rmtoll ISR HTIF2 LL_DMA_IsActiveFlag_HT2 + * @param DMAx DMAx Instance + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_DMA_IsActiveFlag_HT2(DMA_TypeDef *DMAx) +{ + return (READ_BIT(DMAx->ISR, DMA_ISR_HTIF2) == (DMA_ISR_HTIF2)); +} + +/** + * @brief Get Channel 3 half transfer flag. + * @rmtoll ISR HTIF3 LL_DMA_IsActiveFlag_HT3 + * @param DMAx DMAx Instance + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_DMA_IsActiveFlag_HT3(DMA_TypeDef *DMAx) +{ + return (READ_BIT(DMAx->ISR, DMA_ISR_HTIF3) == (DMA_ISR_HTIF3)); +} + +/** + * @brief Get Channel 4 half transfer flag. + * @rmtoll ISR HTIF4 LL_DMA_IsActiveFlag_HT4 + * @param DMAx DMAx Instance + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_DMA_IsActiveFlag_HT4(DMA_TypeDef *DMAx) +{ + return (READ_BIT(DMAx->ISR, DMA_ISR_HTIF4) == (DMA_ISR_HTIF4)); +} + +/** + * @brief Get Channel 5 half transfer flag. + * @rmtoll ISR HTIF5 LL_DMA_IsActiveFlag_HT5 + * @param DMAx DMAx Instance + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_DMA_IsActiveFlag_HT5(DMA_TypeDef *DMAx) +{ + return (READ_BIT(DMAx->ISR, DMA_ISR_HTIF5) == (DMA_ISR_HTIF5)); +} + +/** + * @brief Get Channel 6 half transfer flag. + * @rmtoll ISR HTIF6 LL_DMA_IsActiveFlag_HT6 + * @param DMAx DMAx Instance + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_DMA_IsActiveFlag_HT6(DMA_TypeDef *DMAx) +{ + return (READ_BIT(DMAx->ISR, DMA_ISR_HTIF6) == (DMA_ISR_HTIF6)); +} + +/** + * @brief Get Channel 7 half transfer flag. + * @rmtoll ISR HTIF7 LL_DMA_IsActiveFlag_HT7 + * @param DMAx DMAx Instance + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_DMA_IsActiveFlag_HT7(DMA_TypeDef *DMAx) +{ + return (READ_BIT(DMAx->ISR, DMA_ISR_HTIF7) == (DMA_ISR_HTIF7)); +} + +/** + * @brief Get Channel 1 transfer error flag. + * @rmtoll ISR TEIF1 LL_DMA_IsActiveFlag_TE1 + * @param DMAx DMAx Instance + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_DMA_IsActiveFlag_TE1(DMA_TypeDef *DMAx) +{ + return (READ_BIT(DMAx->ISR, DMA_ISR_TEIF1) == (DMA_ISR_TEIF1)); +} + +/** + * @brief Get Channel 2 transfer error flag. + * @rmtoll ISR TEIF2 LL_DMA_IsActiveFlag_TE2 + * @param DMAx DMAx Instance + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_DMA_IsActiveFlag_TE2(DMA_TypeDef *DMAx) +{ + return (READ_BIT(DMAx->ISR, DMA_ISR_TEIF2) == (DMA_ISR_TEIF2)); +} + +/** + * @brief Get Channel 3 transfer error flag. + * @rmtoll ISR TEIF3 LL_DMA_IsActiveFlag_TE3 + * @param DMAx DMAx Instance + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_DMA_IsActiveFlag_TE3(DMA_TypeDef *DMAx) +{ + return (READ_BIT(DMAx->ISR, DMA_ISR_TEIF3) == (DMA_ISR_TEIF3)); +} + +/** + * @brief Get Channel 4 transfer error flag. + * @rmtoll ISR TEIF4 LL_DMA_IsActiveFlag_TE4 + * @param DMAx DMAx Instance + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_DMA_IsActiveFlag_TE4(DMA_TypeDef *DMAx) +{ + return (READ_BIT(DMAx->ISR, DMA_ISR_TEIF4) == (DMA_ISR_TEIF4)); +} + +/** + * @brief Get Channel 5 transfer error flag. + * @rmtoll ISR TEIF5 LL_DMA_IsActiveFlag_TE5 + * @param DMAx DMAx Instance + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_DMA_IsActiveFlag_TE5(DMA_TypeDef *DMAx) +{ + return (READ_BIT(DMAx->ISR, DMA_ISR_TEIF5) == (DMA_ISR_TEIF5)); +} + +/** + * @brief Get Channel 6 transfer error flag. + * @rmtoll ISR TEIF6 LL_DMA_IsActiveFlag_TE6 + * @param DMAx DMAx Instance + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_DMA_IsActiveFlag_TE6(DMA_TypeDef *DMAx) +{ + return (READ_BIT(DMAx->ISR, DMA_ISR_TEIF6) == (DMA_ISR_TEIF6)); +} + +/** + * @brief Get Channel 7 transfer error flag. + * @rmtoll ISR TEIF7 LL_DMA_IsActiveFlag_TE7 + * @param DMAx DMAx Instance + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_DMA_IsActiveFlag_TE7(DMA_TypeDef *DMAx) +{ + return (READ_BIT(DMAx->ISR, DMA_ISR_TEIF7) == (DMA_ISR_TEIF7)); +} + +/** + * @brief Clear Channel 1 global interrupt flag. + * @rmtoll IFCR CGIF1 LL_DMA_ClearFlag_GI1 + * @param DMAx DMAx Instance + * @retval None + */ +__STATIC_INLINE void LL_DMA_ClearFlag_GI1(DMA_TypeDef *DMAx) +{ + WRITE_REG(DMAx->IFCR, DMA_IFCR_CGIF1); +} + +/** + * @brief Clear Channel 2 global interrupt flag. + * @rmtoll IFCR CGIF2 LL_DMA_ClearFlag_GI2 + * @param DMAx DMAx Instance + * @retval None + */ +__STATIC_INLINE void LL_DMA_ClearFlag_GI2(DMA_TypeDef *DMAx) +{ + WRITE_REG(DMAx->IFCR, DMA_IFCR_CGIF2); +} + +/** + * @brief Clear Channel 3 global interrupt flag. + * @rmtoll IFCR CGIF3 LL_DMA_ClearFlag_GI3 + * @param DMAx DMAx Instance + * @retval None + */ +__STATIC_INLINE void LL_DMA_ClearFlag_GI3(DMA_TypeDef *DMAx) +{ + WRITE_REG(DMAx->IFCR, DMA_IFCR_CGIF3); +} + +/** + * @brief Clear Channel 4 global interrupt flag. + * @rmtoll IFCR CGIF4 LL_DMA_ClearFlag_GI4 + * @param DMAx DMAx Instance + * @retval None + */ +__STATIC_INLINE void LL_DMA_ClearFlag_GI4(DMA_TypeDef *DMAx) +{ + WRITE_REG(DMAx->IFCR, DMA_IFCR_CGIF4); +} + +/** + * @brief Clear Channel 5 global interrupt flag. + * @rmtoll IFCR CGIF5 LL_DMA_ClearFlag_GI5 + * @param DMAx DMAx Instance + * @retval None + */ +__STATIC_INLINE void LL_DMA_ClearFlag_GI5(DMA_TypeDef *DMAx) +{ + WRITE_REG(DMAx->IFCR, DMA_IFCR_CGIF5); +} + +/** + * @brief Clear Channel 6 global interrupt flag. + * @rmtoll IFCR CGIF6 LL_DMA_ClearFlag_GI6 + * @param DMAx DMAx Instance + * @retval None + */ +__STATIC_INLINE void LL_DMA_ClearFlag_GI6(DMA_TypeDef *DMAx) +{ + WRITE_REG(DMAx->IFCR, DMA_IFCR_CGIF6); +} + +/** + * @brief Clear Channel 7 global interrupt flag. + * @rmtoll IFCR CGIF7 LL_DMA_ClearFlag_GI7 + * @param DMAx DMAx Instance + * @retval None + */ +__STATIC_INLINE void LL_DMA_ClearFlag_GI7(DMA_TypeDef *DMAx) +{ + WRITE_REG(DMAx->IFCR, DMA_IFCR_CGIF7); +} + +/** + * @brief Clear Channel 1 transfer complete flag. + * @rmtoll IFCR CTCIF1 LL_DMA_ClearFlag_TC1 + * @param DMAx DMAx Instance + * @retval None + */ +__STATIC_INLINE void LL_DMA_ClearFlag_TC1(DMA_TypeDef *DMAx) +{ + WRITE_REG(DMAx->IFCR, DMA_IFCR_CTCIF1); +} + +/** + * @brief Clear Channel 2 transfer complete flag. + * @rmtoll IFCR CTCIF2 LL_DMA_ClearFlag_TC2 + * @param DMAx DMAx Instance + * @retval None + */ +__STATIC_INLINE void LL_DMA_ClearFlag_TC2(DMA_TypeDef *DMAx) +{ + WRITE_REG(DMAx->IFCR, DMA_IFCR_CTCIF2); +} + +/** + * @brief Clear Channel 3 transfer complete flag. + * @rmtoll IFCR CTCIF3 LL_DMA_ClearFlag_TC3 + * @param DMAx DMAx Instance + * @retval None + */ +__STATIC_INLINE void LL_DMA_ClearFlag_TC3(DMA_TypeDef *DMAx) +{ + WRITE_REG(DMAx->IFCR, DMA_IFCR_CTCIF3); +} + +/** + * @brief Clear Channel 4 transfer complete flag. + * @rmtoll IFCR CTCIF4 LL_DMA_ClearFlag_TC4 + * @param DMAx DMAx Instance + * @retval None + */ +__STATIC_INLINE void LL_DMA_ClearFlag_TC4(DMA_TypeDef *DMAx) +{ + WRITE_REG(DMAx->IFCR, DMA_IFCR_CTCIF4); +} + +/** + * @brief Clear Channel 5 transfer complete flag. + * @rmtoll IFCR CTCIF5 LL_DMA_ClearFlag_TC5 + * @param DMAx DMAx Instance + * @retval None + */ +__STATIC_INLINE void LL_DMA_ClearFlag_TC5(DMA_TypeDef *DMAx) +{ + WRITE_REG(DMAx->IFCR, DMA_IFCR_CTCIF5); +} + +/** + * @brief Clear Channel 6 transfer complete flag. + * @rmtoll IFCR CTCIF6 LL_DMA_ClearFlag_TC6 + * @param DMAx DMAx Instance + * @retval None + */ +__STATIC_INLINE void LL_DMA_ClearFlag_TC6(DMA_TypeDef *DMAx) +{ + WRITE_REG(DMAx->IFCR, DMA_IFCR_CTCIF6); +} + +/** + * @brief Clear Channel 7 transfer complete flag. + * @rmtoll IFCR CTCIF7 LL_DMA_ClearFlag_TC7 + * @param DMAx DMAx Instance + * @retval None + */ +__STATIC_INLINE void LL_DMA_ClearFlag_TC7(DMA_TypeDef *DMAx) +{ + WRITE_REG(DMAx->IFCR, DMA_IFCR_CTCIF7); +} + +/** + * @brief Clear Channel 1 half transfer flag. + * @rmtoll IFCR CHTIF1 LL_DMA_ClearFlag_HT1 + * @param DMAx DMAx Instance + * @retval None + */ +__STATIC_INLINE void LL_DMA_ClearFlag_HT1(DMA_TypeDef *DMAx) +{ + WRITE_REG(DMAx->IFCR, DMA_IFCR_CHTIF1); +} + +/** + * @brief Clear Channel 2 half transfer flag. + * @rmtoll IFCR CHTIF2 LL_DMA_ClearFlag_HT2 + * @param DMAx DMAx Instance + * @retval None + */ +__STATIC_INLINE void LL_DMA_ClearFlag_HT2(DMA_TypeDef *DMAx) +{ + WRITE_REG(DMAx->IFCR, DMA_IFCR_CHTIF2); +} + +/** + * @brief Clear Channel 3 half transfer flag. + * @rmtoll IFCR CHTIF3 LL_DMA_ClearFlag_HT3 + * @param DMAx DMAx Instance + * @retval None + */ +__STATIC_INLINE void LL_DMA_ClearFlag_HT3(DMA_TypeDef *DMAx) +{ + WRITE_REG(DMAx->IFCR, DMA_IFCR_CHTIF3); +} + +/** + * @brief Clear Channel 4 half transfer flag. + * @rmtoll IFCR CHTIF4 LL_DMA_ClearFlag_HT4 + * @param DMAx DMAx Instance + * @retval None + */ +__STATIC_INLINE void LL_DMA_ClearFlag_HT4(DMA_TypeDef *DMAx) +{ + WRITE_REG(DMAx->IFCR, DMA_IFCR_CHTIF4); +} + +/** + * @brief Clear Channel 5 half transfer flag. + * @rmtoll IFCR CHTIF5 LL_DMA_ClearFlag_HT5 + * @param DMAx DMAx Instance + * @retval None + */ +__STATIC_INLINE void LL_DMA_ClearFlag_HT5(DMA_TypeDef *DMAx) +{ + WRITE_REG(DMAx->IFCR, DMA_IFCR_CHTIF5); +} + +/** + * @brief Clear Channel 6 half transfer flag. + * @rmtoll IFCR CHTIF6 LL_DMA_ClearFlag_HT6 + * @param DMAx DMAx Instance + * @retval None + */ +__STATIC_INLINE void LL_DMA_ClearFlag_HT6(DMA_TypeDef *DMAx) +{ + WRITE_REG(DMAx->IFCR, DMA_IFCR_CHTIF6); +} + +/** + * @brief Clear Channel 7 half transfer flag. + * @rmtoll IFCR CHTIF7 LL_DMA_ClearFlag_HT7 + * @param DMAx DMAx Instance + * @retval None + */ +__STATIC_INLINE void LL_DMA_ClearFlag_HT7(DMA_TypeDef *DMAx) +{ + WRITE_REG(DMAx->IFCR, DMA_IFCR_CHTIF7); +} + +/** + * @brief Clear Channel 1 transfer error flag. + * @rmtoll IFCR CTEIF1 LL_DMA_ClearFlag_TE1 + * @param DMAx DMAx Instance + * @retval None + */ +__STATIC_INLINE void LL_DMA_ClearFlag_TE1(DMA_TypeDef *DMAx) +{ + WRITE_REG(DMAx->IFCR, DMA_IFCR_CTEIF1); +} + +/** + * @brief Clear Channel 2 transfer error flag. + * @rmtoll IFCR CTEIF2 LL_DMA_ClearFlag_TE2 + * @param DMAx DMAx Instance + * @retval None + */ +__STATIC_INLINE void LL_DMA_ClearFlag_TE2(DMA_TypeDef *DMAx) +{ + WRITE_REG(DMAx->IFCR, DMA_IFCR_CTEIF2); +} + +/** + * @brief Clear Channel 3 transfer error flag. + * @rmtoll IFCR CTEIF3 LL_DMA_ClearFlag_TE3 + * @param DMAx DMAx Instance + * @retval None + */ +__STATIC_INLINE void LL_DMA_ClearFlag_TE3(DMA_TypeDef *DMAx) +{ + WRITE_REG(DMAx->IFCR, DMA_IFCR_CTEIF3); +} + +/** + * @brief Clear Channel 4 transfer error flag. + * @rmtoll IFCR CTEIF4 LL_DMA_ClearFlag_TE4 + * @param DMAx DMAx Instance + * @retval None + */ +__STATIC_INLINE void LL_DMA_ClearFlag_TE4(DMA_TypeDef *DMAx) +{ + WRITE_REG(DMAx->IFCR, DMA_IFCR_CTEIF4); +} + +/** + * @brief Clear Channel 5 transfer error flag. + * @rmtoll IFCR CTEIF5 LL_DMA_ClearFlag_TE5 + * @param DMAx DMAx Instance + * @retval None + */ +__STATIC_INLINE void LL_DMA_ClearFlag_TE5(DMA_TypeDef *DMAx) +{ + WRITE_REG(DMAx->IFCR, DMA_IFCR_CTEIF5); +} + +/** + * @brief Clear Channel 6 transfer error flag. + * @rmtoll IFCR CTEIF6 LL_DMA_ClearFlag_TE6 + * @param DMAx DMAx Instance + * @retval None + */ +__STATIC_INLINE void LL_DMA_ClearFlag_TE6(DMA_TypeDef *DMAx) +{ + WRITE_REG(DMAx->IFCR, DMA_IFCR_CTEIF6); +} + +/** + * @brief Clear Channel 7 transfer error flag. + * @rmtoll IFCR CTEIF7 LL_DMA_ClearFlag_TE7 + * @param DMAx DMAx Instance + * @retval None + */ +__STATIC_INLINE void LL_DMA_ClearFlag_TE7(DMA_TypeDef *DMAx) +{ + WRITE_REG(DMAx->IFCR, DMA_IFCR_CTEIF7); +} + +/** + * @} + */ + +/** @defgroup DMA_LL_EF_IT_Management IT_Management + * @{ + */ + +/** + * @brief Enable Transfer complete interrupt. + * @rmtoll CCR TCIE LL_DMA_EnableIT_TC + * @param DMAx DMAx Instance + * @param Channel This parameter can be one of the following values: + * @arg @ref LL_DMA_CHANNEL_1 + * @arg @ref LL_DMA_CHANNEL_2 + * @arg @ref LL_DMA_CHANNEL_3 + * @arg @ref LL_DMA_CHANNEL_4 + * @arg @ref LL_DMA_CHANNEL_5 + * @arg @ref LL_DMA_CHANNEL_6 + * @arg @ref LL_DMA_CHANNEL_7 + * @retval None + */ +__STATIC_INLINE void LL_DMA_EnableIT_TC(DMA_TypeDef *DMAx, uint32_t Channel) +{ + SET_BIT(((DMA_Channel_TypeDef *)((uint32_t)((uint32_t)DMAx + CHANNEL_OFFSET_TAB[Channel - 1U])))->CCR, DMA_CCR_TCIE); +} + +/** + * @brief Enable Half transfer interrupt. + * @rmtoll CCR HTIE LL_DMA_EnableIT_HT + * @param DMAx DMAx Instance + * @param Channel This parameter can be one of the following values: + * @arg @ref LL_DMA_CHANNEL_1 + * @arg @ref LL_DMA_CHANNEL_2 + * @arg @ref LL_DMA_CHANNEL_3 + * @arg @ref LL_DMA_CHANNEL_4 + * @arg @ref LL_DMA_CHANNEL_5 + * @arg @ref LL_DMA_CHANNEL_6 + * @arg @ref LL_DMA_CHANNEL_7 + * @retval None + */ +__STATIC_INLINE void LL_DMA_EnableIT_HT(DMA_TypeDef *DMAx, uint32_t Channel) +{ + SET_BIT(((DMA_Channel_TypeDef *)((uint32_t)((uint32_t)DMAx + CHANNEL_OFFSET_TAB[Channel - 1U])))->CCR, DMA_CCR_HTIE); +} + +/** + * @brief Enable Transfer error interrupt. + * @rmtoll CCR TEIE LL_DMA_EnableIT_TE + * @param DMAx DMAx Instance + * @param Channel This parameter can be one of the following values: + * @arg @ref LL_DMA_CHANNEL_1 + * @arg @ref LL_DMA_CHANNEL_2 + * @arg @ref LL_DMA_CHANNEL_3 + * @arg @ref LL_DMA_CHANNEL_4 + * @arg @ref LL_DMA_CHANNEL_5 + * @arg @ref LL_DMA_CHANNEL_6 + * @arg @ref LL_DMA_CHANNEL_7 + * @retval None + */ +__STATIC_INLINE void LL_DMA_EnableIT_TE(DMA_TypeDef *DMAx, uint32_t Channel) +{ + SET_BIT(((DMA_Channel_TypeDef *)((uint32_t)((uint32_t)DMAx + CHANNEL_OFFSET_TAB[Channel - 1U])))->CCR, DMA_CCR_TEIE); +} + +/** + * @brief Disable Transfer complete interrupt. + * @rmtoll CCR TCIE LL_DMA_DisableIT_TC + * @param DMAx DMAx Instance + * @param Channel This parameter can be one of the following values: + * @arg @ref LL_DMA_CHANNEL_1 + * @arg @ref LL_DMA_CHANNEL_2 + * @arg @ref LL_DMA_CHANNEL_3 + * @arg @ref LL_DMA_CHANNEL_4 + * @arg @ref LL_DMA_CHANNEL_5 + * @arg @ref LL_DMA_CHANNEL_6 + * @arg @ref LL_DMA_CHANNEL_7 + * @retval None + */ +__STATIC_INLINE void LL_DMA_DisableIT_TC(DMA_TypeDef *DMAx, uint32_t Channel) +{ + CLEAR_BIT(((DMA_Channel_TypeDef *)((uint32_t)((uint32_t)DMAx + CHANNEL_OFFSET_TAB[Channel - 1U])))->CCR, DMA_CCR_TCIE); +} + +/** + * @brief Disable Half transfer interrupt. + * @rmtoll CCR HTIE LL_DMA_DisableIT_HT + * @param DMAx DMAx Instance + * @param Channel This parameter can be one of the following values: + * @arg @ref LL_DMA_CHANNEL_1 + * @arg @ref LL_DMA_CHANNEL_2 + * @arg @ref LL_DMA_CHANNEL_3 + * @arg @ref LL_DMA_CHANNEL_4 + * @arg @ref LL_DMA_CHANNEL_5 + * @arg @ref LL_DMA_CHANNEL_6 + * @arg @ref LL_DMA_CHANNEL_7 + * @retval None + */ +__STATIC_INLINE void LL_DMA_DisableIT_HT(DMA_TypeDef *DMAx, uint32_t Channel) +{ + CLEAR_BIT(((DMA_Channel_TypeDef *)((uint32_t)((uint32_t)DMAx + CHANNEL_OFFSET_TAB[Channel - 1U])))->CCR, DMA_CCR_HTIE); +} + +/** + * @brief Disable Transfer error interrupt. + * @rmtoll CCR TEIE LL_DMA_DisableIT_TE + * @param DMAx DMAx Instance + * @param Channel This parameter can be one of the following values: + * @arg @ref LL_DMA_CHANNEL_1 + * @arg @ref LL_DMA_CHANNEL_2 + * @arg @ref LL_DMA_CHANNEL_3 + * @arg @ref LL_DMA_CHANNEL_4 + * @arg @ref LL_DMA_CHANNEL_5 + * @arg @ref LL_DMA_CHANNEL_6 + * @arg @ref LL_DMA_CHANNEL_7 + * @retval None + */ +__STATIC_INLINE void LL_DMA_DisableIT_TE(DMA_TypeDef *DMAx, uint32_t Channel) +{ + CLEAR_BIT(((DMA_Channel_TypeDef *)((uint32_t)((uint32_t)DMAx + CHANNEL_OFFSET_TAB[Channel - 1U])))->CCR, DMA_CCR_TEIE); +} + +/** + * @brief Check if Transfer complete Interrupt is enabled. + * @rmtoll CCR TCIE LL_DMA_IsEnabledIT_TC + * @param DMAx DMAx Instance + * @param Channel This parameter can be one of the following values: + * @arg @ref LL_DMA_CHANNEL_1 + * @arg @ref LL_DMA_CHANNEL_2 + * @arg @ref LL_DMA_CHANNEL_3 + * @arg @ref LL_DMA_CHANNEL_4 + * @arg @ref LL_DMA_CHANNEL_5 + * @arg @ref LL_DMA_CHANNEL_6 + * @arg @ref LL_DMA_CHANNEL_7 + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_DMA_IsEnabledIT_TC(DMA_TypeDef *DMAx, uint32_t Channel) +{ + return (READ_BIT(((DMA_Channel_TypeDef *)((uint32_t)((uint32_t)DMAx + CHANNEL_OFFSET_TAB[Channel - 1U])))->CCR, + DMA_CCR_TCIE) == (DMA_CCR_TCIE)); +} + +/** + * @brief Check if Half transfer Interrupt is enabled. + * @rmtoll CCR HTIE LL_DMA_IsEnabledIT_HT + * @param DMAx DMAx Instance + * @param Channel This parameter can be one of the following values: + * @arg @ref LL_DMA_CHANNEL_1 + * @arg @ref LL_DMA_CHANNEL_2 + * @arg @ref LL_DMA_CHANNEL_3 + * @arg @ref LL_DMA_CHANNEL_4 + * @arg @ref LL_DMA_CHANNEL_5 + * @arg @ref LL_DMA_CHANNEL_6 + * @arg @ref LL_DMA_CHANNEL_7 + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_DMA_IsEnabledIT_HT(DMA_TypeDef *DMAx, uint32_t Channel) +{ + return (READ_BIT(((DMA_Channel_TypeDef *)((uint32_t)((uint32_t)DMAx + CHANNEL_OFFSET_TAB[Channel - 1U])))->CCR, + DMA_CCR_HTIE) == (DMA_CCR_HTIE)); +} + +/** + * @brief Check if Transfer error Interrupt is enabled. + * @rmtoll CCR TEIE LL_DMA_IsEnabledIT_TE + * @param DMAx DMAx Instance + * @param Channel This parameter can be one of the following values: + * @arg @ref LL_DMA_CHANNEL_1 + * @arg @ref LL_DMA_CHANNEL_2 + * @arg @ref LL_DMA_CHANNEL_3 + * @arg @ref LL_DMA_CHANNEL_4 + * @arg @ref LL_DMA_CHANNEL_5 + * @arg @ref LL_DMA_CHANNEL_6 + * @arg @ref LL_DMA_CHANNEL_7 + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_DMA_IsEnabledIT_TE(DMA_TypeDef *DMAx, uint32_t Channel) +{ + return (READ_BIT(((DMA_Channel_TypeDef *)((uint32_t)((uint32_t)DMAx + CHANNEL_OFFSET_TAB[Channel - 1U])))->CCR, + DMA_CCR_TEIE) == (DMA_CCR_TEIE)); +} + +/** + * @} + */ + +#if defined(USE_FULL_LL_DRIVER) +/** @defgroup DMA_LL_EF_Init Initialization and de-initialization functions + * @{ + */ + +uint32_t LL_DMA_Init(DMA_TypeDef *DMAx, uint32_t Channel, LL_DMA_InitTypeDef *DMA_InitStruct); +uint32_t LL_DMA_DeInit(DMA_TypeDef *DMAx, uint32_t Channel); +void LL_DMA_StructInit(LL_DMA_InitTypeDef *DMA_InitStruct); + +/** + * @} + */ +#endif /* USE_FULL_LL_DRIVER */ + +/** + * @} + */ + +/** + * @} + */ + +#endif /* DMA1 || DMA2 */ + +/** + * @} + */ + +#ifdef __cplusplus +} +#endif + +#endif /* __STM32F1xx_LL_DMA_H */ + +/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/ diff --git a/LLDrivers/inc/stm32f1xx_ll_exti.h b/LLDrivers/inc/stm32f1xx_ll_exti.h new file mode 100644 index 0000000..f0be0ad --- /dev/null +++ b/LLDrivers/inc/stm32f1xx_ll_exti.h @@ -0,0 +1,888 @@ +/** + ****************************************************************************** + * @file stm32f1xx_ll_exti.h + * @author MCD Application Team + * @brief Header file of EXTI LL module. + ****************************************************************************** + * @attention + * + *

© Copyright (c) 2016 STMicroelectronics. + * All rights reserved.

+ * + * This software component is licensed by ST under BSD 3-Clause license, + * the "License"; You may not use this file except in compliance with the + * License. You may obtain a copy of the License at: + * opensource.org/licenses/BSD-3-Clause + * + ****************************************************************************** + */ + +/* Define to prevent recursive inclusion -------------------------------------*/ +#ifndef STM32F1xx_LL_EXTI_H +#define STM32F1xx_LL_EXTI_H + +#ifdef __cplusplus +extern "C" { +#endif + +/* Includes ------------------------------------------------------------------*/ +#include "stm32f1xx.h" + +/** @addtogroup STM32F1xx_LL_Driver + * @{ + */ + +#if defined (EXTI) + +/** @defgroup EXTI_LL EXTI + * @{ + */ + +/* Private types -------------------------------------------------------------*/ +/* Private variables ---------------------------------------------------------*/ +/* Private constants ---------------------------------------------------------*/ +/* Private Macros ------------------------------------------------------------*/ +#if defined(USE_FULL_LL_DRIVER) +/** @defgroup EXTI_LL_Private_Macros EXTI Private Macros + * @{ + */ +/** + * @} + */ +#endif /*USE_FULL_LL_DRIVER*/ +/* Exported types ------------------------------------------------------------*/ +#if defined(USE_FULL_LL_DRIVER) +/** @defgroup EXTI_LL_ES_INIT EXTI Exported Init structure + * @{ + */ +typedef struct +{ + + uint32_t Line_0_31; /*!< Specifies the EXTI lines to be enabled or disabled for Lines in range 0 to 31 + This parameter can be any combination of @ref EXTI_LL_EC_LINE */ + + FunctionalState LineCommand; /*!< Specifies the new state of the selected EXTI lines. + This parameter can be set either to ENABLE or DISABLE */ + + uint8_t Mode; /*!< Specifies the mode for the EXTI lines. + This parameter can be a value of @ref EXTI_LL_EC_MODE. */ + + uint8_t Trigger; /*!< Specifies the trigger signal active edge for the EXTI lines. + This parameter can be a value of @ref EXTI_LL_EC_TRIGGER. */ +} LL_EXTI_InitTypeDef; + +/** + * @} + */ +#endif /*USE_FULL_LL_DRIVER*/ + +/* Exported constants --------------------------------------------------------*/ +/** @defgroup EXTI_LL_Exported_Constants EXTI Exported Constants + * @{ + */ + +/** @defgroup EXTI_LL_EC_LINE LINE + * @{ + */ +#define LL_EXTI_LINE_0 EXTI_IMR_IM0 /*!< Extended line 0 */ +#define LL_EXTI_LINE_1 EXTI_IMR_IM1 /*!< Extended line 1 */ +#define LL_EXTI_LINE_2 EXTI_IMR_IM2 /*!< Extended line 2 */ +#define LL_EXTI_LINE_3 EXTI_IMR_IM3 /*!< Extended line 3 */ +#define LL_EXTI_LINE_4 EXTI_IMR_IM4 /*!< Extended line 4 */ +#define LL_EXTI_LINE_5 EXTI_IMR_IM5 /*!< Extended line 5 */ +#define LL_EXTI_LINE_6 EXTI_IMR_IM6 /*!< Extended line 6 */ +#define LL_EXTI_LINE_7 EXTI_IMR_IM7 /*!< Extended line 7 */ +#define LL_EXTI_LINE_8 EXTI_IMR_IM8 /*!< Extended line 8 */ +#define LL_EXTI_LINE_9 EXTI_IMR_IM9 /*!< Extended line 9 */ +#define LL_EXTI_LINE_10 EXTI_IMR_IM10 /*!< Extended line 10 */ +#define LL_EXTI_LINE_11 EXTI_IMR_IM11 /*!< Extended line 11 */ +#define LL_EXTI_LINE_12 EXTI_IMR_IM12 /*!< Extended line 12 */ +#define LL_EXTI_LINE_13 EXTI_IMR_IM13 /*!< Extended line 13 */ +#define LL_EXTI_LINE_14 EXTI_IMR_IM14 /*!< Extended line 14 */ +#define LL_EXTI_LINE_15 EXTI_IMR_IM15 /*!< Extended line 15 */ +#if defined(EXTI_IMR_IM16) +#define LL_EXTI_LINE_16 EXTI_IMR_IM16 /*!< Extended line 16 */ +#endif +#define LL_EXTI_LINE_17 EXTI_IMR_IM17 /*!< Extended line 17 */ +#if defined(EXTI_IMR_IM18) +#define LL_EXTI_LINE_18 EXTI_IMR_IM18 /*!< Extended line 18 */ +#endif +#if defined(EXTI_IMR_IM19) +#define LL_EXTI_LINE_19 EXTI_IMR_IM19 /*!< Extended line 19 */ +#endif +#if defined(EXTI_IMR_IM20) +#define LL_EXTI_LINE_20 EXTI_IMR_IM20 /*!< Extended line 20 */ +#endif +#if defined(EXTI_IMR_IM21) +#define LL_EXTI_LINE_21 EXTI_IMR_IM21 /*!< Extended line 21 */ +#endif +#if defined(EXTI_IMR_IM22) +#define LL_EXTI_LINE_22 EXTI_IMR_IM22 /*!< Extended line 22 */ +#endif +#if defined(EXTI_IMR_IM23) +#define LL_EXTI_LINE_23 EXTI_IMR_IM23 /*!< Extended line 23 */ +#endif +#if defined(EXTI_IMR_IM24) +#define LL_EXTI_LINE_24 EXTI_IMR_IM24 /*!< Extended line 24 */ +#endif +#if defined(EXTI_IMR_IM25) +#define LL_EXTI_LINE_25 EXTI_IMR_IM25 /*!< Extended line 25 */ +#endif +#if defined(EXTI_IMR_IM26) +#define LL_EXTI_LINE_26 EXTI_IMR_IM26 /*!< Extended line 26 */ +#endif +#if defined(EXTI_IMR_IM27) +#define LL_EXTI_LINE_27 EXTI_IMR_IM27 /*!< Extended line 27 */ +#endif +#if defined(EXTI_IMR_IM28) +#define LL_EXTI_LINE_28 EXTI_IMR_IM28 /*!< Extended line 28 */ +#endif +#if defined(EXTI_IMR_IM29) +#define LL_EXTI_LINE_29 EXTI_IMR_IM29 /*!< Extended line 29 */ +#endif +#if defined(EXTI_IMR_IM30) +#define LL_EXTI_LINE_30 EXTI_IMR_IM30 /*!< Extended line 30 */ +#endif +#if defined(EXTI_IMR_IM31) +#define LL_EXTI_LINE_31 EXTI_IMR_IM31 /*!< Extended line 31 */ +#endif +#define LL_EXTI_LINE_ALL_0_31 EXTI_IMR_IM /*!< All Extended line not reserved*/ + + +#define LL_EXTI_LINE_ALL (0xFFFFFFFFU) /*!< All Extended line */ + +#if defined(USE_FULL_LL_DRIVER) +#define LL_EXTI_LINE_NONE (0x00000000U) /*!< None Extended line */ +#endif /*USE_FULL_LL_DRIVER*/ + +/** + * @} + */ +#if defined(USE_FULL_LL_DRIVER) + +/** @defgroup EXTI_LL_EC_MODE Mode + * @{ + */ +#define LL_EXTI_MODE_IT ((uint8_t)0x00) /*!< Interrupt Mode */ +#define LL_EXTI_MODE_EVENT ((uint8_t)0x01) /*!< Event Mode */ +#define LL_EXTI_MODE_IT_EVENT ((uint8_t)0x02) /*!< Interrupt & Event Mode */ +/** + * @} + */ + +/** @defgroup EXTI_LL_EC_TRIGGER Edge Trigger + * @{ + */ +#define LL_EXTI_TRIGGER_NONE ((uint8_t)0x00) /*!< No Trigger Mode */ +#define LL_EXTI_TRIGGER_RISING ((uint8_t)0x01) /*!< Trigger Rising Mode */ +#define LL_EXTI_TRIGGER_FALLING ((uint8_t)0x02) /*!< Trigger Falling Mode */ +#define LL_EXTI_TRIGGER_RISING_FALLING ((uint8_t)0x03) /*!< Trigger Rising & Falling Mode */ + +/** + * @} + */ + + +#endif /*USE_FULL_LL_DRIVER*/ + + +/** + * @} + */ + +/* Exported macro ------------------------------------------------------------*/ +/** @defgroup EXTI_LL_Exported_Macros EXTI Exported Macros + * @{ + */ + +/** @defgroup EXTI_LL_EM_WRITE_READ Common Write and read registers Macros + * @{ + */ + +/** + * @brief Write a value in EXTI register + * @param __REG__ Register to be written + * @param __VALUE__ Value to be written in the register + * @retval None + */ +#define LL_EXTI_WriteReg(__REG__, __VALUE__) WRITE_REG(EXTI->__REG__, (__VALUE__)) + +/** + * @brief Read a value in EXTI register + * @param __REG__ Register to be read + * @retval Register value + */ +#define LL_EXTI_ReadReg(__REG__) READ_REG(EXTI->__REG__) +/** + * @} + */ + + +/** + * @} + */ + + + +/* Exported functions --------------------------------------------------------*/ +/** @defgroup EXTI_LL_Exported_Functions EXTI Exported Functions + * @{ + */ +/** @defgroup EXTI_LL_EF_IT_Management IT_Management + * @{ + */ + +/** + * @brief Enable ExtiLine Interrupt request for Lines in range 0 to 31 + * @note The reset value for the direct or internal lines (see RM) + * is set to 1 in order to enable the interrupt by default. + * Bits are set automatically at Power on. + * @rmtoll IMR IMx LL_EXTI_EnableIT_0_31 + * @param ExtiLine This parameter can be one of the following values: + * @arg @ref LL_EXTI_LINE_0 + * @arg @ref LL_EXTI_LINE_1 + * @arg @ref LL_EXTI_LINE_2 + * @arg @ref LL_EXTI_LINE_3 + * @arg @ref LL_EXTI_LINE_4 + * @arg @ref LL_EXTI_LINE_5 + * @arg @ref LL_EXTI_LINE_6 + * @arg @ref LL_EXTI_LINE_7 + * @arg @ref LL_EXTI_LINE_8 + * @arg @ref LL_EXTI_LINE_9 + * @arg @ref LL_EXTI_LINE_10 + * @arg @ref LL_EXTI_LINE_11 + * @arg @ref LL_EXTI_LINE_12 + * @arg @ref LL_EXTI_LINE_13 + * @arg @ref LL_EXTI_LINE_14 + * @arg @ref LL_EXTI_LINE_15 + * @arg @ref LL_EXTI_LINE_16 + * @arg @ref LL_EXTI_LINE_17 + * @arg @ref LL_EXTI_LINE_18 + * @arg @ref LL_EXTI_LINE_19 + * @arg @ref LL_EXTI_LINE_ALL_0_31 + * @note Please check each device line mapping for EXTI Line availability + * @retval None + */ +__STATIC_INLINE void LL_EXTI_EnableIT_0_31(uint32_t ExtiLine) +{ + SET_BIT(EXTI->IMR, ExtiLine); +} + +/** + * @brief Disable ExtiLine Interrupt request for Lines in range 0 to 31 + * @note The reset value for the direct or internal lines (see RM) + * is set to 1 in order to enable the interrupt by default. + * Bits are set automatically at Power on. + * @rmtoll IMR IMx LL_EXTI_DisableIT_0_31 + * @param ExtiLine This parameter can be one of the following values: + * @arg @ref LL_EXTI_LINE_0 + * @arg @ref LL_EXTI_LINE_1 + * @arg @ref LL_EXTI_LINE_2 + * @arg @ref LL_EXTI_LINE_3 + * @arg @ref LL_EXTI_LINE_4 + * @arg @ref LL_EXTI_LINE_5 + * @arg @ref LL_EXTI_LINE_6 + * @arg @ref LL_EXTI_LINE_7 + * @arg @ref LL_EXTI_LINE_8 + * @arg @ref LL_EXTI_LINE_9 + * @arg @ref LL_EXTI_LINE_10 + * @arg @ref LL_EXTI_LINE_11 + * @arg @ref LL_EXTI_LINE_12 + * @arg @ref LL_EXTI_LINE_13 + * @arg @ref LL_EXTI_LINE_14 + * @arg @ref LL_EXTI_LINE_15 + * @arg @ref LL_EXTI_LINE_16 + * @arg @ref LL_EXTI_LINE_17 + * @arg @ref LL_EXTI_LINE_18 + * @arg @ref LL_EXTI_LINE_19 + * @arg @ref LL_EXTI_LINE_ALL_0_31 + * @note Please check each device line mapping for EXTI Line availability + * @retval None + */ +__STATIC_INLINE void LL_EXTI_DisableIT_0_31(uint32_t ExtiLine) +{ + CLEAR_BIT(EXTI->IMR, ExtiLine); +} + + +/** + * @brief Indicate if ExtiLine Interrupt request is enabled for Lines in range 0 to 31 + * @note The reset value for the direct or internal lines (see RM) + * is set to 1 in order to enable the interrupt by default. + * Bits are set automatically at Power on. + * @rmtoll IMR IMx LL_EXTI_IsEnabledIT_0_31 + * @param ExtiLine This parameter can be one of the following values: + * @arg @ref LL_EXTI_LINE_0 + * @arg @ref LL_EXTI_LINE_1 + * @arg @ref LL_EXTI_LINE_2 + * @arg @ref LL_EXTI_LINE_3 + * @arg @ref LL_EXTI_LINE_4 + * @arg @ref LL_EXTI_LINE_5 + * @arg @ref LL_EXTI_LINE_6 + * @arg @ref LL_EXTI_LINE_7 + * @arg @ref LL_EXTI_LINE_8 + * @arg @ref LL_EXTI_LINE_9 + * @arg @ref LL_EXTI_LINE_10 + * @arg @ref LL_EXTI_LINE_11 + * @arg @ref LL_EXTI_LINE_12 + * @arg @ref LL_EXTI_LINE_13 + * @arg @ref LL_EXTI_LINE_14 + * @arg @ref LL_EXTI_LINE_15 + * @arg @ref LL_EXTI_LINE_16 + * @arg @ref LL_EXTI_LINE_17 + * @arg @ref LL_EXTI_LINE_18 + * @arg @ref LL_EXTI_LINE_19 + * @arg @ref LL_EXTI_LINE_ALL_0_31 + * @note Please check each device line mapping for EXTI Line availability + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_EXTI_IsEnabledIT_0_31(uint32_t ExtiLine) +{ + return (READ_BIT(EXTI->IMR, ExtiLine) == (ExtiLine)); +} + + +/** + * @} + */ + +/** @defgroup EXTI_LL_EF_Event_Management Event_Management + * @{ + */ + +/** + * @brief Enable ExtiLine Event request for Lines in range 0 to 31 + * @rmtoll EMR EMx LL_EXTI_EnableEvent_0_31 + * @param ExtiLine This parameter can be one of the following values: + * @arg @ref LL_EXTI_LINE_0 + * @arg @ref LL_EXTI_LINE_1 + * @arg @ref LL_EXTI_LINE_2 + * @arg @ref LL_EXTI_LINE_3 + * @arg @ref LL_EXTI_LINE_4 + * @arg @ref LL_EXTI_LINE_5 + * @arg @ref LL_EXTI_LINE_6 + * @arg @ref LL_EXTI_LINE_7 + * @arg @ref LL_EXTI_LINE_8 + * @arg @ref LL_EXTI_LINE_9 + * @arg @ref LL_EXTI_LINE_10 + * @arg @ref LL_EXTI_LINE_11 + * @arg @ref LL_EXTI_LINE_12 + * @arg @ref LL_EXTI_LINE_13 + * @arg @ref LL_EXTI_LINE_14 + * @arg @ref LL_EXTI_LINE_15 + * @arg @ref LL_EXTI_LINE_16 + * @arg @ref LL_EXTI_LINE_17 + * @arg @ref LL_EXTI_LINE_18 + * @arg @ref LL_EXTI_LINE_19 + * @arg @ref LL_EXTI_LINE_ALL_0_31 + * @note Please check each device line mapping for EXTI Line availability + * @retval None + */ +__STATIC_INLINE void LL_EXTI_EnableEvent_0_31(uint32_t ExtiLine) +{ + SET_BIT(EXTI->EMR, ExtiLine); + +} + + +/** + * @brief Disable ExtiLine Event request for Lines in range 0 to 31 + * @rmtoll EMR EMx LL_EXTI_DisableEvent_0_31 + * @param ExtiLine This parameter can be one of the following values: + * @arg @ref LL_EXTI_LINE_0 + * @arg @ref LL_EXTI_LINE_1 + * @arg @ref LL_EXTI_LINE_2 + * @arg @ref LL_EXTI_LINE_3 + * @arg @ref LL_EXTI_LINE_4 + * @arg @ref LL_EXTI_LINE_5 + * @arg @ref LL_EXTI_LINE_6 + * @arg @ref LL_EXTI_LINE_7 + * @arg @ref LL_EXTI_LINE_8 + * @arg @ref LL_EXTI_LINE_9 + * @arg @ref LL_EXTI_LINE_10 + * @arg @ref LL_EXTI_LINE_11 + * @arg @ref LL_EXTI_LINE_12 + * @arg @ref LL_EXTI_LINE_13 + * @arg @ref LL_EXTI_LINE_14 + * @arg @ref LL_EXTI_LINE_15 + * @arg @ref LL_EXTI_LINE_16 + * @arg @ref LL_EXTI_LINE_17 + * @arg @ref LL_EXTI_LINE_18 + * @arg @ref LL_EXTI_LINE_19 + * @arg @ref LL_EXTI_LINE_ALL_0_31 + * @note Please check each device line mapping for EXTI Line availability + * @retval None + */ +__STATIC_INLINE void LL_EXTI_DisableEvent_0_31(uint32_t ExtiLine) +{ + CLEAR_BIT(EXTI->EMR, ExtiLine); +} + + +/** + * @brief Indicate if ExtiLine Event request is enabled for Lines in range 0 to 31 + * @rmtoll EMR EMx LL_EXTI_IsEnabledEvent_0_31 + * @param ExtiLine This parameter can be one of the following values: + * @arg @ref LL_EXTI_LINE_0 + * @arg @ref LL_EXTI_LINE_1 + * @arg @ref LL_EXTI_LINE_2 + * @arg @ref LL_EXTI_LINE_3 + * @arg @ref LL_EXTI_LINE_4 + * @arg @ref LL_EXTI_LINE_5 + * @arg @ref LL_EXTI_LINE_6 + * @arg @ref LL_EXTI_LINE_7 + * @arg @ref LL_EXTI_LINE_8 + * @arg @ref LL_EXTI_LINE_9 + * @arg @ref LL_EXTI_LINE_10 + * @arg @ref LL_EXTI_LINE_11 + * @arg @ref LL_EXTI_LINE_12 + * @arg @ref LL_EXTI_LINE_13 + * @arg @ref LL_EXTI_LINE_14 + * @arg @ref LL_EXTI_LINE_15 + * @arg @ref LL_EXTI_LINE_16 + * @arg @ref LL_EXTI_LINE_17 + * @arg @ref LL_EXTI_LINE_18 + * @arg @ref LL_EXTI_LINE_19 + * @arg @ref LL_EXTI_LINE_ALL_0_31 + * @note Please check each device line mapping for EXTI Line availability + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_EXTI_IsEnabledEvent_0_31(uint32_t ExtiLine) +{ + return (READ_BIT(EXTI->EMR, ExtiLine) == (ExtiLine)); + +} + + +/** + * @} + */ + +/** @defgroup EXTI_LL_EF_Rising_Trigger_Management Rising_Trigger_Management + * @{ + */ + +/** + * @brief Enable ExtiLine Rising Edge Trigger for Lines in range 0 to 31 + * @note The configurable wakeup lines are edge-triggered. No glitch must be + * generated on these lines. If a rising edge on a configurable interrupt + * line occurs during a write operation in the EXTI_RTSR register, the + * pending bit is not set. + * Rising and falling edge triggers can be set for + * the same interrupt line. In this case, both generate a trigger + * condition. + * @rmtoll RTSR RTx LL_EXTI_EnableRisingTrig_0_31 + * @param ExtiLine This parameter can be a combination of the following values: + * @arg @ref LL_EXTI_LINE_0 + * @arg @ref LL_EXTI_LINE_1 + * @arg @ref LL_EXTI_LINE_2 + * @arg @ref LL_EXTI_LINE_3 + * @arg @ref LL_EXTI_LINE_4 + * @arg @ref LL_EXTI_LINE_5 + * @arg @ref LL_EXTI_LINE_6 + * @arg @ref LL_EXTI_LINE_7 + * @arg @ref LL_EXTI_LINE_8 + * @arg @ref LL_EXTI_LINE_9 + * @arg @ref LL_EXTI_LINE_10 + * @arg @ref LL_EXTI_LINE_11 + * @arg @ref LL_EXTI_LINE_12 + * @arg @ref LL_EXTI_LINE_13 + * @arg @ref LL_EXTI_LINE_14 + * @arg @ref LL_EXTI_LINE_15 + * @arg @ref LL_EXTI_LINE_16 + * @arg @ref LL_EXTI_LINE_18 + * @arg @ref LL_EXTI_LINE_19 + * @note Please check each device line mapping for EXTI Line availability + * @retval None + */ +__STATIC_INLINE void LL_EXTI_EnableRisingTrig_0_31(uint32_t ExtiLine) +{ + SET_BIT(EXTI->RTSR, ExtiLine); + +} + + +/** + * @brief Disable ExtiLine Rising Edge Trigger for Lines in range 0 to 31 + * @note The configurable wakeup lines are edge-triggered. No glitch must be + * generated on these lines. If a rising edge on a configurable interrupt + * line occurs during a write operation in the EXTI_RTSR register, the + * pending bit is not set. + * Rising and falling edge triggers can be set for + * the same interrupt line. In this case, both generate a trigger + * condition. + * @rmtoll RTSR RTx LL_EXTI_DisableRisingTrig_0_31 + * @param ExtiLine This parameter can be a combination of the following values: + * @arg @ref LL_EXTI_LINE_0 + * @arg @ref LL_EXTI_LINE_1 + * @arg @ref LL_EXTI_LINE_2 + * @arg @ref LL_EXTI_LINE_3 + * @arg @ref LL_EXTI_LINE_4 + * @arg @ref LL_EXTI_LINE_5 + * @arg @ref LL_EXTI_LINE_6 + * @arg @ref LL_EXTI_LINE_7 + * @arg @ref LL_EXTI_LINE_8 + * @arg @ref LL_EXTI_LINE_9 + * @arg @ref LL_EXTI_LINE_10 + * @arg @ref LL_EXTI_LINE_11 + * @arg @ref LL_EXTI_LINE_12 + * @arg @ref LL_EXTI_LINE_13 + * @arg @ref LL_EXTI_LINE_14 + * @arg @ref LL_EXTI_LINE_15 + * @arg @ref LL_EXTI_LINE_16 + * @arg @ref LL_EXTI_LINE_18 + * @arg @ref LL_EXTI_LINE_19 + * @note Please check each device line mapping for EXTI Line availability + * @retval None + */ +__STATIC_INLINE void LL_EXTI_DisableRisingTrig_0_31(uint32_t ExtiLine) +{ + CLEAR_BIT(EXTI->RTSR, ExtiLine); + +} + + +/** + * @brief Check if rising edge trigger is enabled for Lines in range 0 to 31 + * @rmtoll RTSR RTx LL_EXTI_IsEnabledRisingTrig_0_31 + * @param ExtiLine This parameter can be a combination of the following values: + * @arg @ref LL_EXTI_LINE_0 + * @arg @ref LL_EXTI_LINE_1 + * @arg @ref LL_EXTI_LINE_2 + * @arg @ref LL_EXTI_LINE_3 + * @arg @ref LL_EXTI_LINE_4 + * @arg @ref LL_EXTI_LINE_5 + * @arg @ref LL_EXTI_LINE_6 + * @arg @ref LL_EXTI_LINE_7 + * @arg @ref LL_EXTI_LINE_8 + * @arg @ref LL_EXTI_LINE_9 + * @arg @ref LL_EXTI_LINE_10 + * @arg @ref LL_EXTI_LINE_11 + * @arg @ref LL_EXTI_LINE_12 + * @arg @ref LL_EXTI_LINE_13 + * @arg @ref LL_EXTI_LINE_14 + * @arg @ref LL_EXTI_LINE_15 + * @arg @ref LL_EXTI_LINE_16 + * @arg @ref LL_EXTI_LINE_18 + * @arg @ref LL_EXTI_LINE_19 + * @note Please check each device line mapping for EXTI Line availability + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_EXTI_IsEnabledRisingTrig_0_31(uint32_t ExtiLine) +{ + return (READ_BIT(EXTI->RTSR, ExtiLine) == (ExtiLine)); +} + + +/** + * @} + */ + +/** @defgroup EXTI_LL_EF_Falling_Trigger_Management Falling_Trigger_Management + * @{ + */ + +/** + * @brief Enable ExtiLine Falling Edge Trigger for Lines in range 0 to 31 + * @note The configurable wakeup lines are edge-triggered. No glitch must be + * generated on these lines. If a falling edge on a configurable interrupt + * line occurs during a write operation in the EXTI_FTSR register, the + * pending bit is not set. + * Rising and falling edge triggers can be set for + * the same interrupt line. In this case, both generate a trigger + * condition. + * @rmtoll FTSR FTx LL_EXTI_EnableFallingTrig_0_31 + * @param ExtiLine This parameter can be a combination of the following values: + * @arg @ref LL_EXTI_LINE_0 + * @arg @ref LL_EXTI_LINE_1 + * @arg @ref LL_EXTI_LINE_2 + * @arg @ref LL_EXTI_LINE_3 + * @arg @ref LL_EXTI_LINE_4 + * @arg @ref LL_EXTI_LINE_5 + * @arg @ref LL_EXTI_LINE_6 + * @arg @ref LL_EXTI_LINE_7 + * @arg @ref LL_EXTI_LINE_8 + * @arg @ref LL_EXTI_LINE_9 + * @arg @ref LL_EXTI_LINE_10 + * @arg @ref LL_EXTI_LINE_11 + * @arg @ref LL_EXTI_LINE_12 + * @arg @ref LL_EXTI_LINE_13 + * @arg @ref LL_EXTI_LINE_14 + * @arg @ref LL_EXTI_LINE_15 + * @arg @ref LL_EXTI_LINE_16 + * @arg @ref LL_EXTI_LINE_18 + * @arg @ref LL_EXTI_LINE_19 + * @note Please check each device line mapping for EXTI Line availability + * @retval None + */ +__STATIC_INLINE void LL_EXTI_EnableFallingTrig_0_31(uint32_t ExtiLine) +{ + SET_BIT(EXTI->FTSR, ExtiLine); +} + + +/** + * @brief Disable ExtiLine Falling Edge Trigger for Lines in range 0 to 31 + * @note The configurable wakeup lines are edge-triggered. No glitch must be + * generated on these lines. If a Falling edge on a configurable interrupt + * line occurs during a write operation in the EXTI_FTSR register, the + * pending bit is not set. + * Rising and falling edge triggers can be set for the same interrupt line. + * In this case, both generate a trigger condition. + * @rmtoll FTSR FTx LL_EXTI_DisableFallingTrig_0_31 + * @param ExtiLine This parameter can be a combination of the following values: + * @arg @ref LL_EXTI_LINE_0 + * @arg @ref LL_EXTI_LINE_1 + * @arg @ref LL_EXTI_LINE_2 + * @arg @ref LL_EXTI_LINE_3 + * @arg @ref LL_EXTI_LINE_4 + * @arg @ref LL_EXTI_LINE_5 + * @arg @ref LL_EXTI_LINE_6 + * @arg @ref LL_EXTI_LINE_7 + * @arg @ref LL_EXTI_LINE_8 + * @arg @ref LL_EXTI_LINE_9 + * @arg @ref LL_EXTI_LINE_10 + * @arg @ref LL_EXTI_LINE_11 + * @arg @ref LL_EXTI_LINE_12 + * @arg @ref LL_EXTI_LINE_13 + * @arg @ref LL_EXTI_LINE_14 + * @arg @ref LL_EXTI_LINE_15 + * @arg @ref LL_EXTI_LINE_16 + * @arg @ref LL_EXTI_LINE_18 + * @arg @ref LL_EXTI_LINE_19 + * @note Please check each device line mapping for EXTI Line availability + * @retval None + */ +__STATIC_INLINE void LL_EXTI_DisableFallingTrig_0_31(uint32_t ExtiLine) +{ + CLEAR_BIT(EXTI->FTSR, ExtiLine); +} + + +/** + * @brief Check if falling edge trigger is enabled for Lines in range 0 to 31 + * @rmtoll FTSR FTx LL_EXTI_IsEnabledFallingTrig_0_31 + * @param ExtiLine This parameter can be a combination of the following values: + * @arg @ref LL_EXTI_LINE_0 + * @arg @ref LL_EXTI_LINE_1 + * @arg @ref LL_EXTI_LINE_2 + * @arg @ref LL_EXTI_LINE_3 + * @arg @ref LL_EXTI_LINE_4 + * @arg @ref LL_EXTI_LINE_5 + * @arg @ref LL_EXTI_LINE_6 + * @arg @ref LL_EXTI_LINE_7 + * @arg @ref LL_EXTI_LINE_8 + * @arg @ref LL_EXTI_LINE_9 + * @arg @ref LL_EXTI_LINE_10 + * @arg @ref LL_EXTI_LINE_11 + * @arg @ref LL_EXTI_LINE_12 + * @arg @ref LL_EXTI_LINE_13 + * @arg @ref LL_EXTI_LINE_14 + * @arg @ref LL_EXTI_LINE_15 + * @arg @ref LL_EXTI_LINE_16 + * @arg @ref LL_EXTI_LINE_18 + * @arg @ref LL_EXTI_LINE_19 + * @note Please check each device line mapping for EXTI Line availability + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_EXTI_IsEnabledFallingTrig_0_31(uint32_t ExtiLine) +{ + return (READ_BIT(EXTI->FTSR, ExtiLine) == (ExtiLine)); +} + + +/** + * @} + */ + +/** @defgroup EXTI_LL_EF_Software_Interrupt_Management Software_Interrupt_Management + * @{ + */ + +/** + * @brief Generate a software Interrupt Event for Lines in range 0 to 31 + * @note If the interrupt is enabled on this line in the EXTI_IMR, writing a 1 to + * this bit when it is at '0' sets the corresponding pending bit in EXTI_PR + * resulting in an interrupt request generation. + * This bit is cleared by clearing the corresponding bit in the EXTI_PR + * register (by writing a 1 into the bit) + * @rmtoll SWIER SWIx LL_EXTI_GenerateSWI_0_31 + * @param ExtiLine This parameter can be a combination of the following values: + * @arg @ref LL_EXTI_LINE_0 + * @arg @ref LL_EXTI_LINE_1 + * @arg @ref LL_EXTI_LINE_2 + * @arg @ref LL_EXTI_LINE_3 + * @arg @ref LL_EXTI_LINE_4 + * @arg @ref LL_EXTI_LINE_5 + * @arg @ref LL_EXTI_LINE_6 + * @arg @ref LL_EXTI_LINE_7 + * @arg @ref LL_EXTI_LINE_8 + * @arg @ref LL_EXTI_LINE_9 + * @arg @ref LL_EXTI_LINE_10 + * @arg @ref LL_EXTI_LINE_11 + * @arg @ref LL_EXTI_LINE_12 + * @arg @ref LL_EXTI_LINE_13 + * @arg @ref LL_EXTI_LINE_14 + * @arg @ref LL_EXTI_LINE_15 + * @arg @ref LL_EXTI_LINE_16 + * @arg @ref LL_EXTI_LINE_18 + * @arg @ref LL_EXTI_LINE_19 + * @note Please check each device line mapping for EXTI Line availability + * @retval None + */ +__STATIC_INLINE void LL_EXTI_GenerateSWI_0_31(uint32_t ExtiLine) +{ + SET_BIT(EXTI->SWIER, ExtiLine); +} + + +/** + * @} + */ + +/** @defgroup EXTI_LL_EF_Flag_Management Flag_Management + * @{ + */ + +/** + * @brief Check if the ExtLine Flag is set or not for Lines in range 0 to 31 + * @note This bit is set when the selected edge event arrives on the interrupt + * line. This bit is cleared by writing a 1 to the bit. + * @rmtoll PR PIFx LL_EXTI_IsActiveFlag_0_31 + * @param ExtiLine This parameter can be a combination of the following values: + * @arg @ref LL_EXTI_LINE_0 + * @arg @ref LL_EXTI_LINE_1 + * @arg @ref LL_EXTI_LINE_2 + * @arg @ref LL_EXTI_LINE_3 + * @arg @ref LL_EXTI_LINE_4 + * @arg @ref LL_EXTI_LINE_5 + * @arg @ref LL_EXTI_LINE_6 + * @arg @ref LL_EXTI_LINE_7 + * @arg @ref LL_EXTI_LINE_8 + * @arg @ref LL_EXTI_LINE_9 + * @arg @ref LL_EXTI_LINE_10 + * @arg @ref LL_EXTI_LINE_11 + * @arg @ref LL_EXTI_LINE_12 + * @arg @ref LL_EXTI_LINE_13 + * @arg @ref LL_EXTI_LINE_14 + * @arg @ref LL_EXTI_LINE_15 + * @arg @ref LL_EXTI_LINE_16 + * @arg @ref LL_EXTI_LINE_18 + * @arg @ref LL_EXTI_LINE_19 + * @note Please check each device line mapping for EXTI Line availability + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_EXTI_IsActiveFlag_0_31(uint32_t ExtiLine) +{ + return (READ_BIT(EXTI->PR, ExtiLine) == (ExtiLine)); +} + + +/** + * @brief Read ExtLine Combination Flag for Lines in range 0 to 31 + * @note This bit is set when the selected edge event arrives on the interrupt + * line. This bit is cleared by writing a 1 to the bit. + * @rmtoll PR PIFx LL_EXTI_ReadFlag_0_31 + * @param ExtiLine This parameter can be a combination of the following values: + * @arg @ref LL_EXTI_LINE_0 + * @arg @ref LL_EXTI_LINE_1 + * @arg @ref LL_EXTI_LINE_2 + * @arg @ref LL_EXTI_LINE_3 + * @arg @ref LL_EXTI_LINE_4 + * @arg @ref LL_EXTI_LINE_5 + * @arg @ref LL_EXTI_LINE_6 + * @arg @ref LL_EXTI_LINE_7 + * @arg @ref LL_EXTI_LINE_8 + * @arg @ref LL_EXTI_LINE_9 + * @arg @ref LL_EXTI_LINE_10 + * @arg @ref LL_EXTI_LINE_11 + * @arg @ref LL_EXTI_LINE_12 + * @arg @ref LL_EXTI_LINE_13 + * @arg @ref LL_EXTI_LINE_14 + * @arg @ref LL_EXTI_LINE_15 + * @arg @ref LL_EXTI_LINE_16 + * @arg @ref LL_EXTI_LINE_18 + * @arg @ref LL_EXTI_LINE_19 + * @note Please check each device line mapping for EXTI Line availability + * @retval @note This bit is set when the selected edge event arrives on the interrupt + */ +__STATIC_INLINE uint32_t LL_EXTI_ReadFlag_0_31(uint32_t ExtiLine) +{ + return (uint32_t)(READ_BIT(EXTI->PR, ExtiLine)); +} + + +/** + * @brief Clear ExtLine Flags for Lines in range 0 to 31 + * @note This bit is set when the selected edge event arrives on the interrupt + * line. This bit is cleared by writing a 1 to the bit. + * @rmtoll PR PIFx LL_EXTI_ClearFlag_0_31 + * @param ExtiLine This parameter can be a combination of the following values: + * @arg @ref LL_EXTI_LINE_0 + * @arg @ref LL_EXTI_LINE_1 + * @arg @ref LL_EXTI_LINE_2 + * @arg @ref LL_EXTI_LINE_3 + * @arg @ref LL_EXTI_LINE_4 + * @arg @ref LL_EXTI_LINE_5 + * @arg @ref LL_EXTI_LINE_6 + * @arg @ref LL_EXTI_LINE_7 + * @arg @ref LL_EXTI_LINE_8 + * @arg @ref LL_EXTI_LINE_9 + * @arg @ref LL_EXTI_LINE_10 + * @arg @ref LL_EXTI_LINE_11 + * @arg @ref LL_EXTI_LINE_12 + * @arg @ref LL_EXTI_LINE_13 + * @arg @ref LL_EXTI_LINE_14 + * @arg @ref LL_EXTI_LINE_15 + * @arg @ref LL_EXTI_LINE_16 + * @arg @ref LL_EXTI_LINE_18 + * @arg @ref LL_EXTI_LINE_19 + * @note Please check each device line mapping for EXTI Line availability + * @retval None + */ +__STATIC_INLINE void LL_EXTI_ClearFlag_0_31(uint32_t ExtiLine) +{ + WRITE_REG(EXTI->PR, ExtiLine); +} + + +/** + * @} + */ + +#if defined(USE_FULL_LL_DRIVER) +/** @defgroup EXTI_LL_EF_Init Initialization and de-initialization functions + * @{ + */ + +uint32_t LL_EXTI_Init(LL_EXTI_InitTypeDef *EXTI_InitStruct); +uint32_t LL_EXTI_DeInit(void); +void LL_EXTI_StructInit(LL_EXTI_InitTypeDef *EXTI_InitStruct); + + +/** + * @} + */ +#endif /* USE_FULL_LL_DRIVER */ + +/** + * @} + */ + +/** + * @} + */ + +#endif /* EXTI */ + +/** + * @} + */ + +#ifdef __cplusplus +} +#endif + +#endif /* STM32F1xx_LL_EXTI_H */ + +/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/ diff --git a/LLDrivers/inc/stm32f1xx_ll_fsmc.h b/LLDrivers/inc/stm32f1xx_ll_fsmc.h new file mode 100644 index 0000000..b3a8e63 --- /dev/null +++ b/LLDrivers/inc/stm32f1xx_ll_fsmc.h @@ -0,0 +1,951 @@ +/** + ****************************************************************************** + * @file stm32f1xx_ll_fsmc.h + * @author MCD Application Team + * @brief Header file of FSMC HAL module. + ****************************************************************************** + * @attention + * + *

© Copyright (c) 2016 STMicroelectronics. + * All rights reserved.

+ * + * This software component is licensed by ST under BSD 3-Clause license, + * the "License"; You may not use this file except in compliance with the + * License. You may obtain a copy of the License at: + * opensource.org/licenses/BSD-3-Clause + * + ****************************************************************************** + */ + +/* Define to prevent recursive inclusion -------------------------------------*/ +#ifndef STM32F1xx_LL_FSMC_H +#define STM32F1xx_LL_FSMC_H + +#ifdef __cplusplus +extern "C" { +#endif + +/* Includes ------------------------------------------------------------------*/ +#include "stm32f1xx_hal_def.h" + +/** @addtogroup STM32F1xx_HAL_Driver + * @{ + */ + +/** @addtogroup FSMC_LL + * @{ + */ + +/** @addtogroup FSMC_LL_Private_Macros + * @{ + */ +#if defined FSMC_BANK1 + +#define IS_FSMC_NORSRAM_BANK(__BANK__) (((__BANK__) == FSMC_NORSRAM_BANK1) || \ + ((__BANK__) == FSMC_NORSRAM_BANK2) || \ + ((__BANK__) == FSMC_NORSRAM_BANK3) || \ + ((__BANK__) == FSMC_NORSRAM_BANK4)) +#define IS_FSMC_MUX(__MUX__) (((__MUX__) == FSMC_DATA_ADDRESS_MUX_DISABLE) || \ + ((__MUX__) == FSMC_DATA_ADDRESS_MUX_ENABLE)) +#define IS_FSMC_MEMORY(__MEMORY__) (((__MEMORY__) == FSMC_MEMORY_TYPE_SRAM) || \ + ((__MEMORY__) == FSMC_MEMORY_TYPE_PSRAM)|| \ + ((__MEMORY__) == FSMC_MEMORY_TYPE_NOR)) +#define IS_FSMC_NORSRAM_MEMORY_WIDTH(__WIDTH__) (((__WIDTH__) == FSMC_NORSRAM_MEM_BUS_WIDTH_8) || \ + ((__WIDTH__) == FSMC_NORSRAM_MEM_BUS_WIDTH_16) || \ + ((__WIDTH__) == FSMC_NORSRAM_MEM_BUS_WIDTH_32)) +#define IS_FSMC_PAGESIZE(__SIZE__) (((__SIZE__) == FSMC_PAGE_SIZE_NONE) || \ + ((__SIZE__) == FSMC_PAGE_SIZE_128) || \ + ((__SIZE__) == FSMC_PAGE_SIZE_256) || \ + ((__SIZE__) == FSMC_PAGE_SIZE_512) || \ + ((__SIZE__) == FSMC_PAGE_SIZE_1024)) +#define IS_FSMC_ACCESS_MODE(__MODE__) (((__MODE__) == FSMC_ACCESS_MODE_A) || \ + ((__MODE__) == FSMC_ACCESS_MODE_B) || \ + ((__MODE__) == FSMC_ACCESS_MODE_C) || \ + ((__MODE__) == FSMC_ACCESS_MODE_D)) +#define IS_FSMC_BURSTMODE(__STATE__) (((__STATE__) == FSMC_BURST_ACCESS_MODE_DISABLE) || \ + ((__STATE__) == FSMC_BURST_ACCESS_MODE_ENABLE)) +#define IS_FSMC_WAIT_POLARITY(__POLARITY__) (((__POLARITY__) == FSMC_WAIT_SIGNAL_POLARITY_LOW) || \ + ((__POLARITY__) == FSMC_WAIT_SIGNAL_POLARITY_HIGH)) +#define IS_FSMC_WRAP_MODE(__MODE__) (((__MODE__) == FSMC_WRAP_MODE_DISABLE) || \ + ((__MODE__) == FSMC_WRAP_MODE_ENABLE)) +#define IS_FSMC_WAIT_SIGNAL_ACTIVE(__ACTIVE__) (((__ACTIVE__) == FSMC_WAIT_TIMING_BEFORE_WS) || \ + ((__ACTIVE__) == FSMC_WAIT_TIMING_DURING_WS)) +#define IS_FSMC_WRITE_OPERATION(__OPERATION__) (((__OPERATION__) == FSMC_WRITE_OPERATION_DISABLE) || \ + ((__OPERATION__) == FSMC_WRITE_OPERATION_ENABLE)) +#define IS_FSMC_WAITE_SIGNAL(__SIGNAL__) (((__SIGNAL__) == FSMC_WAIT_SIGNAL_DISABLE) || \ + ((__SIGNAL__) == FSMC_WAIT_SIGNAL_ENABLE)) +#define IS_FSMC_EXTENDED_MODE(__MODE__) (((__MODE__) == FSMC_EXTENDED_MODE_DISABLE) || \ + ((__MODE__) == FSMC_EXTENDED_MODE_ENABLE)) +#define IS_FSMC_ASYNWAIT(__STATE__) (((__STATE__) == FSMC_ASYNCHRONOUS_WAIT_DISABLE) || \ + ((__STATE__) == FSMC_ASYNCHRONOUS_WAIT_ENABLE)) +#define IS_FSMC_DATA_LATENCY(__LATENCY__) (((__LATENCY__) > 1U) && ((__LATENCY__) <= 17U)) +#define IS_FSMC_WRITE_BURST(__BURST__) (((__BURST__) == FSMC_WRITE_BURST_DISABLE) || \ + ((__BURST__) == FSMC_WRITE_BURST_ENABLE)) +#define IS_FSMC_CONTINOUS_CLOCK(__CCLOCK__) (((__CCLOCK__) == FSMC_CONTINUOUS_CLOCK_SYNC_ONLY) || \ + ((__CCLOCK__) == FSMC_CONTINUOUS_CLOCK_SYNC_ASYNC)) +#define IS_FSMC_ADDRESS_SETUP_TIME(__TIME__) ((__TIME__) <= 15U) +#define IS_FSMC_ADDRESS_HOLD_TIME(__TIME__) (((__TIME__) > 0U) && ((__TIME__) <= 15U)) +#define IS_FSMC_DATASETUP_TIME(__TIME__) (((__TIME__) > 0U) && ((__TIME__) <= 255U)) +#define IS_FSMC_DATAHOLD_DURATION(__DATAHOLD__) ((__DATAHOLD__) <= 3U) +#define IS_FSMC_TURNAROUND_TIME(__TIME__) ((__TIME__) <= 15U) +#define IS_FSMC_CLK_DIV(__DIV__) (((__DIV__) > 1U) && ((__DIV__) <= 16U)) +#define IS_FSMC_NORSRAM_DEVICE(__INSTANCE__) ((__INSTANCE__) == FSMC_NORSRAM_DEVICE) +#define IS_FSMC_NORSRAM_EXTENDED_DEVICE(__INSTANCE__) ((__INSTANCE__) == FSMC_NORSRAM_EXTENDED_DEVICE) + +#endif /* FSMC_BANK1 */ +#if defined(FSMC_BANK3) + +#define IS_FSMC_NAND_BANK(__BANK__) ((__BANK__) == FSMC_NAND_BANK3) +#define IS_FSMC_WAIT_FEATURE(__FEATURE__) (((__FEATURE__) == FSMC_NAND_PCC_WAIT_FEATURE_DISABLE) || \ + ((__FEATURE__) == FSMC_NAND_PCC_WAIT_FEATURE_ENABLE)) +#define IS_FSMC_NAND_MEMORY_WIDTH(__WIDTH__) (((__WIDTH__) == FSMC_NAND_PCC_MEM_BUS_WIDTH_8) || \ + ((__WIDTH__) == FSMC_NAND_PCC_MEM_BUS_WIDTH_16)) +#define IS_FSMC_ECC_STATE(__STATE__) (((__STATE__) == FSMC_NAND_ECC_DISABLE) || \ + ((__STATE__) == FSMC_NAND_ECC_ENABLE)) + +#define IS_FSMC_ECCPAGE_SIZE(__SIZE__) (((__SIZE__) == FSMC_NAND_ECC_PAGE_SIZE_256BYTE) || \ + ((__SIZE__) == FSMC_NAND_ECC_PAGE_SIZE_512BYTE) || \ + ((__SIZE__) == FSMC_NAND_ECC_PAGE_SIZE_1024BYTE) || \ + ((__SIZE__) == FSMC_NAND_ECC_PAGE_SIZE_2048BYTE) || \ + ((__SIZE__) == FSMC_NAND_ECC_PAGE_SIZE_4096BYTE) || \ + ((__SIZE__) == FSMC_NAND_ECC_PAGE_SIZE_8192BYTE)) +#define IS_FSMC_TCLR_TIME(__TIME__) ((__TIME__) <= 255U) +#define IS_FSMC_TAR_TIME(__TIME__) ((__TIME__) <= 255U) +#define IS_FSMC_SETUP_TIME(__TIME__) ((__TIME__) <= 254U) +#define IS_FSMC_WAIT_TIME(__TIME__) ((__TIME__) <= 254U) +#define IS_FSMC_HOLD_TIME(__TIME__) ((__TIME__) <= 254U) +#define IS_FSMC_HIZ_TIME(__TIME__) ((__TIME__) <= 254U) +#define IS_FSMC_NAND_DEVICE(__INSTANCE__) ((__INSTANCE__) == FSMC_NAND_DEVICE) + +#endif /* FSMC_BANK3 */ +#if defined(FSMC_BANK4) +#define IS_FSMC_PCCARD_DEVICE(__INSTANCE__) ((__INSTANCE__) == FSMC_PCCARD_DEVICE) + +#endif /* FSMC_BANK4 */ + +/** + * @} + */ + +/* Exported typedef ----------------------------------------------------------*/ + +/** @defgroup FSMC_LL_Exported_typedef FSMC Low Layer Exported Types + * @{ + */ + +#if defined FSMC_BANK1 +#define FSMC_NORSRAM_TypeDef FSMC_Bank1_TypeDef +#define FSMC_NORSRAM_EXTENDED_TypeDef FSMC_Bank1E_TypeDef +#endif /* FSMC_BANK1 */ +#if defined(FSMC_BANK3) +#define FSMC_NAND_TypeDef FSMC_Bank2_3_TypeDef +#endif /* FSMC_BANK3 */ +#if defined(FSMC_BANK4) +#define FSMC_PCCARD_TypeDef FSMC_Bank4_TypeDef +#endif /* FSMC_BANK4 */ + +#if defined FSMC_BANK1 +#define FSMC_NORSRAM_DEVICE FSMC_Bank1 +#define FSMC_NORSRAM_EXTENDED_DEVICE FSMC_Bank1E +#endif /* FSMC_BANK1 */ +#if defined(FSMC_BANK3) +#define FSMC_NAND_DEVICE FSMC_Bank2_3 +#endif /* FSMC_BANK3 */ +#if defined(FSMC_BANK4) +#define FSMC_PCCARD_DEVICE FSMC_Bank4 +#endif /* FSMC_BANK4 */ + +#if defined FSMC_BANK1 +/** + * @brief FSMC NORSRAM Configuration Structure definition + */ +typedef struct +{ + uint32_t NSBank; /*!< Specifies the NORSRAM memory device that will be used. + This parameter can be a value of @ref FSMC_NORSRAM_Bank */ + + uint32_t DataAddressMux; /*!< Specifies whether the address and data values are + multiplexed on the data bus or not. + This parameter can be a value of @ref FSMC_Data_Address_Bus_Multiplexing */ + + uint32_t MemoryType; /*!< Specifies the type of external memory attached to + the corresponding memory device. + This parameter can be a value of @ref FSMC_Memory_Type */ + + uint32_t MemoryDataWidth; /*!< Specifies the external memory device width. + This parameter can be a value of @ref FSMC_NORSRAM_Data_Width */ + + uint32_t BurstAccessMode; /*!< Enables or disables the burst access mode for Flash memory, + valid only with synchronous burst Flash memories. + This parameter can be a value of @ref FSMC_Burst_Access_Mode */ + + uint32_t WaitSignalPolarity; /*!< Specifies the wait signal polarity, valid only when accessing + the Flash memory in burst mode. + This parameter can be a value of @ref FSMC_Wait_Signal_Polarity */ + + uint32_t WrapMode; /*!< Enables or disables the Wrapped burst access mode for Flash + memory, valid only when accessing Flash memories in burst mode. + This parameter can be a value of @ref FSMC_Wrap_Mode */ + + uint32_t WaitSignalActive; /*!< Specifies if the wait signal is asserted by the memory one + clock cycle before the wait state or during the wait state, + valid only when accessing memories in burst mode. + This parameter can be a value of @ref FSMC_Wait_Timing */ + + uint32_t WriteOperation; /*!< Enables or disables the write operation in the selected device by the FSMC. + This parameter can be a value of @ref FSMC_Write_Operation */ + + uint32_t WaitSignal; /*!< Enables or disables the wait state insertion via wait + signal, valid for Flash memory access in burst mode. + This parameter can be a value of @ref FSMC_Wait_Signal */ + + uint32_t ExtendedMode; /*!< Enables or disables the extended mode. + This parameter can be a value of @ref FSMC_Extended_Mode */ + + uint32_t AsynchronousWait; /*!< Enables or disables wait signal during asynchronous transfers, + valid only with asynchronous Flash memories. + This parameter can be a value of @ref FSMC_AsynchronousWait */ + + uint32_t WriteBurst; /*!< Enables or disables the write burst operation. + This parameter can be a value of @ref FSMC_Write_Burst */ + + + uint32_t PageSize; /*!< Specifies the memory page size. + This parameter can be a value of @ref FSMC_Page_Size */ +}FSMC_NORSRAM_InitTypeDef; + +/** + * @brief FSMC NORSRAM Timing parameters structure definition + */ +typedef struct +{ + uint32_t AddressSetupTime; /*!< Defines the number of HCLK cycles to configure + the duration of the address setup time. + This parameter can be a value between Min_Data = 0 and Max_Data = 15. + @note This parameter is not used with synchronous NOR Flash memories. */ + + uint32_t AddressHoldTime; /*!< Defines the number of HCLK cycles to configure + the duration of the address hold time. + This parameter can be a value between Min_Data = 1 and Max_Data = 15. + @note This parameter is not used with synchronous NOR Flash memories. */ + + uint32_t DataSetupTime; /*!< Defines the number of HCLK cycles to configure + the duration of the data setup time. + This parameter can be a value between Min_Data = 1 and Max_Data = 255. + @note This parameter is used for SRAMs, ROMs and asynchronous multiplexed + NOR Flash memories. */ + + uint32_t BusTurnAroundDuration; /*!< Defines the number of HCLK cycles to configure + the duration of the bus turnaround. + This parameter can be a value between Min_Data = 0 and Max_Data = 15. + @note This parameter is only used for multiplexed NOR Flash memories. */ + + uint32_t CLKDivision; /*!< Defines the period of CLK clock output signal, expressed in number of + HCLK cycles. This parameter can be a value between Min_Data = 2 and Max_Data = 16. + @note This parameter is not used for asynchronous NOR Flash, SRAM or ROM + accesses. */ + + uint32_t DataLatency; /*!< Defines the number of memory clock cycles to issue + to the memory before getting the first data. + The parameter value depends on the memory type as shown below: + - It must be set to 0 in case of a CRAM + - It is don't care in asynchronous NOR, SRAM or ROM accesses + - It may assume a value between Min_Data = 2 and Max_Data = 17 in NOR Flash memories + with synchronous burst mode enable */ + + uint32_t AccessMode; /*!< Specifies the asynchronous access mode. + This parameter can be a value of @ref FSMC_Access_Mode */ +}FSMC_NORSRAM_TimingTypeDef; +#endif /* FSMC_BANK1 */ + +#if defined(FSMC_BANK3) +/** + * @brief FSMC NAND Configuration Structure definition + */ +typedef struct +{ + uint32_t NandBank; /*!< Specifies the NAND memory device that will be used. + This parameter can be a value of @ref FSMC_NAND_Bank */ + + uint32_t Waitfeature; /*!< Enables or disables the Wait feature for the NAND Memory device. + This parameter can be any value of @ref FSMC_Wait_feature */ + + uint32_t MemoryDataWidth; /*!< Specifies the external memory device width. + This parameter can be any value of @ref FSMC_NAND_Data_Width */ + + uint32_t EccComputation; /*!< Enables or disables the ECC computation. + This parameter can be any value of @ref FSMC_ECC */ + + uint32_t ECCPageSize; /*!< Defines the page size for the extended ECC. + This parameter can be any value of @ref FSMC_ECC_Page_Size */ + + uint32_t TCLRSetupTime; /*!< Defines the number of HCLK cycles to configure the + delay between CLE low and RE low. + This parameter can be a value between Min_Data = 0 and Max_Data = 255 */ + + uint32_t TARSetupTime; /*!< Defines the number of HCLK cycles to configure the + delay between ALE low and RE low. + This parameter can be a number between Min_Data = 0 and Max_Data = 255 */ +}FSMC_NAND_InitTypeDef; +#endif + +#if defined(FSMC_BANK3)||defined(FSMC_BANK4) +/** + * @brief FSMC NAND Timing parameters structure definition + */ +typedef struct +{ + uint32_t SetupTime; /*!< Defines the number of HCLK cycles to setup address before + the command assertion for NAND-Flash read or write access + to common/Attribute or I/O memory space (depending on + the memory space timing to be configured). + This parameter can be a value between Min_Data = 0 and Max_Data = 254 */ + + uint32_t WaitSetupTime; /*!< Defines the minimum number of HCLK cycles to assert the + command for NAND-Flash read or write access to + common/Attribute or I/O memory space (depending on the + memory space timing to be configured). + This parameter can be a number between Min_Data = 0 and Max_Data = 254 */ + + uint32_t HoldSetupTime; /*!< Defines the number of HCLK clock cycles to hold address + (and data for write access) after the command de-assertion + for NAND-Flash read or write access to common/Attribute + or I/O memory space (depending on the memory space timing + to be configured). + This parameter can be a number between Min_Data = 0 and Max_Data = 254 */ + + uint32_t HiZSetupTime; /*!< Defines the number of HCLK clock cycles during which the + data bus is kept in HiZ after the start of a NAND-Flash + write access to common/Attribute or I/O memory space (depending + on the memory space timing to be configured). + This parameter can be a number between Min_Data = 0 and Max_Data = 254 */ +}FSMC_NAND_PCC_TimingTypeDef; +#endif /* FSMC_BANK3 */ + +#if defined(FSMC_BANK4) +/** + * @brief FSMC PCCARD Configuration Structure definition + */ +typedef struct +{ + uint32_t Waitfeature; /*!< Enables or disables the Wait feature for the PCCARD Memory device. + This parameter can be any value of @ref FSMC_Wait_feature */ + + uint32_t TCLRSetupTime; /*!< Defines the number of HCLK cycles to configure the + delay between CLE low and RE low. + This parameter can be a value between Min_Data = 0 and Max_Data = 255 */ + + uint32_t TARSetupTime; /*!< Defines the number of HCLK cycles to configure the + delay between ALE low and RE low. + This parameter can be a number between Min_Data = 0 and Max_Data = 255 */ +}FSMC_PCCARD_InitTypeDef; +#endif + +/** + * @} + */ + +/* Exported constants --------------------------------------------------------*/ +/** @addtogroup FSMC_LL_Exported_Constants FSMC Low Layer Exported Constants + * @{ + */ +#if defined FSMC_BANK1 + +/** @defgroup FSMC_LL_NOR_SRAM_Controller FSMC NOR/SRAM Controller + * @{ + */ + +/** @defgroup FSMC_NORSRAM_Bank FSMC NOR/SRAM Bank + * @{ + */ +#define FSMC_NORSRAM_BANK1 ((uint32_t)0x00000000U) +#define FSMC_NORSRAM_BANK2 ((uint32_t)0x00000002U) +#define FSMC_NORSRAM_BANK3 ((uint32_t)0x00000004U) +#define FSMC_NORSRAM_BANK4 ((uint32_t)0x00000006U) +/** + * @} + */ + +/** @defgroup FSMC_Data_Address_Bus_Multiplexing FSMC Data Address Bus Multiplexing + * @{ + */ +#define FSMC_DATA_ADDRESS_MUX_DISABLE ((uint32_t)0x00000000U) +#define FSMC_DATA_ADDRESS_MUX_ENABLE ((uint32_t)0x00000002U) +/** + * @} + */ + +/** @defgroup FSMC_Memory_Type FSMC Memory Type + * @{ + */ +#define FSMC_MEMORY_TYPE_SRAM ((uint32_t)0x00000000U) +#define FSMC_MEMORY_TYPE_PSRAM ((uint32_t)0x00000004U) +#define FSMC_MEMORY_TYPE_NOR ((uint32_t)0x00000008U) +/** + * @} + */ + +/** @defgroup FSMC_NORSRAM_Data_Width FSMC NORSRAM Data Width + * @{ + */ +#define FSMC_NORSRAM_MEM_BUS_WIDTH_8 ((uint32_t)0x00000000U) +#define FSMC_NORSRAM_MEM_BUS_WIDTH_16 ((uint32_t)0x00000010U) +#define FSMC_NORSRAM_MEM_BUS_WIDTH_32 ((uint32_t)0x00000020U) +/** + * @} + */ + +/** @defgroup FSMC_NORSRAM_Flash_Access FSMC NOR/SRAM Flash Access + * @{ + */ +#define FSMC_NORSRAM_FLASH_ACCESS_ENABLE ((uint32_t)0x00000040U) +#define FSMC_NORSRAM_FLASH_ACCESS_DISABLE ((uint32_t)0x00000000U) +/** + * @} + */ + +/** @defgroup FSMC_Burst_Access_Mode FSMC Burst Access Mode + * @{ + */ +#define FSMC_BURST_ACCESS_MODE_DISABLE ((uint32_t)0x00000000U) +#define FSMC_BURST_ACCESS_MODE_ENABLE ((uint32_t)0x00000100U) +/** + * @} + */ + +/** @defgroup FSMC_Wait_Signal_Polarity FSMC Wait Signal Polarity + * @{ + */ +#define FSMC_WAIT_SIGNAL_POLARITY_LOW ((uint32_t)0x00000000U) +#define FSMC_WAIT_SIGNAL_POLARITY_HIGH ((uint32_t)0x00000200U) +/** + * @} + */ + +/** @defgroup FSMC_Wrap_Mode FSMC Wrap Mode + * @{ + */ +#define FSMC_WRAP_MODE_DISABLE ((uint32_t)0x00000000U) +#define FSMC_WRAP_MODE_ENABLE ((uint32_t)0x00000400U) +/** + * @} + */ + +/** @defgroup FSMC_Wait_Timing FSMC Wait Timing + * @{ + */ +#define FSMC_WAIT_TIMING_BEFORE_WS ((uint32_t)0x00000000U) +#define FSMC_WAIT_TIMING_DURING_WS ((uint32_t)0x00000800U) +/** + * @} + */ + +/** @defgroup FSMC_Write_Operation FSMC Write Operation + * @{ + */ +#define FSMC_WRITE_OPERATION_DISABLE ((uint32_t)0x00000000U) +#define FSMC_WRITE_OPERATION_ENABLE ((uint32_t)0x00001000U) +/** + * @} + */ + +/** @defgroup FSMC_Wait_Signal FSMC Wait Signal + * @{ + */ +#define FSMC_WAIT_SIGNAL_DISABLE ((uint32_t)0x00000000U) +#define FSMC_WAIT_SIGNAL_ENABLE ((uint32_t)0x00002000U) +/** + * @} + */ + +/** @defgroup FSMC_Extended_Mode FSMC Extended Mode + * @{ + */ +#define FSMC_EXTENDED_MODE_DISABLE ((uint32_t)0x00000000U) +#define FSMC_EXTENDED_MODE_ENABLE ((uint32_t)0x00004000U) +/** + * @} + */ + +/** @defgroup FSMC_AsynchronousWait FSMC Asynchronous Wait + * @{ + */ +#define FSMC_ASYNCHRONOUS_WAIT_DISABLE ((uint32_t)0x00000000U) +#define FSMC_ASYNCHRONOUS_WAIT_ENABLE ((uint32_t)0x00008000U) +/** + * @} + */ + +/** @defgroup FSMC_Page_Size FSMC Page Size + * @{ + */ +#define FSMC_PAGE_SIZE_NONE ((uint32_t)0x00000000U) +#define FSMC_PAGE_SIZE_128 ((uint32_t)0x00010000U) +#define FSMC_PAGE_SIZE_256 ((uint32_t)0x00020000U) +#define FSMC_PAGE_SIZE_512 ((uint32_t)0x00030000U) +#define FSMC_PAGE_SIZE_1024 ((uint32_t)0x00040000U) +/** + * @} + */ + +/** @defgroup FSMC_Write_Burst FSMC Write Burst + * @{ + */ +#define FSMC_WRITE_BURST_DISABLE ((uint32_t)0x00000000U) +#define FSMC_WRITE_BURST_ENABLE ((uint32_t)0x00080000U) +/** + * @} + */ + +/** @defgroup FSMC_Continous_Clock FSMC Continuous Clock + * @{ + */ +#define FSMC_CONTINUOUS_CLOCK_SYNC_ONLY ((uint32_t)0x00000000U) +#define FSMC_CONTINUOUS_CLOCK_SYNC_ASYNC ((uint32_t)0x00100000U) +/** + * @} + */ + + /** @defgroup FSMC_Access_Mode FSMC Access Mode + * @{ + */ +#define FSMC_ACCESS_MODE_A ((uint32_t)0x00000000U) +#define FSMC_ACCESS_MODE_B ((uint32_t)0x10000000U) +#define FSMC_ACCESS_MODE_C ((uint32_t)0x20000000U) +#define FSMC_ACCESS_MODE_D ((uint32_t)0x30000000U) +/** + * @} + */ + +/** + * @} + */ +#endif /* FSMC_BANK1 */ + +#if defined(FSMC_BANK3)||defined(FSMC_BANK4) + +/** @defgroup FSMC_LL_NAND_Controller FSMC NAND Controller + * @{ + */ +/** @defgroup FSMC_NAND_Bank FSMC NAND Bank + * @{ + */ +#define FSMC_NAND_BANK2 ((uint32_t)0x00000010U) +#define FSMC_NAND_BANK3 ((uint32_t)0x00000100U) +/** + * @} + */ + +/** @defgroup FSMC_Wait_feature FSMC Wait feature + * @{ + */ +#define FSMC_NAND_PCC_WAIT_FEATURE_DISABLE ((uint32_t)0x00000000U) +#define FSMC_NAND_PCC_WAIT_FEATURE_ENABLE ((uint32_t)0x00000002U) +/** + * @} + */ + +/** @defgroup FSMC_PCR_Memory_Type FSMC PCR Memory Type + * @{ + */ +#if defined(FSMC_BANK4) +#define FSMC_PCR_MEMORY_TYPE_PCCARD ((uint32_t)0x00000000U) +#endif +#define FSMC_PCR_MEMORY_TYPE_NAND ((uint32_t)0x00000008U) +/** + * @} + */ + +/** @defgroup FSMC_NAND_Data_Width FSMC NAND Data Width + * @{ + */ +#define FSMC_NAND_PCC_MEM_BUS_WIDTH_8 ((uint32_t)0x00000000U) +#define FSMC_NAND_PCC_MEM_BUS_WIDTH_16 ((uint32_t)0x00000010U) +/** + * @} + */ + +/** @defgroup FSMC_ECC FSMC ECC + * @{ + */ +#define FSMC_NAND_ECC_DISABLE ((uint32_t)0x00000000U) +#define FSMC_NAND_ECC_ENABLE ((uint32_t)0x00000040U) +/** + * @} + */ + +/** @defgroup FSMC_ECC_Page_Size FSMC ECC Page Size + * @{ + */ +#define FSMC_NAND_ECC_PAGE_SIZE_256BYTE ((uint32_t)0x00000000U) +#define FSMC_NAND_ECC_PAGE_SIZE_512BYTE ((uint32_t)0x00020000U) +#define FSMC_NAND_ECC_PAGE_SIZE_1024BYTE ((uint32_t)0x00040000U) +#define FSMC_NAND_ECC_PAGE_SIZE_2048BYTE ((uint32_t)0x00060000U) +#define FSMC_NAND_ECC_PAGE_SIZE_4096BYTE ((uint32_t)0x00080000U) +#define FSMC_NAND_ECC_PAGE_SIZE_8192BYTE ((uint32_t)0x000A0000U) +/** + * @} + */ + +/** + * @} + */ +#endif /* FSMC_BANK3 */ + + +/** @defgroup FSMC_LL_Interrupt_definition FSMC Low Layer Interrupt definition + * @{ + */ +#if defined(FSMC_BANK3)||defined(FSMC_BANK4) +#define FSMC_IT_RISING_EDGE ((uint32_t)0x00000008U) +#define FSMC_IT_LEVEL ((uint32_t)0x00000010U) +#define FSMC_IT_FALLING_EDGE ((uint32_t)0x00000020U) +#endif /* FSMC_BANK3 */ +/** + * @} + */ + +/** @defgroup FSMC_LL_Flag_definition FSMC Low Layer Flag definition + * @{ + */ +#if defined(FSMC_BANK3)||defined(FSMC_BANK4) +#define FSMC_FLAG_RISING_EDGE ((uint32_t)0x00000001U) +#define FSMC_FLAG_LEVEL ((uint32_t)0x00000002U) +#define FSMC_FLAG_FALLING_EDGE ((uint32_t)0x00000004U) +#define FSMC_FLAG_FEMPT ((uint32_t)0x00000040U) +#endif /* FSMC_BANK3 */ +/** + * @} + */ + +/** + * @} + */ + +/** + * @} + */ + +/* Private macro -------------------------------------------------------------*/ +/** @defgroup FSMC_LL_Private_Macros FSMC_LL Private Macros + * @{ + */ +#if defined FSMC_BANK1 +/** @defgroup FSMC_LL_NOR_Macros FSMC NOR/SRAM Macros + * @brief macros to handle NOR device enable/disable and read/write operations + * @{ + */ + +/** + * @brief Enable the NORSRAM device access. + * @param __INSTANCE__ FSMC_NORSRAM Instance + * @param __BANK__ FSMC_NORSRAM Bank + * @retval None + */ +#define __FSMC_NORSRAM_ENABLE(__INSTANCE__, __BANK__) ((__INSTANCE__)->BTCR[(__BANK__)] |= FSMC_BCRx_MBKEN) + +/** + * @brief Disable the NORSRAM device access. + * @param __INSTANCE__ FSMC_NORSRAM Instance + * @param __BANK__ FSMC_NORSRAM Bank + * @retval None + */ +#define __FSMC_NORSRAM_DISABLE(__INSTANCE__, __BANK__) ((__INSTANCE__)->BTCR[(__BANK__)] &= ~FSMC_BCRx_MBKEN) + +/** + * @} + */ +#endif /* FSMC_BANK1 */ + +#if defined(FSMC_BANK3) +/** @defgroup FSMC_LL_NAND_Macros FSMC NAND Macros + * @brief macros to handle NAND device enable/disable + * @{ + */ + +/** + * @brief Enable the NAND device access. + * @param __INSTANCE__ FSMC_NAND Instance + * @param __BANK__ FSMC_NAND Bank + * @retval None + */ +#define __FSMC_NAND_ENABLE(__INSTANCE__, __BANK__) (((__BANK__) == FSMC_NAND_BANK2)? ((__INSTANCE__)->PCR2 |= FSMC_PCRx_PBKEN): \ + ((__INSTANCE__)->PCR3 |= FSMC_PCRx_PBKEN)) + +/** + * @brief Disable the NAND device access. + * @param __INSTANCE__ FSMC_NAND Instance + * @param __BANK__ FSMC_NAND Bank + * @retval None + */ +#define __FSMC_NAND_DISABLE(__INSTANCE__, __BANK__) (((__BANK__) == FSMC_NAND_BANK2)? CLEAR_BIT((__INSTANCE__)->PCR2, FSMC_PCRx_PBKEN): \ + CLEAR_BIT((__INSTANCE__)->PCR3, FSMC_PCRx_PBKEN)) + +/** + * @} + */ +#endif + +#if defined(FSMC_BANK4) +/** @defgroup FSMC_LL_PCCARD_Macros FMC PCCARD Macros + * @brief macros to handle PCCARD read/write operations + * @{ + */ +/** + * @brief Enable the PCCARD device access. + * @param __INSTANCE__ FSMC_PCCARD Instance + * @retval None + */ +#define __FSMC_PCCARD_ENABLE(__INSTANCE__) ((__INSTANCE__)->PCR4 |= FSMC_PCRx_PBKEN) + +/** + * @brief Disable the PCCARD device access. + * @param __INSTANCE__ FSMC_PCCARD Instance + * @retval None + */ +#define __FSMC_PCCARD_DISABLE(__INSTANCE__) ((__INSTANCE__)->PCR4 &= ~FSMC_PCRx_PBKEN) +/** + * @} + */ + +#endif +#if defined(FSMC_BANK3) +/** @defgroup FSMC_LL_NAND_Interrupt FSMC NAND Interrupt + * @brief macros to handle NAND interrupts + * @{ + */ + +/** + * @brief Enable the NAND device interrupt. + * @param __INSTANCE__ FSMC_NAND instance + * @param __BANK__ FSMC_NAND Bank + * @param __INTERRUPT__ FSMC_NAND interrupt + * This parameter can be any combination of the following values: + * @arg FSMC_IT_RISING_EDGE: Interrupt rising edge. + * @arg FSMC_IT_LEVEL: Interrupt level. + * @arg FSMC_IT_FALLING_EDGE: Interrupt falling edge. + * @retval None + */ +#define __FSMC_NAND_ENABLE_IT(__INSTANCE__, __BANK__, __INTERRUPT__) (((__BANK__) == FSMC_NAND_BANK2)? ((__INSTANCE__)->SR2 |= (__INTERRUPT__)): \ + ((__INSTANCE__)->SR3 |= (__INTERRUPT__))) + +/** + * @brief Disable the NAND device interrupt. + * @param __INSTANCE__ FSMC_NAND Instance + * @param __BANK__ FSMC_NAND Bank + * @param __INTERRUPT__ FSMC_NAND interrupt + * This parameter can be any combination of the following values: + * @arg FSMC_IT_RISING_EDGE: Interrupt rising edge. + * @arg FSMC_IT_LEVEL: Interrupt level. + * @arg FSMC_IT_FALLING_EDGE: Interrupt falling edge. + * @retval None + */ +#define __FSMC_NAND_DISABLE_IT(__INSTANCE__, __BANK__, __INTERRUPT__) (((__BANK__) == FSMC_NAND_BANK2)? ((__INSTANCE__)->SR2 &= ~(__INTERRUPT__)): \ + ((__INSTANCE__)->SR3 &= ~(__INTERRUPT__))) + +/** + * @brief Get flag status of the NAND device. + * @param __INSTANCE__ FSMC_NAND Instance + * @param __BANK__ FSMC_NAND Bank + * @param __FLAG__ FSMC_NAND flag + * This parameter can be any combination of the following values: + * @arg FSMC_FLAG_RISING_EDGE: Interrupt rising edge flag. + * @arg FSMC_FLAG_LEVEL: Interrupt level edge flag. + * @arg FSMC_FLAG_FALLING_EDGE: Interrupt falling edge flag. + * @arg FSMC_FLAG_FEMPT: FIFO empty flag. + * @retval The state of FLAG (SET or RESET). + */ +#define __FSMC_NAND_GET_FLAG(__INSTANCE__, __BANK__, __FLAG__) (((__BANK__) == FSMC_NAND_BANK2)? (((__INSTANCE__)->SR2 &(__FLAG__)) == (__FLAG__)): \ + (((__INSTANCE__)->SR3 &(__FLAG__)) == (__FLAG__))) + +/** + * @brief Clear flag status of the NAND device. + * @param __INSTANCE__ FSMC_NAND Instance + * @param __BANK__ FSMC_NAND Bank + * @param __FLAG__ FSMC_NAND flag + * This parameter can be any combination of the following values: + * @arg FSMC_FLAG_RISING_EDGE: Interrupt rising edge flag. + * @arg FSMC_FLAG_LEVEL: Interrupt level edge flag. + * @arg FSMC_FLAG_FALLING_EDGE: Interrupt falling edge flag. + * @arg FSMC_FLAG_FEMPT: FIFO empty flag. + * @retval None + */ +#define __FSMC_NAND_CLEAR_FLAG(__INSTANCE__, __BANK__, __FLAG__) (((__BANK__) == FSMC_NAND_BANK2)? ((__INSTANCE__)->SR2 &= ~(__FLAG__)): \ + ((__INSTANCE__)->SR3 &= ~(__FLAG__))) + +/** + * @} + */ +#endif /* FSMC_BANK3 */ + +#if defined(FSMC_BANK4) +/** @defgroup FSMC_LL_PCCARD_Interrupt FSMC PCCARD Interrupt + * @brief macros to handle PCCARD interrupts + * @{ + */ + +/** + * @brief Enable the PCCARD device interrupt. + * @param __INSTANCE__ FSMC_PCCARD instance + * @param __INTERRUPT__ FSMC_PCCARD interrupt + * This parameter can be any combination of the following values: + * @arg FSMC_IT_RISING_EDGE: Interrupt rising edge. + * @arg FSMC_IT_LEVEL: Interrupt level. + * @arg FSMC_IT_FALLING_EDGE: Interrupt falling edge. + * @retval None + */ +#define __FSMC_PCCARD_ENABLE_IT(__INSTANCE__, __INTERRUPT__) ((__INSTANCE__)->SR4 |= (__INTERRUPT__)) + +/** + * @brief Disable the PCCARD device interrupt. + * @param __INSTANCE__ FSMC_PCCARD instance + * @param __INTERRUPT__ FSMC_PCCARD interrupt + * This parameter can be any combination of the following values: + * @arg FSMC_IT_RISING_EDGE: Interrupt rising edge. + * @arg FSMC_IT_LEVEL: Interrupt level. + * @arg FSMC_IT_FALLING_EDGE: Interrupt falling edge. + * @retval None + */ +#define __FSMC_PCCARD_DISABLE_IT(__INSTANCE__, __INTERRUPT__) ((__INSTANCE__)->SR4 &= ~(__INTERRUPT__)) + +/** + * @brief Get flag status of the PCCARD device. + * @param __INSTANCE__ FSMC_PCCARD instance + * @param __FLAG__ FSMC_PCCARD flag + * This parameter can be any combination of the following values: + * @arg FSMC_FLAG_RISING_EDGE: Interrupt rising edge flag. + * @arg FSMC_FLAG_LEVEL: Interrupt level edge flag. + * @arg FSMC_FLAG_FALLING_EDGE: Interrupt falling edge flag. + * @arg FSMC_FLAG_FEMPT: FIFO empty flag. + * @retval The state of FLAG (SET or RESET). + */ +#define __FSMC_PCCARD_GET_FLAG(__INSTANCE__, __FLAG__) (((__INSTANCE__)->SR4 &(__FLAG__)) == (__FLAG__)) + +/** + * @brief Clear flag status of the PCCARD device. + * @param __INSTANCE__ FSMC_PCCARD instance + * @param __FLAG__ FSMC_PCCARD flag + * This parameter can be any combination of the following values: + * @arg FSMC_FLAG_RISING_EDGE: Interrupt rising edge flag. + * @arg FSMC_FLAG_LEVEL: Interrupt level edge flag. + * @arg FSMC_FLAG_FALLING_EDGE: Interrupt falling edge flag. + * @arg FSMC_FLAG_FEMPT: FIFO empty flag. + * @retval None + */ +#define __FSMC_PCCARD_CLEAR_FLAG(__INSTANCE__, __FLAG__) ((__INSTANCE__)->SR4 &= ~(__FLAG__)) + +/** + * @} + */ +#endif + +/** + * @} + */ + +/** + * @} + */ + +/* Private functions ---------------------------------------------------------*/ +/** @defgroup FSMC_LL_Private_Functions FSMC LL Private Functions + * @{ + */ + +#if defined FSMC_BANK1 +/** @defgroup FSMC_LL_NORSRAM NOR SRAM + * @{ + */ +/** @defgroup FSMC_LL_NORSRAM_Private_Functions_Group1 NOR SRAM Initialization/de-initialization functions + * @{ + */ +HAL_StatusTypeDef FSMC_NORSRAM_Init(FSMC_NORSRAM_TypeDef *Device, FSMC_NORSRAM_InitTypeDef *Init); +HAL_StatusTypeDef FSMC_NORSRAM_Timing_Init(FSMC_NORSRAM_TypeDef *Device, FSMC_NORSRAM_TimingTypeDef *Timing, uint32_t Bank); +HAL_StatusTypeDef FSMC_NORSRAM_Extended_Timing_Init(FSMC_NORSRAM_EXTENDED_TypeDef *Device, FSMC_NORSRAM_TimingTypeDef *Timing, uint32_t Bank, uint32_t ExtendedMode); +HAL_StatusTypeDef FSMC_NORSRAM_DeInit(FSMC_NORSRAM_TypeDef *Device, FSMC_NORSRAM_EXTENDED_TypeDef *ExDevice, uint32_t Bank); +/** + * @} + */ + +/** @defgroup FSMC_LL_NORSRAM_Private_Functions_Group2 NOR SRAM Control functions + * @{ + */ +HAL_StatusTypeDef FSMC_NORSRAM_WriteOperation_Enable(FSMC_NORSRAM_TypeDef *Device, uint32_t Bank); +HAL_StatusTypeDef FSMC_NORSRAM_WriteOperation_Disable(FSMC_NORSRAM_TypeDef *Device, uint32_t Bank); +/** + * @} + */ +/** + * @} + */ +#endif /* FSMC_BANK1 */ + +#if defined(FSMC_BANK3) +/** @defgroup FSMC_LL_NAND NAND + * @{ + */ +/** @defgroup FSMC_LL_NAND_Private_Functions_Group1 NAND Initialization/de-initialization functions + * @{ + */ +HAL_StatusTypeDef FSMC_NAND_Init(FSMC_NAND_TypeDef *Device, FSMC_NAND_InitTypeDef *Init); +HAL_StatusTypeDef FSMC_NAND_CommonSpace_Timing_Init(FSMC_NAND_TypeDef *Device, FSMC_NAND_PCC_TimingTypeDef *Timing, uint32_t Bank); +HAL_StatusTypeDef FSMC_NAND_AttributeSpace_Timing_Init(FSMC_NAND_TypeDef *Device, FSMC_NAND_PCC_TimingTypeDef *Timing, uint32_t Bank); +HAL_StatusTypeDef FSMC_NAND_DeInit(FSMC_NAND_TypeDef *Device, uint32_t Bank); +/** + * @} + */ + +/** @defgroup FSMC_LL_NAND_Private_Functions_Group2 NAND Control functions + * @{ + */ +HAL_StatusTypeDef FSMC_NAND_ECC_Enable(FSMC_NAND_TypeDef *Device, uint32_t Bank); +HAL_StatusTypeDef FSMC_NAND_ECC_Disable(FSMC_NAND_TypeDef *Device, uint32_t Bank); +HAL_StatusTypeDef FSMC_NAND_GetECC(FSMC_NAND_TypeDef *Device, uint32_t *ECCval, uint32_t Bank, uint32_t Timeout); +/** + * @} + */ +/** + * @} + */ +#endif /* FSMC_BANK3 */ + +#if defined(FSMC_BANK4) +/** @defgroup FSMC_LL_PCCARD PCCARD + * @{ + */ +/** @defgroup FSMC_LL_PCCARD_Private_Functions_Group1 PCCARD Initialization/de-initialization functions + * @{ + */ +HAL_StatusTypeDef FSMC_PCCARD_Init(FSMC_PCCARD_TypeDef *Device, FSMC_PCCARD_InitTypeDef *Init); +HAL_StatusTypeDef FSMC_PCCARD_CommonSpace_Timing_Init(FSMC_PCCARD_TypeDef *Device, FSMC_NAND_PCC_TimingTypeDef *Timing); +HAL_StatusTypeDef FSMC_PCCARD_AttributeSpace_Timing_Init(FSMC_PCCARD_TypeDef *Device, FSMC_NAND_PCC_TimingTypeDef *Timing); +HAL_StatusTypeDef FSMC_PCCARD_IOSpace_Timing_Init(FSMC_PCCARD_TypeDef *Device, FSMC_NAND_PCC_TimingTypeDef *Timing); +HAL_StatusTypeDef FSMC_PCCARD_DeInit(FSMC_PCCARD_TypeDef *Device); +/** + * @} + */ +/** + * @} + */ +#endif /* FSMC_BANK4 */ + + +/** + * @} + */ + +/** + * @} + */ + +/** + * @} + */ + +#ifdef __cplusplus +} +#endif + +#endif /* STM32F1xx_LL_FSMC_H */ + +/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/ diff --git a/LLDrivers/inc/stm32f1xx_ll_gpio.h b/LLDrivers/inc/stm32f1xx_ll_gpio.h new file mode 100644 index 0000000..71f0aa5 --- /dev/null +++ b/LLDrivers/inc/stm32f1xx_ll_gpio.h @@ -0,0 +1,2345 @@ +/** + ****************************************************************************** + * @file stm32f1xx_ll_gpio.h + * @author MCD Application Team + * @brief Header file of GPIO LL module. + ****************************************************************************** + * @attention + * + *

© Copyright (c) 2016 STMicroelectronics. + * All rights reserved.

+ * + * This software component is licensed by ST under BSD 3-Clause license, + * the "License"; You may not use this file except in compliance with the + * License. You may obtain a copy of the License at: + * opensource.org/licenses/BSD-3-Clause + * + ****************************************************************************** + */ + +/* Define to prevent recursive inclusion -------------------------------------*/ +#ifndef STM32F1xx_LL_GPIO_H +#define STM32F1xx_LL_GPIO_H + +#ifdef __cplusplus +extern "C" { +#endif + +/* Includes ------------------------------------------------------------------*/ +#include "stm32f1xx.h" + +/** @addtogroup STM32F1xx_LL_Driver + * @{ + */ + +#if defined (GPIOA) || defined (GPIOB) || defined (GPIOC) || defined (GPIOD) || defined (GPIOE) || defined (GPIOF) || defined (GPIOG) + +/** @defgroup GPIO_LL GPIO + * @{ + */ + +/* Private types -------------------------------------------------------------*/ +/* Private variables ---------------------------------------------------------*/ +/* Private constants ---------------------------------------------------------*/ + +/** @defgroup GPIO_LL_Private_Constants GPIO Private Constants + * @{ + */ +/* Defines used for Pin Mask Initialization */ +#define GPIO_PIN_MASK_POS 8U +#define GPIO_PIN_NB 16U +/** + * @} + */ + +/* Private macros ------------------------------------------------------------*/ +#if defined(USE_FULL_LL_DRIVER) +/** @defgroup GPIO_LL_Private_Macros GPIO Private Macros + * @{ + */ + +/** + * @} + */ +#endif /*USE_FULL_LL_DRIVER*/ + +/* Exported types ------------------------------------------------------------*/ +#if defined(USE_FULL_LL_DRIVER) +/** @defgroup GPIO_LL_ES_INIT GPIO Exported Init structures + * @{ + */ + +/** + * @brief LL GPIO Init Structure definition + */ +typedef struct +{ + uint32_t Pin; /*!< Specifies the GPIO pins to be configured. + This parameter can be any value of @ref GPIO_LL_EC_PIN */ + + uint32_t Mode; /*!< Specifies the operating mode for the selected pins. + This parameter can be a value of @ref GPIO_LL_EC_MODE. + + GPIO HW configuration can be modified afterwards using unitary function @ref LL_GPIO_SetPinMode().*/ + + uint32_t Speed; /*!< Specifies the speed for the selected pins. + This parameter can be a value of @ref GPIO_LL_EC_SPEED. + + GPIO HW configuration can be modified afterwards using unitary function @ref LL_GPIO_SetPinSpeed().*/ + + uint32_t OutputType; /*!< Specifies the operating output type for the selected pins. + This parameter can be a value of @ref GPIO_LL_EC_OUTPUT. + + GPIO HW configuration can be modified afterwards using unitary function @ref LL_GPIO_SetPinOutputType().*/ + + uint32_t Pull; /*!< Specifies the operating Pull-up/Pull down for the selected pins. + This parameter can be a value of @ref GPIO_LL_EC_PULL. + + GPIO HW configuration can be modified afterwards using unitary function @ref LL_GPIO_SetPinPull().*/ +} LL_GPIO_InitTypeDef; + +/** + * @} + */ +#endif /* USE_FULL_LL_DRIVER */ + +/* Exported constants --------------------------------------------------------*/ +/** @defgroup GPIO_LL_Exported_Constants GPIO Exported Constants + * @{ + */ + +/** @defgroup GPIO_LL_EC_PIN PIN + * @{ + */ +#define LL_GPIO_PIN_0 ((GPIO_BSRR_BS0 << GPIO_PIN_MASK_POS) | 0x00000001U) /*!< Select pin 0 */ +#define LL_GPIO_PIN_1 ((GPIO_BSRR_BS1 << GPIO_PIN_MASK_POS) | 0x00000002U) /*!< Select pin 1 */ +#define LL_GPIO_PIN_2 ((GPIO_BSRR_BS2 << GPIO_PIN_MASK_POS) | 0x00000004U) /*!< Select pin 2 */ +#define LL_GPIO_PIN_3 ((GPIO_BSRR_BS3 << GPIO_PIN_MASK_POS) | 0x00000008U) /*!< Select pin 3 */ +#define LL_GPIO_PIN_4 ((GPIO_BSRR_BS4 << GPIO_PIN_MASK_POS) | 0x00000010U) /*!< Select pin 4 */ +#define LL_GPIO_PIN_5 ((GPIO_BSRR_BS5 << GPIO_PIN_MASK_POS) | 0x00000020U) /*!< Select pin 5 */ +#define LL_GPIO_PIN_6 ((GPIO_BSRR_BS6 << GPIO_PIN_MASK_POS) | 0x00000040U) /*!< Select pin 6 */ +#define LL_GPIO_PIN_7 ((GPIO_BSRR_BS7 << GPIO_PIN_MASK_POS) | 0x00000080U) /*!< Select pin 7 */ +#define LL_GPIO_PIN_8 ((GPIO_BSRR_BS8 << GPIO_PIN_MASK_POS) | 0x04000001U) /*!< Select pin 8 */ +#define LL_GPIO_PIN_9 ((GPIO_BSRR_BS9 << GPIO_PIN_MASK_POS) | 0x04000002U) /*!< Select pin 9 */ +#define LL_GPIO_PIN_10 ((GPIO_BSRR_BS10 << GPIO_PIN_MASK_POS) | 0x04000004U) /*!< Select pin 10 */ +#define LL_GPIO_PIN_11 ((GPIO_BSRR_BS11 << GPIO_PIN_MASK_POS) | 0x04000008U) /*!< Select pin 11 */ +#define LL_GPIO_PIN_12 ((GPIO_BSRR_BS12 << GPIO_PIN_MASK_POS) | 0x04000010U) /*!< Select pin 12 */ +#define LL_GPIO_PIN_13 ((GPIO_BSRR_BS13 << GPIO_PIN_MASK_POS) | 0x04000020U) /*!< Select pin 13 */ +#define LL_GPIO_PIN_14 ((GPIO_BSRR_BS14 << GPIO_PIN_MASK_POS) | 0x04000040U) /*!< Select pin 14 */ +#define LL_GPIO_PIN_15 ((GPIO_BSRR_BS15 << GPIO_PIN_MASK_POS) | 0x04000080U) /*!< Select pin 15 */ +#define LL_GPIO_PIN_ALL (LL_GPIO_PIN_0 | LL_GPIO_PIN_1 | LL_GPIO_PIN_2 | \ + LL_GPIO_PIN_3 | LL_GPIO_PIN_4 | LL_GPIO_PIN_5 | \ + LL_GPIO_PIN_6 | LL_GPIO_PIN_7 | LL_GPIO_PIN_8 | \ + LL_GPIO_PIN_9 | LL_GPIO_PIN_10 | LL_GPIO_PIN_11 | \ + LL_GPIO_PIN_12 | LL_GPIO_PIN_13 | LL_GPIO_PIN_14 | \ + LL_GPIO_PIN_15) /*!< Select all pins */ +/** + * @} + */ + +/** @defgroup GPIO_LL_EC_MODE Mode + * @{ + */ +#define LL_GPIO_MODE_ANALOG 0x00000000U /*!< Select analog mode */ +#define LL_GPIO_MODE_FLOATING GPIO_CRL_CNF0_0 /*!< Select floating mode */ +#define LL_GPIO_MODE_INPUT GPIO_CRL_CNF0_1 /*!< Select input mode */ +#define LL_GPIO_MODE_OUTPUT GPIO_CRL_MODE0_0 /*!< Select general purpose output mode */ +#define LL_GPIO_MODE_ALTERNATE (GPIO_CRL_CNF0_1 | GPIO_CRL_MODE0_0) /*!< Select alternate function mode */ +/** + * @} + */ + +/** @defgroup GPIO_LL_EC_OUTPUT Output Type + * @{ + */ +#define LL_GPIO_OUTPUT_PUSHPULL 0x00000000U /*!< Select push-pull as output type */ +#define LL_GPIO_OUTPUT_OPENDRAIN GPIO_CRL_CNF0_0 /*!< Select open-drain as output type */ +/** + * @} + */ + +/** @defgroup GPIO_LL_EC_SPEED Output Speed + * @{ + */ +#define LL_GPIO_MODE_OUTPUT_10MHz GPIO_CRL_MODE0_0 /*!< Select Output mode, max speed 10 MHz */ +#define LL_GPIO_MODE_OUTPUT_2MHz GPIO_CRL_MODE0_1 /*!< Select Output mode, max speed 20 MHz */ +#define LL_GPIO_MODE_OUTPUT_50MHz GPIO_CRL_MODE0 /*!< Select Output mode, max speed 50 MHz */ +/** + * @} + */ + +#define LL_GPIO_SPEED_FREQ_LOW LL_GPIO_MODE_OUTPUT_2MHz /*!< Select I/O low output speed */ +#define LL_GPIO_SPEED_FREQ_MEDIUM LL_GPIO_MODE_OUTPUT_10MHz /*!< Select I/O medium output speed */ +#define LL_GPIO_SPEED_FREQ_HIGH LL_GPIO_MODE_OUTPUT_50MHz /*!< Select I/O high output speed */ + +/** @defgroup GPIO_LL_EC_PULL Pull Up Pull Down + * @{ + */ +#define LL_GPIO_PULL_DOWN 0x00000000U /*!< Select I/O pull down */ +#define LL_GPIO_PULL_UP GPIO_ODR_ODR0 /*!< Select I/O pull up */ + +/** + * @} + */ + +/** @defgroup GPIO_LL_EVENTOUT_PIN EVENTOUT Pin + * @{ + */ + +#define LL_GPIO_AF_EVENTOUT_PIN_0 AFIO_EVCR_PIN_PX0 /*!< EVENTOUT on pin 0 */ +#define LL_GPIO_AF_EVENTOUT_PIN_1 AFIO_EVCR_PIN_PX1 /*!< EVENTOUT on pin 1 */ +#define LL_GPIO_AF_EVENTOUT_PIN_2 AFIO_EVCR_PIN_PX2 /*!< EVENTOUT on pin 2 */ +#define LL_GPIO_AF_EVENTOUT_PIN_3 AFIO_EVCR_PIN_PX3 /*!< EVENTOUT on pin 3 */ +#define LL_GPIO_AF_EVENTOUT_PIN_4 AFIO_EVCR_PIN_PX4 /*!< EVENTOUT on pin 4 */ +#define LL_GPIO_AF_EVENTOUT_PIN_5 AFIO_EVCR_PIN_PX5 /*!< EVENTOUT on pin 5 */ +#define LL_GPIO_AF_EVENTOUT_PIN_6 AFIO_EVCR_PIN_PX6 /*!< EVENTOUT on pin 6 */ +#define LL_GPIO_AF_EVENTOUT_PIN_7 AFIO_EVCR_PIN_PX7 /*!< EVENTOUT on pin 7 */ +#define LL_GPIO_AF_EVENTOUT_PIN_8 AFIO_EVCR_PIN_PX8 /*!< EVENTOUT on pin 8 */ +#define LL_GPIO_AF_EVENTOUT_PIN_9 AFIO_EVCR_PIN_PX9 /*!< EVENTOUT on pin 9 */ +#define LL_GPIO_AF_EVENTOUT_PIN_10 AFIO_EVCR_PIN_PX10 /*!< EVENTOUT on pin 10 */ +#define LL_GPIO_AF_EVENTOUT_PIN_11 AFIO_EVCR_PIN_PX11 /*!< EVENTOUT on pin 11 */ +#define LL_GPIO_AF_EVENTOUT_PIN_12 AFIO_EVCR_PIN_PX12 /*!< EVENTOUT on pin 12 */ +#define LL_GPIO_AF_EVENTOUT_PIN_13 AFIO_EVCR_PIN_PX13 /*!< EVENTOUT on pin 13 */ +#define LL_GPIO_AF_EVENTOUT_PIN_14 AFIO_EVCR_PIN_PX14 /*!< EVENTOUT on pin 14 */ +#define LL_GPIO_AF_EVENTOUT_PIN_15 AFIO_EVCR_PIN_PX15 /*!< EVENTOUT on pin 15 */ + +/** + * @} + */ + +/** @defgroup GPIO_LL_EVENTOUT_PORT EVENTOUT Port + * @{ + */ + +#define LL_GPIO_AF_EVENTOUT_PORT_A AFIO_EVCR_PORT_PA /*!< EVENTOUT on port A */ +#define LL_GPIO_AF_EVENTOUT_PORT_B AFIO_EVCR_PORT_PB /*!< EVENTOUT on port B */ +#define LL_GPIO_AF_EVENTOUT_PORT_C AFIO_EVCR_PORT_PC /*!< EVENTOUT on port C */ +#define LL_GPIO_AF_EVENTOUT_PORT_D AFIO_EVCR_PORT_PD /*!< EVENTOUT on port D */ +#define LL_GPIO_AF_EVENTOUT_PORT_E AFIO_EVCR_PORT_PE /*!< EVENTOUT on port E */ + +/** + * @} + */ + +/** @defgroup GPIO_LL_EC_EXTI_PORT GPIO EXTI PORT + * @{ + */ +#define LL_GPIO_AF_EXTI_PORTA 0U /*!< EXTI PORT A */ +#define LL_GPIO_AF_EXTI_PORTB 1U /*!< EXTI PORT B */ +#define LL_GPIO_AF_EXTI_PORTC 2U /*!< EXTI PORT C */ +#define LL_GPIO_AF_EXTI_PORTD 3U /*!< EXTI PORT D */ +#define LL_GPIO_AF_EXTI_PORTE 4U /*!< EXTI PORT E */ +#define LL_GPIO_AF_EXTI_PORTF 5U /*!< EXTI PORT F */ +#define LL_GPIO_AF_EXTI_PORTG 6U /*!< EXTI PORT G */ +/** + * @} + */ + +/** @defgroup GPIO_LL_EC_EXTI_LINE GPIO EXTI LINE + * @{ + */ +#define LL_GPIO_AF_EXTI_LINE0 (0x000FU << 16U | 0U) /*!< EXTI_POSITION_0 | EXTICR[0] */ +#define LL_GPIO_AF_EXTI_LINE1 (0x00F0U << 16U | 0U) /*!< EXTI_POSITION_4 | EXTICR[0] */ +#define LL_GPIO_AF_EXTI_LINE2 (0x0F00U << 16U | 0U) /*!< EXTI_POSITION_8 | EXTICR[0] */ +#define LL_GPIO_AF_EXTI_LINE3 (0xF000U << 16U | 0U) /*!< EXTI_POSITION_12 | EXTICR[0] */ +#define LL_GPIO_AF_EXTI_LINE4 (0x000FU << 16U | 1U) /*!< EXTI_POSITION_0 | EXTICR[1] */ +#define LL_GPIO_AF_EXTI_LINE5 (0x00F0U << 16U | 1U) /*!< EXTI_POSITION_4 | EXTICR[1] */ +#define LL_GPIO_AF_EXTI_LINE6 (0x0F00U << 16U | 1U) /*!< EXTI_POSITION_8 | EXTICR[1] */ +#define LL_GPIO_AF_EXTI_LINE7 (0xF000U << 16U | 1U) /*!< EXTI_POSITION_12 | EXTICR[1] */ +#define LL_GPIO_AF_EXTI_LINE8 (0x000FU << 16U | 2U) /*!< EXTI_POSITION_0 | EXTICR[2] */ +#define LL_GPIO_AF_EXTI_LINE9 (0x00F0U << 16U | 2U) /*!< EXTI_POSITION_4 | EXTICR[2] */ +#define LL_GPIO_AF_EXTI_LINE10 (0x0F00U << 16U | 2U) /*!< EXTI_POSITION_8 | EXTICR[2] */ +#define LL_GPIO_AF_EXTI_LINE11 (0xF000U << 16U | 2U) /*!< EXTI_POSITION_12 | EXTICR[2] */ +#define LL_GPIO_AF_EXTI_LINE12 (0x000FU << 16U | 3U) /*!< EXTI_POSITION_0 | EXTICR[3] */ +#define LL_GPIO_AF_EXTI_LINE13 (0x00F0U << 16U | 3U) /*!< EXTI_POSITION_4 | EXTICR[3] */ +#define LL_GPIO_AF_EXTI_LINE14 (0x0F00U << 16U | 3U) /*!< EXTI_POSITION_8 | EXTICR[3] */ +#define LL_GPIO_AF_EXTI_LINE15 (0xF000U << 16U | 3U) /*!< EXTI_POSITION_12 | EXTICR[3] */ +/** + * @} + */ + +/** + * @} + */ + +/* Exported macro ------------------------------------------------------------*/ +/** @defgroup GPIO_LL_Exported_Macros GPIO Exported Macros + * @{ + */ + +/** @defgroup GPIO_LL_EM_WRITE_READ Common Write and read registers Macros + * @{ + */ + +/** + * @brief Write a value in GPIO register + * @param __INSTANCE__ GPIO Instance + * @param __REG__ Register to be written + * @param __VALUE__ Value to be written in the register + * @retval None + */ +#define LL_GPIO_WriteReg(__INSTANCE__, __REG__, __VALUE__) WRITE_REG(__INSTANCE__->__REG__, (__VALUE__)) + +/** + * @brief Read a value in GPIO register + * @param __INSTANCE__ GPIO Instance + * @param __REG__ Register to be read + * @retval Register value + */ +#define LL_GPIO_ReadReg(__INSTANCE__, __REG__) READ_REG(__INSTANCE__->__REG__) +/** + * @} + */ + +/** + * @} + */ + +/* Exported functions --------------------------------------------------------*/ +/** @defgroup GPIO_LL_Exported_Functions GPIO Exported Functions + * @{ + */ + +/** @defgroup GPIO_LL_EF_Port_Configuration Port Configuration + * @{ + */ + +/** + * @brief Configure gpio mode for a dedicated pin on dedicated port. + * @note I/O mode can be Analog, Floating input, Input with pull-up/pull-down, General purpose Output, + * Alternate function Output. + * @note Warning: only one pin can be passed as parameter. + * @rmtoll CRL CNFy LL_GPIO_SetPinMode + * @rmtoll CRL MODEy LL_GPIO_SetPinMode + * @rmtoll CRH CNFy LL_GPIO_SetPinMode + * @rmtoll CRH MODEy LL_GPIO_SetPinMode + * @param GPIOx GPIO Port + * @param Pin This parameter can be one of the following values: + * @arg @ref LL_GPIO_PIN_0 + * @arg @ref LL_GPIO_PIN_1 + * @arg @ref LL_GPIO_PIN_2 + * @arg @ref LL_GPIO_PIN_3 + * @arg @ref LL_GPIO_PIN_4 + * @arg @ref LL_GPIO_PIN_5 + * @arg @ref LL_GPIO_PIN_6 + * @arg @ref LL_GPIO_PIN_7 + * @arg @ref LL_GPIO_PIN_8 + * @arg @ref LL_GPIO_PIN_9 + * @arg @ref LL_GPIO_PIN_10 + * @arg @ref LL_GPIO_PIN_11 + * @arg @ref LL_GPIO_PIN_12 + * @arg @ref LL_GPIO_PIN_13 + * @arg @ref LL_GPIO_PIN_14 + * @arg @ref LL_GPIO_PIN_15 + * @param Mode This parameter can be one of the following values: + * @arg @ref LL_GPIO_MODE_ANALOG + * @arg @ref LL_GPIO_MODE_FLOATING + * @arg @ref LL_GPIO_MODE_INPUT + * @arg @ref LL_GPIO_MODE_OUTPUT + * @arg @ref LL_GPIO_MODE_ALTERNATE + * @retval None + */ +__STATIC_INLINE void LL_GPIO_SetPinMode(GPIO_TypeDef *GPIOx, uint32_t Pin, uint32_t Mode) +{ + register uint32_t *pReg = (uint32_t *)((uint32_t)(&GPIOx->CRL) + (Pin >> 24)); + MODIFY_REG(*pReg, ((GPIO_CRL_CNF0 | GPIO_CRL_MODE0) << (POSITION_VAL(Pin) * 4U)), (Mode << (POSITION_VAL(Pin) * 4U))); +} + +/** + * @brief Return gpio mode for a dedicated pin on dedicated port. + * @note I/O mode can be Analog, Floating input, Input with pull-up/pull-down, General purpose Output, + * Alternate function Output. + * @note Warning: only one pin can be passed as parameter. + * @rmtoll CRL CNFy LL_GPIO_GetPinMode + * @rmtoll CRL MODEy LL_GPIO_GetPinMode + * @rmtoll CRH CNFy LL_GPIO_GetPinMode + * @rmtoll CRH MODEy LL_GPIO_GetPinMode + * @param GPIOx GPIO Port + * @param Pin This parameter can be one of the following values: + * @arg @ref LL_GPIO_PIN_0 + * @arg @ref LL_GPIO_PIN_1 + * @arg @ref LL_GPIO_PIN_2 + * @arg @ref LL_GPIO_PIN_3 + * @arg @ref LL_GPIO_PIN_4 + * @arg @ref LL_GPIO_PIN_5 + * @arg @ref LL_GPIO_PIN_6 + * @arg @ref LL_GPIO_PIN_7 + * @arg @ref LL_GPIO_PIN_8 + * @arg @ref LL_GPIO_PIN_9 + * @arg @ref LL_GPIO_PIN_10 + * @arg @ref LL_GPIO_PIN_11 + * @arg @ref LL_GPIO_PIN_12 + * @arg @ref LL_GPIO_PIN_13 + * @arg @ref LL_GPIO_PIN_14 + * @arg @ref LL_GPIO_PIN_15 + * @retval Returned value can be one of the following values: + * @arg @ref LL_GPIO_MODE_ANALOG + * @arg @ref LL_GPIO_MODE_FLOATING + * @arg @ref LL_GPIO_MODE_INPUT + * @arg @ref LL_GPIO_MODE_OUTPUT + * @arg @ref LL_GPIO_MODE_ALTERNATE + */ +__STATIC_INLINE uint32_t LL_GPIO_GetPinMode(GPIO_TypeDef *GPIOx, uint32_t Pin) +{ + register uint32_t *pReg = (uint32_t *)((uint32_t)(&GPIOx->CRL) + (Pin >> 24)); + return (READ_BIT(*pReg, ((GPIO_CRL_CNF0 | GPIO_CRL_MODE0) << (POSITION_VAL(Pin) * 4U))) >> (POSITION_VAL(Pin) * 4U)); +} + +/** + * @brief Configure gpio speed for a dedicated pin on dedicated port. + * @note I/O speed can be Low, Medium or Fast speed. + * @note Warning: only one pin can be passed as parameter. + * @note Refer to datasheet for frequency specifications and the power + * supply and load conditions for each speed. + * @rmtoll CRL MODEy LL_GPIO_SetPinSpeed + * @rmtoll CRH MODEy LL_GPIO_SetPinSpeed + * @param GPIOx GPIO Port + * @param Pin This parameter can be one of the following values: + * @arg @ref LL_GPIO_PIN_0 + * @arg @ref LL_GPIO_PIN_1 + * @arg @ref LL_GPIO_PIN_2 + * @arg @ref LL_GPIO_PIN_3 + * @arg @ref LL_GPIO_PIN_4 + * @arg @ref LL_GPIO_PIN_5 + * @arg @ref LL_GPIO_PIN_6 + * @arg @ref LL_GPIO_PIN_7 + * @arg @ref LL_GPIO_PIN_8 + * @arg @ref LL_GPIO_PIN_9 + * @arg @ref LL_GPIO_PIN_10 + * @arg @ref LL_GPIO_PIN_11 + * @arg @ref LL_GPIO_PIN_12 + * @arg @ref LL_GPIO_PIN_13 + * @arg @ref LL_GPIO_PIN_14 + * @arg @ref LL_GPIO_PIN_15 + * @param Speed This parameter can be one of the following values: + * @arg @ref LL_GPIO_SPEED_FREQ_LOW + * @arg @ref LL_GPIO_SPEED_FREQ_MEDIUM + * @arg @ref LL_GPIO_SPEED_FREQ_HIGH + * @retval None + */ +__STATIC_INLINE void LL_GPIO_SetPinSpeed(GPIO_TypeDef *GPIOx, uint32_t Pin, uint32_t Speed) +{ + register uint32_t *pReg = (uint32_t *)((uint32_t)(&GPIOx->CRL) + (Pin >> 24)); + MODIFY_REG(*pReg, (GPIO_CRL_MODE0 << (POSITION_VAL(Pin) * 4U)), + (Speed << (POSITION_VAL(Pin) * 4U))); +} + +/** + * @brief Return gpio speed for a dedicated pin on dedicated port. + * @note I/O speed can be Low, Medium, Fast or High speed. + * @note Warning: only one pin can be passed as parameter. + * @note Refer to datasheet for frequency specifications and the power + * supply and load conditions for each speed. + * @rmtoll CRL MODEy LL_GPIO_GetPinSpeed + * @rmtoll CRH MODEy LL_GPIO_GetPinSpeed + * @param GPIOx GPIO Port + * @param Pin This parameter can be one of the following values: + * @arg @ref LL_GPIO_PIN_0 + * @arg @ref LL_GPIO_PIN_1 + * @arg @ref LL_GPIO_PIN_2 + * @arg @ref LL_GPIO_PIN_3 + * @arg @ref LL_GPIO_PIN_4 + * @arg @ref LL_GPIO_PIN_5 + * @arg @ref LL_GPIO_PIN_6 + * @arg @ref LL_GPIO_PIN_7 + * @arg @ref LL_GPIO_PIN_8 + * @arg @ref LL_GPIO_PIN_9 + * @arg @ref LL_GPIO_PIN_10 + * @arg @ref LL_GPIO_PIN_11 + * @arg @ref LL_GPIO_PIN_12 + * @arg @ref LL_GPIO_PIN_13 + * @arg @ref LL_GPIO_PIN_14 + * @arg @ref LL_GPIO_PIN_15 + * @retval Returned value can be one of the following values: + * @arg @ref LL_GPIO_SPEED_FREQ_LOW + * @arg @ref LL_GPIO_SPEED_FREQ_MEDIUM + * @arg @ref LL_GPIO_SPEED_FREQ_HIGH + */ +__STATIC_INLINE uint32_t LL_GPIO_GetPinSpeed(GPIO_TypeDef *GPIOx, uint32_t Pin) +{ + register uint32_t *pReg = (uint32_t *)((uint32_t)(&GPIOx->CRL) + (Pin >> 24)); + return (READ_BIT(*pReg, (GPIO_CRL_MODE0 << (POSITION_VAL(Pin) * 4U))) >> (POSITION_VAL(Pin) * 4U)); +} + +/** + * @brief Configure gpio output type for several pins on dedicated port. + * @note Output type as to be set when gpio pin is in output or + * alternate modes. Possible type are Push-pull or Open-drain. + * @rmtoll CRL MODEy LL_GPIO_SetPinOutputType + * @rmtoll CRH MODEy LL_GPIO_SetPinOutputType + * @param GPIOx GPIO Port + * @param Pin This parameter can be a combination of the following values: + * @arg @ref LL_GPIO_PIN_0 + * @arg @ref LL_GPIO_PIN_1 + * @arg @ref LL_GPIO_PIN_2 + * @arg @ref LL_GPIO_PIN_3 + * @arg @ref LL_GPIO_PIN_4 + * @arg @ref LL_GPIO_PIN_5 + * @arg @ref LL_GPIO_PIN_6 + * @arg @ref LL_GPIO_PIN_7 + * @arg @ref LL_GPIO_PIN_8 + * @arg @ref LL_GPIO_PIN_9 + * @arg @ref LL_GPIO_PIN_10 + * @arg @ref LL_GPIO_PIN_11 + * @arg @ref LL_GPIO_PIN_12 + * @arg @ref LL_GPIO_PIN_13 + * @arg @ref LL_GPIO_PIN_14 + * @arg @ref LL_GPIO_PIN_15 + * @arg @ref LL_GPIO_PIN_ALL + * @param OutputType This parameter can be one of the following values: + * @arg @ref LL_GPIO_OUTPUT_PUSHPULL + * @arg @ref LL_GPIO_OUTPUT_OPENDRAIN + * @retval None + */ +__STATIC_INLINE void LL_GPIO_SetPinOutputType(GPIO_TypeDef *GPIOx, uint32_t Pin, uint32_t OutputType) +{ + register uint32_t *pReg = (uint32_t *)((uint32_t)(&GPIOx->CRL) + (Pin >> 24)); + MODIFY_REG(*pReg, (GPIO_CRL_CNF0_0 << (POSITION_VAL(Pin) * 4U)), + (OutputType << (POSITION_VAL(Pin) * 4U))); +} + +/** + * @brief Return gpio output type for several pins on dedicated port. + * @note Output type as to be set when gpio pin is in output or + * alternate modes. Possible type are Push-pull or Open-drain. + * @note Warning: only one pin can be passed as parameter. + * @rmtoll CRL MODEy LL_GPIO_GetPinOutputType + * @rmtoll CRH MODEy LL_GPIO_GetPinOutputType + * @param GPIOx GPIO Port + * @param Pin This parameter can be one of the following values: + * @arg @ref LL_GPIO_PIN_0 + * @arg @ref LL_GPIO_PIN_1 + * @arg @ref LL_GPIO_PIN_2 + * @arg @ref LL_GPIO_PIN_3 + * @arg @ref LL_GPIO_PIN_4 + * @arg @ref LL_GPIO_PIN_5 + * @arg @ref LL_GPIO_PIN_6 + * @arg @ref LL_GPIO_PIN_7 + * @arg @ref LL_GPIO_PIN_8 + * @arg @ref LL_GPIO_PIN_9 + * @arg @ref LL_GPIO_PIN_10 + * @arg @ref LL_GPIO_PIN_11 + * @arg @ref LL_GPIO_PIN_12 + * @arg @ref LL_GPIO_PIN_13 + * @arg @ref LL_GPIO_PIN_14 + * @arg @ref LL_GPIO_PIN_15 + * @arg @ref LL_GPIO_PIN_ALL + * @retval Returned value can be one of the following values: + * @arg @ref LL_GPIO_OUTPUT_PUSHPULL + * @arg @ref LL_GPIO_OUTPUT_OPENDRAIN + */ +__STATIC_INLINE uint32_t LL_GPIO_GetPinOutputType(GPIO_TypeDef *GPIOx, uint32_t Pin) +{ + register uint32_t *pReg = (uint32_t *)((uint32_t)(&GPIOx->CRL) + (Pin >> 24)); + return (READ_BIT(*pReg, (GPIO_CRL_CNF0_0 << (POSITION_VAL(Pin) * 4U))) >> (POSITION_VAL(Pin) * 4U)); + +} + +/** + * @brief Configure gpio pull-up or pull-down for a dedicated pin on a dedicated port. + * @note Warning: only one pin can be passed as parameter. + * @rmtoll ODR ODR LL_GPIO_SetPinPull + * @param GPIOx GPIO Port + * @param Pin This parameter can be one of the following values: + * @arg @ref LL_GPIO_PIN_0 + * @arg @ref LL_GPIO_PIN_1 + * @arg @ref LL_GPIO_PIN_2 + * @arg @ref LL_GPIO_PIN_3 + * @arg @ref LL_GPIO_PIN_4 + * @arg @ref LL_GPIO_PIN_5 + * @arg @ref LL_GPIO_PIN_6 + * @arg @ref LL_GPIO_PIN_7 + * @arg @ref LL_GPIO_PIN_8 + * @arg @ref LL_GPIO_PIN_9 + * @arg @ref LL_GPIO_PIN_10 + * @arg @ref LL_GPIO_PIN_11 + * @arg @ref LL_GPIO_PIN_12 + * @arg @ref LL_GPIO_PIN_13 + * @arg @ref LL_GPIO_PIN_14 + * @arg @ref LL_GPIO_PIN_15 + * @param Pull This parameter can be one of the following values: + * @arg @ref LL_GPIO_PULL_DOWN + * @arg @ref LL_GPIO_PULL_UP + * @retval None + */ +__STATIC_INLINE void LL_GPIO_SetPinPull(GPIO_TypeDef *GPIOx, uint32_t Pin, uint32_t Pull) +{ + MODIFY_REG(GPIOx->ODR, (Pin >> GPIO_PIN_MASK_POS), Pull << (POSITION_VAL(Pin >> GPIO_PIN_MASK_POS))); +} + +/** + * @brief Return gpio pull-up or pull-down for a dedicated pin on a dedicated port + * @note Warning: only one pin can be passed as parameter. + * @rmtoll ODR ODR LL_GPIO_GetPinPull + * @param GPIOx GPIO Port + * @param Pin This parameter can be one of the following values: + * @arg @ref LL_GPIO_PIN_0 + * @arg @ref LL_GPIO_PIN_1 + * @arg @ref LL_GPIO_PIN_2 + * @arg @ref LL_GPIO_PIN_3 + * @arg @ref LL_GPIO_PIN_4 + * @arg @ref LL_GPIO_PIN_5 + * @arg @ref LL_GPIO_PIN_6 + * @arg @ref LL_GPIO_PIN_7 + * @arg @ref LL_GPIO_PIN_8 + * @arg @ref LL_GPIO_PIN_9 + * @arg @ref LL_GPIO_PIN_10 + * @arg @ref LL_GPIO_PIN_11 + * @arg @ref LL_GPIO_PIN_12 + * @arg @ref LL_GPIO_PIN_13 + * @arg @ref LL_GPIO_PIN_14 + * @arg @ref LL_GPIO_PIN_15 + * @retval Returned value can be one of the following values: + * @arg @ref LL_GPIO_PULL_DOWN + * @arg @ref LL_GPIO_PULL_UP + */ +__STATIC_INLINE uint32_t LL_GPIO_GetPinPull(GPIO_TypeDef *GPIOx, uint32_t Pin) +{ + return (READ_BIT(GPIOx->ODR, (GPIO_ODR_ODR0 << (POSITION_VAL(Pin >> GPIO_PIN_MASK_POS)))) >> (POSITION_VAL(Pin >> GPIO_PIN_MASK_POS))); +} + +/** + * @brief Lock configuration of several pins for a dedicated port. + * @note When the lock sequence has been applied on a port bit, the + * value of this port bit can no longer be modified until the + * next reset. + * @note Each lock bit freezes a specific configuration register + * (control and alternate function registers). + * @rmtoll LCKR LCKK LL_GPIO_LockPin + * @param GPIOx GPIO Port + * @param PinMask This parameter can be a combination of the following values: + * @arg @ref LL_GPIO_PIN_0 + * @arg @ref LL_GPIO_PIN_1 + * @arg @ref LL_GPIO_PIN_2 + * @arg @ref LL_GPIO_PIN_3 + * @arg @ref LL_GPIO_PIN_4 + * @arg @ref LL_GPIO_PIN_5 + * @arg @ref LL_GPIO_PIN_6 + * @arg @ref LL_GPIO_PIN_7 + * @arg @ref LL_GPIO_PIN_8 + * @arg @ref LL_GPIO_PIN_9 + * @arg @ref LL_GPIO_PIN_10 + * @arg @ref LL_GPIO_PIN_11 + * @arg @ref LL_GPIO_PIN_12 + * @arg @ref LL_GPIO_PIN_13 + * @arg @ref LL_GPIO_PIN_14 + * @arg @ref LL_GPIO_PIN_15 + * @arg @ref LL_GPIO_PIN_ALL + * @retval None + */ +__STATIC_INLINE void LL_GPIO_LockPin(GPIO_TypeDef *GPIOx, uint32_t PinMask) +{ + __IO uint32_t temp; + WRITE_REG(GPIOx->LCKR, GPIO_LCKR_LCKK | ((PinMask >> GPIO_PIN_MASK_POS) & 0x0000FFFFU)); + WRITE_REG(GPIOx->LCKR, ((PinMask >> GPIO_PIN_MASK_POS) & 0x0000FFFFU)); + WRITE_REG(GPIOx->LCKR, GPIO_LCKR_LCKK | ((PinMask >> GPIO_PIN_MASK_POS) & 0x0000FFFFU)); + temp = READ_REG(GPIOx->LCKR); + (void) temp; +} + +/** + * @brief Return 1 if all pins passed as parameter, of a dedicated port, are locked. else Return 0. + * @rmtoll LCKR LCKy LL_GPIO_IsPinLocked + * @param GPIOx GPIO Port + * @param PinMask This parameter can be a combination of the following values: + * @arg @ref LL_GPIO_PIN_0 + * @arg @ref LL_GPIO_PIN_1 + * @arg @ref LL_GPIO_PIN_2 + * @arg @ref LL_GPIO_PIN_3 + * @arg @ref LL_GPIO_PIN_4 + * @arg @ref LL_GPIO_PIN_5 + * @arg @ref LL_GPIO_PIN_6 + * @arg @ref LL_GPIO_PIN_7 + * @arg @ref LL_GPIO_PIN_8 + * @arg @ref LL_GPIO_PIN_9 + * @arg @ref LL_GPIO_PIN_10 + * @arg @ref LL_GPIO_PIN_11 + * @arg @ref LL_GPIO_PIN_12 + * @arg @ref LL_GPIO_PIN_13 + * @arg @ref LL_GPIO_PIN_14 + * @arg @ref LL_GPIO_PIN_15 + * @arg @ref LL_GPIO_PIN_ALL + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_GPIO_IsPinLocked(GPIO_TypeDef *GPIOx, uint32_t PinMask) +{ + return (READ_BIT(GPIOx->LCKR, ((PinMask >> GPIO_PIN_MASK_POS) & 0x0000FFFFU)) == ((PinMask >> GPIO_PIN_MASK_POS) & 0x0000FFFFU)); +} + +/** + * @brief Return 1 if one of the pin of a dedicated port is locked. else return 0. + * @rmtoll LCKR LCKK LL_GPIO_IsAnyPinLocked + * @param GPIOx GPIO Port + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_GPIO_IsAnyPinLocked(GPIO_TypeDef *GPIOx) +{ + return (READ_BIT(GPIOx->LCKR, GPIO_LCKR_LCKK) == (GPIO_LCKR_LCKK)); +} + +/** + * @} + */ + +/** @defgroup GPIO_LL_EF_Data_Access Data Access + * @{ + */ + +/** + * @brief Return full input data register value for a dedicated port. + * @rmtoll IDR IDy LL_GPIO_ReadInputPort + * @param GPIOx GPIO Port + * @retval Input data register value of port + */ +__STATIC_INLINE uint32_t LL_GPIO_ReadInputPort(GPIO_TypeDef *GPIOx) +{ + return (READ_REG(GPIOx->IDR)); +} + +/** + * @brief Return if input data level for several pins of dedicated port is high or low. + * @rmtoll IDR IDy LL_GPIO_IsInputPinSet + * @param GPIOx GPIO Port + * @param PinMask This parameter can be a combination of the following values: + * @arg @ref LL_GPIO_PIN_0 + * @arg @ref LL_GPIO_PIN_1 + * @arg @ref LL_GPIO_PIN_2 + * @arg @ref LL_GPIO_PIN_3 + * @arg @ref LL_GPIO_PIN_4 + * @arg @ref LL_GPIO_PIN_5 + * @arg @ref LL_GPIO_PIN_6 + * @arg @ref LL_GPIO_PIN_7 + * @arg @ref LL_GPIO_PIN_8 + * @arg @ref LL_GPIO_PIN_9 + * @arg @ref LL_GPIO_PIN_10 + * @arg @ref LL_GPIO_PIN_11 + * @arg @ref LL_GPIO_PIN_12 + * @arg @ref LL_GPIO_PIN_13 + * @arg @ref LL_GPIO_PIN_14 + * @arg @ref LL_GPIO_PIN_15 + * @arg @ref LL_GPIO_PIN_ALL + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_GPIO_IsInputPinSet(GPIO_TypeDef *GPIOx, uint32_t PinMask) +{ + return (READ_BIT(GPIOx->IDR, (PinMask >> GPIO_PIN_MASK_POS) & 0x0000FFFFU) == ((PinMask >> GPIO_PIN_MASK_POS) & 0x0000FFFFU)); +} + +/** + * @brief Write output data register for the port. + * @rmtoll ODR ODy LL_GPIO_WriteOutputPort + * @param GPIOx GPIO Port + * @param PortValue Level value for each pin of the port + * @retval None + */ +__STATIC_INLINE void LL_GPIO_WriteOutputPort(GPIO_TypeDef *GPIOx, uint32_t PortValue) +{ + WRITE_REG(GPIOx->ODR, PortValue); +} + +/** + * @brief Return full output data register value for a dedicated port. + * @rmtoll ODR ODy LL_GPIO_ReadOutputPort + * @param GPIOx GPIO Port + * @retval Output data register value of port + */ +__STATIC_INLINE uint32_t LL_GPIO_ReadOutputPort(GPIO_TypeDef *GPIOx) +{ + return (uint32_t)(READ_REG(GPIOx->ODR)); +} + +/** + * @brief Return if input data level for several pins of dedicated port is high or low. + * @rmtoll ODR ODy LL_GPIO_IsOutputPinSet + * @param GPIOx GPIO Port + * @param PinMask This parameter can be a combination of the following values: + * @arg @ref LL_GPIO_PIN_0 + * @arg @ref LL_GPIO_PIN_1 + * @arg @ref LL_GPIO_PIN_2 + * @arg @ref LL_GPIO_PIN_3 + * @arg @ref LL_GPIO_PIN_4 + * @arg @ref LL_GPIO_PIN_5 + * @arg @ref LL_GPIO_PIN_6 + * @arg @ref LL_GPIO_PIN_7 + * @arg @ref LL_GPIO_PIN_8 + * @arg @ref LL_GPIO_PIN_9 + * @arg @ref LL_GPIO_PIN_10 + * @arg @ref LL_GPIO_PIN_11 + * @arg @ref LL_GPIO_PIN_12 + * @arg @ref LL_GPIO_PIN_13 + * @arg @ref LL_GPIO_PIN_14 + * @arg @ref LL_GPIO_PIN_15 + * @arg @ref LL_GPIO_PIN_ALL + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_GPIO_IsOutputPinSet(GPIO_TypeDef *GPIOx, uint32_t PinMask) +{ + return (READ_BIT(GPIOx->ODR, (PinMask >> GPIO_PIN_MASK_POS) & 0x0000FFFFU) == ((PinMask >> GPIO_PIN_MASK_POS) & 0x0000FFFFU)); +} + +/** + * @brief Set several pins to high level on dedicated gpio port. + * @rmtoll BSRR BSy LL_GPIO_SetOutputPin + * @param GPIOx GPIO Port + * @param PinMask This parameter can be a combination of the following values: + * @arg @ref LL_GPIO_PIN_0 + * @arg @ref LL_GPIO_PIN_1 + * @arg @ref LL_GPIO_PIN_2 + * @arg @ref LL_GPIO_PIN_3 + * @arg @ref LL_GPIO_PIN_4 + * @arg @ref LL_GPIO_PIN_5 + * @arg @ref LL_GPIO_PIN_6 + * @arg @ref LL_GPIO_PIN_7 + * @arg @ref LL_GPIO_PIN_8 + * @arg @ref LL_GPIO_PIN_9 + * @arg @ref LL_GPIO_PIN_10 + * @arg @ref LL_GPIO_PIN_11 + * @arg @ref LL_GPIO_PIN_12 + * @arg @ref LL_GPIO_PIN_13 + * @arg @ref LL_GPIO_PIN_14 + * @arg @ref LL_GPIO_PIN_15 + * @arg @ref LL_GPIO_PIN_ALL + * @retval None + */ +__STATIC_INLINE void LL_GPIO_SetOutputPin(GPIO_TypeDef *GPIOx, uint32_t PinMask) +{ + WRITE_REG(GPIOx->BSRR, (PinMask >> GPIO_PIN_MASK_POS) & 0x0000FFFFU); +} + +/** + * @brief Set several pins to low level on dedicated gpio port. + * @rmtoll BRR BRy LL_GPIO_ResetOutputPin + * @param GPIOx GPIO Port + * @param PinMask This parameter can be a combination of the following values: + * @arg @ref LL_GPIO_PIN_0 + * @arg @ref LL_GPIO_PIN_1 + * @arg @ref LL_GPIO_PIN_2 + * @arg @ref LL_GPIO_PIN_3 + * @arg @ref LL_GPIO_PIN_4 + * @arg @ref LL_GPIO_PIN_5 + * @arg @ref LL_GPIO_PIN_6 + * @arg @ref LL_GPIO_PIN_7 + * @arg @ref LL_GPIO_PIN_8 + * @arg @ref LL_GPIO_PIN_9 + * @arg @ref LL_GPIO_PIN_10 + * @arg @ref LL_GPIO_PIN_11 + * @arg @ref LL_GPIO_PIN_12 + * @arg @ref LL_GPIO_PIN_13 + * @arg @ref LL_GPIO_PIN_14 + * @arg @ref LL_GPIO_PIN_15 + * @arg @ref LL_GPIO_PIN_ALL + * @retval None + */ +__STATIC_INLINE void LL_GPIO_ResetOutputPin(GPIO_TypeDef *GPIOx, uint32_t PinMask) +{ + WRITE_REG(GPIOx->BRR, (PinMask >> GPIO_PIN_MASK_POS) & 0x0000FFFFU); +} + +/** + * @brief Toggle data value for several pin of dedicated port. + * @rmtoll ODR ODy LL_GPIO_TogglePin + * @param GPIOx GPIO Port + * @param PinMask This parameter can be a combination of the following values: + * @arg @ref LL_GPIO_PIN_0 + * @arg @ref LL_GPIO_PIN_1 + * @arg @ref LL_GPIO_PIN_2 + * @arg @ref LL_GPIO_PIN_3 + * @arg @ref LL_GPIO_PIN_4 + * @arg @ref LL_GPIO_PIN_5 + * @arg @ref LL_GPIO_PIN_6 + * @arg @ref LL_GPIO_PIN_7 + * @arg @ref LL_GPIO_PIN_8 + * @arg @ref LL_GPIO_PIN_9 + * @arg @ref LL_GPIO_PIN_10 + * @arg @ref LL_GPIO_PIN_11 + * @arg @ref LL_GPIO_PIN_12 + * @arg @ref LL_GPIO_PIN_13 + * @arg @ref LL_GPIO_PIN_14 + * @arg @ref LL_GPIO_PIN_15 + * @arg @ref LL_GPIO_PIN_ALL + * @retval None + */ +__STATIC_INLINE void LL_GPIO_TogglePin(GPIO_TypeDef *GPIOx, uint32_t PinMask) +{ + WRITE_REG(GPIOx->ODR, READ_REG(GPIOx->ODR) ^ ((PinMask >> GPIO_PIN_MASK_POS) & 0x0000FFFFU)); +} + +/** + * @} + */ + +/** @defgroup GPIO_AF_REMAPPING Alternate Function Remapping + * @brief This section propose definition to remap the alternate function to some other port/pins. + * @{ + */ + +/** + * @brief Enable the remapping of SPI1 alternate function NSS, SCK, MISO and MOSI. + * @rmtoll MAPR SPI1_REMAP LL_GPIO_AF_EnableRemap_SPI1 + * @note ENABLE: Remap (NSS/PA15, SCK/PB3, MISO/PB4, MOSI/PB5) + * @retval None + */ +__STATIC_INLINE void LL_GPIO_AF_EnableRemap_SPI1(void) +{ + SET_BIT(AFIO->MAPR, AFIO_MAPR_SPI1_REMAP | AFIO_MAPR_SWJ_CFG); +} + +/** + * @brief Disable the remapping of SPI1 alternate function NSS, SCK, MISO and MOSI. + * @rmtoll MAPR SPI1_REMAP LL_GPIO_AF_DisableRemap_SPI1 + * @note DISABLE: No remap (NSS/PA4, SCK/PA5, MISO/PA6, MOSI/PA7) + * @retval None + */ +__STATIC_INLINE void LL_GPIO_AF_DisableRemap_SPI1(void) +{ + MODIFY_REG(AFIO->MAPR, (AFIO_MAPR_SPI1_REMAP | AFIO_MAPR_SWJ_CFG), AFIO_MAPR_SWJ_CFG); +} + +/** + * @brief Check if SPI1 has been remaped or not + * @rmtoll MAPR SPI1_REMAP LL_GPIO_AF_IsEnabledRemap_SPI1 + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_GPIO_AF_IsEnabledRemap_SPI1(void) +{ + return (READ_BIT(AFIO->MAPR, AFIO_MAPR_SPI1_REMAP) == (AFIO_MAPR_SPI1_REMAP)); +} + +/** + * @brief Enable the remapping of I2C1 alternate function SCL and SDA. + * @rmtoll MAPR I2C1_REMAP LL_GPIO_AF_EnableRemap_I2C1 + * @note ENABLE: Remap (SCL/PB8, SDA/PB9) + * @retval None + */ +__STATIC_INLINE void LL_GPIO_AF_EnableRemap_I2C1(void) +{ + SET_BIT(AFIO->MAPR, AFIO_MAPR_I2C1_REMAP | AFIO_MAPR_SWJ_CFG); +} + +/** + * @brief Disable the remapping of I2C1 alternate function SCL and SDA. + * @rmtoll MAPR I2C1_REMAP LL_GPIO_AF_DisableRemap_I2C1 + * @note DISABLE: No remap (SCL/PB6, SDA/PB7) + * @retval None + */ +__STATIC_INLINE void LL_GPIO_AF_DisableRemap_I2C1(void) +{ + MODIFY_REG(AFIO->MAPR, (AFIO_MAPR_I2C1_REMAP | AFIO_MAPR_SWJ_CFG), AFIO_MAPR_SWJ_CFG); +} + +/** + * @brief Check if I2C1 has been remaped or not + * @rmtoll MAPR I2C1_REMAP LL_GPIO_AF_IsEnabledRemap_I2C1 + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_GPIO_AF_IsEnabledRemap_I2C1(void) +{ + return (READ_BIT(AFIO->MAPR, AFIO_MAPR_I2C1_REMAP) == (AFIO_MAPR_I2C1_REMAP)); +} + +/** + * @brief Enable the remapping of USART1 alternate function TX and RX. + * @rmtoll MAPR USART1_REMAP LL_GPIO_AF_EnableRemap_USART1 + * @note ENABLE: Remap (TX/PB6, RX/PB7) + * @retval None + */ +__STATIC_INLINE void LL_GPIO_AF_EnableRemap_USART1(void) +{ + SET_BIT(AFIO->MAPR, AFIO_MAPR_USART1_REMAP | AFIO_MAPR_SWJ_CFG); +} + +/** + * @brief Disable the remapping of USART1 alternate function TX and RX. + * @rmtoll MAPR USART1_REMAP LL_GPIO_AF_DisableRemap_USART1 + * @note DISABLE: No remap (TX/PA9, RX/PA10) + * @retval None + */ +__STATIC_INLINE void LL_GPIO_AF_DisableRemap_USART1(void) +{ + MODIFY_REG(AFIO->MAPR, (AFIO_MAPR_USART1_REMAP | AFIO_MAPR_SWJ_CFG), AFIO_MAPR_SWJ_CFG); +} + +/** + * @brief Check if USART1 has been remaped or not + * @rmtoll MAPR USART1_REMAP LL_GPIO_AF_IsEnabledRemap_USART1 + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_GPIO_AF_IsEnabledRemap_USART1(void) +{ + return (READ_BIT(AFIO->MAPR, AFIO_MAPR_USART1_REMAP) == (AFIO_MAPR_USART1_REMAP)); +} + +/** + * @brief Enable the remapping of USART2 alternate function CTS, RTS, CK, TX and RX. + * @rmtoll MAPR USART2_REMAP LL_GPIO_AF_EnableRemap_USART2 + * @note ENABLE: Remap (CTS/PD3, RTS/PD4, TX/PD5, RX/PD6, CK/PD7) + * @retval None + */ +__STATIC_INLINE void LL_GPIO_AF_EnableRemap_USART2(void) +{ + SET_BIT(AFIO->MAPR, AFIO_MAPR_USART2_REMAP | AFIO_MAPR_SWJ_CFG); +} + +/** + * @brief Disable the remapping of USART2 alternate function CTS, RTS, CK, TX and RX. + * @rmtoll MAPR USART2_REMAP LL_GPIO_AF_DisableRemap_USART2 + * @note DISABLE: No remap (CTS/PA0, RTS/PA1, TX/PA2, RX/PA3, CK/PA4) + * @retval None + */ +__STATIC_INLINE void LL_GPIO_AF_DisableRemap_USART2(void) +{ + MODIFY_REG(AFIO->MAPR, (AFIO_MAPR_USART2_REMAP | AFIO_MAPR_SWJ_CFG), AFIO_MAPR_SWJ_CFG); +} + +/** + * @brief Check if USART2 has been remaped or not + * @rmtoll MAPR USART2_REMAP LL_GPIO_AF_IsEnabledRemap_USART2 + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_GPIO_AF_IsEnabledRemap_USART2(void) +{ + return (READ_BIT(AFIO->MAPR, AFIO_MAPR_USART2_REMAP) == (AFIO_MAPR_USART2_REMAP)); +} + +#if defined (AFIO_MAPR_USART3_REMAP) +/** + * @brief Enable the remapping of USART3 alternate function CTS, RTS, CK, TX and RX. + * @rmtoll MAPR USART3_REMAP LL_GPIO_AF_EnableRemap_USART3 + * @note ENABLE: Full remap (TX/PD8, RX/PD9, CK/PD10, CTS/PD11, RTS/PD12) + * @retval None + */ +__STATIC_INLINE void LL_GPIO_AF_EnableRemap_USART3(void) +{ + MODIFY_REG(AFIO->MAPR, (AFIO_MAPR_USART3_REMAP | AFIO_MAPR_SWJ_CFG), (AFIO_MAPR_USART3_REMAP_FULLREMAP | AFIO_MAPR_SWJ_CFG)); +} + +/** + * @brief Enable the remapping of USART3 alternate function CTS, RTS, CK, TX and RX. + * @rmtoll MAPR USART3_REMAP LL_GPIO_AF_RemapPartial_USART3 + * @note PARTIAL: Partial remap (TX/PC10, RX/PC11, CK/PC12, CTS/PB13, RTS/PB14) + * @retval None + */ +__STATIC_INLINE void LL_GPIO_AF_RemapPartial_USART3(void) +{ + MODIFY_REG(AFIO->MAPR, (AFIO_MAPR_USART3_REMAP | AFIO_MAPR_SWJ_CFG), (AFIO_MAPR_USART3_REMAP_PARTIALREMAP | AFIO_MAPR_SWJ_CFG)); +} + +/** + * @brief Disable the remapping of USART3 alternate function CTS, RTS, CK, TX and RX. + * @rmtoll MAPR USART3_REMAP LL_GPIO_AF_DisableRemap_USART3 + * @note DISABLE: No remap (TX/PB10, RX/PB11, CK/PB12, CTS/PB13, RTS/PB14) + * @retval None + */ +__STATIC_INLINE void LL_GPIO_AF_DisableRemap_USART3(void) +{ + MODIFY_REG(AFIO->MAPR, (AFIO_MAPR_USART3_REMAP | AFIO_MAPR_SWJ_CFG), (AFIO_MAPR_USART3_REMAP_NOREMAP | AFIO_MAPR_SWJ_CFG)); +} +#endif + +/** + * @brief Enable the remapping of TIM1 alternate function channels 1 to 4, 1N to 3N, external trigger (ETR) and Break input (BKIN) + * @rmtoll MAPR TIM1_REMAP LL_GPIO_AF_EnableRemap_TIM1 + * @note ENABLE: Full remap (ETR/PE7, CH1/PE9, CH2/PE11, CH3/PE13, CH4/PE14, BKIN/PE15, CH1N/PE8, CH2N/PE10, CH3N/PE12) + * @retval None + */ +__STATIC_INLINE void LL_GPIO_AF_EnableRemap_TIM1(void) +{ + MODIFY_REG(AFIO->MAPR, (AFIO_MAPR_TIM1_REMAP | AFIO_MAPR_SWJ_CFG), (AFIO_MAPR_TIM1_REMAP_FULLREMAP | AFIO_MAPR_SWJ_CFG)); +} + +/** + * @brief Enable the remapping of TIM1 alternate function channels 1 to 4, 1N to 3N, external trigger (ETR) and Break input (BKIN) + * @rmtoll MAPR TIM1_REMAP LL_GPIO_AF_RemapPartial_TIM1 + * @note PARTIAL: Partial remap (ETR/PA12, CH1/PA8, CH2/PA9, CH3/PA10, CH4/PA11, BKIN/PA6, CH1N/PA7, CH2N/PB0, CH3N/PB1) + * @retval None + */ +__STATIC_INLINE void LL_GPIO_AF_RemapPartial_TIM1(void) +{ + MODIFY_REG(AFIO->MAPR, (AFIO_MAPR_TIM1_REMAP | AFIO_MAPR_SWJ_CFG), (AFIO_MAPR_TIM1_REMAP_PARTIALREMAP | AFIO_MAPR_SWJ_CFG)); +} + +/** + * @brief Disable the remapping of TIM1 alternate function channels 1 to 4, 1N to 3N, external trigger (ETR) and Break input (BKIN) + * @rmtoll MAPR TIM1_REMAP LL_GPIO_AF_DisableRemap_TIM1 + * @note DISABLE: No remap (ETR/PA12, CH1/PA8, CH2/PA9, CH3/PA10, CH4/PA11, BKIN/PB12, CH1N/PB13, CH2N/PB14, CH3N/PB15) + * @retval None + */ +__STATIC_INLINE void LL_GPIO_AF_DisableRemap_TIM1(void) +{ + MODIFY_REG(AFIO->MAPR, (AFIO_MAPR_TIM1_REMAP | AFIO_MAPR_SWJ_CFG), (AFIO_MAPR_TIM1_REMAP_NOREMAP | AFIO_MAPR_SWJ_CFG)); +} + +/** + * @brief Enable the remapping of TIM2 alternate function channels 1 to 4 and external trigger (ETR) + * @rmtoll MAPR TIM2_REMAP LL_GPIO_AF_EnableRemap_TIM2 + * @note ENABLE: Full remap (CH1/ETR/PA15, CH2/PB3, CH3/PB10, CH4/PB11) + * @retval None + */ +__STATIC_INLINE void LL_GPIO_AF_EnableRemap_TIM2(void) +{ + MODIFY_REG(AFIO->MAPR, (AFIO_MAPR_TIM2_REMAP | AFIO_MAPR_SWJ_CFG), (AFIO_MAPR_TIM2_REMAP_FULLREMAP | AFIO_MAPR_SWJ_CFG)); +} + +/** + * @brief Enable the remapping of TIM2 alternate function channels 1 to 4 and external trigger (ETR) + * @rmtoll MAPR TIM2_REMAP LL_GPIO_AF_RemapPartial2_TIM2 + * @note PARTIAL_2: Partial remap (CH1/ETR/PA0, CH2/PA1, CH3/PB10, CH4/PB11) + * @retval None + */ +__STATIC_INLINE void LL_GPIO_AF_RemapPartial2_TIM2(void) +{ + MODIFY_REG(AFIO->MAPR, (AFIO_MAPR_TIM2_REMAP | AFIO_MAPR_SWJ_CFG), (AFIO_MAPR_TIM2_REMAP_PARTIALREMAP2 | AFIO_MAPR_SWJ_CFG)); +} + +/** + * @brief Enable the remapping of TIM2 alternate function channels 1 to 4 and external trigger (ETR) + * @rmtoll MAPR TIM2_REMAP LL_GPIO_AF_RemapPartial1_TIM2 + * @note PARTIAL_1: Partial remap (CH1/ETR/PA15, CH2/PB3, CH3/PA2, CH4/PA3) + * @retval None + */ +__STATIC_INLINE void LL_GPIO_AF_RemapPartial1_TIM2(void) +{ + MODIFY_REG(AFIO->MAPR, (AFIO_MAPR_TIM2_REMAP | AFIO_MAPR_SWJ_CFG), (AFIO_MAPR_TIM2_REMAP_PARTIALREMAP1 | AFIO_MAPR_SWJ_CFG)); +} + +/** + * @brief Disable the remapping of TIM2 alternate function channels 1 to 4 and external trigger (ETR) + * @rmtoll MAPR TIM2_REMAP LL_GPIO_AF_DisableRemap_TIM2 + * @note DISABLE: No remap (CH1/ETR/PA0, CH2/PA1, CH3/PA2, CH4/PA3) + * @retval None + */ +__STATIC_INLINE void LL_GPIO_AF_DisableRemap_TIM2(void) +{ + MODIFY_REG(AFIO->MAPR, (AFIO_MAPR_TIM2_REMAP | AFIO_MAPR_SWJ_CFG), (AFIO_MAPR_TIM2_REMAP_NOREMAP | AFIO_MAPR_SWJ_CFG)); +} + +/** + * @brief Enable the remapping of TIM3 alternate function channels 1 to 4 + * @rmtoll MAPR TIM3_REMAP LL_GPIO_AF_EnableRemap_TIM3 + * @note ENABLE: Full remap (CH1/PC6, CH2/PC7, CH3/PC8, CH4/PC9) + * @note TIM3_ETR on PE0 is not re-mapped. + * @retval None + */ +__STATIC_INLINE void LL_GPIO_AF_EnableRemap_TIM3(void) +{ + MODIFY_REG(AFIO->MAPR, (AFIO_MAPR_TIM3_REMAP | AFIO_MAPR_SWJ_CFG), (AFIO_MAPR_TIM3_REMAP_FULLREMAP | AFIO_MAPR_SWJ_CFG)); +} + +/** + * @brief Enable the remapping of TIM3 alternate function channels 1 to 4 + * @rmtoll MAPR TIM3_REMAP LL_GPIO_AF_RemapPartial_TIM3 + * @note PARTIAL: Partial remap (CH1/PB4, CH2/PB5, CH3/PB0, CH4/PB1) + * @note TIM3_ETR on PE0 is not re-mapped. + * @retval None + */ +__STATIC_INLINE void LL_GPIO_AF_RemapPartial_TIM3(void) +{ + MODIFY_REG(AFIO->MAPR, (AFIO_MAPR_TIM3_REMAP | AFIO_MAPR_SWJ_CFG), (AFIO_MAPR_TIM3_REMAP_PARTIALREMAP | AFIO_MAPR_SWJ_CFG)); +} + +/** + * @brief Disable the remapping of TIM3 alternate function channels 1 to 4 + * @rmtoll MAPR TIM3_REMAP LL_GPIO_AF_DisableRemap_TIM3 + * @note DISABLE: No remap (CH1/PA6, CH2/PA7, CH3/PB0, CH4/PB1) + * @note TIM3_ETR on PE0 is not re-mapped. + * @retval None + */ +__STATIC_INLINE void LL_GPIO_AF_DisableRemap_TIM3(void) +{ + MODIFY_REG(AFIO->MAPR, (AFIO_MAPR_TIM3_REMAP | AFIO_MAPR_SWJ_CFG), (AFIO_MAPR_TIM3_REMAP_NOREMAP | AFIO_MAPR_SWJ_CFG)); +} + +#if defined(AFIO_MAPR_TIM4_REMAP) +/** + * @brief Enable the remapping of TIM4 alternate function channels 1 to 4. + * @rmtoll MAPR TIM4_REMAP LL_GPIO_AF_EnableRemap_TIM4 + * @note ENABLE: Full remap (TIM4_CH1/PD12, TIM4_CH2/PD13, TIM4_CH3/PD14, TIM4_CH4/PD15) + * @note TIM4_ETR on PE0 is not re-mapped. + * @retval None + */ +__STATIC_INLINE void LL_GPIO_AF_EnableRemap_TIM4(void) +{ + SET_BIT(AFIO->MAPR, AFIO_MAPR_TIM4_REMAP | AFIO_MAPR_SWJ_CFG); +} +/** + * @brief Disable the remapping of TIM4 alternate function channels 1 to 4. + * @rmtoll MAPR TIM4_REMAP LL_GPIO_AF_DisableRemap_TIM4 + * @note DISABLE: No remap (TIM4_CH1/PB6, TIM4_CH2/PB7, TIM4_CH3/PB8, TIM4_CH4/PB9) + * @note TIM4_ETR on PE0 is not re-mapped. + * @retval None + */ +__STATIC_INLINE void LL_GPIO_AF_DisableRemap_TIM4(void) +{ + MODIFY_REG(AFIO->MAPR, (AFIO_MAPR_TIM4_REMAP | AFIO_MAPR_SWJ_CFG), AFIO_MAPR_SWJ_CFG); +} + +/** + * @brief Check if TIM4 has been remaped or not + * @rmtoll MAPR TIM4_REMAP LL_GPIO_AF_IsEnabledRemap_TIM4 + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_GPIO_AF_IsEnabledRemap_TIM4(void) +{ + return (READ_BIT(AFIO->MAPR, AFIO_MAPR_TIM4_REMAP) == (AFIO_MAPR_TIM4_REMAP)); +} +#endif + +#if defined(AFIO_MAPR_CAN_REMAP_REMAP1) + +/** + * @brief Enable or disable the remapping of CAN alternate function CAN_RX and CAN_TX in devices with a single CAN interface. + * @rmtoll MAPR CAN_REMAP LL_GPIO_AF_RemapPartial1_CAN1 + * @note CASE 1: CAN_RX mapped to PA11, CAN_TX mapped to PA12 + * @retval None + */ +__STATIC_INLINE void LL_GPIO_AF_RemapPartial1_CAN1(void) +{ + MODIFY_REG(AFIO->MAPR, (AFIO_MAPR_CAN_REMAP | AFIO_MAPR_SWJ_CFG), (AFIO_MAPR_CAN_REMAP_REMAP1 | AFIO_MAPR_SWJ_CFG)); +} + +/** + * @brief Enable or disable the remapping of CAN alternate function CAN_RX and CAN_TX in devices with a single CAN interface. + * @rmtoll MAPR CAN_REMAP LL_GPIO_AF_RemapPartial2_CAN1 + * @note CASE 2: CAN_RX mapped to PB8, CAN_TX mapped to PB9 (not available on 36-pin package) + * @retval None + */ +__STATIC_INLINE void LL_GPIO_AF_RemapPartial2_CAN1(void) +{ + MODIFY_REG(AFIO->MAPR, (AFIO_MAPR_CAN_REMAP | AFIO_MAPR_SWJ_CFG), (AFIO_MAPR_CAN_REMAP_REMAP2 | AFIO_MAPR_SWJ_CFG)); +} + +/** + * @brief Enable or disable the remapping of CAN alternate function CAN_RX and CAN_TX in devices with a single CAN interface. + * @rmtoll MAPR CAN_REMAP LL_GPIO_AF_RemapPartial3_CAN1 + * @note CASE 3: CAN_RX mapped to PD0, CAN_TX mapped to PD1 + * @retval None + */ +__STATIC_INLINE void LL_GPIO_AF_RemapPartial3_CAN1(void) +{ + MODIFY_REG(AFIO->MAPR, (AFIO_MAPR_CAN_REMAP | AFIO_MAPR_SWJ_CFG), (AFIO_MAPR_CAN_REMAP_REMAP3 | AFIO_MAPR_SWJ_CFG)); +} +#endif + +/** + * @brief Enable the remapping of PD0 and PD1. When the HSE oscillator is not used + * (application running on internal 8 MHz RC) PD0 and PD1 can be mapped on OSC_IN and + * OSC_OUT. This is available only on 36, 48 and 64 pins packages (PD0 and PD1 are available + * on 100-pin and 144-pin packages, no need for remapping). + * @rmtoll MAPR PD01_REMAP LL_GPIO_AF_EnableRemap_PD01 + * @note ENABLE: PD0 remapped on OSC_IN, PD1 remapped on OSC_OUT. + * @retval None + */ +__STATIC_INLINE void LL_GPIO_AF_EnableRemap_PD01(void) +{ + SET_BIT(AFIO->MAPR, AFIO_MAPR_PD01_REMAP | AFIO_MAPR_SWJ_CFG); +} + +/** + * @brief Disable the remapping of PD0 and PD1. When the HSE oscillator is not used + * (application running on internal 8 MHz RC) PD0 and PD1 can be mapped on OSC_IN and + * OSC_OUT. This is available only on 36, 48 and 64 pins packages (PD0 and PD1 are available + * on 100-pin and 144-pin packages, no need for remapping). + * @rmtoll MAPR PD01_REMAP LL_GPIO_AF_DisableRemap_PD01 + * @note DISABLE: No remapping of PD0 and PD1 + * @retval None + */ +__STATIC_INLINE void LL_GPIO_AF_DisableRemap_PD01(void) +{ + MODIFY_REG(AFIO->MAPR, (AFIO_MAPR_PD01_REMAP | AFIO_MAPR_SWJ_CFG), AFIO_MAPR_SWJ_CFG); +} + +/** + * @brief Check if PD01 has been remaped or not + * @rmtoll MAPR PD01_REMAP LL_GPIO_AF_IsEnabledRemap_PD01 + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_GPIO_AF_IsEnabledRemap_PD01(void) +{ + return (READ_BIT(AFIO->MAPR, AFIO_MAPR_PD01_REMAP) == (AFIO_MAPR_PD01_REMAP)); +} + +#if defined(AFIO_MAPR_TIM5CH4_IREMAP) +/** + * @brief Enable the remapping of TIM5CH4. + * @rmtoll MAPR TIM5CH4_IREMAP LL_GPIO_AF_EnableRemap_TIM5CH4 + * @note ENABLE: LSI internal clock is connected to TIM5_CH4 input for calibration purpose. + * @note This function is available only in high density value line devices. + * @retval None + */ +__STATIC_INLINE void LL_GPIO_AF_EnableRemap_TIM5CH4(void) +{ + SET_BIT(AFIO->MAPR, AFIO_MAPR_TIM5CH4_IREMAP | AFIO_MAPR_SWJ_CFG); +} + +/** + * @brief Disable the remapping of TIM5CH4. + * @rmtoll MAPR TIM5CH4_IREMAP LL_GPIO_AF_DisableRemap_TIM5CH4 + * @note DISABLE: TIM5_CH4 is connected to PA3 + * @note This function is available only in high density value line devices. + * @retval None + */ +__STATIC_INLINE void LL_GPIO_AF_DisableRemap_TIM5CH4(void) +{ + MODIFY_REG(AFIO->MAPR, (AFIO_MAPR_TIM5CH4_IREMAP | AFIO_MAPR_SWJ_CFG), AFIO_MAPR_SWJ_CFG); +} + +/** + * @brief Check if TIM5CH4 has been remaped or not + * @rmtoll MAPR TIM5CH4_IREMAP LL_GPIO_AF_IsEnabledRemap_TIM5CH4 + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_GPIO_AF_IsEnabledRemap_TIM5CH4(void) +{ + return (READ_BIT(AFIO->MAPR, AFIO_MAPR_TIM5CH4_IREMAP) == (AFIO_MAPR_TIM5CH4_IREMAP)); +} +#endif + +#if defined(AFIO_MAPR_ETH_REMAP) +/** + * @brief Enable the remapping of Ethernet MAC connections with the PHY. + * @rmtoll MAPR ETH_REMAP LL_GPIO_AF_EnableRemap_ETH + * @note ENABLE: Remap (RX_DV-CRS_DV/PD8, RXD0/PD9, RXD1/PD10, RXD2/PD11, RXD3/PD12) + * @note This bit is available only in connectivity line devices and is reserved otherwise. + * @retval None + */ +__STATIC_INLINE void LL_GPIO_AF_EnableRemap_ETH(void) +{ + SET_BIT(AFIO->MAPR, AFIO_MAPR_ETH_REMAP | AFIO_MAPR_SWJ_CFG); +} + +/** + * @brief Disable the remapping of Ethernet MAC connections with the PHY. + * @rmtoll MAPR ETH_REMAP LL_GPIO_AF_DisableRemap_ETH + * @note DISABLE: No remap (RX_DV-CRS_DV/PA7, RXD0/PC4, RXD1/PC5, RXD2/PB0, RXD3/PB1) + * @note This bit is available only in connectivity line devices and is reserved otherwise. + * @retval None + */ +__STATIC_INLINE void LL_GPIO_AF_DisableRemap_ETH(void) +{ + MODIFY_REG(AFIO->MAPR, (AFIO_MAPR_ETH_REMAP | AFIO_MAPR_SWJ_CFG), AFIO_MAPR_SWJ_CFG); +} + +/** + * @brief Check if ETH has been remaped or not + * @rmtoll MAPR ETH_REMAP LL_GPIO_AF_IsEnabledRemap_ETH + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_GPIO_AF_IsEnabledRemap_ETH(void) +{ + return (READ_BIT(AFIO->MAPR, AFIO_MAPR_ETH_REMAP) == (AFIO_MAPR_ETH_REMAP)); +} +#endif + +#if defined(AFIO_MAPR_CAN2_REMAP) + +/** + * @brief Enable the remapping of CAN2 alternate function CAN2_RX and CAN2_TX. + * @rmtoll MAPR CAN2_REMAP LL_GPIO_AF_EnableRemap_CAN2 + * @note ENABLE: Remap (CAN2_RX/PB5, CAN2_TX/PB6) + * @note This bit is available only in connectivity line devices and is reserved otherwise. + * @retval None + */ +__STATIC_INLINE void LL_GPIO_AF_EnableRemap_CAN2(void) +{ + SET_BIT(AFIO->MAPR, AFIO_MAPR_CAN2_REMAP | AFIO_MAPR_SWJ_CFG); +} +/** + * @brief Disable the remapping of CAN2 alternate function CAN2_RX and CAN2_TX. + * @rmtoll MAPR CAN2_REMAP LL_GPIO_AF_DisableRemap_CAN2 + * @note DISABLE: No remap (CAN2_RX/PB12, CAN2_TX/PB13) + * @note This bit is available only in connectivity line devices and is reserved otherwise. + * @retval None + */ +__STATIC_INLINE void LL_GPIO_AF_DisableRemap_CAN2(void) +{ + MODIFY_REG(AFIO->MAPR, (AFIO_MAPR_CAN2_REMAP | AFIO_MAPR_SWJ_CFG), AFIO_MAPR_SWJ_CFG); +} + +/** + * @brief Check if CAN2 has been remaped or not + * @rmtoll MAPR CAN2_REMAP LL_GPIO_AF_IsEnabledRemap_CAN2 + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_GPIO_AF_IsEnabledRemap_CAN2(void) +{ + return (READ_BIT(AFIO->MAPR, AFIO_MAPR_CAN2_REMAP) == (AFIO_MAPR_CAN2_REMAP)); +} +#endif + +#if defined(AFIO_MAPR_MII_RMII_SEL) +/** + * @brief Configures the Ethernet MAC internally for use with an external MII or RMII PHY. + * @rmtoll MAPR MII_RMII_SEL LL_GPIO_AF_Select_ETH_RMII + * @note ETH_RMII: Configure Ethernet MAC for connection with an RMII PHY + * @note This bit is available only in connectivity line devices and is reserved otherwise. + * @retval None + */ +__STATIC_INLINE void LL_GPIO_AF_Select_ETH_RMII(void) +{ + SET_BIT(AFIO->MAPR, AFIO_MAPR_MII_RMII_SEL | AFIO_MAPR_SWJ_CFG); +} + +/** + * @brief Configures the Ethernet MAC internally for use with an external MII or RMII PHY. + * @rmtoll MAPR MII_RMII_SEL LL_GPIO_AF_Select_ETH_MII + * @note ETH_MII: Configure Ethernet MAC for connection with an MII PHY + * @note This bit is available only in connectivity line devices and is reserved otherwise. + * @retval None + */ +__STATIC_INLINE void LL_GPIO_AF_Select_ETH_MII(void) +{ + MODIFY_REG(AFIO->MAPR, (AFIO_MAPR_MII_RMII_SEL | AFIO_MAPR_SWJ_CFG), AFIO_MAPR_SWJ_CFG); +} +#endif + +#if defined(AFIO_MAPR_ADC1_ETRGINJ_REMAP) +/** + * @brief Enable the remapping of ADC1_ETRGINJ (ADC 1 External trigger injected conversion). + * @rmtoll MAPR ADC1_ETRGINJ_REMAP LL_GPIO_AF_EnableRemap_ADC1_ETRGINJ + * @note ENABLE: ADC1 External Event injected conversion is connected to TIM8 Channel4. + * @retval None + */ +__STATIC_INLINE void LL_GPIO_AF_EnableRemap_ADC1_ETRGINJ(void) +{ + SET_BIT(AFIO->MAPR, AFIO_MAPR_ADC1_ETRGINJ_REMAP | AFIO_MAPR_SWJ_CFG); +} + +/** + * @brief Disable the remapping of ADC1_ETRGINJ (ADC 1 External trigger injected conversion). + * @rmtoll MAPR ADC1_ETRGINJ_REMAP LL_GPIO_AF_DisableRemap_ADC1_ETRGINJ + * @note DISABLE: ADC1 External trigger injected conversion is connected to EXTI15 + * @retval None + */ +__STATIC_INLINE void LL_GPIO_AF_DisableRemap_ADC1_ETRGINJ(void) +{ + MODIFY_REG(AFIO->MAPR, (AFIO_MAPR_ADC1_ETRGINJ_REMAP | AFIO_MAPR_SWJ_CFG), AFIO_MAPR_SWJ_CFG); +} + +/** + * @brief Check if ADC1_ETRGINJ has been remaped or not + * @rmtoll MAPR ADC1_ETRGINJ_REMAP LL_GPIO_AF_IsEnabledRemap_ADC1_ETRGINJ + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_GPIO_AF_IsEnabledRemap_ADC1_ETRGINJ(void) +{ + return (READ_BIT(AFIO->MAPR, AFIO_MAPR_ADC1_ETRGINJ_REMAP) == (AFIO_MAPR_ADC1_ETRGINJ_REMAP)); +} +#endif + +#if defined(AFIO_MAPR_ADC1_ETRGREG_REMAP) +/** + * @brief Enable the remapping of ADC1_ETRGREG (ADC 1 External trigger regular conversion). + * @rmtoll MAPR ADC1_ETRGREG_REMAP LL_GPIO_AF_EnableRemap_ADC1_ETRGREG + * @note ENABLE: ADC1 External Event regular conversion is connected to TIM8 TRG0. + * @retval None + */ +__STATIC_INLINE void LL_GPIO_AF_EnableRemap_ADC1_ETRGREG(void) +{ + SET_BIT(AFIO->MAPR, AFIO_MAPR_ADC1_ETRGREG_REMAP | AFIO_MAPR_SWJ_CFG); +} + +/** + * @brief Disable the remapping of ADC1_ETRGREG (ADC 1 External trigger regular conversion). + * @rmtoll MAPR ADC1_ETRGREG_REMAP LL_GPIO_AF_DisableRemap_ADC1_ETRGREG + * @note DISABLE: ADC1 External trigger regular conversion is connected to EXTI11 + * @retval None + */ +__STATIC_INLINE void LL_GPIO_AF_DisableRemap_ADC1_ETRGREG(void) +{ + MODIFY_REG(AFIO->MAPR, (AFIO_MAPR_ADC1_ETRGREG_REMAP | AFIO_MAPR_SWJ_CFG), AFIO_MAPR_SWJ_CFG); +} + +/** + * @brief Check if ADC1_ETRGREG has been remaped or not + * @rmtoll MAPR ADC1_ETRGREG_REMAP LL_GPIO_AF_IsEnabledRemap_ADC1_ETRGREG + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_GPIO_AF_IsEnabledRemap_ADC1_ETRGREG(void) +{ + return (READ_BIT(AFIO->MAPR, AFIO_MAPR_ADC1_ETRGREG_REMAP) == (AFIO_MAPR_ADC1_ETRGREG_REMAP)); +} +#endif + +#if defined(AFIO_MAPR_ADC2_ETRGINJ_REMAP) + +/** + * @brief Enable the remapping of ADC2_ETRGREG (ADC 2 External trigger injected conversion). + * @rmtoll MAPR ADC2_ETRGINJ_REMAP LL_GPIO_AF_EnableRemap_ADC2_ETRGINJ + * @note ENABLE: ADC2 External Event injected conversion is connected to TIM8 Channel4. + * @retval None + */ +__STATIC_INLINE void LL_GPIO_AF_EnableRemap_ADC2_ETRGINJ(void) +{ + SET_BIT(AFIO->MAPR, AFIO_MAPR_ADC2_ETRGINJ_REMAP | AFIO_MAPR_SWJ_CFG); +} + +/** + * @brief Disable the remapping of ADC2_ETRGREG (ADC 2 External trigger injected conversion). + * @rmtoll MAPR ADC2_ETRGINJ_REMAP LL_GPIO_AF_DisableRemap_ADC2_ETRGINJ + * @note DISABLE: ADC2 External trigger injected conversion is connected to EXTI15 + * @retval None + */ +__STATIC_INLINE void LL_GPIO_AF_DisableRemap_ADC2_ETRGINJ(void) +{ + MODIFY_REG(AFIO->MAPR, (AFIO_MAPR_ADC2_ETRGINJ_REMAP | AFIO_MAPR_SWJ_CFG), AFIO_MAPR_SWJ_CFG); +} + +/** + * @brief Check if ADC2_ETRGINJ has been remaped or not + * @rmtoll MAPR ADC2_ETRGINJ_REMAP LL_GPIO_AF_IsEnabledRemap_ADC2_ETRGINJ + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_GPIO_AF_IsEnabledRemap_ADC2_ETRGINJ(void) +{ + return (READ_BIT(AFIO->MAPR, AFIO_MAPR_ADC2_ETRGINJ_REMAP) == (AFIO_MAPR_ADC2_ETRGINJ_REMAP)); +} +#endif + +#if defined (AFIO_MAPR_ADC2_ETRGREG_REMAP) + +/** + * @brief Enable the remapping of ADC2_ETRGREG (ADC 2 External trigger regular conversion). + * @rmtoll MAPR ADC2_ETRGREG_REMAP LL_GPIO_AF_EnableRemap_ADC2_ETRGREG + * @note ENABLE: ADC2 External Event regular conversion is connected to TIM8 TRG0. + * @retval None + */ +__STATIC_INLINE void LL_GPIO_AF_EnableRemap_ADC2_ETRGREG(void) +{ + SET_BIT(AFIO->MAPR, AFIO_MAPR_ADC2_ETRGREG_REMAP | AFIO_MAPR_SWJ_CFG); +} + +/** + * @brief Disable the remapping of ADC2_ETRGREG (ADC 2 External trigger regular conversion). + * @rmtoll MAPR ADC2_ETRGREG_REMAP LL_GPIO_AF_DisableRemap_ADC2_ETRGREG + * @note DISABLE: ADC2 External trigger regular conversion is connected to EXTI11 + * @retval None + */ +__STATIC_INLINE void LL_GPIO_AF_DisableRemap_ADC2_ETRGREG(void) +{ + MODIFY_REG(AFIO->MAPR, (AFIO_MAPR_ADC2_ETRGREG_REMAP | AFIO_MAPR_SWJ_CFG), AFIO_MAPR_SWJ_CFG); +} + +/** + * @brief Check if ADC2_ETRGREG has been remaped or not + * @rmtoll MAPR ADC2_ETRGREG_REMAP LL_GPIO_AF_IsEnabledRemap_ADC2_ETRGREG + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_GPIO_AF_IsEnabledRemap_ADC2_ETRGREG(void) +{ + return (READ_BIT(AFIO->MAPR, AFIO_MAPR_ADC2_ETRGREG_REMAP) == (AFIO_MAPR_ADC2_ETRGREG_REMAP)); +} +#endif + +/** + * @brief Enable the Serial wire JTAG configuration + * @rmtoll MAPR SWJ_CFG LL_GPIO_AF_EnableRemap_SWJ + * @note ENABLE: Full SWJ (JTAG-DP + SW-DP): Reset State + * @retval None + */ +__STATIC_INLINE void LL_GPIO_AF_EnableRemap_SWJ(void) +{ + CLEAR_BIT(AFIO->MAPR,AFIO_MAPR_SWJ_CFG); + SET_BIT(AFIO->MAPR, AFIO_MAPR_SWJ_CFG_RESET); +} + +/** + * @brief Enable the Serial wire JTAG configuration + * @rmtoll MAPR SWJ_CFG LL_GPIO_AF_Remap_SWJ_NONJTRST + * @note NONJTRST: Full SWJ (JTAG-DP + SW-DP) but without NJTRST + * @retval None + */ +__STATIC_INLINE void LL_GPIO_AF_Remap_SWJ_NONJTRST(void) +{ + CLEAR_BIT(AFIO->MAPR,AFIO_MAPR_SWJ_CFG); + SET_BIT(AFIO->MAPR, AFIO_MAPR_SWJ_CFG_NOJNTRST); +} + +/** + * @brief Enable the Serial wire JTAG configuration + * @rmtoll MAPR SWJ_CFG LL_GPIO_AF_Remap_SWJ_NOJTAG + * @note NOJTAG: JTAG-DP Disabled and SW-DP Enabled + * @retval None + */ +__STATIC_INLINE void LL_GPIO_AF_Remap_SWJ_NOJTAG(void) +{ + CLEAR_BIT(AFIO->MAPR,AFIO_MAPR_SWJ_CFG); + SET_BIT(AFIO->MAPR, AFIO_MAPR_SWJ_CFG_JTAGDISABLE); +} + +/** + * @brief Disable the Serial wire JTAG configuration + * @rmtoll MAPR SWJ_CFG LL_GPIO_AF_DisableRemap_SWJ + * @note DISABLE: JTAG-DP Disabled and SW-DP Disabled + * @retval None + */ +__STATIC_INLINE void LL_GPIO_AF_DisableRemap_SWJ(void) +{ + CLEAR_BIT(AFIO->MAPR,AFIO_MAPR_SWJ_CFG); + SET_BIT(AFIO->MAPR, AFIO_MAPR_SWJ_CFG_DISABLE); +} + +#if defined(AFIO_MAPR_SPI3_REMAP) + +/** + * @brief Enable the remapping of SPI3 alternate functions SPI3_NSS/I2S3_WS, SPI3_SCK/I2S3_CK, SPI3_MISO, SPI3_MOSI/I2S3_SD. + * @rmtoll MAPR SPI3_REMAP LL_GPIO_AF_EnableRemap_SPI3 + * @note ENABLE: Remap (SPI3_NSS-I2S3_WS/PA4, SPI3_SCK-I2S3_CK/PC10, SPI3_MISO/PC11, SPI3_MOSI-I2S3_SD/PC12) + * @note This bit is available only in connectivity line devices and is reserved otherwise. + * @retval None + */ +__STATIC_INLINE void LL_GPIO_AF_EnableRemap_SPI3(void) +{ + SET_BIT(AFIO->MAPR, AFIO_MAPR_SPI3_REMAP | AFIO_MAPR_SWJ_CFG); +} + +/** + * @brief Disable the remapping of SPI3 alternate functions SPI3_NSS/I2S3_WS, SPI3_SCK/I2S3_CK, SPI3_MISO, SPI3_MOSI/I2S3_SD. + * @rmtoll MAPR SPI3_REMAP LL_GPIO_AF_DisableRemap_SPI3 + * @note DISABLE: No remap (SPI3_NSS-I2S3_WS/PA15, SPI3_SCK-I2S3_CK/PB3, SPI3_MISO/PB4, SPI3_MOSI-I2S3_SD/PB5). + * @note This bit is available only in connectivity line devices and is reserved otherwise. + * @retval None + */ +__STATIC_INLINE void LL_GPIO_AF_DisableRemap_SPI3(void) +{ + MODIFY_REG(AFIO->MAPR, (AFIO_MAPR_SPI3_REMAP | AFIO_MAPR_SWJ_CFG), AFIO_MAPR_SWJ_CFG); +} + +/** + * @brief Check if SPI3 has been remaped or not + * @rmtoll MAPR SPI3_REMAP LL_GPIO_AF_IsEnabledRemap_SPI3_REMAP + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_GPIO_AF_IsEnabledRemap_SPI3(void) +{ + return (READ_BIT(AFIO->MAPR, AFIO_MAPR_SPI3_REMAP) == (AFIO_MAPR_SPI3_REMAP)); +} +#endif + +#if defined(AFIO_MAPR_TIM2ITR1_IREMAP) + +/** + * @brief Control of TIM2_ITR1 internal mapping. + * @rmtoll MAPR TIM2ITR1_IREMAP LL_GPIO_AF_Remap_TIM2ITR1_TO_USB + * @note TO_USB: Connect USB OTG SOF (Start of Frame) output to TIM2_ITR1 for calibration purposes. + * @note This bit is available only in connectivity line devices and is reserved otherwise. + * @retval None + */ +__STATIC_INLINE void LL_GPIO_AF_Remap_TIM2ITR1_TO_USB(void) +{ + SET_BIT(AFIO->MAPR, AFIO_MAPR_TIM2ITR1_IREMAP | AFIO_MAPR_SWJ_CFG); +} + +/** + * @brief Control of TIM2_ITR1 internal mapping. + * @rmtoll MAPR TIM2ITR1_IREMAP LL_GPIO_AF_Remap_TIM2ITR1_TO_ETH + * @note TO_ETH: Connect TIM2_ITR1 internally to the Ethernet PTP output for calibration purposes. + * @note This bit is available only in connectivity line devices and is reserved otherwise. + * @retval None + */ +__STATIC_INLINE void LL_GPIO_AF_Remap_TIM2ITR1_TO_ETH(void) +{ + MODIFY_REG(AFIO->MAPR, (AFIO_MAPR_TIM2ITR1_IREMAP | AFIO_MAPR_SWJ_CFG), AFIO_MAPR_SWJ_CFG); +} +#endif + +#if defined(AFIO_MAPR_PTP_PPS_REMAP) + +/** + * @brief Enable the remapping of ADC2_ETRGREG (ADC 2 External trigger regular conversion). + * @rmtoll MAPR PTP_PPS_REMAP LL_GPIO_AF_EnableRemap_ETH_PTP_PPS + * @note ENABLE: PTP_PPS is output on PB5 pin. + * @note This bit is available only in connectivity line devices and is reserved otherwise. + * @retval None + */ +__STATIC_INLINE void LL_GPIO_AF_EnableRemap_ETH_PTP_PPS(void) +{ + SET_BIT(AFIO->MAPR, AFIO_MAPR_PTP_PPS_REMAP | AFIO_MAPR_SWJ_CFG); +} + +/** + * @brief Disable the remapping of ADC2_ETRGREG (ADC 2 External trigger regular conversion). + * @rmtoll MAPR PTP_PPS_REMAP LL_GPIO_AF_DisableRemap_ETH_PTP_PPS + * @note DISABLE: PTP_PPS not output on PB5 pin. + * @note This bit is available only in connectivity line devices and is reserved otherwise. + * @retval None + */ +__STATIC_INLINE void LL_GPIO_AF_DisableRemap_ETH_PTP_PPS(void) +{ + MODIFY_REG(AFIO->MAPR, (AFIO_MAPR_PTP_PPS_REMAP | AFIO_MAPR_SWJ_CFG), AFIO_MAPR_SWJ_CFG); +} +#endif + +#if defined(AFIO_MAPR2_TIM9_REMAP) + +/** + * @brief Enable the remapping of TIM9_CH1 and TIM9_CH2. + * @rmtoll MAPR2 TIM9_REMAP LL_GPIO_AF_EnableRemap_TIM9 + * @note ENABLE: Remap (TIM9_CH1 on PE5 and TIM9_CH2 on PE6). + * @retval None + */ +__STATIC_INLINE void LL_GPIO_AF_EnableRemap_TIM9(void) +{ + SET_BIT(AFIO->MAPR2, AFIO_MAPR2_TIM9_REMAP); +} + +/** + * @brief Disable the remapping of TIM9_CH1 and TIM9_CH2. + * @rmtoll MAPR2 TIM9_REMAP LL_GPIO_AF_DisableRemap_TIM9 + * @note DISABLE: No remap (TIM9_CH1 on PA2 and TIM9_CH2 on PA3). + * @retval None + */ +__STATIC_INLINE void LL_GPIO_AF_DisableRemap_TIM9(void) +{ + CLEAR_BIT(AFIO->MAPR2, AFIO_MAPR2_TIM9_REMAP); +} + +/** + * @brief Check if TIM9_CH1 and TIM9_CH2 have been remaped or not + * @rmtoll MAPR2 TIM9_REMAP LL_GPIO_AF_IsEnabledRemap_TIM9 + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_GPIO_AF_IsEnabledRemap_TIM9(void) +{ + return (READ_BIT(AFIO->MAPR2, AFIO_MAPR2_TIM9_REMAP) == (AFIO_MAPR2_TIM9_REMAP)); +} +#endif + +#if defined(AFIO_MAPR2_TIM10_REMAP) + +/** + * @brief Enable the remapping of TIM10_CH1. + * @rmtoll MAPR2 TIM10_REMAP LL_GPIO_AF_EnableRemap_TIM10 + * @note ENABLE: Remap (TIM10_CH1 on PF6). + * @retval None + */ +__STATIC_INLINE void LL_GPIO_AF_EnableRemap_TIM10(void) +{ + SET_BIT(AFIO->MAPR2, AFIO_MAPR2_TIM10_REMAP); +} + +/** + * @brief Disable the remapping of TIM10_CH1. + * @rmtoll MAPR2 TIM10_REMAP LL_GPIO_AF_DisableRemap_TIM10 + * @note DISABLE: No remap (TIM10_CH1 on PB8). + * @retval None + */ +__STATIC_INLINE void LL_GPIO_AF_DisableRemap_TIM10(void) +{ + CLEAR_BIT(AFIO->MAPR2, AFIO_MAPR2_TIM10_REMAP); +} + +/** + * @brief Check if TIM10_CH1 has been remaped or not + * @rmtoll MAPR2 TIM10_REMAP LL_GPIO_AF_IsEnabledRemap_TIM10 + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_GPIO_AF_IsEnabledRemap_TIM10(void) +{ + return (READ_BIT(AFIO->MAPR2, AFIO_MAPR2_TIM10_REMAP) == (AFIO_MAPR2_TIM10_REMAP)); +} +#endif + +#if defined(AFIO_MAPR2_TIM11_REMAP) +/** + * @brief Enable the remapping of TIM11_CH1. + * @rmtoll MAPR2 TIM11_REMAP LL_GPIO_AF_EnableRemap_TIM11 + * @note ENABLE: Remap (TIM11_CH1 on PF7). + * @retval None + */ +__STATIC_INLINE void LL_GPIO_AF_EnableRemap_TIM11(void) +{ + SET_BIT(AFIO->MAPR2, AFIO_MAPR2_TIM11_REMAP); +} + +/** + * @brief Disable the remapping of TIM11_CH1. + * @rmtoll MAPR2 TIM11_REMAP LL_GPIO_AF_DisableRemap_TIM11 + * @note DISABLE: No remap (TIM11_CH1 on PB9). + * @retval None + */ +__STATIC_INLINE void LL_GPIO_AF_DisableRemap_TIM11(void) +{ + CLEAR_BIT(AFIO->MAPR2, AFIO_MAPR2_TIM11_REMAP); +} + +/** + * @brief Check if TIM11_CH1 has been remaped or not + * @rmtoll MAPR2 TIM11_REMAP LL_GPIO_AF_IsEnabledRemap_TIM11 + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_GPIO_AF_IsEnabledRemap_TIM11(void) +{ + return (READ_BIT(AFIO->MAPR2, AFIO_MAPR2_TIM11_REMAP) == (AFIO_MAPR2_TIM11_REMAP)); +} +#endif + +#if defined(AFIO_MAPR2_TIM13_REMAP) + +/** + * @brief Enable the remapping of TIM13_CH1. + * @rmtoll MAPR2 TIM13_REMAP LL_GPIO_AF_EnableRemap_TIM13 + * @note ENABLE: Remap STM32F100:(TIM13_CH1 on PF8). Others:(TIM13_CH1 on PB0). + * @retval None + */ +__STATIC_INLINE void LL_GPIO_AF_EnableRemap_TIM13(void) +{ + SET_BIT(AFIO->MAPR2, AFIO_MAPR2_TIM13_REMAP); +} + +/** + * @brief Disable the remapping of TIM13_CH1. + * @rmtoll MAPR2 TIM13_REMAP LL_GPIO_AF_DisableRemap_TIM13 + * @note DISABLE: No remap STM32F100:(TIM13_CH1 on PA6). Others:(TIM13_CH1 on PC8). + * @retval None + */ +__STATIC_INLINE void LL_GPIO_AF_DisableRemap_TIM13(void) +{ + CLEAR_BIT(AFIO->MAPR2, AFIO_MAPR2_TIM13_REMAP); +} + +/** + * @brief Check if TIM13_CH1 has been remaped or not + * @rmtoll MAPR2 TIM13_REMAP LL_GPIO_AF_IsEnabledRemap_TIM13 + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_GPIO_AF_IsEnabledRemap_TIM13(void) +{ + return (READ_BIT(AFIO->MAPR2, AFIO_MAPR2_TIM13_REMAP) == (AFIO_MAPR2_TIM13_REMAP)); +} +#endif + +#if defined(AFIO_MAPR2_TIM14_REMAP) + +/** + * @brief Enable the remapping of TIM14_CH1. + * @rmtoll MAPR2 TIM14_REMAP LL_GPIO_AF_EnableRemap_TIM14 + * @note ENABLE: Remap STM32F100:(TIM14_CH1 on PB1). Others:(TIM14_CH1 on PF9). + * @retval None + */ +__STATIC_INLINE void LL_GPIO_AF_EnableRemap_TIM14(void) +{ + SET_BIT(AFIO->MAPR2, AFIO_MAPR2_TIM14_REMAP); +} + +/** + * @brief Disable the remapping of TIM14_CH1. + * @rmtoll MAPR2 TIM14_REMAP LL_GPIO_AF_DisableRemap_TIM14 + * @note DISABLE: No remap STM32F100:(TIM14_CH1 on PC9). Others:(TIM14_CH1 on PA7). + * @retval None + */ +__STATIC_INLINE void LL_GPIO_AF_DisableRemap_TIM14(void) +{ + CLEAR_BIT(AFIO->MAPR2, AFIO_MAPR2_TIM14_REMAP); +} + +/** + * @brief Check if TIM14_CH1 has been remaped or not + * @rmtoll MAPR2 TIM14_REMAP LL_GPIO_AF_IsEnabledRemap_TIM14 + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_GPIO_AF_IsEnabledRemap_TIM14(void) +{ + return (READ_BIT(AFIO->MAPR2, AFIO_MAPR2_TIM14_REMAP) == (AFIO_MAPR2_TIM14_REMAP)); +} +#endif + +#if defined(AFIO_MAPR2_FSMC_NADV_REMAP) + +/** + * @brief Controls the use of the optional FSMC_NADV signal. + * @rmtoll MAPR2 FSMC_NADV LL_GPIO_AF_Disconnect_FSMCNADV + * @note DISCONNECTED: The NADV signal is not connected. The I/O pin can be used by another peripheral. + * @retval None + */ +__STATIC_INLINE void LL_GPIO_AF_Disconnect_FSMCNADV(void) +{ + SET_BIT(AFIO->MAPR2, AFIO_MAPR2_FSMC_NADV_REMAP); +} + +/** + * @brief Controls the use of the optional FSMC_NADV signal. + * @rmtoll MAPR2 FSMC_NADV LL_GPIO_AF_Connect_FSMCNADV + * @note CONNECTED: The NADV signal is connected to the output (default). + * @retval None + */ +__STATIC_INLINE void LL_GPIO_AF_Connect_FSMCNADV(void) +{ + CLEAR_BIT(AFIO->MAPR2, AFIO_MAPR2_FSMC_NADV_REMAP); +} +#endif + +#if defined(AFIO_MAPR2_TIM15_REMAP) + +/** + * @brief Enable the remapping of TIM15_CH1 and TIM15_CH2. + * @rmtoll MAPR2 TIM15_REMAP LL_GPIO_AF_EnableRemap_TIM15 + * @note ENABLE: Remap (TIM15_CH1 on PB14 and TIM15_CH2 on PB15). + * @retval None + */ +__STATIC_INLINE void LL_GPIO_AF_EnableRemap_TIM15(void) +{ + SET_BIT(AFIO->MAPR2, AFIO_MAPR2_TIM15_REMAP); +} +/** + * @brief Disable the remapping of TIM15_CH1 and TIM15_CH2. + * @rmtoll MAPR2 TIM15_REMAP LL_GPIO_AF_DisableRemap_TIM15 + * @note DISABLE: No remap (TIM15_CH1 on PA2 and TIM15_CH2 on PA3). + * @retval None + */ +__STATIC_INLINE void LL_GPIO_AF_DisableRemap_TIM15(void) +{ + CLEAR_BIT(AFIO->MAPR2, AFIO_MAPR2_TIM15_REMAP); +} + +/** + * @brief Check if TIM15_CH1 has been remaped or not + * @rmtoll MAPR2 TIM15_REMAP LL_GPIO_AF_IsEnabledRemap_TIM15 + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_GPIO_AF_IsEnabledRemap_TIM15(void) +{ + return (READ_BIT(AFIO->MAPR2, AFIO_MAPR2_TIM15_REMAP) == (AFIO_MAPR2_TIM15_REMAP)); +} +#endif + +#if defined(AFIO_MAPR2_TIM16_REMAP) + +/** + * @brief Enable the remapping of TIM16_CH1. + * @rmtoll MAPR2 TIM16_REMAP LL_GPIO_AF_EnableRemap_TIM16 + * @note ENABLE: Remap (TIM16_CH1 on PA6). + * @retval None + */ +__STATIC_INLINE void LL_GPIO_AF_EnableRemap_TIM16(void) +{ + SET_BIT(AFIO->MAPR2, AFIO_MAPR2_TIM16_REMAP); +} + +/** + * @brief Disable the remapping of TIM16_CH1. + * @rmtoll MAPR2 TIM16_REMAP LL_GPIO_AF_DisableRemap_TIM16 + * @note DISABLE: No remap (TIM16_CH1 on PB8). + * @retval None + */ +__STATIC_INLINE void LL_GPIO_AF_DisableRemap_TIM16(void) +{ + CLEAR_BIT(AFIO->MAPR2, AFIO_MAPR2_TIM16_REMAP); +} + +/** + * @brief Check if TIM16_CH1 has been remaped or not + * @rmtoll MAPR2 TIM16_REMAP LL_GPIO_AF_IsEnabledRemap_TIM16 + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_GPIO_AF_IsEnabledRemap_TIM16(void) +{ + return (READ_BIT(AFIO->MAPR2, AFIO_MAPR2_TIM16_REMAP) == (AFIO_MAPR2_TIM16_REMAP)); +} +#endif + +#if defined(AFIO_MAPR2_TIM17_REMAP) + +/** + * @brief Enable the remapping of TIM17_CH1. + * @rmtoll MAPR2 TIM17_REMAP LL_GPIO_AF_EnableRemap_TIM17 + * @note ENABLE: Remap (TIM17_CH1 on PA7). + * @retval None + */ +__STATIC_INLINE void LL_GPIO_AF_EnableRemap_TIM17(void) +{ + SET_BIT(AFIO->MAPR2, AFIO_MAPR2_TIM17_REMAP); +} + +/** + * @brief Disable the remapping of TIM17_CH1. + * @rmtoll MAPR2 TIM17_REMAP LL_GPIO_AF_DisableRemap_TIM17 + * @note DISABLE: No remap (TIM17_CH1 on PB9). + * @retval None + */ +__STATIC_INLINE void LL_GPIO_AF_DisableRemap_TIM17(void) +{ + CLEAR_BIT(AFIO->MAPR2, AFIO_MAPR2_TIM17_REMAP); +} + +/** + * @brief Check if TIM17_CH1 has been remaped or not + * @rmtoll MAPR2 TIM17_REMAP LL_GPIO_AF_IsEnabledRemap_TIM17 + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_GPIO_AF_IsEnabledRemap_TIM17(void) +{ + return (READ_BIT(AFIO->MAPR2, AFIO_MAPR2_TIM17_REMAP) == (AFIO_MAPR2_TIM17_REMAP)); +} +#endif + +#if defined(AFIO_MAPR2_CEC_REMAP) + +/** + * @brief Enable the remapping of CEC. + * @rmtoll MAPR2 CEC_REMAP LL_GPIO_AF_EnableRemap_CEC + * @note ENABLE: Remap (CEC on PB10). + * @retval None + */ +__STATIC_INLINE void LL_GPIO_AF_EnableRemap_CEC(void) +{ + SET_BIT(AFIO->MAPR2, AFIO_MAPR2_CEC_REMAP); +} + +/** + * @brief Disable the remapping of CEC. + * @rmtoll MAPR2 CEC_REMAP LL_GPIO_AF_DisableRemap_CEC + * @note DISABLE: No remap (CEC on PB8). + * @retval None + */ +__STATIC_INLINE void LL_GPIO_AF_DisableRemap_CEC(void) +{ + CLEAR_BIT(AFIO->MAPR2, AFIO_MAPR2_CEC_REMAP); +} + +/** + * @brief Check if CEC has been remaped or not + * @rmtoll MAPR2 CEC_REMAP LL_GPIO_AF_IsEnabledRemap_CEC + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_GPIO_AF_IsEnabledRemap_CEC(void) +{ + return (READ_BIT(AFIO->MAPR2, AFIO_MAPR2_CEC_REMAP) == (AFIO_MAPR2_CEC_REMAP)); +} +#endif + +#if defined(AFIO_MAPR2_TIM1_DMA_REMAP) + +/** + * @brief Controls the mapping of the TIM1_CH1 TIM1_CH2 DMA requests onto the DMA1 channels. + * @rmtoll MAPR2 TIM1_DMA_REMAP LL_GPIO_AF_EnableRemap_TIM1DMA + * @note ENABLE: Remap (TIM1_CH1 DMA request/DMA1 Channel6, TIM1_CH2 DMA request/DMA1 Channel6) + * @retval None + */ +__STATIC_INLINE void LL_GPIO_AF_EnableRemap_TIM1DMA(void) +{ + SET_BIT(AFIO->MAPR2, AFIO_MAPR2_TIM1_DMA_REMAP); +} + +/** + * @brief Controls the mapping of the TIM1_CH1 TIM1_CH2 DMA requests onto the DMA1 channels. + * @rmtoll MAPR2 TIM1_DMA_REMAP LL_GPIO_AF_DisableRemap_TIM1DMA + * @note DISABLE: No remap (TIM1_CH1 DMA request/DMA1 Channel2, TIM1_CH2 DMA request/DMA1 Channel3). + * @retval None + */ +__STATIC_INLINE void LL_GPIO_AF_DisableRemap_TIM1DMA(void) +{ + CLEAR_BIT(AFIO->MAPR2, AFIO_MAPR2_TIM1_DMA_REMAP); +} + +/** + * @brief Check if TIM1DMA has been remaped or not + * @rmtoll MAPR2 TIM1_DMA_REMAP LL_GPIO_AF_IsEnabledRemap_TIM1DMA + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_GPIO_AF_IsEnabledRemap_TIM1DMA(void) +{ + return (READ_BIT(AFIO->MAPR2, AFIO_MAPR2_TIM1_DMA_REMAP) == (AFIO_MAPR2_TIM1_DMA_REMAP)); +} +#endif + +#if defined(AFIO_MAPR2_TIM67_DAC_DMA_REMAP) + +/** + * @brief Controls the mapping of the TIM6_DAC1 and TIM7_DAC2 DMA requests onto the DMA1 channels. + * @rmtoll MAPR2 TIM76_DAC_DMA_REMAP LL_GPIO_AF_EnableRemap_TIM67DACDMA + * @note ENABLE: Remap (TIM6_DAC1 DMA request/DMA1 Channel3, TIM7_DAC2 DMA request/DMA1 Channel4) + * @retval None + */ +__STATIC_INLINE void LL_GPIO_AF_EnableRemap_TIM67DACDMA(void) +{ + SET_BIT(AFIO->MAPR2, AFIO_MAPR2_TIM67_DAC_DMA_REMAP); +} + +/** + * @brief Controls the mapping of the TIM6_DAC1 and TIM7_DAC2 DMA requests onto the DMA1 channels. + * @rmtoll MAPR2 TIM76_DAC_DMA_REMAP LL_GPIO_AF_DisableRemap_TIM67DACDMA + * @note DISABLE: No remap (TIM6_DAC1 DMA request/DMA2 Channel3, TIM7_DAC2 DMA request/DMA2 Channel4) + * @retval None + */ +__STATIC_INLINE void LL_GPIO_AF_DisableRemap_TIM67DACDMA(void) +{ + CLEAR_BIT(AFIO->MAPR2, AFIO_MAPR2_TIM67_DAC_DMA_REMAP); +} + +/** + * @brief Check if TIM67DACDMA has been remaped or not + * @rmtoll MAPR2 TIM76_DAC_DMA_REMAP LL_GPIO_AF_IsEnabledRemap_TIM67DACDMA + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_GPIO_AF_IsEnabledRemap_TIM67DACDMA(void) +{ + return (READ_BIT(AFIO->MAPR2, AFIO_MAPR2_TIM67_DAC_DMA_REMAP) == (AFIO_MAPR2_TIM67_DAC_DMA_REMAP)); +} +#endif + +#if defined(AFIO_MAPR2_TIM12_REMAP) + +/** + * @brief Enable the remapping of TIM12_CH1 and TIM12_CH2. + * @rmtoll MAPR2 TIM12_REMAP LL_GPIO_AF_EnableRemap_TIM12 + * @note ENABLE: Remap (TIM12_CH1 on PB12 and TIM12_CH2 on PB13). + * @note This bit is available only in high density value line devices. + * @retval None + */ +__STATIC_INLINE void LL_GPIO_AF_EnableRemap_TIM12(void) +{ + SET_BIT(AFIO->MAPR2, AFIO_MAPR2_TIM12_REMAP); +} + +/** + * @brief Disable the remapping of TIM12_CH1 and TIM12_CH2. + * @rmtoll MAPR2 TIM12_REMAP LL_GPIO_AF_DisableRemap_TIM12 + * @note DISABLE: No remap (TIM12_CH1 on PC4 and TIM12_CH2 on PC5). + * @note This bit is available only in high density value line devices. + * @retval None + */ +__STATIC_INLINE void LL_GPIO_AF_DisableRemap_TIM12(void) +{ + CLEAR_BIT(AFIO->MAPR2, AFIO_MAPR2_TIM12_REMAP); +} + +/** + * @brief Check if TIM12_CH1 has been remaped or not + * @rmtoll MAPR2 TIM12_REMAP LL_GPIO_AF_IsEnabledRemap_TIM12 + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_GPIO_AF_IsEnabledRemap_TIM12(void) +{ + return (READ_BIT(AFIO->MAPR2, AFIO_MAPR2_TIM12_REMAP) == (AFIO_MAPR2_TIM12_REMAP)); +} +#endif + +#if defined(AFIO_MAPR2_MISC_REMAP) + +/** + * @brief Miscellaneous features remapping. + * This bit is set and cleared by software. It controls miscellaneous features. + * The DMA2 channel 5 interrupt position in the vector table. + * The timer selection for DAC trigger 3 (TSEL[2:0] = 011, for more details refer to the DAC_CR register). + * @rmtoll MAPR2 MISC_REMAP LL_GPIO_AF_EnableRemap_MISC + * @note ENABLE: DMA2 channel 5 interrupt is mapped separately at position 60 and TIM15 TRGO event is + * selected as DAC Trigger 3, TIM15 triggers TIM1/3. + * @note This bit is available only in high density value line devices. + * @retval None + */ +__STATIC_INLINE void LL_GPIO_AF_EnableRemap_MISC(void) +{ + SET_BIT(AFIO->MAPR2, AFIO_MAPR2_MISC_REMAP); +} + +/** + * @brief Miscellaneous features remapping. + * This bit is set and cleared by software. It controls miscellaneous features. + * The DMA2 channel 5 interrupt position in the vector table. + * The timer selection for DAC trigger 3 (TSEL[2:0] = 011, for more details refer to the DAC_CR register). + * @rmtoll MAPR2 MISC_REMAP LL_GPIO_AF_DisableRemap_MISC + * @note DISABLE: DMA2 channel 5 interrupt is mapped with DMA2 channel 4 at position 59, TIM5 TRGO + * event is selected as DAC Trigger 3, TIM5 triggers TIM1/3. + * @note This bit is available only in high density value line devices. + * @retval None + */ +__STATIC_INLINE void LL_GPIO_AF_DisableRemap_MISC(void) +{ + CLEAR_BIT(AFIO->MAPR2, AFIO_MAPR2_MISC_REMAP); +} + +/** + * @brief Check if MISC has been remaped or not + * @rmtoll MAPR2 MISC_REMAP LL_GPIO_AF_IsEnabledRemap_MISC + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_GPIO_AF_IsEnabledRemap_MISC(void) +{ + return (READ_BIT(AFIO->MAPR2, AFIO_MAPR2_MISC_REMAP) == (AFIO_MAPR2_MISC_REMAP)); +} +#endif + +/** + * @} + */ + +/** @defgroup GPIO_AF_LL_EVENTOUT Output Event configuration + * @brief This section propose definition to Configure EVENTOUT Cortex feature . + * @{ + */ + +/** + * @brief Configures the port and pin on which the EVENTOUT Cortex signal will be connected. + * @rmtoll EVCR PORT LL_GPIO_AF_ConfigEventout\n + * EVCR PIN LL_GPIO_AF_ConfigEventout + * @param LL_GPIO_PortSource This parameter can be one of the following values: + * @arg @ref LL_GPIO_AF_EVENTOUT_PORT_A + * @arg @ref LL_GPIO_AF_EVENTOUT_PORT_B + * @arg @ref LL_GPIO_AF_EVENTOUT_PORT_C + * @arg @ref LL_GPIO_AF_EVENTOUT_PORT_D + * @arg @ref LL_GPIO_AF_EVENTOUT_PORT_E + * @param LL_GPIO_PinSource This parameter can be one of the following values: + * @arg @ref LL_GPIO_AF_EVENTOUT_PIN_0 + * @arg @ref LL_GPIO_AF_EVENTOUT_PIN_1 + * @arg @ref LL_GPIO_AF_EVENTOUT_PIN_2 + * @arg @ref LL_GPIO_AF_EVENTOUT_PIN_3 + * @arg @ref LL_GPIO_AF_EVENTOUT_PIN_4 + * @arg @ref LL_GPIO_AF_EVENTOUT_PIN_5 + * @arg @ref LL_GPIO_AF_EVENTOUT_PIN_6 + * @arg @ref LL_GPIO_AF_EVENTOUT_PIN_7 + * @arg @ref LL_GPIO_AF_EVENTOUT_PIN_8 + * @arg @ref LL_GPIO_AF_EVENTOUT_PIN_9 + * @arg @ref LL_GPIO_AF_EVENTOUT_PIN_10 + * @arg @ref LL_GPIO_AF_EVENTOUT_PIN_11 + * @arg @ref LL_GPIO_AF_EVENTOUT_PIN_12 + * @arg @ref LL_GPIO_AF_EVENTOUT_PIN_13 + * @arg @ref LL_GPIO_AF_EVENTOUT_PIN_14 + * @arg @ref LL_GPIO_AF_EVENTOUT_PIN_15 + * @retval None +*/ +__STATIC_INLINE void LL_GPIO_AF_ConfigEventout(uint32_t LL_GPIO_PortSource, uint32_t LL_GPIO_PinSource) +{ + MODIFY_REG(AFIO->EVCR, (AFIO_EVCR_PORT) | (AFIO_EVCR_PIN), (LL_GPIO_PortSource) | (LL_GPIO_PinSource)); +} + +/** + * @brief Enables the Event Output. + * @rmtoll EVCR EVOE LL_GPIO_AF_EnableEventout + * @retval None + */ +__STATIC_INLINE void LL_GPIO_AF_EnableEventout(void) +{ + SET_BIT(AFIO->EVCR, AFIO_EVCR_EVOE); +} + +/** + * @brief Disables the Event Output. + * @rmtoll EVCR EVOE LL_GPIO_AF_DisableEventout + * @retval None + */ +__STATIC_INLINE void LL_GPIO_AF_DisableEventout(void) +{ + CLEAR_BIT(AFIO->EVCR, AFIO_EVCR_EVOE); +} + +/** + * @} + */ +/** @defgroup GPIO_AF_LL_EXTI EXTI external interrupt + * @brief This section Configure source input for the EXTI external interrupt . + * @{ + */ + +/** + * @brief Configure source input for the EXTI external interrupt. + * @rmtoll AFIO_EXTICR1 EXTIx LL_GPIO_AF_SetEXTISource\n + * AFIO_EXTICR2 EXTIx LL_GPIO_AF_SetEXTISource\n + * AFIO_EXTICR3 EXTIx LL_GPIO_AF_SetEXTISource\n + * AFIO_EXTICR4 EXTIx LL_GPIO_AF_SetEXTISource + * @param Port This parameter can be one of the following values: + * @arg @ref LL_GPIO_AF_EXTI_PORTA + * @arg @ref LL_GPIO_AF_EXTI_PORTB + * @arg @ref LL_GPIO_AF_EXTI_PORTC + * @arg @ref LL_GPIO_AF_EXTI_PORTD + * @arg @ref LL_GPIO_AF_EXTI_PORTE + * @arg @ref LL_GPIO_AF_EXTI_PORTF + * @arg @ref LL_GPIO_AF_EXTI_PORTG + * @param Line This parameter can be one of the following values: + * @arg @ref LL_GPIO_AF_EXTI_LINE0 + * @arg @ref LL_GPIO_AF_EXTI_LINE1 + * @arg @ref LL_GPIO_AF_EXTI_LINE2 + * @arg @ref LL_GPIO_AF_EXTI_LINE3 + * @arg @ref LL_GPIO_AF_EXTI_LINE4 + * @arg @ref LL_GPIO_AF_EXTI_LINE5 + * @arg @ref LL_GPIO_AF_EXTI_LINE6 + * @arg @ref LL_GPIO_AF_EXTI_LINE7 + * @arg @ref LL_GPIO_AF_EXTI_LINE8 + * @arg @ref LL_GPIO_AF_EXTI_LINE9 + * @arg @ref LL_GPIO_AF_EXTI_LINE10 + * @arg @ref LL_GPIO_AF_EXTI_LINE11 + * @arg @ref LL_GPIO_AF_EXTI_LINE12 + * @arg @ref LL_GPIO_AF_EXTI_LINE13 + * @arg @ref LL_GPIO_AF_EXTI_LINE14 + * @arg @ref LL_GPIO_AF_EXTI_LINE15 + * @retval None + */ +__STATIC_INLINE void LL_GPIO_AF_SetEXTISource(uint32_t Port, uint32_t Line) +{ + MODIFY_REG(AFIO->EXTICR[Line & 0xFF], (Line >> 16), Port << POSITION_VAL((Line >> 16))); +} + +/** + * @brief Get the configured defined for specific EXTI Line + * @rmtoll AFIO_EXTICR1 EXTIx LL_GPIO_AF_GetEXTISource\n + * AFIO_EXTICR2 EXTIx LL_GPIO_AF_GetEXTISource\n + * AFIO_EXTICR3 EXTIx LL_GPIO_AF_GetEXTISource\n + * AFIO_EXTICR4 EXTIx LL_GPIO_AF_GetEXTISource + * @param Line This parameter can be one of the following values: + * @arg @ref LL_GPIO_AF_EXTI_LINE0 + * @arg @ref LL_GPIO_AF_EXTI_LINE1 + * @arg @ref LL_GPIO_AF_EXTI_LINE2 + * @arg @ref LL_GPIO_AF_EXTI_LINE3 + * @arg @ref LL_GPIO_AF_EXTI_LINE4 + * @arg @ref LL_GPIO_AF_EXTI_LINE5 + * @arg @ref LL_GPIO_AF_EXTI_LINE6 + * @arg @ref LL_GPIO_AF_EXTI_LINE7 + * @arg @ref LL_GPIO_AF_EXTI_LINE8 + * @arg @ref LL_GPIO_AF_EXTI_LINE9 + * @arg @ref LL_GPIO_AF_EXTI_LINE10 + * @arg @ref LL_GPIO_AF_EXTI_LINE11 + * @arg @ref LL_GPIO_AF_EXTI_LINE12 + * @arg @ref LL_GPIO_AF_EXTI_LINE13 + * @arg @ref LL_GPIO_AF_EXTI_LINE14 + * @arg @ref LL_GPIO_AF_EXTI_LINE15 + * @retval Returned value can be one of the following values: + * @arg @ref LL_GPIO_AF_EXTI_PORTA + * @arg @ref LL_GPIO_AF_EXTI_PORTB + * @arg @ref LL_GPIO_AF_EXTI_PORTC + * @arg @ref LL_GPIO_AF_EXTI_PORTD + * @arg @ref LL_GPIO_AF_EXTI_PORTE + * @arg @ref LL_GPIO_AF_EXTI_PORTF + * @arg @ref LL_GPIO_AF_EXTI_PORTG + */ +__STATIC_INLINE uint32_t LL_GPIO_AF_GetEXTISource(uint32_t Line) +{ + return (uint32_t)(READ_BIT(AFIO->EXTICR[Line & 0xFF], (Line >> 16)) >> POSITION_VAL(Line >> 16)); +} + +/** + * @} + */ + +#if defined(USE_FULL_LL_DRIVER) +/** @defgroup GPIO_LL_EF_Init Initialization and de-initialization functions + * @{ + */ + +ErrorStatus LL_GPIO_DeInit(GPIO_TypeDef *GPIOx); +ErrorStatus LL_GPIO_Init(GPIO_TypeDef *GPIOx, LL_GPIO_InitTypeDef *GPIO_InitStruct); +void LL_GPIO_StructInit(LL_GPIO_InitTypeDef *GPIO_InitStruct); + +/** + * @} + */ +#endif /* USE_FULL_LL_DRIVER */ + +/** + * @} + */ + +/** + * @} + */ + +#endif /* defined (GPIOA) || defined (GPIOB) || defined (GPIOC) || defined (GPIOD) || defined (GPIOE) || defined (GPIOF) || defined (GPIOG) */ +/** + * @} + */ + +#ifdef __cplusplus +} +#endif + +#endif /* STM32F1xx_LL_GPIO_H */ + +/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/ diff --git a/LLDrivers/inc/stm32f1xx_ll_i2c.h b/LLDrivers/inc/stm32f1xx_ll_i2c.h new file mode 100644 index 0000000..7916f5f --- /dev/null +++ b/LLDrivers/inc/stm32f1xx_ll_i2c.h @@ -0,0 +1,1784 @@ +/** + ****************************************************************************** + * @file stm32f1xx_ll_i2c.h + * @author MCD Application Team + * @brief Header file of I2C LL module. + ****************************************************************************** + * @attention + * + *

© Copyright (c) 2016 STMicroelectronics. + * All rights reserved.

+ * + * This software component is licensed by ST under BSD 3-Clause license, + * the "License"; You may not use this file except in compliance with the + * License. You may obtain a copy of the License at: + * opensource.org/licenses/BSD-3-Clause + * + ****************************************************************************** + */ + +/* Define to prevent recursive inclusion -------------------------------------*/ +#ifndef __STM32F1xx_LL_I2C_H +#define __STM32F1xx_LL_I2C_H + +#ifdef __cplusplus +extern "C" { +#endif + +/* Includes ------------------------------------------------------------------*/ +#include "stm32f1xx.h" + +/** @addtogroup STM32F1xx_LL_Driver + * @{ + */ + +#if defined (I2C1) || defined (I2C2) + +/** @defgroup I2C_LL I2C + * @{ + */ + +/* Private types -------------------------------------------------------------*/ +/* Private variables ---------------------------------------------------------*/ + +/* Private constants ---------------------------------------------------------*/ +/** @defgroup I2C_LL_Private_Constants I2C Private Constants + * @{ + */ + +/* Defines used to perform compute and check in the macros */ +#define LL_I2C_MAX_SPEED_STANDARD 100000U +#define LL_I2C_MAX_SPEED_FAST 400000U +/** + * @} + */ + +/* Private macros ------------------------------------------------------------*/ +#if defined(USE_FULL_LL_DRIVER) +/** @defgroup I2C_LL_Private_Macros I2C Private Macros + * @{ + */ +/** + * @} + */ +#endif /*USE_FULL_LL_DRIVER*/ + +/* Exported types ------------------------------------------------------------*/ +#if defined(USE_FULL_LL_DRIVER) +/** @defgroup I2C_LL_ES_INIT I2C Exported Init structure + * @{ + */ +typedef struct +{ + uint32_t PeripheralMode; /*!< Specifies the peripheral mode. + This parameter can be a value of @ref I2C_LL_EC_PERIPHERAL_MODE + + This feature can be modified afterwards using unitary function @ref LL_I2C_SetMode(). */ + + uint32_t ClockSpeed; /*!< Specifies the clock frequency. + This parameter must be set to a value lower than 400kHz (in Hz) + + This feature can be modified afterwards using unitary function @ref LL_I2C_SetClockPeriod() + or @ref LL_I2C_SetDutyCycle() or @ref LL_I2C_SetClockSpeedMode() or @ref LL_I2C_ConfigSpeed(). */ + + uint32_t DutyCycle; /*!< Specifies the I2C fast mode duty cycle. + This parameter can be a value of @ref I2C_LL_EC_DUTYCYCLE + + This feature can be modified afterwards using unitary function @ref LL_I2C_SetDutyCycle(). */ + + uint32_t OwnAddress1; /*!< Specifies the device own address 1. + This parameter must be a value between Min_Data = 0x00 and Max_Data = 0x3FF + + This feature can be modified afterwards using unitary function @ref LL_I2C_SetOwnAddress1(). */ + + uint32_t TypeAcknowledge; /*!< Specifies the ACKnowledge or Non ACKnowledge condition after the address receive match code or next received byte. + This parameter can be a value of @ref I2C_LL_EC_I2C_ACKNOWLEDGE + + This feature can be modified afterwards using unitary function @ref LL_I2C_AcknowledgeNextData(). */ + + uint32_t OwnAddrSize; /*!< Specifies the device own address 1 size (7-bit or 10-bit). + This parameter can be a value of @ref I2C_LL_EC_OWNADDRESS1 + + This feature can be modified afterwards using unitary function @ref LL_I2C_SetOwnAddress1(). */ +} LL_I2C_InitTypeDef; +/** + * @} + */ +#endif /*USE_FULL_LL_DRIVER*/ + +/* Exported constants --------------------------------------------------------*/ +/** @defgroup I2C_LL_Exported_Constants I2C Exported Constants + * @{ + */ + +/** @defgroup I2C_LL_EC_GET_FLAG Get Flags Defines + * @brief Flags defines which can be used with LL_I2C_ReadReg function + * @{ + */ +#define LL_I2C_SR1_SB I2C_SR1_SB /*!< Start Bit (master mode) */ +#define LL_I2C_SR1_ADDR I2C_SR1_ADDR /*!< Address sent (master mode) or + Address matched flag (slave mode) */ +#define LL_I2C_SR1_BTF I2C_SR1_BTF /*!< Byte Transfer Finished flag */ +#define LL_I2C_SR1_ADD10 I2C_SR1_ADD10 /*!< 10-bit header sent (master mode) */ +#define LL_I2C_SR1_STOPF I2C_SR1_STOPF /*!< Stop detection flag (slave mode) */ +#define LL_I2C_SR1_RXNE I2C_SR1_RXNE /*!< Data register not empty (receivers) */ +#define LL_I2C_SR1_TXE I2C_SR1_TXE /*!< Data register empty (transmitters) */ +#define LL_I2C_SR1_BERR I2C_SR1_BERR /*!< Bus error */ +#define LL_I2C_SR1_ARLO I2C_SR1_ARLO /*!< Arbitration lost */ +#define LL_I2C_SR1_AF I2C_SR1_AF /*!< Acknowledge failure flag */ +#define LL_I2C_SR1_OVR I2C_SR1_OVR /*!< Overrun/Underrun */ +#define LL_I2C_SR1_PECERR I2C_ISR_PECERR /*!< PEC Error in reception (SMBus mode) */ +#define LL_I2C_SR1_TIMEOUT I2C_ISR_TIMEOUT /*!< Timeout detection flag (SMBus mode) */ +#define LL_I2C_SR1_SMALERT I2C_ISR_SMALERT /*!< SMBus alert (SMBus mode) */ +#define LL_I2C_SR2_MSL I2C_SR2_MSL /*!< Master/Slave flag */ +#define LL_I2C_SR2_BUSY I2C_SR2_BUSY /*!< Bus busy flag */ +#define LL_I2C_SR2_TRA I2C_SR2_TRA /*!< Transmitter/receiver direction */ +#define LL_I2C_SR2_GENCALL I2C_SR2_GENCALL /*!< General call address (Slave mode) */ +#define LL_I2C_SR2_SMBDEFAULT I2C_SR2_SMBDEFAULT /*!< SMBus Device default address (Slave mode) */ +#define LL_I2C_SR2_SMBHOST I2C_SR2_SMBHOST /*!< SMBus Host address (Slave mode) */ +#define LL_I2C_SR2_DUALF I2C_SR2_DUALF /*!< Dual flag (Slave mode) */ +/** + * @} + */ + +/** @defgroup I2C_LL_EC_IT IT Defines + * @brief IT defines which can be used with LL_I2C_ReadReg and LL_I2C_WriteReg functions + * @{ + */ +#define LL_I2C_CR2_ITEVTEN I2C_CR2_ITEVTEN /*!< Events interrupts enable */ +#define LL_I2C_CR2_ITBUFEN I2C_CR2_ITBUFEN /*!< Buffer interrupts enable */ +#define LL_I2C_CR2_ITERREN I2C_CR2_ITERREN /*!< Error interrupts enable */ +/** + * @} + */ + +/** @defgroup I2C_LL_EC_OWNADDRESS1 Own Address 1 Length + * @{ + */ +#define LL_I2C_OWNADDRESS1_7BIT 0x00004000U /*!< Own address 1 is a 7-bit address. */ +#define LL_I2C_OWNADDRESS1_10BIT (uint32_t)(I2C_OAR1_ADDMODE | 0x00004000U) /*!< Own address 1 is a 10-bit address. */ +/** + * @} + */ + +/** @defgroup I2C_LL_EC_DUTYCYCLE Fast Mode Duty Cycle + * @{ + */ +#define LL_I2C_DUTYCYCLE_2 0x00000000U /*!< I2C fast mode Tlow/Thigh = 2 */ +#define LL_I2C_DUTYCYCLE_16_9 I2C_CCR_DUTY /*!< I2C fast mode Tlow/Thigh = 16/9 */ +/** + * @} + */ + +/** @defgroup I2C_LL_EC_CLOCK_SPEED_MODE Master Clock Speed Mode + * @{ + */ +#define LL_I2C_CLOCK_SPEED_STANDARD_MODE 0x00000000U /*!< Master clock speed range is standard mode */ +#define LL_I2C_CLOCK_SPEED_FAST_MODE I2C_CCR_FS /*!< Master clock speed range is fast mode */ +/** + * @} + */ + +/** @defgroup I2C_LL_EC_PERIPHERAL_MODE Peripheral Mode + * @{ + */ +#define LL_I2C_MODE_I2C 0x00000000U /*!< I2C Master or Slave mode */ +#define LL_I2C_MODE_SMBUS_HOST (uint32_t)(I2C_CR1_SMBUS | I2C_CR1_SMBTYPE | I2C_CR1_ENARP) /*!< SMBus Host address acknowledge */ +#define LL_I2C_MODE_SMBUS_DEVICE I2C_CR1_SMBUS /*!< SMBus Device default mode (Default address not acknowledge) */ +#define LL_I2C_MODE_SMBUS_DEVICE_ARP (uint32_t)(I2C_CR1_SMBUS | I2C_CR1_ENARP) /*!< SMBus Device Default address acknowledge */ +/** + * @} + */ + +/** @defgroup I2C_LL_EC_I2C_ACKNOWLEDGE Acknowledge Generation + * @{ + */ +#define LL_I2C_ACK I2C_CR1_ACK /*!< ACK is sent after current received byte. */ +#define LL_I2C_NACK 0x00000000U /*!< NACK is sent after current received byte.*/ +/** + * @} + */ + +/** @defgroup I2C_LL_EC_DIRECTION Read Write Direction + * @{ + */ +#define LL_I2C_DIRECTION_WRITE I2C_SR2_TRA /*!< Bus is in write transfer */ +#define LL_I2C_DIRECTION_READ 0x00000000U /*!< Bus is in read transfer */ +/** + * @} + */ + +/** + * @} + */ + +/* Exported macro ------------------------------------------------------------*/ +/** @defgroup I2C_LL_Exported_Macros I2C Exported Macros + * @{ + */ + +/** @defgroup I2C_LL_EM_WRITE_READ Common Write and read registers Macros + * @{ + */ + +/** + * @brief Write a value in I2C register + * @param __INSTANCE__ I2C Instance + * @param __REG__ Register to be written + * @param __VALUE__ Value to be written in the register + * @retval None + */ +#define LL_I2C_WriteReg(__INSTANCE__, __REG__, __VALUE__) WRITE_REG(__INSTANCE__->__REG__, (__VALUE__)) + +/** + * @brief Read a value in I2C register + * @param __INSTANCE__ I2C Instance + * @param __REG__ Register to be read + * @retval Register value + */ +#define LL_I2C_ReadReg(__INSTANCE__, __REG__) READ_REG(__INSTANCE__->__REG__) +/** + * @} + */ + +/** @defgroup I2C_LL_EM_Exported_Macros_Helper Exported_Macros_Helper + * @{ + */ + +/** + * @brief Convert Peripheral Clock Frequency in Mhz. + * @param __PCLK__ This parameter must be a value of peripheral clock (in Hz). + * @retval Value of peripheral clock (in Mhz) + */ +#define __LL_I2C_FREQ_HZ_TO_MHZ(__PCLK__) (uint32_t)((__PCLK__)/1000000U) + +/** + * @brief Convert Peripheral Clock Frequency in Hz. + * @param __PCLK__ This parameter must be a value of peripheral clock (in Mhz). + * @retval Value of peripheral clock (in Hz) + */ +#define __LL_I2C_FREQ_MHZ_TO_HZ(__PCLK__) (uint32_t)((__PCLK__)*1000000U) + +/** + * @brief Compute I2C Clock rising time. + * @param __FREQRANGE__ This parameter must be a value of peripheral clock (in Mhz). + * @param __SPEED__ This parameter must be a value lower than 400kHz (in Hz). + * @retval Value between Min_Data=0x02 and Max_Data=0x3F + */ +#define __LL_I2C_RISE_TIME(__FREQRANGE__, __SPEED__) (uint32_t)(((__SPEED__) <= LL_I2C_MAX_SPEED_STANDARD) ? ((__FREQRANGE__) + 1U) : ((((__FREQRANGE__) * 300U) / 1000U) + 1U)) + +/** + * @brief Compute Speed clock range to a Clock Control Register (I2C_CCR_CCR) value. + * @param __PCLK__ This parameter must be a value of peripheral clock (in Hz). + * @param __SPEED__ This parameter must be a value lower than 400kHz (in Hz). + * @param __DUTYCYCLE__ This parameter can be one of the following values: + * @arg @ref LL_I2C_DUTYCYCLE_2 + * @arg @ref LL_I2C_DUTYCYCLE_16_9 + * @retval Value between Min_Data=0x004 and Max_Data=0xFFF, except in FAST DUTY mode where Min_Data=0x001. + */ +#define __LL_I2C_SPEED_TO_CCR(__PCLK__, __SPEED__, __DUTYCYCLE__) (uint32_t)(((__SPEED__) <= LL_I2C_MAX_SPEED_STANDARD)? \ + (__LL_I2C_SPEED_STANDARD_TO_CCR((__PCLK__), (__SPEED__))) : \ + (__LL_I2C_SPEED_FAST_TO_CCR((__PCLK__), (__SPEED__), (__DUTYCYCLE__)))) + +/** + * @brief Compute Speed Standard clock range to a Clock Control Register (I2C_CCR_CCR) value. + * @param __PCLK__ This parameter must be a value of peripheral clock (in Hz). + * @param __SPEED__ This parameter must be a value lower than 100kHz (in Hz). + * @retval Value between Min_Data=0x004 and Max_Data=0xFFF. + */ +#define __LL_I2C_SPEED_STANDARD_TO_CCR(__PCLK__, __SPEED__) (uint32_t)(((((__PCLK__)/((__SPEED__) << 1U)) & I2C_CCR_CCR) < 4U)? 4U:((__PCLK__) / ((__SPEED__) << 1U))) + +/** + * @brief Compute Speed Fast clock range to a Clock Control Register (I2C_CCR_CCR) value. + * @param __PCLK__ This parameter must be a value of peripheral clock (in Hz). + * @param __SPEED__ This parameter must be a value between Min_Data=100Khz and Max_Data=400Khz (in Hz). + * @param __DUTYCYCLE__ This parameter can be one of the following values: + * @arg @ref LL_I2C_DUTYCYCLE_2 + * @arg @ref LL_I2C_DUTYCYCLE_16_9 + * @retval Value between Min_Data=0x001 and Max_Data=0xFFF + */ +#define __LL_I2C_SPEED_FAST_TO_CCR(__PCLK__, __SPEED__, __DUTYCYCLE__) (uint32_t)(((__DUTYCYCLE__) == LL_I2C_DUTYCYCLE_2)? \ + (((((__PCLK__) / ((__SPEED__) * 3U)) & I2C_CCR_CCR) == 0U)? 1U:((__PCLK__) / ((__SPEED__) * 3U))) : \ + (((((__PCLK__) / ((__SPEED__) * 25U)) & I2C_CCR_CCR) == 0U)? 1U:((__PCLK__) / ((__SPEED__) * 25U)))) + +/** + * @brief Get the Least significant bits of a 10-Bits address. + * @param __ADDRESS__ This parameter must be a value of a 10-Bits slave address. + * @retval Value between Min_Data=0x00 and Max_Data=0xFF + */ +#define __LL_I2C_10BIT_ADDRESS(__ADDRESS__) ((uint8_t)((uint16_t)((__ADDRESS__) & (uint16_t)(0x00FF)))) + +/** + * @brief Convert a 10-Bits address to a 10-Bits header with Write direction. + * @param __ADDRESS__ This parameter must be a value of a 10-Bits slave address. + * @retval Value between Min_Data=0xF0 and Max_Data=0xF6 + */ +#define __LL_I2C_10BIT_HEADER_WRITE(__ADDRESS__) ((uint8_t)((uint16_t)((uint16_t)(((uint16_t)((__ADDRESS__) & (uint16_t)(0x0300))) >> 7) | (uint16_t)(0xF0)))) + +/** + * @brief Convert a 10-Bits address to a 10-Bits header with Read direction. + * @param __ADDRESS__ This parameter must be a value of a 10-Bits slave address. + * @retval Value between Min_Data=0xF1 and Max_Data=0xF7 + */ +#define __LL_I2C_10BIT_HEADER_READ(__ADDRESS__) ((uint8_t)((uint16_t)((uint16_t)(((uint16_t)((__ADDRESS__) & (uint16_t)(0x0300))) >> 7) | (uint16_t)(0xF1)))) + +/** + * @} + */ + +/** + * @} + */ + +/* Exported functions --------------------------------------------------------*/ + +/** @defgroup I2C_LL_Exported_Functions I2C Exported Functions + * @{ + */ + +/** @defgroup I2C_LL_EF_Configuration Configuration + * @{ + */ + +/** + * @brief Enable I2C peripheral (PE = 1). + * @rmtoll CR1 PE LL_I2C_Enable + * @param I2Cx I2C Instance. + * @retval None + */ +__STATIC_INLINE void LL_I2C_Enable(I2C_TypeDef *I2Cx) +{ + SET_BIT(I2Cx->CR1, I2C_CR1_PE); +} + +/** + * @brief Disable I2C peripheral (PE = 0). + * @rmtoll CR1 PE LL_I2C_Disable + * @param I2Cx I2C Instance. + * @retval None + */ +__STATIC_INLINE void LL_I2C_Disable(I2C_TypeDef *I2Cx) +{ + CLEAR_BIT(I2Cx->CR1, I2C_CR1_PE); +} + +/** + * @brief Check if the I2C peripheral is enabled or disabled. + * @rmtoll CR1 PE LL_I2C_IsEnabled + * @param I2Cx I2C Instance. + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_I2C_IsEnabled(I2C_TypeDef *I2Cx) +{ + return (READ_BIT(I2Cx->CR1, I2C_CR1_PE) == (I2C_CR1_PE)); +} + + +/** + * @brief Enable DMA transmission requests. + * @rmtoll CR2 DMAEN LL_I2C_EnableDMAReq_TX + * @param I2Cx I2C Instance. + * @retval None + */ +__STATIC_INLINE void LL_I2C_EnableDMAReq_TX(I2C_TypeDef *I2Cx) +{ + SET_BIT(I2Cx->CR2, I2C_CR2_DMAEN); +} + +/** + * @brief Disable DMA transmission requests. + * @rmtoll CR2 DMAEN LL_I2C_DisableDMAReq_TX + * @param I2Cx I2C Instance. + * @retval None + */ +__STATIC_INLINE void LL_I2C_DisableDMAReq_TX(I2C_TypeDef *I2Cx) +{ + CLEAR_BIT(I2Cx->CR2, I2C_CR2_DMAEN); +} + +/** + * @brief Check if DMA transmission requests are enabled or disabled. + * @rmtoll CR2 DMAEN LL_I2C_IsEnabledDMAReq_TX + * @param I2Cx I2C Instance. + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_I2C_IsEnabledDMAReq_TX(I2C_TypeDef *I2Cx) +{ + return (READ_BIT(I2Cx->CR2, I2C_CR2_DMAEN) == (I2C_CR2_DMAEN)); +} + +/** + * @brief Enable DMA reception requests. + * @rmtoll CR2 DMAEN LL_I2C_EnableDMAReq_RX + * @param I2Cx I2C Instance. + * @retval None + */ +__STATIC_INLINE void LL_I2C_EnableDMAReq_RX(I2C_TypeDef *I2Cx) +{ + SET_BIT(I2Cx->CR2, I2C_CR2_DMAEN); +} + +/** + * @brief Disable DMA reception requests. + * @rmtoll CR2 DMAEN LL_I2C_DisableDMAReq_RX + * @param I2Cx I2C Instance. + * @retval None + */ +__STATIC_INLINE void LL_I2C_DisableDMAReq_RX(I2C_TypeDef *I2Cx) +{ + CLEAR_BIT(I2Cx->CR2, I2C_CR2_DMAEN); +} + +/** + * @brief Check if DMA reception requests are enabled or disabled. + * @rmtoll CR2 DMAEN LL_I2C_IsEnabledDMAReq_RX + * @param I2Cx I2C Instance. + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_I2C_IsEnabledDMAReq_RX(I2C_TypeDef *I2Cx) +{ + return (READ_BIT(I2Cx->CR2, I2C_CR2_DMAEN) == (I2C_CR2_DMAEN)); +} + +/** + * @brief Get the data register address used for DMA transfer. + * @rmtoll DR DR LL_I2C_DMA_GetRegAddr + * @param I2Cx I2C Instance. + * @retval Address of data register + */ +__STATIC_INLINE uint32_t LL_I2C_DMA_GetRegAddr(I2C_TypeDef *I2Cx) +{ + return (uint32_t) & (I2Cx->DR); +} + +/** + * @brief Enable Clock stretching. + * @note This bit can only be programmed when the I2C is disabled (PE = 0). + * @rmtoll CR1 NOSTRETCH LL_I2C_EnableClockStretching + * @param I2Cx I2C Instance. + * @retval None + */ +__STATIC_INLINE void LL_I2C_EnableClockStretching(I2C_TypeDef *I2Cx) +{ + CLEAR_BIT(I2Cx->CR1, I2C_CR1_NOSTRETCH); +} + +/** + * @brief Disable Clock stretching. + * @note This bit can only be programmed when the I2C is disabled (PE = 0). + * @rmtoll CR1 NOSTRETCH LL_I2C_DisableClockStretching + * @param I2Cx I2C Instance. + * @retval None + */ +__STATIC_INLINE void LL_I2C_DisableClockStretching(I2C_TypeDef *I2Cx) +{ + SET_BIT(I2Cx->CR1, I2C_CR1_NOSTRETCH); +} + +/** + * @brief Check if Clock stretching is enabled or disabled. + * @rmtoll CR1 NOSTRETCH LL_I2C_IsEnabledClockStretching + * @param I2Cx I2C Instance. + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_I2C_IsEnabledClockStretching(I2C_TypeDef *I2Cx) +{ + return (READ_BIT(I2Cx->CR1, I2C_CR1_NOSTRETCH) != (I2C_CR1_NOSTRETCH)); +} + +/** + * @brief Enable General Call. + * @note When enabled the Address 0x00 is ACKed. + * @rmtoll CR1 ENGC LL_I2C_EnableGeneralCall + * @param I2Cx I2C Instance. + * @retval None + */ +__STATIC_INLINE void LL_I2C_EnableGeneralCall(I2C_TypeDef *I2Cx) +{ + SET_BIT(I2Cx->CR1, I2C_CR1_ENGC); +} + +/** + * @brief Disable General Call. + * @note When disabled the Address 0x00 is NACKed. + * @rmtoll CR1 ENGC LL_I2C_DisableGeneralCall + * @param I2Cx I2C Instance. + * @retval None + */ +__STATIC_INLINE void LL_I2C_DisableGeneralCall(I2C_TypeDef *I2Cx) +{ + CLEAR_BIT(I2Cx->CR1, I2C_CR1_ENGC); +} + +/** + * @brief Check if General Call is enabled or disabled. + * @rmtoll CR1 ENGC LL_I2C_IsEnabledGeneralCall + * @param I2Cx I2C Instance. + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_I2C_IsEnabledGeneralCall(I2C_TypeDef *I2Cx) +{ + return (READ_BIT(I2Cx->CR1, I2C_CR1_ENGC) == (I2C_CR1_ENGC)); +} + +/** + * @brief Set the Own Address1. + * @rmtoll OAR1 ADD0 LL_I2C_SetOwnAddress1\n + * OAR1 ADD1_7 LL_I2C_SetOwnAddress1\n + * OAR1 ADD8_9 LL_I2C_SetOwnAddress1\n + * OAR1 ADDMODE LL_I2C_SetOwnAddress1 + * @param I2Cx I2C Instance. + * @param OwnAddress1 This parameter must be a value between Min_Data=0 and Max_Data=0x3FF. + * @param OwnAddrSize This parameter can be one of the following values: + * @arg @ref LL_I2C_OWNADDRESS1_7BIT + * @arg @ref LL_I2C_OWNADDRESS1_10BIT + * @retval None + */ +__STATIC_INLINE void LL_I2C_SetOwnAddress1(I2C_TypeDef *I2Cx, uint32_t OwnAddress1, uint32_t OwnAddrSize) +{ + MODIFY_REG(I2Cx->OAR1, I2C_OAR1_ADD0 | I2C_OAR1_ADD1_7 | I2C_OAR1_ADD8_9 | I2C_OAR1_ADDMODE, OwnAddress1 | OwnAddrSize); +} + +/** + * @brief Set the 7bits Own Address2. + * @note This action has no effect if own address2 is enabled. + * @rmtoll OAR2 ADD2 LL_I2C_SetOwnAddress2 + * @param I2Cx I2C Instance. + * @param OwnAddress2 This parameter must be a value between Min_Data=0 and Max_Data=0x7F. + * @retval None + */ +__STATIC_INLINE void LL_I2C_SetOwnAddress2(I2C_TypeDef *I2Cx, uint32_t OwnAddress2) +{ + MODIFY_REG(I2Cx->OAR2, I2C_OAR2_ADD2, OwnAddress2); +} + +/** + * @brief Enable acknowledge on Own Address2 match address. + * @rmtoll OAR2 ENDUAL LL_I2C_EnableOwnAddress2 + * @param I2Cx I2C Instance. + * @retval None + */ +__STATIC_INLINE void LL_I2C_EnableOwnAddress2(I2C_TypeDef *I2Cx) +{ + SET_BIT(I2Cx->OAR2, I2C_OAR2_ENDUAL); +} + +/** + * @brief Disable acknowledge on Own Address2 match address. + * @rmtoll OAR2 ENDUAL LL_I2C_DisableOwnAddress2 + * @param I2Cx I2C Instance. + * @retval None + */ +__STATIC_INLINE void LL_I2C_DisableOwnAddress2(I2C_TypeDef *I2Cx) +{ + CLEAR_BIT(I2Cx->OAR2, I2C_OAR2_ENDUAL); +} + +/** + * @brief Check if Own Address1 acknowledge is enabled or disabled. + * @rmtoll OAR2 ENDUAL LL_I2C_IsEnabledOwnAddress2 + * @param I2Cx I2C Instance. + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_I2C_IsEnabledOwnAddress2(I2C_TypeDef *I2Cx) +{ + return (READ_BIT(I2Cx->OAR2, I2C_OAR2_ENDUAL) == (I2C_OAR2_ENDUAL)); +} + +/** + * @brief Configure the Peripheral clock frequency. + * @rmtoll CR2 FREQ LL_I2C_SetPeriphClock + * @param I2Cx I2C Instance. + * @param PeriphClock Peripheral Clock (in Hz) + * @retval None + */ +__STATIC_INLINE void LL_I2C_SetPeriphClock(I2C_TypeDef *I2Cx, uint32_t PeriphClock) +{ + MODIFY_REG(I2Cx->CR2, I2C_CR2_FREQ, __LL_I2C_FREQ_HZ_TO_MHZ(PeriphClock)); +} + +/** + * @brief Get the Peripheral clock frequency. + * @rmtoll CR2 FREQ LL_I2C_GetPeriphClock + * @param I2Cx I2C Instance. + * @retval Value of Peripheral Clock (in Hz) + */ +__STATIC_INLINE uint32_t LL_I2C_GetPeriphClock(I2C_TypeDef *I2Cx) +{ + return (uint32_t)(__LL_I2C_FREQ_MHZ_TO_HZ(READ_BIT(I2Cx->CR2, I2C_CR2_FREQ))); +} + +/** + * @brief Configure the Duty cycle (Fast mode only). + * @rmtoll CCR DUTY LL_I2C_SetDutyCycle + * @param I2Cx I2C Instance. + * @param DutyCycle This parameter can be one of the following values: + * @arg @ref LL_I2C_DUTYCYCLE_2 + * @arg @ref LL_I2C_DUTYCYCLE_16_9 + * @retval None + */ +__STATIC_INLINE void LL_I2C_SetDutyCycle(I2C_TypeDef *I2Cx, uint32_t DutyCycle) +{ + MODIFY_REG(I2Cx->CCR, I2C_CCR_DUTY, DutyCycle); +} + +/** + * @brief Get the Duty cycle (Fast mode only). + * @rmtoll CCR DUTY LL_I2C_GetDutyCycle + * @param I2Cx I2C Instance. + * @retval Returned value can be one of the following values: + * @arg @ref LL_I2C_DUTYCYCLE_2 + * @arg @ref LL_I2C_DUTYCYCLE_16_9 + */ +__STATIC_INLINE uint32_t LL_I2C_GetDutyCycle(I2C_TypeDef *I2Cx) +{ + return (uint32_t)(READ_BIT(I2Cx->CCR, I2C_CCR_DUTY)); +} + +/** + * @brief Configure the I2C master clock speed mode. + * @rmtoll CCR FS LL_I2C_SetClockSpeedMode + * @param I2Cx I2C Instance. + * @param ClockSpeedMode This parameter can be one of the following values: + * @arg @ref LL_I2C_CLOCK_SPEED_STANDARD_MODE + * @arg @ref LL_I2C_CLOCK_SPEED_FAST_MODE + * @retval None + */ +__STATIC_INLINE void LL_I2C_SetClockSpeedMode(I2C_TypeDef *I2Cx, uint32_t ClockSpeedMode) +{ + MODIFY_REG(I2Cx->CCR, I2C_CCR_FS, ClockSpeedMode); +} + +/** + * @brief Get the the I2C master speed mode. + * @rmtoll CCR FS LL_I2C_GetClockSpeedMode + * @param I2Cx I2C Instance. + * @retval Returned value can be one of the following values: + * @arg @ref LL_I2C_CLOCK_SPEED_STANDARD_MODE + * @arg @ref LL_I2C_CLOCK_SPEED_FAST_MODE + */ +__STATIC_INLINE uint32_t LL_I2C_GetClockSpeedMode(I2C_TypeDef *I2Cx) +{ + return (uint32_t)(READ_BIT(I2Cx->CCR, I2C_CCR_FS)); +} + +/** + * @brief Configure the SCL, SDA rising time. + * @note This bit can only be programmed when the I2C is disabled (PE = 0). + * @rmtoll TRISE TRISE LL_I2C_SetRiseTime + * @param I2Cx I2C Instance. + * @param RiseTime This parameter must be a value between Min_Data=0x02 and Max_Data=0x3F. + * @retval None + */ +__STATIC_INLINE void LL_I2C_SetRiseTime(I2C_TypeDef *I2Cx, uint32_t RiseTime) +{ + MODIFY_REG(I2Cx->TRISE, I2C_TRISE_TRISE, RiseTime); +} + +/** + * @brief Get the SCL, SDA rising time. + * @rmtoll TRISE TRISE LL_I2C_GetRiseTime + * @param I2Cx I2C Instance. + * @retval Value between Min_Data=0x02 and Max_Data=0x3F + */ +__STATIC_INLINE uint32_t LL_I2C_GetRiseTime(I2C_TypeDef *I2Cx) +{ + return (uint32_t)(READ_BIT(I2Cx->TRISE, I2C_TRISE_TRISE)); +} + +/** + * @brief Configure the SCL high and low period. + * @note This bit can only be programmed when the I2C is disabled (PE = 0). + * @rmtoll CCR CCR LL_I2C_SetClockPeriod + * @param I2Cx I2C Instance. + * @param ClockPeriod This parameter must be a value between Min_Data=0x004 and Max_Data=0xFFF, except in FAST DUTY mode where Min_Data=0x001. + * @retval None + */ +__STATIC_INLINE void LL_I2C_SetClockPeriod(I2C_TypeDef *I2Cx, uint32_t ClockPeriod) +{ + MODIFY_REG(I2Cx->CCR, I2C_CCR_CCR, ClockPeriod); +} + +/** + * @brief Get the SCL high and low period. + * @rmtoll CCR CCR LL_I2C_GetClockPeriod + * @param I2Cx I2C Instance. + * @retval Value between Min_Data=0x004 and Max_Data=0xFFF, except in FAST DUTY mode where Min_Data=0x001. + */ +__STATIC_INLINE uint32_t LL_I2C_GetClockPeriod(I2C_TypeDef *I2Cx) +{ + return (uint32_t)(READ_BIT(I2Cx->CCR, I2C_CCR_CCR)); +} + +/** + * @brief Configure the SCL speed. + * @note This bit can only be programmed when the I2C is disabled (PE = 0). + * @rmtoll CR2 FREQ LL_I2C_ConfigSpeed\n + * TRISE TRISE LL_I2C_ConfigSpeed\n + * CCR FS LL_I2C_ConfigSpeed\n + * CCR DUTY LL_I2C_ConfigSpeed\n + * CCR CCR LL_I2C_ConfigSpeed + * @param I2Cx I2C Instance. + * @param PeriphClock Peripheral Clock (in Hz) + * @param ClockSpeed This parameter must be a value lower than 400kHz (in Hz). + * @param DutyCycle This parameter can be one of the following values: + * @arg @ref LL_I2C_DUTYCYCLE_2 + * @arg @ref LL_I2C_DUTYCYCLE_16_9 + * @retval None + */ +__STATIC_INLINE void LL_I2C_ConfigSpeed(I2C_TypeDef *I2Cx, uint32_t PeriphClock, uint32_t ClockSpeed, + uint32_t DutyCycle) +{ + register uint32_t freqrange = 0x0U; + register uint32_t clockconfig = 0x0U; + + /* Compute frequency range */ + freqrange = __LL_I2C_FREQ_HZ_TO_MHZ(PeriphClock); + + /* Configure I2Cx: Frequency range register */ + MODIFY_REG(I2Cx->CR2, I2C_CR2_FREQ, freqrange); + + /* Configure I2Cx: Rise Time register */ + MODIFY_REG(I2Cx->TRISE, I2C_TRISE_TRISE, __LL_I2C_RISE_TIME(freqrange, ClockSpeed)); + + /* Configure Speed mode, Duty Cycle and Clock control register value */ + if (ClockSpeed > LL_I2C_MAX_SPEED_STANDARD) + { + /* Set Speed mode at fast and duty cycle for Clock Speed request in fast clock range */ + clockconfig = LL_I2C_CLOCK_SPEED_FAST_MODE | \ + __LL_I2C_SPEED_FAST_TO_CCR(PeriphClock, ClockSpeed, DutyCycle) | \ + DutyCycle; + } + else + { + /* Set Speed mode at standard for Clock Speed request in standard clock range */ + clockconfig = LL_I2C_CLOCK_SPEED_STANDARD_MODE | \ + __LL_I2C_SPEED_STANDARD_TO_CCR(PeriphClock, ClockSpeed); + } + + /* Configure I2Cx: Clock control register */ + MODIFY_REG(I2Cx->CCR, (I2C_CCR_FS | I2C_CCR_DUTY | I2C_CCR_CCR), clockconfig); +} + +/** + * @brief Configure peripheral mode. + * @note Macro @ref IS_SMBUS_ALL_INSTANCE(I2Cx) can be used to check whether or not + * SMBus feature is supported by the I2Cx Instance. + * @rmtoll CR1 SMBUS LL_I2C_SetMode\n + * CR1 SMBTYPE LL_I2C_SetMode\n + * CR1 ENARP LL_I2C_SetMode + * @param I2Cx I2C Instance. + * @param PeripheralMode This parameter can be one of the following values: + * @arg @ref LL_I2C_MODE_I2C + * @arg @ref LL_I2C_MODE_SMBUS_HOST + * @arg @ref LL_I2C_MODE_SMBUS_DEVICE + * @arg @ref LL_I2C_MODE_SMBUS_DEVICE_ARP + * @retval None + */ +__STATIC_INLINE void LL_I2C_SetMode(I2C_TypeDef *I2Cx, uint32_t PeripheralMode) +{ + MODIFY_REG(I2Cx->CR1, I2C_CR1_SMBUS | I2C_CR1_SMBTYPE | I2C_CR1_ENARP, PeripheralMode); +} + +/** + * @brief Get peripheral mode. + * @note Macro @ref IS_SMBUS_ALL_INSTANCE(I2Cx) can be used to check whether or not + * SMBus feature is supported by the I2Cx Instance. + * @rmtoll CR1 SMBUS LL_I2C_GetMode\n + * CR1 SMBTYPE LL_I2C_GetMode\n + * CR1 ENARP LL_I2C_GetMode + * @param I2Cx I2C Instance. + * @retval Returned value can be one of the following values: + * @arg @ref LL_I2C_MODE_I2C + * @arg @ref LL_I2C_MODE_SMBUS_HOST + * @arg @ref LL_I2C_MODE_SMBUS_DEVICE + * @arg @ref LL_I2C_MODE_SMBUS_DEVICE_ARP + */ +__STATIC_INLINE uint32_t LL_I2C_GetMode(I2C_TypeDef *I2Cx) +{ + return (uint32_t)(READ_BIT(I2Cx->CR1, I2C_CR1_SMBUS | I2C_CR1_SMBTYPE | I2C_CR1_ENARP)); +} + +/** + * @brief Enable SMBus alert (Host or Device mode) + * @note Macro @ref IS_SMBUS_ALL_INSTANCE(I2Cx) can be used to check whether or not + * SMBus feature is supported by the I2Cx Instance. + * @note SMBus Device mode: + * - SMBus Alert pin is drived low and + * Alert Response Address Header acknowledge is enabled. + * SMBus Host mode: + * - SMBus Alert pin management is supported. + * @rmtoll CR1 ALERT LL_I2C_EnableSMBusAlert + * @param I2Cx I2C Instance. + * @retval None + */ +__STATIC_INLINE void LL_I2C_EnableSMBusAlert(I2C_TypeDef *I2Cx) +{ + SET_BIT(I2Cx->CR1, I2C_CR1_ALERT); +} + +/** + * @brief Disable SMBus alert (Host or Device mode) + * @note Macro @ref IS_SMBUS_ALL_INSTANCE(I2Cx) can be used to check whether or not + * SMBus feature is supported by the I2Cx Instance. + * @note SMBus Device mode: + * - SMBus Alert pin is not drived (can be used as a standard GPIO) and + * Alert Response Address Header acknowledge is disabled. + * SMBus Host mode: + * - SMBus Alert pin management is not supported. + * @rmtoll CR1 ALERT LL_I2C_DisableSMBusAlert + * @param I2Cx I2C Instance. + * @retval None + */ +__STATIC_INLINE void LL_I2C_DisableSMBusAlert(I2C_TypeDef *I2Cx) +{ + CLEAR_BIT(I2Cx->CR1, I2C_CR1_ALERT); +} + +/** + * @brief Check if SMBus alert (Host or Device mode) is enabled or disabled. + * @note Macro @ref IS_SMBUS_ALL_INSTANCE(I2Cx) can be used to check whether or not + * SMBus feature is supported by the I2Cx Instance. + * @rmtoll CR1 ALERT LL_I2C_IsEnabledSMBusAlert + * @param I2Cx I2C Instance. + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_I2C_IsEnabledSMBusAlert(I2C_TypeDef *I2Cx) +{ + return (READ_BIT(I2Cx->CR1, I2C_CR1_ALERT) == (I2C_CR1_ALERT)); +} + +/** + * @brief Enable SMBus Packet Error Calculation (PEC). + * @note Macro @ref IS_SMBUS_ALL_INSTANCE(I2Cx) can be used to check whether or not + * SMBus feature is supported by the I2Cx Instance. + * @rmtoll CR1 ENPEC LL_I2C_EnableSMBusPEC + * @param I2Cx I2C Instance. + * @retval None + */ +__STATIC_INLINE void LL_I2C_EnableSMBusPEC(I2C_TypeDef *I2Cx) +{ + SET_BIT(I2Cx->CR1, I2C_CR1_ENPEC); +} + +/** + * @brief Disable SMBus Packet Error Calculation (PEC). + * @note Macro @ref IS_SMBUS_ALL_INSTANCE(I2Cx) can be used to check whether or not + * SMBus feature is supported by the I2Cx Instance. + * @rmtoll CR1 ENPEC LL_I2C_DisableSMBusPEC + * @param I2Cx I2C Instance. + * @retval None + */ +__STATIC_INLINE void LL_I2C_DisableSMBusPEC(I2C_TypeDef *I2Cx) +{ + CLEAR_BIT(I2Cx->CR1, I2C_CR1_ENPEC); +} + +/** + * @brief Check if SMBus Packet Error Calculation (PEC) is enabled or disabled. + * @note Macro @ref IS_SMBUS_ALL_INSTANCE(I2Cx) can be used to check whether or not + * SMBus feature is supported by the I2Cx Instance. + * @rmtoll CR1 ENPEC LL_I2C_IsEnabledSMBusPEC + * @param I2Cx I2C Instance. + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_I2C_IsEnabledSMBusPEC(I2C_TypeDef *I2Cx) +{ + return (READ_BIT(I2Cx->CR1, I2C_CR1_ENPEC) == (I2C_CR1_ENPEC)); +} + +/** + * @} + */ + +/** @defgroup I2C_LL_EF_IT_Management IT_Management + * @{ + */ + +/** + * @brief Enable TXE interrupt. + * @rmtoll CR2 ITEVTEN LL_I2C_EnableIT_TX\n + * CR2 ITBUFEN LL_I2C_EnableIT_TX + * @param I2Cx I2C Instance. + * @retval None + */ +__STATIC_INLINE void LL_I2C_EnableIT_TX(I2C_TypeDef *I2Cx) +{ + SET_BIT(I2Cx->CR2, I2C_CR2_ITEVTEN | I2C_CR2_ITBUFEN); +} + +/** + * @brief Disable TXE interrupt. + * @rmtoll CR2 ITEVTEN LL_I2C_DisableIT_TX\n + * CR2 ITBUFEN LL_I2C_DisableIT_TX + * @param I2Cx I2C Instance. + * @retval None + */ +__STATIC_INLINE void LL_I2C_DisableIT_TX(I2C_TypeDef *I2Cx) +{ + CLEAR_BIT(I2Cx->CR2, I2C_CR2_ITEVTEN | I2C_CR2_ITBUFEN); +} + +/** + * @brief Check if the TXE Interrupt is enabled or disabled. + * @rmtoll CR2 ITEVTEN LL_I2C_IsEnabledIT_TX\n + * CR2 ITBUFEN LL_I2C_IsEnabledIT_TX + * @param I2Cx I2C Instance. + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_I2C_IsEnabledIT_TX(I2C_TypeDef *I2Cx) +{ + return (READ_BIT(I2Cx->CR2, I2C_CR2_ITEVTEN | I2C_CR2_ITBUFEN) == (I2C_CR2_ITEVTEN | I2C_CR2_ITBUFEN)); +} + +/** + * @brief Enable RXNE interrupt. + * @rmtoll CR2 ITEVTEN LL_I2C_EnableIT_RX\n + * CR2 ITBUFEN LL_I2C_EnableIT_RX + * @param I2Cx I2C Instance. + * @retval None + */ +__STATIC_INLINE void LL_I2C_EnableIT_RX(I2C_TypeDef *I2Cx) +{ + SET_BIT(I2Cx->CR2, I2C_CR2_ITEVTEN | I2C_CR2_ITBUFEN); +} + +/** + * @brief Disable RXNE interrupt. + * @rmtoll CR2 ITEVTEN LL_I2C_DisableIT_RX\n + * CR2 ITBUFEN LL_I2C_DisableIT_RX + * @param I2Cx I2C Instance. + * @retval None + */ +__STATIC_INLINE void LL_I2C_DisableIT_RX(I2C_TypeDef *I2Cx) +{ + CLEAR_BIT(I2Cx->CR2, I2C_CR2_ITEVTEN | I2C_CR2_ITBUFEN); +} + +/** + * @brief Check if the RXNE Interrupt is enabled or disabled. + * @rmtoll CR2 ITEVTEN LL_I2C_IsEnabledIT_RX\n + * CR2 ITBUFEN LL_I2C_IsEnabledIT_RX + * @param I2Cx I2C Instance. + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_I2C_IsEnabledIT_RX(I2C_TypeDef *I2Cx) +{ + return (READ_BIT(I2Cx->CR2, I2C_CR2_ITEVTEN | I2C_CR2_ITBUFEN) == (I2C_CR2_ITEVTEN | I2C_CR2_ITBUFEN)); +} + +/** + * @brief Enable Events interrupts. + * @note Any of these events will generate interrupt : + * Start Bit (SB) + * Address sent, Address matched (ADDR) + * 10-bit header sent (ADD10) + * Stop detection (STOPF) + * Byte transfer finished (BTF) + * + * @note Any of these events will generate interrupt if Buffer interrupts are enabled too(using unitary function @ref LL_I2C_EnableIT_BUF()) : + * Receive buffer not empty (RXNE) + * Transmit buffer empty (TXE) + * @rmtoll CR2 ITEVTEN LL_I2C_EnableIT_EVT + * @param I2Cx I2C Instance. + * @retval None + */ +__STATIC_INLINE void LL_I2C_EnableIT_EVT(I2C_TypeDef *I2Cx) +{ + SET_BIT(I2Cx->CR2, I2C_CR2_ITEVTEN); +} + +/** + * @brief Disable Events interrupts. + * @note Any of these events will generate interrupt : + * Start Bit (SB) + * Address sent, Address matched (ADDR) + * 10-bit header sent (ADD10) + * Stop detection (STOPF) + * Byte transfer finished (BTF) + * Receive buffer not empty (RXNE) + * Transmit buffer empty (TXE) + * @rmtoll CR2 ITEVTEN LL_I2C_DisableIT_EVT + * @param I2Cx I2C Instance. + * @retval None + */ +__STATIC_INLINE void LL_I2C_DisableIT_EVT(I2C_TypeDef *I2Cx) +{ + CLEAR_BIT(I2Cx->CR2, I2C_CR2_ITEVTEN); +} + +/** + * @brief Check if Events interrupts are enabled or disabled. + * @rmtoll CR2 ITEVTEN LL_I2C_IsEnabledIT_EVT + * @param I2Cx I2C Instance. + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_I2C_IsEnabledIT_EVT(I2C_TypeDef *I2Cx) +{ + return (READ_BIT(I2Cx->CR2, I2C_CR2_ITEVTEN) == (I2C_CR2_ITEVTEN)); +} + +/** + * @brief Enable Buffer interrupts. + * @note Any of these Buffer events will generate interrupt if Events interrupts are enabled too(using unitary function @ref LL_I2C_EnableIT_EVT()) : + * Receive buffer not empty (RXNE) + * Transmit buffer empty (TXE) + * @rmtoll CR2 ITBUFEN LL_I2C_EnableIT_BUF + * @param I2Cx I2C Instance. + * @retval None + */ +__STATIC_INLINE void LL_I2C_EnableIT_BUF(I2C_TypeDef *I2Cx) +{ + SET_BIT(I2Cx->CR2, I2C_CR2_ITBUFEN); +} + +/** + * @brief Disable Buffer interrupts. + * @note Any of these Buffer events will generate interrupt : + * Receive buffer not empty (RXNE) + * Transmit buffer empty (TXE) + * @rmtoll CR2 ITBUFEN LL_I2C_DisableIT_BUF + * @param I2Cx I2C Instance. + * @retval None + */ +__STATIC_INLINE void LL_I2C_DisableIT_BUF(I2C_TypeDef *I2Cx) +{ + CLEAR_BIT(I2Cx->CR2, I2C_CR2_ITBUFEN); +} + +/** + * @brief Check if Buffer interrupts are enabled or disabled. + * @rmtoll CR2 ITBUFEN LL_I2C_IsEnabledIT_BUF + * @param I2Cx I2C Instance. + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_I2C_IsEnabledIT_BUF(I2C_TypeDef *I2Cx) +{ + return (READ_BIT(I2Cx->CR2, I2C_CR2_ITBUFEN) == (I2C_CR2_ITBUFEN)); +} + +/** + * @brief Enable Error interrupts. + * @note Macro @ref IS_SMBUS_ALL_INSTANCE(I2Cx) can be used to check whether or not + * SMBus feature is supported by the I2Cx Instance. + * @note Any of these errors will generate interrupt : + * Bus Error detection (BERR) + * Arbitration Loss (ARLO) + * Acknowledge Failure(AF) + * Overrun/Underrun (OVR) + * SMBus Timeout detection (TIMEOUT) + * SMBus PEC error detection (PECERR) + * SMBus Alert pin event detection (SMBALERT) + * @rmtoll CR2 ITERREN LL_I2C_EnableIT_ERR + * @param I2Cx I2C Instance. + * @retval None + */ +__STATIC_INLINE void LL_I2C_EnableIT_ERR(I2C_TypeDef *I2Cx) +{ + SET_BIT(I2Cx->CR2, I2C_CR2_ITERREN); +} + +/** + * @brief Disable Error interrupts. + * @note Macro @ref IS_SMBUS_ALL_INSTANCE(I2Cx) can be used to check whether or not + * SMBus feature is supported by the I2Cx Instance. + * @note Any of these errors will generate interrupt : + * Bus Error detection (BERR) + * Arbitration Loss (ARLO) + * Acknowledge Failure(AF) + * Overrun/Underrun (OVR) + * SMBus Timeout detection (TIMEOUT) + * SMBus PEC error detection (PECERR) + * SMBus Alert pin event detection (SMBALERT) + * @rmtoll CR2 ITERREN LL_I2C_DisableIT_ERR + * @param I2Cx I2C Instance. + * @retval None + */ +__STATIC_INLINE void LL_I2C_DisableIT_ERR(I2C_TypeDef *I2Cx) +{ + CLEAR_BIT(I2Cx->CR2, I2C_CR2_ITERREN); +} + +/** + * @brief Check if Error interrupts are enabled or disabled. + * @rmtoll CR2 ITERREN LL_I2C_IsEnabledIT_ERR + * @param I2Cx I2C Instance. + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_I2C_IsEnabledIT_ERR(I2C_TypeDef *I2Cx) +{ + return (READ_BIT(I2Cx->CR2, I2C_CR2_ITERREN) == (I2C_CR2_ITERREN)); +} + +/** + * @} + */ + +/** @defgroup I2C_LL_EF_FLAG_management FLAG_management + * @{ + */ + +/** + * @brief Indicate the status of Transmit data register empty flag. + * @note RESET: When next data is written in Transmit data register. + * SET: When Transmit data register is empty. + * @rmtoll SR1 TXE LL_I2C_IsActiveFlag_TXE + * @param I2Cx I2C Instance. + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_I2C_IsActiveFlag_TXE(I2C_TypeDef *I2Cx) +{ + return (READ_BIT(I2Cx->SR1, I2C_SR1_TXE) == (I2C_SR1_TXE)); +} + +/** + * @brief Indicate the status of Byte Transfer Finished flag. + * RESET: When Data byte transfer not done. + * SET: When Data byte transfer succeeded. + * @rmtoll SR1 BTF LL_I2C_IsActiveFlag_BTF + * @param I2Cx I2C Instance. + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_I2C_IsActiveFlag_BTF(I2C_TypeDef *I2Cx) +{ + return (READ_BIT(I2Cx->SR1, I2C_SR1_BTF) == (I2C_SR1_BTF)); +} + +/** + * @brief Indicate the status of Receive data register not empty flag. + * @note RESET: When Receive data register is read. + * SET: When the received data is copied in Receive data register. + * @rmtoll SR1 RXNE LL_I2C_IsActiveFlag_RXNE + * @param I2Cx I2C Instance. + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_I2C_IsActiveFlag_RXNE(I2C_TypeDef *I2Cx) +{ + return (READ_BIT(I2Cx->SR1, I2C_SR1_RXNE) == (I2C_SR1_RXNE)); +} + +/** + * @brief Indicate the status of Start Bit (master mode). + * @note RESET: When No Start condition. + * SET: When Start condition is generated. + * @rmtoll SR1 SB LL_I2C_IsActiveFlag_SB + * @param I2Cx I2C Instance. + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_I2C_IsActiveFlag_SB(I2C_TypeDef *I2Cx) +{ + return (READ_BIT(I2Cx->SR1, I2C_SR1_SB) == (I2C_SR1_SB)); +} + +/** + * @brief Indicate the status of Address sent (master mode) or Address matched flag (slave mode). + * @note RESET: Clear default value. + * SET: When the address is fully sent (master mode) or when the received slave address matched with one of the enabled slave address (slave mode). + * @rmtoll SR1 ADDR LL_I2C_IsActiveFlag_ADDR + * @param I2Cx I2C Instance. + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_I2C_IsActiveFlag_ADDR(I2C_TypeDef *I2Cx) +{ + return (READ_BIT(I2Cx->SR1, I2C_SR1_ADDR) == (I2C_SR1_ADDR)); +} + +/** + * @brief Indicate the status of 10-bit header sent (master mode). + * @note RESET: When no ADD10 event occurred. + * SET: When the master has sent the first address byte (header). + * @rmtoll SR1 ADD10 LL_I2C_IsActiveFlag_ADD10 + * @param I2Cx I2C Instance. + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_I2C_IsActiveFlag_ADD10(I2C_TypeDef *I2Cx) +{ + return (READ_BIT(I2Cx->SR1, I2C_SR1_ADD10) == (I2C_SR1_ADD10)); +} + +/** + * @brief Indicate the status of Acknowledge failure flag. + * @note RESET: No acknowledge failure. + * SET: When an acknowledge failure is received after a byte transmission. + * @rmtoll SR1 AF LL_I2C_IsActiveFlag_AF + * @param I2Cx I2C Instance. + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_I2C_IsActiveFlag_AF(I2C_TypeDef *I2Cx) +{ + return (READ_BIT(I2Cx->SR1, I2C_SR1_AF) == (I2C_SR1_AF)); +} + +/** + * @brief Indicate the status of Stop detection flag (slave mode). + * @note RESET: Clear default value. + * SET: When a Stop condition is detected. + * @rmtoll SR1 STOPF LL_I2C_IsActiveFlag_STOP + * @param I2Cx I2C Instance. + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_I2C_IsActiveFlag_STOP(I2C_TypeDef *I2Cx) +{ + return (READ_BIT(I2Cx->SR1, I2C_SR1_STOPF) == (I2C_SR1_STOPF)); +} + +/** + * @brief Indicate the status of Bus error flag. + * @note RESET: Clear default value. + * SET: When a misplaced Start or Stop condition is detected. + * @rmtoll SR1 BERR LL_I2C_IsActiveFlag_BERR + * @param I2Cx I2C Instance. + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_I2C_IsActiveFlag_BERR(I2C_TypeDef *I2Cx) +{ + return (READ_BIT(I2Cx->SR1, I2C_SR1_BERR) == (I2C_SR1_BERR)); +} + +/** + * @brief Indicate the status of Arbitration lost flag. + * @note RESET: Clear default value. + * SET: When arbitration lost. + * @rmtoll SR1 ARLO LL_I2C_IsActiveFlag_ARLO + * @param I2Cx I2C Instance. + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_I2C_IsActiveFlag_ARLO(I2C_TypeDef *I2Cx) +{ + return (READ_BIT(I2Cx->SR1, I2C_SR1_ARLO) == (I2C_SR1_ARLO)); +} + +/** + * @brief Indicate the status of Overrun/Underrun flag. + * @note RESET: Clear default value. + * SET: When an overrun/underrun error occurs (Clock Stretching Disabled). + * @rmtoll SR1 OVR LL_I2C_IsActiveFlag_OVR + * @param I2Cx I2C Instance. + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_I2C_IsActiveFlag_OVR(I2C_TypeDef *I2Cx) +{ + return (READ_BIT(I2Cx->SR1, I2C_SR1_OVR) == (I2C_SR1_OVR)); +} + +/** + * @brief Indicate the status of SMBus PEC error flag in reception. + * @note Macro @ref IS_SMBUS_ALL_INSTANCE(I2Cx) can be used to check whether or not + * SMBus feature is supported by the I2Cx Instance. + * @rmtoll SR1 PECERR LL_I2C_IsActiveSMBusFlag_PECERR + * @param I2Cx I2C Instance. + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_I2C_IsActiveSMBusFlag_PECERR(I2C_TypeDef *I2Cx) +{ + return (READ_BIT(I2Cx->SR1, I2C_SR1_PECERR) == (I2C_SR1_PECERR)); +} + +/** + * @brief Indicate the status of SMBus Timeout detection flag. + * @note Macro @ref IS_SMBUS_ALL_INSTANCE(I2Cx) can be used to check whether or not + * SMBus feature is supported by the I2Cx Instance. + * @rmtoll SR1 TIMEOUT LL_I2C_IsActiveSMBusFlag_TIMEOUT + * @param I2Cx I2C Instance. + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_I2C_IsActiveSMBusFlag_TIMEOUT(I2C_TypeDef *I2Cx) +{ + return (READ_BIT(I2Cx->SR1, I2C_SR1_TIMEOUT) == (I2C_SR1_TIMEOUT)); +} + +/** + * @brief Indicate the status of SMBus alert flag. + * @note Macro @ref IS_SMBUS_ALL_INSTANCE(I2Cx) can be used to check whether or not + * SMBus feature is supported by the I2Cx Instance. + * @rmtoll SR1 SMBALERT LL_I2C_IsActiveSMBusFlag_ALERT + * @param I2Cx I2C Instance. + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_I2C_IsActiveSMBusFlag_ALERT(I2C_TypeDef *I2Cx) +{ + return (READ_BIT(I2Cx->SR1, I2C_SR1_SMBALERT) == (I2C_SR1_SMBALERT)); +} + +/** + * @brief Indicate the status of Bus Busy flag. + * @note RESET: Clear default value. + * SET: When a Start condition is detected. + * @rmtoll SR2 BUSY LL_I2C_IsActiveFlag_BUSY + * @param I2Cx I2C Instance. + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_I2C_IsActiveFlag_BUSY(I2C_TypeDef *I2Cx) +{ + return (READ_BIT(I2Cx->SR2, I2C_SR2_BUSY) == (I2C_SR2_BUSY)); +} + +/** + * @brief Indicate the status of Dual flag. + * @note RESET: Received address matched with OAR1. + * SET: Received address matched with OAR2. + * @rmtoll SR2 DUALF LL_I2C_IsActiveFlag_DUAL + * @param I2Cx I2C Instance. + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_I2C_IsActiveFlag_DUAL(I2C_TypeDef *I2Cx) +{ + return (READ_BIT(I2Cx->SR2, I2C_SR2_DUALF) == (I2C_SR2_DUALF)); +} + +/** + * @brief Indicate the status of SMBus Host address reception (Slave mode). + * @note Macro @ref IS_SMBUS_ALL_INSTANCE(I2Cx) can be used to check whether or not + * SMBus feature is supported by the I2Cx Instance. + * @note RESET: No SMBus Host address + * SET: SMBus Host address received. + * @note This status is cleared by hardware after a STOP condition or repeated START condition. + * @rmtoll SR2 SMBHOST LL_I2C_IsActiveSMBusFlag_SMBHOST + * @param I2Cx I2C Instance. + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_I2C_IsActiveSMBusFlag_SMBHOST(I2C_TypeDef *I2Cx) +{ + return (READ_BIT(I2Cx->SR2, I2C_SR2_SMBHOST) == (I2C_SR2_SMBHOST)); +} + +/** + * @brief Indicate the status of SMBus Device default address reception (Slave mode). + * @note Macro @ref IS_SMBUS_ALL_INSTANCE(I2Cx) can be used to check whether or not + * SMBus feature is supported by the I2Cx Instance. + * @note RESET: No SMBus Device default address + * SET: SMBus Device default address received. + * @note This status is cleared by hardware after a STOP condition or repeated START condition. + * @rmtoll SR2 SMBDEFAULT LL_I2C_IsActiveSMBusFlag_SMBDEFAULT + * @param I2Cx I2C Instance. + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_I2C_IsActiveSMBusFlag_SMBDEFAULT(I2C_TypeDef *I2Cx) +{ + return (READ_BIT(I2Cx->SR2, I2C_SR2_SMBDEFAULT) == (I2C_SR2_SMBDEFAULT)); +} + +/** + * @brief Indicate the status of General call address reception (Slave mode). + * @note RESET: No Generall call address + * SET: General call address received. + * @note This status is cleared by hardware after a STOP condition or repeated START condition. + * @rmtoll SR2 GENCALL LL_I2C_IsActiveFlag_GENCALL + * @param I2Cx I2C Instance. + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_I2C_IsActiveFlag_GENCALL(I2C_TypeDef *I2Cx) +{ + return (READ_BIT(I2Cx->SR2, I2C_SR2_GENCALL) == (I2C_SR2_GENCALL)); +} + +/** + * @brief Indicate the status of Master/Slave flag. + * @note RESET: Slave Mode. + * SET: Master Mode. + * @rmtoll SR2 MSL LL_I2C_IsActiveFlag_MSL + * @param I2Cx I2C Instance. + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_I2C_IsActiveFlag_MSL(I2C_TypeDef *I2Cx) +{ + return (READ_BIT(I2Cx->SR2, I2C_SR2_MSL) == (I2C_SR2_MSL)); +} + +/** + * @brief Clear Address Matched flag. + * @note Clearing this flag is done by a read access to the I2Cx_SR1 + * register followed by a read access to the I2Cx_SR2 register. + * @rmtoll SR1 ADDR LL_I2C_ClearFlag_ADDR + * @param I2Cx I2C Instance. + * @retval None + */ +__STATIC_INLINE void LL_I2C_ClearFlag_ADDR(I2C_TypeDef *I2Cx) +{ + __IO uint32_t tmpreg; + tmpreg = I2Cx->SR1; + (void) tmpreg; + tmpreg = I2Cx->SR2; + (void) tmpreg; +} + +/** + * @brief Clear Acknowledge failure flag. + * @rmtoll SR1 AF LL_I2C_ClearFlag_AF + * @param I2Cx I2C Instance. + * @retval None + */ +__STATIC_INLINE void LL_I2C_ClearFlag_AF(I2C_TypeDef *I2Cx) +{ + CLEAR_BIT(I2Cx->SR1, I2C_SR1_AF); +} + +/** + * @brief Clear Stop detection flag. + * @note Clearing this flag is done by a read access to the I2Cx_SR1 + * register followed by a write access to I2Cx_CR1 register. + * @rmtoll SR1 STOPF LL_I2C_ClearFlag_STOP\n + * CR1 PE LL_I2C_ClearFlag_STOP + * @param I2Cx I2C Instance. + * @retval None + */ +__STATIC_INLINE void LL_I2C_ClearFlag_STOP(I2C_TypeDef *I2Cx) +{ + __IO uint32_t tmpreg; + tmpreg = I2Cx->SR1; + (void) tmpreg; + SET_BIT(I2Cx->CR1, I2C_CR1_PE); +} + +/** + * @brief Clear Bus error flag. + * @rmtoll SR1 BERR LL_I2C_ClearFlag_BERR + * @param I2Cx I2C Instance. + * @retval None + */ +__STATIC_INLINE void LL_I2C_ClearFlag_BERR(I2C_TypeDef *I2Cx) +{ + CLEAR_BIT(I2Cx->SR1, I2C_SR1_BERR); +} + +/** + * @brief Clear Arbitration lost flag. + * @rmtoll SR1 ARLO LL_I2C_ClearFlag_ARLO + * @param I2Cx I2C Instance. + * @retval None + */ +__STATIC_INLINE void LL_I2C_ClearFlag_ARLO(I2C_TypeDef *I2Cx) +{ + CLEAR_BIT(I2Cx->SR1, I2C_SR1_ARLO); +} + +/** + * @brief Clear Overrun/Underrun flag. + * @rmtoll SR1 OVR LL_I2C_ClearFlag_OVR + * @param I2Cx I2C Instance. + * @retval None + */ +__STATIC_INLINE void LL_I2C_ClearFlag_OVR(I2C_TypeDef *I2Cx) +{ + CLEAR_BIT(I2Cx->SR1, I2C_SR1_OVR); +} + +/** + * @brief Clear SMBus PEC error flag. + * @rmtoll SR1 PECERR LL_I2C_ClearSMBusFlag_PECERR + * @param I2Cx I2C Instance. + * @retval None + */ +__STATIC_INLINE void LL_I2C_ClearSMBusFlag_PECERR(I2C_TypeDef *I2Cx) +{ + CLEAR_BIT(I2Cx->SR1, I2C_SR1_PECERR); +} + +/** + * @brief Clear SMBus Timeout detection flag. + * @note Macro @ref IS_SMBUS_ALL_INSTANCE(I2Cx) can be used to check whether or not + * SMBus feature is supported by the I2Cx Instance. + * @rmtoll SR1 TIMEOUT LL_I2C_ClearSMBusFlag_TIMEOUT + * @param I2Cx I2C Instance. + * @retval None + */ +__STATIC_INLINE void LL_I2C_ClearSMBusFlag_TIMEOUT(I2C_TypeDef *I2Cx) +{ + CLEAR_BIT(I2Cx->SR1, I2C_SR1_TIMEOUT); +} + +/** + * @brief Clear SMBus Alert flag. + * @note Macro @ref IS_SMBUS_ALL_INSTANCE(I2Cx) can be used to check whether or not + * SMBus feature is supported by the I2Cx Instance. + * @rmtoll SR1 SMBALERT LL_I2C_ClearSMBusFlag_ALERT + * @param I2Cx I2C Instance. + * @retval None + */ +__STATIC_INLINE void LL_I2C_ClearSMBusFlag_ALERT(I2C_TypeDef *I2Cx) +{ + CLEAR_BIT(I2Cx->SR1, I2C_SR1_SMBALERT); +} + +/** + * @} + */ + +/** @defgroup I2C_LL_EF_Data_Management Data_Management + * @{ + */ + +/** + * @brief Enable Reset of I2C peripheral. + * @rmtoll CR1 SWRST LL_I2C_EnableReset + * @param I2Cx I2C Instance. + * @retval None + */ +__STATIC_INLINE void LL_I2C_EnableReset(I2C_TypeDef *I2Cx) +{ + SET_BIT(I2Cx->CR1, I2C_CR1_SWRST); +} + +/** + * @brief Disable Reset of I2C peripheral. + * @rmtoll CR1 SWRST LL_I2C_DisableReset + * @param I2Cx I2C Instance. + * @retval None + */ +__STATIC_INLINE void LL_I2C_DisableReset(I2C_TypeDef *I2Cx) +{ + CLEAR_BIT(I2Cx->CR1, I2C_CR1_SWRST); +} + +/** + * @brief Check if the I2C peripheral is under reset state or not. + * @rmtoll CR1 SWRST LL_I2C_IsResetEnabled + * @param I2Cx I2C Instance. + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_I2C_IsResetEnabled(I2C_TypeDef *I2Cx) +{ + return (READ_BIT(I2Cx->CR1, I2C_CR1_SWRST) == (I2C_CR1_SWRST)); +} + +/** + * @brief Prepare the generation of a ACKnowledge or Non ACKnowledge condition after the address receive match code or next received byte. + * @note Usage in Slave or Master mode. + * @rmtoll CR1 ACK LL_I2C_AcknowledgeNextData + * @param I2Cx I2C Instance. + * @param TypeAcknowledge This parameter can be one of the following values: + * @arg @ref LL_I2C_ACK + * @arg @ref LL_I2C_NACK + * @retval None + */ +__STATIC_INLINE void LL_I2C_AcknowledgeNextData(I2C_TypeDef *I2Cx, uint32_t TypeAcknowledge) +{ + MODIFY_REG(I2Cx->CR1, I2C_CR1_ACK, TypeAcknowledge); +} + +/** + * @brief Generate a START or RESTART condition + * @note The START bit can be set even if bus is BUSY or I2C is in slave mode. + * This action has no effect when RELOAD is set. + * @rmtoll CR1 START LL_I2C_GenerateStartCondition + * @param I2Cx I2C Instance. + * @retval None + */ +__STATIC_INLINE void LL_I2C_GenerateStartCondition(I2C_TypeDef *I2Cx) +{ + SET_BIT(I2Cx->CR1, I2C_CR1_START); +} + +/** + * @brief Generate a STOP condition after the current byte transfer (master mode). + * @rmtoll CR1 STOP LL_I2C_GenerateStopCondition + * @param I2Cx I2C Instance. + * @retval None + */ +__STATIC_INLINE void LL_I2C_GenerateStopCondition(I2C_TypeDef *I2Cx) +{ + SET_BIT(I2Cx->CR1, I2C_CR1_STOP); +} + +/** + * @brief Enable bit POS (master/host mode). + * @note In that case, the ACK bit controls the (N)ACK of the next byte received or the PEC bit indicates that the next byte in shift register is a PEC. + * @rmtoll CR1 POS LL_I2C_EnableBitPOS + * @param I2Cx I2C Instance. + * @retval None + */ +__STATIC_INLINE void LL_I2C_EnableBitPOS(I2C_TypeDef *I2Cx) +{ + SET_BIT(I2Cx->CR1, I2C_CR1_POS); +} + +/** + * @brief Disable bit POS (master/host mode). + * @note In that case, the ACK bit controls the (N)ACK of the current byte received or the PEC bit indicates that the current byte in shift register is a PEC. + * @rmtoll CR1 POS LL_I2C_DisableBitPOS + * @param I2Cx I2C Instance. + * @retval None + */ +__STATIC_INLINE void LL_I2C_DisableBitPOS(I2C_TypeDef *I2Cx) +{ + CLEAR_BIT(I2Cx->CR1, I2C_CR1_POS); +} + +/** + * @brief Check if bit POS is enabled or disabled. + * @rmtoll CR1 POS LL_I2C_IsEnabledBitPOS + * @param I2Cx I2C Instance. + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_I2C_IsEnabledBitPOS(I2C_TypeDef *I2Cx) +{ + return (READ_BIT(I2Cx->CR1, I2C_CR1_POS) == (I2C_CR1_POS)); +} + +/** + * @brief Indicate the value of transfer direction. + * @note RESET: Bus is in read transfer (peripheral point of view). + * SET: Bus is in write transfer (peripheral point of view). + * @rmtoll SR2 TRA LL_I2C_GetTransferDirection + * @param I2Cx I2C Instance. + * @retval Returned value can be one of the following values: + * @arg @ref LL_I2C_DIRECTION_WRITE + * @arg @ref LL_I2C_DIRECTION_READ + */ +__STATIC_INLINE uint32_t LL_I2C_GetTransferDirection(I2C_TypeDef *I2Cx) +{ + return (uint32_t)(READ_BIT(I2Cx->SR2, I2C_SR2_TRA)); +} + +/** + * @brief Enable DMA last transfer. + * @note This action mean that next DMA EOT is the last transfer. + * @rmtoll CR2 LAST LL_I2C_EnableLastDMA + * @param I2Cx I2C Instance. + * @retval None + */ +__STATIC_INLINE void LL_I2C_EnableLastDMA(I2C_TypeDef *I2Cx) +{ + SET_BIT(I2Cx->CR2, I2C_CR2_LAST); +} + +/** + * @brief Disable DMA last transfer. + * @note This action mean that next DMA EOT is not the last transfer. + * @rmtoll CR2 LAST LL_I2C_DisableLastDMA + * @param I2Cx I2C Instance. + * @retval None + */ +__STATIC_INLINE void LL_I2C_DisableLastDMA(I2C_TypeDef *I2Cx) +{ + CLEAR_BIT(I2Cx->CR2, I2C_CR2_LAST); +} + +/** + * @brief Check if DMA last transfer is enabled or disabled. + * @rmtoll CR2 LAST LL_I2C_IsEnabledLastDMA + * @param I2Cx I2C Instance. + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_I2C_IsEnabledLastDMA(I2C_TypeDef *I2Cx) +{ + return (READ_BIT(I2Cx->CR2, I2C_CR2_LAST) == (I2C_CR2_LAST)); +} + +/** + * @brief Enable transfer or internal comparison of the SMBus Packet Error byte (transmission or reception mode). + * @note Macro @ref IS_SMBUS_ALL_INSTANCE(I2Cx) can be used to check whether or not + * SMBus feature is supported by the I2Cx Instance. + * @note This feature is cleared by hardware when the PEC byte is transferred or compared, + * or by a START or STOP condition, it is also cleared by software. + * @rmtoll CR1 PEC LL_I2C_EnableSMBusPECCompare + * @param I2Cx I2C Instance. + * @retval None + */ +__STATIC_INLINE void LL_I2C_EnableSMBusPECCompare(I2C_TypeDef *I2Cx) +{ + SET_BIT(I2Cx->CR1, I2C_CR1_PEC); +} + +/** + * @brief Disable transfer or internal comparison of the SMBus Packet Error byte (transmission or reception mode). + * @note Macro @ref IS_SMBUS_ALL_INSTANCE(I2Cx) can be used to check whether or not + * SMBus feature is supported by the I2Cx Instance. + * @rmtoll CR1 PEC LL_I2C_DisableSMBusPECCompare + * @param I2Cx I2C Instance. + * @retval None + */ +__STATIC_INLINE void LL_I2C_DisableSMBusPECCompare(I2C_TypeDef *I2Cx) +{ + CLEAR_BIT(I2Cx->CR1, I2C_CR1_PEC); +} + +/** + * @brief Check if the SMBus Packet Error byte transfer or internal comparison is requested or not. + * @note Macro @ref IS_SMBUS_ALL_INSTANCE(I2Cx) can be used to check whether or not + * SMBus feature is supported by the I2Cx Instance. + * @rmtoll CR1 PEC LL_I2C_IsEnabledSMBusPECCompare + * @param I2Cx I2C Instance. + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_I2C_IsEnabledSMBusPECCompare(I2C_TypeDef *I2Cx) +{ + return (READ_BIT(I2Cx->CR1, I2C_CR1_PEC) == (I2C_CR1_PEC)); +} + +/** + * @brief Get the SMBus Packet Error byte calculated. + * @note Macro @ref IS_SMBUS_ALL_INSTANCE(I2Cx) can be used to check whether or not + * SMBus feature is supported by the I2Cx Instance. + * @rmtoll SR2 PEC LL_I2C_GetSMBusPEC + * @param I2Cx I2C Instance. + * @retval Value between Min_Data=0x00 and Max_Data=0xFF + */ +__STATIC_INLINE uint32_t LL_I2C_GetSMBusPEC(I2C_TypeDef *I2Cx) +{ + return (uint32_t)(READ_BIT(I2Cx->SR2, I2C_SR2_PEC) >> I2C_SR2_PEC_Pos); +} + +/** + * @brief Read Receive Data register. + * @rmtoll DR DR LL_I2C_ReceiveData8 + * @param I2Cx I2C Instance. + * @retval Value between Min_Data=0x0 and Max_Data=0xFF + */ +__STATIC_INLINE uint8_t LL_I2C_ReceiveData8(I2C_TypeDef *I2Cx) +{ + return (uint8_t)(READ_BIT(I2Cx->DR, I2C_DR_DR)); +} + +/** + * @brief Write in Transmit Data Register . + * @rmtoll DR DR LL_I2C_TransmitData8 + * @param I2Cx I2C Instance. + * @param Data Value between Min_Data=0x0 and Max_Data=0xFF + * @retval None + */ +__STATIC_INLINE void LL_I2C_TransmitData8(I2C_TypeDef *I2Cx, uint8_t Data) +{ + MODIFY_REG(I2Cx->DR, I2C_DR_DR, Data); +} + +/** + * @} + */ + +#if defined(USE_FULL_LL_DRIVER) +/** @defgroup I2C_LL_EF_Init Initialization and de-initialization functions + * @{ + */ + +uint32_t LL_I2C_Init(I2C_TypeDef *I2Cx, LL_I2C_InitTypeDef *I2C_InitStruct); +uint32_t LL_I2C_DeInit(I2C_TypeDef *I2Cx); +void LL_I2C_StructInit(LL_I2C_InitTypeDef *I2C_InitStruct); + + +/** + * @} + */ +#endif /* USE_FULL_LL_DRIVER */ + +/** + * @} + */ + +/** + * @} + */ + +#endif /* I2C1 || I2C2 */ + +/** + * @} + */ + +#ifdef __cplusplus +} +#endif + +#endif /* __STM32F1xx_LL_I2C_H */ + +/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/ diff --git a/LLDrivers/inc/stm32f1xx_ll_iwdg.h b/LLDrivers/inc/stm32f1xx_ll_iwdg.h new file mode 100644 index 0000000..6bd5662 --- /dev/null +++ b/LLDrivers/inc/stm32f1xx_ll_iwdg.h @@ -0,0 +1,311 @@ +/** + ****************************************************************************** + * @file stm32f1xx_ll_iwdg.h + * @author MCD Application Team + * @brief Header file of IWDG LL module. + ****************************************************************************** + * @attention + * + *

© Copyright (c) 2016 STMicroelectronics. + * All rights reserved.

+ * + * This software component is licensed by ST under BSD 3-Clause license, + * the "License"; You may not use this file except in compliance with the + * License. You may obtain a copy of the License at: + * opensource.org/licenses/BSD-3-Clause + * + ****************************************************************************** + */ + +/* Define to prevent recursive inclusion -------------------------------------*/ +#ifndef STM32F1xx_LL_IWDG_H +#define STM32F1xx_LL_IWDG_H + +#ifdef __cplusplus +extern "C" { +#endif + +/* Includes ------------------------------------------------------------------*/ +#include "stm32f1xx.h" + +/** @addtogroup STM32F1xx_LL_Driver + * @{ + */ + +#if defined(IWDG) + +/** @defgroup IWDG_LL IWDG + * @{ + */ + +/* Private types -------------------------------------------------------------*/ +/* Private variables ---------------------------------------------------------*/ + +/* Private constants ---------------------------------------------------------*/ +/** @defgroup IWDG_LL_Private_Constants IWDG Private Constants + * @{ + */ + +#define LL_IWDG_KEY_RELOAD 0x0000AAAAU /*!< IWDG Reload Counter Enable */ +#define LL_IWDG_KEY_ENABLE 0x0000CCCCU /*!< IWDG Peripheral Enable */ +#define LL_IWDG_KEY_WR_ACCESS_ENABLE 0x00005555U /*!< IWDG KR Write Access Enable */ +#define LL_IWDG_KEY_WR_ACCESS_DISABLE 0x00000000U /*!< IWDG KR Write Access Disable */ + +/** + * @} + */ + +/* Private macros ------------------------------------------------------------*/ + +/* Exported types ------------------------------------------------------------*/ +/* Exported constants --------------------------------------------------------*/ +/** @defgroup IWDG_LL_Exported_Constants IWDG Exported Constants + * @{ + */ + +/** @defgroup IWDG_LL_EC_GET_FLAG Get Flags Defines + * @brief Flags defines which can be used with LL_IWDG_ReadReg function + * @{ + */ +#define LL_IWDG_SR_PVU IWDG_SR_PVU /*!< Watchdog prescaler value update */ +#define LL_IWDG_SR_RVU IWDG_SR_RVU /*!< Watchdog counter reload value update */ + +/** + * @} + */ + +/** @defgroup IWDG_LL_EC_PRESCALER Prescaler Divider + * @{ + */ +#define LL_IWDG_PRESCALER_4 0x00000000U /*!< Divider by 4 */ +#define LL_IWDG_PRESCALER_8 (IWDG_PR_PR_0) /*!< Divider by 8 */ +#define LL_IWDG_PRESCALER_16 (IWDG_PR_PR_1) /*!< Divider by 16 */ +#define LL_IWDG_PRESCALER_32 (IWDG_PR_PR_1 | IWDG_PR_PR_0) /*!< Divider by 32 */ +#define LL_IWDG_PRESCALER_64 (IWDG_PR_PR_2) /*!< Divider by 64 */ +#define LL_IWDG_PRESCALER_128 (IWDG_PR_PR_2 | IWDG_PR_PR_0) /*!< Divider by 128 */ +#define LL_IWDG_PRESCALER_256 (IWDG_PR_PR_2 | IWDG_PR_PR_1) /*!< Divider by 256 */ +/** + * @} + */ + +/** + * @} + */ + +/* Exported macro ------------------------------------------------------------*/ +/** @defgroup IWDG_LL_Exported_Macros IWDG Exported Macros + * @{ + */ + +/** @defgroup IWDG_LL_EM_WRITE_READ Common Write and read registers Macros + * @{ + */ + +/** + * @brief Write a value in IWDG register + * @param __INSTANCE__ IWDG Instance + * @param __REG__ Register to be written + * @param __VALUE__ Value to be written in the register + * @retval None + */ +#define LL_IWDG_WriteReg(__INSTANCE__, __REG__, __VALUE__) WRITE_REG(__INSTANCE__->__REG__, (__VALUE__)) + +/** + * @brief Read a value in IWDG register + * @param __INSTANCE__ IWDG Instance + * @param __REG__ Register to be read + * @retval Register value + */ +#define LL_IWDG_ReadReg(__INSTANCE__, __REG__) READ_REG(__INSTANCE__->__REG__) +/** + * @} + */ + +/** + * @} + */ + + +/* Exported functions --------------------------------------------------------*/ +/** @defgroup IWDG_LL_Exported_Functions IWDG Exported Functions + * @{ + */ +/** @defgroup IWDG_LL_EF_Configuration Configuration + * @{ + */ + +/** + * @brief Start the Independent Watchdog + * @note Except if the hardware watchdog option is selected + * @rmtoll KR KEY LL_IWDG_Enable + * @param IWDGx IWDG Instance + * @retval None + */ +__STATIC_INLINE void LL_IWDG_Enable(IWDG_TypeDef *IWDGx) +{ + WRITE_REG(IWDG->KR, LL_IWDG_KEY_ENABLE); +} + +/** + * @brief Reloads IWDG counter with value defined in the reload register + * @rmtoll KR KEY LL_IWDG_ReloadCounter + * @param IWDGx IWDG Instance + * @retval None + */ +__STATIC_INLINE void LL_IWDG_ReloadCounter(IWDG_TypeDef *IWDGx) +{ + WRITE_REG(IWDG->KR, LL_IWDG_KEY_RELOAD); +} + +/** + * @brief Enable write access to IWDG_PR, IWDG_RLR and IWDG_WINR registers + * @rmtoll KR KEY LL_IWDG_EnableWriteAccess + * @param IWDGx IWDG Instance + * @retval None + */ +__STATIC_INLINE void LL_IWDG_EnableWriteAccess(IWDG_TypeDef *IWDGx) +{ + WRITE_REG(IWDG->KR, LL_IWDG_KEY_WR_ACCESS_ENABLE); +} + +/** + * @brief Disable write access to IWDG_PR, IWDG_RLR and IWDG_WINR registers + * @rmtoll KR KEY LL_IWDG_DisableWriteAccess + * @param IWDGx IWDG Instance + * @retval None + */ +__STATIC_INLINE void LL_IWDG_DisableWriteAccess(IWDG_TypeDef *IWDGx) +{ + WRITE_REG(IWDG->KR, LL_IWDG_KEY_WR_ACCESS_DISABLE); +} + +/** + * @brief Select the prescaler of the IWDG + * @rmtoll PR PR LL_IWDG_SetPrescaler + * @param IWDGx IWDG Instance + * @param Prescaler This parameter can be one of the following values: + * @arg @ref LL_IWDG_PRESCALER_4 + * @arg @ref LL_IWDG_PRESCALER_8 + * @arg @ref LL_IWDG_PRESCALER_16 + * @arg @ref LL_IWDG_PRESCALER_32 + * @arg @ref LL_IWDG_PRESCALER_64 + * @arg @ref LL_IWDG_PRESCALER_128 + * @arg @ref LL_IWDG_PRESCALER_256 + * @retval None + */ +__STATIC_INLINE void LL_IWDG_SetPrescaler(IWDG_TypeDef *IWDGx, uint32_t Prescaler) +{ + WRITE_REG(IWDGx->PR, IWDG_PR_PR & Prescaler); +} + +/** + * @brief Get the selected prescaler of the IWDG + * @rmtoll PR PR LL_IWDG_GetPrescaler + * @param IWDGx IWDG Instance + * @retval Returned value can be one of the following values: + * @arg @ref LL_IWDG_PRESCALER_4 + * @arg @ref LL_IWDG_PRESCALER_8 + * @arg @ref LL_IWDG_PRESCALER_16 + * @arg @ref LL_IWDG_PRESCALER_32 + * @arg @ref LL_IWDG_PRESCALER_64 + * @arg @ref LL_IWDG_PRESCALER_128 + * @arg @ref LL_IWDG_PRESCALER_256 + */ +__STATIC_INLINE uint32_t LL_IWDG_GetPrescaler(IWDG_TypeDef *IWDGx) +{ + return (uint32_t)(READ_REG(IWDGx->PR)); +} + +/** + * @brief Specify the IWDG down-counter reload value + * @rmtoll RLR RL LL_IWDG_SetReloadCounter + * @param IWDGx IWDG Instance + * @param Counter Value between Min_Data=0 and Max_Data=0x0FFF + * @retval None + */ +__STATIC_INLINE void LL_IWDG_SetReloadCounter(IWDG_TypeDef *IWDGx, uint32_t Counter) +{ + WRITE_REG(IWDGx->RLR, IWDG_RLR_RL & Counter); +} + +/** + * @brief Get the specified IWDG down-counter reload value + * @rmtoll RLR RL LL_IWDG_GetReloadCounter + * @param IWDGx IWDG Instance + * @retval Value between Min_Data=0 and Max_Data=0x0FFF + */ +__STATIC_INLINE uint32_t LL_IWDG_GetReloadCounter(IWDG_TypeDef *IWDGx) +{ + return (uint32_t)(READ_REG(IWDGx->RLR)); +} + + +/** + * @} + */ + +/** @defgroup IWDG_LL_EF_FLAG_Management FLAG_Management + * @{ + */ + +/** + * @brief Check if flag Prescaler Value Update is set or not + * @rmtoll SR PVU LL_IWDG_IsActiveFlag_PVU + * @param IWDGx IWDG Instance + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_IWDG_IsActiveFlag_PVU(IWDG_TypeDef *IWDGx) +{ + return (READ_BIT(IWDGx->SR, IWDG_SR_PVU) == (IWDG_SR_PVU)); +} + +/** + * @brief Check if flag Reload Value Update is set or not + * @rmtoll SR RVU LL_IWDG_IsActiveFlag_RVU + * @param IWDGx IWDG Instance + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_IWDG_IsActiveFlag_RVU(IWDG_TypeDef *IWDGx) +{ + return (READ_BIT(IWDGx->SR, IWDG_SR_RVU) == (IWDG_SR_RVU)); +} + + +/** + * @brief Check if all flags Prescaler, Reload & Window Value Update are reset or not + * @rmtoll SR PVU LL_IWDG_IsReady\n + * SR RVU LL_IWDG_IsReady + * @param IWDGx IWDG Instance + * @retval State of bits (1 or 0). + */ +__STATIC_INLINE uint32_t LL_IWDG_IsReady(IWDG_TypeDef *IWDGx) +{ + return (READ_BIT(IWDGx->SR, IWDG_SR_PVU | IWDG_SR_RVU) == 0U); +} + +/** + * @} + */ + + +/** + * @} + */ + +/** + * @} + */ + +#endif /* IWDG) */ + +/** + * @} + */ + +#ifdef __cplusplus +} +#endif + +#endif /* STM32F1xx_LL_IWDG_H */ + +/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/ diff --git a/LLDrivers/inc/stm32f1xx_ll_pwr.h b/LLDrivers/inc/stm32f1xx_ll_pwr.h new file mode 100644 index 0000000..caad8b3 --- /dev/null +++ b/LLDrivers/inc/stm32f1xx_ll_pwr.h @@ -0,0 +1,440 @@ +/** + ****************************************************************************** + * @file stm32f1xx_ll_pwr.h + * @author MCD Application Team + * @brief Header file of PWR LL module. + ****************************************************************************** + * @attention + * + *

© Copyright (c) 2016 STMicroelectronics. + * All rights reserved.

+ * + * This software component is licensed by ST under BSD 3-Clause license, + * the "License"; You may not use this file except in compliance with the + * License. You may obtain a copy of the License at: + * opensource.org/licenses/BSD-3-Clause + * + ****************************************************************************** + */ + +/* Define to prevent recursive inclusion -------------------------------------*/ +#ifndef __STM32F1xx_LL_PWR_H +#define __STM32F1xx_LL_PWR_H + +#ifdef __cplusplus +extern "C" { +#endif + +/* Includes ------------------------------------------------------------------*/ +#include "stm32f1xx.h" + +/** @addtogroup STM32F1xx_LL_Driver + * @{ + */ + +#if defined(PWR) + +/** @defgroup PWR_LL PWR + * @{ + */ + +/* Private types -------------------------------------------------------------*/ +/* Private variables ---------------------------------------------------------*/ +/* Private constants ---------------------------------------------------------*/ +/* Private macros ------------------------------------------------------------*/ +/* Exported types ------------------------------------------------------------*/ +/* Exported constants --------------------------------------------------------*/ +/** @defgroup PWR_LL_Exported_Constants PWR Exported Constants + * @{ + */ + +/** @defgroup PWR_LL_EC_CLEAR_FLAG Clear Flags Defines + * @brief Flags defines which can be used with LL_PWR_WriteReg function + * @{ + */ +#define LL_PWR_CR_CSBF PWR_CR_CSBF /*!< Clear standby flag */ +#define LL_PWR_CR_CWUF PWR_CR_CWUF /*!< Clear wakeup flag */ +/** + * @} + */ + +/** @defgroup PWR_LL_EC_GET_FLAG Get Flags Defines + * @brief Flags defines which can be used with LL_PWR_ReadReg function + * @{ + */ +#define LL_PWR_CSR_WUF PWR_CSR_WUF /*!< Wakeup flag */ +#define LL_PWR_CSR_SBF PWR_CSR_SBF /*!< Standby flag */ +#define LL_PWR_CSR_PVDO PWR_CSR_PVDO /*!< Power voltage detector output flag */ +#define LL_PWR_CSR_EWUP1 PWR_CSR_EWUP /*!< Enable WKUP pin 1 */ +/** + * @} + */ + + +/** @defgroup PWR_LL_EC_MODE_PWR Mode Power + * @{ + */ +#define LL_PWR_MODE_STOP_MAINREGU 0x00000000U /*!< Enter Stop mode when the CPU enters deepsleep */ +#define LL_PWR_MODE_STOP_LPREGU (PWR_CR_LPDS) /*!< Enter Stop mode (with low power Regulator ON) when the CPU enters deepsleep */ +#define LL_PWR_MODE_STANDBY (PWR_CR_PDDS) /*!< Enter Standby mode when the CPU enters deepsleep */ +/** + * @} + */ + +/** @defgroup PWR_LL_EC_REGU_MODE_DS_MODE Regulator Mode In Deep Sleep Mode + * @{ + */ +#define LL_PWR_REGU_DSMODE_MAIN 0x00000000U /*!< Voltage Regulator in main mode during deepsleep mode */ +#define LL_PWR_REGU_DSMODE_LOW_POWER (PWR_CR_LPDS) /*!< Voltage Regulator in low-power mode during deepsleep mode */ +/** + * @} + */ + +/** @defgroup PWR_LL_EC_PVDLEVEL Power Voltage Detector Level + * @{ + */ +#define LL_PWR_PVDLEVEL_0 (PWR_CR_PLS_LEV0) /*!< Voltage threshold detected by PVD 2.2 V */ +#define LL_PWR_PVDLEVEL_1 (PWR_CR_PLS_LEV1) /*!< Voltage threshold detected by PVD 2.3 V */ +#define LL_PWR_PVDLEVEL_2 (PWR_CR_PLS_LEV2) /*!< Voltage threshold detected by PVD 2.4 V */ +#define LL_PWR_PVDLEVEL_3 (PWR_CR_PLS_LEV3) /*!< Voltage threshold detected by PVD 2.5 V */ +#define LL_PWR_PVDLEVEL_4 (PWR_CR_PLS_LEV4) /*!< Voltage threshold detected by PVD 2.6 V */ +#define LL_PWR_PVDLEVEL_5 (PWR_CR_PLS_LEV5) /*!< Voltage threshold detected by PVD 2.7 V */ +#define LL_PWR_PVDLEVEL_6 (PWR_CR_PLS_LEV6) /*!< Voltage threshold detected by PVD 2.8 V */ +#define LL_PWR_PVDLEVEL_7 (PWR_CR_PLS_LEV7) /*!< Voltage threshold detected by PVD 2.9 V */ +/** + * @} + */ +/** @defgroup PWR_LL_EC_WAKEUP_PIN Wakeup Pins + * @{ + */ +#define LL_PWR_WAKEUP_PIN1 (PWR_CSR_EWUP) /*!< WKUP pin 1 : PA0 */ +/** + * @} + */ + +/** + * @} + */ + + +/* Exported macro ------------------------------------------------------------*/ +/** @defgroup PWR_LL_Exported_Macros PWR Exported Macros + * @{ + */ + +/** @defgroup PWR_LL_EM_WRITE_READ Common write and read registers Macros + * @{ + */ + +/** + * @brief Write a value in PWR register + * @param __REG__ Register to be written + * @param __VALUE__ Value to be written in the register + * @retval None + */ +#define LL_PWR_WriteReg(__REG__, __VALUE__) WRITE_REG(PWR->__REG__, (__VALUE__)) + +/** + * @brief Read a value in PWR register + * @param __REG__ Register to be read + * @retval Register value + */ +#define LL_PWR_ReadReg(__REG__) READ_REG(PWR->__REG__) +/** + * @} + */ + +/** + * @} + */ + +/* Exported functions --------------------------------------------------------*/ +/** @defgroup PWR_LL_Exported_Functions PWR Exported Functions + * @{ + */ + +/** @defgroup PWR_LL_EF_Configuration Configuration + * @{ + */ + +/** + * @brief Enable access to the backup domain + * @rmtoll CR DBP LL_PWR_EnableBkUpAccess + * @retval None + */ +__STATIC_INLINE void LL_PWR_EnableBkUpAccess(void) +{ + SET_BIT(PWR->CR, PWR_CR_DBP); +} + +/** + * @brief Disable access to the backup domain + * @rmtoll CR DBP LL_PWR_DisableBkUpAccess + * @retval None + */ +__STATIC_INLINE void LL_PWR_DisableBkUpAccess(void) +{ + CLEAR_BIT(PWR->CR, PWR_CR_DBP); +} + +/** + * @brief Check if the backup domain is enabled + * @rmtoll CR DBP LL_PWR_IsEnabledBkUpAccess + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_PWR_IsEnabledBkUpAccess(void) +{ + return (READ_BIT(PWR->CR, PWR_CR_DBP) == (PWR_CR_DBP)); +} + +/** + * @brief Set voltage Regulator mode during deep sleep mode + * @rmtoll CR LPDS LL_PWR_SetRegulModeDS + * @param RegulMode This parameter can be one of the following values: + * @arg @ref LL_PWR_REGU_DSMODE_MAIN + * @arg @ref LL_PWR_REGU_DSMODE_LOW_POWER + * @retval None + */ +__STATIC_INLINE void LL_PWR_SetRegulModeDS(uint32_t RegulMode) +{ + MODIFY_REG(PWR->CR, PWR_CR_LPDS, RegulMode); +} + +/** + * @brief Get voltage Regulator mode during deep sleep mode + * @rmtoll CR LPDS LL_PWR_GetRegulModeDS + * @retval Returned value can be one of the following values: + * @arg @ref LL_PWR_REGU_DSMODE_MAIN + * @arg @ref LL_PWR_REGU_DSMODE_LOW_POWER + */ +__STATIC_INLINE uint32_t LL_PWR_GetRegulModeDS(void) +{ + return (uint32_t)(READ_BIT(PWR->CR, PWR_CR_LPDS)); +} + +/** + * @brief Set Power Down mode when CPU enters deepsleep + * @rmtoll CR PDDS LL_PWR_SetPowerMode\n + * @rmtoll CR LPDS LL_PWR_SetPowerMode + * @param PDMode This parameter can be one of the following values: + * @arg @ref LL_PWR_MODE_STOP_MAINREGU + * @arg @ref LL_PWR_MODE_STOP_LPREGU + * @arg @ref LL_PWR_MODE_STANDBY + * @retval None + */ +__STATIC_INLINE void LL_PWR_SetPowerMode(uint32_t PDMode) +{ + MODIFY_REG(PWR->CR, (PWR_CR_PDDS| PWR_CR_LPDS), PDMode); +} + +/** + * @brief Get Power Down mode when CPU enters deepsleep + * @rmtoll CR PDDS LL_PWR_GetPowerMode\n + * @rmtoll CR LPDS LL_PWR_GetPowerMode + * @retval Returned value can be one of the following values: + * @arg @ref LL_PWR_MODE_STOP_MAINREGU + * @arg @ref LL_PWR_MODE_STOP_LPREGU + * @arg @ref LL_PWR_MODE_STANDBY + */ +__STATIC_INLINE uint32_t LL_PWR_GetPowerMode(void) +{ + return (uint32_t)(READ_BIT(PWR->CR, (PWR_CR_PDDS| PWR_CR_LPDS))); +} + +/** + * @brief Configure the voltage threshold detected by the Power Voltage Detector + * @rmtoll CR PLS LL_PWR_SetPVDLevel + * @param PVDLevel This parameter can be one of the following values: + * @arg @ref LL_PWR_PVDLEVEL_0 + * @arg @ref LL_PWR_PVDLEVEL_1 + * @arg @ref LL_PWR_PVDLEVEL_2 + * @arg @ref LL_PWR_PVDLEVEL_3 + * @arg @ref LL_PWR_PVDLEVEL_4 + * @arg @ref LL_PWR_PVDLEVEL_5 + * @arg @ref LL_PWR_PVDLEVEL_6 + * @arg @ref LL_PWR_PVDLEVEL_7 + * @retval None + */ +__STATIC_INLINE void LL_PWR_SetPVDLevel(uint32_t PVDLevel) +{ + MODIFY_REG(PWR->CR, PWR_CR_PLS, PVDLevel); +} + +/** + * @brief Get the voltage threshold detection + * @rmtoll CR PLS LL_PWR_GetPVDLevel + * @retval Returned value can be one of the following values: + * @arg @ref LL_PWR_PVDLEVEL_0 + * @arg @ref LL_PWR_PVDLEVEL_1 + * @arg @ref LL_PWR_PVDLEVEL_2 + * @arg @ref LL_PWR_PVDLEVEL_3 + * @arg @ref LL_PWR_PVDLEVEL_4 + * @arg @ref LL_PWR_PVDLEVEL_5 + * @arg @ref LL_PWR_PVDLEVEL_6 + * @arg @ref LL_PWR_PVDLEVEL_7 + */ +__STATIC_INLINE uint32_t LL_PWR_GetPVDLevel(void) +{ + return (uint32_t)(READ_BIT(PWR->CR, PWR_CR_PLS)); +} + +/** + * @brief Enable Power Voltage Detector + * @rmtoll CR PVDE LL_PWR_EnablePVD + * @retval None + */ +__STATIC_INLINE void LL_PWR_EnablePVD(void) +{ + SET_BIT(PWR->CR, PWR_CR_PVDE); +} + +/** + * @brief Disable Power Voltage Detector + * @rmtoll CR PVDE LL_PWR_DisablePVD + * @retval None + */ +__STATIC_INLINE void LL_PWR_DisablePVD(void) +{ + CLEAR_BIT(PWR->CR, PWR_CR_PVDE); +} + +/** + * @brief Check if Power Voltage Detector is enabled + * @rmtoll CR PVDE LL_PWR_IsEnabledPVD + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_PWR_IsEnabledPVD(void) +{ + return (READ_BIT(PWR->CR, PWR_CR_PVDE) == (PWR_CR_PVDE)); +} + +/** + * @brief Enable the WakeUp PINx functionality + * @rmtoll CSR EWUP LL_PWR_EnableWakeUpPin + * @param WakeUpPin This parameter can be one of the following values: + * @arg @ref LL_PWR_WAKEUP_PIN1 + * @retval None + */ +__STATIC_INLINE void LL_PWR_EnableWakeUpPin(uint32_t WakeUpPin) +{ + SET_BIT(PWR->CSR, WakeUpPin); +} + +/** + * @brief Disable the WakeUp PINx functionality + * @rmtoll CSR EWUP LL_PWR_DisableWakeUpPin + * @param WakeUpPin This parameter can be one of the following values: + * @arg @ref LL_PWR_WAKEUP_PIN1 + * @retval None + */ +__STATIC_INLINE void LL_PWR_DisableWakeUpPin(uint32_t WakeUpPin) +{ + CLEAR_BIT(PWR->CSR, WakeUpPin); +} + +/** + * @brief Check if the WakeUp PINx functionality is enabled + * @rmtoll CSR EWUP LL_PWR_IsEnabledWakeUpPin + * @param WakeUpPin This parameter can be one of the following values: + * @arg @ref LL_PWR_WAKEUP_PIN1 + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_PWR_IsEnabledWakeUpPin(uint32_t WakeUpPin) +{ + return (READ_BIT(PWR->CSR, WakeUpPin) == (WakeUpPin)); +} + + +/** + * @} + */ + +/** @defgroup PWR_LL_EF_FLAG_Management FLAG_Management + * @{ + */ + +/** + * @brief Get Wake-up Flag + * @rmtoll CSR WUF LL_PWR_IsActiveFlag_WU + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_PWR_IsActiveFlag_WU(void) +{ + return (READ_BIT(PWR->CSR, PWR_CSR_WUF) == (PWR_CSR_WUF)); +} + +/** + * @brief Get Standby Flag + * @rmtoll CSR SBF LL_PWR_IsActiveFlag_SB + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_PWR_IsActiveFlag_SB(void) +{ + return (READ_BIT(PWR->CSR, PWR_CSR_SBF) == (PWR_CSR_SBF)); +} + +/** + * @brief Indicate whether VDD voltage is below the selected PVD threshold + * @rmtoll CSR PVDO LL_PWR_IsActiveFlag_PVDO + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_PWR_IsActiveFlag_PVDO(void) +{ + return (READ_BIT(PWR->CSR, PWR_CSR_PVDO) == (PWR_CSR_PVDO)); +} + +/** + * @brief Clear Standby Flag + * @rmtoll CR CSBF LL_PWR_ClearFlag_SB + * @retval None + */ +__STATIC_INLINE void LL_PWR_ClearFlag_SB(void) +{ + SET_BIT(PWR->CR, PWR_CR_CSBF); +} + +/** + * @brief Clear Wake-up Flags + * @rmtoll CR CWUF LL_PWR_ClearFlag_WU + * @retval None + */ +__STATIC_INLINE void LL_PWR_ClearFlag_WU(void) +{ + SET_BIT(PWR->CR, PWR_CR_CWUF); +} + +/** + * @} + */ + +#if defined(USE_FULL_LL_DRIVER) +/** @defgroup PWR_LL_EF_Init De-initialization function + * @{ + */ +ErrorStatus LL_PWR_DeInit(void); +/** + * @} + */ +#endif /* USE_FULL_LL_DRIVER */ + +/** + * @} + */ + +/** + * @} + */ + +#endif /* defined(PWR) */ + +/** + * @} + */ + +#ifdef __cplusplus +} +#endif + +#endif /* __STM32F1xx_LL_PWR_H */ + +/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/ diff --git a/LLDrivers/inc/stm32f1xx_ll_rtc.h b/LLDrivers/inc/stm32f1xx_ll_rtc.h new file mode 100644 index 0000000..a6df296 --- /dev/null +++ b/LLDrivers/inc/stm32f1xx_ll_rtc.h @@ -0,0 +1,1003 @@ +/** + ****************************************************************************** + * @file stm32f1xx_ll_rtc.h + * @author MCD Application Team + * @brief Header file of RTC LL module. + ****************************************************************************** + * @attention + * + *

© Copyright (c) 2016 STMicroelectronics. + * All rights reserved.

+ * + * This software component is licensed by ST under BSD 3-Clause license, + * the "License"; You may not use this file except in compliance with the + * License. You may obtain a copy of the License at: + * opensource.org/licenses/BSD-3-Clause + * + ****************************************************************************** + */ + +/* Define to prevent recursive inclusion -------------------------------------*/ +#ifndef __STM32F1xx_LL_RTC_H +#define __STM32F1xx_LL_RTC_H + +#ifdef __cplusplus +extern "C" { +#endif + +/* Includes ------------------------------------------------------------------*/ +#include "stm32f1xx.h" + +/** @addtogroup STM32F1xx_LL_Driver + * @{ + */ + +#if defined(RTC) + +/** @defgroup RTC_LL RTC + * @{ + */ + +/* Private types -------------------------------------------------------------*/ +/* Private variables ---------------------------------------------------------*/ +/* Private constants ---------------------------------------------------------*/ + +/* Private macros ------------------------------------------------------------*/ +#if defined(USE_FULL_LL_DRIVER) +/** @defgroup RTC_LL_Private_Macros RTC Private Macros + * @{ + */ +/** + * @} + */ +#endif /*USE_FULL_LL_DRIVER*/ + +/* Exported types ------------------------------------------------------------*/ +#if defined(USE_FULL_LL_DRIVER) +/** @defgroup RTC_LL_ES_INIT RTC Exported Init structure + * @{ + */ + +/** + * @brief RTC Init structures definition + */ +typedef struct +{ + uint32_t AsynchPrescaler; /*!< Specifies the RTC Asynchronous Predivider value. + This parameter must be a number between Min_Data = 0x00 and Max_Data = 0xFFFFF + + This feature can be modified afterwards using unitary function + @ref LL_RTC_SetAsynchPrescaler(). */ + + uint32_t OutPutSource; /*!< Specifies which signal will be routed to the RTC Tamper pin. + This parameter can be a value of @ref LL_RTC_Output_Source + + This feature can be modified afterwards using unitary function + @ref LL_RTC_SetOutputSource(). */ + +} LL_RTC_InitTypeDef; + +/** + * @brief RTC Time structure definition + */ +typedef struct +{ + uint8_t Hours; /*!< Specifies the RTC Time Hours. + This parameter must be a number between Min_Data = 0 and Max_Data = 23 */ + + uint8_t Minutes; /*!< Specifies the RTC Time Minutes. + This parameter must be a number between Min_Data = 0 and Max_Data = 59 */ + + uint8_t Seconds; /*!< Specifies the RTC Time Seconds. + This parameter must be a number between Min_Data = 0 and Max_Data = 59 */ +} LL_RTC_TimeTypeDef; + + +/** + * @brief RTC Alarm structure definition + */ +typedef struct +{ + LL_RTC_TimeTypeDef AlarmTime; /*!< Specifies the RTC Alarm Time members. */ + +} LL_RTC_AlarmTypeDef; + +/** + * @} + */ +#endif /* USE_FULL_LL_DRIVER */ + +/* Exported constants --------------------------------------------------------*/ +/** @defgroup RTC_LL_Exported_Constants RTC Exported Constants + * @{ + */ + +#if defined(USE_FULL_LL_DRIVER) +/** @defgroup RTC_LL_EC_FORMAT FORMAT + * @{ + */ +#define LL_RTC_FORMAT_BIN (0x000000000U) /*!< Binary data format */ +#define LL_RTC_FORMAT_BCD (0x000000001U) /*!< BCD data format */ +/** + * @} + */ +#endif /* USE_FULL_LL_DRIVER */ + +/** @defgroup RTC_LL_EC_BKP BACKUP + * @{ + */ +#if RTC_BKP_NUMBER > 0 +#define LL_RTC_BKP_DR1 (0x00000001U) +#define LL_RTC_BKP_DR2 (0x00000002U) +#define LL_RTC_BKP_DR3 (0x00000003U) +#define LL_RTC_BKP_DR4 (0x00000004U) +#define LL_RTC_BKP_DR5 (0x00000005U) +#define LL_RTC_BKP_DR6 (0x00000006U) +#define LL_RTC_BKP_DR7 (0x00000007U) +#define LL_RTC_BKP_DR8 (0x00000008U) +#define LL_RTC_BKP_DR9 (0x00000009U) +#define LL_RTC_BKP_DR10 (0x0000000AU) +#endif /* RTC_BKP_NUMBER > 0 */ +#if RTC_BKP_NUMBER > 10 +#define LL_RTC_BKP_DR11 (0x0000000BU) +#define LL_RTC_BKP_DR12 (0x0000000CU) +#define LL_RTC_BKP_DR13 (0x0000000DU) +#define LL_RTC_BKP_DR14 (0x0000000EU) +#define LL_RTC_BKP_DR15 (0x0000000FU) +#define LL_RTC_BKP_DR16 (0x00000010U) +#define LL_RTC_BKP_DR17 (0x00000011U) +#define LL_RTC_BKP_DR18 (0x00000012U) +#define LL_RTC_BKP_DR19 (0x00000013U) +#define LL_RTC_BKP_DR20 (0x00000014U) +#define LL_RTC_BKP_DR21 (0x00000015U) +#define LL_RTC_BKP_DR22 (0x00000016U) +#define LL_RTC_BKP_DR23 (0x00000017U) +#define LL_RTC_BKP_DR24 (0x00000018U) +#define LL_RTC_BKP_DR25 (0x00000019U) +#define LL_RTC_BKP_DR26 (0x0000001AU) +#define LL_RTC_BKP_DR27 (0x0000001BU) +#define LL_RTC_BKP_DR28 (0x0000001CU) +#define LL_RTC_BKP_DR29 (0x0000001DU) +#define LL_RTC_BKP_DR30 (0x0000001EU) +#define LL_RTC_BKP_DR31 (0x0000001FU) +#define LL_RTC_BKP_DR32 (0x00000020U) +#define LL_RTC_BKP_DR33 (0x00000021U) +#define LL_RTC_BKP_DR34 (0x00000022U) +#define LL_RTC_BKP_DR35 (0x00000023U) +#define LL_RTC_BKP_DR36 (0x00000024U) +#define LL_RTC_BKP_DR37 (0x00000025U) +#define LL_RTC_BKP_DR38 (0x00000026U) +#define LL_RTC_BKP_DR39 (0x00000027U) +#define LL_RTC_BKP_DR40 (0x00000028U) +#define LL_RTC_BKP_DR41 (0x00000029U) +#define LL_RTC_BKP_DR42 (0x0000002AU) +#endif /* RTC_BKP_NUMBER > 10 */ + +/** + * @} + */ + +/** @defgroup RTC_LL_EC_TAMPLEVEL Tamper Active Level + * @{ + */ +#define LL_RTC_TAMPER_ACTIVELEVEL_LOW BKP_CR_TPAL /*!< A high level on the TAMPER pin resets all data backup registers (if TPE bit is set) */ +#define LL_RTC_TAMPER_ACTIVELEVEL_HIGH (0x00000000U) /*!< A low level on the TAMPER pin resets all data backup registers (if TPE bit is set) */ + +/** + * @} + */ + +/** @defgroup LL_RTC_Output_Source Clock Source to output on the Tamper Pin + * @{ + */ +#define LL_RTC_CALIB_OUTPUT_NONE (0x00000000U) /*!< Calibration output disabled */ +#define LL_RTC_CALIB_OUTPUT_RTCCLOCK BKP_RTCCR_CCO /*!< Calibration output is RTC Clock with a frequency divided by 64 on the TAMPER Pin */ +#define LL_RTC_CALIB_OUTPUT_ALARM BKP_RTCCR_ASOE /*!< Calibration output is Alarm pulse signal on the TAMPER pin */ +#define LL_RTC_CALIB_OUTPUT_SECOND (BKP_RTCCR_ASOS | BKP_RTCCR_ASOE) /*!< Calibration output is Second pulse signal on the TAMPER pin*/ +/** + * @} + */ + +/** + * @} + */ + +/* Exported macro ------------------------------------------------------------*/ +/** @defgroup RTC_LL_Exported_Macros RTC Exported Macros + * @{ + */ + +/** @defgroup RTC_LL_EM_WRITE_READ Common Write and read registers Macros + * @{ + */ + +/** + * @brief Write a value in RTC register + * @param __INSTANCE__ RTC Instance + * @param __REG__ Register to be written + * @param __VALUE__ Value to be written in the register + * @retval None + */ +#define LL_RTC_WriteReg(__INSTANCE__, __REG__, __VALUE__) WRITE_REG(__INSTANCE__->__REG__, (__VALUE__)) + +/** + * @brief Read a value in RTC register + * @param __INSTANCE__ RTC Instance + * @param __REG__ Register to be read + * @retval Register value + */ +#define LL_RTC_ReadReg(__INSTANCE__, __REG__) READ_REG(__INSTANCE__->__REG__) +/** + * @} + */ + +/** @defgroup RTC_LL_EM_Convert Convert helper Macros + * @{ + */ + +/** + * @brief Helper macro to convert a value from 2 digit decimal format to BCD format + * @param __VALUE__ Byte to be converted + * @retval Converted byte + */ +#define __LL_RTC_CONVERT_BIN2BCD(__VALUE__) (uint8_t)((((__VALUE__) / 10U) << 4U) | ((__VALUE__) % 10U)) + +/** + * @brief Helper macro to convert a value from BCD format to 2 digit decimal format + * @param __VALUE__ BCD value to be converted + * @retval Converted byte + */ +#define __LL_RTC_CONVERT_BCD2BIN(__VALUE__) (uint8_t)(((uint8_t)((__VALUE__) & (uint8_t)0xF0U) >> (uint8_t)0x4U) * 10U + ((__VALUE__) & (uint8_t)0x0FU)) + +/** + * @} + */ + +/** + * @} + */ + +/* Exported functions --------------------------------------------------------*/ +/** @defgroup RTC_LL_Exported_Functions RTC Exported Functions + * @{ + */ + +/** @defgroup RTC_LL_EF_Configuration Configuration + * @{ + */ + +/** + * @brief Set Asynchronous prescaler factor + * @rmtoll PRLH PRL LL_RTC_SetAsynchPrescaler\n + * @rmtoll PRLL PRL LL_RTC_SetAsynchPrescaler\n + * @param RTCx RTC Instance + * @param AsynchPrescaler Value between Min_Data = 0 and Max_Data = 0xFFFFF + * @retval None + */ +__STATIC_INLINE void LL_RTC_SetAsynchPrescaler(RTC_TypeDef *RTCx, uint32_t AsynchPrescaler) +{ + MODIFY_REG(RTCx->PRLH, RTC_PRLH_PRL, (AsynchPrescaler >> 16)); + MODIFY_REG(RTCx->PRLL, RTC_PRLL_PRL, (AsynchPrescaler & RTC_PRLL_PRL)); +} + +/** + * @brief Get Asynchronous prescaler factor + * @rmtoll DIVH DIV LL_RTC_GetDivider\n + * @rmtoll DIVL DIV LL_RTC_GetDivider\n + * @param RTCx RTC Instance + * @retval Value between Min_Data = 0 and Max_Data = 0xFFFFF + */ +__STATIC_INLINE uint32_t LL_RTC_GetDivider(RTC_TypeDef *RTCx) +{ + register uint16_t Highprescaler = 0, Lowprescaler = 0; + Highprescaler = READ_REG(RTCx->DIVH & RTC_DIVH_RTC_DIV); + Lowprescaler = READ_REG(RTCx->DIVL & RTC_DIVL_RTC_DIV); + + return (((uint32_t) Highprescaler << 16U) | Lowprescaler); +} + +/** + * @brief Set Output Source + * @rmtoll RTCCR CCO LL_RTC_SetOutputSource + * @rmtoll RTCCR ASOE LL_RTC_SetOutputSource + * @rmtoll RTCCR ASOS LL_RTC_SetOutputSource + * @param BKPx BKP Instance + * @param OutputSource This parameter can be one of the following values: + * @arg @ref LL_RTC_CALIB_OUTPUT_NONE + * @arg @ref LL_RTC_CALIB_OUTPUT_RTCCLOCK + * @arg @ref LL_RTC_CALIB_OUTPUT_ALARM + * @arg @ref LL_RTC_CALIB_OUTPUT_SECOND + * @retval None + */ +__STATIC_INLINE void LL_RTC_SetOutputSource(BKP_TypeDef *BKPx, uint32_t OutputSource) +{ + MODIFY_REG(BKPx->RTCCR, (BKP_RTCCR_CCO | BKP_RTCCR_ASOE | BKP_RTCCR_ASOS), OutputSource); +} + +/** + * @brief Get Output Source + * @rmtoll RTCCR CCO LL_RTC_GetOutPutSource + * @rmtoll RTCCR ASOE LL_RTC_GetOutPutSource + * @rmtoll RTCCR ASOS LL_RTC_GetOutPutSource + * @param BKPx BKP Instance + * @retval Returned value can be one of the following values: + * @arg @ref LL_RTC_CALIB_OUTPUT_NONE + * @arg @ref LL_RTC_CALIB_OUTPUT_RTCCLOCK + * @arg @ref LL_RTC_CALIB_OUTPUT_ALARM + * @arg @ref LL_RTC_CALIB_OUTPUT_SECOND + */ +__STATIC_INLINE uint32_t LL_RTC_GetOutPutSource(BKP_TypeDef *BKPx) +{ + return (uint32_t)(READ_BIT(BKPx->RTCCR, (BKP_RTCCR_CCO | BKP_RTCCR_ASOE | BKP_RTCCR_ASOS))); +} + +/** + * @brief Enable the write protection for RTC registers. + * @rmtoll CRL CNF LL_RTC_EnableWriteProtection + * @param RTCx RTC Instance + * @retval None + */ +__STATIC_INLINE void LL_RTC_EnableWriteProtection(RTC_TypeDef *RTCx) +{ + CLEAR_BIT(RTCx->CRL, RTC_CRL_CNF); +} + +/** + * @brief Disable the write protection for RTC registers. + * @rmtoll CRL RTC_CRL_CNF LL_RTC_DisableWriteProtection + * @param RTCx RTC Instance + * @retval None + */ +__STATIC_INLINE void LL_RTC_DisableWriteProtection(RTC_TypeDef *RTCx) +{ + SET_BIT(RTCx->CRL, RTC_CRL_CNF); +} + +/** + * @} + */ + +/** @defgroup RTC_LL_EF_Time Time + * @{ + */ + +/** + * @brief Set time counter in BCD format + * @note Bit is write-protected. @ref LL_RTC_DisableWriteProtection function should be called before. + * @note It can be written in initialization mode only (@ref LL_RTC_EnterInitMode function) + * @rmtoll CNTH CNT LL_RTC_TIME_Set\n + * CNTL CNT LL_RTC_TIME_Set\n + * @param RTCx RTC Instance + * @param TimeCounter Value between Min_Data=0x00 and Max_Data=0xFFFFF + * @retval None + */ +__STATIC_INLINE void LL_RTC_TIME_Set(RTC_TypeDef *RTCx, uint32_t TimeCounter) +{ + /* Set RTC COUNTER MSB word */ + WRITE_REG(RTCx->CNTH, (TimeCounter >> 16U)); + /* Set RTC COUNTER LSB word */ + WRITE_REG(RTCx->CNTL, (TimeCounter & RTC_CNTL_RTC_CNT)); +} + +/** + * @brief Get time counter in BCD format + * @rmtoll CNTH CNT LL_RTC_TIME_Get\n + * CNTL CNT LL_RTC_TIME_Get\n + * @param RTCx RTC Instance + * @retval Value between Min_Data = 0 and Max_Data = 0xFFFFF + */ +__STATIC_INLINE uint32_t LL_RTC_TIME_Get(RTC_TypeDef *RTCx) +{ + register uint16_t high = 0, low = 0; + + high = READ_REG(RTCx->CNTH & RTC_CNTH_RTC_CNT); + low = READ_REG(RTCx->CNTL & RTC_CNTL_RTC_CNT); + return ((uint32_t)(((uint32_t) high << 16U) | low)); +} + +/** + * @} + */ + +/** @defgroup RTC_LL_EF_ALARM ALARM + * @{ + */ + +/** + * @brief Set Alarm Counter + * @note Bit is write-protected. @ref LL_RTC_DisableWriteProtection function should be called before. + * @rmtoll ALRH ALR LL_RTC_ALARM_Set\n + * @rmtoll ALRL ALR LL_RTC_ALARM_Set\n + * @param RTCx RTC Instance + * @param AlarmCounter Value between Min_Data=0x00 and Max_Data=0xFFFFF + * @retval None + */ +__STATIC_INLINE void LL_RTC_ALARM_Set(RTC_TypeDef *RTCx, uint32_t AlarmCounter) +{ + /* Set RTC COUNTER MSB word */ + WRITE_REG(RTCx->ALRH, (AlarmCounter >> 16)); + /* Set RTC COUNTER LSB word */ + WRITE_REG(RTCx->ALRL, (AlarmCounter & RTC_ALRL_RTC_ALR)); +} + +/** + * @brief Get Alarm Counter + * @note Bit is write-protected. @ref LL_RTC_DisableWriteProtection function should be called before. + * @rmtoll ALRH ALR LL_RTC_ALARM_Get\n + * @rmtoll ALRL ALR LL_RTC_ALARM_Get\n + * @param RTCx RTC Instance + * @retval None + */ +__STATIC_INLINE uint32_t LL_RTC_ALARM_Get(RTC_TypeDef *RTCx) +{ + register uint16_t high = 0, low = 0; + + high = READ_REG(RTCx->ALRH & RTC_ALRH_RTC_ALR); + low = READ_REG(RTCx->ALRL & RTC_ALRL_RTC_ALR); + + return (((uint32_t) high << 16U) | low); +} + +/** + * @} + */ + +/** @defgroup RTC_LL_EF_Tamper Tamper + * @{ + */ + +/** + * @brief Enable RTC_TAMPx input detection + * @rmtoll CR TPE LL_RTC_TAMPER_Enable\n + * @retval None + */ +__STATIC_INLINE void LL_RTC_TAMPER_Enable(BKP_TypeDef *BKPx) +{ + SET_BIT(BKPx->CR, BKP_CR_TPE); +} + +/** + * @brief Disable RTC_TAMPx Tamper + * @rmtoll CR TPE LL_RTC_TAMPER_Disable\n + * @retval None + */ +__STATIC_INLINE void LL_RTC_TAMPER_Disable(BKP_TypeDef *BKPx) +{ + CLEAR_BIT(BKP->CR, BKP_CR_TPE); +} + +/** + * @brief Enable Active level for Tamper input + * @rmtoll CR TPAL LL_RTC_TAMPER_SetActiveLevel\n + * @param BKPx BKP Instance + * @param Tamper This parameter can be a combination of the following values: + * @arg @ref LL_RTC_TAMPER_ACTIVELEVEL_LOW + * @arg @ref LL_RTC_TAMPER_ACTIVELEVEL_HIGH + * @retval None + */ +__STATIC_INLINE void LL_RTC_TAMPER_SetActiveLevel(BKP_TypeDef *BKPx, uint32_t Tamper) +{ + MODIFY_REG(BKPx->CR, BKP_CR_TPAL, Tamper); +} + +/** + * @brief Disable Active level for Tamper input + * @rmtoll CR TPAL LL_RTC_TAMPER_SetActiveLevel\n + * @retval None + */ +__STATIC_INLINE uint32_t LL_RTC_TAMPER_GetActiveLevel(BKP_TypeDef *BKPx) +{ + return (uint32_t)(READ_BIT(BKPx->CR, BKP_CR_TPAL)); +} + +/** + * @} + */ + +/** @defgroup RTC_LL_EF_Backup_Registers Backup_Registers + * @{ + */ + +/** + * @brief Writes a data in a specified RTC Backup data register. + * @rmtoll BKPDR DR LL_RTC_BKP_SetRegister + * @param BKPx BKP Instance + * @param BackupRegister This parameter can be one of the following values: + * @arg @ref LL_RTC_BKP_DR1 + * @arg @ref LL_RTC_BKP_DR2 + * @arg @ref LL_RTC_BKP_DR3 + * @arg @ref LL_RTC_BKP_DR4 + * @arg @ref LL_RTC_BKP_DR5 + * @arg @ref LL_RTC_BKP_DR6 + * @arg @ref LL_RTC_BKP_DR7 + * @arg @ref LL_RTC_BKP_DR8 + * @arg @ref LL_RTC_BKP_DR9 + * @arg @ref LL_RTC_BKP_DR10 + * @arg @ref LL_RTC_BKP_DR11 (*) + * @arg @ref LL_RTC_BKP_DR12 (*) + * @arg @ref LL_RTC_BKP_DR13 (*) + * @arg @ref LL_RTC_BKP_DR14 (*) + * @arg @ref LL_RTC_BKP_DR15 (*) + * @arg @ref LL_RTC_BKP_DR16 (*) + * @arg @ref LL_RTC_BKP_DR17 (*) + * @arg @ref LL_RTC_BKP_DR18 (*) + * @arg @ref LL_RTC_BKP_DR19 (*) + * @arg @ref LL_RTC_BKP_DR20 (*) + * @arg @ref LL_RTC_BKP_DR21 (*) + * @arg @ref LL_RTC_BKP_DR22 (*) + * @arg @ref LL_RTC_BKP_DR23 (*) + * @arg @ref LL_RTC_BKP_DR24 (*) + * @arg @ref LL_RTC_BKP_DR25 (*) + * @arg @ref LL_RTC_BKP_DR26 (*) + * @arg @ref LL_RTC_BKP_DR27 (*) + * @arg @ref LL_RTC_BKP_DR28 (*) + * @arg @ref LL_RTC_BKP_DR29 (*) + * @arg @ref LL_RTC_BKP_DR30 (*) + * @arg @ref LL_RTC_BKP_DR31 (*) + * @arg @ref LL_RTC_BKP_DR32 (*) + * @arg @ref LL_RTC_BKP_DR33 (*) + * @arg @ref LL_RTC_BKP_DR34 (*) + * @arg @ref LL_RTC_BKP_DR35 (*) + * @arg @ref LL_RTC_BKP_DR36 (*) + * @arg @ref LL_RTC_BKP_DR37 (*) + * @arg @ref LL_RTC_BKP_DR38 (*) + * @arg @ref LL_RTC_BKP_DR39 (*) + * @arg @ref LL_RTC_BKP_DR40 (*) + * @arg @ref LL_RTC_BKP_DR41 (*) + * @arg @ref LL_RTC_BKP_DR42 (*) + * (*) value not defined in all devices. + * @param Data Value between Min_Data=0x00 and Max_Data=0xFFFFFFFF + * @retval None + */ +__STATIC_INLINE void LL_RTC_BKP_SetRegister(BKP_TypeDef *BKPx, uint32_t BackupRegister, uint32_t Data) +{ + register uint32_t tmp = 0U; + + tmp = (uint32_t)BKP_BASE; + tmp += (BackupRegister * 4U); + + /* Write the specified register */ + *(__IO uint32_t *)tmp = (uint32_t)Data; +} + +/** + * @brief Reads data from the specified RTC Backup data Register. + * @rmtoll BKPDR DR LL_RTC_BKP_GetRegister + * @param BKPx BKP Instance + * @param BackupRegister This parameter can be one of the following values: + * @arg @ref LL_RTC_BKP_DR1 + * @arg @ref LL_RTC_BKP_DR2 + * @arg @ref LL_RTC_BKP_DR3 + * @arg @ref LL_RTC_BKP_DR4 + * @arg @ref LL_RTC_BKP_DR5 + * @arg @ref LL_RTC_BKP_DR6 + * @arg @ref LL_RTC_BKP_DR7 + * @arg @ref LL_RTC_BKP_DR8 + * @arg @ref LL_RTC_BKP_DR9 + * @arg @ref LL_RTC_BKP_DR10 + * @arg @ref LL_RTC_BKP_DR11 (*) + * @arg @ref LL_RTC_BKP_DR12 (*) + * @arg @ref LL_RTC_BKP_DR13 (*) + * @arg @ref LL_RTC_BKP_DR14 (*) + * @arg @ref LL_RTC_BKP_DR15 (*) + * @arg @ref LL_RTC_BKP_DR16 (*) + * @arg @ref LL_RTC_BKP_DR17 (*) + * @arg @ref LL_RTC_BKP_DR18 (*) + * @arg @ref LL_RTC_BKP_DR19 (*) + * @arg @ref LL_RTC_BKP_DR20 (*) + * @arg @ref LL_RTC_BKP_DR21 (*) + * @arg @ref LL_RTC_BKP_DR22 (*) + * @arg @ref LL_RTC_BKP_DR23 (*) + * @arg @ref LL_RTC_BKP_DR24 (*) + * @arg @ref LL_RTC_BKP_DR25 (*) + * @arg @ref LL_RTC_BKP_DR26 (*) + * @arg @ref LL_RTC_BKP_DR27 (*) + * @arg @ref LL_RTC_BKP_DR28 (*) + * @arg @ref LL_RTC_BKP_DR29 (*) + * @arg @ref LL_RTC_BKP_DR30 (*) + * @arg @ref LL_RTC_BKP_DR31 (*) + * @arg @ref LL_RTC_BKP_DR32 (*) + * @arg @ref LL_RTC_BKP_DR33 (*) + * @arg @ref LL_RTC_BKP_DR34 (*) + * @arg @ref LL_RTC_BKP_DR35 (*) + * @arg @ref LL_RTC_BKP_DR36 (*) + * @arg @ref LL_RTC_BKP_DR37 (*) + * @arg @ref LL_RTC_BKP_DR38 (*) + * @arg @ref LL_RTC_BKP_DR39 (*) + * @arg @ref LL_RTC_BKP_DR40 (*) + * @arg @ref LL_RTC_BKP_DR41 (*) + * @arg @ref LL_RTC_BKP_DR42 (*) + * @retval Value between Min_Data=0x00 and Max_Data=0xFFFFFFFF + */ +__STATIC_INLINE uint32_t LL_RTC_BKP_GetRegister(BKP_TypeDef *BKPx, uint32_t BackupRegister) +{ + register uint32_t tmp = 0U; + + tmp = (uint32_t)BKP_BASE; + tmp += (BackupRegister * 4U); + + /* Read the specified register */ + return ((*(__IO uint32_t *)tmp) & BKP_DR1_D); +} + +/** + * @} + */ + +/** @defgroup RTC_LL_EF_Calibration Calibration + * @{ + */ + +/** + * @brief Set the coarse digital calibration + * @note Bit is write-protected. @ref LL_RTC_DisableWriteProtection function should be called before. + * @note It can be written in initialization mode only (@ref LL_RTC_EnterInitMode function) + * @rmtoll RTCCR CAL LL_RTC_CAL_SetCoarseDigital\n + * @param BKPx RTC Instance + * @param Value value of coarse calibration expressed in ppm (coded on 5 bits) + * @note This Calibration value should be between 0 and 121 when using positive sign with a 4-ppm step. + * @retval None + */ +__STATIC_INLINE void LL_RTC_CAL_SetCoarseDigital(BKP_TypeDef *BKPx, uint32_t Value) +{ + MODIFY_REG(BKPx->RTCCR, BKP_RTCCR_CAL, Value); +} + +/** + * @brief Get the coarse digital calibration value + * @rmtoll RTCCR CAL LL_RTC_CAL_SetCoarseDigital\n + * @param BKPx BKP Instance + * @retval value of coarse calibration expressed in ppm (coded on 5 bits) + */ +__STATIC_INLINE uint32_t LL_RTC_CAL_GetCoarseDigital(BKP_TypeDef *BKPx) +{ + return (uint32_t)(READ_BIT(BKPx->RTCCR, BKP_RTCCR_CAL)); +} +/** + * @} + */ + +/** @defgroup RTC_LL_EF_FLAG_Management FLAG_Management + * @{ + */ + +/** + * @brief Get RTC_TAMPI Interruption detection flag + * @rmtoll CSR TIF LL_RTC_IsActiveFlag_TAMPI + * @param BKPx BKP Instance + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_RTC_IsActiveFlag_TAMPI(BKP_TypeDef *BKPx) +{ + return (READ_BIT(BKPx->CSR, BKP_CSR_TIF) == (BKP_CSR_TIF)); +} + +/** + * @brief Clear RTC_TAMP Interruption detection flag + * @rmtoll CSR CTI LL_RTC_ClearFlag_TAMPI + * @param BKPx BKP Instance + * @retval None + */ +__STATIC_INLINE void LL_RTC_ClearFlag_TAMPI(BKP_TypeDef *BKPx) +{ + SET_BIT(BKPx->CSR, BKP_CSR_CTI); +} + +/** + * @brief Get RTC_TAMPE Event detection flag + * @rmtoll CSR TEF LL_RTC_IsActiveFlag_TAMPE + * @param BKPx BKP Instance + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_RTC_IsActiveFlag_TAMPE(BKP_TypeDef *BKPx) +{ + return (READ_BIT(BKPx->CSR, BKP_CSR_TEF) == (BKP_CSR_TEF)); +} + +/** + * @brief Clear RTC_TAMPE Even detection flag + * @rmtoll CSR CTE LL_RTC_ClearFlag_TAMPE + * @param BKPx BKP Instance + * @retval None + */ +__STATIC_INLINE void LL_RTC_ClearFlag_TAMPE(BKP_TypeDef *BKPx) +{ + SET_BIT(BKPx->CSR, BKP_CSR_CTE); +} + +/** + * @brief Get Alarm flag + * @rmtoll CRL ALRF LL_RTC_IsActiveFlag_ALR + * @param RTCx RTC Instance + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_RTC_IsActiveFlag_ALR(RTC_TypeDef *RTCx) +{ + return (READ_BIT(RTCx->CRL, RTC_CRL_ALRF) == (RTC_CRL_ALRF)); +} + +/** + * @brief Clear Alarm flag + * @rmtoll CRL ALRF LL_RTC_ClearFlag_ALR + * @param RTCx RTC Instance + * @retval None + */ +__STATIC_INLINE void LL_RTC_ClearFlag_ALR(RTC_TypeDef *RTCx) +{ + CLEAR_BIT(RTCx->CRL, RTC_CRL_ALRF); +} + +/** + * @brief Get Registers synchronization flag + * @rmtoll CRL RSF LL_RTC_IsActiveFlag_RS + * @param RTCx RTC Instance + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_RTC_IsActiveFlag_RS(RTC_TypeDef *RTCx) +{ + return (READ_BIT(RTCx->CRL, RTC_CRL_RSF) == (RTC_CRL_RSF)); +} + +/** + * @brief Clear Registers synchronization flag + * @rmtoll CRL RSF LL_RTC_ClearFlag_RS + * @param RTCx RTC Instance + * @retval None + */ +__STATIC_INLINE void LL_RTC_ClearFlag_RS(RTC_TypeDef *RTCx) +{ + CLEAR_BIT(RTCx->CRL, RTC_CRL_RSF); +} + +/** + * @brief Get Registers OverFlow flag + * @rmtoll CRL OWF LL_RTC_IsActiveFlag_OW + * @param RTCx RTC Instance + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_RTC_IsActiveFlag_OW(RTC_TypeDef *RTCx) +{ + return (READ_BIT(RTCx->CRL, RTC_CRL_OWF) == (RTC_CRL_OWF)); +} + +/** + * @brief Clear Registers OverFlow flag + * @rmtoll CRL OWF LL_RTC_ClearFlag_OW + * @param RTCx RTC Instance + * @retval None + */ +__STATIC_INLINE void LL_RTC_ClearFlag_OW(RTC_TypeDef *RTCx) +{ + CLEAR_BIT(RTCx->CRL, RTC_CRL_OWF); +} + +/** + * @brief Get Registers synchronization flag + * @rmtoll CRL SECF LL_RTC_IsActiveFlag_SEC + * @param RTCx RTC Instance + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_RTC_IsActiveFlag_SEC(RTC_TypeDef *RTCx) +{ + return (READ_BIT(RTCx->CRL, RTC_CRL_SECF) == (RTC_CRL_SECF)); +} + +/** + * @brief Clear Registers synchronization flag + * @rmtoll CRL SECF LL_RTC_ClearFlag_SEC + * @param RTCx RTC Instance + * @retval None + */ +__STATIC_INLINE void LL_RTC_ClearFlag_SEC(RTC_TypeDef *RTCx) +{ + CLEAR_BIT(RTCx->CRL, RTC_CRL_SECF); +} + +/** + * @brief Get RTC Operation OFF status flag + * @rmtoll CRL RTOFF LL_RTC_IsActiveFlag_RTOF + * @param RTCx RTC Instance + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_RTC_IsActiveFlag_RTOF(RTC_TypeDef *RTCx) +{ + return (READ_BIT(RTCx->CRL, RTC_CRL_RTOFF) == (RTC_CRL_RTOFF)); +} + +/** + * @} + */ + +/** @defgroup RTC_LL_EF_IT_Management IT_Management + * @{ + */ + +/** + * @brief Enable Alarm interrupt + * @note Bit is write-protected. @ref LL_RTC_DisableWriteProtection function should be called before. + * @rmtoll CRH ALRIE LL_RTC_EnableIT_ALR + * @param RTCx RTC Instance + * @retval None + */ +__STATIC_INLINE void LL_RTC_EnableIT_ALR(RTC_TypeDef *RTCx) +{ + SET_BIT(RTCx->CRH, RTC_CRH_ALRIE); +} + +/** + * @brief Disable Alarm interrupt + * @note Bit is write-protected. @ref LL_RTC_DisableWriteProtection function should be called before. + * @rmtoll CRH ALRIE LL_RTC_DisableIT_ALR + * @param RTCx RTC Instance + * @retval None + */ +__STATIC_INLINE void LL_RTC_DisableIT_ALR(RTC_TypeDef *RTCx) +{ + CLEAR_BIT(RTCx->CRH, RTC_CRH_ALRIE); +} + +/** + * @brief Check if Alarm interrupt is enabled or not + * @rmtoll CRH ALRIE LL_RTC_IsEnabledIT_ALR + * @param RTCx RTC Instance + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_RTC_IsEnabledIT_ALR(RTC_TypeDef *RTCx) +{ + return (READ_BIT(RTCx->CRH, RTC_CRH_ALRIE) == (RTC_CRH_ALRIE)); +} + +/** + * @brief Enable Second Interrupt interrupt + * @note Bit is write-protected. @ref LL_RTC_DisableWriteProtection function should be called before. + * @rmtoll CRH SECIE LL_RTC_EnableIT_SEC + * @param RTCx RTC Instance + * @retval None + */ +__STATIC_INLINE void LL_RTC_EnableIT_SEC(RTC_TypeDef *RTCx) +{ + SET_BIT(RTCx->CRH, RTC_CRH_SECIE); +} + +/** + * @brief Disable Second interrupt + * @note Bit is write-protected. @ref LL_RTC_DisableWriteProtection function should be called before. + * @rmtoll CRH SECIE LL_RTC_DisableIT_SEC + * @param RTCx RTC Instance + * @retval None + */ +__STATIC_INLINE void LL_RTC_DisableIT_SEC(RTC_TypeDef *RTCx) +{ + CLEAR_BIT(RTCx->CRH, RTC_CRH_SECIE); +} + +/** + * @brief Check if Second interrupt is enabled or not + * @rmtoll CRH SECIE LL_RTC_IsEnabledIT_SEC + * @param RTCx RTC Instance + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_RTC_IsEnabledIT_SEC(RTC_TypeDef *RTCx) +{ + return (READ_BIT(RTCx->CRH, RTC_CRH_SECIE) == (RTC_CRH_SECIE)); +} + +/** + * @brief Enable OverFlow interrupt + * @note Bit is write-protected. @ref LL_RTC_DisableWriteProtection function should be called before. + * @rmtoll CRH OWIE LL_RTC_EnableIT_OW + * @param RTCx RTC Instance + * @retval None + */ +__STATIC_INLINE void LL_RTC_EnableIT_OW(RTC_TypeDef *RTCx) +{ + SET_BIT(RTCx->CRH, RTC_CRH_OWIE); +} + +/** + * @brief Disable OverFlow interrupt + * @note Bit is write-protected. @ref LL_RTC_DisableWriteProtection function should be called before. + * @rmtoll CRH OWIE LL_RTC_DisableIT_OW + * @param RTCx RTC Instance + * @retval None + */ +__STATIC_INLINE void LL_RTC_DisableIT_OW(RTC_TypeDef *RTCx) +{ + CLEAR_BIT(RTCx->CRH, RTC_CRH_OWIE); +} + +/** + * @brief Check if OverFlow interrupt is enabled or not + * @rmtoll CRH OWIE LL_RTC_IsEnabledIT_OW + * @param RTCx RTC Instance + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_RTC_IsEnabledIT_OW(RTC_TypeDef *RTCx) +{ + return (READ_BIT(RTCx->CRH, RTC_CRH_OWIE) == (RTC_CRH_OWIE)); +} + +/** + * @brief Enable Tamper interrupt + * @rmtoll CSR TPIE LL_RTC_EnableIT_TAMP + * @param BKPx BKP Instance + * @retval None + */ +__STATIC_INLINE void LL_RTC_EnableIT_TAMP(BKP_TypeDef *BKPx) +{ + SET_BIT(BKPx->CSR, BKP_CSR_TPIE); +} + +/** + * @brief Disable Tamper interrupt + * @rmtoll CSR TPIE LL_RTC_EnableIT_TAMP + * @param BKPx BKP Instance + * @retval None + */ +__STATIC_INLINE void LL_RTC_DisableIT_TAMP(BKP_TypeDef *BKPx) +{ + CLEAR_BIT(BKPx->CSR, BKP_CSR_TPIE); +} + +/** + * @brief Check if all the TAMPER interrupts are enabled or not + * @rmtoll CSR TPIE LL_RTC_IsEnabledIT_TAMP + * @param BKPx BKP Instance + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_RTC_IsEnabledIT_TAMP(BKP_TypeDef *BKPx) +{ + return (READ_BIT(BKPx->CSR, BKP_CSR_TPIE) == BKP_CSR_TPIE); +} +/** + * @} + */ + +#if defined(USE_FULL_LL_DRIVER) +/** @defgroup RTC_LL_EF_Init Initialization and de-initialization functions + * @{ + */ + +ErrorStatus LL_RTC_DeInit(RTC_TypeDef *RTCx); +ErrorStatus LL_RTC_Init(RTC_TypeDef *RTCx, LL_RTC_InitTypeDef *RTC_InitStruct); +void LL_RTC_StructInit(LL_RTC_InitTypeDef *RTC_InitStruct); +ErrorStatus LL_RTC_TIME_Init(RTC_TypeDef *RTCx, uint32_t RTC_Format, LL_RTC_TimeTypeDef *RTC_TimeStruct); +void LL_RTC_TIME_StructInit(LL_RTC_TimeTypeDef *RTC_TimeStruct); +ErrorStatus LL_RTC_ALARM_Init(RTC_TypeDef *RTCx, uint32_t RTC_Format, LL_RTC_AlarmTypeDef *RTC_AlarmStruct); +void LL_RTC_ALARM_StructInit(LL_RTC_AlarmTypeDef *RTC_AlarmStruct); +ErrorStatus LL_RTC_EnterInitMode(RTC_TypeDef *RTCx); +ErrorStatus LL_RTC_ExitInitMode(RTC_TypeDef *RTCx); +ErrorStatus LL_RTC_WaitForSynchro(RTC_TypeDef *RTCx); +ErrorStatus LL_RTC_TIME_SetCounter(RTC_TypeDef *RTCx, uint32_t TimeCounter); +ErrorStatus LL_RTC_ALARM_SetCounter(RTC_TypeDef *RTCx, uint32_t AlarmCounter); + +/** + * @} + */ +#endif /* USE_FULL_LL_DRIVER */ + +/** + * @} + */ + +/** + * @} + */ + +/** + * @} + */ + +#endif /* defined(RTC) */ + +/** + * @} + */ + +#ifdef __cplusplus +} +#endif + +#endif /* __STM32F1xx_LL_RTC_H */ + +/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/ diff --git a/LLDrivers/inc/stm32f1xx_ll_sdmmc.h b/LLDrivers/inc/stm32f1xx_ll_sdmmc.h new file mode 100644 index 0000000..0bc7c9b --- /dev/null +++ b/LLDrivers/inc/stm32f1xx_ll_sdmmc.h @@ -0,0 +1,1112 @@ +/** + ****************************************************************************** + * @file stm32f1xx_ll_sdmmc.h + * @author MCD Application Team + * @brief Header file of SDMMC HAL module. + ****************************************************************************** + * @attention + * + *

© Copyright (c) 2018 STMicroelectronics. + * All rights reserved.

+ * + * This software component is licensed by ST under BSD 3-Clause license, + * the "License"; You may not use this file except in compliance with the + * License. You may obtain a copy of the License at: + * opensource.org/licenses/BSD-3-Clause + * + ****************************************************************************** + */ + +/* Define to prevent recursive inclusion -------------------------------------*/ +#ifndef STM32F1xx_LL_SDMMC_H +#define STM32F1xx_LL_SDMMC_H + +#ifdef __cplusplus + extern "C" { +#endif + +#if defined(SDIO) + +/* Includes ------------------------------------------------------------------*/ +#include "stm32f1xx_hal_def.h" + +/** @addtogroup STM32F1xx_Driver + * @{ + */ + +/** @addtogroup SDMMC_LL + * @{ + */ + +/* Exported types ------------------------------------------------------------*/ +/** @defgroup SDMMC_LL_Exported_Types SDMMC_LL Exported Types + * @{ + */ + +/** + * @brief SDMMC Configuration Structure definition + */ +typedef struct +{ + uint32_t ClockEdge; /*!< Specifies the clock transition on which the bit capture is made. + This parameter can be a value of @ref SDMMC_LL_Clock_Edge */ + + uint32_t ClockBypass; /*!< Specifies whether the SDMMC Clock divider bypass is + enabled or disabled. + This parameter can be a value of @ref SDMMC_LL_Clock_Bypass */ + + uint32_t ClockPowerSave; /*!< Specifies whether SDMMC Clock output is enabled or + disabled when the bus is idle. + This parameter can be a value of @ref SDMMC_LL_Clock_Power_Save */ + + uint32_t BusWide; /*!< Specifies the SDMMC bus width. + This parameter can be a value of @ref SDMMC_LL_Bus_Wide */ + + uint32_t HardwareFlowControl; /*!< Specifies whether the SDMMC hardware flow control is enabled or disabled. + This parameter can be a value of @ref SDMMC_LL_Hardware_Flow_Control */ + + uint32_t ClockDiv; /*!< Specifies the clock frequency of the SDMMC controller. + This parameter can be a value between Min_Data = 0 and Max_Data = 255 */ + +}SDIO_InitTypeDef; + + +/** + * @brief SDMMC Command Control structure + */ +typedef struct +{ + uint32_t Argument; /*!< Specifies the SDMMC command argument which is sent + to a card as part of a command message. If a command + contains an argument, it must be loaded into this register + before writing the command to the command register. */ + + uint32_t CmdIndex; /*!< Specifies the SDMMC command index. It must be Min_Data = 0 and + Max_Data = 64 */ + + uint32_t Response; /*!< Specifies the SDMMC response type. + This parameter can be a value of @ref SDMMC_LL_Response_Type */ + + uint32_t WaitForInterrupt; /*!< Specifies whether SDMMC wait for interrupt request is + enabled or disabled. + This parameter can be a value of @ref SDMMC_LL_Wait_Interrupt_State */ + + uint32_t CPSM; /*!< Specifies whether SDMMC Command path state machine (CPSM) + is enabled or disabled. + This parameter can be a value of @ref SDMMC_LL_CPSM_State */ +}SDIO_CmdInitTypeDef; + + +/** + * @brief SDMMC Data Control structure + */ +typedef struct +{ + uint32_t DataTimeOut; /*!< Specifies the data timeout period in card bus clock periods. */ + + uint32_t DataLength; /*!< Specifies the number of data bytes to be transferred. */ + + uint32_t DataBlockSize; /*!< Specifies the data block size for block transfer. + This parameter can be a value of @ref SDMMC_LL_Data_Block_Size */ + + uint32_t TransferDir; /*!< Specifies the data transfer direction, whether the transfer + is a read or write. + This parameter can be a value of @ref SDMMC_LL_Transfer_Direction */ + + uint32_t TransferMode; /*!< Specifies whether data transfer is in stream or block mode. + This parameter can be a value of @ref SDMMC_LL_Transfer_Type */ + + uint32_t DPSM; /*!< Specifies whether SDMMC Data path state machine (DPSM) + is enabled or disabled. + This parameter can be a value of @ref SDMMC_LL_DPSM_State */ +}SDIO_DataInitTypeDef; + +/** + * @} + */ + +/* Exported constants --------------------------------------------------------*/ +/** @defgroup SDMMC_LL_Exported_Constants SDMMC_LL Exported Constants + * @{ + */ +#define SDMMC_ERROR_NONE ((uint32_t)0x00000000U) /*!< No error */ +#define SDMMC_ERROR_CMD_CRC_FAIL ((uint32_t)0x00000001U) /*!< Command response received (but CRC check failed) */ +#define SDMMC_ERROR_DATA_CRC_FAIL ((uint32_t)0x00000002U) /*!< Data block sent/received (CRC check failed) */ +#define SDMMC_ERROR_CMD_RSP_TIMEOUT ((uint32_t)0x00000004U) /*!< Command response timeout */ +#define SDMMC_ERROR_DATA_TIMEOUT ((uint32_t)0x00000008U) /*!< Data timeout */ +#define SDMMC_ERROR_TX_UNDERRUN ((uint32_t)0x00000010U) /*!< Transmit FIFO underrun */ +#define SDMMC_ERROR_RX_OVERRUN ((uint32_t)0x00000020U) /*!< Receive FIFO overrun */ +#define SDMMC_ERROR_ADDR_MISALIGNED ((uint32_t)0x00000040U) /*!< Misaligned address */ +#define SDMMC_ERROR_BLOCK_LEN_ERR ((uint32_t)0x00000080U) /*!< Transferred block length is not allowed for the card or the + number of transferred bytes does not match the block length */ +#define SDMMC_ERROR_ERASE_SEQ_ERR ((uint32_t)0x00000100U) /*!< An error in the sequence of erase command occurs */ +#define SDMMC_ERROR_BAD_ERASE_PARAM ((uint32_t)0x00000200U) /*!< An invalid selection for erase groups */ +#define SDMMC_ERROR_WRITE_PROT_VIOLATION ((uint32_t)0x00000400U) /*!< Attempt to program a write protect block */ +#define SDMMC_ERROR_LOCK_UNLOCK_FAILED ((uint32_t)0x00000800U) /*!< Sequence or password error has been detected in unlock + command or if there was an attempt to access a locked card */ +#define SDMMC_ERROR_COM_CRC_FAILED ((uint32_t)0x00001000U) /*!< CRC check of the previous command failed */ +#define SDMMC_ERROR_ILLEGAL_CMD ((uint32_t)0x00002000U) /*!< Command is not legal for the card state */ +#define SDMMC_ERROR_CARD_ECC_FAILED ((uint32_t)0x00004000U) /*!< Card internal ECC was applied but failed to correct the data */ +#define SDMMC_ERROR_CC_ERR ((uint32_t)0x00008000U) /*!< Internal card controller error */ +#define SDMMC_ERROR_GENERAL_UNKNOWN_ERR ((uint32_t)0x00010000U) /*!< General or unknown error */ +#define SDMMC_ERROR_STREAM_READ_UNDERRUN ((uint32_t)0x00020000U) /*!< The card could not sustain data reading in stream rmode */ +#define SDMMC_ERROR_STREAM_WRITE_OVERRUN ((uint32_t)0x00040000U) /*!< The card could not sustain data programming in stream mode */ +#define SDMMC_ERROR_CID_CSD_OVERWRITE ((uint32_t)0x00080000U) /*!< CID/CSD overwrite error */ +#define SDMMC_ERROR_WP_ERASE_SKIP ((uint32_t)0x00100000U) /*!< Only partial address space was erased */ +#define SDMMC_ERROR_CARD_ECC_DISABLED ((uint32_t)0x00200000U) /*!< Command has been executed without using internal ECC */ +#define SDMMC_ERROR_ERASE_RESET ((uint32_t)0x00400000U) /*!< Erase sequence was cleared before executing because an out + of erase sequence command was received */ +#define SDMMC_ERROR_AKE_SEQ_ERR ((uint32_t)0x00800000U) /*!< Error in sequence of authentication */ +#define SDMMC_ERROR_INVALID_VOLTRANGE ((uint32_t)0x01000000U) /*!< Error in case of invalid voltage range */ +#define SDMMC_ERROR_ADDR_OUT_OF_RANGE ((uint32_t)0x02000000U) /*!< Error when addressed block is out of range */ +#define SDMMC_ERROR_REQUEST_NOT_APPLICABLE ((uint32_t)0x04000000U) /*!< Error when command request is not applicable */ +#define SDMMC_ERROR_INVALID_PARAMETER ((uint32_t)0x08000000U) /*!< the used parameter is not valid */ +#define SDMMC_ERROR_UNSUPPORTED_FEATURE ((uint32_t)0x10000000U) /*!< Error when feature is not insupported */ +#define SDMMC_ERROR_BUSY ((uint32_t)0x20000000U) /*!< Error when transfer process is busy */ +#define SDMMC_ERROR_DMA ((uint32_t)0x40000000U) /*!< Error while DMA transfer */ +#define SDMMC_ERROR_TIMEOUT ((uint32_t)0x80000000U) /*!< Timeout error */ + +/** + * @brief SDMMC Commands Index + */ +#define SDMMC_CMD_GO_IDLE_STATE ((uint8_t)0U) /*!< Resets the SD memory card. */ +#define SDMMC_CMD_SEND_OP_COND ((uint8_t)1U) /*!< Sends host capacity support information and activates the card's initialization process. */ +#define SDMMC_CMD_ALL_SEND_CID ((uint8_t)2U) /*!< Asks any card connected to the host to send the CID numbers on the CMD line. */ +#define SDMMC_CMD_SET_REL_ADDR ((uint8_t)3U) /*!< Asks the card to publish a new relative address (RCA). */ +#define SDMMC_CMD_SET_DSR ((uint8_t)4U) /*!< Programs the DSR of all cards. */ +#define SDMMC_CMD_SDMMC_SEN_OP_COND ((uint8_t)5U) /*!< Sends host capacity support information (HCS) and asks the accessed card to send its + operating condition register (OCR) content in the response on the CMD line. */ +#define SDMMC_CMD_HS_SWITCH ((uint8_t)6U) /*!< Checks switchable function (mode 0) and switch card function (mode 1). */ +#define SDMMC_CMD_SEL_DESEL_CARD ((uint8_t)7U) /*!< Selects the card by its own relative address and gets deselected by any other address */ +#define SDMMC_CMD_HS_SEND_EXT_CSD ((uint8_t)8U) /*!< Sends SD Memory Card interface condition, which includes host supply voltage information + and asks the card whether card supports voltage. */ +#define SDMMC_CMD_SEND_CSD ((uint8_t)9U) /*!< Addressed card sends its card specific data (CSD) on the CMD line. */ +#define SDMMC_CMD_SEND_CID ((uint8_t)10U) /*!< Addressed card sends its card identification (CID) on the CMD line. */ +#define SDMMC_CMD_READ_DAT_UNTIL_STOP ((uint8_t)11U) /*!< SD card doesn't support it. */ +#define SDMMC_CMD_STOP_TRANSMISSION ((uint8_t)12U) /*!< Forces the card to stop transmission. */ +#define SDMMC_CMD_SEND_STATUS ((uint8_t)13U) /*!< Addressed card sends its status register. */ +#define SDMMC_CMD_HS_BUSTEST_READ ((uint8_t)14U) /*!< Reserved */ +#define SDMMC_CMD_GO_INACTIVE_STATE ((uint8_t)15U) /*!< Sends an addressed card into the inactive state. */ +#define SDMMC_CMD_SET_BLOCKLEN ((uint8_t)16U) /*!< Sets the block length (in bytes for SDSC) for all following block commands + (read, write, lock). Default block length is fixed to 512 Bytes. Not effective + for SDHS and SDXC. */ +#define SDMMC_CMD_READ_SINGLE_BLOCK ((uint8_t)17U) /*!< Reads single block of size selected by SET_BLOCKLEN in case of SDSC, and a block of + fixed 512 bytes in case of SDHC and SDXC. */ +#define SDMMC_CMD_READ_MULT_BLOCK ((uint8_t)18U) /*!< Continuously transfers data blocks from card to host until interrupted by + STOP_TRANSMISSION command. */ +#define SDMMC_CMD_HS_BUSTEST_WRITE ((uint8_t)19U) /*!< 64 bytes tuning pattern is sent for SDR50 and SDR104. */ +#define SDMMC_CMD_WRITE_DAT_UNTIL_STOP ((uint8_t)20U) /*!< Speed class control command. */ +#define SDMMC_CMD_SET_BLOCK_COUNT ((uint8_t)23U) /*!< Specify block count for CMD18 and CMD25. */ +#define SDMMC_CMD_WRITE_SINGLE_BLOCK ((uint8_t)24U) /*!< Writes single block of size selected by SET_BLOCKLEN in case of SDSC, and a block of + fixed 512 bytes in case of SDHC and SDXC. */ +#define SDMMC_CMD_WRITE_MULT_BLOCK ((uint8_t)25U) /*!< Continuously writes blocks of data until a STOP_TRANSMISSION follows. */ +#define SDMMC_CMD_PROG_CID ((uint8_t)26U) /*!< Reserved for manufacturers. */ +#define SDMMC_CMD_PROG_CSD ((uint8_t)27U) /*!< Programming of the programmable bits of the CSD. */ +#define SDMMC_CMD_SET_WRITE_PROT ((uint8_t)28U) /*!< Sets the write protection bit of the addressed group. */ +#define SDMMC_CMD_CLR_WRITE_PROT ((uint8_t)29U) /*!< Clears the write protection bit of the addressed group. */ +#define SDMMC_CMD_SEND_WRITE_PROT ((uint8_t)30U) /*!< Asks the card to send the status of the write protection bits. */ +#define SDMMC_CMD_SD_ERASE_GRP_START ((uint8_t)32U) /*!< Sets the address of the first write block to be erased. (For SD card only). */ +#define SDMMC_CMD_SD_ERASE_GRP_END ((uint8_t)33U) /*!< Sets the address of the last write block of the continuous range to be erased. */ +#define SDMMC_CMD_ERASE_GRP_START ((uint8_t)35U) /*!< Sets the address of the first write block to be erased. Reserved for each command + system set by switch function command (CMD6). */ +#define SDMMC_CMD_ERASE_GRP_END ((uint8_t)36U) /*!< Sets the address of the last write block of the continuous range to be erased. + Reserved for each command system set by switch function command (CMD6). */ +#define SDMMC_CMD_ERASE ((uint8_t)38U) /*!< Reserved for SD security applications. */ +#define SDMMC_CMD_FAST_IO ((uint8_t)39U) /*!< SD card doesn't support it (Reserved). */ +#define SDMMC_CMD_GO_IRQ_STATE ((uint8_t)40U) /*!< SD card doesn't support it (Reserved). */ +#define SDMMC_CMD_LOCK_UNLOCK ((uint8_t)42U) /*!< Sets/resets the password or lock/unlock the card. The size of the data block is set by + the SET_BLOCK_LEN command. */ +#define SDMMC_CMD_APP_CMD ((uint8_t)55U) /*!< Indicates to the card that the next command is an application specific command rather + than a standard command. */ +#define SDMMC_CMD_GEN_CMD ((uint8_t)56U) /*!< Used either to transfer a data block to the card or to get a data block from the card + for general purpose/application specific commands. */ +#define SDMMC_CMD_NO_CMD ((uint8_t)64U) /*!< No command */ + +/** + * @brief Following commands are SD Card Specific commands. + * SDMMC_APP_CMD should be sent before sending these commands. + */ +#define SDMMC_CMD_APP_SD_SET_BUSWIDTH ((uint8_t)6U) /*!< (ACMD6) Defines the data bus width to be used for data transfer. The allowed data bus + widths are given in SCR register. */ +#define SDMMC_CMD_SD_APP_STATUS ((uint8_t)13U) /*!< (ACMD13) Sends the SD status. */ +#define SDMMC_CMD_SD_APP_SEND_NUM_WRITE_BLOCKS ((uint8_t)22U) /*!< (ACMD22) Sends the number of the written (without errors) write blocks. Responds with + 32bit+CRC data block. */ +#define SDMMC_CMD_SD_APP_OP_COND ((uint8_t)41U) /*!< (ACMD41) Sends host capacity support information (HCS) and asks the accessed card to + send its operating condition register (OCR) content in the response on the CMD line. */ +#define SDMMC_CMD_SD_APP_SET_CLR_CARD_DETECT ((uint8_t)42U) /*!< (ACMD42) Connect/Disconnect the 50 KOhm pull-up resistor on CD/DAT3 (pin 1) of the card */ +#define SDMMC_CMD_SD_APP_SEND_SCR ((uint8_t)51U) /*!< Reads the SD Configuration Register (SCR). */ +#define SDMMC_CMD_SDMMC_RW_DIRECT ((uint8_t)52U) /*!< For SD I/O card only, reserved for security specification. */ +#define SDMMC_CMD_SDMMC_RW_EXTENDED ((uint8_t)53U) /*!< For SD I/O card only, reserved for security specification. */ + +/** + * @brief Following commands are SD Card Specific security commands. + * SDMMC_CMD_APP_CMD should be sent before sending these commands. + */ +#define SDMMC_CMD_SD_APP_GET_MKB ((uint8_t)43U) +#define SDMMC_CMD_SD_APP_GET_MID ((uint8_t)44U) +#define SDMMC_CMD_SD_APP_SET_CER_RN1 ((uint8_t)45U) +#define SDMMC_CMD_SD_APP_GET_CER_RN2 ((uint8_t)46U) +#define SDMMC_CMD_SD_APP_SET_CER_RES2 ((uint8_t)47U) +#define SDMMC_CMD_SD_APP_GET_CER_RES1 ((uint8_t)48U) +#define SDMMC_CMD_SD_APP_SECURE_READ_MULTIPLE_BLOCK ((uint8_t)18U) +#define SDMMC_CMD_SD_APP_SECURE_WRITE_MULTIPLE_BLOCK ((uint8_t)25U) +#define SDMMC_CMD_SD_APP_SECURE_ERASE ((uint8_t)38U) +#define SDMMC_CMD_SD_APP_CHANGE_SECURE_AREA ((uint8_t)49U) +#define SDMMC_CMD_SD_APP_SECURE_WRITE_MKB ((uint8_t)48U) + +/** + * @brief Masks for errors Card Status R1 (OCR Register) + */ +#define SDMMC_OCR_ADDR_OUT_OF_RANGE ((uint32_t)0x80000000U) +#define SDMMC_OCR_ADDR_MISALIGNED ((uint32_t)0x40000000U) +#define SDMMC_OCR_BLOCK_LEN_ERR ((uint32_t)0x20000000U) +#define SDMMC_OCR_ERASE_SEQ_ERR ((uint32_t)0x10000000U) +#define SDMMC_OCR_BAD_ERASE_PARAM ((uint32_t)0x08000000U) +#define SDMMC_OCR_WRITE_PROT_VIOLATION ((uint32_t)0x04000000U) +#define SDMMC_OCR_LOCK_UNLOCK_FAILED ((uint32_t)0x01000000U) +#define SDMMC_OCR_COM_CRC_FAILED ((uint32_t)0x00800000U) +#define SDMMC_OCR_ILLEGAL_CMD ((uint32_t)0x00400000U) +#define SDMMC_OCR_CARD_ECC_FAILED ((uint32_t)0x00200000U) +#define SDMMC_OCR_CC_ERROR ((uint32_t)0x00100000U) +#define SDMMC_OCR_GENERAL_UNKNOWN_ERROR ((uint32_t)0x00080000U) +#define SDMMC_OCR_STREAM_READ_UNDERRUN ((uint32_t)0x00040000U) +#define SDMMC_OCR_STREAM_WRITE_OVERRUN ((uint32_t)0x00020000U) +#define SDMMC_OCR_CID_CSD_OVERWRITE ((uint32_t)0x00010000U) +#define SDMMC_OCR_WP_ERASE_SKIP ((uint32_t)0x00008000U) +#define SDMMC_OCR_CARD_ECC_DISABLED ((uint32_t)0x00004000U) +#define SDMMC_OCR_ERASE_RESET ((uint32_t)0x00002000U) +#define SDMMC_OCR_AKE_SEQ_ERROR ((uint32_t)0x00000008U) +#define SDMMC_OCR_ERRORBITS ((uint32_t)0xFDFFE008U) + +/** + * @brief Masks for R6 Response + */ +#define SDMMC_R6_GENERAL_UNKNOWN_ERROR ((uint32_t)0x00002000U) +#define SDMMC_R6_ILLEGAL_CMD ((uint32_t)0x00004000U) +#define SDMMC_R6_COM_CRC_FAILED ((uint32_t)0x00008000U) + +#define SDMMC_VOLTAGE_WINDOW_SD ((uint32_t)0x80100000U) +#define SDMMC_HIGH_CAPACITY ((uint32_t)0x40000000U) +#define SDMMC_STD_CAPACITY ((uint32_t)0x00000000U) +#define SDMMC_CHECK_PATTERN ((uint32_t)0x000001AAU) +#define SD_SWITCH_1_8V_CAPACITY ((uint32_t)0x01000000U) + +#define SDMMC_MAX_VOLT_TRIAL ((uint32_t)0x0000FFFFU) + +#define SDMMC_MAX_TRIAL ((uint32_t)0x0000FFFFU) + +#define SDMMC_ALLZERO ((uint32_t)0x00000000U) + +#define SDMMC_WIDE_BUS_SUPPORT ((uint32_t)0x00040000U) +#define SDMMC_SINGLE_BUS_SUPPORT ((uint32_t)0x00010000U) +#define SDMMC_CARD_LOCKED ((uint32_t)0x02000000U) + +#define SDMMC_DATATIMEOUT ((uint32_t)0xFFFFFFFFU) + +#define SDMMC_0TO7BITS ((uint32_t)0x000000FFU) +#define SDMMC_8TO15BITS ((uint32_t)0x0000FF00U) +#define SDMMC_16TO23BITS ((uint32_t)0x00FF0000U) +#define SDMMC_24TO31BITS ((uint32_t)0xFF000000U) +#define SDMMC_MAX_DATA_LENGTH ((uint32_t)0x01FFFFFFU) + +#define SDMMC_HALFFIFO ((uint32_t)0x00000008U) +#define SDMMC_HALFFIFOBYTES ((uint32_t)0x00000020U) + +/** + * @brief Command Class supported + */ +#define SDIO_CCCC_ERASE ((uint32_t)0x00000020U) + +#define SDIO_CMDTIMEOUT ((uint32_t)5000U) /* Command send and response timeout */ +#define SDIO_MAXERASETIMEOUT ((uint32_t)63000U) /* Max erase Timeout 63 s */ +#define SDIO_STOPTRANSFERTIMEOUT ((uint32_t)100000000U) /* Timeout for STOP TRANSMISSION command */ + +/** @defgroup SDIO_LL_Clock_Edge Clock Edge + * @{ + */ +#define SDIO_CLOCK_EDGE_RISING ((uint32_t)0x00000000U) +#define SDIO_CLOCK_EDGE_FALLING SDIO_CLKCR_NEGEDGE + +#define IS_SDIO_CLOCK_EDGE(EDGE) (((EDGE) == SDIO_CLOCK_EDGE_RISING) || \ + ((EDGE) == SDIO_CLOCK_EDGE_FALLING)) +/** + * @} + */ + +/** @defgroup SDIO_LL_Clock_Bypass Clock Bypass + * @{ + */ +#define SDIO_CLOCK_BYPASS_DISABLE ((uint32_t)0x00000000U) +#define SDIO_CLOCK_BYPASS_ENABLE SDIO_CLKCR_BYPASS + +#define IS_SDIO_CLOCK_BYPASS(BYPASS) (((BYPASS) == SDIO_CLOCK_BYPASS_DISABLE) || \ + ((BYPASS) == SDIO_CLOCK_BYPASS_ENABLE)) +/** + * @} + */ + +/** @defgroup SDIO_LL_Clock_Power_Save Clock Power Saving + * @{ + */ +#define SDIO_CLOCK_POWER_SAVE_DISABLE ((uint32_t)0x00000000U) +#define SDIO_CLOCK_POWER_SAVE_ENABLE SDIO_CLKCR_PWRSAV + +#define IS_SDIO_CLOCK_POWER_SAVE(SAVE) (((SAVE) == SDIO_CLOCK_POWER_SAVE_DISABLE) || \ + ((SAVE) == SDIO_CLOCK_POWER_SAVE_ENABLE)) +/** + * @} + */ + +/** @defgroup SDIO_LL_Bus_Wide Bus Width + * @{ + */ +#define SDIO_BUS_WIDE_1B ((uint32_t)0x00000000U) +#define SDIO_BUS_WIDE_4B SDIO_CLKCR_WIDBUS_0 +#define SDIO_BUS_WIDE_8B SDIO_CLKCR_WIDBUS_1 + +#define IS_SDIO_BUS_WIDE(WIDE) (((WIDE) == SDIO_BUS_WIDE_1B) || \ + ((WIDE) == SDIO_BUS_WIDE_4B) || \ + ((WIDE) == SDIO_BUS_WIDE_8B)) +/** + * @} + */ + +/** @defgroup SDIO_LL_Hardware_Flow_Control Hardware Flow Control + * @{ + */ +#define SDIO_HARDWARE_FLOW_CONTROL_DISABLE ((uint32_t)0x00000000U) +#define SDIO_HARDWARE_FLOW_CONTROL_ENABLE SDIO_CLKCR_HWFC_EN + +#define IS_SDIO_HARDWARE_FLOW_CONTROL(CONTROL) (((CONTROL) == SDIO_HARDWARE_FLOW_CONTROL_DISABLE) || \ + ((CONTROL) == SDIO_HARDWARE_FLOW_CONTROL_ENABLE)) +/** + * @} + */ + +/** @defgroup SDIO_LL_Clock_Division Clock Division + * @{ + */ +#define IS_SDIO_CLKDIV(DIV) ((DIV) <= 0xFFU) +/** + * @} + */ + +/** @defgroup SDIO_LL_Command_Index Command Index + * @{ + */ +#define IS_SDIO_CMD_INDEX(INDEX) ((INDEX) < 0x40U) +/** + * @} + */ + +/** @defgroup SDIO_LL_Response_Type Response Type + * @{ + */ +#define SDIO_RESPONSE_NO ((uint32_t)0x00000000U) +#define SDIO_RESPONSE_SHORT SDIO_CMD_WAITRESP_0 +#define SDIO_RESPONSE_LONG SDIO_CMD_WAITRESP + +#define IS_SDIO_RESPONSE(RESPONSE) (((RESPONSE) == SDIO_RESPONSE_NO) || \ + ((RESPONSE) == SDIO_RESPONSE_SHORT) || \ + ((RESPONSE) == SDIO_RESPONSE_LONG)) +/** + * @} + */ + +/** @defgroup SDIO_LL_Wait_Interrupt_State Wait Interrupt + * @{ + */ +#define SDIO_WAIT_NO ((uint32_t)0x00000000U) +#define SDIO_WAIT_IT SDIO_CMD_WAITINT +#define SDIO_WAIT_PEND SDIO_CMD_WAITPEND + +#define IS_SDIO_WAIT(WAIT) (((WAIT) == SDIO_WAIT_NO) || \ + ((WAIT) == SDIO_WAIT_IT) || \ + ((WAIT) == SDIO_WAIT_PEND)) +/** + * @} + */ + +/** @defgroup SDIO_LL_CPSM_State CPSM State + * @{ + */ +#define SDIO_CPSM_DISABLE ((uint32_t)0x00000000U) +#define SDIO_CPSM_ENABLE SDIO_CMD_CPSMEN + +#define IS_SDIO_CPSM(CPSM) (((CPSM) == SDIO_CPSM_DISABLE) || \ + ((CPSM) == SDIO_CPSM_ENABLE)) +/** + * @} + */ + +/** @defgroup SDIO_LL_Response_Registers Response Register + * @{ + */ +#define SDIO_RESP1 ((uint32_t)0x00000000U) +#define SDIO_RESP2 ((uint32_t)0x00000004U) +#define SDIO_RESP3 ((uint32_t)0x00000008U) +#define SDIO_RESP4 ((uint32_t)0x0000000CU) + +#define IS_SDIO_RESP(RESP) (((RESP) == SDIO_RESP1) || \ + ((RESP) == SDIO_RESP2) || \ + ((RESP) == SDIO_RESP3) || \ + ((RESP) == SDIO_RESP4)) +/** + * @} + */ + +/** @defgroup SDIO_LL_Data_Length Data Lenght + * @{ + */ +#define IS_SDIO_DATA_LENGTH(LENGTH) ((LENGTH) <= 0x01FFFFFFU) +/** + * @} + */ + +/** @defgroup SDIO_LL_Data_Block_Size Data Block Size + * @{ + */ +#define SDIO_DATABLOCK_SIZE_1B ((uint32_t)0x00000000U) +#define SDIO_DATABLOCK_SIZE_2B SDIO_DCTRL_DBLOCKSIZE_0 +#define SDIO_DATABLOCK_SIZE_4B SDIO_DCTRL_DBLOCKSIZE_1 +#define SDIO_DATABLOCK_SIZE_8B (SDIO_DCTRL_DBLOCKSIZE_0|SDIO_DCTRL_DBLOCKSIZE_1) +#define SDIO_DATABLOCK_SIZE_16B SDIO_DCTRL_DBLOCKSIZE_2 +#define SDIO_DATABLOCK_SIZE_32B (SDIO_DCTRL_DBLOCKSIZE_0|SDIO_DCTRL_DBLOCKSIZE_2) +#define SDIO_DATABLOCK_SIZE_64B (SDIO_DCTRL_DBLOCKSIZE_1|SDIO_DCTRL_DBLOCKSIZE_2) +#define SDIO_DATABLOCK_SIZE_128B (SDIO_DCTRL_DBLOCKSIZE_0|SDIO_DCTRL_DBLOCKSIZE_1|SDIO_DCTRL_DBLOCKSIZE_2) +#define SDIO_DATABLOCK_SIZE_256B SDIO_DCTRL_DBLOCKSIZE_3 +#define SDIO_DATABLOCK_SIZE_512B (SDIO_DCTRL_DBLOCKSIZE_0|SDIO_DCTRL_DBLOCKSIZE_3) +#define SDIO_DATABLOCK_SIZE_1024B (SDIO_DCTRL_DBLOCKSIZE_1|SDIO_DCTRL_DBLOCKSIZE_3) +#define SDIO_DATABLOCK_SIZE_2048B (SDIO_DCTRL_DBLOCKSIZE_0|SDIO_DCTRL_DBLOCKSIZE_1|SDIO_DCTRL_DBLOCKSIZE_3) +#define SDIO_DATABLOCK_SIZE_4096B (SDIO_DCTRL_DBLOCKSIZE_2|SDIO_DCTRL_DBLOCKSIZE_3) +#define SDIO_DATABLOCK_SIZE_8192B (SDIO_DCTRL_DBLOCKSIZE_0|SDIO_DCTRL_DBLOCKSIZE_2|SDIO_DCTRL_DBLOCKSIZE_3) +#define SDIO_DATABLOCK_SIZE_16384B (SDIO_DCTRL_DBLOCKSIZE_1|SDIO_DCTRL_DBLOCKSIZE_2|SDIO_DCTRL_DBLOCKSIZE_3) + +#define IS_SDIO_BLOCK_SIZE(SIZE) (((SIZE) == SDIO_DATABLOCK_SIZE_1B) || \ + ((SIZE) == SDIO_DATABLOCK_SIZE_2B) || \ + ((SIZE) == SDIO_DATABLOCK_SIZE_4B) || \ + ((SIZE) == SDIO_DATABLOCK_SIZE_8B) || \ + ((SIZE) == SDIO_DATABLOCK_SIZE_16B) || \ + ((SIZE) == SDIO_DATABLOCK_SIZE_32B) || \ + ((SIZE) == SDIO_DATABLOCK_SIZE_64B) || \ + ((SIZE) == SDIO_DATABLOCK_SIZE_128B) || \ + ((SIZE) == SDIO_DATABLOCK_SIZE_256B) || \ + ((SIZE) == SDIO_DATABLOCK_SIZE_512B) || \ + ((SIZE) == SDIO_DATABLOCK_SIZE_1024B) || \ + ((SIZE) == SDIO_DATABLOCK_SIZE_2048B) || \ + ((SIZE) == SDIO_DATABLOCK_SIZE_4096B) || \ + ((SIZE) == SDIO_DATABLOCK_SIZE_8192B) || \ + ((SIZE) == SDIO_DATABLOCK_SIZE_16384B)) +/** + * @} + */ + +/** @defgroup SDIO_LL_Transfer_Direction Transfer Direction + * @{ + */ +#define SDIO_TRANSFER_DIR_TO_CARD ((uint32_t)0x00000000U) +#define SDIO_TRANSFER_DIR_TO_SDIO SDIO_DCTRL_DTDIR + +#define IS_SDIO_TRANSFER_DIR(DIR) (((DIR) == SDIO_TRANSFER_DIR_TO_CARD) || \ + ((DIR) == SDIO_TRANSFER_DIR_TO_SDIO)) +/** + * @} + */ + +/** @defgroup SDIO_LL_Transfer_Type Transfer Type + * @{ + */ +#define SDIO_TRANSFER_MODE_BLOCK ((uint32_t)0x00000000U) +#define SDIO_TRANSFER_MODE_STREAM SDIO_DCTRL_DTMODE + +#define IS_SDIO_TRANSFER_MODE(MODE) (((MODE) == SDIO_TRANSFER_MODE_BLOCK) || \ + ((MODE) == SDIO_TRANSFER_MODE_STREAM)) +/** + * @} + */ + +/** @defgroup SDIO_LL_DPSM_State DPSM State + * @{ + */ +#define SDIO_DPSM_DISABLE ((uint32_t)0x00000000U) +#define SDIO_DPSM_ENABLE SDIO_DCTRL_DTEN + +#define IS_SDIO_DPSM(DPSM) (((DPSM) == SDIO_DPSM_DISABLE) ||\ + ((DPSM) == SDIO_DPSM_ENABLE)) +/** + * @} + */ + +/** @defgroup SDIO_LL_Read_Wait_Mode Read Wait Mode + * @{ + */ +#define SDIO_READ_WAIT_MODE_DATA2 ((uint32_t)0x00000000U) +#define SDIO_READ_WAIT_MODE_CLK (SDIO_DCTRL_RWMOD) + +#define IS_SDIO_READWAIT_MODE(MODE) (((MODE) == SDIO_READ_WAIT_MODE_CLK) || \ + ((MODE) == SDIO_READ_WAIT_MODE_DATA2)) +/** + * @} + */ + +/** @defgroup SDIO_LL_Interrupt_sources Interrupt Sources + * @{ + */ +#define SDIO_IT_CCRCFAIL SDIO_MASK_CCRCFAILIE +#define SDIO_IT_DCRCFAIL SDIO_MASK_DCRCFAILIE +#define SDIO_IT_CTIMEOUT SDIO_MASK_CTIMEOUTIE +#define SDIO_IT_DTIMEOUT SDIO_MASK_DTIMEOUTIE +#define SDIO_IT_TXUNDERR SDIO_MASK_TXUNDERRIE +#define SDIO_IT_RXOVERR SDIO_MASK_RXOVERRIE +#define SDIO_IT_CMDREND SDIO_MASK_CMDRENDIE +#define SDIO_IT_CMDSENT SDIO_MASK_CMDSENTIE +#define SDIO_IT_DATAEND SDIO_MASK_DATAENDIE +#define SDIO_IT_STBITERR SDIO_MASK_STBITERRIE +#define SDIO_IT_DBCKEND SDIO_MASK_DBCKENDIE +#define SDIO_IT_CMDACT SDIO_MASK_CMDACTIE +#define SDIO_IT_TXACT SDIO_MASK_TXACTIE +#define SDIO_IT_RXACT SDIO_MASK_RXACTIE +#define SDIO_IT_TXFIFOHE SDIO_MASK_TXFIFOHEIE +#define SDIO_IT_RXFIFOHF SDIO_MASK_RXFIFOHFIE +#define SDIO_IT_TXFIFOF SDIO_MASK_TXFIFOFIE +#define SDIO_IT_RXFIFOF SDIO_MASK_RXFIFOFIE +#define SDIO_IT_TXFIFOE SDIO_MASK_TXFIFOEIE +#define SDIO_IT_RXFIFOE SDIO_MASK_RXFIFOEIE +#define SDIO_IT_TXDAVL SDIO_MASK_TXDAVLIE +#define SDIO_IT_RXDAVL SDIO_MASK_RXDAVLIE +#define SDIO_IT_SDIOIT SDIO_MASK_SDIOITIE +#define SDIO_IT_CEATAEND SDIO_MASK_CEATAENDIE +/** + * @} + */ + +/** @defgroup SDIO_LL_Flags Flags + * @{ + */ +#define SDIO_FLAG_CCRCFAIL SDIO_STA_CCRCFAIL +#define SDIO_FLAG_DCRCFAIL SDIO_STA_DCRCFAIL +#define SDIO_FLAG_CTIMEOUT SDIO_STA_CTIMEOUT +#define SDIO_FLAG_DTIMEOUT SDIO_STA_DTIMEOUT +#define SDIO_FLAG_TXUNDERR SDIO_STA_TXUNDERR +#define SDIO_FLAG_RXOVERR SDIO_STA_RXOVERR +#define SDIO_FLAG_CMDREND SDIO_STA_CMDREND +#define SDIO_FLAG_CMDSENT SDIO_STA_CMDSENT +#define SDIO_FLAG_DATAEND SDIO_STA_DATAEND +#define SDIO_FLAG_STBITERR SDIO_STA_STBITERR +#define SDIO_FLAG_DBCKEND SDIO_STA_DBCKEND +#define SDIO_FLAG_CMDACT SDIO_STA_CMDACT +#define SDIO_FLAG_TXACT SDIO_STA_TXACT +#define SDIO_FLAG_RXACT SDIO_STA_RXACT +#define SDIO_FLAG_TXFIFOHE SDIO_STA_TXFIFOHE +#define SDIO_FLAG_RXFIFOHF SDIO_STA_RXFIFOHF +#define SDIO_FLAG_TXFIFOF SDIO_STA_TXFIFOF +#define SDIO_FLAG_RXFIFOF SDIO_STA_RXFIFOF +#define SDIO_FLAG_TXFIFOE SDIO_STA_TXFIFOE +#define SDIO_FLAG_RXFIFOE SDIO_STA_RXFIFOE +#define SDIO_FLAG_TXDAVL SDIO_STA_TXDAVL +#define SDIO_FLAG_RXDAVL SDIO_STA_RXDAVL +#define SDIO_FLAG_SDIOIT SDIO_STA_SDIOIT +#define SDIO_FLAG_CEATAEND SDIO_STA_CEATAEND +#define SDIO_STATIC_FLAGS ((uint32_t)(SDIO_FLAG_CCRCFAIL | SDIO_FLAG_DCRCFAIL | SDIO_FLAG_CTIMEOUT |\ + SDIO_FLAG_DTIMEOUT | SDIO_FLAG_TXUNDERR | SDIO_FLAG_RXOVERR |\ + SDIO_FLAG_CMDREND | SDIO_FLAG_CMDSENT | SDIO_FLAG_DATAEND |\ + SDIO_FLAG_DBCKEND | SDIO_FLAG_SDIOIT)) + +#define SDIO_STATIC_CMD_FLAGS ((uint32_t)(SDIO_FLAG_CCRCFAIL | SDIO_FLAG_CTIMEOUT | SDIO_FLAG_CMDREND |\ + SDIO_FLAG_CMDSENT)) + +#define SDIO_STATIC_DATA_FLAGS ((uint32_t)(SDIO_FLAG_DCRCFAIL | SDIO_FLAG_DTIMEOUT | SDIO_FLAG_TXUNDERR |\ + SDIO_FLAG_RXOVERR | SDIO_FLAG_DATAEND | SDIO_FLAG_DBCKEND)) +/** + * @} + */ + +/** + * @} + */ + +/* Exported macro ------------------------------------------------------------*/ +/** @defgroup SDIO_LL_Exported_macros SDIO_LL Exported Macros + * @{ + */ + +/** @defgroup SDMMC_LL_Alias_Region Bit Address in the alias region + * @{ + */ +/* ------------ SDIO registers bit address in the alias region -------------- */ +#define SDIO_OFFSET (SDIO_BASE - PERIPH_BASE) + +/* --- CLKCR Register ---*/ +/* Alias word address of CLKEN bit */ +#define CLKCR_OFFSET (SDIO_OFFSET + 0x04U) +#define CLKEN_BITNUMBER 0x08U +#define CLKCR_CLKEN_BB (PERIPH_BB_BASE + (CLKCR_OFFSET * 32U) + (CLKEN_BITNUMBER * 4U)) + +/* --- CMD Register ---*/ +/* Alias word address of SDIOSUSPEND bit */ +#define CMD_OFFSET (SDIO_OFFSET + 0x0CU) +#define SDIOSUSPEND_BITNUMBER 0x0BU +#define CMD_SDIOSUSPEND_BB (PERIPH_BB_BASE + (CMD_OFFSET * 32U) + (SDIOSUSPEND_BITNUMBER * 4U)) + +/* Alias word address of ENCMDCOMPL bit */ +#define ENCMDCOMPL_BITNUMBER 0x0CU +#define CMD_ENCMDCOMPL_BB (PERIPH_BB_BASE + (CMD_OFFSET * 32U) + (ENCMDCOMPL_BITNUMBER * 4U)) + +/* Alias word address of NIEN bit */ +#define NIEN_BITNUMBER 0x0DU +#define CMD_NIEN_BB (PERIPH_BB_BASE + (CMD_OFFSET * 32U) + (NIEN_BITNUMBER * 4U)) + +/* Alias word address of ATACMD bit */ +#define ATACMD_BITNUMBER 0x0EU +#define CMD_ATACMD_BB (PERIPH_BB_BASE + (CMD_OFFSET * 32U) + (ATACMD_BITNUMBER * 4U)) + +/* --- DCTRL Register ---*/ +/* Alias word address of DMAEN bit */ +#define DCTRL_OFFSET (SDIO_OFFSET + 0x2CU) +#define DMAEN_BITNUMBER 0x03U +#define DCTRL_DMAEN_BB (PERIPH_BB_BASE + (DCTRL_OFFSET * 32U) + (DMAEN_BITNUMBER * 4U)) + +/* Alias word address of RWSTART bit */ +#define RWSTART_BITNUMBER 0x08U +#define DCTRL_RWSTART_BB (PERIPH_BB_BASE + (DCTRL_OFFSET * 32U) + (RWSTART_BITNUMBER * 4U)) + +/* Alias word address of RWSTOP bit */ +#define RWSTOP_BITNUMBER 0x09U +#define DCTRL_RWSTOP_BB (PERIPH_BB_BASE + (DCTRL_OFFSET * 32U) + (RWSTOP_BITNUMBER * 4U)) + +/* Alias word address of RWMOD bit */ +#define RWMOD_BITNUMBER 0x0AU +#define DCTRL_RWMOD_BB (PERIPH_BB_BASE + (DCTRL_OFFSET * 32U) + (RWMOD_BITNUMBER * 4U)) + +/* Alias word address of SDIOEN bit */ +#define SDIOEN_BITNUMBER 0x0BU +#define DCTRL_SDIOEN_BB (PERIPH_BB_BASE + (DCTRL_OFFSET * 32U) + (SDIOEN_BITNUMBER * 4U)) +/** + * @} + */ + +/** @defgroup SDIO_LL_Register Bits And Addresses Definitions + * @brief SDIO_LL registers bit address in the alias region + * @{ + */ +/* ---------------------- SDIO registers bit mask --------------------------- */ +/* --- CLKCR Register ---*/ +/* CLKCR register clear mask */ +#define CLKCR_CLEAR_MASK ((uint32_t)(SDIO_CLKCR_CLKDIV | SDIO_CLKCR_PWRSAV |\ + SDIO_CLKCR_BYPASS | SDIO_CLKCR_WIDBUS |\ + SDIO_CLKCR_NEGEDGE | SDIO_CLKCR_HWFC_EN)) + +/* --- DCTRL Register ---*/ +/* SDIO DCTRL Clear Mask */ +#define DCTRL_CLEAR_MASK ((uint32_t)(SDIO_DCTRL_DTEN | SDIO_DCTRL_DTDIR |\ + SDIO_DCTRL_DTMODE | SDIO_DCTRL_DBLOCKSIZE)) + +/* --- CMD Register ---*/ +/* CMD Register clear mask */ +#define CMD_CLEAR_MASK ((uint32_t)(SDIO_CMD_CMDINDEX | SDIO_CMD_WAITRESP |\ + SDIO_CMD_WAITINT | SDIO_CMD_WAITPEND |\ + SDIO_CMD_CPSMEN | SDIO_CMD_SDIOSUSPEND)) + +/* SDIO Initialization Frequency (400KHz max) */ +#define SDIO_INIT_CLK_DIV ((uint8_t)0x76) /* 48MHz / (SDMMC_INIT_CLK_DIV + 2) < 400KHz */ + +/* SDIO Data Transfer Frequency (25MHz max) */ +#define SDIO_TRANSFER_CLK_DIV ((uint8_t)0x4) +/** + * @} + */ + +/** @defgroup SDIO_LL_Interrupt_Clock Interrupt And Clock Configuration + * @brief macros to handle interrupts and specific clock configurations + * @{ + */ + +/** + * @brief Enable the SDIO device. + * @param __INSTANCE__: SDIO Instance + * @retval None + */ +#define __SDIO_ENABLE(__INSTANCE__) (*(__IO uint32_t *)CLKCR_CLKEN_BB = ENABLE) + +/** + * @brief Disable the SDIO device. + * @param __INSTANCE__: SDIO Instance + * @retval None + */ +#define __SDIO_DISABLE(__INSTANCE__) (*(__IO uint32_t *)CLKCR_CLKEN_BB = DISABLE) + +/** + * @brief Enable the SDIO DMA transfer. + * @param __INSTANCE__: SDIO Instance + * @retval None + */ +#define __SDIO_DMA_ENABLE(__INSTANCE__) (*(__IO uint32_t *)DCTRL_DMAEN_BB = ENABLE) + +/** + * @brief Disable the SDIO DMA transfer. + * @param __INSTANCE__: SDIO Instance + * @retval None + */ +#define __SDIO_DMA_DISABLE(__INSTANCE__) (*(__IO uint32_t *)DCTRL_DMAEN_BB = DISABLE) + +/** + * @brief Enable the SDIO device interrupt. + * @param __INSTANCE__ : Pointer to SDIO register base + * @param __INTERRUPT__ : specifies the SDIO interrupt sources to be enabled. + * This parameter can be one or a combination of the following values: + * @arg SDIO_IT_CCRCFAIL: Command response received (CRC check failed) interrupt + * @arg SDIO_IT_DCRCFAIL: Data block sent/received (CRC check failed) interrupt + * @arg SDIO_IT_CTIMEOUT: Command response timeout interrupt + * @arg SDIO_IT_DTIMEOUT: Data timeout interrupt + * @arg SDIO_IT_TXUNDERR: Transmit FIFO underrun error interrupt + * @arg SDIO_IT_RXOVERR: Received FIFO overrun error interrupt + * @arg SDIO_IT_CMDREND: Command response received (CRC check passed) interrupt + * @arg SDIO_IT_CMDSENT: Command sent (no response required) interrupt + * @arg SDIO_IT_DATAEND: Data end (data counter, DATACOUNT, is zero) interrupt + * @arg SDIO_IT_DBCKEND: Data block sent/received (CRC check passed) interrupt + * @arg SDIO_IT_CMDACT: Command transfer in progress interrupt + * @arg SDIO_IT_TXACT: Data transmit in progress interrupt + * @arg SDIO_IT_RXACT: Data receive in progress interrupt + * @arg SDIO_IT_TXFIFOHE: Transmit FIFO Half Empty interrupt + * @arg SDIO_IT_RXFIFOHF: Receive FIFO Half Full interrupt + * @arg SDIO_IT_TXFIFOF: Transmit FIFO full interrupt + * @arg SDIO_IT_RXFIFOF: Receive FIFO full interrupt + * @arg SDIO_IT_TXFIFOE: Transmit FIFO empty interrupt + * @arg SDIO_IT_RXFIFOE: Receive FIFO empty interrupt + * @arg SDIO_IT_TXDAVL: Data available in transmit FIFO interrupt + * @arg SDIO_IT_RXDAVL: Data available in receive FIFO interrupt + * @arg SDIO_IT_SDIOIT: SDIO interrupt received interrupt + * @retval None + */ +#define __SDIO_ENABLE_IT(__INSTANCE__, __INTERRUPT__) ((__INSTANCE__)->MASK |= (__INTERRUPT__)) + +/** + * @brief Disable the SDIO device interrupt. + * @param __INSTANCE__ : Pointer to SDIO register base + * @param __INTERRUPT__ : specifies the SDIO interrupt sources to be disabled. + * This parameter can be one or a combination of the following values: + * @arg SDIO_IT_CCRCFAIL: Command response received (CRC check failed) interrupt + * @arg SDIO_IT_DCRCFAIL: Data block sent/received (CRC check failed) interrupt + * @arg SDIO_IT_CTIMEOUT: Command response timeout interrupt + * @arg SDIO_IT_DTIMEOUT: Data timeout interrupt + * @arg SDIO_IT_TXUNDERR: Transmit FIFO underrun error interrupt + * @arg SDIO_IT_RXOVERR: Received FIFO overrun error interrupt + * @arg SDIO_IT_CMDREND: Command response received (CRC check passed) interrupt + * @arg SDIO_IT_CMDSENT: Command sent (no response required) interrupt + * @arg SDIO_IT_DATAEND: Data end (data counter, DATACOUNT, is zero) interrupt + * @arg SDIO_IT_DBCKEND: Data block sent/received (CRC check passed) interrupt + * @arg SDIO_IT_CMDACT: Command transfer in progress interrupt + * @arg SDIO_IT_TXACT: Data transmit in progress interrupt + * @arg SDIO_IT_RXACT: Data receive in progress interrupt + * @arg SDIO_IT_TXFIFOHE: Transmit FIFO Half Empty interrupt + * @arg SDIO_IT_RXFIFOHF: Receive FIFO Half Full interrupt + * @arg SDIO_IT_TXFIFOF: Transmit FIFO full interrupt + * @arg SDIO_IT_RXFIFOF: Receive FIFO full interrupt + * @arg SDIO_IT_TXFIFOE: Transmit FIFO empty interrupt + * @arg SDIO_IT_RXFIFOE: Receive FIFO empty interrupt + * @arg SDIO_IT_TXDAVL: Data available in transmit FIFO interrupt + * @arg SDIO_IT_RXDAVL: Data available in receive FIFO interrupt + * @arg SDIO_IT_SDIOIT: SDIO interrupt received interrupt + * @retval None + */ +#define __SDIO_DISABLE_IT(__INSTANCE__, __INTERRUPT__) ((__INSTANCE__)->MASK &= ~(__INTERRUPT__)) + +/** + * @brief Checks whether the specified SDIO flag is set or not. + * @param __INSTANCE__ : Pointer to SDIO register base + * @param __FLAG__: specifies the flag to check. + * This parameter can be one of the following values: + * @arg SDIO_FLAG_CCRCFAIL: Command response received (CRC check failed) + * @arg SDIO_FLAG_DCRCFAIL: Data block sent/received (CRC check failed) + * @arg SDIO_FLAG_CTIMEOUT: Command response timeout + * @arg SDIO_FLAG_DTIMEOUT: Data timeout + * @arg SDIO_FLAG_TXUNDERR: Transmit FIFO underrun error + * @arg SDIO_FLAG_RXOVERR: Received FIFO overrun error + * @arg SDIO_FLAG_CMDREND: Command response received (CRC check passed) + * @arg SDIO_FLAG_CMDSENT: Command sent (no response required) + * @arg SDIO_FLAG_DATAEND: Data end (data counter, DATACOUNT, is zero) + * @arg SDIO_FLAG_DBCKEND: Data block sent/received (CRC check passed) + * @arg SDIO_FLAG_CMDACT: Command transfer in progress + * @arg SDIO_FLAG_TXACT: Data transmit in progress + * @arg SDIO_FLAG_RXACT: Data receive in progress + * @arg SDIO_FLAG_TXFIFOHE: Transmit FIFO Half Empty + * @arg SDIO_FLAG_RXFIFOHF: Receive FIFO Half Full + * @arg SDIO_FLAG_TXFIFOF: Transmit FIFO full + * @arg SDIO_FLAG_RXFIFOF: Receive FIFO full + * @arg SDIO_FLAG_TXFIFOE: Transmit FIFO empty + * @arg SDIO_FLAG_RXFIFOE: Receive FIFO empty + * @arg SDIO_FLAG_TXDAVL: Data available in transmit FIFO + * @arg SDIO_FLAG_RXDAVL: Data available in receive FIFO + * @arg SDIO_FLAG_SDIOIT: SDIO interrupt received + * @retval The new state of SDIO_FLAG (SET or RESET). + */ +#define __SDIO_GET_FLAG(__INSTANCE__, __FLAG__) (((__INSTANCE__)->STA &(__FLAG__)) != 0U) + + +/** + * @brief Clears the SDIO pending flags. + * @param __INSTANCE__ : Pointer to SDIO register base + * @param __FLAG__: specifies the flag to clear. + * This parameter can be one or a combination of the following values: + * @arg SDIO_FLAG_CCRCFAIL: Command response received (CRC check failed) + * @arg SDIO_FLAG_DCRCFAIL: Data block sent/received (CRC check failed) + * @arg SDIO_FLAG_CTIMEOUT: Command response timeout + * @arg SDIO_FLAG_DTIMEOUT: Data timeout + * @arg SDIO_FLAG_TXUNDERR: Transmit FIFO underrun error + * @arg SDIO_FLAG_RXOVERR: Received FIFO overrun error + * @arg SDIO_FLAG_CMDREND: Command response received (CRC check passed) + * @arg SDIO_FLAG_CMDSENT: Command sent (no response required) + * @arg SDIO_FLAG_DATAEND: Data end (data counter, DATACOUNT, is zero) + * @arg SDIO_FLAG_DBCKEND: Data block sent/received (CRC check passed) + * @arg SDIO_FLAG_SDIOIT: SDIO interrupt received + * @retval None + */ +#define __SDIO_CLEAR_FLAG(__INSTANCE__, __FLAG__) ((__INSTANCE__)->ICR = (__FLAG__)) + +/** + * @brief Checks whether the specified SDIO interrupt has occurred or not. + * @param __INSTANCE__ : Pointer to SDIO register base + * @param __INTERRUPT__: specifies the SDIO interrupt source to check. + * This parameter can be one of the following values: + * @arg SDIO_IT_CCRCFAIL: Command response received (CRC check failed) interrupt + * @arg SDIO_IT_DCRCFAIL: Data block sent/received (CRC check failed) interrupt + * @arg SDIO_IT_CTIMEOUT: Command response timeout interrupt + * @arg SDIO_IT_DTIMEOUT: Data timeout interrupt + * @arg SDIO_IT_TXUNDERR: Transmit FIFO underrun error interrupt + * @arg SDIO_IT_RXOVERR: Received FIFO overrun error interrupt + * @arg SDIO_IT_CMDREND: Command response received (CRC check passed) interrupt + * @arg SDIO_IT_CMDSENT: Command sent (no response required) interrupt + * @arg SDIO_IT_DATAEND: Data end (data counter, DATACOUNT, is zero) interrupt + * @arg SDIO_IT_DBCKEND: Data block sent/received (CRC check passed) interrupt + * @arg SDIO_IT_CMDACT: Command transfer in progress interrupt + * @arg SDIO_IT_TXACT: Data transmit in progress interrupt + * @arg SDIO_IT_RXACT: Data receive in progress interrupt + * @arg SDIO_IT_TXFIFOHE: Transmit FIFO Half Empty interrupt + * @arg SDIO_IT_RXFIFOHF: Receive FIFO Half Full interrupt + * @arg SDIO_IT_TXFIFOF: Transmit FIFO full interrupt + * @arg SDIO_IT_RXFIFOF: Receive FIFO full interrupt + * @arg SDIO_IT_TXFIFOE: Transmit FIFO empty interrupt + * @arg SDIO_IT_RXFIFOE: Receive FIFO empty interrupt + * @arg SDIO_IT_TXDAVL: Data available in transmit FIFO interrupt + * @arg SDIO_IT_RXDAVL: Data available in receive FIFO interrupt + * @arg SDIO_IT_SDIOIT: SDIO interrupt received interrupt + * @retval The new state of SDIO_IT (SET or RESET). + */ +#define __SDIO_GET_IT (__INSTANCE__, __INTERRUPT__) (((__INSTANCE__)->STA &(__INTERRUPT__)) == (__INTERRUPT__)) + +/** + * @brief Clears the SDIO's interrupt pending bits. + * @param __INSTANCE__ : Pointer to SDIO register base + * @param __INTERRUPT__: specifies the interrupt pending bit to clear. + * This parameter can be one or a combination of the following values: + * @arg SDIO_IT_CCRCFAIL: Command response received (CRC check failed) interrupt + * @arg SDIO_IT_DCRCFAIL: Data block sent/received (CRC check failed) interrupt + * @arg SDIO_IT_CTIMEOUT: Command response timeout interrupt + * @arg SDIO_IT_DTIMEOUT: Data timeout interrupt + * @arg SDIO_IT_TXUNDERR: Transmit FIFO underrun error interrupt + * @arg SDIO_IT_RXOVERR: Received FIFO overrun error interrupt + * @arg SDIO_IT_CMDREND: Command response received (CRC check passed) interrupt + * @arg SDIO_IT_CMDSENT: Command sent (no response required) interrupt + * @arg SDIO_IT_DATAEND: Data end (data counter, DATACOUNT, is zero) interrupt + * @arg SDIO_IT_SDIOIT: SDIO interrupt received interrupt + * @retval None + */ +#define __SDIO_CLEAR_IT(__INSTANCE__, __INTERRUPT__) ((__INSTANCE__)->ICR = (__INTERRUPT__)) + +/** + * @brief Enable Start the SD I/O Read Wait operation. + * @param __INSTANCE__ : Pointer to SDIO register base + * @retval None + */ +#define __SDIO_START_READWAIT_ENABLE(__INSTANCE__) (*(__IO uint32_t *) DCTRL_RWSTART_BB = ENABLE) + +/** + * @brief Disable Start the SD I/O Read Wait operations. + * @param __INSTANCE__ : Pointer to SDIO register base + * @retval None + */ +#define __SDIO_START_READWAIT_DISABLE(__INSTANCE__) (*(__IO uint32_t *) DCTRL_RWSTART_BB = DISABLE) + +/** + * @brief Enable Start the SD I/O Read Wait operation. + * @param __INSTANCE__ : Pointer to SDIO register base + * @retval None + */ +#define __SDIO_STOP_READWAIT_ENABLE(__INSTANCE__) (*(__IO uint32_t *) DCTRL_RWSTOP_BB = ENABLE) + +/** + * @brief Disable Stop the SD I/O Read Wait operations. + * @param __INSTANCE__ : Pointer to SDIO register base + * @retval None + */ +#define __SDIO_STOP_READWAIT_DISABLE(__INSTANCE__) (*(__IO uint32_t *) DCTRL_RWSTOP_BB = DISABLE) + +/** + * @brief Enable the SD I/O Mode Operation. + * @param __INSTANCE__ : Pointer to SDIO register base + * @retval None + */ +#define __SDIO_OPERATION_ENABLE(__INSTANCE__) (*(__IO uint32_t *) DCTRL_SDIOEN_BB = ENABLE) + +/** + * @brief Disable the SD I/O Mode Operation. + * @param __INSTANCE__ : Pointer to SDIO register base + * @retval None + */ +#define __SDIO_OPERATION_DISABLE(__INSTANCE__) (*(__IO uint32_t *) DCTRL_SDIOEN_BB = DISABLE) + +/** + * @brief Enable the SD I/O Suspend command sending. + * @param __INSTANCE__ : Pointer to SDIO register base + * @retval None + */ +#define __SDIO_SUSPEND_CMD_ENABLE(__INSTANCE__) (*(__IO uint32_t *) CMD_SDIOSUSPEND_BB = ENABLE) + +/** + * @brief Disable the SD I/O Suspend command sending. + * @param __INSTANCE__ : Pointer to SDIO register base + * @retval None + */ +#define __SDIO_SUSPEND_CMD_DISABLE(__INSTANCE__) (*(__IO uint32_t *) CMD_SDIOSUSPEND_BB = DISABLE) + +/** + * @brief Enable the command completion signal. + * @retval None + */ +#define __SDIO_CEATA_CMD_COMPLETION_ENABLE() (*(__IO uint32_t *) CMD_ENCMDCOMPL_BB = ENABLE) + +/** + * @brief Disable the command completion signal. + * @retval None + */ +#define __SDIO_CEATA_CMD_COMPLETION_DISABLE() (*(__IO uint32_t *) CMD_ENCMDCOMPL_BB = DISABLE) + +/** + * @brief Enable the CE-ATA interrupt. + * @retval None + */ +#define __SDIO_CEATA_ENABLE_IT() (*(__IO uint32_t *) CMD_NIEN_BB = (uint32_t)0U) + +/** + * @brief Disable the CE-ATA interrupt. + * @retval None + */ +#define __SDIO_CEATA_DISABLE_IT() (*(__IO uint32_t *) CMD_NIEN_BB = (uint32_t)1U) + +/** + * @brief Enable send CE-ATA command (CMD61). + * @retval None + */ +#define __SDIO_CEATA_SENDCMD_ENABLE() (*(__IO uint32_t *) CMD_ATACMD_BB = ENABLE) + +/** + * @brief Disable send CE-ATA command (CMD61). + * @retval None + */ +#define __SDIO_CEATA_SENDCMD_DISABLE() (*(__IO uint32_t *) CMD_ATACMD_BB = DISABLE) + +/** + * @} + */ + +/** + * @} + */ + +/* Exported functions --------------------------------------------------------*/ +/** @addtogroup SDMMC_LL_Exported_Functions + * @{ + */ + +/* Initialization/de-initialization functions **********************************/ +/** @addtogroup HAL_SDMMC_LL_Group1 + * @{ + */ +HAL_StatusTypeDef SDIO_Init(SDIO_TypeDef *SDIOx, SDIO_InitTypeDef Init); +/** + * @} + */ + +/* I/O operation functions *****************************************************/ +/** @addtogroup HAL_SDMMC_LL_Group2 + * @{ + */ +uint32_t SDIO_ReadFIFO(SDIO_TypeDef *SDIOx); +HAL_StatusTypeDef SDIO_WriteFIFO(SDIO_TypeDef *SDIOx, uint32_t *pWriteData); +/** + * @} + */ + +/* Peripheral Control functions ************************************************/ +/** @addtogroup HAL_SDMMC_LL_Group3 + * @{ + */ +HAL_StatusTypeDef SDIO_PowerState_ON(SDIO_TypeDef *SDIOx); +HAL_StatusTypeDef SDIO_PowerState_OFF(SDIO_TypeDef *SDIOx); +uint32_t SDIO_GetPowerState(SDIO_TypeDef *SDIOx); + +/* Command path state machine (CPSM) management functions */ +HAL_StatusTypeDef SDIO_SendCommand(SDIO_TypeDef *SDIOx, SDIO_CmdInitTypeDef *Command); +uint8_t SDIO_GetCommandResponse(SDIO_TypeDef *SDIOx); +uint32_t SDIO_GetResponse(SDIO_TypeDef *SDIOx, uint32_t Response); + +/* Data path state machine (DPSM) management functions */ +HAL_StatusTypeDef SDIO_ConfigData(SDIO_TypeDef *SDIOx, SDIO_DataInitTypeDef* Data); +uint32_t SDIO_GetDataCounter(SDIO_TypeDef *SDIOx); +uint32_t SDIO_GetFIFOCount(SDIO_TypeDef *SDIOx); + +/* SDMMC Cards mode management functions */ +HAL_StatusTypeDef SDIO_SetSDMMCReadWaitMode(SDIO_TypeDef *SDIOx, uint32_t SDIO_ReadWaitMode); + +/* SDMMC Commands management functions */ +uint32_t SDMMC_CmdBlockLength(SDIO_TypeDef *SDIOx, uint32_t BlockSize); +uint32_t SDMMC_CmdReadSingleBlock(SDIO_TypeDef *SDIOx, uint32_t ReadAdd); +uint32_t SDMMC_CmdReadMultiBlock(SDIO_TypeDef *SDIOx, uint32_t ReadAdd); +uint32_t SDMMC_CmdWriteSingleBlock(SDIO_TypeDef *SDIOx, uint32_t WriteAdd); +uint32_t SDMMC_CmdWriteMultiBlock(SDIO_TypeDef *SDIOx, uint32_t WriteAdd); +uint32_t SDMMC_CmdEraseStartAdd(SDIO_TypeDef *SDIOx, uint32_t StartAdd); +uint32_t SDMMC_CmdSDEraseStartAdd(SDIO_TypeDef *SDIOx, uint32_t StartAdd); +uint32_t SDMMC_CmdEraseEndAdd(SDIO_TypeDef *SDIOx, uint32_t EndAdd); +uint32_t SDMMC_CmdSDEraseEndAdd(SDIO_TypeDef *SDIOx, uint32_t EndAdd); +uint32_t SDMMC_CmdErase(SDIO_TypeDef *SDIOx); +uint32_t SDMMC_CmdStopTransfer(SDIO_TypeDef *SDIOx); +uint32_t SDMMC_CmdSelDesel(SDIO_TypeDef *SDIOx, uint64_t Addr); +uint32_t SDMMC_CmdGoIdleState(SDIO_TypeDef *SDIOx); +uint32_t SDMMC_CmdOperCond(SDIO_TypeDef *SDIOx); +uint32_t SDMMC_CmdAppCommand(SDIO_TypeDef *SDIOx, uint32_t Argument); +uint32_t SDMMC_CmdAppOperCommand(SDIO_TypeDef *SDIOx, uint32_t Argument); +uint32_t SDMMC_CmdBusWidth(SDIO_TypeDef *SDIOx, uint32_t BusWidth); +uint32_t SDMMC_CmdSendSCR(SDIO_TypeDef *SDIOx); +uint32_t SDMMC_CmdSendCID(SDIO_TypeDef *SDIOx); +uint32_t SDMMC_CmdSendCSD(SDIO_TypeDef *SDIOx, uint32_t Argument); +uint32_t SDMMC_CmdSetRelAdd(SDIO_TypeDef *SDIOx, uint16_t *pRCA); +uint32_t SDMMC_CmdSendStatus(SDIO_TypeDef *SDIOx, uint32_t Argument); +uint32_t SDMMC_CmdStatusRegister(SDIO_TypeDef *SDIOx); +uint32_t SDMMC_CmdOpCondition(SDIO_TypeDef *SDIOx, uint32_t Argument); +uint32_t SDMMC_CmdSwitch(SDIO_TypeDef *SDIOx, uint32_t Argument); + +/** + * @} + */ + +/** + * @} + */ + +/** + * @} + */ + +/** + * @} + */ + +#endif /* SDIO */ + +#ifdef __cplusplus +} +#endif + +#endif /* STM32F1xx_LL_SDMMC_H */ + +/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/ diff --git a/LLDrivers/inc/stm32f1xx_ll_spi.h b/LLDrivers/inc/stm32f1xx_ll_spi.h new file mode 100644 index 0000000..b456544 --- /dev/null +++ b/LLDrivers/inc/stm32f1xx_ll_spi.h @@ -0,0 +1,1938 @@ +/** + ****************************************************************************** + * @file stm32f1xx_ll_spi.h + * @author MCD Application Team + * @brief Header file of SPI LL module. + ****************************************************************************** + * @attention + * + *

© Copyright (c) 2016 STMicroelectronics. + * All rights reserved.

+ * + * This software component is licensed by ST under BSD 3-Clause license, + * the "License"; You may not use this file except in compliance with the + * License. You may obtain a copy of the License at: + * opensource.org/licenses/BSD-3-Clause + * + ****************************************************************************** + */ + +/* Define to prevent recursive inclusion -------------------------------------*/ +#ifndef STM32F1xx_LL_SPI_H +#define STM32F1xx_LL_SPI_H + +#ifdef __cplusplus +extern "C" { +#endif + +/* Includes ------------------------------------------------------------------*/ +#include "stm32f1xx.h" + +/** @addtogroup STM32F1xx_LL_Driver + * @{ + */ + +#if defined (SPI1) || defined (SPI2) || defined (SPI3) + +/** @defgroup SPI_LL SPI + * @{ + */ + +/* Private types -------------------------------------------------------------*/ +/* Private variables ---------------------------------------------------------*/ +/* Private macros ------------------------------------------------------------*/ + +/* Exported types ------------------------------------------------------------*/ +#if defined(USE_FULL_LL_DRIVER) +/** @defgroup SPI_LL_ES_INIT SPI Exported Init structure + * @{ + */ + +/** + * @brief SPI Init structures definition + */ +typedef struct +{ + uint32_t TransferDirection; /*!< Specifies the SPI unidirectional or bidirectional data mode. + This parameter can be a value of @ref SPI_LL_EC_TRANSFER_MODE. + + This feature can be modified afterwards using unitary function @ref LL_SPI_SetTransferDirection().*/ + + uint32_t Mode; /*!< Specifies the SPI mode (Master/Slave). + This parameter can be a value of @ref SPI_LL_EC_MODE. + + This feature can be modified afterwards using unitary function @ref LL_SPI_SetMode().*/ + + uint32_t DataWidth; /*!< Specifies the SPI data width. + This parameter can be a value of @ref SPI_LL_EC_DATAWIDTH. + + This feature can be modified afterwards using unitary function @ref LL_SPI_SetDataWidth().*/ + + uint32_t ClockPolarity; /*!< Specifies the serial clock steady state. + This parameter can be a value of @ref SPI_LL_EC_POLARITY. + + This feature can be modified afterwards using unitary function @ref LL_SPI_SetClockPolarity().*/ + + uint32_t ClockPhase; /*!< Specifies the clock active edge for the bit capture. + This parameter can be a value of @ref SPI_LL_EC_PHASE. + + This feature can be modified afterwards using unitary function @ref LL_SPI_SetClockPhase().*/ + + uint32_t NSS; /*!< Specifies whether the NSS signal is managed by hardware (NSS pin) or by software using the SSI bit. + This parameter can be a value of @ref SPI_LL_EC_NSS_MODE. + + This feature can be modified afterwards using unitary function @ref LL_SPI_SetNSSMode().*/ + + uint32_t BaudRate; /*!< Specifies the BaudRate prescaler value which will be used to configure the transmit and receive SCK clock. + This parameter can be a value of @ref SPI_LL_EC_BAUDRATEPRESCALER. + @note The communication clock is derived from the master clock. The slave clock does not need to be set. + + This feature can be modified afterwards using unitary function @ref LL_SPI_SetBaudRatePrescaler().*/ + + uint32_t BitOrder; /*!< Specifies whether data transfers start from MSB or LSB bit. + This parameter can be a value of @ref SPI_LL_EC_BIT_ORDER. + + This feature can be modified afterwards using unitary function @ref LL_SPI_SetTransferBitOrder().*/ + + uint32_t CRCCalculation; /*!< Specifies if the CRC calculation is enabled or not. + This parameter can be a value of @ref SPI_LL_EC_CRC_CALCULATION. + + This feature can be modified afterwards using unitary functions @ref LL_SPI_EnableCRC() and @ref LL_SPI_DisableCRC().*/ + + uint32_t CRCPoly; /*!< Specifies the polynomial used for the CRC calculation. + This parameter must be a number between Min_Data = 0x00 and Max_Data = 0xFFFF. + + This feature can be modified afterwards using unitary function @ref LL_SPI_SetCRCPolynomial().*/ + +} LL_SPI_InitTypeDef; + +/** + * @} + */ +#endif /* USE_FULL_LL_DRIVER */ + +/* Exported constants --------------------------------------------------------*/ +/** @defgroup SPI_LL_Exported_Constants SPI Exported Constants + * @{ + */ + +/** @defgroup SPI_LL_EC_GET_FLAG Get Flags Defines + * @brief Flags defines which can be used with LL_SPI_ReadReg function + * @{ + */ +#define LL_SPI_SR_RXNE SPI_SR_RXNE /*!< Rx buffer not empty flag */ +#define LL_SPI_SR_TXE SPI_SR_TXE /*!< Tx buffer empty flag */ +#define LL_SPI_SR_BSY SPI_SR_BSY /*!< Busy flag */ +#define LL_SPI_SR_CRCERR SPI_SR_CRCERR /*!< CRC error flag */ +#define LL_SPI_SR_MODF SPI_SR_MODF /*!< Mode fault flag */ +#define LL_SPI_SR_OVR SPI_SR_OVR /*!< Overrun flag */ +#define LL_SPI_SR_FRE SPI_SR_FRE /*!< TI mode frame format error flag */ +/** + * @} + */ + +/** @defgroup SPI_LL_EC_IT IT Defines + * @brief IT defines which can be used with LL_SPI_ReadReg and LL_SPI_WriteReg functions + * @{ + */ +#define LL_SPI_CR2_RXNEIE SPI_CR2_RXNEIE /*!< Rx buffer not empty interrupt enable */ +#define LL_SPI_CR2_TXEIE SPI_CR2_TXEIE /*!< Tx buffer empty interrupt enable */ +#define LL_SPI_CR2_ERRIE SPI_CR2_ERRIE /*!< Error interrupt enable */ +/** + * @} + */ + +/** @defgroup SPI_LL_EC_MODE Operation Mode + * @{ + */ +#define LL_SPI_MODE_MASTER (SPI_CR1_MSTR | SPI_CR1_SSI) /*!< Master configuration */ +#define LL_SPI_MODE_SLAVE 0x00000000U /*!< Slave configuration */ +/** + * @} + */ + + +/** @defgroup SPI_LL_EC_PHASE Clock Phase + * @{ + */ +#define LL_SPI_PHASE_1EDGE 0x00000000U /*!< First clock transition is the first data capture edge */ +#define LL_SPI_PHASE_2EDGE (SPI_CR1_CPHA) /*!< Second clock transition is the first data capture edge */ +/** + * @} + */ + +/** @defgroup SPI_LL_EC_POLARITY Clock Polarity + * @{ + */ +#define LL_SPI_POLARITY_LOW 0x00000000U /*!< Clock to 0 when idle */ +#define LL_SPI_POLARITY_HIGH (SPI_CR1_CPOL) /*!< Clock to 1 when idle */ +/** + * @} + */ + +/** @defgroup SPI_LL_EC_BAUDRATEPRESCALER Baud Rate Prescaler + * @{ + */ +#define LL_SPI_BAUDRATEPRESCALER_DIV2 0x00000000U /*!< BaudRate control equal to fPCLK/2 */ +#define LL_SPI_BAUDRATEPRESCALER_DIV4 (SPI_CR1_BR_0) /*!< BaudRate control equal to fPCLK/4 */ +#define LL_SPI_BAUDRATEPRESCALER_DIV8 (SPI_CR1_BR_1) /*!< BaudRate control equal to fPCLK/8 */ +#define LL_SPI_BAUDRATEPRESCALER_DIV16 (SPI_CR1_BR_1 | SPI_CR1_BR_0) /*!< BaudRate control equal to fPCLK/16 */ +#define LL_SPI_BAUDRATEPRESCALER_DIV32 (SPI_CR1_BR_2) /*!< BaudRate control equal to fPCLK/32 */ +#define LL_SPI_BAUDRATEPRESCALER_DIV64 (SPI_CR1_BR_2 | SPI_CR1_BR_0) /*!< BaudRate control equal to fPCLK/64 */ +#define LL_SPI_BAUDRATEPRESCALER_DIV128 (SPI_CR1_BR_2 | SPI_CR1_BR_1) /*!< BaudRate control equal to fPCLK/128 */ +#define LL_SPI_BAUDRATEPRESCALER_DIV256 (SPI_CR1_BR_2 | SPI_CR1_BR_1 | SPI_CR1_BR_0) /*!< BaudRate control equal to fPCLK/256 */ +/** + * @} + */ + +/** @defgroup SPI_LL_EC_BIT_ORDER Transmission Bit Order + * @{ + */ +#define LL_SPI_LSB_FIRST (SPI_CR1_LSBFIRST) /*!< Data is transmitted/received with the LSB first */ +#define LL_SPI_MSB_FIRST 0x00000000U /*!< Data is transmitted/received with the MSB first */ +/** + * @} + */ + +/** @defgroup SPI_LL_EC_TRANSFER_MODE Transfer Mode + * @{ + */ +#define LL_SPI_FULL_DUPLEX 0x00000000U /*!< Full-Duplex mode. Rx and Tx transfer on 2 lines */ +#define LL_SPI_SIMPLEX_RX (SPI_CR1_RXONLY) /*!< Simplex Rx mode. Rx transfer only on 1 line */ +#define LL_SPI_HALF_DUPLEX_RX (SPI_CR1_BIDIMODE) /*!< Half-Duplex Rx mode. Rx transfer on 1 line */ +#define LL_SPI_HALF_DUPLEX_TX (SPI_CR1_BIDIMODE | SPI_CR1_BIDIOE) /*!< Half-Duplex Tx mode. Tx transfer on 1 line */ +/** + * @} + */ + +/** @defgroup SPI_LL_EC_NSS_MODE Slave Select Pin Mode + * @{ + */ +#define LL_SPI_NSS_SOFT (SPI_CR1_SSM) /*!< NSS managed internally. NSS pin not used and free */ +#define LL_SPI_NSS_HARD_INPUT 0x00000000U /*!< NSS pin used in Input. Only used in Master mode */ +#define LL_SPI_NSS_HARD_OUTPUT (((uint32_t)SPI_CR2_SSOE << 16U)) /*!< NSS pin used in Output. Only used in Slave mode as chip select */ +/** + * @} + */ + +/** @defgroup SPI_LL_EC_DATAWIDTH Datawidth + * @{ + */ +#define LL_SPI_DATAWIDTH_8BIT 0x00000000U /*!< Data length for SPI transfer: 8 bits */ +#define LL_SPI_DATAWIDTH_16BIT (SPI_CR1_DFF) /*!< Data length for SPI transfer: 16 bits */ +/** + * @} + */ +#if defined(USE_FULL_LL_DRIVER) + +/** @defgroup SPI_LL_EC_CRC_CALCULATION CRC Calculation + * @{ + */ +#define LL_SPI_CRCCALCULATION_DISABLE 0x00000000U /*!< CRC calculation disabled */ +#define LL_SPI_CRCCALCULATION_ENABLE (SPI_CR1_CRCEN) /*!< CRC calculation enabled */ +/** + * @} + */ +#endif /* USE_FULL_LL_DRIVER */ + +/** + * @} + */ + +/* Exported macro ------------------------------------------------------------*/ +/** @defgroup SPI_LL_Exported_Macros SPI Exported Macros + * @{ + */ + +/** @defgroup SPI_LL_EM_WRITE_READ Common Write and read registers Macros + * @{ + */ + +/** + * @brief Write a value in SPI register + * @param __INSTANCE__ SPI Instance + * @param __REG__ Register to be written + * @param __VALUE__ Value to be written in the register + * @retval None + */ +#define LL_SPI_WriteReg(__INSTANCE__, __REG__, __VALUE__) WRITE_REG(__INSTANCE__->__REG__, (__VALUE__)) + +/** + * @brief Read a value in SPI register + * @param __INSTANCE__ SPI Instance + * @param __REG__ Register to be read + * @retval Register value + */ +#define LL_SPI_ReadReg(__INSTANCE__, __REG__) READ_REG(__INSTANCE__->__REG__) +/** + * @} + */ + +/** + * @} + */ + +/* Exported functions --------------------------------------------------------*/ +/** @defgroup SPI_LL_Exported_Functions SPI Exported Functions + * @{ + */ + +/** @defgroup SPI_LL_EF_Configuration Configuration + * @{ + */ + +/** + * @brief Enable SPI peripheral + * @rmtoll CR1 SPE LL_SPI_Enable + * @param SPIx SPI Instance + * @retval None + */ +__STATIC_INLINE void LL_SPI_Enable(SPI_TypeDef *SPIx) +{ + SET_BIT(SPIx->CR1, SPI_CR1_SPE); +} + +/** + * @brief Disable SPI peripheral + * @note When disabling the SPI, follow the procedure described in the Reference Manual. + * @rmtoll CR1 SPE LL_SPI_Disable + * @param SPIx SPI Instance + * @retval None + */ +__STATIC_INLINE void LL_SPI_Disable(SPI_TypeDef *SPIx) +{ + CLEAR_BIT(SPIx->CR1, SPI_CR1_SPE); +} + +/** + * @brief Check if SPI peripheral is enabled + * @rmtoll CR1 SPE LL_SPI_IsEnabled + * @param SPIx SPI Instance + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_SPI_IsEnabled(SPI_TypeDef *SPIx) +{ + return ((READ_BIT(SPIx->CR1, SPI_CR1_SPE) == (SPI_CR1_SPE)) ? 1UL : 0UL); +} + +/** + * @brief Set SPI operation mode to Master or Slave + * @note This bit should not be changed when communication is ongoing. + * @rmtoll CR1 MSTR LL_SPI_SetMode\n + * CR1 SSI LL_SPI_SetMode + * @param SPIx SPI Instance + * @param Mode This parameter can be one of the following values: + * @arg @ref LL_SPI_MODE_MASTER + * @arg @ref LL_SPI_MODE_SLAVE + * @retval None + */ +__STATIC_INLINE void LL_SPI_SetMode(SPI_TypeDef *SPIx, uint32_t Mode) +{ + MODIFY_REG(SPIx->CR1, SPI_CR1_MSTR | SPI_CR1_SSI, Mode); +} + +/** + * @brief Get SPI operation mode (Master or Slave) + * @rmtoll CR1 MSTR LL_SPI_GetMode\n + * CR1 SSI LL_SPI_GetMode + * @param SPIx SPI Instance + * @retval Returned value can be one of the following values: + * @arg @ref LL_SPI_MODE_MASTER + * @arg @ref LL_SPI_MODE_SLAVE + */ +__STATIC_INLINE uint32_t LL_SPI_GetMode(SPI_TypeDef *SPIx) +{ + return (uint32_t)(READ_BIT(SPIx->CR1, SPI_CR1_MSTR | SPI_CR1_SSI)); +} + + +/** + * @brief Set clock phase + * @note This bit should not be changed when communication is ongoing. + * This bit is not used in SPI TI mode. + * @rmtoll CR1 CPHA LL_SPI_SetClockPhase + * @param SPIx SPI Instance + * @param ClockPhase This parameter can be one of the following values: + * @arg @ref LL_SPI_PHASE_1EDGE + * @arg @ref LL_SPI_PHASE_2EDGE + * @retval None + */ +__STATIC_INLINE void LL_SPI_SetClockPhase(SPI_TypeDef *SPIx, uint32_t ClockPhase) +{ + MODIFY_REG(SPIx->CR1, SPI_CR1_CPHA, ClockPhase); +} + +/** + * @brief Get clock phase + * @rmtoll CR1 CPHA LL_SPI_GetClockPhase + * @param SPIx SPI Instance + * @retval Returned value can be one of the following values: + * @arg @ref LL_SPI_PHASE_1EDGE + * @arg @ref LL_SPI_PHASE_2EDGE + */ +__STATIC_INLINE uint32_t LL_SPI_GetClockPhase(SPI_TypeDef *SPIx) +{ + return (uint32_t)(READ_BIT(SPIx->CR1, SPI_CR1_CPHA)); +} + +/** + * @brief Set clock polarity + * @note This bit should not be changed when communication is ongoing. + * This bit is not used in SPI TI mode. + * @rmtoll CR1 CPOL LL_SPI_SetClockPolarity + * @param SPIx SPI Instance + * @param ClockPolarity This parameter can be one of the following values: + * @arg @ref LL_SPI_POLARITY_LOW + * @arg @ref LL_SPI_POLARITY_HIGH + * @retval None + */ +__STATIC_INLINE void LL_SPI_SetClockPolarity(SPI_TypeDef *SPIx, uint32_t ClockPolarity) +{ + MODIFY_REG(SPIx->CR1, SPI_CR1_CPOL, ClockPolarity); +} + +/** + * @brief Get clock polarity + * @rmtoll CR1 CPOL LL_SPI_GetClockPolarity + * @param SPIx SPI Instance + * @retval Returned value can be one of the following values: + * @arg @ref LL_SPI_POLARITY_LOW + * @arg @ref LL_SPI_POLARITY_HIGH + */ +__STATIC_INLINE uint32_t LL_SPI_GetClockPolarity(SPI_TypeDef *SPIx) +{ + return (uint32_t)(READ_BIT(SPIx->CR1, SPI_CR1_CPOL)); +} + +/** + * @brief Set baud rate prescaler + * @note These bits should not be changed when communication is ongoing. SPI BaudRate = fPCLK/Prescaler. + * @rmtoll CR1 BR LL_SPI_SetBaudRatePrescaler + * @param SPIx SPI Instance + * @param BaudRate This parameter can be one of the following values: + * @arg @ref LL_SPI_BAUDRATEPRESCALER_DIV2 + * @arg @ref LL_SPI_BAUDRATEPRESCALER_DIV4 + * @arg @ref LL_SPI_BAUDRATEPRESCALER_DIV8 + * @arg @ref LL_SPI_BAUDRATEPRESCALER_DIV16 + * @arg @ref LL_SPI_BAUDRATEPRESCALER_DIV32 + * @arg @ref LL_SPI_BAUDRATEPRESCALER_DIV64 + * @arg @ref LL_SPI_BAUDRATEPRESCALER_DIV128 + * @arg @ref LL_SPI_BAUDRATEPRESCALER_DIV256 + * @retval None + */ +__STATIC_INLINE void LL_SPI_SetBaudRatePrescaler(SPI_TypeDef *SPIx, uint32_t BaudRate) +{ + MODIFY_REG(SPIx->CR1, SPI_CR1_BR, BaudRate); +} + +/** + * @brief Get baud rate prescaler + * @rmtoll CR1 BR LL_SPI_GetBaudRatePrescaler + * @param SPIx SPI Instance + * @retval Returned value can be one of the following values: + * @arg @ref LL_SPI_BAUDRATEPRESCALER_DIV2 + * @arg @ref LL_SPI_BAUDRATEPRESCALER_DIV4 + * @arg @ref LL_SPI_BAUDRATEPRESCALER_DIV8 + * @arg @ref LL_SPI_BAUDRATEPRESCALER_DIV16 + * @arg @ref LL_SPI_BAUDRATEPRESCALER_DIV32 + * @arg @ref LL_SPI_BAUDRATEPRESCALER_DIV64 + * @arg @ref LL_SPI_BAUDRATEPRESCALER_DIV128 + * @arg @ref LL_SPI_BAUDRATEPRESCALER_DIV256 + */ +__STATIC_INLINE uint32_t LL_SPI_GetBaudRatePrescaler(SPI_TypeDef *SPIx) +{ + return (uint32_t)(READ_BIT(SPIx->CR1, SPI_CR1_BR)); +} + +/** + * @brief Set transfer bit order + * @note This bit should not be changed when communication is ongoing. This bit is not used in SPI TI mode. + * @rmtoll CR1 LSBFIRST LL_SPI_SetTransferBitOrder + * @param SPIx SPI Instance + * @param BitOrder This parameter can be one of the following values: + * @arg @ref LL_SPI_LSB_FIRST + * @arg @ref LL_SPI_MSB_FIRST + * @retval None + */ +__STATIC_INLINE void LL_SPI_SetTransferBitOrder(SPI_TypeDef *SPIx, uint32_t BitOrder) +{ + MODIFY_REG(SPIx->CR1, SPI_CR1_LSBFIRST, BitOrder); +} + +/** + * @brief Get transfer bit order + * @rmtoll CR1 LSBFIRST LL_SPI_GetTransferBitOrder + * @param SPIx SPI Instance + * @retval Returned value can be one of the following values: + * @arg @ref LL_SPI_LSB_FIRST + * @arg @ref LL_SPI_MSB_FIRST + */ +__STATIC_INLINE uint32_t LL_SPI_GetTransferBitOrder(SPI_TypeDef *SPIx) +{ + return (uint32_t)(READ_BIT(SPIx->CR1, SPI_CR1_LSBFIRST)); +} + +/** + * @brief Set transfer direction mode + * @note For Half-Duplex mode, Rx Direction is set by default. + * In master mode, the MOSI pin is used and in slave mode, the MISO pin is used for Half-Duplex. + * @rmtoll CR1 RXONLY LL_SPI_SetTransferDirection\n + * CR1 BIDIMODE LL_SPI_SetTransferDirection\n + * CR1 BIDIOE LL_SPI_SetTransferDirection + * @param SPIx SPI Instance + * @param TransferDirection This parameter can be one of the following values: + * @arg @ref LL_SPI_FULL_DUPLEX + * @arg @ref LL_SPI_SIMPLEX_RX + * @arg @ref LL_SPI_HALF_DUPLEX_RX + * @arg @ref LL_SPI_HALF_DUPLEX_TX + * @retval None + */ +__STATIC_INLINE void LL_SPI_SetTransferDirection(SPI_TypeDef *SPIx, uint32_t TransferDirection) +{ + MODIFY_REG(SPIx->CR1, SPI_CR1_RXONLY | SPI_CR1_BIDIMODE | SPI_CR1_BIDIOE, TransferDirection); +} + +/** + * @brief Get transfer direction mode + * @rmtoll CR1 RXONLY LL_SPI_GetTransferDirection\n + * CR1 BIDIMODE LL_SPI_GetTransferDirection\n + * CR1 BIDIOE LL_SPI_GetTransferDirection + * @param SPIx SPI Instance + * @retval Returned value can be one of the following values: + * @arg @ref LL_SPI_FULL_DUPLEX + * @arg @ref LL_SPI_SIMPLEX_RX + * @arg @ref LL_SPI_HALF_DUPLEX_RX + * @arg @ref LL_SPI_HALF_DUPLEX_TX + */ +__STATIC_INLINE uint32_t LL_SPI_GetTransferDirection(SPI_TypeDef *SPIx) +{ + return (uint32_t)(READ_BIT(SPIx->CR1, SPI_CR1_RXONLY | SPI_CR1_BIDIMODE | SPI_CR1_BIDIOE)); +} + +/** + * @brief Set frame data width + * @rmtoll CR1 DFF LL_SPI_SetDataWidth + * @param SPIx SPI Instance + * @param DataWidth This parameter can be one of the following values: + * @arg @ref LL_SPI_DATAWIDTH_8BIT + * @arg @ref LL_SPI_DATAWIDTH_16BIT + * @retval None + */ +__STATIC_INLINE void LL_SPI_SetDataWidth(SPI_TypeDef *SPIx, uint32_t DataWidth) +{ + MODIFY_REG(SPIx->CR1, SPI_CR1_DFF, DataWidth); +} + +/** + * @brief Get frame data width + * @rmtoll CR1 DFF LL_SPI_GetDataWidth + * @param SPIx SPI Instance + * @retval Returned value can be one of the following values: + * @arg @ref LL_SPI_DATAWIDTH_8BIT + * @arg @ref LL_SPI_DATAWIDTH_16BIT + */ +__STATIC_INLINE uint32_t LL_SPI_GetDataWidth(SPI_TypeDef *SPIx) +{ + return (uint32_t)(READ_BIT(SPIx->CR1, SPI_CR1_DFF)); +} + +/** + * @} + */ + +/** @defgroup SPI_LL_EF_CRC_Management CRC Management + * @{ + */ + +/** + * @brief Enable CRC + * @note This bit should be written only when SPI is disabled (SPE = 0) for correct operation. + * @rmtoll CR1 CRCEN LL_SPI_EnableCRC + * @param SPIx SPI Instance + * @retval None + */ +__STATIC_INLINE void LL_SPI_EnableCRC(SPI_TypeDef *SPIx) +{ + SET_BIT(SPIx->CR1, SPI_CR1_CRCEN); +} + +/** + * @brief Disable CRC + * @note This bit should be written only when SPI is disabled (SPE = 0) for correct operation. + * @rmtoll CR1 CRCEN LL_SPI_DisableCRC + * @param SPIx SPI Instance + * @retval None + */ +__STATIC_INLINE void LL_SPI_DisableCRC(SPI_TypeDef *SPIx) +{ + CLEAR_BIT(SPIx->CR1, SPI_CR1_CRCEN); +} + +/** + * @brief Check if CRC is enabled + * @note This bit should be written only when SPI is disabled (SPE = 0) for correct operation. + * @rmtoll CR1 CRCEN LL_SPI_IsEnabledCRC + * @param SPIx SPI Instance + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_SPI_IsEnabledCRC(SPI_TypeDef *SPIx) +{ + return ((READ_BIT(SPIx->CR1, SPI_CR1_CRCEN) == (SPI_CR1_CRCEN)) ? 1UL : 0UL); +} + +/** + * @brief Set CRCNext to transfer CRC on the line + * @note This bit has to be written as soon as the last data is written in the SPIx_DR register. + * @rmtoll CR1 CRCNEXT LL_SPI_SetCRCNext + * @param SPIx SPI Instance + * @retval None + */ +__STATIC_INLINE void LL_SPI_SetCRCNext(SPI_TypeDef *SPIx) +{ + SET_BIT(SPIx->CR1, SPI_CR1_CRCNEXT); +} + +/** + * @brief Set polynomial for CRC calculation + * @rmtoll CRCPR CRCPOLY LL_SPI_SetCRCPolynomial + * @param SPIx SPI Instance + * @param CRCPoly This parameter must be a number between Min_Data = 0x00 and Max_Data = 0xFFFF + * @retval None + */ +__STATIC_INLINE void LL_SPI_SetCRCPolynomial(SPI_TypeDef *SPIx, uint32_t CRCPoly) +{ + WRITE_REG(SPIx->CRCPR, (uint16_t)CRCPoly); +} + +/** + * @brief Get polynomial for CRC calculation + * @rmtoll CRCPR CRCPOLY LL_SPI_GetCRCPolynomial + * @param SPIx SPI Instance + * @retval Returned value is a number between Min_Data = 0x00 and Max_Data = 0xFFFF + */ +__STATIC_INLINE uint32_t LL_SPI_GetCRCPolynomial(SPI_TypeDef *SPIx) +{ + return (uint32_t)(READ_REG(SPIx->CRCPR)); +} + +/** + * @brief Get Rx CRC + * @rmtoll RXCRCR RXCRC LL_SPI_GetRxCRC + * @param SPIx SPI Instance + * @retval Returned value is a number between Min_Data = 0x00 and Max_Data = 0xFFFF + */ +__STATIC_INLINE uint32_t LL_SPI_GetRxCRC(SPI_TypeDef *SPIx) +{ + return (uint32_t)(READ_REG(SPIx->RXCRCR)); +} + +/** + * @brief Get Tx CRC + * @rmtoll TXCRCR TXCRC LL_SPI_GetTxCRC + * @param SPIx SPI Instance + * @retval Returned value is a number between Min_Data = 0x00 and Max_Data = 0xFFFF + */ +__STATIC_INLINE uint32_t LL_SPI_GetTxCRC(SPI_TypeDef *SPIx) +{ + return (uint32_t)(READ_REG(SPIx->TXCRCR)); +} + +/** + * @} + */ + +/** @defgroup SPI_LL_EF_NSS_Management Slave Select Pin Management + * @{ + */ + +/** + * @brief Set NSS mode + * @note LL_SPI_NSS_SOFT Mode is not used in SPI TI mode. + * @rmtoll CR1 SSM LL_SPI_SetNSSMode\n + * @rmtoll CR2 SSOE LL_SPI_SetNSSMode + * @param SPIx SPI Instance + * @param NSS This parameter can be one of the following values: + * @arg @ref LL_SPI_NSS_SOFT + * @arg @ref LL_SPI_NSS_HARD_INPUT + * @arg @ref LL_SPI_NSS_HARD_OUTPUT + * @retval None + */ +__STATIC_INLINE void LL_SPI_SetNSSMode(SPI_TypeDef *SPIx, uint32_t NSS) +{ + MODIFY_REG(SPIx->CR1, SPI_CR1_SSM, NSS); + MODIFY_REG(SPIx->CR2, SPI_CR2_SSOE, ((uint32_t)(NSS >> 16U))); +} + +/** + * @brief Get NSS mode + * @rmtoll CR1 SSM LL_SPI_GetNSSMode\n + * @rmtoll CR2 SSOE LL_SPI_GetNSSMode + * @param SPIx SPI Instance + * @retval Returned value can be one of the following values: + * @arg @ref LL_SPI_NSS_SOFT + * @arg @ref LL_SPI_NSS_HARD_INPUT + * @arg @ref LL_SPI_NSS_HARD_OUTPUT + */ +__STATIC_INLINE uint32_t LL_SPI_GetNSSMode(SPI_TypeDef *SPIx) +{ + register uint32_t Ssm = (READ_BIT(SPIx->CR1, SPI_CR1_SSM)); + register uint32_t Ssoe = (READ_BIT(SPIx->CR2, SPI_CR2_SSOE) << 16U); + return (Ssm | Ssoe); +} + +/** + * @} + */ + +/** @defgroup SPI_LL_EF_FLAG_Management FLAG Management + * @{ + */ + +/** + * @brief Check if Rx buffer is not empty + * @rmtoll SR RXNE LL_SPI_IsActiveFlag_RXNE + * @param SPIx SPI Instance + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_SPI_IsActiveFlag_RXNE(SPI_TypeDef *SPIx) +{ + return ((READ_BIT(SPIx->SR, SPI_SR_RXNE) == (SPI_SR_RXNE)) ? 1UL : 0UL); +} + +/** + * @brief Check if Tx buffer is empty + * @rmtoll SR TXE LL_SPI_IsActiveFlag_TXE + * @param SPIx SPI Instance + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_SPI_IsActiveFlag_TXE(SPI_TypeDef *SPIx) +{ + return ((READ_BIT(SPIx->SR, SPI_SR_TXE) == (SPI_SR_TXE)) ? 1UL : 0UL); +} + +/** + * @brief Get CRC error flag + * @rmtoll SR CRCERR LL_SPI_IsActiveFlag_CRCERR + * @param SPIx SPI Instance + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_SPI_IsActiveFlag_CRCERR(SPI_TypeDef *SPIx) +{ + return ((READ_BIT(SPIx->SR, SPI_SR_CRCERR) == (SPI_SR_CRCERR)) ? 1UL : 0UL); +} + +/** + * @brief Get mode fault error flag + * @rmtoll SR MODF LL_SPI_IsActiveFlag_MODF + * @param SPIx SPI Instance + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_SPI_IsActiveFlag_MODF(SPI_TypeDef *SPIx) +{ + return ((READ_BIT(SPIx->SR, SPI_SR_MODF) == (SPI_SR_MODF)) ? 1UL : 0UL); +} + +/** + * @brief Get overrun error flag + * @rmtoll SR OVR LL_SPI_IsActiveFlag_OVR + * @param SPIx SPI Instance + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_SPI_IsActiveFlag_OVR(SPI_TypeDef *SPIx) +{ + return ((READ_BIT(SPIx->SR, SPI_SR_OVR) == (SPI_SR_OVR)) ? 1UL : 0UL); +} + +/** + * @brief Get busy flag + * @note The BSY flag is cleared under any one of the following conditions: + * -When the SPI is correctly disabled + * -When a fault is detected in Master mode (MODF bit set to 1) + * -In Master mode, when it finishes a data transmission and no new data is ready to be + * sent + * -In Slave mode, when the BSY flag is set to '0' for at least one SPI clock cycle between + * each data transfer. + * @rmtoll SR BSY LL_SPI_IsActiveFlag_BSY + * @param SPIx SPI Instance + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_SPI_IsActiveFlag_BSY(SPI_TypeDef *SPIx) +{ + return ((READ_BIT(SPIx->SR, SPI_SR_BSY) == (SPI_SR_BSY)) ? 1UL : 0UL); +} + + +/** + * @brief Clear CRC error flag + * @rmtoll SR CRCERR LL_SPI_ClearFlag_CRCERR + * @param SPIx SPI Instance + * @retval None + */ +__STATIC_INLINE void LL_SPI_ClearFlag_CRCERR(SPI_TypeDef *SPIx) +{ + CLEAR_BIT(SPIx->SR, SPI_SR_CRCERR); +} + +/** + * @brief Clear mode fault error flag + * @note Clearing this flag is done by a read access to the SPIx_SR + * register followed by a write access to the SPIx_CR1 register + * @rmtoll SR MODF LL_SPI_ClearFlag_MODF + * @param SPIx SPI Instance + * @retval None + */ +__STATIC_INLINE void LL_SPI_ClearFlag_MODF(SPI_TypeDef *SPIx) +{ + __IO uint32_t tmpreg_sr; + tmpreg_sr = SPIx->SR; + (void) tmpreg_sr; + CLEAR_BIT(SPIx->CR1, SPI_CR1_SPE); +} + +/** + * @brief Clear overrun error flag + * @note Clearing this flag is done by a read access to the SPIx_DR + * register followed by a read access to the SPIx_SR register + * @rmtoll SR OVR LL_SPI_ClearFlag_OVR + * @param SPIx SPI Instance + * @retval None + */ +__STATIC_INLINE void LL_SPI_ClearFlag_OVR(SPI_TypeDef *SPIx) +{ + __IO uint32_t tmpreg; + tmpreg = SPIx->DR; + (void) tmpreg; + tmpreg = SPIx->SR; + (void) tmpreg; +} + +/** + * @brief Clear frame format error flag + * @note Clearing this flag is done by reading SPIx_SR register + * @rmtoll SR FRE LL_SPI_ClearFlag_FRE + * @param SPIx SPI Instance + * @retval None + */ +__STATIC_INLINE void LL_SPI_ClearFlag_FRE(SPI_TypeDef *SPIx) +{ + __IO uint32_t tmpreg; + tmpreg = SPIx->SR; + (void) tmpreg; +} + +/** + * @} + */ + +/** @defgroup SPI_LL_EF_IT_Management Interrupt Management + * @{ + */ + +/** + * @brief Enable error interrupt + * @note This bit controls the generation of an interrupt when an error condition occurs (CRCERR, OVR, MODF in SPI mode, FRE at TI mode). + * @rmtoll CR2 ERRIE LL_SPI_EnableIT_ERR + * @param SPIx SPI Instance + * @retval None + */ +__STATIC_INLINE void LL_SPI_EnableIT_ERR(SPI_TypeDef *SPIx) +{ + SET_BIT(SPIx->CR2, SPI_CR2_ERRIE); +} + +/** + * @brief Enable Rx buffer not empty interrupt + * @rmtoll CR2 RXNEIE LL_SPI_EnableIT_RXNE + * @param SPIx SPI Instance + * @retval None + */ +__STATIC_INLINE void LL_SPI_EnableIT_RXNE(SPI_TypeDef *SPIx) +{ + SET_BIT(SPIx->CR2, SPI_CR2_RXNEIE); +} + +/** + * @brief Enable Tx buffer empty interrupt + * @rmtoll CR2 TXEIE LL_SPI_EnableIT_TXE + * @param SPIx SPI Instance + * @retval None + */ +__STATIC_INLINE void LL_SPI_EnableIT_TXE(SPI_TypeDef *SPIx) +{ + SET_BIT(SPIx->CR2, SPI_CR2_TXEIE); +} + +/** + * @brief Disable error interrupt + * @note This bit controls the generation of an interrupt when an error condition occurs (CRCERR, OVR, MODF in SPI mode, FRE at TI mode). + * @rmtoll CR2 ERRIE LL_SPI_DisableIT_ERR + * @param SPIx SPI Instance + * @retval None + */ +__STATIC_INLINE void LL_SPI_DisableIT_ERR(SPI_TypeDef *SPIx) +{ + CLEAR_BIT(SPIx->CR2, SPI_CR2_ERRIE); +} + +/** + * @brief Disable Rx buffer not empty interrupt + * @rmtoll CR2 RXNEIE LL_SPI_DisableIT_RXNE + * @param SPIx SPI Instance + * @retval None + */ +__STATIC_INLINE void LL_SPI_DisableIT_RXNE(SPI_TypeDef *SPIx) +{ + CLEAR_BIT(SPIx->CR2, SPI_CR2_RXNEIE); +} + +/** + * @brief Disable Tx buffer empty interrupt + * @rmtoll CR2 TXEIE LL_SPI_DisableIT_TXE + * @param SPIx SPI Instance + * @retval None + */ +__STATIC_INLINE void LL_SPI_DisableIT_TXE(SPI_TypeDef *SPIx) +{ + CLEAR_BIT(SPIx->CR2, SPI_CR2_TXEIE); +} + +/** + * @brief Check if error interrupt is enabled + * @rmtoll CR2 ERRIE LL_SPI_IsEnabledIT_ERR + * @param SPIx SPI Instance + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_SPI_IsEnabledIT_ERR(SPI_TypeDef *SPIx) +{ + return ((READ_BIT(SPIx->CR2, SPI_CR2_ERRIE) == (SPI_CR2_ERRIE)) ? 1UL : 0UL); +} + +/** + * @brief Check if Rx buffer not empty interrupt is enabled + * @rmtoll CR2 RXNEIE LL_SPI_IsEnabledIT_RXNE + * @param SPIx SPI Instance + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_SPI_IsEnabledIT_RXNE(SPI_TypeDef *SPIx) +{ + return ((READ_BIT(SPIx->CR2, SPI_CR2_RXNEIE) == (SPI_CR2_RXNEIE)) ? 1UL : 0UL); +} + +/** + * @brief Check if Tx buffer empty interrupt + * @rmtoll CR2 TXEIE LL_SPI_IsEnabledIT_TXE + * @param SPIx SPI Instance + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_SPI_IsEnabledIT_TXE(SPI_TypeDef *SPIx) +{ + return ((READ_BIT(SPIx->CR2, SPI_CR2_TXEIE) == (SPI_CR2_TXEIE)) ? 1UL : 0UL); +} + +/** + * @} + */ + +/** @defgroup SPI_LL_EF_DMA_Management DMA Management + * @{ + */ + +/** + * @brief Enable DMA Rx + * @rmtoll CR2 RXDMAEN LL_SPI_EnableDMAReq_RX + * @param SPIx SPI Instance + * @retval None + */ +__STATIC_INLINE void LL_SPI_EnableDMAReq_RX(SPI_TypeDef *SPIx) +{ + SET_BIT(SPIx->CR2, SPI_CR2_RXDMAEN); +} + +/** + * @brief Disable DMA Rx + * @rmtoll CR2 RXDMAEN LL_SPI_DisableDMAReq_RX + * @param SPIx SPI Instance + * @retval None + */ +__STATIC_INLINE void LL_SPI_DisableDMAReq_RX(SPI_TypeDef *SPIx) +{ + CLEAR_BIT(SPIx->CR2, SPI_CR2_RXDMAEN); +} + +/** + * @brief Check if DMA Rx is enabled + * @rmtoll CR2 RXDMAEN LL_SPI_IsEnabledDMAReq_RX + * @param SPIx SPI Instance + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_SPI_IsEnabledDMAReq_RX(SPI_TypeDef *SPIx) +{ + return ((READ_BIT(SPIx->CR2, SPI_CR2_RXDMAEN) == (SPI_CR2_RXDMAEN)) ? 1UL : 0UL); +} + +/** + * @brief Enable DMA Tx + * @rmtoll CR2 TXDMAEN LL_SPI_EnableDMAReq_TX + * @param SPIx SPI Instance + * @retval None + */ +__STATIC_INLINE void LL_SPI_EnableDMAReq_TX(SPI_TypeDef *SPIx) +{ + SET_BIT(SPIx->CR2, SPI_CR2_TXDMAEN); +} + +/** + * @brief Disable DMA Tx + * @rmtoll CR2 TXDMAEN LL_SPI_DisableDMAReq_TX + * @param SPIx SPI Instance + * @retval None + */ +__STATIC_INLINE void LL_SPI_DisableDMAReq_TX(SPI_TypeDef *SPIx) +{ + CLEAR_BIT(SPIx->CR2, SPI_CR2_TXDMAEN); +} + +/** + * @brief Check if DMA Tx is enabled + * @rmtoll CR2 TXDMAEN LL_SPI_IsEnabledDMAReq_TX + * @param SPIx SPI Instance + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_SPI_IsEnabledDMAReq_TX(SPI_TypeDef *SPIx) +{ + return ((READ_BIT(SPIx->CR2, SPI_CR2_TXDMAEN) == (SPI_CR2_TXDMAEN)) ? 1UL : 0UL); +} + +/** + * @brief Get the data register address used for DMA transfer + * @rmtoll DR DR LL_SPI_DMA_GetRegAddr + * @param SPIx SPI Instance + * @retval Address of data register + */ +__STATIC_INLINE uint32_t LL_SPI_DMA_GetRegAddr(SPI_TypeDef *SPIx) +{ + return (uint32_t) &(SPIx->DR); +} + +/** + * @} + */ + +/** @defgroup SPI_LL_EF_DATA_Management DATA Management + * @{ + */ + +/** + * @brief Read 8-Bits in the data register + * @rmtoll DR DR LL_SPI_ReceiveData8 + * @param SPIx SPI Instance + * @retval RxData Value between Min_Data=0x00 and Max_Data=0xFF + */ +__STATIC_INLINE uint8_t LL_SPI_ReceiveData8(SPI_TypeDef *SPIx) +{ + return (uint8_t)(READ_REG(SPIx->DR)); +} + +/** + * @brief Read 16-Bits in the data register + * @rmtoll DR DR LL_SPI_ReceiveData16 + * @param SPIx SPI Instance + * @retval RxData Value between Min_Data=0x00 and Max_Data=0xFFFF + */ +__STATIC_INLINE uint16_t LL_SPI_ReceiveData16(SPI_TypeDef *SPIx) +{ + return (uint16_t)(READ_REG(SPIx->DR)); +} + +/** + * @brief Write 8-Bits in the data register + * @rmtoll DR DR LL_SPI_TransmitData8 + * @param SPIx SPI Instance + * @param TxData Value between Min_Data=0x00 and Max_Data=0xFF + * @retval None + */ +__STATIC_INLINE void LL_SPI_TransmitData8(SPI_TypeDef *SPIx, uint8_t TxData) +{ +#if defined (__GNUC__) + __IO uint8_t *spidr = ((__IO uint8_t *)&SPIx->DR); + *spidr = TxData; +#else + *((__IO uint8_t *)&SPIx->DR) = TxData; +#endif /* __GNUC__ */ +} + +/** + * @brief Write 16-Bits in the data register + * @rmtoll DR DR LL_SPI_TransmitData16 + * @param SPIx SPI Instance + * @param TxData Value between Min_Data=0x00 and Max_Data=0xFFFF + * @retval None + */ +__STATIC_INLINE void LL_SPI_TransmitData16(SPI_TypeDef *SPIx, uint16_t TxData) +{ +#if defined (__GNUC__) + __IO uint16_t *spidr = ((__IO uint16_t *)&SPIx->DR); + *spidr = TxData; +#else + SPIx->DR = TxData; +#endif /* __GNUC__ */ +} + +/** + * @} + */ +#if defined(USE_FULL_LL_DRIVER) +/** @defgroup SPI_LL_EF_Init Initialization and de-initialization functions + * @{ + */ + +ErrorStatus LL_SPI_DeInit(SPI_TypeDef *SPIx); +ErrorStatus LL_SPI_Init(SPI_TypeDef *SPIx, LL_SPI_InitTypeDef *SPI_InitStruct); +void LL_SPI_StructInit(LL_SPI_InitTypeDef *SPI_InitStruct); + +/** + * @} + */ +#endif /* USE_FULL_LL_DRIVER */ +/** + * @} + */ + +/** + * @} + */ + +#if defined(SPI_I2S_SUPPORT) +/** @defgroup I2S_LL I2S + * @{ + */ + +/* Private variables ---------------------------------------------------------*/ +/* Private constants ---------------------------------------------------------*/ +/* Private macros ------------------------------------------------------------*/ + +/* Exported types ------------------------------------------------------------*/ +#if defined(USE_FULL_LL_DRIVER) +/** @defgroup I2S_LL_ES_INIT I2S Exported Init structure + * @{ + */ + +/** + * @brief I2S Init structure definition + */ + +typedef struct +{ + uint32_t Mode; /*!< Specifies the I2S operating mode. + This parameter can be a value of @ref I2S_LL_EC_MODE + + This feature can be modified afterwards using unitary function @ref LL_I2S_SetTransferMode().*/ + + uint32_t Standard; /*!< Specifies the standard used for the I2S communication. + This parameter can be a value of @ref I2S_LL_EC_STANDARD + + This feature can be modified afterwards using unitary function @ref LL_I2S_SetStandard().*/ + + + uint32_t DataFormat; /*!< Specifies the data format for the I2S communication. + This parameter can be a value of @ref I2S_LL_EC_DATA_FORMAT + + This feature can be modified afterwards using unitary function @ref LL_I2S_SetDataFormat().*/ + + + uint32_t MCLKOutput; /*!< Specifies whether the I2S MCLK output is enabled or not. + This parameter can be a value of @ref I2S_LL_EC_MCLK_OUTPUT + + This feature can be modified afterwards using unitary functions @ref LL_I2S_EnableMasterClock() or @ref LL_I2S_DisableMasterClock.*/ + + + uint32_t AudioFreq; /*!< Specifies the frequency selected for the I2S communication. + This parameter can be a value of @ref I2S_LL_EC_AUDIO_FREQ + + Audio Frequency can be modified afterwards using Reference manual formulas to calculate Prescaler Linear, Parity + and unitary functions @ref LL_I2S_SetPrescalerLinear() and @ref LL_I2S_SetPrescalerParity() to set it.*/ + + + uint32_t ClockPolarity; /*!< Specifies the idle state of the I2S clock. + This parameter can be a value of @ref I2S_LL_EC_POLARITY + + This feature can be modified afterwards using unitary function @ref LL_I2S_SetClockPolarity().*/ + +} LL_I2S_InitTypeDef; + +/** + * @} + */ +#endif /*USE_FULL_LL_DRIVER*/ + +/* Exported constants --------------------------------------------------------*/ +/** @defgroup I2S_LL_Exported_Constants I2S Exported Constants + * @{ + */ + +/** @defgroup I2S_LL_EC_GET_FLAG Get Flags Defines + * @brief Flags defines which can be used with LL_I2S_ReadReg function + * @{ + */ +#define LL_I2S_SR_RXNE LL_SPI_SR_RXNE /*!< Rx buffer not empty flag */ +#define LL_I2S_SR_TXE LL_SPI_SR_TXE /*!< Tx buffer empty flag */ +#define LL_I2S_SR_BSY LL_SPI_SR_BSY /*!< Busy flag */ +#define LL_I2S_SR_UDR SPI_SR_UDR /*!< Underrun flag */ +#define LL_I2S_SR_OVR LL_SPI_SR_OVR /*!< Overrun flag */ +#define LL_I2S_SR_FRE LL_SPI_SR_FRE /*!< TI mode frame format error flag */ +/** + * @} + */ + +/** @defgroup SPI_LL_EC_IT IT Defines + * @brief IT defines which can be used with LL_SPI_ReadReg and LL_SPI_WriteReg functions + * @{ + */ +#define LL_I2S_CR2_RXNEIE LL_SPI_CR2_RXNEIE /*!< Rx buffer not empty interrupt enable */ +#define LL_I2S_CR2_TXEIE LL_SPI_CR2_TXEIE /*!< Tx buffer empty interrupt enable */ +#define LL_I2S_CR2_ERRIE LL_SPI_CR2_ERRIE /*!< Error interrupt enable */ +/** + * @} + */ + +/** @defgroup I2S_LL_EC_DATA_FORMAT Data format + * @{ + */ +#define LL_I2S_DATAFORMAT_16B 0x00000000U /*!< Data length 16 bits, Channel lenght 16bit */ +#define LL_I2S_DATAFORMAT_16B_EXTENDED (SPI_I2SCFGR_CHLEN) /*!< Data length 16 bits, Channel lenght 32bit */ +#define LL_I2S_DATAFORMAT_24B (SPI_I2SCFGR_CHLEN | SPI_I2SCFGR_DATLEN_0) /*!< Data length 24 bits, Channel lenght 32bit */ +#define LL_I2S_DATAFORMAT_32B (SPI_I2SCFGR_CHLEN | SPI_I2SCFGR_DATLEN_1) /*!< Data length 16 bits, Channel lenght 32bit */ +/** + * @} + */ + +/** @defgroup I2S_LL_EC_POLARITY Clock Polarity + * @{ + */ +#define LL_I2S_POLARITY_LOW 0x00000000U /*!< Clock steady state is low level */ +#define LL_I2S_POLARITY_HIGH (SPI_I2SCFGR_CKPOL) /*!< Clock steady state is high level */ +/** + * @} + */ + +/** @defgroup I2S_LL_EC_STANDARD I2s Standard + * @{ + */ +#define LL_I2S_STANDARD_PHILIPS 0x00000000U /*!< I2S standard philips */ +#define LL_I2S_STANDARD_MSB (SPI_I2SCFGR_I2SSTD_0) /*!< MSB justified standard (left justified) */ +#define LL_I2S_STANDARD_LSB (SPI_I2SCFGR_I2SSTD_1) /*!< LSB justified standard (right justified) */ +#define LL_I2S_STANDARD_PCM_SHORT (SPI_I2SCFGR_I2SSTD_0 | SPI_I2SCFGR_I2SSTD_1) /*!< PCM standard, short frame synchronization */ +#define LL_I2S_STANDARD_PCM_LONG (SPI_I2SCFGR_I2SSTD_0 | SPI_I2SCFGR_I2SSTD_1 | SPI_I2SCFGR_PCMSYNC) /*!< PCM standard, long frame synchronization */ +/** + * @} + */ + +/** @defgroup I2S_LL_EC_MODE Operation Mode + * @{ + */ +#define LL_I2S_MODE_SLAVE_TX 0x00000000U /*!< Slave Tx configuration */ +#define LL_I2S_MODE_SLAVE_RX (SPI_I2SCFGR_I2SCFG_0) /*!< Slave Rx configuration */ +#define LL_I2S_MODE_MASTER_TX (SPI_I2SCFGR_I2SCFG_1) /*!< Master Tx configuration */ +#define LL_I2S_MODE_MASTER_RX (SPI_I2SCFGR_I2SCFG_0 | SPI_I2SCFGR_I2SCFG_1) /*!< Master Rx configuration */ +/** + * @} + */ + +/** @defgroup I2S_LL_EC_PRESCALER_FACTOR Prescaler Factor + * @{ + */ +#define LL_I2S_PRESCALER_PARITY_EVEN 0x00000000U /*!< Odd factor: Real divider value is = I2SDIV * 2 */ +#define LL_I2S_PRESCALER_PARITY_ODD (SPI_I2SPR_ODD >> 8U) /*!< Odd factor: Real divider value is = (I2SDIV * 2)+1 */ +/** + * @} + */ + +#if defined(USE_FULL_LL_DRIVER) + +/** @defgroup I2S_LL_EC_MCLK_OUTPUT MCLK Output + * @{ + */ +#define LL_I2S_MCLK_OUTPUT_DISABLE 0x00000000U /*!< Master clock output is disabled */ +#define LL_I2S_MCLK_OUTPUT_ENABLE (SPI_I2SPR_MCKOE) /*!< Master clock output is enabled */ +/** + * @} + */ + +/** @defgroup I2S_LL_EC_AUDIO_FREQ Audio Frequency + * @{ + */ + +#define LL_I2S_AUDIOFREQ_192K 192000U /*!< Audio Frequency configuration 192000 Hz */ +#define LL_I2S_AUDIOFREQ_96K 96000U /*!< Audio Frequency configuration 96000 Hz */ +#define LL_I2S_AUDIOFREQ_48K 48000U /*!< Audio Frequency configuration 48000 Hz */ +#define LL_I2S_AUDIOFREQ_44K 44100U /*!< Audio Frequency configuration 44100 Hz */ +#define LL_I2S_AUDIOFREQ_32K 32000U /*!< Audio Frequency configuration 32000 Hz */ +#define LL_I2S_AUDIOFREQ_22K 22050U /*!< Audio Frequency configuration 22050 Hz */ +#define LL_I2S_AUDIOFREQ_16K 16000U /*!< Audio Frequency configuration 16000 Hz */ +#define LL_I2S_AUDIOFREQ_11K 11025U /*!< Audio Frequency configuration 11025 Hz */ +#define LL_I2S_AUDIOFREQ_8K 8000U /*!< Audio Frequency configuration 8000 Hz */ +#define LL_I2S_AUDIOFREQ_DEFAULT 2U /*!< Audio Freq not specified. Register I2SDIV = 2 */ +/** + * @} + */ +#endif /* USE_FULL_LL_DRIVER */ + +/** + * @} + */ + +/* Exported macro ------------------------------------------------------------*/ +/** @defgroup I2S_LL_Exported_Macros I2S Exported Macros + * @{ + */ + +/** @defgroup I2S_LL_EM_WRITE_READ Common Write and read registers Macros + * @{ + */ + +/** + * @brief Write a value in I2S register + * @param __INSTANCE__ I2S Instance + * @param __REG__ Register to be written + * @param __VALUE__ Value to be written in the register + * @retval None + */ +#define LL_I2S_WriteReg(__INSTANCE__, __REG__, __VALUE__) WRITE_REG(__INSTANCE__->__REG__, (__VALUE__)) + +/** + * @brief Read a value in I2S register + * @param __INSTANCE__ I2S Instance + * @param __REG__ Register to be read + * @retval Register value + */ +#define LL_I2S_ReadReg(__INSTANCE__, __REG__) READ_REG(__INSTANCE__->__REG__) +/** + * @} + */ + +/** + * @} + */ + + +/* Exported functions --------------------------------------------------------*/ + +/** @defgroup I2S_LL_Exported_Functions I2S Exported Functions + * @{ + */ + +/** @defgroup I2S_LL_EF_Configuration Configuration + * @{ + */ + +/** + * @brief Select I2S mode and Enable I2S peripheral + * @rmtoll I2SCFGR I2SMOD LL_I2S_Enable\n + * I2SCFGR I2SE LL_I2S_Enable + * @param SPIx SPI Instance + * @retval None + */ +__STATIC_INLINE void LL_I2S_Enable(SPI_TypeDef *SPIx) +{ + SET_BIT(SPIx->I2SCFGR, SPI_I2SCFGR_I2SMOD | SPI_I2SCFGR_I2SE); +} + +/** + * @brief Disable I2S peripheral + * @rmtoll I2SCFGR I2SE LL_I2S_Disable + * @param SPIx SPI Instance + * @retval None + */ +__STATIC_INLINE void LL_I2S_Disable(SPI_TypeDef *SPIx) +{ + CLEAR_BIT(SPIx->I2SCFGR, SPI_I2SCFGR_I2SMOD | SPI_I2SCFGR_I2SE); +} + +/** + * @brief Check if I2S peripheral is enabled + * @rmtoll I2SCFGR I2SE LL_I2S_IsEnabled + * @param SPIx SPI Instance + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_I2S_IsEnabled(SPI_TypeDef *SPIx) +{ + return ((READ_BIT(SPIx->I2SCFGR, SPI_I2SCFGR_I2SE) == (SPI_I2SCFGR_I2SE)) ? 1UL : 0UL); +} + +/** + * @brief Set I2S data frame length + * @rmtoll I2SCFGR DATLEN LL_I2S_SetDataFormat\n + * I2SCFGR CHLEN LL_I2S_SetDataFormat + * @param SPIx SPI Instance + * @param DataFormat This parameter can be one of the following values: + * @arg @ref LL_I2S_DATAFORMAT_16B + * @arg @ref LL_I2S_DATAFORMAT_16B_EXTENDED + * @arg @ref LL_I2S_DATAFORMAT_24B + * @arg @ref LL_I2S_DATAFORMAT_32B + * @retval None + */ +__STATIC_INLINE void LL_I2S_SetDataFormat(SPI_TypeDef *SPIx, uint32_t DataFormat) +{ + MODIFY_REG(SPIx->I2SCFGR, SPI_I2SCFGR_DATLEN | SPI_I2SCFGR_CHLEN, DataFormat); +} + +/** + * @brief Get I2S data frame length + * @rmtoll I2SCFGR DATLEN LL_I2S_GetDataFormat\n + * I2SCFGR CHLEN LL_I2S_GetDataFormat + * @param SPIx SPI Instance + * @retval Returned value can be one of the following values: + * @arg @ref LL_I2S_DATAFORMAT_16B + * @arg @ref LL_I2S_DATAFORMAT_16B_EXTENDED + * @arg @ref LL_I2S_DATAFORMAT_24B + * @arg @ref LL_I2S_DATAFORMAT_32B + */ +__STATIC_INLINE uint32_t LL_I2S_GetDataFormat(SPI_TypeDef *SPIx) +{ + return (uint32_t)(READ_BIT(SPIx->I2SCFGR, SPI_I2SCFGR_DATLEN | SPI_I2SCFGR_CHLEN)); +} + +/** + * @brief Set I2S clock polarity + * @rmtoll I2SCFGR CKPOL LL_I2S_SetClockPolarity + * @param SPIx SPI Instance + * @param ClockPolarity This parameter can be one of the following values: + * @arg @ref LL_I2S_POLARITY_LOW + * @arg @ref LL_I2S_POLARITY_HIGH + * @retval None + */ +__STATIC_INLINE void LL_I2S_SetClockPolarity(SPI_TypeDef *SPIx, uint32_t ClockPolarity) +{ + SET_BIT(SPIx->I2SCFGR, ClockPolarity); +} + +/** + * @brief Get I2S clock polarity + * @rmtoll I2SCFGR CKPOL LL_I2S_GetClockPolarity + * @param SPIx SPI Instance + * @retval Returned value can be one of the following values: + * @arg @ref LL_I2S_POLARITY_LOW + * @arg @ref LL_I2S_POLARITY_HIGH + */ +__STATIC_INLINE uint32_t LL_I2S_GetClockPolarity(SPI_TypeDef *SPIx) +{ + return (uint32_t)(READ_BIT(SPIx->I2SCFGR, SPI_I2SCFGR_CKPOL)); +} + +/** + * @brief Set I2S standard protocol + * @rmtoll I2SCFGR I2SSTD LL_I2S_SetStandard\n + * I2SCFGR PCMSYNC LL_I2S_SetStandard + * @param SPIx SPI Instance + * @param Standard This parameter can be one of the following values: + * @arg @ref LL_I2S_STANDARD_PHILIPS + * @arg @ref LL_I2S_STANDARD_MSB + * @arg @ref LL_I2S_STANDARD_LSB + * @arg @ref LL_I2S_STANDARD_PCM_SHORT + * @arg @ref LL_I2S_STANDARD_PCM_LONG + * @retval None + */ +__STATIC_INLINE void LL_I2S_SetStandard(SPI_TypeDef *SPIx, uint32_t Standard) +{ + MODIFY_REG(SPIx->I2SCFGR, SPI_I2SCFGR_I2SSTD | SPI_I2SCFGR_PCMSYNC, Standard); +} + +/** + * @brief Get I2S standard protocol + * @rmtoll I2SCFGR I2SSTD LL_I2S_GetStandard\n + * I2SCFGR PCMSYNC LL_I2S_GetStandard + * @param SPIx SPI Instance + * @retval Returned value can be one of the following values: + * @arg @ref LL_I2S_STANDARD_PHILIPS + * @arg @ref LL_I2S_STANDARD_MSB + * @arg @ref LL_I2S_STANDARD_LSB + * @arg @ref LL_I2S_STANDARD_PCM_SHORT + * @arg @ref LL_I2S_STANDARD_PCM_LONG + */ +__STATIC_INLINE uint32_t LL_I2S_GetStandard(SPI_TypeDef *SPIx) +{ + return (uint32_t)(READ_BIT(SPIx->I2SCFGR, SPI_I2SCFGR_I2SSTD | SPI_I2SCFGR_PCMSYNC)); +} + +/** + * @brief Set I2S transfer mode + * @rmtoll I2SCFGR I2SCFG LL_I2S_SetTransferMode + * @param SPIx SPI Instance + * @param Mode This parameter can be one of the following values: + * @arg @ref LL_I2S_MODE_SLAVE_TX + * @arg @ref LL_I2S_MODE_SLAVE_RX + * @arg @ref LL_I2S_MODE_MASTER_TX + * @arg @ref LL_I2S_MODE_MASTER_RX + * @retval None + */ +__STATIC_INLINE void LL_I2S_SetTransferMode(SPI_TypeDef *SPIx, uint32_t Mode) +{ + MODIFY_REG(SPIx->I2SCFGR, SPI_I2SCFGR_I2SCFG, Mode); +} + +/** + * @brief Get I2S transfer mode + * @rmtoll I2SCFGR I2SCFG LL_I2S_GetTransferMode + * @param SPIx SPI Instance + * @retval Returned value can be one of the following values: + * @arg @ref LL_I2S_MODE_SLAVE_TX + * @arg @ref LL_I2S_MODE_SLAVE_RX + * @arg @ref LL_I2S_MODE_MASTER_TX + * @arg @ref LL_I2S_MODE_MASTER_RX + */ +__STATIC_INLINE uint32_t LL_I2S_GetTransferMode(SPI_TypeDef *SPIx) +{ + return (uint32_t)(READ_BIT(SPIx->I2SCFGR, SPI_I2SCFGR_I2SCFG)); +} + +/** + * @brief Set I2S linear prescaler + * @rmtoll I2SPR I2SDIV LL_I2S_SetPrescalerLinear + * @param SPIx SPI Instance + * @param PrescalerLinear Value between Min_Data=0x02 and Max_Data=0xFF + * @retval None + */ +__STATIC_INLINE void LL_I2S_SetPrescalerLinear(SPI_TypeDef *SPIx, uint8_t PrescalerLinear) +{ + MODIFY_REG(SPIx->I2SPR, SPI_I2SPR_I2SDIV, PrescalerLinear); +} + +/** + * @brief Get I2S linear prescaler + * @rmtoll I2SPR I2SDIV LL_I2S_GetPrescalerLinear + * @param SPIx SPI Instance + * @retval PrescalerLinear Value between Min_Data=0x02 and Max_Data=0xFF + */ +__STATIC_INLINE uint32_t LL_I2S_GetPrescalerLinear(SPI_TypeDef *SPIx) +{ + return (uint32_t)(READ_BIT(SPIx->I2SPR, SPI_I2SPR_I2SDIV)); +} + +/** + * @brief Set I2S parity prescaler + * @rmtoll I2SPR ODD LL_I2S_SetPrescalerParity + * @param SPIx SPI Instance + * @param PrescalerParity This parameter can be one of the following values: + * @arg @ref LL_I2S_PRESCALER_PARITY_EVEN + * @arg @ref LL_I2S_PRESCALER_PARITY_ODD + * @retval None + */ +__STATIC_INLINE void LL_I2S_SetPrescalerParity(SPI_TypeDef *SPIx, uint32_t PrescalerParity) +{ + MODIFY_REG(SPIx->I2SPR, SPI_I2SPR_ODD, PrescalerParity << 8U); +} + +/** + * @brief Get I2S parity prescaler + * @rmtoll I2SPR ODD LL_I2S_GetPrescalerParity + * @param SPIx SPI Instance + * @retval Returned value can be one of the following values: + * @arg @ref LL_I2S_PRESCALER_PARITY_EVEN + * @arg @ref LL_I2S_PRESCALER_PARITY_ODD + */ +__STATIC_INLINE uint32_t LL_I2S_GetPrescalerParity(SPI_TypeDef *SPIx) +{ + return (uint32_t)(READ_BIT(SPIx->I2SPR, SPI_I2SPR_ODD) >> 8U); +} + +/** + * @brief Enable the master clock ouput (Pin MCK) + * @rmtoll I2SPR MCKOE LL_I2S_EnableMasterClock + * @param SPIx SPI Instance + * @retval None + */ +__STATIC_INLINE void LL_I2S_EnableMasterClock(SPI_TypeDef *SPIx) +{ + SET_BIT(SPIx->I2SPR, SPI_I2SPR_MCKOE); +} + +/** + * @brief Disable the master clock ouput (Pin MCK) + * @rmtoll I2SPR MCKOE LL_I2S_DisableMasterClock + * @param SPIx SPI Instance + * @retval None + */ +__STATIC_INLINE void LL_I2S_DisableMasterClock(SPI_TypeDef *SPIx) +{ + CLEAR_BIT(SPIx->I2SPR, SPI_I2SPR_MCKOE); +} + +/** + * @brief Check if the master clock ouput (Pin MCK) is enabled + * @rmtoll I2SPR MCKOE LL_I2S_IsEnabledMasterClock + * @param SPIx SPI Instance + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_I2S_IsEnabledMasterClock(SPI_TypeDef *SPIx) +{ + return ((READ_BIT(SPIx->I2SPR, SPI_I2SPR_MCKOE) == (SPI_I2SPR_MCKOE)) ? 1UL : 0UL); +} + +/** + * @} + */ + +/** @defgroup I2S_LL_EF_FLAG FLAG Management + * @{ + */ + +/** + * @brief Check if Rx buffer is not empty + * @rmtoll SR RXNE LL_I2S_IsActiveFlag_RXNE + * @param SPIx SPI Instance + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_I2S_IsActiveFlag_RXNE(SPI_TypeDef *SPIx) +{ + return LL_SPI_IsActiveFlag_RXNE(SPIx); +} + +/** + * @brief Check if Tx buffer is empty + * @rmtoll SR TXE LL_I2S_IsActiveFlag_TXE + * @param SPIx SPI Instance + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_I2S_IsActiveFlag_TXE(SPI_TypeDef *SPIx) +{ + return LL_SPI_IsActiveFlag_TXE(SPIx); +} + +/** + * @brief Get busy flag + * @rmtoll SR BSY LL_I2S_IsActiveFlag_BSY + * @param SPIx SPI Instance + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_I2S_IsActiveFlag_BSY(SPI_TypeDef *SPIx) +{ + return LL_SPI_IsActiveFlag_BSY(SPIx); +} + +/** + * @brief Get overrun error flag + * @rmtoll SR OVR LL_I2S_IsActiveFlag_OVR + * @param SPIx SPI Instance + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_I2S_IsActiveFlag_OVR(SPI_TypeDef *SPIx) +{ + return LL_SPI_IsActiveFlag_OVR(SPIx); +} + +/** + * @brief Get underrun error flag + * @rmtoll SR UDR LL_I2S_IsActiveFlag_UDR + * @param SPIx SPI Instance + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_I2S_IsActiveFlag_UDR(SPI_TypeDef *SPIx) +{ + return ((READ_BIT(SPIx->SR, SPI_SR_UDR) == (SPI_SR_UDR)) ? 1UL : 0UL); +} + + +/** + * @brief Get channel side flag. + * @note 0: Channel Left has to be transmitted or has been received\n + * 1: Channel Right has to be transmitted or has been received\n + * It has no significance in PCM mode. + * @rmtoll SR CHSIDE LL_I2S_IsActiveFlag_CHSIDE + * @param SPIx SPI Instance + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_I2S_IsActiveFlag_CHSIDE(SPI_TypeDef *SPIx) +{ + return ((READ_BIT(SPIx->SR, SPI_SR_CHSIDE) == (SPI_SR_CHSIDE)) ? 1UL : 0UL); +} + +/** + * @brief Clear overrun error flag + * @rmtoll SR OVR LL_I2S_ClearFlag_OVR + * @param SPIx SPI Instance + * @retval None + */ +__STATIC_INLINE void LL_I2S_ClearFlag_OVR(SPI_TypeDef *SPIx) +{ + LL_SPI_ClearFlag_OVR(SPIx); +} + +/** + * @brief Clear underrun error flag + * @rmtoll SR UDR LL_I2S_ClearFlag_UDR + * @param SPIx SPI Instance + * @retval None + */ +__STATIC_INLINE void LL_I2S_ClearFlag_UDR(SPI_TypeDef *SPIx) +{ + __IO uint32_t tmpreg; + tmpreg = SPIx->SR; + (void)tmpreg; +} + +/** + * @brief Clear frame format error flag + * @rmtoll SR FRE LL_I2S_ClearFlag_FRE + * @param SPIx SPI Instance + * @retval None + */ +__STATIC_INLINE void LL_I2S_ClearFlag_FRE(SPI_TypeDef *SPIx) +{ + LL_SPI_ClearFlag_FRE(SPIx); +} + +/** + * @} + */ + +/** @defgroup I2S_LL_EF_IT Interrupt Management + * @{ + */ + +/** + * @brief Enable error IT + * @note This bit controls the generation of an interrupt when an error condition occurs (OVR, UDR and FRE in I2S mode). + * @rmtoll CR2 ERRIE LL_I2S_EnableIT_ERR + * @param SPIx SPI Instance + * @retval None + */ +__STATIC_INLINE void LL_I2S_EnableIT_ERR(SPI_TypeDef *SPIx) +{ + LL_SPI_EnableIT_ERR(SPIx); +} + +/** + * @brief Enable Rx buffer not empty IT + * @rmtoll CR2 RXNEIE LL_I2S_EnableIT_RXNE + * @param SPIx SPI Instance + * @retval None + */ +__STATIC_INLINE void LL_I2S_EnableIT_RXNE(SPI_TypeDef *SPIx) +{ + LL_SPI_EnableIT_RXNE(SPIx); +} + +/** + * @brief Enable Tx buffer empty IT + * @rmtoll CR2 TXEIE LL_I2S_EnableIT_TXE + * @param SPIx SPI Instance + * @retval None + */ +__STATIC_INLINE void LL_I2S_EnableIT_TXE(SPI_TypeDef *SPIx) +{ + LL_SPI_EnableIT_TXE(SPIx); +} + +/** + * @brief Disable error IT + * @note This bit controls the generation of an interrupt when an error condition occurs (OVR, UDR and FRE in I2S mode). + * @rmtoll CR2 ERRIE LL_I2S_DisableIT_ERR + * @param SPIx SPI Instance + * @retval None + */ +__STATIC_INLINE void LL_I2S_DisableIT_ERR(SPI_TypeDef *SPIx) +{ + LL_SPI_DisableIT_ERR(SPIx); +} + +/** + * @brief Disable Rx buffer not empty IT + * @rmtoll CR2 RXNEIE LL_I2S_DisableIT_RXNE + * @param SPIx SPI Instance + * @retval None + */ +__STATIC_INLINE void LL_I2S_DisableIT_RXNE(SPI_TypeDef *SPIx) +{ + LL_SPI_DisableIT_RXNE(SPIx); +} + +/** + * @brief Disable Tx buffer empty IT + * @rmtoll CR2 TXEIE LL_I2S_DisableIT_TXE + * @param SPIx SPI Instance + * @retval None + */ +__STATIC_INLINE void LL_I2S_DisableIT_TXE(SPI_TypeDef *SPIx) +{ + LL_SPI_DisableIT_TXE(SPIx); +} + +/** + * @brief Check if ERR IT is enabled + * @rmtoll CR2 ERRIE LL_I2S_IsEnabledIT_ERR + * @param SPIx SPI Instance + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_I2S_IsEnabledIT_ERR(SPI_TypeDef *SPIx) +{ + return LL_SPI_IsEnabledIT_ERR(SPIx); +} + +/** + * @brief Check if RXNE IT is enabled + * @rmtoll CR2 RXNEIE LL_I2S_IsEnabledIT_RXNE + * @param SPIx SPI Instance + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_I2S_IsEnabledIT_RXNE(SPI_TypeDef *SPIx) +{ + return LL_SPI_IsEnabledIT_RXNE(SPIx); +} + +/** + * @brief Check if TXE IT is enabled + * @rmtoll CR2 TXEIE LL_I2S_IsEnabledIT_TXE + * @param SPIx SPI Instance + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_I2S_IsEnabledIT_TXE(SPI_TypeDef *SPIx) +{ + return LL_SPI_IsEnabledIT_TXE(SPIx); +} + +/** + * @} + */ + +/** @defgroup I2S_LL_EF_DMA DMA Management + * @{ + */ + +/** + * @brief Enable DMA Rx + * @rmtoll CR2 RXDMAEN LL_I2S_EnableDMAReq_RX + * @param SPIx SPI Instance + * @retval None + */ +__STATIC_INLINE void LL_I2S_EnableDMAReq_RX(SPI_TypeDef *SPIx) +{ + LL_SPI_EnableDMAReq_RX(SPIx); +} + +/** + * @brief Disable DMA Rx + * @rmtoll CR2 RXDMAEN LL_I2S_DisableDMAReq_RX + * @param SPIx SPI Instance + * @retval None + */ +__STATIC_INLINE void LL_I2S_DisableDMAReq_RX(SPI_TypeDef *SPIx) +{ + LL_SPI_DisableDMAReq_RX(SPIx); +} + +/** + * @brief Check if DMA Rx is enabled + * @rmtoll CR2 RXDMAEN LL_I2S_IsEnabledDMAReq_RX + * @param SPIx SPI Instance + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_I2S_IsEnabledDMAReq_RX(SPI_TypeDef *SPIx) +{ + return LL_SPI_IsEnabledDMAReq_RX(SPIx); +} + +/** + * @brief Enable DMA Tx + * @rmtoll CR2 TXDMAEN LL_I2S_EnableDMAReq_TX + * @param SPIx SPI Instance + * @retval None + */ +__STATIC_INLINE void LL_I2S_EnableDMAReq_TX(SPI_TypeDef *SPIx) +{ + LL_SPI_EnableDMAReq_TX(SPIx); +} + +/** + * @brief Disable DMA Tx + * @rmtoll CR2 TXDMAEN LL_I2S_DisableDMAReq_TX + * @param SPIx SPI Instance + * @retval None + */ +__STATIC_INLINE void LL_I2S_DisableDMAReq_TX(SPI_TypeDef *SPIx) +{ + LL_SPI_DisableDMAReq_TX(SPIx); +} + +/** + * @brief Check if DMA Tx is enabled + * @rmtoll CR2 TXDMAEN LL_I2S_IsEnabledDMAReq_TX + * @param SPIx SPI Instance + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_I2S_IsEnabledDMAReq_TX(SPI_TypeDef *SPIx) +{ + return LL_SPI_IsEnabledDMAReq_TX(SPIx); +} + +/** + * @} + */ + +/** @defgroup I2S_LL_EF_DATA DATA Management + * @{ + */ + +/** + * @brief Read 16-Bits in data register + * @rmtoll DR DR LL_I2S_ReceiveData16 + * @param SPIx SPI Instance + * @retval RxData Value between Min_Data=0x0000 and Max_Data=0xFFFF + */ +__STATIC_INLINE uint16_t LL_I2S_ReceiveData16(SPI_TypeDef *SPIx) +{ + return LL_SPI_ReceiveData16(SPIx); +} + +/** + * @brief Write 16-Bits in data register + * @rmtoll DR DR LL_I2S_TransmitData16 + * @param SPIx SPI Instance + * @param TxData Value between Min_Data=0x0000 and Max_Data=0xFFFF + * @retval None + */ +__STATIC_INLINE void LL_I2S_TransmitData16(SPI_TypeDef *SPIx, uint16_t TxData) +{ + LL_SPI_TransmitData16(SPIx, TxData); +} + +/** + * @} + */ + +#if defined(USE_FULL_LL_DRIVER) +/** @defgroup I2S_LL_EF_Init Initialization and de-initialization functions + * @{ + */ + +ErrorStatus LL_I2S_DeInit(SPI_TypeDef *SPIx); +ErrorStatus LL_I2S_Init(SPI_TypeDef *SPIx, LL_I2S_InitTypeDef *I2S_InitStruct); +void LL_I2S_StructInit(LL_I2S_InitTypeDef *I2S_InitStruct); +void LL_I2S_ConfigPrescaler(SPI_TypeDef *SPIx, uint32_t PrescalerLinear, uint32_t PrescalerParity); + +/** + * @} + */ +#endif /* USE_FULL_LL_DRIVER */ + +/** + * @} + */ + +/** + * @} + */ +#endif /* SPI_I2S_SUPPORT */ + +#endif /* defined (SPI1) || defined (SPI2) || defined (SPI3) */ + +/** + * @} + */ + +#ifdef __cplusplus +} +#endif + +#endif /* STM32F1xx_LL_SPI_H */ + +/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/ diff --git a/LLDrivers/inc/stm32f1xx_ll_tim.h b/LLDrivers/inc/stm32f1xx_ll_tim.h new file mode 100644 index 0000000..a3d9dca --- /dev/null +++ b/LLDrivers/inc/stm32f1xx_ll_tim.h @@ -0,0 +1,3831 @@ +/** + ****************************************************************************** + * @file stm32f1xx_ll_tim.h + * @author MCD Application Team + * @brief Header file of TIM LL module. + ****************************************************************************** + * @attention + * + *

© Copyright (c) 2016 STMicroelectronics. + * All rights reserved.

+ * + * This software component is licensed by ST under BSD 3-Clause license, + * the "License"; You may not use this file except in compliance with the + * License. You may obtain a copy of the License at: + * opensource.org/licenses/BSD-3-Clause + * + ****************************************************************************** + */ + +/* Define to prevent recursive inclusion -------------------------------------*/ +#ifndef __STM32F1xx_LL_TIM_H +#define __STM32F1xx_LL_TIM_H + +#ifdef __cplusplus +extern "C" { +#endif + +/* Includes ------------------------------------------------------------------*/ +#include "stm32f1xx.h" + +/** @addtogroup STM32F1xx_LL_Driver + * @{ + */ + +#if defined (TIM1) || defined (TIM2) || defined (TIM3) || defined (TIM4) || defined (TIM5) || defined (TIM6) || defined (TIM7) || defined (TIM8) || defined (TIM9) || defined (TIM10) || defined (TIM11) || defined (TIM12) || defined (TIM13) || defined (TIM14) || defined (TIM15) || defined (TIM16) || defined (TIM17) + +/** @defgroup TIM_LL TIM + * @{ + */ + +/* Private types -------------------------------------------------------------*/ +/* Private variables ---------------------------------------------------------*/ +/** @defgroup TIM_LL_Private_Variables TIM Private Variables + * @{ + */ +static const uint8_t OFFSET_TAB_CCMRx[] = +{ + 0x00U, /* 0: TIMx_CH1 */ + 0x00U, /* 1: TIMx_CH1N */ + 0x00U, /* 2: TIMx_CH2 */ + 0x00U, /* 3: TIMx_CH2N */ + 0x04U, /* 4: TIMx_CH3 */ + 0x04U, /* 5: TIMx_CH3N */ + 0x04U /* 6: TIMx_CH4 */ +}; + +static const uint8_t SHIFT_TAB_OCxx[] = +{ + 0U, /* 0: OC1M, OC1FE, OC1PE */ + 0U, /* 1: - NA */ + 8U, /* 2: OC2M, OC2FE, OC2PE */ + 0U, /* 3: - NA */ + 0U, /* 4: OC3M, OC3FE, OC3PE */ + 0U, /* 5: - NA */ + 8U /* 6: OC4M, OC4FE, OC4PE */ +}; + +static const uint8_t SHIFT_TAB_ICxx[] = +{ + 0U, /* 0: CC1S, IC1PSC, IC1F */ + 0U, /* 1: - NA */ + 8U, /* 2: CC2S, IC2PSC, IC2F */ + 0U, /* 3: - NA */ + 0U, /* 4: CC3S, IC3PSC, IC3F */ + 0U, /* 5: - NA */ + 8U /* 6: CC4S, IC4PSC, IC4F */ +}; + +static const uint8_t SHIFT_TAB_CCxP[] = +{ + 0U, /* 0: CC1P */ + 2U, /* 1: CC1NP */ + 4U, /* 2: CC2P */ + 6U, /* 3: CC2NP */ + 8U, /* 4: CC3P */ + 10U, /* 5: CC3NP */ + 12U /* 6: CC4P */ +}; + +static const uint8_t SHIFT_TAB_OISx[] = +{ + 0U, /* 0: OIS1 */ + 1U, /* 1: OIS1N */ + 2U, /* 2: OIS2 */ + 3U, /* 3: OIS2N */ + 4U, /* 4: OIS3 */ + 5U, /* 5: OIS3N */ + 6U /* 6: OIS4 */ +}; +/** + * @} + */ + +/* Private constants ---------------------------------------------------------*/ +/** @defgroup TIM_LL_Private_Constants TIM Private Constants + * @{ + */ + + + +/* Mask used to set the TDG[x:0] of the DTG bits of the TIMx_BDTR register */ +#define DT_DELAY_1 ((uint8_t)0x7F) +#define DT_DELAY_2 ((uint8_t)0x3F) +#define DT_DELAY_3 ((uint8_t)0x1F) +#define DT_DELAY_4 ((uint8_t)0x1F) + +/* Mask used to set the DTG[7:5] bits of the DTG bits of the TIMx_BDTR register */ +#define DT_RANGE_1 ((uint8_t)0x00) +#define DT_RANGE_2 ((uint8_t)0x80) +#define DT_RANGE_3 ((uint8_t)0xC0) +#define DT_RANGE_4 ((uint8_t)0xE0) + + +/** + * @} + */ + +/* Private macros ------------------------------------------------------------*/ +/** @defgroup TIM_LL_Private_Macros TIM Private Macros + * @{ + */ +/** @brief Convert channel id into channel index. + * @param __CHANNEL__ This parameter can be one of the following values: + * @arg @ref LL_TIM_CHANNEL_CH1 + * @arg @ref LL_TIM_CHANNEL_CH1N + * @arg @ref LL_TIM_CHANNEL_CH2 + * @arg @ref LL_TIM_CHANNEL_CH2N + * @arg @ref LL_TIM_CHANNEL_CH3 + * @arg @ref LL_TIM_CHANNEL_CH3N + * @arg @ref LL_TIM_CHANNEL_CH4 + * @retval none + */ +#define TIM_GET_CHANNEL_INDEX( __CHANNEL__) \ + (((__CHANNEL__) == LL_TIM_CHANNEL_CH1) ? 0U :\ + ((__CHANNEL__) == LL_TIM_CHANNEL_CH1N) ? 1U :\ + ((__CHANNEL__) == LL_TIM_CHANNEL_CH2) ? 2U :\ + ((__CHANNEL__) == LL_TIM_CHANNEL_CH2N) ? 3U :\ + ((__CHANNEL__) == LL_TIM_CHANNEL_CH3) ? 4U :\ + ((__CHANNEL__) == LL_TIM_CHANNEL_CH3N) ? 5U : 6U) + +/** @brief Calculate the deadtime sampling period(in ps). + * @param __TIMCLK__ timer input clock frequency (in Hz). + * @param __CKD__ This parameter can be one of the following values: + * @arg @ref LL_TIM_CLOCKDIVISION_DIV1 + * @arg @ref LL_TIM_CLOCKDIVISION_DIV2 + * @arg @ref LL_TIM_CLOCKDIVISION_DIV4 + * @retval none + */ +#define TIM_CALC_DTS(__TIMCLK__, __CKD__) \ + (((__CKD__) == LL_TIM_CLOCKDIVISION_DIV1) ? ((uint64_t)1000000000000U/(__TIMCLK__)) : \ + ((__CKD__) == LL_TIM_CLOCKDIVISION_DIV2) ? ((uint64_t)1000000000000U/((__TIMCLK__) >> 1U)) : \ + ((uint64_t)1000000000000U/((__TIMCLK__) >> 2U))) +/** + * @} + */ + + +/* Exported types ------------------------------------------------------------*/ +#if defined(USE_FULL_LL_DRIVER) +/** @defgroup TIM_LL_ES_INIT TIM Exported Init structure + * @{ + */ + +/** + * @brief TIM Time Base configuration structure definition. + */ +typedef struct +{ + uint16_t Prescaler; /*!< Specifies the prescaler value used to divide the TIM clock. + This parameter can be a number between Min_Data=0x0000 and Max_Data=0xFFFF. + + This feature can be modified afterwards using unitary function @ref LL_TIM_SetPrescaler().*/ + + uint32_t CounterMode; /*!< Specifies the counter mode. + This parameter can be a value of @ref TIM_LL_EC_COUNTERMODE. + + This feature can be modified afterwards using unitary function @ref LL_TIM_SetCounterMode().*/ + + uint32_t Autoreload; /*!< Specifies the auto reload value to be loaded into the active + Auto-Reload Register at the next update event. + This parameter must be a number between Min_Data=0x0000 and Max_Data=0xFFFF. + Some timer instances may support 32 bits counters. In that case this parameter must be a number between 0x0000 and 0xFFFFFFFF. + + This feature can be modified afterwards using unitary function @ref LL_TIM_SetAutoReload().*/ + + uint32_t ClockDivision; /*!< Specifies the clock division. + This parameter can be a value of @ref TIM_LL_EC_CLOCKDIVISION. + + This feature can be modified afterwards using unitary function @ref LL_TIM_SetClockDivision().*/ + + uint8_t RepetitionCounter; /*!< Specifies the repetition counter value. Each time the RCR downcounter + reaches zero, an update event is generated and counting restarts + from the RCR value (N). + This means in PWM mode that (N+1) corresponds to: + - the number of PWM periods in edge-aligned mode + - the number of half PWM period in center-aligned mode + This parameter must be a number between 0x00 and 0xFF. + + This feature can be modified afterwards using unitary function @ref LL_TIM_SetRepetitionCounter().*/ +} LL_TIM_InitTypeDef; + +/** + * @brief TIM Output Compare configuration structure definition. + */ +typedef struct +{ + uint32_t OCMode; /*!< Specifies the output mode. + This parameter can be a value of @ref TIM_LL_EC_OCMODE. + + This feature can be modified afterwards using unitary function @ref LL_TIM_OC_SetMode().*/ + + uint32_t OCState; /*!< Specifies the TIM Output Compare state. + This parameter can be a value of @ref TIM_LL_EC_OCSTATE. + + This feature can be modified afterwards using unitary functions @ref LL_TIM_CC_EnableChannel() or @ref LL_TIM_CC_DisableChannel().*/ + + uint32_t OCNState; /*!< Specifies the TIM complementary Output Compare state. + This parameter can be a value of @ref TIM_LL_EC_OCSTATE. + + This feature can be modified afterwards using unitary functions @ref LL_TIM_CC_EnableChannel() or @ref LL_TIM_CC_DisableChannel().*/ + + uint32_t CompareValue; /*!< Specifies the Compare value to be loaded into the Capture Compare Register. + This parameter can be a number between Min_Data=0x0000 and Max_Data=0xFFFF. + + This feature can be modified afterwards using unitary function LL_TIM_OC_SetCompareCHx (x=1..6).*/ + + uint32_t OCPolarity; /*!< Specifies the output polarity. + This parameter can be a value of @ref TIM_LL_EC_OCPOLARITY. + + This feature can be modified afterwards using unitary function @ref LL_TIM_OC_SetPolarity().*/ + + uint32_t OCNPolarity; /*!< Specifies the complementary output polarity. + This parameter can be a value of @ref TIM_LL_EC_OCPOLARITY. + + This feature can be modified afterwards using unitary function @ref LL_TIM_OC_SetPolarity().*/ + + + uint32_t OCIdleState; /*!< Specifies the TIM Output Compare pin state during Idle state. + This parameter can be a value of @ref TIM_LL_EC_OCIDLESTATE. + + This feature can be modified afterwards using unitary function @ref LL_TIM_OC_SetIdleState().*/ + + uint32_t OCNIdleState; /*!< Specifies the TIM Output Compare pin state during Idle state. + This parameter can be a value of @ref TIM_LL_EC_OCIDLESTATE. + + This feature can be modified afterwards using unitary function @ref LL_TIM_OC_SetIdleState().*/ +} LL_TIM_OC_InitTypeDef; + +/** + * @brief TIM Input Capture configuration structure definition. + */ + +typedef struct +{ + + uint32_t ICPolarity; /*!< Specifies the active edge of the input signal. + This parameter can be a value of @ref TIM_LL_EC_IC_POLARITY. + + This feature can be modified afterwards using unitary function @ref LL_TIM_IC_SetPolarity().*/ + + uint32_t ICActiveInput; /*!< Specifies the input. + This parameter can be a value of @ref TIM_LL_EC_ACTIVEINPUT. + + This feature can be modified afterwards using unitary function @ref LL_TIM_IC_SetActiveInput().*/ + + uint32_t ICPrescaler; /*!< Specifies the Input Capture Prescaler. + This parameter can be a value of @ref TIM_LL_EC_ICPSC. + + This feature can be modified afterwards using unitary function @ref LL_TIM_IC_SetPrescaler().*/ + + uint32_t ICFilter; /*!< Specifies the input capture filter. + This parameter can be a value of @ref TIM_LL_EC_IC_FILTER. + + This feature can be modified afterwards using unitary function @ref LL_TIM_IC_SetFilter().*/ +} LL_TIM_IC_InitTypeDef; + + +/** + * @brief TIM Encoder interface configuration structure definition. + */ +typedef struct +{ + uint32_t EncoderMode; /*!< Specifies the encoder resolution (x2 or x4). + This parameter can be a value of @ref TIM_LL_EC_ENCODERMODE. + + This feature can be modified afterwards using unitary function @ref LL_TIM_SetEncoderMode().*/ + + uint32_t IC1Polarity; /*!< Specifies the active edge of TI1 input. + This parameter can be a value of @ref TIM_LL_EC_IC_POLARITY. + + This feature can be modified afterwards using unitary function @ref LL_TIM_IC_SetPolarity().*/ + + uint32_t IC1ActiveInput; /*!< Specifies the TI1 input source + This parameter can be a value of @ref TIM_LL_EC_ACTIVEINPUT. + + This feature can be modified afterwards using unitary function @ref LL_TIM_IC_SetActiveInput().*/ + + uint32_t IC1Prescaler; /*!< Specifies the TI1 input prescaler value. + This parameter can be a value of @ref TIM_LL_EC_ICPSC. + + This feature can be modified afterwards using unitary function @ref LL_TIM_IC_SetPrescaler().*/ + + uint32_t IC1Filter; /*!< Specifies the TI1 input filter. + This parameter can be a value of @ref TIM_LL_EC_IC_FILTER. + + This feature can be modified afterwards using unitary function @ref LL_TIM_IC_SetFilter().*/ + + uint32_t IC2Polarity; /*!< Specifies the active edge of TI2 input. + This parameter can be a value of @ref TIM_LL_EC_IC_POLARITY. + + This feature can be modified afterwards using unitary function @ref LL_TIM_IC_SetPolarity().*/ + + uint32_t IC2ActiveInput; /*!< Specifies the TI2 input source + This parameter can be a value of @ref TIM_LL_EC_ACTIVEINPUT. + + This feature can be modified afterwards using unitary function @ref LL_TIM_IC_SetActiveInput().*/ + + uint32_t IC2Prescaler; /*!< Specifies the TI2 input prescaler value. + This parameter can be a value of @ref TIM_LL_EC_ICPSC. + + This feature can be modified afterwards using unitary function @ref LL_TIM_IC_SetPrescaler().*/ + + uint32_t IC2Filter; /*!< Specifies the TI2 input filter. + This parameter can be a value of @ref TIM_LL_EC_IC_FILTER. + + This feature can be modified afterwards using unitary function @ref LL_TIM_IC_SetFilter().*/ + +} LL_TIM_ENCODER_InitTypeDef; + +/** + * @brief TIM Hall sensor interface configuration structure definition. + */ +typedef struct +{ + + uint32_t IC1Polarity; /*!< Specifies the active edge of TI1 input. + This parameter can be a value of @ref TIM_LL_EC_IC_POLARITY. + + This feature can be modified afterwards using unitary function @ref LL_TIM_IC_SetPolarity().*/ + + uint32_t IC1Prescaler; /*!< Specifies the TI1 input prescaler value. + Prescaler must be set to get a maximum counter period longer than the + time interval between 2 consecutive changes on the Hall inputs. + This parameter can be a value of @ref TIM_LL_EC_ICPSC. + + This feature can be modified afterwards using unitary function @ref LL_TIM_IC_SetPrescaler().*/ + + uint32_t IC1Filter; /*!< Specifies the TI1 input filter. + This parameter can be a value of @ref TIM_LL_EC_IC_FILTER. + + This feature can be modified afterwards using unitary function @ref LL_TIM_IC_SetFilter().*/ + + uint32_t CommutationDelay; /*!< Specifies the compare value to be loaded into the Capture Compare Register. + A positive pulse (TRGO event) is generated with a programmable delay every time + a change occurs on the Hall inputs. + This parameter can be a number between Min_Data = 0x0000 and Max_Data = 0xFFFF. + + This feature can be modified afterwards using unitary function @ref LL_TIM_OC_SetCompareCH2().*/ +} LL_TIM_HALLSENSOR_InitTypeDef; + +/** + * @brief BDTR (Break and Dead Time) structure definition + */ +typedef struct +{ + uint32_t OSSRState; /*!< Specifies the Off-State selection used in Run mode. + This parameter can be a value of @ref TIM_LL_EC_OSSR + + This feature can be modified afterwards using unitary function @ref LL_TIM_SetOffStates() + + @note This bit-field cannot be modified as long as LOCK level 2 has been programmed. */ + + uint32_t OSSIState; /*!< Specifies the Off-State used in Idle state. + This parameter can be a value of @ref TIM_LL_EC_OSSI + + This feature can be modified afterwards using unitary function @ref LL_TIM_SetOffStates() + + @note This bit-field cannot be modified as long as LOCK level 2 has been programmed. */ + + uint32_t LockLevel; /*!< Specifies the LOCK level parameters. + This parameter can be a value of @ref TIM_LL_EC_LOCKLEVEL + + @note The LOCK bits can be written only once after the reset. Once the TIMx_BDTR register + has been written, their content is frozen until the next reset.*/ + + uint8_t DeadTime; /*!< Specifies the delay time between the switching-off and the + switching-on of the outputs. + This parameter can be a number between Min_Data = 0x00 and Max_Data = 0xFF. + + This feature can be modified afterwards using unitary function @ref LL_TIM_OC_SetDeadTime() + + @note This bit-field can not be modified as long as LOCK level 1, 2 or 3 has been programmed. */ + + uint16_t BreakState; /*!< Specifies whether the TIM Break input is enabled or not. + This parameter can be a value of @ref TIM_LL_EC_BREAK_ENABLE + + This feature can be modified afterwards using unitary functions @ref LL_TIM_EnableBRK() or @ref LL_TIM_DisableBRK() + + @note This bit-field can not be modified as long as LOCK level 1 has been programmed. */ + + uint32_t BreakPolarity; /*!< Specifies the TIM Break Input pin polarity. + This parameter can be a value of @ref TIM_LL_EC_BREAK_POLARITY + + This feature can be modified afterwards using unitary function @ref LL_TIM_ConfigBRK() + + @note This bit-field can not be modified as long as LOCK level 1 has been programmed. */ + + uint32_t AutomaticOutput; /*!< Specifies whether the TIM Automatic Output feature is enabled or not. + This parameter can be a value of @ref TIM_LL_EC_AUTOMATICOUTPUT_ENABLE + + This feature can be modified afterwards using unitary functions @ref LL_TIM_EnableAutomaticOutput() or @ref LL_TIM_DisableAutomaticOutput() + + @note This bit-field can not be modified as long as LOCK level 1 has been programmed. */ +} LL_TIM_BDTR_InitTypeDef; + +/** + * @} + */ +#endif /* USE_FULL_LL_DRIVER */ + +/* Exported constants --------------------------------------------------------*/ +/** @defgroup TIM_LL_Exported_Constants TIM Exported Constants + * @{ + */ + +/** @defgroup TIM_LL_EC_GET_FLAG Get Flags Defines + * @brief Flags defines which can be used with LL_TIM_ReadReg function. + * @{ + */ +#define LL_TIM_SR_UIF TIM_SR_UIF /*!< Update interrupt flag */ +#define LL_TIM_SR_CC1IF TIM_SR_CC1IF /*!< Capture/compare 1 interrupt flag */ +#define LL_TIM_SR_CC2IF TIM_SR_CC2IF /*!< Capture/compare 2 interrupt flag */ +#define LL_TIM_SR_CC3IF TIM_SR_CC3IF /*!< Capture/compare 3 interrupt flag */ +#define LL_TIM_SR_CC4IF TIM_SR_CC4IF /*!< Capture/compare 4 interrupt flag */ +#define LL_TIM_SR_COMIF TIM_SR_COMIF /*!< COM interrupt flag */ +#define LL_TIM_SR_TIF TIM_SR_TIF /*!< Trigger interrupt flag */ +#define LL_TIM_SR_BIF TIM_SR_BIF /*!< Break interrupt flag */ +#define LL_TIM_SR_CC1OF TIM_SR_CC1OF /*!< Capture/Compare 1 overcapture flag */ +#define LL_TIM_SR_CC2OF TIM_SR_CC2OF /*!< Capture/Compare 2 overcapture flag */ +#define LL_TIM_SR_CC3OF TIM_SR_CC3OF /*!< Capture/Compare 3 overcapture flag */ +#define LL_TIM_SR_CC4OF TIM_SR_CC4OF /*!< Capture/Compare 4 overcapture flag */ +/** + * @} + */ + +#if defined(USE_FULL_LL_DRIVER) +/** @defgroup TIM_LL_EC_BREAK_ENABLE Break Enable + * @{ + */ +#define LL_TIM_BREAK_DISABLE 0x00000000U /*!< Break function disabled */ +#define LL_TIM_BREAK_ENABLE TIM_BDTR_BKE /*!< Break function enabled */ +/** + * @} + */ + +/** @defgroup TIM_LL_EC_AUTOMATICOUTPUT_ENABLE Automatic output enable + * @{ + */ +#define LL_TIM_AUTOMATICOUTPUT_DISABLE 0x00000000U /*!< MOE can be set only by software */ +#define LL_TIM_AUTOMATICOUTPUT_ENABLE TIM_BDTR_AOE /*!< MOE can be set by software or automatically at the next update event */ +/** + * @} + */ +#endif /* USE_FULL_LL_DRIVER */ + +/** @defgroup TIM_LL_EC_IT IT Defines + * @brief IT defines which can be used with LL_TIM_ReadReg and LL_TIM_WriteReg functions. + * @{ + */ +#define LL_TIM_DIER_UIE TIM_DIER_UIE /*!< Update interrupt enable */ +#define LL_TIM_DIER_CC1IE TIM_DIER_CC1IE /*!< Capture/compare 1 interrupt enable */ +#define LL_TIM_DIER_CC2IE TIM_DIER_CC2IE /*!< Capture/compare 2 interrupt enable */ +#define LL_TIM_DIER_CC3IE TIM_DIER_CC3IE /*!< Capture/compare 3 interrupt enable */ +#define LL_TIM_DIER_CC4IE TIM_DIER_CC4IE /*!< Capture/compare 4 interrupt enable */ +#define LL_TIM_DIER_COMIE TIM_DIER_COMIE /*!< COM interrupt enable */ +#define LL_TIM_DIER_TIE TIM_DIER_TIE /*!< Trigger interrupt enable */ +#define LL_TIM_DIER_BIE TIM_DIER_BIE /*!< Break interrupt enable */ +/** + * @} + */ + +/** @defgroup TIM_LL_EC_UPDATESOURCE Update Source + * @{ + */ +#define LL_TIM_UPDATESOURCE_REGULAR 0x00000000U /*!< Counter overflow/underflow, Setting the UG bit or Update generation through the slave mode controller generates an update request */ +#define LL_TIM_UPDATESOURCE_COUNTER TIM_CR1_URS /*!< Only counter overflow/underflow generates an update request */ +/** + * @} + */ + +/** @defgroup TIM_LL_EC_ONEPULSEMODE One Pulse Mode + * @{ + */ +#define LL_TIM_ONEPULSEMODE_SINGLE TIM_CR1_OPM /*!< Counter is not stopped at update event */ +#define LL_TIM_ONEPULSEMODE_REPETITIVE 0x00000000U /*!< Counter stops counting at the next update event */ +/** + * @} + */ + +/** @defgroup TIM_LL_EC_COUNTERMODE Counter Mode + * @{ + */ +#define LL_TIM_COUNTERMODE_UP 0x00000000U /*!TIMx_CCRy else active.*/ +#define LL_TIM_OCMODE_PWM2 (TIM_CCMR1_OC1M_2 | TIM_CCMR1_OC1M_1 | TIM_CCMR1_OC1M_0) /*!TIMx_CCRy else inactive*/ +/** + * @} + */ + +/** @defgroup TIM_LL_EC_OCPOLARITY Output Configuration Polarity + * @{ + */ +#define LL_TIM_OCPOLARITY_HIGH 0x00000000U /*!< OCxactive high*/ +#define LL_TIM_OCPOLARITY_LOW TIM_CCER_CC1P /*!< OCxactive low*/ +/** + * @} + */ + +/** @defgroup TIM_LL_EC_OCIDLESTATE Output Configuration Idle State + * @{ + */ +#define LL_TIM_OCIDLESTATE_LOW 0x00000000U /*!__REG__, (__VALUE__)) + +/** + * @brief Read a value in TIM register. + * @param __INSTANCE__ TIM Instance + * @param __REG__ Register to be read + * @retval Register value + */ +#define LL_TIM_ReadReg(__INSTANCE__, __REG__) READ_REG((__INSTANCE__)->__REG__) +/** + * @} + */ + +/** @defgroup TIM_LL_EM_Exported_Macros Exported_Macros + * @{ + */ + +/** + * @brief HELPER macro calculating DTG[0:7] in the TIMx_BDTR register to achieve the requested dead time duration. + * @note ex: @ref __LL_TIM_CALC_DEADTIME (80000000, @ref LL_TIM_GetClockDivision (), 120); + * @param __TIMCLK__ timer input clock frequency (in Hz) + * @param __CKD__ This parameter can be one of the following values: + * @arg @ref LL_TIM_CLOCKDIVISION_DIV1 + * @arg @ref LL_TIM_CLOCKDIVISION_DIV2 + * @arg @ref LL_TIM_CLOCKDIVISION_DIV4 + * @param __DT__ deadtime duration (in ns) + * @retval DTG[0:7] + */ +#define __LL_TIM_CALC_DEADTIME(__TIMCLK__, __CKD__, __DT__) \ + ( (((uint64_t)((__DT__)*1000U)) < ((DT_DELAY_1+1U) * TIM_CALC_DTS((__TIMCLK__), (__CKD__)))) ? (uint8_t)(((uint64_t)((__DT__)*1000U) / TIM_CALC_DTS((__TIMCLK__), (__CKD__))) & DT_DELAY_1) : \ + (((uint64_t)((__DT__)*1000U)) < ((64U + (DT_DELAY_2+1U)) * 2U * TIM_CALC_DTS((__TIMCLK__), (__CKD__)))) ? (uint8_t)(DT_RANGE_2 | ((uint8_t)((uint8_t)((((uint64_t)((__DT__)*1000U))/ TIM_CALC_DTS((__TIMCLK__), (__CKD__))) >> 1U) - (uint8_t) 64) & DT_DELAY_2)) :\ + (((uint64_t)((__DT__)*1000U)) < ((32U + (DT_DELAY_3+1U)) * 8U * TIM_CALC_DTS((__TIMCLK__), (__CKD__)))) ? (uint8_t)(DT_RANGE_3 | ((uint8_t)((uint8_t)(((((uint64_t)(__DT__)*1000U))/ TIM_CALC_DTS((__TIMCLK__), (__CKD__))) >> 3U) - (uint8_t) 32) & DT_DELAY_3)) :\ + (((uint64_t)((__DT__)*1000U)) < ((32U + (DT_DELAY_4+1U)) * 16U * TIM_CALC_DTS((__TIMCLK__), (__CKD__)))) ? (uint8_t)(DT_RANGE_4 | ((uint8_t)((uint8_t)(((((uint64_t)(__DT__)*1000U))/ TIM_CALC_DTS((__TIMCLK__), (__CKD__))) >> 4U) - (uint8_t) 32) & DT_DELAY_4)) :\ + 0U) + +/** + * @brief HELPER macro calculating the prescaler value to achieve the required counter clock frequency. + * @note ex: @ref __LL_TIM_CALC_PSC (80000000, 1000000); + * @param __TIMCLK__ timer input clock frequency (in Hz) + * @param __CNTCLK__ counter clock frequency (in Hz) + * @retval Prescaler value (between Min_Data=0 and Max_Data=65535) + */ +#define __LL_TIM_CALC_PSC(__TIMCLK__, __CNTCLK__) \ + (((__TIMCLK__) >= (__CNTCLK__)) ? (uint32_t)(((__TIMCLK__)/(__CNTCLK__)) - 1U) : 0U) + +/** + * @brief HELPER macro calculating the auto-reload value to achieve the required output signal frequency. + * @note ex: @ref __LL_TIM_CALC_ARR (1000000, @ref LL_TIM_GetPrescaler (), 10000); + * @param __TIMCLK__ timer input clock frequency (in Hz) + * @param __PSC__ prescaler + * @param __FREQ__ output signal frequency (in Hz) + * @retval Auto-reload value (between Min_Data=0 and Max_Data=65535) + */ +#define __LL_TIM_CALC_ARR(__TIMCLK__, __PSC__, __FREQ__) \ + ((((__TIMCLK__)/((__PSC__) + 1U)) >= (__FREQ__)) ? (((__TIMCLK__)/((__FREQ__) * ((__PSC__) + 1U))) - 1U) : 0U) + +/** + * @brief HELPER macro calculating the compare value required to achieve the required timer output compare active/inactive delay. + * @note ex: @ref __LL_TIM_CALC_DELAY (1000000, @ref LL_TIM_GetPrescaler (), 10); + * @param __TIMCLK__ timer input clock frequency (in Hz) + * @param __PSC__ prescaler + * @param __DELAY__ timer output compare active/inactive delay (in us) + * @retval Compare value (between Min_Data=0 and Max_Data=65535) + */ +#define __LL_TIM_CALC_DELAY(__TIMCLK__, __PSC__, __DELAY__) \ + ((uint32_t)(((uint64_t)(__TIMCLK__) * (uint64_t)(__DELAY__)) \ + / ((uint64_t)1000000U * (uint64_t)((__PSC__) + 1U)))) + +/** + * @brief HELPER macro calculating the auto-reload value to achieve the required pulse duration (when the timer operates in one pulse mode). + * @note ex: @ref __LL_TIM_CALC_PULSE (1000000, @ref LL_TIM_GetPrescaler (), 10, 20); + * @param __TIMCLK__ timer input clock frequency (in Hz) + * @param __PSC__ prescaler + * @param __DELAY__ timer output compare active/inactive delay (in us) + * @param __PULSE__ pulse duration (in us) + * @retval Auto-reload value (between Min_Data=0 and Max_Data=65535) + */ +#define __LL_TIM_CALC_PULSE(__TIMCLK__, __PSC__, __DELAY__, __PULSE__) \ + ((uint32_t)(__LL_TIM_CALC_DELAY((__TIMCLK__), (__PSC__), (__PULSE__)) \ + + __LL_TIM_CALC_DELAY((__TIMCLK__), (__PSC__), (__DELAY__)))) + +/** + * @brief HELPER macro retrieving the ratio of the input capture prescaler + * @note ex: @ref __LL_TIM_GET_ICPSC_RATIO (@ref LL_TIM_IC_GetPrescaler ()); + * @param __ICPSC__ This parameter can be one of the following values: + * @arg @ref LL_TIM_ICPSC_DIV1 + * @arg @ref LL_TIM_ICPSC_DIV2 + * @arg @ref LL_TIM_ICPSC_DIV4 + * @arg @ref LL_TIM_ICPSC_DIV8 + * @retval Input capture prescaler ratio (1, 2, 4 or 8) + */ +#define __LL_TIM_GET_ICPSC_RATIO(__ICPSC__) \ + ((uint32_t)(0x01U << (((__ICPSC__) >> 16U) >> TIM_CCMR1_IC1PSC_Pos))) + + +/** + * @} + */ + + +/** + * @} + */ + +/* Exported functions --------------------------------------------------------*/ +/** @defgroup TIM_LL_Exported_Functions TIM Exported Functions + * @{ + */ + +/** @defgroup TIM_LL_EF_Time_Base Time Base configuration + * @{ + */ +/** + * @brief Enable timer counter. + * @rmtoll CR1 CEN LL_TIM_EnableCounter + * @param TIMx Timer instance + * @retval None + */ +__STATIC_INLINE void LL_TIM_EnableCounter(TIM_TypeDef *TIMx) +{ + SET_BIT(TIMx->CR1, TIM_CR1_CEN); +} + +/** + * @brief Disable timer counter. + * @rmtoll CR1 CEN LL_TIM_DisableCounter + * @param TIMx Timer instance + * @retval None + */ +__STATIC_INLINE void LL_TIM_DisableCounter(TIM_TypeDef *TIMx) +{ + CLEAR_BIT(TIMx->CR1, TIM_CR1_CEN); +} + +/** + * @brief Indicates whether the timer counter is enabled. + * @rmtoll CR1 CEN LL_TIM_IsEnabledCounter + * @param TIMx Timer instance + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_TIM_IsEnabledCounter(TIM_TypeDef *TIMx) +{ + return ((READ_BIT(TIMx->CR1, TIM_CR1_CEN) == (TIM_CR1_CEN)) ? 1UL : 0UL); +} + +/** + * @brief Enable update event generation. + * @rmtoll CR1 UDIS LL_TIM_EnableUpdateEvent + * @param TIMx Timer instance + * @retval None + */ +__STATIC_INLINE void LL_TIM_EnableUpdateEvent(TIM_TypeDef *TIMx) +{ + CLEAR_BIT(TIMx->CR1, TIM_CR1_UDIS); +} + +/** + * @brief Disable update event generation. + * @rmtoll CR1 UDIS LL_TIM_DisableUpdateEvent + * @param TIMx Timer instance + * @retval None + */ +__STATIC_INLINE void LL_TIM_DisableUpdateEvent(TIM_TypeDef *TIMx) +{ + SET_BIT(TIMx->CR1, TIM_CR1_UDIS); +} + +/** + * @brief Indicates whether update event generation is enabled. + * @rmtoll CR1 UDIS LL_TIM_IsEnabledUpdateEvent + * @param TIMx Timer instance + * @retval Inverted state of bit (0 or 1). + */ +__STATIC_INLINE uint32_t LL_TIM_IsEnabledUpdateEvent(TIM_TypeDef *TIMx) +{ + return ((READ_BIT(TIMx->CR1, TIM_CR1_UDIS) == (uint32_t)RESET) ? 1UL : 0UL); +} + +/** + * @brief Set update event source + * @note Update event source set to LL_TIM_UPDATESOURCE_REGULAR: any of the following events + * generate an update interrupt or DMA request if enabled: + * - Counter overflow/underflow + * - Setting the UG bit + * - Update generation through the slave mode controller + * @note Update event source set to LL_TIM_UPDATESOURCE_COUNTER: only counter + * overflow/underflow generates an update interrupt or DMA request if enabled. + * @rmtoll CR1 URS LL_TIM_SetUpdateSource + * @param TIMx Timer instance + * @param UpdateSource This parameter can be one of the following values: + * @arg @ref LL_TIM_UPDATESOURCE_REGULAR + * @arg @ref LL_TIM_UPDATESOURCE_COUNTER + * @retval None + */ +__STATIC_INLINE void LL_TIM_SetUpdateSource(TIM_TypeDef *TIMx, uint32_t UpdateSource) +{ + MODIFY_REG(TIMx->CR1, TIM_CR1_URS, UpdateSource); +} + +/** + * @brief Get actual event update source + * @rmtoll CR1 URS LL_TIM_GetUpdateSource + * @param TIMx Timer instance + * @retval Returned value can be one of the following values: + * @arg @ref LL_TIM_UPDATESOURCE_REGULAR + * @arg @ref LL_TIM_UPDATESOURCE_COUNTER + */ +__STATIC_INLINE uint32_t LL_TIM_GetUpdateSource(TIM_TypeDef *TIMx) +{ + return (uint32_t)(READ_BIT(TIMx->CR1, TIM_CR1_URS)); +} + +/** + * @brief Set one pulse mode (one shot v.s. repetitive). + * @rmtoll CR1 OPM LL_TIM_SetOnePulseMode + * @param TIMx Timer instance + * @param OnePulseMode This parameter can be one of the following values: + * @arg @ref LL_TIM_ONEPULSEMODE_SINGLE + * @arg @ref LL_TIM_ONEPULSEMODE_REPETITIVE + * @retval None + */ +__STATIC_INLINE void LL_TIM_SetOnePulseMode(TIM_TypeDef *TIMx, uint32_t OnePulseMode) +{ + MODIFY_REG(TIMx->CR1, TIM_CR1_OPM, OnePulseMode); +} + +/** + * @brief Get actual one pulse mode. + * @rmtoll CR1 OPM LL_TIM_GetOnePulseMode + * @param TIMx Timer instance + * @retval Returned value can be one of the following values: + * @arg @ref LL_TIM_ONEPULSEMODE_SINGLE + * @arg @ref LL_TIM_ONEPULSEMODE_REPETITIVE + */ +__STATIC_INLINE uint32_t LL_TIM_GetOnePulseMode(TIM_TypeDef *TIMx) +{ + return (uint32_t)(READ_BIT(TIMx->CR1, TIM_CR1_OPM)); +} + +/** + * @brief Set the timer counter counting mode. + * @note Macro IS_TIM_COUNTER_MODE_SELECT_INSTANCE(TIMx) can be used to + * check whether or not the counter mode selection feature is supported + * by a timer instance. + * @note Switching from Center Aligned counter mode to Edge counter mode (or reverse) + * requires a timer reset to avoid unexpected direction + * due to DIR bit readonly in center aligned mode. + * @rmtoll CR1 DIR LL_TIM_SetCounterMode\n + * CR1 CMS LL_TIM_SetCounterMode + * @param TIMx Timer instance + * @param CounterMode This parameter can be one of the following values: + * @arg @ref LL_TIM_COUNTERMODE_UP + * @arg @ref LL_TIM_COUNTERMODE_DOWN + * @arg @ref LL_TIM_COUNTERMODE_CENTER_UP + * @arg @ref LL_TIM_COUNTERMODE_CENTER_DOWN + * @arg @ref LL_TIM_COUNTERMODE_CENTER_UP_DOWN + * @retval None + */ +__STATIC_INLINE void LL_TIM_SetCounterMode(TIM_TypeDef *TIMx, uint32_t CounterMode) +{ + MODIFY_REG(TIMx->CR1, (TIM_CR1_DIR | TIM_CR1_CMS), CounterMode); +} + +/** + * @brief Get actual counter mode. + * @note Macro IS_TIM_COUNTER_MODE_SELECT_INSTANCE(TIMx) can be used to + * check whether or not the counter mode selection feature is supported + * by a timer instance. + * @rmtoll CR1 DIR LL_TIM_GetCounterMode\n + * CR1 CMS LL_TIM_GetCounterMode + * @param TIMx Timer instance + * @retval Returned value can be one of the following values: + * @arg @ref LL_TIM_COUNTERMODE_UP + * @arg @ref LL_TIM_COUNTERMODE_DOWN + * @arg @ref LL_TIM_COUNTERMODE_CENTER_UP + * @arg @ref LL_TIM_COUNTERMODE_CENTER_DOWN + * @arg @ref LL_TIM_COUNTERMODE_CENTER_UP_DOWN + */ +__STATIC_INLINE uint32_t LL_TIM_GetCounterMode(TIM_TypeDef *TIMx) +{ + return (uint32_t)(READ_BIT(TIMx->CR1, TIM_CR1_DIR | TIM_CR1_CMS)); +} + +/** + * @brief Enable auto-reload (ARR) preload. + * @rmtoll CR1 ARPE LL_TIM_EnableARRPreload + * @param TIMx Timer instance + * @retval None + */ +__STATIC_INLINE void LL_TIM_EnableARRPreload(TIM_TypeDef *TIMx) +{ + SET_BIT(TIMx->CR1, TIM_CR1_ARPE); +} + +/** + * @brief Disable auto-reload (ARR) preload. + * @rmtoll CR1 ARPE LL_TIM_DisableARRPreload + * @param TIMx Timer instance + * @retval None + */ +__STATIC_INLINE void LL_TIM_DisableARRPreload(TIM_TypeDef *TIMx) +{ + CLEAR_BIT(TIMx->CR1, TIM_CR1_ARPE); +} + +/** + * @brief Indicates whether auto-reload (ARR) preload is enabled. + * @rmtoll CR1 ARPE LL_TIM_IsEnabledARRPreload + * @param TIMx Timer instance + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_TIM_IsEnabledARRPreload(TIM_TypeDef *TIMx) +{ + return ((READ_BIT(TIMx->CR1, TIM_CR1_ARPE) == (TIM_CR1_ARPE)) ? 1UL : 0UL); +} + +/** + * @brief Set the division ratio between the timer clock and the sampling clock used by the dead-time generators (when supported) and the digital filters. + * @note Macro IS_TIM_CLOCK_DIVISION_INSTANCE(TIMx) can be used to check + * whether or not the clock division feature is supported by the timer + * instance. + * @rmtoll CR1 CKD LL_TIM_SetClockDivision + * @param TIMx Timer instance + * @param ClockDivision This parameter can be one of the following values: + * @arg @ref LL_TIM_CLOCKDIVISION_DIV1 + * @arg @ref LL_TIM_CLOCKDIVISION_DIV2 + * @arg @ref LL_TIM_CLOCKDIVISION_DIV4 + * @retval None + */ +__STATIC_INLINE void LL_TIM_SetClockDivision(TIM_TypeDef *TIMx, uint32_t ClockDivision) +{ + MODIFY_REG(TIMx->CR1, TIM_CR1_CKD, ClockDivision); +} + +/** + * @brief Get the actual division ratio between the timer clock and the sampling clock used by the dead-time generators (when supported) and the digital filters. + * @note Macro IS_TIM_CLOCK_DIVISION_INSTANCE(TIMx) can be used to check + * whether or not the clock division feature is supported by the timer + * instance. + * @rmtoll CR1 CKD LL_TIM_GetClockDivision + * @param TIMx Timer instance + * @retval Returned value can be one of the following values: + * @arg @ref LL_TIM_CLOCKDIVISION_DIV1 + * @arg @ref LL_TIM_CLOCKDIVISION_DIV2 + * @arg @ref LL_TIM_CLOCKDIVISION_DIV4 + */ +__STATIC_INLINE uint32_t LL_TIM_GetClockDivision(TIM_TypeDef *TIMx) +{ + return (uint32_t)(READ_BIT(TIMx->CR1, TIM_CR1_CKD)); +} + +/** + * @brief Set the counter value. + * @rmtoll CNT CNT LL_TIM_SetCounter + * @param TIMx Timer instance + * @param Counter Counter value (between Min_Data=0 and Max_Data=0xFFFF) + * @retval None + */ +__STATIC_INLINE void LL_TIM_SetCounter(TIM_TypeDef *TIMx, uint32_t Counter) +{ + WRITE_REG(TIMx->CNT, Counter); +} + +/** + * @brief Get the counter value. + * @rmtoll CNT CNT LL_TIM_GetCounter + * @param TIMx Timer instance + * @retval Counter value (between Min_Data=0 and Max_Data=0xFFFF) + */ +__STATIC_INLINE uint32_t LL_TIM_GetCounter(TIM_TypeDef *TIMx) +{ + return (uint32_t)(READ_REG(TIMx->CNT)); +} + +/** + * @brief Get the current direction of the counter + * @rmtoll CR1 DIR LL_TIM_GetDirection + * @param TIMx Timer instance + * @retval Returned value can be one of the following values: + * @arg @ref LL_TIM_COUNTERDIRECTION_UP + * @arg @ref LL_TIM_COUNTERDIRECTION_DOWN + */ +__STATIC_INLINE uint32_t LL_TIM_GetDirection(TIM_TypeDef *TIMx) +{ + return (uint32_t)(READ_BIT(TIMx->CR1, TIM_CR1_DIR)); +} + +/** + * @brief Set the prescaler value. + * @note The counter clock frequency CK_CNT is equal to fCK_PSC / (PSC[15:0] + 1). + * @note The prescaler can be changed on the fly as this control register is buffered. The new + * prescaler ratio is taken into account at the next update event. + * @note Helper macro @ref __LL_TIM_CALC_PSC can be used to calculate the Prescaler parameter + * @rmtoll PSC PSC LL_TIM_SetPrescaler + * @param TIMx Timer instance + * @param Prescaler between Min_Data=0 and Max_Data=65535 + * @retval None + */ +__STATIC_INLINE void LL_TIM_SetPrescaler(TIM_TypeDef *TIMx, uint32_t Prescaler) +{ + WRITE_REG(TIMx->PSC, Prescaler); +} + +/** + * @brief Get the prescaler value. + * @rmtoll PSC PSC LL_TIM_GetPrescaler + * @param TIMx Timer instance + * @retval Prescaler value between Min_Data=0 and Max_Data=65535 + */ +__STATIC_INLINE uint32_t LL_TIM_GetPrescaler(TIM_TypeDef *TIMx) +{ + return (uint32_t)(READ_REG(TIMx->PSC)); +} + +/** + * @brief Set the auto-reload value. + * @note The counter is blocked while the auto-reload value is null. + * @note Helper macro @ref __LL_TIM_CALC_ARR can be used to calculate the AutoReload parameter + * @rmtoll ARR ARR LL_TIM_SetAutoReload + * @param TIMx Timer instance + * @param AutoReload between Min_Data=0 and Max_Data=65535 + * @retval None + */ +__STATIC_INLINE void LL_TIM_SetAutoReload(TIM_TypeDef *TIMx, uint32_t AutoReload) +{ + WRITE_REG(TIMx->ARR, AutoReload); +} + +/** + * @brief Get the auto-reload value. + * @rmtoll ARR ARR LL_TIM_GetAutoReload + * @param TIMx Timer instance + * @retval Auto-reload value + */ +__STATIC_INLINE uint32_t LL_TIM_GetAutoReload(TIM_TypeDef *TIMx) +{ + return (uint32_t)(READ_REG(TIMx->ARR)); +} + +/** + * @brief Set the repetition counter value. + * @note Macro IS_TIM_REPETITION_COUNTER_INSTANCE(TIMx) can be used to check + * whether or not a timer instance supports a repetition counter. + * @rmtoll RCR REP LL_TIM_SetRepetitionCounter + * @param TIMx Timer instance + * @param RepetitionCounter between Min_Data=0 and Max_Data=255 + * @retval None + */ +__STATIC_INLINE void LL_TIM_SetRepetitionCounter(TIM_TypeDef *TIMx, uint32_t RepetitionCounter) +{ + WRITE_REG(TIMx->RCR, RepetitionCounter); +} + +/** + * @brief Get the repetition counter value. + * @note Macro IS_TIM_REPETITION_COUNTER_INSTANCE(TIMx) can be used to check + * whether or not a timer instance supports a repetition counter. + * @rmtoll RCR REP LL_TIM_GetRepetitionCounter + * @param TIMx Timer instance + * @retval Repetition counter value + */ +__STATIC_INLINE uint32_t LL_TIM_GetRepetitionCounter(TIM_TypeDef *TIMx) +{ + return (uint32_t)(READ_REG(TIMx->RCR)); +} + +/** + * @} + */ + +/** @defgroup TIM_LL_EF_Capture_Compare Capture Compare configuration + * @{ + */ +/** + * @brief Enable the capture/compare control bits (CCxE, CCxNE and OCxM) preload. + * @note CCxE, CCxNE and OCxM bits are preloaded, after having been written, + * they are updated only when a commutation event (COM) occurs. + * @note Only on channels that have a complementary output. + * @note Macro IS_TIM_COMMUTATION_EVENT_INSTANCE(TIMx) can be used to check + * whether or not a timer instance is able to generate a commutation event. + * @rmtoll CR2 CCPC LL_TIM_CC_EnablePreload + * @param TIMx Timer instance + * @retval None + */ +__STATIC_INLINE void LL_TIM_CC_EnablePreload(TIM_TypeDef *TIMx) +{ + SET_BIT(TIMx->CR2, TIM_CR2_CCPC); +} + +/** + * @brief Disable the capture/compare control bits (CCxE, CCxNE and OCxM) preload. + * @note Macro IS_TIM_COMMUTATION_EVENT_INSTANCE(TIMx) can be used to check + * whether or not a timer instance is able to generate a commutation event. + * @rmtoll CR2 CCPC LL_TIM_CC_DisablePreload + * @param TIMx Timer instance + * @retval None + */ +__STATIC_INLINE void LL_TIM_CC_DisablePreload(TIM_TypeDef *TIMx) +{ + CLEAR_BIT(TIMx->CR2, TIM_CR2_CCPC); +} + +/** + * @brief Set the updated source of the capture/compare control bits (CCxE, CCxNE and OCxM). + * @note Macro IS_TIM_COMMUTATION_EVENT_INSTANCE(TIMx) can be used to check + * whether or not a timer instance is able to generate a commutation event. + * @rmtoll CR2 CCUS LL_TIM_CC_SetUpdate + * @param TIMx Timer instance + * @param CCUpdateSource This parameter can be one of the following values: + * @arg @ref LL_TIM_CCUPDATESOURCE_COMG_ONLY + * @arg @ref LL_TIM_CCUPDATESOURCE_COMG_AND_TRGI + * @retval None + */ +__STATIC_INLINE void LL_TIM_CC_SetUpdate(TIM_TypeDef *TIMx, uint32_t CCUpdateSource) +{ + MODIFY_REG(TIMx->CR2, TIM_CR2_CCUS, CCUpdateSource); +} + +/** + * @brief Set the trigger of the capture/compare DMA request. + * @rmtoll CR2 CCDS LL_TIM_CC_SetDMAReqTrigger + * @param TIMx Timer instance + * @param DMAReqTrigger This parameter can be one of the following values: + * @arg @ref LL_TIM_CCDMAREQUEST_CC + * @arg @ref LL_TIM_CCDMAREQUEST_UPDATE + * @retval None + */ +__STATIC_INLINE void LL_TIM_CC_SetDMAReqTrigger(TIM_TypeDef *TIMx, uint32_t DMAReqTrigger) +{ + MODIFY_REG(TIMx->CR2, TIM_CR2_CCDS, DMAReqTrigger); +} + +/** + * @brief Get actual trigger of the capture/compare DMA request. + * @rmtoll CR2 CCDS LL_TIM_CC_GetDMAReqTrigger + * @param TIMx Timer instance + * @retval Returned value can be one of the following values: + * @arg @ref LL_TIM_CCDMAREQUEST_CC + * @arg @ref LL_TIM_CCDMAREQUEST_UPDATE + */ +__STATIC_INLINE uint32_t LL_TIM_CC_GetDMAReqTrigger(TIM_TypeDef *TIMx) +{ + return (uint32_t)(READ_BIT(TIMx->CR2, TIM_CR2_CCDS)); +} + +/** + * @brief Set the lock level to freeze the + * configuration of several capture/compare parameters. + * @note Macro IS_TIM_BREAK_INSTANCE(TIMx) can be used to check whether or not + * the lock mechanism is supported by a timer instance. + * @rmtoll BDTR LOCK LL_TIM_CC_SetLockLevel + * @param TIMx Timer instance + * @param LockLevel This parameter can be one of the following values: + * @arg @ref LL_TIM_LOCKLEVEL_OFF + * @arg @ref LL_TIM_LOCKLEVEL_1 + * @arg @ref LL_TIM_LOCKLEVEL_2 + * @arg @ref LL_TIM_LOCKLEVEL_3 + * @retval None + */ +__STATIC_INLINE void LL_TIM_CC_SetLockLevel(TIM_TypeDef *TIMx, uint32_t LockLevel) +{ + MODIFY_REG(TIMx->BDTR, TIM_BDTR_LOCK, LockLevel); +} + +/** + * @brief Enable capture/compare channels. + * @rmtoll CCER CC1E LL_TIM_CC_EnableChannel\n + * CCER CC1NE LL_TIM_CC_EnableChannel\n + * CCER CC2E LL_TIM_CC_EnableChannel\n + * CCER CC2NE LL_TIM_CC_EnableChannel\n + * CCER CC3E LL_TIM_CC_EnableChannel\n + * CCER CC3NE LL_TIM_CC_EnableChannel\n + * CCER CC4E LL_TIM_CC_EnableChannel + * @param TIMx Timer instance + * @param Channels This parameter can be a combination of the following values: + * @arg @ref LL_TIM_CHANNEL_CH1 + * @arg @ref LL_TIM_CHANNEL_CH1N + * @arg @ref LL_TIM_CHANNEL_CH2 + * @arg @ref LL_TIM_CHANNEL_CH2N + * @arg @ref LL_TIM_CHANNEL_CH3 + * @arg @ref LL_TIM_CHANNEL_CH3N + * @arg @ref LL_TIM_CHANNEL_CH4 + * @retval None + */ +__STATIC_INLINE void LL_TIM_CC_EnableChannel(TIM_TypeDef *TIMx, uint32_t Channels) +{ + SET_BIT(TIMx->CCER, Channels); +} + +/** + * @brief Disable capture/compare channels. + * @rmtoll CCER CC1E LL_TIM_CC_DisableChannel\n + * CCER CC1NE LL_TIM_CC_DisableChannel\n + * CCER CC2E LL_TIM_CC_DisableChannel\n + * CCER CC2NE LL_TIM_CC_DisableChannel\n + * CCER CC3E LL_TIM_CC_DisableChannel\n + * CCER CC3NE LL_TIM_CC_DisableChannel\n + * CCER CC4E LL_TIM_CC_DisableChannel + * @param TIMx Timer instance + * @param Channels This parameter can be a combination of the following values: + * @arg @ref LL_TIM_CHANNEL_CH1 + * @arg @ref LL_TIM_CHANNEL_CH1N + * @arg @ref LL_TIM_CHANNEL_CH2 + * @arg @ref LL_TIM_CHANNEL_CH2N + * @arg @ref LL_TIM_CHANNEL_CH3 + * @arg @ref LL_TIM_CHANNEL_CH3N + * @arg @ref LL_TIM_CHANNEL_CH4 + * @retval None + */ +__STATIC_INLINE void LL_TIM_CC_DisableChannel(TIM_TypeDef *TIMx, uint32_t Channels) +{ + CLEAR_BIT(TIMx->CCER, Channels); +} + +/** + * @brief Indicate whether channel(s) is(are) enabled. + * @rmtoll CCER CC1E LL_TIM_CC_IsEnabledChannel\n + * CCER CC1NE LL_TIM_CC_IsEnabledChannel\n + * CCER CC2E LL_TIM_CC_IsEnabledChannel\n + * CCER CC2NE LL_TIM_CC_IsEnabledChannel\n + * CCER CC3E LL_TIM_CC_IsEnabledChannel\n + * CCER CC3NE LL_TIM_CC_IsEnabledChannel\n + * CCER CC4E LL_TIM_CC_IsEnabledChannel + * @param TIMx Timer instance + * @param Channels This parameter can be a combination of the following values: + * @arg @ref LL_TIM_CHANNEL_CH1 + * @arg @ref LL_TIM_CHANNEL_CH1N + * @arg @ref LL_TIM_CHANNEL_CH2 + * @arg @ref LL_TIM_CHANNEL_CH2N + * @arg @ref LL_TIM_CHANNEL_CH3 + * @arg @ref LL_TIM_CHANNEL_CH3N + * @arg @ref LL_TIM_CHANNEL_CH4 + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_TIM_CC_IsEnabledChannel(TIM_TypeDef *TIMx, uint32_t Channels) +{ + return ((READ_BIT(TIMx->CCER, Channels) == (Channels)) ? 1UL : 0UL); +} + +/** + * @} + */ + +/** @defgroup TIM_LL_EF_Output_Channel Output channel configuration + * @{ + */ +/** + * @brief Configure an output channel. + * @rmtoll CCMR1 CC1S LL_TIM_OC_ConfigOutput\n + * CCMR1 CC2S LL_TIM_OC_ConfigOutput\n + * CCMR2 CC3S LL_TIM_OC_ConfigOutput\n + * CCMR2 CC4S LL_TIM_OC_ConfigOutput\n + * CCER CC1P LL_TIM_OC_ConfigOutput\n + * CCER CC2P LL_TIM_OC_ConfigOutput\n + * CCER CC3P LL_TIM_OC_ConfigOutput\n + * CCER CC4P LL_TIM_OC_ConfigOutput\n + * CR2 OIS1 LL_TIM_OC_ConfigOutput\n + * CR2 OIS2 LL_TIM_OC_ConfigOutput\n + * CR2 OIS3 LL_TIM_OC_ConfigOutput\n + * CR2 OIS4 LL_TIM_OC_ConfigOutput + * @param TIMx Timer instance + * @param Channel This parameter can be one of the following values: + * @arg @ref LL_TIM_CHANNEL_CH1 + * @arg @ref LL_TIM_CHANNEL_CH2 + * @arg @ref LL_TIM_CHANNEL_CH3 + * @arg @ref LL_TIM_CHANNEL_CH4 + * @param Configuration This parameter must be a combination of all the following values: + * @arg @ref LL_TIM_OCPOLARITY_HIGH or @ref LL_TIM_OCPOLARITY_LOW + * @arg @ref LL_TIM_OCIDLESTATE_LOW or @ref LL_TIM_OCIDLESTATE_HIGH + * @retval None + */ +__STATIC_INLINE void LL_TIM_OC_ConfigOutput(TIM_TypeDef *TIMx, uint32_t Channel, uint32_t Configuration) +{ + register uint8_t iChannel = TIM_GET_CHANNEL_INDEX(Channel); + register __IO uint32_t *pReg = (__IO uint32_t *)((uint32_t)((uint32_t)(&TIMx->CCMR1) + OFFSET_TAB_CCMRx[iChannel])); + CLEAR_BIT(*pReg, (TIM_CCMR1_CC1S << SHIFT_TAB_OCxx[iChannel])); + MODIFY_REG(TIMx->CCER, (TIM_CCER_CC1P << SHIFT_TAB_CCxP[iChannel]), + (Configuration & TIM_CCER_CC1P) << SHIFT_TAB_CCxP[iChannel]); + MODIFY_REG(TIMx->CR2, (TIM_CR2_OIS1 << SHIFT_TAB_OISx[iChannel]), + (Configuration & TIM_CR2_OIS1) << SHIFT_TAB_OISx[iChannel]); +} + +/** + * @brief Define the behavior of the output reference signal OCxREF from which + * OCx and OCxN (when relevant) are derived. + * @rmtoll CCMR1 OC1M LL_TIM_OC_SetMode\n + * CCMR1 OC2M LL_TIM_OC_SetMode\n + * CCMR2 OC3M LL_TIM_OC_SetMode\n + * CCMR2 OC4M LL_TIM_OC_SetMode + * @param TIMx Timer instance + * @param Channel This parameter can be one of the following values: + * @arg @ref LL_TIM_CHANNEL_CH1 + * @arg @ref LL_TIM_CHANNEL_CH2 + * @arg @ref LL_TIM_CHANNEL_CH3 + * @arg @ref LL_TIM_CHANNEL_CH4 + * @param Mode This parameter can be one of the following values: + * @arg @ref LL_TIM_OCMODE_FROZEN + * @arg @ref LL_TIM_OCMODE_ACTIVE + * @arg @ref LL_TIM_OCMODE_INACTIVE + * @arg @ref LL_TIM_OCMODE_TOGGLE + * @arg @ref LL_TIM_OCMODE_FORCED_INACTIVE + * @arg @ref LL_TIM_OCMODE_FORCED_ACTIVE + * @arg @ref LL_TIM_OCMODE_PWM1 + * @arg @ref LL_TIM_OCMODE_PWM2 + * @retval None + */ +__STATIC_INLINE void LL_TIM_OC_SetMode(TIM_TypeDef *TIMx, uint32_t Channel, uint32_t Mode) +{ + register uint8_t iChannel = TIM_GET_CHANNEL_INDEX(Channel); + register __IO uint32_t *pReg = (__IO uint32_t *)((uint32_t)((uint32_t)(&TIMx->CCMR1) + OFFSET_TAB_CCMRx[iChannel])); + MODIFY_REG(*pReg, ((TIM_CCMR1_OC1M | TIM_CCMR1_CC1S) << SHIFT_TAB_OCxx[iChannel]), Mode << SHIFT_TAB_OCxx[iChannel]); +} + +/** + * @brief Get the output compare mode of an output channel. + * @rmtoll CCMR1 OC1M LL_TIM_OC_GetMode\n + * CCMR1 OC2M LL_TIM_OC_GetMode\n + * CCMR2 OC3M LL_TIM_OC_GetMode\n + * CCMR2 OC4M LL_TIM_OC_GetMode + * @param TIMx Timer instance + * @param Channel This parameter can be one of the following values: + * @arg @ref LL_TIM_CHANNEL_CH1 + * @arg @ref LL_TIM_CHANNEL_CH2 + * @arg @ref LL_TIM_CHANNEL_CH3 + * @arg @ref LL_TIM_CHANNEL_CH4 + * @retval Returned value can be one of the following values: + * @arg @ref LL_TIM_OCMODE_FROZEN + * @arg @ref LL_TIM_OCMODE_ACTIVE + * @arg @ref LL_TIM_OCMODE_INACTIVE + * @arg @ref LL_TIM_OCMODE_TOGGLE + * @arg @ref LL_TIM_OCMODE_FORCED_INACTIVE + * @arg @ref LL_TIM_OCMODE_FORCED_ACTIVE + * @arg @ref LL_TIM_OCMODE_PWM1 + * @arg @ref LL_TIM_OCMODE_PWM2 + */ +__STATIC_INLINE uint32_t LL_TIM_OC_GetMode(TIM_TypeDef *TIMx, uint32_t Channel) +{ + register uint8_t iChannel = TIM_GET_CHANNEL_INDEX(Channel); + register const __IO uint32_t *pReg = (__IO uint32_t *)((uint32_t)((uint32_t)(&TIMx->CCMR1) + OFFSET_TAB_CCMRx[iChannel])); + return (READ_BIT(*pReg, ((TIM_CCMR1_OC1M | TIM_CCMR1_CC1S) << SHIFT_TAB_OCxx[iChannel])) >> SHIFT_TAB_OCxx[iChannel]); +} + +/** + * @brief Set the polarity of an output channel. + * @rmtoll CCER CC1P LL_TIM_OC_SetPolarity\n + * CCER CC1NP LL_TIM_OC_SetPolarity\n + * CCER CC2P LL_TIM_OC_SetPolarity\n + * CCER CC2NP LL_TIM_OC_SetPolarity\n + * CCER CC3P LL_TIM_OC_SetPolarity\n + * CCER CC3NP LL_TIM_OC_SetPolarity\n + * CCER CC4P LL_TIM_OC_SetPolarity + * @param TIMx Timer instance + * @param Channel This parameter can be one of the following values: + * @arg @ref LL_TIM_CHANNEL_CH1 + * @arg @ref LL_TIM_CHANNEL_CH1N + * @arg @ref LL_TIM_CHANNEL_CH2 + * @arg @ref LL_TIM_CHANNEL_CH2N + * @arg @ref LL_TIM_CHANNEL_CH3 + * @arg @ref LL_TIM_CHANNEL_CH3N + * @arg @ref LL_TIM_CHANNEL_CH4 + * @param Polarity This parameter can be one of the following values: + * @arg @ref LL_TIM_OCPOLARITY_HIGH + * @arg @ref LL_TIM_OCPOLARITY_LOW + * @retval None + */ +__STATIC_INLINE void LL_TIM_OC_SetPolarity(TIM_TypeDef *TIMx, uint32_t Channel, uint32_t Polarity) +{ + register uint8_t iChannel = TIM_GET_CHANNEL_INDEX(Channel); + MODIFY_REG(TIMx->CCER, (TIM_CCER_CC1P << SHIFT_TAB_CCxP[iChannel]), Polarity << SHIFT_TAB_CCxP[iChannel]); +} + +/** + * @brief Get the polarity of an output channel. + * @rmtoll CCER CC1P LL_TIM_OC_GetPolarity\n + * CCER CC1NP LL_TIM_OC_GetPolarity\n + * CCER CC2P LL_TIM_OC_GetPolarity\n + * CCER CC2NP LL_TIM_OC_GetPolarity\n + * CCER CC3P LL_TIM_OC_GetPolarity\n + * CCER CC3NP LL_TIM_OC_GetPolarity\n + * CCER CC4P LL_TIM_OC_GetPolarity + * @param TIMx Timer instance + * @param Channel This parameter can be one of the following values: + * @arg @ref LL_TIM_CHANNEL_CH1 + * @arg @ref LL_TIM_CHANNEL_CH1N + * @arg @ref LL_TIM_CHANNEL_CH2 + * @arg @ref LL_TIM_CHANNEL_CH2N + * @arg @ref LL_TIM_CHANNEL_CH3 + * @arg @ref LL_TIM_CHANNEL_CH3N + * @arg @ref LL_TIM_CHANNEL_CH4 + * @retval Returned value can be one of the following values: + * @arg @ref LL_TIM_OCPOLARITY_HIGH + * @arg @ref LL_TIM_OCPOLARITY_LOW + */ +__STATIC_INLINE uint32_t LL_TIM_OC_GetPolarity(TIM_TypeDef *TIMx, uint32_t Channel) +{ + register uint8_t iChannel = TIM_GET_CHANNEL_INDEX(Channel); + return (READ_BIT(TIMx->CCER, (TIM_CCER_CC1P << SHIFT_TAB_CCxP[iChannel])) >> SHIFT_TAB_CCxP[iChannel]); +} + +/** + * @brief Set the IDLE state of an output channel + * @note This function is significant only for the timer instances + * supporting the break feature. Macro IS_TIM_BREAK_INSTANCE(TIMx) + * can be used to check whether or not a timer instance provides + * a break input. + * @rmtoll CR2 OIS1 LL_TIM_OC_SetIdleState\n + * CR2 OIS1N LL_TIM_OC_SetIdleState\n + * CR2 OIS2 LL_TIM_OC_SetIdleState\n + * CR2 OIS2N LL_TIM_OC_SetIdleState\n + * CR2 OIS3 LL_TIM_OC_SetIdleState\n + * CR2 OIS3N LL_TIM_OC_SetIdleState\n + * CR2 OIS4 LL_TIM_OC_SetIdleState + * @param TIMx Timer instance + * @param Channel This parameter can be one of the following values: + * @arg @ref LL_TIM_CHANNEL_CH1 + * @arg @ref LL_TIM_CHANNEL_CH1N + * @arg @ref LL_TIM_CHANNEL_CH2 + * @arg @ref LL_TIM_CHANNEL_CH2N + * @arg @ref LL_TIM_CHANNEL_CH3 + * @arg @ref LL_TIM_CHANNEL_CH3N + * @arg @ref LL_TIM_CHANNEL_CH4 + * @param IdleState This parameter can be one of the following values: + * @arg @ref LL_TIM_OCIDLESTATE_LOW + * @arg @ref LL_TIM_OCIDLESTATE_HIGH + * @retval None + */ +__STATIC_INLINE void LL_TIM_OC_SetIdleState(TIM_TypeDef *TIMx, uint32_t Channel, uint32_t IdleState) +{ + register uint8_t iChannel = TIM_GET_CHANNEL_INDEX(Channel); + MODIFY_REG(TIMx->CR2, (TIM_CR2_OIS1 << SHIFT_TAB_OISx[iChannel]), IdleState << SHIFT_TAB_OISx[iChannel]); +} + +/** + * @brief Get the IDLE state of an output channel + * @rmtoll CR2 OIS1 LL_TIM_OC_GetIdleState\n + * CR2 OIS1N LL_TIM_OC_GetIdleState\n + * CR2 OIS2 LL_TIM_OC_GetIdleState\n + * CR2 OIS2N LL_TIM_OC_GetIdleState\n + * CR2 OIS3 LL_TIM_OC_GetIdleState\n + * CR2 OIS3N LL_TIM_OC_GetIdleState\n + * CR2 OIS4 LL_TIM_OC_GetIdleState + * @param TIMx Timer instance + * @param Channel This parameter can be one of the following values: + * @arg @ref LL_TIM_CHANNEL_CH1 + * @arg @ref LL_TIM_CHANNEL_CH1N + * @arg @ref LL_TIM_CHANNEL_CH2 + * @arg @ref LL_TIM_CHANNEL_CH2N + * @arg @ref LL_TIM_CHANNEL_CH3 + * @arg @ref LL_TIM_CHANNEL_CH3N + * @arg @ref LL_TIM_CHANNEL_CH4 + * @retval Returned value can be one of the following values: + * @arg @ref LL_TIM_OCIDLESTATE_LOW + * @arg @ref LL_TIM_OCIDLESTATE_HIGH + */ +__STATIC_INLINE uint32_t LL_TIM_OC_GetIdleState(TIM_TypeDef *TIMx, uint32_t Channel) +{ + register uint8_t iChannel = TIM_GET_CHANNEL_INDEX(Channel); + return (READ_BIT(TIMx->CR2, (TIM_CR2_OIS1 << SHIFT_TAB_OISx[iChannel])) >> SHIFT_TAB_OISx[iChannel]); +} + +/** + * @brief Enable fast mode for the output channel. + * @note Acts only if the channel is configured in PWM1 or PWM2 mode. + * @rmtoll CCMR1 OC1FE LL_TIM_OC_EnableFast\n + * CCMR1 OC2FE LL_TIM_OC_EnableFast\n + * CCMR2 OC3FE LL_TIM_OC_EnableFast\n + * CCMR2 OC4FE LL_TIM_OC_EnableFast + * @param TIMx Timer instance + * @param Channel This parameter can be one of the following values: + * @arg @ref LL_TIM_CHANNEL_CH1 + * @arg @ref LL_TIM_CHANNEL_CH2 + * @arg @ref LL_TIM_CHANNEL_CH3 + * @arg @ref LL_TIM_CHANNEL_CH4 + * @retval None + */ +__STATIC_INLINE void LL_TIM_OC_EnableFast(TIM_TypeDef *TIMx, uint32_t Channel) +{ + register uint8_t iChannel = TIM_GET_CHANNEL_INDEX(Channel); + register __IO uint32_t *pReg = (__IO uint32_t *)((uint32_t)((uint32_t)(&TIMx->CCMR1) + OFFSET_TAB_CCMRx[iChannel])); + SET_BIT(*pReg, (TIM_CCMR1_OC1FE << SHIFT_TAB_OCxx[iChannel])); + +} + +/** + * @brief Disable fast mode for the output channel. + * @rmtoll CCMR1 OC1FE LL_TIM_OC_DisableFast\n + * CCMR1 OC2FE LL_TIM_OC_DisableFast\n + * CCMR2 OC3FE LL_TIM_OC_DisableFast\n + * CCMR2 OC4FE LL_TIM_OC_DisableFast + * @param TIMx Timer instance + * @param Channel This parameter can be one of the following values: + * @arg @ref LL_TIM_CHANNEL_CH1 + * @arg @ref LL_TIM_CHANNEL_CH2 + * @arg @ref LL_TIM_CHANNEL_CH3 + * @arg @ref LL_TIM_CHANNEL_CH4 + * @retval None + */ +__STATIC_INLINE void LL_TIM_OC_DisableFast(TIM_TypeDef *TIMx, uint32_t Channel) +{ + register uint8_t iChannel = TIM_GET_CHANNEL_INDEX(Channel); + register __IO uint32_t *pReg = (__IO uint32_t *)((uint32_t)((uint32_t)(&TIMx->CCMR1) + OFFSET_TAB_CCMRx[iChannel])); + CLEAR_BIT(*pReg, (TIM_CCMR1_OC1FE << SHIFT_TAB_OCxx[iChannel])); + +} + +/** + * @brief Indicates whether fast mode is enabled for the output channel. + * @rmtoll CCMR1 OC1FE LL_TIM_OC_IsEnabledFast\n + * CCMR1 OC2FE LL_TIM_OC_IsEnabledFast\n + * CCMR2 OC3FE LL_TIM_OC_IsEnabledFast\n + * CCMR2 OC4FE LL_TIM_OC_IsEnabledFast\n + * @param TIMx Timer instance + * @param Channel This parameter can be one of the following values: + * @arg @ref LL_TIM_CHANNEL_CH1 + * @arg @ref LL_TIM_CHANNEL_CH2 + * @arg @ref LL_TIM_CHANNEL_CH3 + * @arg @ref LL_TIM_CHANNEL_CH4 + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_TIM_OC_IsEnabledFast(TIM_TypeDef *TIMx, uint32_t Channel) +{ + register uint8_t iChannel = TIM_GET_CHANNEL_INDEX(Channel); + register const __IO uint32_t *pReg = (__IO uint32_t *)((uint32_t)((uint32_t)(&TIMx->CCMR1) + OFFSET_TAB_CCMRx[iChannel])); + register uint32_t bitfield = TIM_CCMR1_OC1FE << SHIFT_TAB_OCxx[iChannel]; + return ((READ_BIT(*pReg, bitfield) == bitfield) ? 1UL : 0UL); +} + +/** + * @brief Enable compare register (TIMx_CCRx) preload for the output channel. + * @rmtoll CCMR1 OC1PE LL_TIM_OC_EnablePreload\n + * CCMR1 OC2PE LL_TIM_OC_EnablePreload\n + * CCMR2 OC3PE LL_TIM_OC_EnablePreload\n + * CCMR2 OC4PE LL_TIM_OC_EnablePreload + * @param TIMx Timer instance + * @param Channel This parameter can be one of the following values: + * @arg @ref LL_TIM_CHANNEL_CH1 + * @arg @ref LL_TIM_CHANNEL_CH2 + * @arg @ref LL_TIM_CHANNEL_CH3 + * @arg @ref LL_TIM_CHANNEL_CH4 + * @retval None + */ +__STATIC_INLINE void LL_TIM_OC_EnablePreload(TIM_TypeDef *TIMx, uint32_t Channel) +{ + register uint8_t iChannel = TIM_GET_CHANNEL_INDEX(Channel); + register __IO uint32_t *pReg = (__IO uint32_t *)((uint32_t)((uint32_t)(&TIMx->CCMR1) + OFFSET_TAB_CCMRx[iChannel])); + SET_BIT(*pReg, (TIM_CCMR1_OC1PE << SHIFT_TAB_OCxx[iChannel])); +} + +/** + * @brief Disable compare register (TIMx_CCRx) preload for the output channel. + * @rmtoll CCMR1 OC1PE LL_TIM_OC_DisablePreload\n + * CCMR1 OC2PE LL_TIM_OC_DisablePreload\n + * CCMR2 OC3PE LL_TIM_OC_DisablePreload\n + * CCMR2 OC4PE LL_TIM_OC_DisablePreload + * @param TIMx Timer instance + * @param Channel This parameter can be one of the following values: + * @arg @ref LL_TIM_CHANNEL_CH1 + * @arg @ref LL_TIM_CHANNEL_CH2 + * @arg @ref LL_TIM_CHANNEL_CH3 + * @arg @ref LL_TIM_CHANNEL_CH4 + * @retval None + */ +__STATIC_INLINE void LL_TIM_OC_DisablePreload(TIM_TypeDef *TIMx, uint32_t Channel) +{ + register uint8_t iChannel = TIM_GET_CHANNEL_INDEX(Channel); + register __IO uint32_t *pReg = (__IO uint32_t *)((uint32_t)((uint32_t)(&TIMx->CCMR1) + OFFSET_TAB_CCMRx[iChannel])); + CLEAR_BIT(*pReg, (TIM_CCMR1_OC1PE << SHIFT_TAB_OCxx[iChannel])); +} + +/** + * @brief Indicates whether compare register (TIMx_CCRx) preload is enabled for the output channel. + * @rmtoll CCMR1 OC1PE LL_TIM_OC_IsEnabledPreload\n + * CCMR1 OC2PE LL_TIM_OC_IsEnabledPreload\n + * CCMR2 OC3PE LL_TIM_OC_IsEnabledPreload\n + * CCMR2 OC4PE LL_TIM_OC_IsEnabledPreload\n + * @param TIMx Timer instance + * @param Channel This parameter can be one of the following values: + * @arg @ref LL_TIM_CHANNEL_CH1 + * @arg @ref LL_TIM_CHANNEL_CH2 + * @arg @ref LL_TIM_CHANNEL_CH3 + * @arg @ref LL_TIM_CHANNEL_CH4 + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_TIM_OC_IsEnabledPreload(TIM_TypeDef *TIMx, uint32_t Channel) +{ + register uint8_t iChannel = TIM_GET_CHANNEL_INDEX(Channel); + register const __IO uint32_t *pReg = (__IO uint32_t *)((uint32_t)((uint32_t)(&TIMx->CCMR1) + OFFSET_TAB_CCMRx[iChannel])); + register uint32_t bitfield = TIM_CCMR1_OC1PE << SHIFT_TAB_OCxx[iChannel]; + return ((READ_BIT(*pReg, bitfield) == bitfield) ? 1UL : 0UL); +} + +/** + * @brief Enable clearing the output channel on an external event. + * @note This function can only be used in Output compare and PWM modes. It does not work in Forced mode. + * @note Macro IS_TIM_OCXREF_CLEAR_INSTANCE(TIMx) can be used to check whether + * or not a timer instance can clear the OCxREF signal on an external event. + * @rmtoll CCMR1 OC1CE LL_TIM_OC_EnableClear\n + * CCMR1 OC2CE LL_TIM_OC_EnableClear\n + * CCMR2 OC3CE LL_TIM_OC_EnableClear\n + * CCMR2 OC4CE LL_TIM_OC_EnableClear + * @param TIMx Timer instance + * @param Channel This parameter can be one of the following values: + * @arg @ref LL_TIM_CHANNEL_CH1 + * @arg @ref LL_TIM_CHANNEL_CH2 + * @arg @ref LL_TIM_CHANNEL_CH3 + * @arg @ref LL_TIM_CHANNEL_CH4 + * @retval None + */ +__STATIC_INLINE void LL_TIM_OC_EnableClear(TIM_TypeDef *TIMx, uint32_t Channel) +{ + register uint8_t iChannel = TIM_GET_CHANNEL_INDEX(Channel); + register __IO uint32_t *pReg = (__IO uint32_t *)((uint32_t)((uint32_t)(&TIMx->CCMR1) + OFFSET_TAB_CCMRx[iChannel])); + SET_BIT(*pReg, (TIM_CCMR1_OC1CE << SHIFT_TAB_OCxx[iChannel])); +} + +/** + * @brief Disable clearing the output channel on an external event. + * @note Macro IS_TIM_OCXREF_CLEAR_INSTANCE(TIMx) can be used to check whether + * or not a timer instance can clear the OCxREF signal on an external event. + * @rmtoll CCMR1 OC1CE LL_TIM_OC_DisableClear\n + * CCMR1 OC2CE LL_TIM_OC_DisableClear\n + * CCMR2 OC3CE LL_TIM_OC_DisableClear\n + * CCMR2 OC4CE LL_TIM_OC_DisableClear + * @param TIMx Timer instance + * @param Channel This parameter can be one of the following values: + * @arg @ref LL_TIM_CHANNEL_CH1 + * @arg @ref LL_TIM_CHANNEL_CH2 + * @arg @ref LL_TIM_CHANNEL_CH3 + * @arg @ref LL_TIM_CHANNEL_CH4 + * @retval None + */ +__STATIC_INLINE void LL_TIM_OC_DisableClear(TIM_TypeDef *TIMx, uint32_t Channel) +{ + register uint8_t iChannel = TIM_GET_CHANNEL_INDEX(Channel); + register __IO uint32_t *pReg = (__IO uint32_t *)((uint32_t)((uint32_t)(&TIMx->CCMR1) + OFFSET_TAB_CCMRx[iChannel])); + CLEAR_BIT(*pReg, (TIM_CCMR1_OC1CE << SHIFT_TAB_OCxx[iChannel])); +} + +/** + * @brief Indicates clearing the output channel on an external event is enabled for the output channel. + * @note This function enables clearing the output channel on an external event. + * @note This function can only be used in Output compare and PWM modes. It does not work in Forced mode. + * @note Macro IS_TIM_OCXREF_CLEAR_INSTANCE(TIMx) can be used to check whether + * or not a timer instance can clear the OCxREF signal on an external event. + * @rmtoll CCMR1 OC1CE LL_TIM_OC_IsEnabledClear\n + * CCMR1 OC2CE LL_TIM_OC_IsEnabledClear\n + * CCMR2 OC3CE LL_TIM_OC_IsEnabledClear\n + * CCMR2 OC4CE LL_TIM_OC_IsEnabledClear\n + * @param TIMx Timer instance + * @param Channel This parameter can be one of the following values: + * @arg @ref LL_TIM_CHANNEL_CH1 + * @arg @ref LL_TIM_CHANNEL_CH2 + * @arg @ref LL_TIM_CHANNEL_CH3 + * @arg @ref LL_TIM_CHANNEL_CH4 + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_TIM_OC_IsEnabledClear(TIM_TypeDef *TIMx, uint32_t Channel) +{ + register uint8_t iChannel = TIM_GET_CHANNEL_INDEX(Channel); + register const __IO uint32_t *pReg = (__IO uint32_t *)((uint32_t)((uint32_t)(&TIMx->CCMR1) + OFFSET_TAB_CCMRx[iChannel])); + register uint32_t bitfield = TIM_CCMR1_OC1CE << SHIFT_TAB_OCxx[iChannel]; + return ((READ_BIT(*pReg, bitfield) == bitfield) ? 1UL : 0UL); +} + +/** + * @brief Set the dead-time delay (delay inserted between the rising edge of the OCxREF signal and the rising edge of the Ocx and OCxN signals). + * @note Macro IS_TIM_BREAK_INSTANCE(TIMx) can be used to check whether or not + * dead-time insertion feature is supported by a timer instance. + * @note Helper macro @ref __LL_TIM_CALC_DEADTIME can be used to calculate the DeadTime parameter + * @rmtoll BDTR DTG LL_TIM_OC_SetDeadTime + * @param TIMx Timer instance + * @param DeadTime between Min_Data=0 and Max_Data=255 + * @retval None + */ +__STATIC_INLINE void LL_TIM_OC_SetDeadTime(TIM_TypeDef *TIMx, uint32_t DeadTime) +{ + MODIFY_REG(TIMx->BDTR, TIM_BDTR_DTG, DeadTime); +} + +/** + * @brief Set compare value for output channel 1 (TIMx_CCR1). + * @note Macro IS_TIM_CC1_INSTANCE(TIMx) can be used to check whether or not + * output channel 1 is supported by a timer instance. + * @rmtoll CCR1 CCR1 LL_TIM_OC_SetCompareCH1 + * @param TIMx Timer instance + * @param CompareValue between Min_Data=0 and Max_Data=65535 + * @retval None + */ +__STATIC_INLINE void LL_TIM_OC_SetCompareCH1(TIM_TypeDef *TIMx, uint32_t CompareValue) +{ + WRITE_REG(TIMx->CCR1, CompareValue); +} + +/** + * @brief Set compare value for output channel 2 (TIMx_CCR2). + * @note Macro IS_TIM_CC2_INSTANCE(TIMx) can be used to check whether or not + * output channel 2 is supported by a timer instance. + * @rmtoll CCR2 CCR2 LL_TIM_OC_SetCompareCH2 + * @param TIMx Timer instance + * @param CompareValue between Min_Data=0 and Max_Data=65535 + * @retval None + */ +__STATIC_INLINE void LL_TIM_OC_SetCompareCH2(TIM_TypeDef *TIMx, uint32_t CompareValue) +{ + WRITE_REG(TIMx->CCR2, CompareValue); +} + +/** + * @brief Set compare value for output channel 3 (TIMx_CCR3). + * @note Macro IS_TIM_CC3_INSTANCE(TIMx) can be used to check whether or not + * output channel is supported by a timer instance. + * @rmtoll CCR3 CCR3 LL_TIM_OC_SetCompareCH3 + * @param TIMx Timer instance + * @param CompareValue between Min_Data=0 and Max_Data=65535 + * @retval None + */ +__STATIC_INLINE void LL_TIM_OC_SetCompareCH3(TIM_TypeDef *TIMx, uint32_t CompareValue) +{ + WRITE_REG(TIMx->CCR3, CompareValue); +} + +/** + * @brief Set compare value for output channel 4 (TIMx_CCR4). + * @note Macro IS_TIM_CC4_INSTANCE(TIMx) can be used to check whether or not + * output channel 4 is supported by a timer instance. + * @rmtoll CCR4 CCR4 LL_TIM_OC_SetCompareCH4 + * @param TIMx Timer instance + * @param CompareValue between Min_Data=0 and Max_Data=65535 + * @retval None + */ +__STATIC_INLINE void LL_TIM_OC_SetCompareCH4(TIM_TypeDef *TIMx, uint32_t CompareValue) +{ + WRITE_REG(TIMx->CCR4, CompareValue); +} + +/** + * @brief Get compare value (TIMx_CCR1) set for output channel 1. + * @note Macro IS_TIM_CC1_INSTANCE(TIMx) can be used to check whether or not + * output channel 1 is supported by a timer instance. + * @rmtoll CCR1 CCR1 LL_TIM_OC_GetCompareCH1 + * @param TIMx Timer instance + * @retval CompareValue (between Min_Data=0 and Max_Data=65535) + */ +__STATIC_INLINE uint32_t LL_TIM_OC_GetCompareCH1(TIM_TypeDef *TIMx) +{ + return (uint32_t)(READ_REG(TIMx->CCR1)); +} + +/** + * @brief Get compare value (TIMx_CCR2) set for output channel 2. + * @note Macro IS_TIM_CC2_INSTANCE(TIMx) can be used to check whether or not + * output channel 2 is supported by a timer instance. + * @rmtoll CCR2 CCR2 LL_TIM_OC_GetCompareCH2 + * @param TIMx Timer instance + * @retval CompareValue (between Min_Data=0 and Max_Data=65535) + */ +__STATIC_INLINE uint32_t LL_TIM_OC_GetCompareCH2(TIM_TypeDef *TIMx) +{ + return (uint32_t)(READ_REG(TIMx->CCR2)); +} + +/** + * @brief Get compare value (TIMx_CCR3) set for output channel 3. + * @note Macro IS_TIM_CC3_INSTANCE(TIMx) can be used to check whether or not + * output channel 3 is supported by a timer instance. + * @rmtoll CCR3 CCR3 LL_TIM_OC_GetCompareCH3 + * @param TIMx Timer instance + * @retval CompareValue (between Min_Data=0 and Max_Data=65535) + */ +__STATIC_INLINE uint32_t LL_TIM_OC_GetCompareCH3(TIM_TypeDef *TIMx) +{ + return (uint32_t)(READ_REG(TIMx->CCR3)); +} + +/** + * @brief Get compare value (TIMx_CCR4) set for output channel 4. + * @note Macro IS_TIM_CC4_INSTANCE(TIMx) can be used to check whether or not + * output channel 4 is supported by a timer instance. + * @rmtoll CCR4 CCR4 LL_TIM_OC_GetCompareCH4 + * @param TIMx Timer instance + * @retval CompareValue (between Min_Data=0 and Max_Data=65535) + */ +__STATIC_INLINE uint32_t LL_TIM_OC_GetCompareCH4(TIM_TypeDef *TIMx) +{ + return (uint32_t)(READ_REG(TIMx->CCR4)); +} + +/** + * @} + */ + +/** @defgroup TIM_LL_EF_Input_Channel Input channel configuration + * @{ + */ +/** + * @brief Configure input channel. + * @rmtoll CCMR1 CC1S LL_TIM_IC_Config\n + * CCMR1 IC1PSC LL_TIM_IC_Config\n + * CCMR1 IC1F LL_TIM_IC_Config\n + * CCMR1 CC2S LL_TIM_IC_Config\n + * CCMR1 IC2PSC LL_TIM_IC_Config\n + * CCMR1 IC2F LL_TIM_IC_Config\n + * CCMR2 CC3S LL_TIM_IC_Config\n + * CCMR2 IC3PSC LL_TIM_IC_Config\n + * CCMR2 IC3F LL_TIM_IC_Config\n + * CCMR2 CC4S LL_TIM_IC_Config\n + * CCMR2 IC4PSC LL_TIM_IC_Config\n + * CCMR2 IC4F LL_TIM_IC_Config\n + * CCER CC1P LL_TIM_IC_Config\n + * CCER CC1NP LL_TIM_IC_Config\n + * CCER CC2P LL_TIM_IC_Config\n + * CCER CC2NP LL_TIM_IC_Config\n + * CCER CC3P LL_TIM_IC_Config\n + * CCER CC3NP LL_TIM_IC_Config\n + * CCER CC4P LL_TIM_IC_Config\n + * @param TIMx Timer instance + * @param Channel This parameter can be one of the following values: + * @arg @ref LL_TIM_CHANNEL_CH1 + * @arg @ref LL_TIM_CHANNEL_CH2 + * @arg @ref LL_TIM_CHANNEL_CH3 + * @arg @ref LL_TIM_CHANNEL_CH4 + * @param Configuration This parameter must be a combination of all the following values: + * @arg @ref LL_TIM_ACTIVEINPUT_DIRECTTI or @ref LL_TIM_ACTIVEINPUT_INDIRECTTI or @ref LL_TIM_ACTIVEINPUT_TRC + * @arg @ref LL_TIM_ICPSC_DIV1 or ... or @ref LL_TIM_ICPSC_DIV8 + * @arg @ref LL_TIM_IC_FILTER_FDIV1 or ... or @ref LL_TIM_IC_FILTER_FDIV32_N8 + * @arg @ref LL_TIM_IC_POLARITY_RISING or @ref LL_TIM_IC_POLARITY_FALLING + * @retval None + */ +__STATIC_INLINE void LL_TIM_IC_Config(TIM_TypeDef *TIMx, uint32_t Channel, uint32_t Configuration) +{ + register uint8_t iChannel = TIM_GET_CHANNEL_INDEX(Channel); + register __IO uint32_t *pReg = (__IO uint32_t *)((uint32_t)((uint32_t)(&TIMx->CCMR1) + OFFSET_TAB_CCMRx[iChannel])); + MODIFY_REG(*pReg, ((TIM_CCMR1_IC1F | TIM_CCMR1_IC1PSC | TIM_CCMR1_CC1S) << SHIFT_TAB_ICxx[iChannel]), + ((Configuration >> 16U) & (TIM_CCMR1_IC1F | TIM_CCMR1_IC1PSC | TIM_CCMR1_CC1S)) << SHIFT_TAB_ICxx[iChannel]); + MODIFY_REG(TIMx->CCER, ((TIM_CCER_CC1NP | TIM_CCER_CC1P) << SHIFT_TAB_CCxP[iChannel]), + (Configuration & (TIM_CCER_CC1NP | TIM_CCER_CC1P)) << SHIFT_TAB_CCxP[iChannel]); +} + +/** + * @brief Set the active input. + * @rmtoll CCMR1 CC1S LL_TIM_IC_SetActiveInput\n + * CCMR1 CC2S LL_TIM_IC_SetActiveInput\n + * CCMR2 CC3S LL_TIM_IC_SetActiveInput\n + * CCMR2 CC4S LL_TIM_IC_SetActiveInput + * @param TIMx Timer instance + * @param Channel This parameter can be one of the following values: + * @arg @ref LL_TIM_CHANNEL_CH1 + * @arg @ref LL_TIM_CHANNEL_CH2 + * @arg @ref LL_TIM_CHANNEL_CH3 + * @arg @ref LL_TIM_CHANNEL_CH4 + * @param ICActiveInput This parameter can be one of the following values: + * @arg @ref LL_TIM_ACTIVEINPUT_DIRECTTI + * @arg @ref LL_TIM_ACTIVEINPUT_INDIRECTTI + * @arg @ref LL_TIM_ACTIVEINPUT_TRC + * @retval None + */ +__STATIC_INLINE void LL_TIM_IC_SetActiveInput(TIM_TypeDef *TIMx, uint32_t Channel, uint32_t ICActiveInput) +{ + register uint8_t iChannel = TIM_GET_CHANNEL_INDEX(Channel); + register __IO uint32_t *pReg = (__IO uint32_t *)((uint32_t)((uint32_t)(&TIMx->CCMR1) + OFFSET_TAB_CCMRx[iChannel])); + MODIFY_REG(*pReg, ((TIM_CCMR1_CC1S) << SHIFT_TAB_ICxx[iChannel]), (ICActiveInput >> 16U) << SHIFT_TAB_ICxx[iChannel]); +} + +/** + * @brief Get the current active input. + * @rmtoll CCMR1 CC1S LL_TIM_IC_GetActiveInput\n + * CCMR1 CC2S LL_TIM_IC_GetActiveInput\n + * CCMR2 CC3S LL_TIM_IC_GetActiveInput\n + * CCMR2 CC4S LL_TIM_IC_GetActiveInput + * @param TIMx Timer instance + * @param Channel This parameter can be one of the following values: + * @arg @ref LL_TIM_CHANNEL_CH1 + * @arg @ref LL_TIM_CHANNEL_CH2 + * @arg @ref LL_TIM_CHANNEL_CH3 + * @arg @ref LL_TIM_CHANNEL_CH4 + * @retval Returned value can be one of the following values: + * @arg @ref LL_TIM_ACTIVEINPUT_DIRECTTI + * @arg @ref LL_TIM_ACTIVEINPUT_INDIRECTTI + * @arg @ref LL_TIM_ACTIVEINPUT_TRC + */ +__STATIC_INLINE uint32_t LL_TIM_IC_GetActiveInput(TIM_TypeDef *TIMx, uint32_t Channel) +{ + register uint8_t iChannel = TIM_GET_CHANNEL_INDEX(Channel); + register const __IO uint32_t *pReg = (__IO uint32_t *)((uint32_t)((uint32_t)(&TIMx->CCMR1) + OFFSET_TAB_CCMRx[iChannel])); + return ((READ_BIT(*pReg, ((TIM_CCMR1_CC1S) << SHIFT_TAB_ICxx[iChannel])) >> SHIFT_TAB_ICxx[iChannel]) << 16U); +} + +/** + * @brief Set the prescaler of input channel. + * @rmtoll CCMR1 IC1PSC LL_TIM_IC_SetPrescaler\n + * CCMR1 IC2PSC LL_TIM_IC_SetPrescaler\n + * CCMR2 IC3PSC LL_TIM_IC_SetPrescaler\n + * CCMR2 IC4PSC LL_TIM_IC_SetPrescaler + * @param TIMx Timer instance + * @param Channel This parameter can be one of the following values: + * @arg @ref LL_TIM_CHANNEL_CH1 + * @arg @ref LL_TIM_CHANNEL_CH2 + * @arg @ref LL_TIM_CHANNEL_CH3 + * @arg @ref LL_TIM_CHANNEL_CH4 + * @param ICPrescaler This parameter can be one of the following values: + * @arg @ref LL_TIM_ICPSC_DIV1 + * @arg @ref LL_TIM_ICPSC_DIV2 + * @arg @ref LL_TIM_ICPSC_DIV4 + * @arg @ref LL_TIM_ICPSC_DIV8 + * @retval None + */ +__STATIC_INLINE void LL_TIM_IC_SetPrescaler(TIM_TypeDef *TIMx, uint32_t Channel, uint32_t ICPrescaler) +{ + register uint8_t iChannel = TIM_GET_CHANNEL_INDEX(Channel); + register __IO uint32_t *pReg = (__IO uint32_t *)((uint32_t)((uint32_t)(&TIMx->CCMR1) + OFFSET_TAB_CCMRx[iChannel])); + MODIFY_REG(*pReg, ((TIM_CCMR1_IC1PSC) << SHIFT_TAB_ICxx[iChannel]), (ICPrescaler >> 16U) << SHIFT_TAB_ICxx[iChannel]); +} + +/** + * @brief Get the current prescaler value acting on an input channel. + * @rmtoll CCMR1 IC1PSC LL_TIM_IC_GetPrescaler\n + * CCMR1 IC2PSC LL_TIM_IC_GetPrescaler\n + * CCMR2 IC3PSC LL_TIM_IC_GetPrescaler\n + * CCMR2 IC4PSC LL_TIM_IC_GetPrescaler + * @param TIMx Timer instance + * @param Channel This parameter can be one of the following values: + * @arg @ref LL_TIM_CHANNEL_CH1 + * @arg @ref LL_TIM_CHANNEL_CH2 + * @arg @ref LL_TIM_CHANNEL_CH3 + * @arg @ref LL_TIM_CHANNEL_CH4 + * @retval Returned value can be one of the following values: + * @arg @ref LL_TIM_ICPSC_DIV1 + * @arg @ref LL_TIM_ICPSC_DIV2 + * @arg @ref LL_TIM_ICPSC_DIV4 + * @arg @ref LL_TIM_ICPSC_DIV8 + */ +__STATIC_INLINE uint32_t LL_TIM_IC_GetPrescaler(TIM_TypeDef *TIMx, uint32_t Channel) +{ + register uint8_t iChannel = TIM_GET_CHANNEL_INDEX(Channel); + register const __IO uint32_t *pReg = (__IO uint32_t *)((uint32_t)((uint32_t)(&TIMx->CCMR1) + OFFSET_TAB_CCMRx[iChannel])); + return ((READ_BIT(*pReg, ((TIM_CCMR1_IC1PSC) << SHIFT_TAB_ICxx[iChannel])) >> SHIFT_TAB_ICxx[iChannel]) << 16U); +} + +/** + * @brief Set the input filter duration. + * @rmtoll CCMR1 IC1F LL_TIM_IC_SetFilter\n + * CCMR1 IC2F LL_TIM_IC_SetFilter\n + * CCMR2 IC3F LL_TIM_IC_SetFilter\n + * CCMR2 IC4F LL_TIM_IC_SetFilter + * @param TIMx Timer instance + * @param Channel This parameter can be one of the following values: + * @arg @ref LL_TIM_CHANNEL_CH1 + * @arg @ref LL_TIM_CHANNEL_CH2 + * @arg @ref LL_TIM_CHANNEL_CH3 + * @arg @ref LL_TIM_CHANNEL_CH4 + * @param ICFilter This parameter can be one of the following values: + * @arg @ref LL_TIM_IC_FILTER_FDIV1 + * @arg @ref LL_TIM_IC_FILTER_FDIV1_N2 + * @arg @ref LL_TIM_IC_FILTER_FDIV1_N4 + * @arg @ref LL_TIM_IC_FILTER_FDIV1_N8 + * @arg @ref LL_TIM_IC_FILTER_FDIV2_N6 + * @arg @ref LL_TIM_IC_FILTER_FDIV2_N8 + * @arg @ref LL_TIM_IC_FILTER_FDIV4_N6 + * @arg @ref LL_TIM_IC_FILTER_FDIV4_N8 + * @arg @ref LL_TIM_IC_FILTER_FDIV8_N6 + * @arg @ref LL_TIM_IC_FILTER_FDIV8_N8 + * @arg @ref LL_TIM_IC_FILTER_FDIV16_N5 + * @arg @ref LL_TIM_IC_FILTER_FDIV16_N6 + * @arg @ref LL_TIM_IC_FILTER_FDIV16_N8 + * @arg @ref LL_TIM_IC_FILTER_FDIV32_N5 + * @arg @ref LL_TIM_IC_FILTER_FDIV32_N6 + * @arg @ref LL_TIM_IC_FILTER_FDIV32_N8 + * @retval None + */ +__STATIC_INLINE void LL_TIM_IC_SetFilter(TIM_TypeDef *TIMx, uint32_t Channel, uint32_t ICFilter) +{ + register uint8_t iChannel = TIM_GET_CHANNEL_INDEX(Channel); + register __IO uint32_t *pReg = (__IO uint32_t *)((uint32_t)((uint32_t)(&TIMx->CCMR1) + OFFSET_TAB_CCMRx[iChannel])); + MODIFY_REG(*pReg, ((TIM_CCMR1_IC1F) << SHIFT_TAB_ICxx[iChannel]), (ICFilter >> 16U) << SHIFT_TAB_ICxx[iChannel]); +} + +/** + * @brief Get the input filter duration. + * @rmtoll CCMR1 IC1F LL_TIM_IC_GetFilter\n + * CCMR1 IC2F LL_TIM_IC_GetFilter\n + * CCMR2 IC3F LL_TIM_IC_GetFilter\n + * CCMR2 IC4F LL_TIM_IC_GetFilter + * @param TIMx Timer instance + * @param Channel This parameter can be one of the following values: + * @arg @ref LL_TIM_CHANNEL_CH1 + * @arg @ref LL_TIM_CHANNEL_CH2 + * @arg @ref LL_TIM_CHANNEL_CH3 + * @arg @ref LL_TIM_CHANNEL_CH4 + * @retval Returned value can be one of the following values: + * @arg @ref LL_TIM_IC_FILTER_FDIV1 + * @arg @ref LL_TIM_IC_FILTER_FDIV1_N2 + * @arg @ref LL_TIM_IC_FILTER_FDIV1_N4 + * @arg @ref LL_TIM_IC_FILTER_FDIV1_N8 + * @arg @ref LL_TIM_IC_FILTER_FDIV2_N6 + * @arg @ref LL_TIM_IC_FILTER_FDIV2_N8 + * @arg @ref LL_TIM_IC_FILTER_FDIV4_N6 + * @arg @ref LL_TIM_IC_FILTER_FDIV4_N8 + * @arg @ref LL_TIM_IC_FILTER_FDIV8_N6 + * @arg @ref LL_TIM_IC_FILTER_FDIV8_N8 + * @arg @ref LL_TIM_IC_FILTER_FDIV16_N5 + * @arg @ref LL_TIM_IC_FILTER_FDIV16_N6 + * @arg @ref LL_TIM_IC_FILTER_FDIV16_N8 + * @arg @ref LL_TIM_IC_FILTER_FDIV32_N5 + * @arg @ref LL_TIM_IC_FILTER_FDIV32_N6 + * @arg @ref LL_TIM_IC_FILTER_FDIV32_N8 + */ +__STATIC_INLINE uint32_t LL_TIM_IC_GetFilter(TIM_TypeDef *TIMx, uint32_t Channel) +{ + register uint8_t iChannel = TIM_GET_CHANNEL_INDEX(Channel); + register const __IO uint32_t *pReg = (__IO uint32_t *)((uint32_t)((uint32_t)(&TIMx->CCMR1) + OFFSET_TAB_CCMRx[iChannel])); + return ((READ_BIT(*pReg, ((TIM_CCMR1_IC1F) << SHIFT_TAB_ICxx[iChannel])) >> SHIFT_TAB_ICxx[iChannel]) << 16U); +} + +/** + * @brief Set the input channel polarity. + * @rmtoll CCER CC1P LL_TIM_IC_SetPolarity\n + * CCER CC1NP LL_TIM_IC_SetPolarity\n + * CCER CC2P LL_TIM_IC_SetPolarity\n + * CCER CC2NP LL_TIM_IC_SetPolarity\n + * CCER CC3P LL_TIM_IC_SetPolarity\n + * CCER CC3NP LL_TIM_IC_SetPolarity\n + * CCER CC4P LL_TIM_IC_SetPolarity\n + * @param TIMx Timer instance + * @param Channel This parameter can be one of the following values: + * @arg @ref LL_TIM_CHANNEL_CH1 + * @arg @ref LL_TIM_CHANNEL_CH2 + * @arg @ref LL_TIM_CHANNEL_CH3 + * @arg @ref LL_TIM_CHANNEL_CH4 + * @param ICPolarity This parameter can be one of the following values: + * @arg @ref LL_TIM_IC_POLARITY_RISING + * @arg @ref LL_TIM_IC_POLARITY_FALLING + * @retval None + */ +__STATIC_INLINE void LL_TIM_IC_SetPolarity(TIM_TypeDef *TIMx, uint32_t Channel, uint32_t ICPolarity) +{ + register uint8_t iChannel = TIM_GET_CHANNEL_INDEX(Channel); + MODIFY_REG(TIMx->CCER, ((TIM_CCER_CC1NP | TIM_CCER_CC1P) << SHIFT_TAB_CCxP[iChannel]), + ICPolarity << SHIFT_TAB_CCxP[iChannel]); +} + +/** + * @brief Get the current input channel polarity. + * @rmtoll CCER CC1P LL_TIM_IC_GetPolarity\n + * CCER CC1NP LL_TIM_IC_GetPolarity\n + * CCER CC2P LL_TIM_IC_GetPolarity\n + * CCER CC2NP LL_TIM_IC_GetPolarity\n + * CCER CC3P LL_TIM_IC_GetPolarity\n + * CCER CC3NP LL_TIM_IC_GetPolarity\n + * CCER CC4P LL_TIM_IC_GetPolarity\n + * @param TIMx Timer instance + * @param Channel This parameter can be one of the following values: + * @arg @ref LL_TIM_CHANNEL_CH1 + * @arg @ref LL_TIM_CHANNEL_CH2 + * @arg @ref LL_TIM_CHANNEL_CH3 + * @arg @ref LL_TIM_CHANNEL_CH4 + * @retval Returned value can be one of the following values: + * @arg @ref LL_TIM_IC_POLARITY_RISING + * @arg @ref LL_TIM_IC_POLARITY_FALLING + */ +__STATIC_INLINE uint32_t LL_TIM_IC_GetPolarity(TIM_TypeDef *TIMx, uint32_t Channel) +{ + register uint8_t iChannel = TIM_GET_CHANNEL_INDEX(Channel); + return (READ_BIT(TIMx->CCER, ((TIM_CCER_CC1NP | TIM_CCER_CC1P) << SHIFT_TAB_CCxP[iChannel])) >> + SHIFT_TAB_CCxP[iChannel]); +} + +/** + * @brief Connect the TIMx_CH1, CH2 and CH3 pins to the TI1 input (XOR combination). + * @note Macro IS_TIM_XOR_INSTANCE(TIMx) can be used to check whether or not + * a timer instance provides an XOR input. + * @rmtoll CR2 TI1S LL_TIM_IC_EnableXORCombination + * @param TIMx Timer instance + * @retval None + */ +__STATIC_INLINE void LL_TIM_IC_EnableXORCombination(TIM_TypeDef *TIMx) +{ + SET_BIT(TIMx->CR2, TIM_CR2_TI1S); +} + +/** + * @brief Disconnect the TIMx_CH1, CH2 and CH3 pins from the TI1 input. + * @note Macro IS_TIM_XOR_INSTANCE(TIMx) can be used to check whether or not + * a timer instance provides an XOR input. + * @rmtoll CR2 TI1S LL_TIM_IC_DisableXORCombination + * @param TIMx Timer instance + * @retval None + */ +__STATIC_INLINE void LL_TIM_IC_DisableXORCombination(TIM_TypeDef *TIMx) +{ + CLEAR_BIT(TIMx->CR2, TIM_CR2_TI1S); +} + +/** + * @brief Indicates whether the TIMx_CH1, CH2 and CH3 pins are connectected to the TI1 input. + * @note Macro IS_TIM_XOR_INSTANCE(TIMx) can be used to check whether or not + * a timer instance provides an XOR input. + * @rmtoll CR2 TI1S LL_TIM_IC_IsEnabledXORCombination + * @param TIMx Timer instance + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_TIM_IC_IsEnabledXORCombination(TIM_TypeDef *TIMx) +{ + return ((READ_BIT(TIMx->CR2, TIM_CR2_TI1S) == (TIM_CR2_TI1S)) ? 1UL : 0UL); +} + +/** + * @brief Get captured value for input channel 1. + * @note Macro IS_TIM_CC1_INSTANCE(TIMx) can be used to check whether or not + * input channel 1 is supported by a timer instance. + * @rmtoll CCR1 CCR1 LL_TIM_IC_GetCaptureCH1 + * @param TIMx Timer instance + * @retval CapturedValue (between Min_Data=0 and Max_Data=65535) + */ +__STATIC_INLINE uint32_t LL_TIM_IC_GetCaptureCH1(TIM_TypeDef *TIMx) +{ + return (uint32_t)(READ_REG(TIMx->CCR1)); +} + +/** + * @brief Get captured value for input channel 2. + * @note Macro IS_TIM_CC2_INSTANCE(TIMx) can be used to check whether or not + * input channel 2 is supported by a timer instance. + * @rmtoll CCR2 CCR2 LL_TIM_IC_GetCaptureCH2 + * @param TIMx Timer instance + * @retval CapturedValue (between Min_Data=0 and Max_Data=65535) + */ +__STATIC_INLINE uint32_t LL_TIM_IC_GetCaptureCH2(TIM_TypeDef *TIMx) +{ + return (uint32_t)(READ_REG(TIMx->CCR2)); +} + +/** + * @brief Get captured value for input channel 3. + * @note Macro IS_TIM_CC3_INSTANCE(TIMx) can be used to check whether or not + * input channel 3 is supported by a timer instance. + * @rmtoll CCR3 CCR3 LL_TIM_IC_GetCaptureCH3 + * @param TIMx Timer instance + * @retval CapturedValue (between Min_Data=0 and Max_Data=65535) + */ +__STATIC_INLINE uint32_t LL_TIM_IC_GetCaptureCH3(TIM_TypeDef *TIMx) +{ + return (uint32_t)(READ_REG(TIMx->CCR3)); +} + +/** + * @brief Get captured value for input channel 4. + * @note Macro IS_TIM_CC4_INSTANCE(TIMx) can be used to check whether or not + * input channel 4 is supported by a timer instance. + * @rmtoll CCR4 CCR4 LL_TIM_IC_GetCaptureCH4 + * @param TIMx Timer instance + * @retval CapturedValue (between Min_Data=0 and Max_Data=65535) + */ +__STATIC_INLINE uint32_t LL_TIM_IC_GetCaptureCH4(TIM_TypeDef *TIMx) +{ + return (uint32_t)(READ_REG(TIMx->CCR4)); +} + +/** + * @} + */ + +/** @defgroup TIM_LL_EF_Clock_Selection Counter clock selection + * @{ + */ +/** + * @brief Enable external clock mode 2. + * @note When external clock mode 2 is enabled the counter is clocked by any active edge on the ETRF signal. + * @note Macro IS_TIM_CLOCKSOURCE_ETRMODE2_INSTANCE(TIMx) can be used to check + * whether or not a timer instance supports external clock mode2. + * @rmtoll SMCR ECE LL_TIM_EnableExternalClock + * @param TIMx Timer instance + * @retval None + */ +__STATIC_INLINE void LL_TIM_EnableExternalClock(TIM_TypeDef *TIMx) +{ + SET_BIT(TIMx->SMCR, TIM_SMCR_ECE); +} + +/** + * @brief Disable external clock mode 2. + * @note Macro IS_TIM_CLOCKSOURCE_ETRMODE2_INSTANCE(TIMx) can be used to check + * whether or not a timer instance supports external clock mode2. + * @rmtoll SMCR ECE LL_TIM_DisableExternalClock + * @param TIMx Timer instance + * @retval None + */ +__STATIC_INLINE void LL_TIM_DisableExternalClock(TIM_TypeDef *TIMx) +{ + CLEAR_BIT(TIMx->SMCR, TIM_SMCR_ECE); +} + +/** + * @brief Indicate whether external clock mode 2 is enabled. + * @note Macro IS_TIM_CLOCKSOURCE_ETRMODE2_INSTANCE(TIMx) can be used to check + * whether or not a timer instance supports external clock mode2. + * @rmtoll SMCR ECE LL_TIM_IsEnabledExternalClock + * @param TIMx Timer instance + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_TIM_IsEnabledExternalClock(TIM_TypeDef *TIMx) +{ + return ((READ_BIT(TIMx->SMCR, TIM_SMCR_ECE) == (TIM_SMCR_ECE)) ? 1UL : 0UL); +} + +/** + * @brief Set the clock source of the counter clock. + * @note when selected clock source is external clock mode 1, the timer input + * the external clock is applied is selected by calling the @ref LL_TIM_SetTriggerInput() + * function. This timer input must be configured by calling + * the @ref LL_TIM_IC_Config() function. + * @note Macro IS_TIM_CLOCKSOURCE_ETRMODE1_INSTANCE(TIMx) can be used to check + * whether or not a timer instance supports external clock mode1. + * @note Macro IS_TIM_CLOCKSOURCE_ETRMODE2_INSTANCE(TIMx) can be used to check + * whether or not a timer instance supports external clock mode2. + * @rmtoll SMCR SMS LL_TIM_SetClockSource\n + * SMCR ECE LL_TIM_SetClockSource + * @param TIMx Timer instance + * @param ClockSource This parameter can be one of the following values: + * @arg @ref LL_TIM_CLOCKSOURCE_INTERNAL + * @arg @ref LL_TIM_CLOCKSOURCE_EXT_MODE1 + * @arg @ref LL_TIM_CLOCKSOURCE_EXT_MODE2 + * @retval None + */ +__STATIC_INLINE void LL_TIM_SetClockSource(TIM_TypeDef *TIMx, uint32_t ClockSource) +{ + MODIFY_REG(TIMx->SMCR, TIM_SMCR_SMS | TIM_SMCR_ECE, ClockSource); +} + +/** + * @brief Set the encoder interface mode. + * @note Macro IS_TIM_ENCODER_INTERFACE_INSTANCE(TIMx) can be used to check + * whether or not a timer instance supports the encoder mode. + * @rmtoll SMCR SMS LL_TIM_SetEncoderMode + * @param TIMx Timer instance + * @param EncoderMode This parameter can be one of the following values: + * @arg @ref LL_TIM_ENCODERMODE_X2_TI1 + * @arg @ref LL_TIM_ENCODERMODE_X2_TI2 + * @arg @ref LL_TIM_ENCODERMODE_X4_TI12 + * @retval None + */ +__STATIC_INLINE void LL_TIM_SetEncoderMode(TIM_TypeDef *TIMx, uint32_t EncoderMode) +{ + MODIFY_REG(TIMx->SMCR, TIM_SMCR_SMS, EncoderMode); +} + +/** + * @} + */ + +/** @defgroup TIM_LL_EF_Timer_Synchronization Timer synchronisation configuration + * @{ + */ +/** + * @brief Set the trigger output (TRGO) used for timer synchronization . + * @note Macro IS_TIM_MASTER_INSTANCE(TIMx) can be used to check + * whether or not a timer instance can operate as a master timer. + * @rmtoll CR2 MMS LL_TIM_SetTriggerOutput + * @param TIMx Timer instance + * @param TimerSynchronization This parameter can be one of the following values: + * @arg @ref LL_TIM_TRGO_RESET + * @arg @ref LL_TIM_TRGO_ENABLE + * @arg @ref LL_TIM_TRGO_UPDATE + * @arg @ref LL_TIM_TRGO_CC1IF + * @arg @ref LL_TIM_TRGO_OC1REF + * @arg @ref LL_TIM_TRGO_OC2REF + * @arg @ref LL_TIM_TRGO_OC3REF + * @arg @ref LL_TIM_TRGO_OC4REF + * @retval None + */ +__STATIC_INLINE void LL_TIM_SetTriggerOutput(TIM_TypeDef *TIMx, uint32_t TimerSynchronization) +{ + MODIFY_REG(TIMx->CR2, TIM_CR2_MMS, TimerSynchronization); +} + +/** + * @brief Set the synchronization mode of a slave timer. + * @note Macro IS_TIM_SLAVE_INSTANCE(TIMx) can be used to check whether or not + * a timer instance can operate as a slave timer. + * @rmtoll SMCR SMS LL_TIM_SetSlaveMode + * @param TIMx Timer instance + * @param SlaveMode This parameter can be one of the following values: + * @arg @ref LL_TIM_SLAVEMODE_DISABLED + * @arg @ref LL_TIM_SLAVEMODE_RESET + * @arg @ref LL_TIM_SLAVEMODE_GATED + * @arg @ref LL_TIM_SLAVEMODE_TRIGGER + * @retval None + */ +__STATIC_INLINE void LL_TIM_SetSlaveMode(TIM_TypeDef *TIMx, uint32_t SlaveMode) +{ + MODIFY_REG(TIMx->SMCR, TIM_SMCR_SMS, SlaveMode); +} + +/** + * @brief Set the selects the trigger input to be used to synchronize the counter. + * @note Macro IS_TIM_SLAVE_INSTANCE(TIMx) can be used to check whether or not + * a timer instance can operate as a slave timer. + * @rmtoll SMCR TS LL_TIM_SetTriggerInput + * @param TIMx Timer instance + * @param TriggerInput This parameter can be one of the following values: + * @arg @ref LL_TIM_TS_ITR0 + * @arg @ref LL_TIM_TS_ITR1 + * @arg @ref LL_TIM_TS_ITR2 + * @arg @ref LL_TIM_TS_ITR3 + * @arg @ref LL_TIM_TS_TI1F_ED + * @arg @ref LL_TIM_TS_TI1FP1 + * @arg @ref LL_TIM_TS_TI2FP2 + * @arg @ref LL_TIM_TS_ETRF + * @retval None + */ +__STATIC_INLINE void LL_TIM_SetTriggerInput(TIM_TypeDef *TIMx, uint32_t TriggerInput) +{ + MODIFY_REG(TIMx->SMCR, TIM_SMCR_TS, TriggerInput); +} + +/** + * @brief Enable the Master/Slave mode. + * @note Macro IS_TIM_SLAVE_INSTANCE(TIMx) can be used to check whether or not + * a timer instance can operate as a slave timer. + * @rmtoll SMCR MSM LL_TIM_EnableMasterSlaveMode + * @param TIMx Timer instance + * @retval None + */ +__STATIC_INLINE void LL_TIM_EnableMasterSlaveMode(TIM_TypeDef *TIMx) +{ + SET_BIT(TIMx->SMCR, TIM_SMCR_MSM); +} + +/** + * @brief Disable the Master/Slave mode. + * @note Macro IS_TIM_SLAVE_INSTANCE(TIMx) can be used to check whether or not + * a timer instance can operate as a slave timer. + * @rmtoll SMCR MSM LL_TIM_DisableMasterSlaveMode + * @param TIMx Timer instance + * @retval None + */ +__STATIC_INLINE void LL_TIM_DisableMasterSlaveMode(TIM_TypeDef *TIMx) +{ + CLEAR_BIT(TIMx->SMCR, TIM_SMCR_MSM); +} + +/** + * @brief Indicates whether the Master/Slave mode is enabled. + * @note Macro IS_TIM_SLAVE_INSTANCE(TIMx) can be used to check whether or not + * a timer instance can operate as a slave timer. + * @rmtoll SMCR MSM LL_TIM_IsEnabledMasterSlaveMode + * @param TIMx Timer instance + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_TIM_IsEnabledMasterSlaveMode(TIM_TypeDef *TIMx) +{ + return ((READ_BIT(TIMx->SMCR, TIM_SMCR_MSM) == (TIM_SMCR_MSM)) ? 1UL : 0UL); +} + +/** + * @brief Configure the external trigger (ETR) input. + * @note Macro IS_TIM_ETR_INSTANCE(TIMx) can be used to check whether or not + * a timer instance provides an external trigger input. + * @rmtoll SMCR ETP LL_TIM_ConfigETR\n + * SMCR ETPS LL_TIM_ConfigETR\n + * SMCR ETF LL_TIM_ConfigETR + * @param TIMx Timer instance + * @param ETRPolarity This parameter can be one of the following values: + * @arg @ref LL_TIM_ETR_POLARITY_NONINVERTED + * @arg @ref LL_TIM_ETR_POLARITY_INVERTED + * @param ETRPrescaler This parameter can be one of the following values: + * @arg @ref LL_TIM_ETR_PRESCALER_DIV1 + * @arg @ref LL_TIM_ETR_PRESCALER_DIV2 + * @arg @ref LL_TIM_ETR_PRESCALER_DIV4 + * @arg @ref LL_TIM_ETR_PRESCALER_DIV8 + * @param ETRFilter This parameter can be one of the following values: + * @arg @ref LL_TIM_ETR_FILTER_FDIV1 + * @arg @ref LL_TIM_ETR_FILTER_FDIV1_N2 + * @arg @ref LL_TIM_ETR_FILTER_FDIV1_N4 + * @arg @ref LL_TIM_ETR_FILTER_FDIV1_N8 + * @arg @ref LL_TIM_ETR_FILTER_FDIV2_N6 + * @arg @ref LL_TIM_ETR_FILTER_FDIV2_N8 + * @arg @ref LL_TIM_ETR_FILTER_FDIV4_N6 + * @arg @ref LL_TIM_ETR_FILTER_FDIV4_N8 + * @arg @ref LL_TIM_ETR_FILTER_FDIV8_N6 + * @arg @ref LL_TIM_ETR_FILTER_FDIV8_N8 + * @arg @ref LL_TIM_ETR_FILTER_FDIV16_N5 + * @arg @ref LL_TIM_ETR_FILTER_FDIV16_N6 + * @arg @ref LL_TIM_ETR_FILTER_FDIV16_N8 + * @arg @ref LL_TIM_ETR_FILTER_FDIV32_N5 + * @arg @ref LL_TIM_ETR_FILTER_FDIV32_N6 + * @arg @ref LL_TIM_ETR_FILTER_FDIV32_N8 + * @retval None + */ +__STATIC_INLINE void LL_TIM_ConfigETR(TIM_TypeDef *TIMx, uint32_t ETRPolarity, uint32_t ETRPrescaler, + uint32_t ETRFilter) +{ + MODIFY_REG(TIMx->SMCR, TIM_SMCR_ETP | TIM_SMCR_ETPS | TIM_SMCR_ETF, ETRPolarity | ETRPrescaler | ETRFilter); +} + +/** + * @} + */ + +/** @defgroup TIM_LL_EF_Break_Function Break function configuration + * @{ + */ +/** + * @brief Enable the break function. + * @note Macro IS_TIM_BREAK_INSTANCE(TIMx) can be used to check whether or not + * a timer instance provides a break input. + * @rmtoll BDTR BKE LL_TIM_EnableBRK + * @param TIMx Timer instance + * @retval None + */ +__STATIC_INLINE void LL_TIM_EnableBRK(TIM_TypeDef *TIMx) +{ + __IO uint32_t tmpreg; + SET_BIT(TIMx->BDTR, TIM_BDTR_BKE); + /* Note: Any write operation to this bit takes a delay of 1 APB clock cycle to become effective. */ + tmpreg = READ_REG(TIMx->BDTR); + (void)(tmpreg); +} + +/** + * @brief Disable the break function. + * @rmtoll BDTR BKE LL_TIM_DisableBRK + * @param TIMx Timer instance + * @note Macro IS_TIM_BREAK_INSTANCE(TIMx) can be used to check whether or not + * a timer instance provides a break input. + * @retval None + */ +__STATIC_INLINE void LL_TIM_DisableBRK(TIM_TypeDef *TIMx) +{ + __IO uint32_t tmpreg; + CLEAR_BIT(TIMx->BDTR, TIM_BDTR_BKE); + /* Note: Any write operation to this bit takes a delay of 1 APB clock cycle to become effective. */ + tmpreg = READ_REG(TIMx->BDTR); + (void)(tmpreg); +} + +/** + * @brief Configure the break input. + * @note Macro IS_TIM_BREAK_INSTANCE(TIMx) can be used to check whether or not + * a timer instance provides a break input. + * @rmtoll BDTR BKP LL_TIM_ConfigBRK + * @param TIMx Timer instance + * @param BreakPolarity This parameter can be one of the following values: + * @arg @ref LL_TIM_BREAK_POLARITY_LOW + * @arg @ref LL_TIM_BREAK_POLARITY_HIGH + * @retval None + */ +__STATIC_INLINE void LL_TIM_ConfigBRK(TIM_TypeDef *TIMx, uint32_t BreakPolarity) +{ + __IO uint32_t tmpreg; + MODIFY_REG(TIMx->BDTR, TIM_BDTR_BKP, BreakPolarity); + /* Note: Any write operation to BKP bit takes a delay of 1 APB clock cycle to become effective. */ + tmpreg = READ_REG(TIMx->BDTR); + (void)(tmpreg); +} + +/** + * @brief Select the outputs off state (enabled v.s. disabled) in Idle and Run modes. + * @note Macro IS_TIM_BREAK_INSTANCE(TIMx) can be used to check whether or not + * a timer instance provides a break input. + * @rmtoll BDTR OSSI LL_TIM_SetOffStates\n + * BDTR OSSR LL_TIM_SetOffStates + * @param TIMx Timer instance + * @param OffStateIdle This parameter can be one of the following values: + * @arg @ref LL_TIM_OSSI_DISABLE + * @arg @ref LL_TIM_OSSI_ENABLE + * @param OffStateRun This parameter can be one of the following values: + * @arg @ref LL_TIM_OSSR_DISABLE + * @arg @ref LL_TIM_OSSR_ENABLE + * @retval None + */ +__STATIC_INLINE void LL_TIM_SetOffStates(TIM_TypeDef *TIMx, uint32_t OffStateIdle, uint32_t OffStateRun) +{ + MODIFY_REG(TIMx->BDTR, TIM_BDTR_OSSI | TIM_BDTR_OSSR, OffStateIdle | OffStateRun); +} + +/** + * @brief Enable automatic output (MOE can be set by software or automatically when a break input is active). + * @note Macro IS_TIM_BREAK_INSTANCE(TIMx) can be used to check whether or not + * a timer instance provides a break input. + * @rmtoll BDTR AOE LL_TIM_EnableAutomaticOutput + * @param TIMx Timer instance + * @retval None + */ +__STATIC_INLINE void LL_TIM_EnableAutomaticOutput(TIM_TypeDef *TIMx) +{ + SET_BIT(TIMx->BDTR, TIM_BDTR_AOE); +} + +/** + * @brief Disable automatic output (MOE can be set only by software). + * @note Macro IS_TIM_BREAK_INSTANCE(TIMx) can be used to check whether or not + * a timer instance provides a break input. + * @rmtoll BDTR AOE LL_TIM_DisableAutomaticOutput + * @param TIMx Timer instance + * @retval None + */ +__STATIC_INLINE void LL_TIM_DisableAutomaticOutput(TIM_TypeDef *TIMx) +{ + CLEAR_BIT(TIMx->BDTR, TIM_BDTR_AOE); +} + +/** + * @brief Indicate whether automatic output is enabled. + * @note Macro IS_TIM_BREAK_INSTANCE(TIMx) can be used to check whether or not + * a timer instance provides a break input. + * @rmtoll BDTR AOE LL_TIM_IsEnabledAutomaticOutput + * @param TIMx Timer instance + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_TIM_IsEnabledAutomaticOutput(TIM_TypeDef *TIMx) +{ + return ((READ_BIT(TIMx->BDTR, TIM_BDTR_AOE) == (TIM_BDTR_AOE)) ? 1UL : 0UL); +} + +/** + * @brief Enable the outputs (set the MOE bit in TIMx_BDTR register). + * @note The MOE bit in TIMx_BDTR register allows to enable /disable the outputs by + * software and is reset in case of break or break2 event + * @note Macro IS_TIM_BREAK_INSTANCE(TIMx) can be used to check whether or not + * a timer instance provides a break input. + * @rmtoll BDTR MOE LL_TIM_EnableAllOutputs + * @param TIMx Timer instance + * @retval None + */ +__STATIC_INLINE void LL_TIM_EnableAllOutputs(TIM_TypeDef *TIMx) +{ + SET_BIT(TIMx->BDTR, TIM_BDTR_MOE); +} + +/** + * @brief Disable the outputs (reset the MOE bit in TIMx_BDTR register). + * @note The MOE bit in TIMx_BDTR register allows to enable /disable the outputs by + * software and is reset in case of break or break2 event. + * @note Macro IS_TIM_BREAK_INSTANCE(TIMx) can be used to check whether or not + * a timer instance provides a break input. + * @rmtoll BDTR MOE LL_TIM_DisableAllOutputs + * @param TIMx Timer instance + * @retval None + */ +__STATIC_INLINE void LL_TIM_DisableAllOutputs(TIM_TypeDef *TIMx) +{ + CLEAR_BIT(TIMx->BDTR, TIM_BDTR_MOE); +} + +/** + * @brief Indicates whether outputs are enabled. + * @note Macro IS_TIM_BREAK_INSTANCE(TIMx) can be used to check whether or not + * a timer instance provides a break input. + * @rmtoll BDTR MOE LL_TIM_IsEnabledAllOutputs + * @param TIMx Timer instance + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_TIM_IsEnabledAllOutputs(TIM_TypeDef *TIMx) +{ + return ((READ_BIT(TIMx->BDTR, TIM_BDTR_MOE) == (TIM_BDTR_MOE)) ? 1UL : 0UL); +} + +/** + * @} + */ + +/** @defgroup TIM_LL_EF_DMA_Burst_Mode DMA burst mode configuration + * @{ + */ +/** + * @brief Configures the timer DMA burst feature. + * @note Macro IS_TIM_DMABURST_INSTANCE(TIMx) can be used to check whether or + * not a timer instance supports the DMA burst mode. + * @rmtoll DCR DBL LL_TIM_ConfigDMABurst\n + * DCR DBA LL_TIM_ConfigDMABurst + * @param TIMx Timer instance + * @param DMABurstBaseAddress This parameter can be one of the following values: + * @arg @ref LL_TIM_DMABURST_BASEADDR_CR1 + * @arg @ref LL_TIM_DMABURST_BASEADDR_CR2 + * @arg @ref LL_TIM_DMABURST_BASEADDR_SMCR + * @arg @ref LL_TIM_DMABURST_BASEADDR_DIER + * @arg @ref LL_TIM_DMABURST_BASEADDR_SR + * @arg @ref LL_TIM_DMABURST_BASEADDR_EGR + * @arg @ref LL_TIM_DMABURST_BASEADDR_CCMR1 + * @arg @ref LL_TIM_DMABURST_BASEADDR_CCMR2 + * @arg @ref LL_TIM_DMABURST_BASEADDR_CCER + * @arg @ref LL_TIM_DMABURST_BASEADDR_CNT + * @arg @ref LL_TIM_DMABURST_BASEADDR_PSC + * @arg @ref LL_TIM_DMABURST_BASEADDR_ARR + * @arg @ref LL_TIM_DMABURST_BASEADDR_RCR + * @arg @ref LL_TIM_DMABURST_BASEADDR_CCR1 + * @arg @ref LL_TIM_DMABURST_BASEADDR_CCR2 + * @arg @ref LL_TIM_DMABURST_BASEADDR_CCR3 + * @arg @ref LL_TIM_DMABURST_BASEADDR_CCR4 + * @arg @ref LL_TIM_DMABURST_BASEADDR_BDTR + * @param DMABurstLength This parameter can be one of the following values: + * @arg @ref LL_TIM_DMABURST_LENGTH_1TRANSFER + * @arg @ref LL_TIM_DMABURST_LENGTH_2TRANSFERS + * @arg @ref LL_TIM_DMABURST_LENGTH_3TRANSFERS + * @arg @ref LL_TIM_DMABURST_LENGTH_4TRANSFERS + * @arg @ref LL_TIM_DMABURST_LENGTH_5TRANSFERS + * @arg @ref LL_TIM_DMABURST_LENGTH_6TRANSFERS + * @arg @ref LL_TIM_DMABURST_LENGTH_7TRANSFERS + * @arg @ref LL_TIM_DMABURST_LENGTH_8TRANSFERS + * @arg @ref LL_TIM_DMABURST_LENGTH_9TRANSFERS + * @arg @ref LL_TIM_DMABURST_LENGTH_10TRANSFERS + * @arg @ref LL_TIM_DMABURST_LENGTH_11TRANSFERS + * @arg @ref LL_TIM_DMABURST_LENGTH_12TRANSFERS + * @arg @ref LL_TIM_DMABURST_LENGTH_13TRANSFERS + * @arg @ref LL_TIM_DMABURST_LENGTH_14TRANSFERS + * @arg @ref LL_TIM_DMABURST_LENGTH_15TRANSFERS + * @arg @ref LL_TIM_DMABURST_LENGTH_16TRANSFERS + * @arg @ref LL_TIM_DMABURST_LENGTH_17TRANSFERS + * @arg @ref LL_TIM_DMABURST_LENGTH_18TRANSFERS + * @retval None + */ +__STATIC_INLINE void LL_TIM_ConfigDMABurst(TIM_TypeDef *TIMx, uint32_t DMABurstBaseAddress, uint32_t DMABurstLength) +{ + MODIFY_REG(TIMx->DCR, (TIM_DCR_DBL | TIM_DCR_DBA), (DMABurstBaseAddress | DMABurstLength)); +} + +/** + * @} + */ + + +/** + * @} + */ + +/** @defgroup TIM_LL_EF_FLAG_Management FLAG-Management + * @{ + */ +/** + * @brief Clear the update interrupt flag (UIF). + * @rmtoll SR UIF LL_TIM_ClearFlag_UPDATE + * @param TIMx Timer instance + * @retval None + */ +__STATIC_INLINE void LL_TIM_ClearFlag_UPDATE(TIM_TypeDef *TIMx) +{ + WRITE_REG(TIMx->SR, ~(TIM_SR_UIF)); +} + +/** + * @brief Indicate whether update interrupt flag (UIF) is set (update interrupt is pending). + * @rmtoll SR UIF LL_TIM_IsActiveFlag_UPDATE + * @param TIMx Timer instance + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_TIM_IsActiveFlag_UPDATE(TIM_TypeDef *TIMx) +{ + return ((READ_BIT(TIMx->SR, TIM_SR_UIF) == (TIM_SR_UIF)) ? 1UL : 0UL); +} + +/** + * @brief Clear the Capture/Compare 1 interrupt flag (CC1F). + * @rmtoll SR CC1IF LL_TIM_ClearFlag_CC1 + * @param TIMx Timer instance + * @retval None + */ +__STATIC_INLINE void LL_TIM_ClearFlag_CC1(TIM_TypeDef *TIMx) +{ + WRITE_REG(TIMx->SR, ~(TIM_SR_CC1IF)); +} + +/** + * @brief Indicate whether Capture/Compare 1 interrupt flag (CC1F) is set (Capture/Compare 1 interrupt is pending). + * @rmtoll SR CC1IF LL_TIM_IsActiveFlag_CC1 + * @param TIMx Timer instance + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_TIM_IsActiveFlag_CC1(TIM_TypeDef *TIMx) +{ + return ((READ_BIT(TIMx->SR, TIM_SR_CC1IF) == (TIM_SR_CC1IF)) ? 1UL : 0UL); +} + +/** + * @brief Clear the Capture/Compare 2 interrupt flag (CC2F). + * @rmtoll SR CC2IF LL_TIM_ClearFlag_CC2 + * @param TIMx Timer instance + * @retval None + */ +__STATIC_INLINE void LL_TIM_ClearFlag_CC2(TIM_TypeDef *TIMx) +{ + WRITE_REG(TIMx->SR, ~(TIM_SR_CC2IF)); +} + +/** + * @brief Indicate whether Capture/Compare 2 interrupt flag (CC2F) is set (Capture/Compare 2 interrupt is pending). + * @rmtoll SR CC2IF LL_TIM_IsActiveFlag_CC2 + * @param TIMx Timer instance + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_TIM_IsActiveFlag_CC2(TIM_TypeDef *TIMx) +{ + return ((READ_BIT(TIMx->SR, TIM_SR_CC2IF) == (TIM_SR_CC2IF)) ? 1UL : 0UL); +} + +/** + * @brief Clear the Capture/Compare 3 interrupt flag (CC3F). + * @rmtoll SR CC3IF LL_TIM_ClearFlag_CC3 + * @param TIMx Timer instance + * @retval None + */ +__STATIC_INLINE void LL_TIM_ClearFlag_CC3(TIM_TypeDef *TIMx) +{ + WRITE_REG(TIMx->SR, ~(TIM_SR_CC3IF)); +} + +/** + * @brief Indicate whether Capture/Compare 3 interrupt flag (CC3F) is set (Capture/Compare 3 interrupt is pending). + * @rmtoll SR CC3IF LL_TIM_IsActiveFlag_CC3 + * @param TIMx Timer instance + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_TIM_IsActiveFlag_CC3(TIM_TypeDef *TIMx) +{ + return ((READ_BIT(TIMx->SR, TIM_SR_CC3IF) == (TIM_SR_CC3IF)) ? 1UL : 0UL); +} + +/** + * @brief Clear the Capture/Compare 4 interrupt flag (CC4F). + * @rmtoll SR CC4IF LL_TIM_ClearFlag_CC4 + * @param TIMx Timer instance + * @retval None + */ +__STATIC_INLINE void LL_TIM_ClearFlag_CC4(TIM_TypeDef *TIMx) +{ + WRITE_REG(TIMx->SR, ~(TIM_SR_CC4IF)); +} + +/** + * @brief Indicate whether Capture/Compare 4 interrupt flag (CC4F) is set (Capture/Compare 4 interrupt is pending). + * @rmtoll SR CC4IF LL_TIM_IsActiveFlag_CC4 + * @param TIMx Timer instance + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_TIM_IsActiveFlag_CC4(TIM_TypeDef *TIMx) +{ + return ((READ_BIT(TIMx->SR, TIM_SR_CC4IF) == (TIM_SR_CC4IF)) ? 1UL : 0UL); +} + +/** + * @brief Clear the commutation interrupt flag (COMIF). + * @rmtoll SR COMIF LL_TIM_ClearFlag_COM + * @param TIMx Timer instance + * @retval None + */ +__STATIC_INLINE void LL_TIM_ClearFlag_COM(TIM_TypeDef *TIMx) +{ + WRITE_REG(TIMx->SR, ~(TIM_SR_COMIF)); +} + +/** + * @brief Indicate whether commutation interrupt flag (COMIF) is set (commutation interrupt is pending). + * @rmtoll SR COMIF LL_TIM_IsActiveFlag_COM + * @param TIMx Timer instance + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_TIM_IsActiveFlag_COM(TIM_TypeDef *TIMx) +{ + return ((READ_BIT(TIMx->SR, TIM_SR_COMIF) == (TIM_SR_COMIF)) ? 1UL : 0UL); +} + +/** + * @brief Clear the trigger interrupt flag (TIF). + * @rmtoll SR TIF LL_TIM_ClearFlag_TRIG + * @param TIMx Timer instance + * @retval None + */ +__STATIC_INLINE void LL_TIM_ClearFlag_TRIG(TIM_TypeDef *TIMx) +{ + WRITE_REG(TIMx->SR, ~(TIM_SR_TIF)); +} + +/** + * @brief Indicate whether trigger interrupt flag (TIF) is set (trigger interrupt is pending). + * @rmtoll SR TIF LL_TIM_IsActiveFlag_TRIG + * @param TIMx Timer instance + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_TIM_IsActiveFlag_TRIG(TIM_TypeDef *TIMx) +{ + return ((READ_BIT(TIMx->SR, TIM_SR_TIF) == (TIM_SR_TIF)) ? 1UL : 0UL); +} + +/** + * @brief Clear the break interrupt flag (BIF). + * @rmtoll SR BIF LL_TIM_ClearFlag_BRK + * @param TIMx Timer instance + * @retval None + */ +__STATIC_INLINE void LL_TIM_ClearFlag_BRK(TIM_TypeDef *TIMx) +{ + WRITE_REG(TIMx->SR, ~(TIM_SR_BIF)); +} + +/** + * @brief Indicate whether break interrupt flag (BIF) is set (break interrupt is pending). + * @rmtoll SR BIF LL_TIM_IsActiveFlag_BRK + * @param TIMx Timer instance + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_TIM_IsActiveFlag_BRK(TIM_TypeDef *TIMx) +{ + return ((READ_BIT(TIMx->SR, TIM_SR_BIF) == (TIM_SR_BIF)) ? 1UL : 0UL); +} + +/** + * @brief Clear the Capture/Compare 1 over-capture interrupt flag (CC1OF). + * @rmtoll SR CC1OF LL_TIM_ClearFlag_CC1OVR + * @param TIMx Timer instance + * @retval None + */ +__STATIC_INLINE void LL_TIM_ClearFlag_CC1OVR(TIM_TypeDef *TIMx) +{ + WRITE_REG(TIMx->SR, ~(TIM_SR_CC1OF)); +} + +/** + * @brief Indicate whether Capture/Compare 1 over-capture interrupt flag (CC1OF) is set (Capture/Compare 1 interrupt is pending). + * @rmtoll SR CC1OF LL_TIM_IsActiveFlag_CC1OVR + * @param TIMx Timer instance + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_TIM_IsActiveFlag_CC1OVR(TIM_TypeDef *TIMx) +{ + return ((READ_BIT(TIMx->SR, TIM_SR_CC1OF) == (TIM_SR_CC1OF)) ? 1UL : 0UL); +} + +/** + * @brief Clear the Capture/Compare 2 over-capture interrupt flag (CC2OF). + * @rmtoll SR CC2OF LL_TIM_ClearFlag_CC2OVR + * @param TIMx Timer instance + * @retval None + */ +__STATIC_INLINE void LL_TIM_ClearFlag_CC2OVR(TIM_TypeDef *TIMx) +{ + WRITE_REG(TIMx->SR, ~(TIM_SR_CC2OF)); +} + +/** + * @brief Indicate whether Capture/Compare 2 over-capture interrupt flag (CC2OF) is set (Capture/Compare 2 over-capture interrupt is pending). + * @rmtoll SR CC2OF LL_TIM_IsActiveFlag_CC2OVR + * @param TIMx Timer instance + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_TIM_IsActiveFlag_CC2OVR(TIM_TypeDef *TIMx) +{ + return ((READ_BIT(TIMx->SR, TIM_SR_CC2OF) == (TIM_SR_CC2OF)) ? 1UL : 0UL); +} + +/** + * @brief Clear the Capture/Compare 3 over-capture interrupt flag (CC3OF). + * @rmtoll SR CC3OF LL_TIM_ClearFlag_CC3OVR + * @param TIMx Timer instance + * @retval None + */ +__STATIC_INLINE void LL_TIM_ClearFlag_CC3OVR(TIM_TypeDef *TIMx) +{ + WRITE_REG(TIMx->SR, ~(TIM_SR_CC3OF)); +} + +/** + * @brief Indicate whether Capture/Compare 3 over-capture interrupt flag (CC3OF) is set (Capture/Compare 3 over-capture interrupt is pending). + * @rmtoll SR CC3OF LL_TIM_IsActiveFlag_CC3OVR + * @param TIMx Timer instance + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_TIM_IsActiveFlag_CC3OVR(TIM_TypeDef *TIMx) +{ + return ((READ_BIT(TIMx->SR, TIM_SR_CC3OF) == (TIM_SR_CC3OF)) ? 1UL : 0UL); +} + +/** + * @brief Clear the Capture/Compare 4 over-capture interrupt flag (CC4OF). + * @rmtoll SR CC4OF LL_TIM_ClearFlag_CC4OVR + * @param TIMx Timer instance + * @retval None + */ +__STATIC_INLINE void LL_TIM_ClearFlag_CC4OVR(TIM_TypeDef *TIMx) +{ + WRITE_REG(TIMx->SR, ~(TIM_SR_CC4OF)); +} + +/** + * @brief Indicate whether Capture/Compare 4 over-capture interrupt flag (CC4OF) is set (Capture/Compare 4 over-capture interrupt is pending). + * @rmtoll SR CC4OF LL_TIM_IsActiveFlag_CC4OVR + * @param TIMx Timer instance + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_TIM_IsActiveFlag_CC4OVR(TIM_TypeDef *TIMx) +{ + return ((READ_BIT(TIMx->SR, TIM_SR_CC4OF) == (TIM_SR_CC4OF)) ? 1UL : 0UL); +} + +/** + * @} + */ + +/** @defgroup TIM_LL_EF_IT_Management IT-Management + * @{ + */ +/** + * @brief Enable update interrupt (UIE). + * @rmtoll DIER UIE LL_TIM_EnableIT_UPDATE + * @param TIMx Timer instance + * @retval None + */ +__STATIC_INLINE void LL_TIM_EnableIT_UPDATE(TIM_TypeDef *TIMx) +{ + SET_BIT(TIMx->DIER, TIM_DIER_UIE); +} + +/** + * @brief Disable update interrupt (UIE). + * @rmtoll DIER UIE LL_TIM_DisableIT_UPDATE + * @param TIMx Timer instance + * @retval None + */ +__STATIC_INLINE void LL_TIM_DisableIT_UPDATE(TIM_TypeDef *TIMx) +{ + CLEAR_BIT(TIMx->DIER, TIM_DIER_UIE); +} + +/** + * @brief Indicates whether the update interrupt (UIE) is enabled. + * @rmtoll DIER UIE LL_TIM_IsEnabledIT_UPDATE + * @param TIMx Timer instance + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_TIM_IsEnabledIT_UPDATE(TIM_TypeDef *TIMx) +{ + return ((READ_BIT(TIMx->DIER, TIM_DIER_UIE) == (TIM_DIER_UIE)) ? 1UL : 0UL); +} + +/** + * @brief Enable capture/compare 1 interrupt (CC1IE). + * @rmtoll DIER CC1IE LL_TIM_EnableIT_CC1 + * @param TIMx Timer instance + * @retval None + */ +__STATIC_INLINE void LL_TIM_EnableIT_CC1(TIM_TypeDef *TIMx) +{ + SET_BIT(TIMx->DIER, TIM_DIER_CC1IE); +} + +/** + * @brief Disable capture/compare 1 interrupt (CC1IE). + * @rmtoll DIER CC1IE LL_TIM_DisableIT_CC1 + * @param TIMx Timer instance + * @retval None + */ +__STATIC_INLINE void LL_TIM_DisableIT_CC1(TIM_TypeDef *TIMx) +{ + CLEAR_BIT(TIMx->DIER, TIM_DIER_CC1IE); +} + +/** + * @brief Indicates whether the capture/compare 1 interrupt (CC1IE) is enabled. + * @rmtoll DIER CC1IE LL_TIM_IsEnabledIT_CC1 + * @param TIMx Timer instance + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_TIM_IsEnabledIT_CC1(TIM_TypeDef *TIMx) +{ + return ((READ_BIT(TIMx->DIER, TIM_DIER_CC1IE) == (TIM_DIER_CC1IE)) ? 1UL : 0UL); +} + +/** + * @brief Enable capture/compare 2 interrupt (CC2IE). + * @rmtoll DIER CC2IE LL_TIM_EnableIT_CC2 + * @param TIMx Timer instance + * @retval None + */ +__STATIC_INLINE void LL_TIM_EnableIT_CC2(TIM_TypeDef *TIMx) +{ + SET_BIT(TIMx->DIER, TIM_DIER_CC2IE); +} + +/** + * @brief Disable capture/compare 2 interrupt (CC2IE). + * @rmtoll DIER CC2IE LL_TIM_DisableIT_CC2 + * @param TIMx Timer instance + * @retval None + */ +__STATIC_INLINE void LL_TIM_DisableIT_CC2(TIM_TypeDef *TIMx) +{ + CLEAR_BIT(TIMx->DIER, TIM_DIER_CC2IE); +} + +/** + * @brief Indicates whether the capture/compare 2 interrupt (CC2IE) is enabled. + * @rmtoll DIER CC2IE LL_TIM_IsEnabledIT_CC2 + * @param TIMx Timer instance + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_TIM_IsEnabledIT_CC2(TIM_TypeDef *TIMx) +{ + return ((READ_BIT(TIMx->DIER, TIM_DIER_CC2IE) == (TIM_DIER_CC2IE)) ? 1UL : 0UL); +} + +/** + * @brief Enable capture/compare 3 interrupt (CC3IE). + * @rmtoll DIER CC3IE LL_TIM_EnableIT_CC3 + * @param TIMx Timer instance + * @retval None + */ +__STATIC_INLINE void LL_TIM_EnableIT_CC3(TIM_TypeDef *TIMx) +{ + SET_BIT(TIMx->DIER, TIM_DIER_CC3IE); +} + +/** + * @brief Disable capture/compare 3 interrupt (CC3IE). + * @rmtoll DIER CC3IE LL_TIM_DisableIT_CC3 + * @param TIMx Timer instance + * @retval None + */ +__STATIC_INLINE void LL_TIM_DisableIT_CC3(TIM_TypeDef *TIMx) +{ + CLEAR_BIT(TIMx->DIER, TIM_DIER_CC3IE); +} + +/** + * @brief Indicates whether the capture/compare 3 interrupt (CC3IE) is enabled. + * @rmtoll DIER CC3IE LL_TIM_IsEnabledIT_CC3 + * @param TIMx Timer instance + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_TIM_IsEnabledIT_CC3(TIM_TypeDef *TIMx) +{ + return ((READ_BIT(TIMx->DIER, TIM_DIER_CC3IE) == (TIM_DIER_CC3IE)) ? 1UL : 0UL); +} + +/** + * @brief Enable capture/compare 4 interrupt (CC4IE). + * @rmtoll DIER CC4IE LL_TIM_EnableIT_CC4 + * @param TIMx Timer instance + * @retval None + */ +__STATIC_INLINE void LL_TIM_EnableIT_CC4(TIM_TypeDef *TIMx) +{ + SET_BIT(TIMx->DIER, TIM_DIER_CC4IE); +} + +/** + * @brief Disable capture/compare 4 interrupt (CC4IE). + * @rmtoll DIER CC4IE LL_TIM_DisableIT_CC4 + * @param TIMx Timer instance + * @retval None + */ +__STATIC_INLINE void LL_TIM_DisableIT_CC4(TIM_TypeDef *TIMx) +{ + CLEAR_BIT(TIMx->DIER, TIM_DIER_CC4IE); +} + +/** + * @brief Indicates whether the capture/compare 4 interrupt (CC4IE) is enabled. + * @rmtoll DIER CC4IE LL_TIM_IsEnabledIT_CC4 + * @param TIMx Timer instance + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_TIM_IsEnabledIT_CC4(TIM_TypeDef *TIMx) +{ + return ((READ_BIT(TIMx->DIER, TIM_DIER_CC4IE) == (TIM_DIER_CC4IE)) ? 1UL : 0UL); +} + +/** + * @brief Enable commutation interrupt (COMIE). + * @rmtoll DIER COMIE LL_TIM_EnableIT_COM + * @param TIMx Timer instance + * @retval None + */ +__STATIC_INLINE void LL_TIM_EnableIT_COM(TIM_TypeDef *TIMx) +{ + SET_BIT(TIMx->DIER, TIM_DIER_COMIE); +} + +/** + * @brief Disable commutation interrupt (COMIE). + * @rmtoll DIER COMIE LL_TIM_DisableIT_COM + * @param TIMx Timer instance + * @retval None + */ +__STATIC_INLINE void LL_TIM_DisableIT_COM(TIM_TypeDef *TIMx) +{ + CLEAR_BIT(TIMx->DIER, TIM_DIER_COMIE); +} + +/** + * @brief Indicates whether the commutation interrupt (COMIE) is enabled. + * @rmtoll DIER COMIE LL_TIM_IsEnabledIT_COM + * @param TIMx Timer instance + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_TIM_IsEnabledIT_COM(TIM_TypeDef *TIMx) +{ + return ((READ_BIT(TIMx->DIER, TIM_DIER_COMIE) == (TIM_DIER_COMIE)) ? 1UL : 0UL); +} + +/** + * @brief Enable trigger interrupt (TIE). + * @rmtoll DIER TIE LL_TIM_EnableIT_TRIG + * @param TIMx Timer instance + * @retval None + */ +__STATIC_INLINE void LL_TIM_EnableIT_TRIG(TIM_TypeDef *TIMx) +{ + SET_BIT(TIMx->DIER, TIM_DIER_TIE); +} + +/** + * @brief Disable trigger interrupt (TIE). + * @rmtoll DIER TIE LL_TIM_DisableIT_TRIG + * @param TIMx Timer instance + * @retval None + */ +__STATIC_INLINE void LL_TIM_DisableIT_TRIG(TIM_TypeDef *TIMx) +{ + CLEAR_BIT(TIMx->DIER, TIM_DIER_TIE); +} + +/** + * @brief Indicates whether the trigger interrupt (TIE) is enabled. + * @rmtoll DIER TIE LL_TIM_IsEnabledIT_TRIG + * @param TIMx Timer instance + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_TIM_IsEnabledIT_TRIG(TIM_TypeDef *TIMx) +{ + return ((READ_BIT(TIMx->DIER, TIM_DIER_TIE) == (TIM_DIER_TIE)) ? 1UL : 0UL); +} + +/** + * @brief Enable break interrupt (BIE). + * @rmtoll DIER BIE LL_TIM_EnableIT_BRK + * @param TIMx Timer instance + * @retval None + */ +__STATIC_INLINE void LL_TIM_EnableIT_BRK(TIM_TypeDef *TIMx) +{ + SET_BIT(TIMx->DIER, TIM_DIER_BIE); +} + +/** + * @brief Disable break interrupt (BIE). + * @rmtoll DIER BIE LL_TIM_DisableIT_BRK + * @param TIMx Timer instance + * @retval None + */ +__STATIC_INLINE void LL_TIM_DisableIT_BRK(TIM_TypeDef *TIMx) +{ + CLEAR_BIT(TIMx->DIER, TIM_DIER_BIE); +} + +/** + * @brief Indicates whether the break interrupt (BIE) is enabled. + * @rmtoll DIER BIE LL_TIM_IsEnabledIT_BRK + * @param TIMx Timer instance + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_TIM_IsEnabledIT_BRK(TIM_TypeDef *TIMx) +{ + return ((READ_BIT(TIMx->DIER, TIM_DIER_BIE) == (TIM_DIER_BIE)) ? 1UL : 0UL); +} + +/** + * @} + */ + +/** @defgroup TIM_LL_EF_DMA_Management DMA-Management + * @{ + */ +/** + * @brief Enable update DMA request (UDE). + * @rmtoll DIER UDE LL_TIM_EnableDMAReq_UPDATE + * @param TIMx Timer instance + * @retval None + */ +__STATIC_INLINE void LL_TIM_EnableDMAReq_UPDATE(TIM_TypeDef *TIMx) +{ + SET_BIT(TIMx->DIER, TIM_DIER_UDE); +} + +/** + * @brief Disable update DMA request (UDE). + * @rmtoll DIER UDE LL_TIM_DisableDMAReq_UPDATE + * @param TIMx Timer instance + * @retval None + */ +__STATIC_INLINE void LL_TIM_DisableDMAReq_UPDATE(TIM_TypeDef *TIMx) +{ + CLEAR_BIT(TIMx->DIER, TIM_DIER_UDE); +} + +/** + * @brief Indicates whether the update DMA request (UDE) is enabled. + * @rmtoll DIER UDE LL_TIM_IsEnabledDMAReq_UPDATE + * @param TIMx Timer instance + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_TIM_IsEnabledDMAReq_UPDATE(TIM_TypeDef *TIMx) +{ + return ((READ_BIT(TIMx->DIER, TIM_DIER_UDE) == (TIM_DIER_UDE)) ? 1UL : 0UL); +} + +/** + * @brief Enable capture/compare 1 DMA request (CC1DE). + * @rmtoll DIER CC1DE LL_TIM_EnableDMAReq_CC1 + * @param TIMx Timer instance + * @retval None + */ +__STATIC_INLINE void LL_TIM_EnableDMAReq_CC1(TIM_TypeDef *TIMx) +{ + SET_BIT(TIMx->DIER, TIM_DIER_CC1DE); +} + +/** + * @brief Disable capture/compare 1 DMA request (CC1DE). + * @rmtoll DIER CC1DE LL_TIM_DisableDMAReq_CC1 + * @param TIMx Timer instance + * @retval None + */ +__STATIC_INLINE void LL_TIM_DisableDMAReq_CC1(TIM_TypeDef *TIMx) +{ + CLEAR_BIT(TIMx->DIER, TIM_DIER_CC1DE); +} + +/** + * @brief Indicates whether the capture/compare 1 DMA request (CC1DE) is enabled. + * @rmtoll DIER CC1DE LL_TIM_IsEnabledDMAReq_CC1 + * @param TIMx Timer instance + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_TIM_IsEnabledDMAReq_CC1(TIM_TypeDef *TIMx) +{ + return ((READ_BIT(TIMx->DIER, TIM_DIER_CC1DE) == (TIM_DIER_CC1DE)) ? 1UL : 0UL); +} + +/** + * @brief Enable capture/compare 2 DMA request (CC2DE). + * @rmtoll DIER CC2DE LL_TIM_EnableDMAReq_CC2 + * @param TIMx Timer instance + * @retval None + */ +__STATIC_INLINE void LL_TIM_EnableDMAReq_CC2(TIM_TypeDef *TIMx) +{ + SET_BIT(TIMx->DIER, TIM_DIER_CC2DE); +} + +/** + * @brief Disable capture/compare 2 DMA request (CC2DE). + * @rmtoll DIER CC2DE LL_TIM_DisableDMAReq_CC2 + * @param TIMx Timer instance + * @retval None + */ +__STATIC_INLINE void LL_TIM_DisableDMAReq_CC2(TIM_TypeDef *TIMx) +{ + CLEAR_BIT(TIMx->DIER, TIM_DIER_CC2DE); +} + +/** + * @brief Indicates whether the capture/compare 2 DMA request (CC2DE) is enabled. + * @rmtoll DIER CC2DE LL_TIM_IsEnabledDMAReq_CC2 + * @param TIMx Timer instance + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_TIM_IsEnabledDMAReq_CC2(TIM_TypeDef *TIMx) +{ + return ((READ_BIT(TIMx->DIER, TIM_DIER_CC2DE) == (TIM_DIER_CC2DE)) ? 1UL : 0UL); +} + +/** + * @brief Enable capture/compare 3 DMA request (CC3DE). + * @rmtoll DIER CC3DE LL_TIM_EnableDMAReq_CC3 + * @param TIMx Timer instance + * @retval None + */ +__STATIC_INLINE void LL_TIM_EnableDMAReq_CC3(TIM_TypeDef *TIMx) +{ + SET_BIT(TIMx->DIER, TIM_DIER_CC3DE); +} + +/** + * @brief Disable capture/compare 3 DMA request (CC3DE). + * @rmtoll DIER CC3DE LL_TIM_DisableDMAReq_CC3 + * @param TIMx Timer instance + * @retval None + */ +__STATIC_INLINE void LL_TIM_DisableDMAReq_CC3(TIM_TypeDef *TIMx) +{ + CLEAR_BIT(TIMx->DIER, TIM_DIER_CC3DE); +} + +/** + * @brief Indicates whether the capture/compare 3 DMA request (CC3DE) is enabled. + * @rmtoll DIER CC3DE LL_TIM_IsEnabledDMAReq_CC3 + * @param TIMx Timer instance + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_TIM_IsEnabledDMAReq_CC3(TIM_TypeDef *TIMx) +{ + return ((READ_BIT(TIMx->DIER, TIM_DIER_CC3DE) == (TIM_DIER_CC3DE)) ? 1UL : 0UL); +} + +/** + * @brief Enable capture/compare 4 DMA request (CC4DE). + * @rmtoll DIER CC4DE LL_TIM_EnableDMAReq_CC4 + * @param TIMx Timer instance + * @retval None + */ +__STATIC_INLINE void LL_TIM_EnableDMAReq_CC4(TIM_TypeDef *TIMx) +{ + SET_BIT(TIMx->DIER, TIM_DIER_CC4DE); +} + +/** + * @brief Disable capture/compare 4 DMA request (CC4DE). + * @rmtoll DIER CC4DE LL_TIM_DisableDMAReq_CC4 + * @param TIMx Timer instance + * @retval None + */ +__STATIC_INLINE void LL_TIM_DisableDMAReq_CC4(TIM_TypeDef *TIMx) +{ + CLEAR_BIT(TIMx->DIER, TIM_DIER_CC4DE); +} + +/** + * @brief Indicates whether the capture/compare 4 DMA request (CC4DE) is enabled. + * @rmtoll DIER CC4DE LL_TIM_IsEnabledDMAReq_CC4 + * @param TIMx Timer instance + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_TIM_IsEnabledDMAReq_CC4(TIM_TypeDef *TIMx) +{ + return ((READ_BIT(TIMx->DIER, TIM_DIER_CC4DE) == (TIM_DIER_CC4DE)) ? 1UL : 0UL); +} + +/** + * @brief Enable commutation DMA request (COMDE). + * @rmtoll DIER COMDE LL_TIM_EnableDMAReq_COM + * @param TIMx Timer instance + * @retval None + */ +__STATIC_INLINE void LL_TIM_EnableDMAReq_COM(TIM_TypeDef *TIMx) +{ + SET_BIT(TIMx->DIER, TIM_DIER_COMDE); +} + +/** + * @brief Disable commutation DMA request (COMDE). + * @rmtoll DIER COMDE LL_TIM_DisableDMAReq_COM + * @param TIMx Timer instance + * @retval None + */ +__STATIC_INLINE void LL_TIM_DisableDMAReq_COM(TIM_TypeDef *TIMx) +{ + CLEAR_BIT(TIMx->DIER, TIM_DIER_COMDE); +} + +/** + * @brief Indicates whether the commutation DMA request (COMDE) is enabled. + * @rmtoll DIER COMDE LL_TIM_IsEnabledDMAReq_COM + * @param TIMx Timer instance + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_TIM_IsEnabledDMAReq_COM(TIM_TypeDef *TIMx) +{ + return ((READ_BIT(TIMx->DIER, TIM_DIER_COMDE) == (TIM_DIER_COMDE)) ? 1UL : 0UL); +} + +/** + * @brief Enable trigger interrupt (TDE). + * @rmtoll DIER TDE LL_TIM_EnableDMAReq_TRIG + * @param TIMx Timer instance + * @retval None + */ +__STATIC_INLINE void LL_TIM_EnableDMAReq_TRIG(TIM_TypeDef *TIMx) +{ + SET_BIT(TIMx->DIER, TIM_DIER_TDE); +} + +/** + * @brief Disable trigger interrupt (TDE). + * @rmtoll DIER TDE LL_TIM_DisableDMAReq_TRIG + * @param TIMx Timer instance + * @retval None + */ +__STATIC_INLINE void LL_TIM_DisableDMAReq_TRIG(TIM_TypeDef *TIMx) +{ + CLEAR_BIT(TIMx->DIER, TIM_DIER_TDE); +} + +/** + * @brief Indicates whether the trigger interrupt (TDE) is enabled. + * @rmtoll DIER TDE LL_TIM_IsEnabledDMAReq_TRIG + * @param TIMx Timer instance + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_TIM_IsEnabledDMAReq_TRIG(TIM_TypeDef *TIMx) +{ + return ((READ_BIT(TIMx->DIER, TIM_DIER_TDE) == (TIM_DIER_TDE)) ? 1UL : 0UL); +} + +/** + * @} + */ + +/** @defgroup TIM_LL_EF_EVENT_Management EVENT-Management + * @{ + */ +/** + * @brief Generate an update event. + * @rmtoll EGR UG LL_TIM_GenerateEvent_UPDATE + * @param TIMx Timer instance + * @retval None + */ +__STATIC_INLINE void LL_TIM_GenerateEvent_UPDATE(TIM_TypeDef *TIMx) +{ + SET_BIT(TIMx->EGR, TIM_EGR_UG); +} + +/** + * @brief Generate Capture/Compare 1 event. + * @rmtoll EGR CC1G LL_TIM_GenerateEvent_CC1 + * @param TIMx Timer instance + * @retval None + */ +__STATIC_INLINE void LL_TIM_GenerateEvent_CC1(TIM_TypeDef *TIMx) +{ + SET_BIT(TIMx->EGR, TIM_EGR_CC1G); +} + +/** + * @brief Generate Capture/Compare 2 event. + * @rmtoll EGR CC2G LL_TIM_GenerateEvent_CC2 + * @param TIMx Timer instance + * @retval None + */ +__STATIC_INLINE void LL_TIM_GenerateEvent_CC2(TIM_TypeDef *TIMx) +{ + SET_BIT(TIMx->EGR, TIM_EGR_CC2G); +} + +/** + * @brief Generate Capture/Compare 3 event. + * @rmtoll EGR CC3G LL_TIM_GenerateEvent_CC3 + * @param TIMx Timer instance + * @retval None + */ +__STATIC_INLINE void LL_TIM_GenerateEvent_CC3(TIM_TypeDef *TIMx) +{ + SET_BIT(TIMx->EGR, TIM_EGR_CC3G); +} + +/** + * @brief Generate Capture/Compare 4 event. + * @rmtoll EGR CC4G LL_TIM_GenerateEvent_CC4 + * @param TIMx Timer instance + * @retval None + */ +__STATIC_INLINE void LL_TIM_GenerateEvent_CC4(TIM_TypeDef *TIMx) +{ + SET_BIT(TIMx->EGR, TIM_EGR_CC4G); +} + +/** + * @brief Generate commutation event. + * @rmtoll EGR COMG LL_TIM_GenerateEvent_COM + * @param TIMx Timer instance + * @retval None + */ +__STATIC_INLINE void LL_TIM_GenerateEvent_COM(TIM_TypeDef *TIMx) +{ + SET_BIT(TIMx->EGR, TIM_EGR_COMG); +} + +/** + * @brief Generate trigger event. + * @rmtoll EGR TG LL_TIM_GenerateEvent_TRIG + * @param TIMx Timer instance + * @retval None + */ +__STATIC_INLINE void LL_TIM_GenerateEvent_TRIG(TIM_TypeDef *TIMx) +{ + SET_BIT(TIMx->EGR, TIM_EGR_TG); +} + +/** + * @brief Generate break event. + * @rmtoll EGR BG LL_TIM_GenerateEvent_BRK + * @param TIMx Timer instance + * @retval None + */ +__STATIC_INLINE void LL_TIM_GenerateEvent_BRK(TIM_TypeDef *TIMx) +{ + SET_BIT(TIMx->EGR, TIM_EGR_BG); +} + +/** + * @} + */ + +#if defined(USE_FULL_LL_DRIVER) +/** @defgroup TIM_LL_EF_Init Initialisation and deinitialisation functions + * @{ + */ + +ErrorStatus LL_TIM_DeInit(TIM_TypeDef *TIMx); +void LL_TIM_StructInit(LL_TIM_InitTypeDef *TIM_InitStruct); +ErrorStatus LL_TIM_Init(TIM_TypeDef *TIMx, LL_TIM_InitTypeDef *TIM_InitStruct); +void LL_TIM_OC_StructInit(LL_TIM_OC_InitTypeDef *TIM_OC_InitStruct); +ErrorStatus LL_TIM_OC_Init(TIM_TypeDef *TIMx, uint32_t Channel, LL_TIM_OC_InitTypeDef *TIM_OC_InitStruct); +void LL_TIM_IC_StructInit(LL_TIM_IC_InitTypeDef *TIM_ICInitStruct); +ErrorStatus LL_TIM_IC_Init(TIM_TypeDef *TIMx, uint32_t Channel, LL_TIM_IC_InitTypeDef *TIM_IC_InitStruct); +void LL_TIM_ENCODER_StructInit(LL_TIM_ENCODER_InitTypeDef *TIM_EncoderInitStruct); +ErrorStatus LL_TIM_ENCODER_Init(TIM_TypeDef *TIMx, LL_TIM_ENCODER_InitTypeDef *TIM_EncoderInitStruct); +void LL_TIM_HALLSENSOR_StructInit(LL_TIM_HALLSENSOR_InitTypeDef *TIM_HallSensorInitStruct); +ErrorStatus LL_TIM_HALLSENSOR_Init(TIM_TypeDef *TIMx, LL_TIM_HALLSENSOR_InitTypeDef *TIM_HallSensorInitStruct); +void LL_TIM_BDTR_StructInit(LL_TIM_BDTR_InitTypeDef *TIM_BDTRInitStruct); +ErrorStatus LL_TIM_BDTR_Init(TIM_TypeDef *TIMx, LL_TIM_BDTR_InitTypeDef *TIM_BDTRInitStruct); +/** + * @} + */ +#endif /* USE_FULL_LL_DRIVER */ + +/** + * @} + */ + +/** + * @} + */ + +#endif /* TIM1 || TIM2 || TIM3 || TIM4 || TIM5 || TIM6 || TIM7 || TIM8 || TIM9 || TIM10 || TIM11 || TIM12 || TIM13 || TIM14 || TIM15 || TIM16 || TIM17 */ + +/** + * @} + */ + +#ifdef __cplusplus +} +#endif + +#endif /* __STM32F1xx_LL_TIM_H */ +/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/ diff --git a/LLDrivers/inc/stm32f1xx_ll_usart.h b/LLDrivers/inc/stm32f1xx_ll_usart.h new file mode 100644 index 0000000..20c1977 --- /dev/null +++ b/LLDrivers/inc/stm32f1xx_ll_usart.h @@ -0,0 +1,2569 @@ +/** + ****************************************************************************** + * @file stm32f1xx_ll_usart.h + * @author MCD Application Team + * @brief Header file of USART LL module. + ****************************************************************************** + * @attention + * + *

© Copyright (c) 2016 STMicroelectronics. + * All rights reserved.

+ * + * This software component is licensed by ST under BSD 3-Clause license, + * the "License"; You may not use this file except in compliance with the + * License. You may obtain a copy of the License at: + * opensource.org/licenses/BSD-3-Clause + * + ****************************************************************************** + */ + +/* Define to prevent recursive inclusion -------------------------------------*/ +#ifndef __STM32F1xx_LL_USART_H +#define __STM32F1xx_LL_USART_H + +#ifdef __cplusplus +extern "C" { +#endif + +/* Includes ------------------------------------------------------------------*/ +#include "stm32f1xx.h" + +/** @addtogroup STM32F1xx_LL_Driver + * @{ + */ + +#if defined (USART1) || defined (USART2) || defined (USART3) || defined (UART4) || defined (UART5) + +/** @defgroup USART_LL USART + * @{ + */ + +/* Private types -------------------------------------------------------------*/ +/* Private variables ---------------------------------------------------------*/ + +/* Private constants ---------------------------------------------------------*/ +/** @defgroup USART_LL_Private_Constants USART Private Constants + * @{ + */ + +/* Defines used for the bit position in the register and perform offsets*/ +#define USART_POSITION_GTPR_GT USART_GTPR_GT_Pos +/** + * @} + */ + +/* Private macros ------------------------------------------------------------*/ +#if defined(USE_FULL_LL_DRIVER) +/** @defgroup USART_LL_Private_Macros USART Private Macros + * @{ + */ +/** + * @} + */ +#endif /*USE_FULL_LL_DRIVER*/ + +/* Exported types ------------------------------------------------------------*/ +#if defined(USE_FULL_LL_DRIVER) +/** @defgroup USART_LL_ES_INIT USART Exported Init structures + * @{ + */ + +/** + * @brief LL USART Init Structure definition + */ +typedef struct +{ + uint32_t BaudRate; /*!< This field defines expected Usart communication baud rate. + + This feature can be modified afterwards using unitary function @ref LL_USART_SetBaudRate().*/ + + uint32_t DataWidth; /*!< Specifies the number of data bits transmitted or received in a frame. + This parameter can be a value of @ref USART_LL_EC_DATAWIDTH. + + This feature can be modified afterwards using unitary function @ref LL_USART_SetDataWidth().*/ + + uint32_t StopBits; /*!< Specifies the number of stop bits transmitted. + This parameter can be a value of @ref USART_LL_EC_STOPBITS. + + This feature can be modified afterwards using unitary function @ref LL_USART_SetStopBitsLength().*/ + + uint32_t Parity; /*!< Specifies the parity mode. + This parameter can be a value of @ref USART_LL_EC_PARITY. + + This feature can be modified afterwards using unitary function @ref LL_USART_SetParity().*/ + + uint32_t TransferDirection; /*!< Specifies whether the Receive and/or Transmit mode is enabled or disabled. + This parameter can be a value of @ref USART_LL_EC_DIRECTION. + + This feature can be modified afterwards using unitary function @ref LL_USART_SetTransferDirection().*/ + + uint32_t HardwareFlowControl; /*!< Specifies whether the hardware flow control mode is enabled or disabled. + This parameter can be a value of @ref USART_LL_EC_HWCONTROL. + + This feature can be modified afterwards using unitary function @ref LL_USART_SetHWFlowCtrl().*/ + + uint32_t OverSampling; /*!< Specifies whether USART oversampling mode is 16 or 8. + This parameter can be a value of @ref USART_LL_EC_OVERSAMPLING. + + This feature can be modified afterwards using unitary function @ref LL_USART_SetOverSampling().*/ + +} LL_USART_InitTypeDef; + +/** + * @brief LL USART Clock Init Structure definition + */ +typedef struct +{ + uint32_t ClockOutput; /*!< Specifies whether the USART clock is enabled or disabled. + This parameter can be a value of @ref USART_LL_EC_CLOCK. + + USART HW configuration can be modified afterwards using unitary functions + @ref LL_USART_EnableSCLKOutput() or @ref LL_USART_DisableSCLKOutput(). + For more details, refer to description of this function. */ + + uint32_t ClockPolarity; /*!< Specifies the steady state of the serial clock. + This parameter can be a value of @ref USART_LL_EC_POLARITY. + + USART HW configuration can be modified afterwards using unitary functions @ref LL_USART_SetClockPolarity(). + For more details, refer to description of this function. */ + + uint32_t ClockPhase; /*!< Specifies the clock transition on which the bit capture is made. + This parameter can be a value of @ref USART_LL_EC_PHASE. + + USART HW configuration can be modified afterwards using unitary functions @ref LL_USART_SetClockPhase(). + For more details, refer to description of this function. */ + + uint32_t LastBitClockPulse; /*!< Specifies whether the clock pulse corresponding to the last transmitted + data bit (MSB) has to be output on the SCLK pin in synchronous mode. + This parameter can be a value of @ref USART_LL_EC_LASTCLKPULSE. + + USART HW configuration can be modified afterwards using unitary functions @ref LL_USART_SetLastClkPulseOutput(). + For more details, refer to description of this function. */ + +} LL_USART_ClockInitTypeDef; + +/** + * @} + */ +#endif /* USE_FULL_LL_DRIVER */ + +/* Exported constants --------------------------------------------------------*/ +/** @defgroup USART_LL_Exported_Constants USART Exported Constants + * @{ + */ + +/** @defgroup USART_LL_EC_GET_FLAG Get Flags Defines + * @brief Flags defines which can be used with LL_USART_ReadReg function + * @{ + */ +#define LL_USART_SR_PE USART_SR_PE /*!< Parity error flag */ +#define LL_USART_SR_FE USART_SR_FE /*!< Framing error flag */ +#define LL_USART_SR_NE USART_SR_NE /*!< Noise detected flag */ +#define LL_USART_SR_ORE USART_SR_ORE /*!< Overrun error flag */ +#define LL_USART_SR_IDLE USART_SR_IDLE /*!< Idle line detected flag */ +#define LL_USART_SR_RXNE USART_SR_RXNE /*!< Read data register not empty flag */ +#define LL_USART_SR_TC USART_SR_TC /*!< Transmission complete flag */ +#define LL_USART_SR_TXE USART_SR_TXE /*!< Transmit data register empty flag */ +#define LL_USART_SR_LBD USART_SR_LBD /*!< LIN break detection flag */ +#define LL_USART_SR_CTS USART_SR_CTS /*!< CTS flag */ +/** + * @} + */ + +/** @defgroup USART_LL_EC_IT IT Defines + * @brief IT defines which can be used with LL_USART_ReadReg and LL_USART_WriteReg functions + * @{ + */ +#define LL_USART_CR1_IDLEIE USART_CR1_IDLEIE /*!< IDLE interrupt enable */ +#define LL_USART_CR1_RXNEIE USART_CR1_RXNEIE /*!< Read data register not empty interrupt enable */ +#define LL_USART_CR1_TCIE USART_CR1_TCIE /*!< Transmission complete interrupt enable */ +#define LL_USART_CR1_TXEIE USART_CR1_TXEIE /*!< Transmit data register empty interrupt enable */ +#define LL_USART_CR1_PEIE USART_CR1_PEIE /*!< Parity error */ +#define LL_USART_CR2_LBDIE USART_CR2_LBDIE /*!< LIN break detection interrupt enable */ +#define LL_USART_CR3_EIE USART_CR3_EIE /*!< Error interrupt enable */ +#define LL_USART_CR3_CTSIE USART_CR3_CTSIE /*!< CTS interrupt enable */ +/** + * @} + */ + +/** @defgroup USART_LL_EC_DIRECTION Communication Direction + * @{ + */ +#define LL_USART_DIRECTION_NONE 0x00000000U /*!< Transmitter and Receiver are disabled */ +#define LL_USART_DIRECTION_RX USART_CR1_RE /*!< Transmitter is disabled and Receiver is enabled */ +#define LL_USART_DIRECTION_TX USART_CR1_TE /*!< Transmitter is enabled and Receiver is disabled */ +#define LL_USART_DIRECTION_TX_RX (USART_CR1_TE |USART_CR1_RE) /*!< Transmitter and Receiver are enabled */ +/** + * @} + */ + +/** @defgroup USART_LL_EC_PARITY Parity Control + * @{ + */ +#define LL_USART_PARITY_NONE 0x00000000U /*!< Parity control disabled */ +#define LL_USART_PARITY_EVEN USART_CR1_PCE /*!< Parity control enabled and Even Parity is selected */ +#define LL_USART_PARITY_ODD (USART_CR1_PCE | USART_CR1_PS) /*!< Parity control enabled and Odd Parity is selected */ +/** + * @} + */ + +/** @defgroup USART_LL_EC_WAKEUP Wakeup + * @{ + */ +#define LL_USART_WAKEUP_IDLELINE 0x00000000U /*!< USART wake up from Mute mode on Idle Line */ +#define LL_USART_WAKEUP_ADDRESSMARK USART_CR1_WAKE /*!< USART wake up from Mute mode on Address Mark */ +/** + * @} + */ + +/** @defgroup USART_LL_EC_DATAWIDTH Datawidth + * @{ + */ +#define LL_USART_DATAWIDTH_8B 0x00000000U /*!< 8 bits word length : Start bit, 8 data bits, n stop bits */ +#define LL_USART_DATAWIDTH_9B USART_CR1_M /*!< 9 bits word length : Start bit, 9 data bits, n stop bits */ +/** + * @} + */ + +/** @defgroup USART_LL_EC_OVERSAMPLING Oversampling + * @{ + */ +#define LL_USART_OVERSAMPLING_16 0x00000000U /*!< Oversampling by 16 */ +#if defined(USART_CR1_OVER8) +#define LL_USART_OVERSAMPLING_8 USART_CR1_OVER8 /*!< Oversampling by 8 */ +#endif /* USART_OverSampling_Feature */ +/** + * @} + */ + +#if defined(USE_FULL_LL_DRIVER) +/** @defgroup USART_LL_EC_CLOCK Clock Signal + * @{ + */ + +#define LL_USART_CLOCK_DISABLE 0x00000000U /*!< Clock signal not provided */ +#define LL_USART_CLOCK_ENABLE USART_CR2_CLKEN /*!< Clock signal provided */ +/** + * @} + */ +#endif /*USE_FULL_LL_DRIVER*/ + +/** @defgroup USART_LL_EC_LASTCLKPULSE Last Clock Pulse + * @{ + */ +#define LL_USART_LASTCLKPULSE_NO_OUTPUT 0x00000000U /*!< The clock pulse of the last data bit is not output to the SCLK pin */ +#define LL_USART_LASTCLKPULSE_OUTPUT USART_CR2_LBCL /*!< The clock pulse of the last data bit is output to the SCLK pin */ +/** + * @} + */ + +/** @defgroup USART_LL_EC_PHASE Clock Phase + * @{ + */ +#define LL_USART_PHASE_1EDGE 0x00000000U /*!< The first clock transition is the first data capture edge */ +#define LL_USART_PHASE_2EDGE USART_CR2_CPHA /*!< The second clock transition is the first data capture edge */ +/** + * @} + */ + +/** @defgroup USART_LL_EC_POLARITY Clock Polarity + * @{ + */ +#define LL_USART_POLARITY_LOW 0x00000000U /*!< Steady low value on SCLK pin outside transmission window*/ +#define LL_USART_POLARITY_HIGH USART_CR2_CPOL /*!< Steady high value on SCLK pin outside transmission window */ +/** + * @} + */ + +/** @defgroup USART_LL_EC_STOPBITS Stop Bits + * @{ + */ +#define LL_USART_STOPBITS_0_5 USART_CR2_STOP_0 /*!< 0.5 stop bit */ +#define LL_USART_STOPBITS_1 0x00000000U /*!< 1 stop bit */ +#define LL_USART_STOPBITS_1_5 (USART_CR2_STOP_0 | USART_CR2_STOP_1) /*!< 1.5 stop bits */ +#define LL_USART_STOPBITS_2 USART_CR2_STOP_1 /*!< 2 stop bits */ +/** + * @} + */ + +/** @defgroup USART_LL_EC_HWCONTROL Hardware Control + * @{ + */ +#define LL_USART_HWCONTROL_NONE 0x00000000U /*!< CTS and RTS hardware flow control disabled */ +#define LL_USART_HWCONTROL_RTS USART_CR3_RTSE /*!< RTS output enabled, data is only requested when there is space in the receive buffer */ +#define LL_USART_HWCONTROL_CTS USART_CR3_CTSE /*!< CTS mode enabled, data is only transmitted when the nCTS input is asserted (tied to 0) */ +#define LL_USART_HWCONTROL_RTS_CTS (USART_CR3_RTSE | USART_CR3_CTSE) /*!< CTS and RTS hardware flow control enabled */ +/** + * @} + */ + +/** @defgroup USART_LL_EC_IRDA_POWER IrDA Power + * @{ + */ +#define LL_USART_IRDA_POWER_NORMAL 0x00000000U /*!< IrDA normal power mode */ +#define LL_USART_IRDA_POWER_LOW USART_CR3_IRLP /*!< IrDA low power mode */ +/** + * @} + */ + +/** @defgroup USART_LL_EC_LINBREAK_DETECT LIN Break Detection Length + * @{ + */ +#define LL_USART_LINBREAK_DETECT_10B 0x00000000U /*!< 10-bit break detection method selected */ +#define LL_USART_LINBREAK_DETECT_11B USART_CR2_LBDL /*!< 11-bit break detection method selected */ +/** + * @} + */ + +/** + * @} + */ + +/* Exported macro ------------------------------------------------------------*/ +/** @defgroup USART_LL_Exported_Macros USART Exported Macros + * @{ + */ + +/** @defgroup USART_LL_EM_WRITE_READ Common Write and read registers Macros + * @{ + */ + +/** + * @brief Write a value in USART register + * @param __INSTANCE__ USART Instance + * @param __REG__ Register to be written + * @param __VALUE__ Value to be written in the register + * @retval None + */ +#define LL_USART_WriteReg(__INSTANCE__, __REG__, __VALUE__) WRITE_REG(__INSTANCE__->__REG__, (__VALUE__)) + +/** + * @brief Read a value in USART register + * @param __INSTANCE__ USART Instance + * @param __REG__ Register to be read + * @retval Register value + */ +#define LL_USART_ReadReg(__INSTANCE__, __REG__) READ_REG(__INSTANCE__->__REG__) +/** + * @} + */ + +/** @defgroup USART_LL_EM_Exported_Macros_Helper Exported_Macros_Helper + * @{ + */ + +/** + * @brief Compute USARTDIV value according to Peripheral Clock and + * expected Baud Rate in 8 bits sampling mode (32 bits value of USARTDIV is returned) + * @param __PERIPHCLK__ Peripheral Clock frequency used for USART instance + * @param __BAUDRATE__ Baud rate value to achieve + * @retval USARTDIV value to be used for BRR register filling in OverSampling_8 case + */ +#define __LL_USART_DIV_SAMPLING8_100(__PERIPHCLK__, __BAUDRATE__) (((__PERIPHCLK__)*25)/(2*(__BAUDRATE__))) +#define __LL_USART_DIVMANT_SAMPLING8(__PERIPHCLK__, __BAUDRATE__) (__LL_USART_DIV_SAMPLING8_100((__PERIPHCLK__), (__BAUDRATE__))/100) +#define __LL_USART_DIVFRAQ_SAMPLING8(__PERIPHCLK__, __BAUDRATE__) (((__LL_USART_DIV_SAMPLING8_100((__PERIPHCLK__), (__BAUDRATE__)) - (__LL_USART_DIVMANT_SAMPLING8((__PERIPHCLK__), (__BAUDRATE__)) * 100)) * 8 + 50) / 100) +/* UART BRR = mantissa + overflow + fraction + = (UART DIVMANT << 4) + ((UART DIVFRAQ & 0xF8) << 1) + (UART DIVFRAQ & 0x07) */ +#define __LL_USART_DIV_SAMPLING8(__PERIPHCLK__, __BAUDRATE__) (((__LL_USART_DIVMANT_SAMPLING8((__PERIPHCLK__), (__BAUDRATE__)) << 4) + \ + ((__LL_USART_DIVFRAQ_SAMPLING8((__PERIPHCLK__), (__BAUDRATE__)) & 0xF8) << 1)) + \ + (__LL_USART_DIVFRAQ_SAMPLING8((__PERIPHCLK__), (__BAUDRATE__)) & 0x07)) + +/** + * @brief Compute USARTDIV value according to Peripheral Clock and + * expected Baud Rate in 16 bits sampling mode (32 bits value of USARTDIV is returned) + * @param __PERIPHCLK__ Peripheral Clock frequency used for USART instance + * @param __BAUDRATE__ Baud rate value to achieve + * @retval USARTDIV value to be used for BRR register filling in OverSampling_16 case + */ +#define __LL_USART_DIV_SAMPLING16_100(__PERIPHCLK__, __BAUDRATE__) (((__PERIPHCLK__)*25)/(4*(__BAUDRATE__))) +#define __LL_USART_DIVMANT_SAMPLING16(__PERIPHCLK__, __BAUDRATE__) (__LL_USART_DIV_SAMPLING16_100((__PERIPHCLK__), (__BAUDRATE__))/100) +#define __LL_USART_DIVFRAQ_SAMPLING16(__PERIPHCLK__, __BAUDRATE__) (((__LL_USART_DIV_SAMPLING16_100((__PERIPHCLK__), (__BAUDRATE__)) - (__LL_USART_DIVMANT_SAMPLING16((__PERIPHCLK__), (__BAUDRATE__)) * 100)) * 16 + 50) / 100) +/* USART BRR = mantissa + overflow + fraction + = (USART DIVMANT << 4) + (USART DIVFRAQ & 0xF0) + (USART DIVFRAQ & 0x0F) */ +#define __LL_USART_DIV_SAMPLING16(__PERIPHCLK__, __BAUDRATE__) (((__LL_USART_DIVMANT_SAMPLING16((__PERIPHCLK__), (__BAUDRATE__)) << 4) + \ + (__LL_USART_DIVFRAQ_SAMPLING16((__PERIPHCLK__), (__BAUDRATE__)) & 0xF0)) + \ + (__LL_USART_DIVFRAQ_SAMPLING16((__PERIPHCLK__), (__BAUDRATE__)) & 0x0F)) + +/** + * @} + */ + +/** + * @} + */ + +/* Exported functions --------------------------------------------------------*/ + +/** @defgroup USART_LL_Exported_Functions USART Exported Functions + * @{ + */ + +/** @defgroup USART_LL_EF_Configuration Configuration functions + * @{ + */ + +/** + * @brief USART Enable + * @rmtoll CR1 UE LL_USART_Enable + * @param USARTx USART Instance + * @retval None + */ +__STATIC_INLINE void LL_USART_Enable(USART_TypeDef *USARTx) +{ + SET_BIT(USARTx->CR1, USART_CR1_UE); +} + +/** + * @brief USART Disable (all USART prescalers and outputs are disabled) + * @note When USART is disabled, USART prescalers and outputs are stopped immediately, + * and current operations are discarded. The configuration of the USART is kept, but all the status + * flags, in the USARTx_SR are set to their default values. + * @rmtoll CR1 UE LL_USART_Disable + * @param USARTx USART Instance + * @retval None + */ +__STATIC_INLINE void LL_USART_Disable(USART_TypeDef *USARTx) +{ + CLEAR_BIT(USARTx->CR1, USART_CR1_UE); +} + +/** + * @brief Indicate if USART is enabled + * @rmtoll CR1 UE LL_USART_IsEnabled + * @param USARTx USART Instance + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_USART_IsEnabled(USART_TypeDef *USARTx) +{ + return (READ_BIT(USARTx->CR1, USART_CR1_UE) == (USART_CR1_UE)); +} + +/** + * @brief Receiver Enable (Receiver is enabled and begins searching for a start bit) + * @rmtoll CR1 RE LL_USART_EnableDirectionRx + * @param USARTx USART Instance + * @retval None + */ +__STATIC_INLINE void LL_USART_EnableDirectionRx(USART_TypeDef *USARTx) +{ + SET_BIT(USARTx->CR1, USART_CR1_RE); +} + +/** + * @brief Receiver Disable + * @rmtoll CR1 RE LL_USART_DisableDirectionRx + * @param USARTx USART Instance + * @retval None + */ +__STATIC_INLINE void LL_USART_DisableDirectionRx(USART_TypeDef *USARTx) +{ + CLEAR_BIT(USARTx->CR1, USART_CR1_RE); +} + +/** + * @brief Transmitter Enable + * @rmtoll CR1 TE LL_USART_EnableDirectionTx + * @param USARTx USART Instance + * @retval None + */ +__STATIC_INLINE void LL_USART_EnableDirectionTx(USART_TypeDef *USARTx) +{ + SET_BIT(USARTx->CR1, USART_CR1_TE); +} + +/** + * @brief Transmitter Disable + * @rmtoll CR1 TE LL_USART_DisableDirectionTx + * @param USARTx USART Instance + * @retval None + */ +__STATIC_INLINE void LL_USART_DisableDirectionTx(USART_TypeDef *USARTx) +{ + CLEAR_BIT(USARTx->CR1, USART_CR1_TE); +} + +/** + * @brief Configure simultaneously enabled/disabled states + * of Transmitter and Receiver + * @rmtoll CR1 RE LL_USART_SetTransferDirection\n + * CR1 TE LL_USART_SetTransferDirection + * @param USARTx USART Instance + * @param TransferDirection This parameter can be one of the following values: + * @arg @ref LL_USART_DIRECTION_NONE + * @arg @ref LL_USART_DIRECTION_RX + * @arg @ref LL_USART_DIRECTION_TX + * @arg @ref LL_USART_DIRECTION_TX_RX + * @retval None + */ +__STATIC_INLINE void LL_USART_SetTransferDirection(USART_TypeDef *USARTx, uint32_t TransferDirection) +{ + MODIFY_REG(USARTx->CR1, USART_CR1_RE | USART_CR1_TE, TransferDirection); +} + +/** + * @brief Return enabled/disabled states of Transmitter and Receiver + * @rmtoll CR1 RE LL_USART_GetTransferDirection\n + * CR1 TE LL_USART_GetTransferDirection + * @param USARTx USART Instance + * @retval Returned value can be one of the following values: + * @arg @ref LL_USART_DIRECTION_NONE + * @arg @ref LL_USART_DIRECTION_RX + * @arg @ref LL_USART_DIRECTION_TX + * @arg @ref LL_USART_DIRECTION_TX_RX + */ +__STATIC_INLINE uint32_t LL_USART_GetTransferDirection(USART_TypeDef *USARTx) +{ + return (uint32_t)(READ_BIT(USARTx->CR1, USART_CR1_RE | USART_CR1_TE)); +} + +/** + * @brief Configure Parity (enabled/disabled and parity mode if enabled). + * @note This function selects if hardware parity control (generation and detection) is enabled or disabled. + * When the parity control is enabled (Odd or Even), computed parity bit is inserted at the MSB position + * (9th or 8th bit depending on data width) and parity is checked on the received data. + * @rmtoll CR1 PS LL_USART_SetParity\n + * CR1 PCE LL_USART_SetParity + * @param USARTx USART Instance + * @param Parity This parameter can be one of the following values: + * @arg @ref LL_USART_PARITY_NONE + * @arg @ref LL_USART_PARITY_EVEN + * @arg @ref LL_USART_PARITY_ODD + * @retval None + */ +__STATIC_INLINE void LL_USART_SetParity(USART_TypeDef *USARTx, uint32_t Parity) +{ + MODIFY_REG(USARTx->CR1, USART_CR1_PS | USART_CR1_PCE, Parity); +} + +/** + * @brief Return Parity configuration (enabled/disabled and parity mode if enabled) + * @rmtoll CR1 PS LL_USART_GetParity\n + * CR1 PCE LL_USART_GetParity + * @param USARTx USART Instance + * @retval Returned value can be one of the following values: + * @arg @ref LL_USART_PARITY_NONE + * @arg @ref LL_USART_PARITY_EVEN + * @arg @ref LL_USART_PARITY_ODD + */ +__STATIC_INLINE uint32_t LL_USART_GetParity(USART_TypeDef *USARTx) +{ + return (uint32_t)(READ_BIT(USARTx->CR1, USART_CR1_PS | USART_CR1_PCE)); +} + +/** + * @brief Set Receiver Wake Up method from Mute mode. + * @rmtoll CR1 WAKE LL_USART_SetWakeUpMethod + * @param USARTx USART Instance + * @param Method This parameter can be one of the following values: + * @arg @ref LL_USART_WAKEUP_IDLELINE + * @arg @ref LL_USART_WAKEUP_ADDRESSMARK + * @retval None + */ +__STATIC_INLINE void LL_USART_SetWakeUpMethod(USART_TypeDef *USARTx, uint32_t Method) +{ + MODIFY_REG(USARTx->CR1, USART_CR1_WAKE, Method); +} + +/** + * @brief Return Receiver Wake Up method from Mute mode + * @rmtoll CR1 WAKE LL_USART_GetWakeUpMethod + * @param USARTx USART Instance + * @retval Returned value can be one of the following values: + * @arg @ref LL_USART_WAKEUP_IDLELINE + * @arg @ref LL_USART_WAKEUP_ADDRESSMARK + */ +__STATIC_INLINE uint32_t LL_USART_GetWakeUpMethod(USART_TypeDef *USARTx) +{ + return (uint32_t)(READ_BIT(USARTx->CR1, USART_CR1_WAKE)); +} + +/** + * @brief Set Word length (i.e. nb of data bits, excluding start and stop bits) + * @rmtoll CR1 M LL_USART_SetDataWidth + * @param USARTx USART Instance + * @param DataWidth This parameter can be one of the following values: + * @arg @ref LL_USART_DATAWIDTH_8B + * @arg @ref LL_USART_DATAWIDTH_9B + * @retval None + */ +__STATIC_INLINE void LL_USART_SetDataWidth(USART_TypeDef *USARTx, uint32_t DataWidth) +{ + MODIFY_REG(USARTx->CR1, USART_CR1_M, DataWidth); +} + +/** + * @brief Return Word length (i.e. nb of data bits, excluding start and stop bits) + * @rmtoll CR1 M LL_USART_GetDataWidth + * @param USARTx USART Instance + * @retval Returned value can be one of the following values: + * @arg @ref LL_USART_DATAWIDTH_8B + * @arg @ref LL_USART_DATAWIDTH_9B + */ +__STATIC_INLINE uint32_t LL_USART_GetDataWidth(USART_TypeDef *USARTx) +{ + return (uint32_t)(READ_BIT(USARTx->CR1, USART_CR1_M)); +} + +#if defined(USART_CR1_OVER8) +/** + * @brief Set Oversampling to 8-bit or 16-bit mode + * @rmtoll CR1 OVER8 LL_USART_SetOverSampling + * @param USARTx USART Instance + * @param OverSampling This parameter can be one of the following values: + * @arg @ref LL_USART_OVERSAMPLING_16 + * @arg @ref LL_USART_OVERSAMPLING_8 + * @retval None + */ +__STATIC_INLINE void LL_USART_SetOverSampling(USART_TypeDef *USARTx, uint32_t OverSampling) +{ + MODIFY_REG(USARTx->CR1, USART_CR1_OVER8, OverSampling); +} + +/** + * @brief Return Oversampling mode + * @rmtoll CR1 OVER8 LL_USART_GetOverSampling + * @param USARTx USART Instance + * @retval Returned value can be one of the following values: + * @arg @ref LL_USART_OVERSAMPLING_16 + * @arg @ref LL_USART_OVERSAMPLING_8 + */ +__STATIC_INLINE uint32_t LL_USART_GetOverSampling(USART_TypeDef *USARTx) +{ + return (uint32_t)(READ_BIT(USARTx->CR1, USART_CR1_OVER8)); +} + +#endif /* USART_OverSampling_Feature */ +/** + * @brief Configure if Clock pulse of the last data bit is output to the SCLK pin or not + * @note Macro @ref IS_USART_INSTANCE(USARTx) can be used to check whether or not + * Synchronous mode is supported by the USARTx instance. + * @rmtoll CR2 LBCL LL_USART_SetLastClkPulseOutput + * @param USARTx USART Instance + * @param LastBitClockPulse This parameter can be one of the following values: + * @arg @ref LL_USART_LASTCLKPULSE_NO_OUTPUT + * @arg @ref LL_USART_LASTCLKPULSE_OUTPUT + * @retval None + */ +__STATIC_INLINE void LL_USART_SetLastClkPulseOutput(USART_TypeDef *USARTx, uint32_t LastBitClockPulse) +{ + MODIFY_REG(USARTx->CR2, USART_CR2_LBCL, LastBitClockPulse); +} + +/** + * @brief Retrieve Clock pulse of the last data bit output configuration + * (Last bit Clock pulse output to the SCLK pin or not) + * @note Macro @ref IS_USART_INSTANCE(USARTx) can be used to check whether or not + * Synchronous mode is supported by the USARTx instance. + * @rmtoll CR2 LBCL LL_USART_GetLastClkPulseOutput + * @param USARTx USART Instance + * @retval Returned value can be one of the following values: + * @arg @ref LL_USART_LASTCLKPULSE_NO_OUTPUT + * @arg @ref LL_USART_LASTCLKPULSE_OUTPUT + */ +__STATIC_INLINE uint32_t LL_USART_GetLastClkPulseOutput(USART_TypeDef *USARTx) +{ + return (uint32_t)(READ_BIT(USARTx->CR2, USART_CR2_LBCL)); +} + +/** + * @brief Select the phase of the clock output on the SCLK pin in synchronous mode + * @note Macro @ref IS_USART_INSTANCE(USARTx) can be used to check whether or not + * Synchronous mode is supported by the USARTx instance. + * @rmtoll CR2 CPHA LL_USART_SetClockPhase + * @param USARTx USART Instance + * @param ClockPhase This parameter can be one of the following values: + * @arg @ref LL_USART_PHASE_1EDGE + * @arg @ref LL_USART_PHASE_2EDGE + * @retval None + */ +__STATIC_INLINE void LL_USART_SetClockPhase(USART_TypeDef *USARTx, uint32_t ClockPhase) +{ + MODIFY_REG(USARTx->CR2, USART_CR2_CPHA, ClockPhase); +} + +/** + * @brief Return phase of the clock output on the SCLK pin in synchronous mode + * @note Macro @ref IS_USART_INSTANCE(USARTx) can be used to check whether or not + * Synchronous mode is supported by the USARTx instance. + * @rmtoll CR2 CPHA LL_USART_GetClockPhase + * @param USARTx USART Instance + * @retval Returned value can be one of the following values: + * @arg @ref LL_USART_PHASE_1EDGE + * @arg @ref LL_USART_PHASE_2EDGE + */ +__STATIC_INLINE uint32_t LL_USART_GetClockPhase(USART_TypeDef *USARTx) +{ + return (uint32_t)(READ_BIT(USARTx->CR2, USART_CR2_CPHA)); +} + +/** + * @brief Select the polarity of the clock output on the SCLK pin in synchronous mode + * @note Macro @ref IS_USART_INSTANCE(USARTx) can be used to check whether or not + * Synchronous mode is supported by the USARTx instance. + * @rmtoll CR2 CPOL LL_USART_SetClockPolarity + * @param USARTx USART Instance + * @param ClockPolarity This parameter can be one of the following values: + * @arg @ref LL_USART_POLARITY_LOW + * @arg @ref LL_USART_POLARITY_HIGH + * @retval None + */ +__STATIC_INLINE void LL_USART_SetClockPolarity(USART_TypeDef *USARTx, uint32_t ClockPolarity) +{ + MODIFY_REG(USARTx->CR2, USART_CR2_CPOL, ClockPolarity); +} + +/** + * @brief Return polarity of the clock output on the SCLK pin in synchronous mode + * @note Macro @ref IS_USART_INSTANCE(USARTx) can be used to check whether or not + * Synchronous mode is supported by the USARTx instance. + * @rmtoll CR2 CPOL LL_USART_GetClockPolarity + * @param USARTx USART Instance + * @retval Returned value can be one of the following values: + * @arg @ref LL_USART_POLARITY_LOW + * @arg @ref LL_USART_POLARITY_HIGH + */ +__STATIC_INLINE uint32_t LL_USART_GetClockPolarity(USART_TypeDef *USARTx) +{ + return (uint32_t)(READ_BIT(USARTx->CR2, USART_CR2_CPOL)); +} + +/** + * @brief Configure Clock signal format (Phase Polarity and choice about output of last bit clock pulse) + * @note Macro @ref IS_USART_INSTANCE(USARTx) can be used to check whether or not + * Synchronous mode is supported by the USARTx instance. + * @note Call of this function is equivalent to following function call sequence : + * - Clock Phase configuration using @ref LL_USART_SetClockPhase() function + * - Clock Polarity configuration using @ref LL_USART_SetClockPolarity() function + * - Output of Last bit Clock pulse configuration using @ref LL_USART_SetLastClkPulseOutput() function + * @rmtoll CR2 CPHA LL_USART_ConfigClock\n + * CR2 CPOL LL_USART_ConfigClock\n + * CR2 LBCL LL_USART_ConfigClock + * @param USARTx USART Instance + * @param Phase This parameter can be one of the following values: + * @arg @ref LL_USART_PHASE_1EDGE + * @arg @ref LL_USART_PHASE_2EDGE + * @param Polarity This parameter can be one of the following values: + * @arg @ref LL_USART_POLARITY_LOW + * @arg @ref LL_USART_POLARITY_HIGH + * @param LBCPOutput This parameter can be one of the following values: + * @arg @ref LL_USART_LASTCLKPULSE_NO_OUTPUT + * @arg @ref LL_USART_LASTCLKPULSE_OUTPUT + * @retval None + */ +__STATIC_INLINE void LL_USART_ConfigClock(USART_TypeDef *USARTx, uint32_t Phase, uint32_t Polarity, uint32_t LBCPOutput) +{ + MODIFY_REG(USARTx->CR2, USART_CR2_CPHA | USART_CR2_CPOL | USART_CR2_LBCL, Phase | Polarity | LBCPOutput); +} + +/** + * @brief Enable Clock output on SCLK pin + * @note Macro @ref IS_USART_INSTANCE(USARTx) can be used to check whether or not + * Synchronous mode is supported by the USARTx instance. + * @rmtoll CR2 CLKEN LL_USART_EnableSCLKOutput + * @param USARTx USART Instance + * @retval None + */ +__STATIC_INLINE void LL_USART_EnableSCLKOutput(USART_TypeDef *USARTx) +{ + SET_BIT(USARTx->CR2, USART_CR2_CLKEN); +} + +/** + * @brief Disable Clock output on SCLK pin + * @note Macro @ref IS_USART_INSTANCE(USARTx) can be used to check whether or not + * Synchronous mode is supported by the USARTx instance. + * @rmtoll CR2 CLKEN LL_USART_DisableSCLKOutput + * @param USARTx USART Instance + * @retval None + */ +__STATIC_INLINE void LL_USART_DisableSCLKOutput(USART_TypeDef *USARTx) +{ + CLEAR_BIT(USARTx->CR2, USART_CR2_CLKEN); +} + +/** + * @brief Indicate if Clock output on SCLK pin is enabled + * @note Macro @ref IS_USART_INSTANCE(USARTx) can be used to check whether or not + * Synchronous mode is supported by the USARTx instance. + * @rmtoll CR2 CLKEN LL_USART_IsEnabledSCLKOutput + * @param USARTx USART Instance + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_USART_IsEnabledSCLKOutput(USART_TypeDef *USARTx) +{ + return (READ_BIT(USARTx->CR2, USART_CR2_CLKEN) == (USART_CR2_CLKEN)); +} + +/** + * @brief Set the length of the stop bits + * @rmtoll CR2 STOP LL_USART_SetStopBitsLength + * @param USARTx USART Instance + * @param StopBits This parameter can be one of the following values: + * @arg @ref LL_USART_STOPBITS_0_5 + * @arg @ref LL_USART_STOPBITS_1 + * @arg @ref LL_USART_STOPBITS_1_5 + * @arg @ref LL_USART_STOPBITS_2 + * @retval None + */ +__STATIC_INLINE void LL_USART_SetStopBitsLength(USART_TypeDef *USARTx, uint32_t StopBits) +{ + MODIFY_REG(USARTx->CR2, USART_CR2_STOP, StopBits); +} + +/** + * @brief Retrieve the length of the stop bits + * @rmtoll CR2 STOP LL_USART_GetStopBitsLength + * @param USARTx USART Instance + * @retval Returned value can be one of the following values: + * @arg @ref LL_USART_STOPBITS_0_5 + * @arg @ref LL_USART_STOPBITS_1 + * @arg @ref LL_USART_STOPBITS_1_5 + * @arg @ref LL_USART_STOPBITS_2 + */ +__STATIC_INLINE uint32_t LL_USART_GetStopBitsLength(USART_TypeDef *USARTx) +{ + return (uint32_t)(READ_BIT(USARTx->CR2, USART_CR2_STOP)); +} + +/** + * @brief Configure Character frame format (Datawidth, Parity control, Stop Bits) + * @note Call of this function is equivalent to following function call sequence : + * - Data Width configuration using @ref LL_USART_SetDataWidth() function + * - Parity Control and mode configuration using @ref LL_USART_SetParity() function + * - Stop bits configuration using @ref LL_USART_SetStopBitsLength() function + * @rmtoll CR1 PS LL_USART_ConfigCharacter\n + * CR1 PCE LL_USART_ConfigCharacter\n + * CR1 M LL_USART_ConfigCharacter\n + * CR2 STOP LL_USART_ConfigCharacter + * @param USARTx USART Instance + * @param DataWidth This parameter can be one of the following values: + * @arg @ref LL_USART_DATAWIDTH_8B + * @arg @ref LL_USART_DATAWIDTH_9B + * @param Parity This parameter can be one of the following values: + * @arg @ref LL_USART_PARITY_NONE + * @arg @ref LL_USART_PARITY_EVEN + * @arg @ref LL_USART_PARITY_ODD + * @param StopBits This parameter can be one of the following values: + * @arg @ref LL_USART_STOPBITS_0_5 + * @arg @ref LL_USART_STOPBITS_1 + * @arg @ref LL_USART_STOPBITS_1_5 + * @arg @ref LL_USART_STOPBITS_2 + * @retval None + */ +__STATIC_INLINE void LL_USART_ConfigCharacter(USART_TypeDef *USARTx, uint32_t DataWidth, uint32_t Parity, + uint32_t StopBits) +{ + MODIFY_REG(USARTx->CR1, USART_CR1_PS | USART_CR1_PCE | USART_CR1_M, Parity | DataWidth); + MODIFY_REG(USARTx->CR2, USART_CR2_STOP, StopBits); +} + +/** + * @brief Set Address of the USART node. + * @note This is used in multiprocessor communication during Mute mode or Stop mode, + * for wake up with address mark detection. + * @rmtoll CR2 ADD LL_USART_SetNodeAddress + * @param USARTx USART Instance + * @param NodeAddress 4 bit Address of the USART node. + * @retval None + */ +__STATIC_INLINE void LL_USART_SetNodeAddress(USART_TypeDef *USARTx, uint32_t NodeAddress) +{ + MODIFY_REG(USARTx->CR2, USART_CR2_ADD, (NodeAddress & USART_CR2_ADD)); +} + +/** + * @brief Return 4 bit Address of the USART node as set in ADD field of CR2. + * @note only 4bits (b3-b0) of returned value are relevant (b31-b4 are not relevant) + * @rmtoll CR2 ADD LL_USART_GetNodeAddress + * @param USARTx USART Instance + * @retval Address of the USART node (Value between Min_Data=0 and Max_Data=255) + */ +__STATIC_INLINE uint32_t LL_USART_GetNodeAddress(USART_TypeDef *USARTx) +{ + return (uint32_t)(READ_BIT(USARTx->CR2, USART_CR2_ADD)); +} + +/** + * @brief Enable RTS HW Flow Control + * @note Macro @ref IS_UART_HWFLOW_INSTANCE(USARTx) can be used to check whether or not + * Hardware Flow control feature is supported by the USARTx instance. + * @rmtoll CR3 RTSE LL_USART_EnableRTSHWFlowCtrl + * @param USARTx USART Instance + * @retval None + */ +__STATIC_INLINE void LL_USART_EnableRTSHWFlowCtrl(USART_TypeDef *USARTx) +{ + SET_BIT(USARTx->CR3, USART_CR3_RTSE); +} + +/** + * @brief Disable RTS HW Flow Control + * @note Macro @ref IS_UART_HWFLOW_INSTANCE(USARTx) can be used to check whether or not + * Hardware Flow control feature is supported by the USARTx instance. + * @rmtoll CR3 RTSE LL_USART_DisableRTSHWFlowCtrl + * @param USARTx USART Instance + * @retval None + */ +__STATIC_INLINE void LL_USART_DisableRTSHWFlowCtrl(USART_TypeDef *USARTx) +{ + CLEAR_BIT(USARTx->CR3, USART_CR3_RTSE); +} + +/** + * @brief Enable CTS HW Flow Control + * @note Macro @ref IS_UART_HWFLOW_INSTANCE(USARTx) can be used to check whether or not + * Hardware Flow control feature is supported by the USARTx instance. + * @rmtoll CR3 CTSE LL_USART_EnableCTSHWFlowCtrl + * @param USARTx USART Instance + * @retval None + */ +__STATIC_INLINE void LL_USART_EnableCTSHWFlowCtrl(USART_TypeDef *USARTx) +{ + SET_BIT(USARTx->CR3, USART_CR3_CTSE); +} + +/** + * @brief Disable CTS HW Flow Control + * @note Macro @ref IS_UART_HWFLOW_INSTANCE(USARTx) can be used to check whether or not + * Hardware Flow control feature is supported by the USARTx instance. + * @rmtoll CR3 CTSE LL_USART_DisableCTSHWFlowCtrl + * @param USARTx USART Instance + * @retval None + */ +__STATIC_INLINE void LL_USART_DisableCTSHWFlowCtrl(USART_TypeDef *USARTx) +{ + CLEAR_BIT(USARTx->CR3, USART_CR3_CTSE); +} + +/** + * @brief Configure HW Flow Control mode (both CTS and RTS) + * @note Macro @ref IS_UART_HWFLOW_INSTANCE(USARTx) can be used to check whether or not + * Hardware Flow control feature is supported by the USARTx instance. + * @rmtoll CR3 RTSE LL_USART_SetHWFlowCtrl\n + * CR3 CTSE LL_USART_SetHWFlowCtrl + * @param USARTx USART Instance + * @param HardwareFlowControl This parameter can be one of the following values: + * @arg @ref LL_USART_HWCONTROL_NONE + * @arg @ref LL_USART_HWCONTROL_RTS + * @arg @ref LL_USART_HWCONTROL_CTS + * @arg @ref LL_USART_HWCONTROL_RTS_CTS + * @retval None + */ +__STATIC_INLINE void LL_USART_SetHWFlowCtrl(USART_TypeDef *USARTx, uint32_t HardwareFlowControl) +{ + MODIFY_REG(USARTx->CR3, USART_CR3_RTSE | USART_CR3_CTSE, HardwareFlowControl); +} + +/** + * @brief Return HW Flow Control configuration (both CTS and RTS) + * @note Macro @ref IS_UART_HWFLOW_INSTANCE(USARTx) can be used to check whether or not + * Hardware Flow control feature is supported by the USARTx instance. + * @rmtoll CR3 RTSE LL_USART_GetHWFlowCtrl\n + * CR3 CTSE LL_USART_GetHWFlowCtrl + * @param USARTx USART Instance + * @retval Returned value can be one of the following values: + * @arg @ref LL_USART_HWCONTROL_NONE + * @arg @ref LL_USART_HWCONTROL_RTS + * @arg @ref LL_USART_HWCONTROL_CTS + * @arg @ref LL_USART_HWCONTROL_RTS_CTS + */ +__STATIC_INLINE uint32_t LL_USART_GetHWFlowCtrl(USART_TypeDef *USARTx) +{ + return (uint32_t)(READ_BIT(USARTx->CR3, USART_CR3_RTSE | USART_CR3_CTSE)); +} + +#if defined(USART_CR3_ONEBIT) +/** + * @brief Enable One bit sampling method + * @rmtoll CR3 ONEBIT LL_USART_EnableOneBitSamp + * @param USARTx USART Instance + * @retval None + */ +__STATIC_INLINE void LL_USART_EnableOneBitSamp(USART_TypeDef *USARTx) +{ + SET_BIT(USARTx->CR3, USART_CR3_ONEBIT); +} + +/** + * @brief Disable One bit sampling method + * @rmtoll CR3 ONEBIT LL_USART_DisableOneBitSamp + * @param USARTx USART Instance + * @retval None + */ +__STATIC_INLINE void LL_USART_DisableOneBitSamp(USART_TypeDef *USARTx) +{ + CLEAR_BIT(USARTx->CR3, USART_CR3_ONEBIT); +} + +/** + * @brief Indicate if One bit sampling method is enabled + * @rmtoll CR3 ONEBIT LL_USART_IsEnabledOneBitSamp + * @param USARTx USART Instance + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_USART_IsEnabledOneBitSamp(USART_TypeDef *USARTx) +{ + return (READ_BIT(USARTx->CR3, USART_CR3_ONEBIT) == (USART_CR3_ONEBIT)); +} +#endif /* USART_OneBitSampling_Feature */ + +#if defined(USART_CR1_OVER8) +/** + * @brief Configure USART BRR register for achieving expected Baud Rate value. + * @note Compute and set USARTDIV value in BRR Register (full BRR content) + * according to used Peripheral Clock, Oversampling mode, and expected Baud Rate values + * @note Peripheral clock and Baud rate values provided as function parameters should be valid + * (Baud rate value != 0) + * @rmtoll BRR BRR LL_USART_SetBaudRate + * @param USARTx USART Instance + * @param PeriphClk Peripheral Clock + * @param OverSampling This parameter can be one of the following values: + * @arg @ref LL_USART_OVERSAMPLING_16 + * @arg @ref LL_USART_OVERSAMPLING_8 + * @param BaudRate Baud Rate + * @retval None + */ +__STATIC_INLINE void LL_USART_SetBaudRate(USART_TypeDef *USARTx, uint32_t PeriphClk, uint32_t OverSampling, + uint32_t BaudRate) +{ + if (OverSampling == LL_USART_OVERSAMPLING_8) + { + USARTx->BRR = (uint16_t)(__LL_USART_DIV_SAMPLING8(PeriphClk, BaudRate)); + } + else + { + USARTx->BRR = (uint16_t)(__LL_USART_DIV_SAMPLING16(PeriphClk, BaudRate)); + } +} + +/** + * @brief Return current Baud Rate value, according to USARTDIV present in BRR register + * (full BRR content), and to used Peripheral Clock and Oversampling mode values + * @note In case of non-initialized or invalid value stored in BRR register, value 0 will be returned. + * @rmtoll BRR BRR LL_USART_GetBaudRate + * @param USARTx USART Instance + * @param PeriphClk Peripheral Clock + * @param OverSampling This parameter can be one of the following values: + * @arg @ref LL_USART_OVERSAMPLING_16 + * @arg @ref LL_USART_OVERSAMPLING_8 + * @retval Baud Rate + */ +__STATIC_INLINE uint32_t LL_USART_GetBaudRate(USART_TypeDef *USARTx, uint32_t PeriphClk, uint32_t OverSampling) +{ + register uint32_t usartdiv = 0x0U; + register uint32_t brrresult = 0x0U; + + usartdiv = USARTx->BRR; + + if (OverSampling == LL_USART_OVERSAMPLING_8) + { + if ((usartdiv & 0xFFF7U) != 0U) + { + usartdiv = (uint16_t)((usartdiv & 0xFFF0U) | ((usartdiv & 0x0007U) << 1U)) ; + brrresult = (PeriphClk * 2U) / usartdiv; + } + } + else + { + if ((usartdiv & 0xFFFFU) != 0U) + { + brrresult = PeriphClk / usartdiv; + } + } + return (brrresult); +} +#else +/** + * @brief Configure USART BRR register for achieving expected Baud Rate value. + * @note Compute and set USARTDIV value in BRR Register (full BRR content) + * according to used Peripheral Clock, Oversampling mode, and expected Baud Rate values + * @note Peripheral clock and Baud rate values provided as function parameters should be valid + * (Baud rate value != 0) + * @rmtoll BRR BRR LL_USART_SetBaudRate + * @param USARTx USART Instance + * @param PeriphClk Peripheral Clock + * @param BaudRate Baud Rate + * @retval None + */ +__STATIC_INLINE void LL_USART_SetBaudRate(USART_TypeDef *USARTx, uint32_t PeriphClk, uint32_t BaudRate) +{ + USARTx->BRR = (uint16_t)(__LL_USART_DIV_SAMPLING16(PeriphClk, BaudRate)); +} + +/** + * @brief Return current Baud Rate value, according to USARTDIV present in BRR register + * (full BRR content), and to used Peripheral Clock and Oversampling mode values + * @note In case of non-initialized or invalid value stored in BRR register, value 0 will be returned. + * @rmtoll BRR BRR LL_USART_GetBaudRate + * @param USARTx USART Instance + * @param PeriphClk Peripheral Clock + * @retval Baud Rate + */ +__STATIC_INLINE uint32_t LL_USART_GetBaudRate(USART_TypeDef *USARTx, uint32_t PeriphClk) +{ + register uint32_t usartdiv = 0x0U; + register uint32_t brrresult = 0x0U; + + usartdiv = USARTx->BRR; + + if ((usartdiv & 0xFFFFU) != 0U) + { + brrresult = PeriphClk / usartdiv; + } + return (brrresult); +} +#endif /* USART_OverSampling_Feature */ + +/** + * @} + */ + +/** @defgroup USART_LL_EF_Configuration_IRDA Configuration functions related to Irda feature + * @{ + */ + +/** + * @brief Enable IrDA mode + * @note Macro @ref IS_IRDA_INSTANCE(USARTx) can be used to check whether or not + * IrDA feature is supported by the USARTx instance. + * @rmtoll CR3 IREN LL_USART_EnableIrda + * @param USARTx USART Instance + * @retval None + */ +__STATIC_INLINE void LL_USART_EnableIrda(USART_TypeDef *USARTx) +{ + SET_BIT(USARTx->CR3, USART_CR3_IREN); +} + +/** + * @brief Disable IrDA mode + * @note Macro @ref IS_IRDA_INSTANCE(USARTx) can be used to check whether or not + * IrDA feature is supported by the USARTx instance. + * @rmtoll CR3 IREN LL_USART_DisableIrda + * @param USARTx USART Instance + * @retval None + */ +__STATIC_INLINE void LL_USART_DisableIrda(USART_TypeDef *USARTx) +{ + CLEAR_BIT(USARTx->CR3, USART_CR3_IREN); +} + +/** + * @brief Indicate if IrDA mode is enabled + * @note Macro @ref IS_IRDA_INSTANCE(USARTx) can be used to check whether or not + * IrDA feature is supported by the USARTx instance. + * @rmtoll CR3 IREN LL_USART_IsEnabledIrda + * @param USARTx USART Instance + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_USART_IsEnabledIrda(USART_TypeDef *USARTx) +{ + return (READ_BIT(USARTx->CR3, USART_CR3_IREN) == (USART_CR3_IREN)); +} + +/** + * @brief Configure IrDA Power Mode (Normal or Low Power) + * @note Macro @ref IS_IRDA_INSTANCE(USARTx) can be used to check whether or not + * IrDA feature is supported by the USARTx instance. + * @rmtoll CR3 IRLP LL_USART_SetIrdaPowerMode + * @param USARTx USART Instance + * @param PowerMode This parameter can be one of the following values: + * @arg @ref LL_USART_IRDA_POWER_NORMAL + * @arg @ref LL_USART_IRDA_POWER_LOW + * @retval None + */ +__STATIC_INLINE void LL_USART_SetIrdaPowerMode(USART_TypeDef *USARTx, uint32_t PowerMode) +{ + MODIFY_REG(USARTx->CR3, USART_CR3_IRLP, PowerMode); +} + +/** + * @brief Retrieve IrDA Power Mode configuration (Normal or Low Power) + * @note Macro @ref IS_IRDA_INSTANCE(USARTx) can be used to check whether or not + * IrDA feature is supported by the USARTx instance. + * @rmtoll CR3 IRLP LL_USART_GetIrdaPowerMode + * @param USARTx USART Instance + * @retval Returned value can be one of the following values: + * @arg @ref LL_USART_IRDA_POWER_NORMAL + * @arg @ref LL_USART_PHASE_2EDGE + */ +__STATIC_INLINE uint32_t LL_USART_GetIrdaPowerMode(USART_TypeDef *USARTx) +{ + return (uint32_t)(READ_BIT(USARTx->CR3, USART_CR3_IRLP)); +} + +/** + * @brief Set Irda prescaler value, used for dividing the USART clock source + * to achieve the Irda Low Power frequency (8 bits value) + * @note Macro @ref IS_IRDA_INSTANCE(USARTx) can be used to check whether or not + * IrDA feature is supported by the USARTx instance. + * @rmtoll GTPR PSC LL_USART_SetIrdaPrescaler + * @param USARTx USART Instance + * @param PrescalerValue Value between Min_Data=0x00 and Max_Data=0xFF + * @retval None + */ +__STATIC_INLINE void LL_USART_SetIrdaPrescaler(USART_TypeDef *USARTx, uint32_t PrescalerValue) +{ + MODIFY_REG(USARTx->GTPR, USART_GTPR_PSC, PrescalerValue); +} + +/** + * @brief Return Irda prescaler value, used for dividing the USART clock source + * to achieve the Irda Low Power frequency (8 bits value) + * @note Macro @ref IS_IRDA_INSTANCE(USARTx) can be used to check whether or not + * IrDA feature is supported by the USARTx instance. + * @rmtoll GTPR PSC LL_USART_GetIrdaPrescaler + * @param USARTx USART Instance + * @retval Irda prescaler value (Value between Min_Data=0x00 and Max_Data=0xFF) + */ +__STATIC_INLINE uint32_t LL_USART_GetIrdaPrescaler(USART_TypeDef *USARTx) +{ + return (uint32_t)(READ_BIT(USARTx->GTPR, USART_GTPR_PSC)); +} + +/** + * @} + */ + +/** @defgroup USART_LL_EF_Configuration_Smartcard Configuration functions related to Smartcard feature + * @{ + */ + +/** + * @brief Enable Smartcard NACK transmission + * @note Macro @ref IS_SMARTCARD_INSTANCE(USARTx) can be used to check whether or not + * Smartcard feature is supported by the USARTx instance. + * @rmtoll CR3 NACK LL_USART_EnableSmartcardNACK + * @param USARTx USART Instance + * @retval None + */ +__STATIC_INLINE void LL_USART_EnableSmartcardNACK(USART_TypeDef *USARTx) +{ + SET_BIT(USARTx->CR3, USART_CR3_NACK); +} + +/** + * @brief Disable Smartcard NACK transmission + * @note Macro @ref IS_SMARTCARD_INSTANCE(USARTx) can be used to check whether or not + * Smartcard feature is supported by the USARTx instance. + * @rmtoll CR3 NACK LL_USART_DisableSmartcardNACK + * @param USARTx USART Instance + * @retval None + */ +__STATIC_INLINE void LL_USART_DisableSmartcardNACK(USART_TypeDef *USARTx) +{ + CLEAR_BIT(USARTx->CR3, USART_CR3_NACK); +} + +/** + * @brief Indicate if Smartcard NACK transmission is enabled + * @note Macro @ref IS_SMARTCARD_INSTANCE(USARTx) can be used to check whether or not + * Smartcard feature is supported by the USARTx instance. + * @rmtoll CR3 NACK LL_USART_IsEnabledSmartcardNACK + * @param USARTx USART Instance + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_USART_IsEnabledSmartcardNACK(USART_TypeDef *USARTx) +{ + return (READ_BIT(USARTx->CR3, USART_CR3_NACK) == (USART_CR3_NACK)); +} + +/** + * @brief Enable Smartcard mode + * @note Macro @ref IS_SMARTCARD_INSTANCE(USARTx) can be used to check whether or not + * Smartcard feature is supported by the USARTx instance. + * @rmtoll CR3 SCEN LL_USART_EnableSmartcard + * @param USARTx USART Instance + * @retval None + */ +__STATIC_INLINE void LL_USART_EnableSmartcard(USART_TypeDef *USARTx) +{ + SET_BIT(USARTx->CR3, USART_CR3_SCEN); +} + +/** + * @brief Disable Smartcard mode + * @note Macro @ref IS_SMARTCARD_INSTANCE(USARTx) can be used to check whether or not + * Smartcard feature is supported by the USARTx instance. + * @rmtoll CR3 SCEN LL_USART_DisableSmartcard + * @param USARTx USART Instance + * @retval None + */ +__STATIC_INLINE void LL_USART_DisableSmartcard(USART_TypeDef *USARTx) +{ + CLEAR_BIT(USARTx->CR3, USART_CR3_SCEN); +} + +/** + * @brief Indicate if Smartcard mode is enabled + * @note Macro @ref IS_SMARTCARD_INSTANCE(USARTx) can be used to check whether or not + * Smartcard feature is supported by the USARTx instance. + * @rmtoll CR3 SCEN LL_USART_IsEnabledSmartcard + * @param USARTx USART Instance + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_USART_IsEnabledSmartcard(USART_TypeDef *USARTx) +{ + return (READ_BIT(USARTx->CR3, USART_CR3_SCEN) == (USART_CR3_SCEN)); +} + +/** + * @brief Set Smartcard prescaler value, used for dividing the USART clock + * source to provide the SMARTCARD Clock (5 bits value) + * @note Macro @ref IS_SMARTCARD_INSTANCE(USARTx) can be used to check whether or not + * Smartcard feature is supported by the USARTx instance. + * @rmtoll GTPR PSC LL_USART_SetSmartcardPrescaler + * @param USARTx USART Instance + * @param PrescalerValue Value between Min_Data=0 and Max_Data=31 + * @retval None + */ +__STATIC_INLINE void LL_USART_SetSmartcardPrescaler(USART_TypeDef *USARTx, uint32_t PrescalerValue) +{ + MODIFY_REG(USARTx->GTPR, USART_GTPR_PSC, PrescalerValue); +} + +/** + * @brief Return Smartcard prescaler value, used for dividing the USART clock + * source to provide the SMARTCARD Clock (5 bits value) + * @note Macro @ref IS_SMARTCARD_INSTANCE(USARTx) can be used to check whether or not + * Smartcard feature is supported by the USARTx instance. + * @rmtoll GTPR PSC LL_USART_GetSmartcardPrescaler + * @param USARTx USART Instance + * @retval Smartcard prescaler value (Value between Min_Data=0 and Max_Data=31) + */ +__STATIC_INLINE uint32_t LL_USART_GetSmartcardPrescaler(USART_TypeDef *USARTx) +{ + return (uint32_t)(READ_BIT(USARTx->GTPR, USART_GTPR_PSC)); +} + +/** + * @brief Set Smartcard Guard time value, expressed in nb of baud clocks periods + * (GT[7:0] bits : Guard time value) + * @note Macro @ref IS_SMARTCARD_INSTANCE(USARTx) can be used to check whether or not + * Smartcard feature is supported by the USARTx instance. + * @rmtoll GTPR GT LL_USART_SetSmartcardGuardTime + * @param USARTx USART Instance + * @param GuardTime Value between Min_Data=0x00 and Max_Data=0xFF + * @retval None + */ +__STATIC_INLINE void LL_USART_SetSmartcardGuardTime(USART_TypeDef *USARTx, uint32_t GuardTime) +{ + MODIFY_REG(USARTx->GTPR, USART_GTPR_GT, GuardTime << USART_POSITION_GTPR_GT); +} + +/** + * @brief Return Smartcard Guard time value, expressed in nb of baud clocks periods + * (GT[7:0] bits : Guard time value) + * @note Macro @ref IS_SMARTCARD_INSTANCE(USARTx) can be used to check whether or not + * Smartcard feature is supported by the USARTx instance. + * @rmtoll GTPR GT LL_USART_GetSmartcardGuardTime + * @param USARTx USART Instance + * @retval Smartcard Guard time value (Value between Min_Data=0x00 and Max_Data=0xFF) + */ +__STATIC_INLINE uint32_t LL_USART_GetSmartcardGuardTime(USART_TypeDef *USARTx) +{ + return (uint32_t)(READ_BIT(USARTx->GTPR, USART_GTPR_GT) >> USART_POSITION_GTPR_GT); +} + +/** + * @} + */ + +/** @defgroup USART_LL_EF_Configuration_HalfDuplex Configuration functions related to Half Duplex feature + * @{ + */ + +/** + * @brief Enable Single Wire Half-Duplex mode + * @note Macro @ref IS_UART_HALFDUPLEX_INSTANCE(USARTx) can be used to check whether or not + * Half-Duplex mode is supported by the USARTx instance. + * @rmtoll CR3 HDSEL LL_USART_EnableHalfDuplex + * @param USARTx USART Instance + * @retval None + */ +__STATIC_INLINE void LL_USART_EnableHalfDuplex(USART_TypeDef *USARTx) +{ + SET_BIT(USARTx->CR3, USART_CR3_HDSEL); +} + +/** + * @brief Disable Single Wire Half-Duplex mode + * @note Macro @ref IS_UART_HALFDUPLEX_INSTANCE(USARTx) can be used to check whether or not + * Half-Duplex mode is supported by the USARTx instance. + * @rmtoll CR3 HDSEL LL_USART_DisableHalfDuplex + * @param USARTx USART Instance + * @retval None + */ +__STATIC_INLINE void LL_USART_DisableHalfDuplex(USART_TypeDef *USARTx) +{ + CLEAR_BIT(USARTx->CR3, USART_CR3_HDSEL); +} + +/** + * @brief Indicate if Single Wire Half-Duplex mode is enabled + * @note Macro @ref IS_UART_HALFDUPLEX_INSTANCE(USARTx) can be used to check whether or not + * Half-Duplex mode is supported by the USARTx instance. + * @rmtoll CR3 HDSEL LL_USART_IsEnabledHalfDuplex + * @param USARTx USART Instance + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_USART_IsEnabledHalfDuplex(USART_TypeDef *USARTx) +{ + return (READ_BIT(USARTx->CR3, USART_CR3_HDSEL) == (USART_CR3_HDSEL)); +} + +/** + * @} + */ + +/** @defgroup USART_LL_EF_Configuration_LIN Configuration functions related to LIN feature + * @{ + */ + +/** + * @brief Set LIN Break Detection Length + * @note Macro @ref IS_UART_LIN_INSTANCE(USARTx) can be used to check whether or not + * LIN feature is supported by the USARTx instance. + * @rmtoll CR2 LBDL LL_USART_SetLINBrkDetectionLen + * @param USARTx USART Instance + * @param LINBDLength This parameter can be one of the following values: + * @arg @ref LL_USART_LINBREAK_DETECT_10B + * @arg @ref LL_USART_LINBREAK_DETECT_11B + * @retval None + */ +__STATIC_INLINE void LL_USART_SetLINBrkDetectionLen(USART_TypeDef *USARTx, uint32_t LINBDLength) +{ + MODIFY_REG(USARTx->CR2, USART_CR2_LBDL, LINBDLength); +} + +/** + * @brief Return LIN Break Detection Length + * @note Macro @ref IS_UART_LIN_INSTANCE(USARTx) can be used to check whether or not + * LIN feature is supported by the USARTx instance. + * @rmtoll CR2 LBDL LL_USART_GetLINBrkDetectionLen + * @param USARTx USART Instance + * @retval Returned value can be one of the following values: + * @arg @ref LL_USART_LINBREAK_DETECT_10B + * @arg @ref LL_USART_LINBREAK_DETECT_11B + */ +__STATIC_INLINE uint32_t LL_USART_GetLINBrkDetectionLen(USART_TypeDef *USARTx) +{ + return (uint32_t)(READ_BIT(USARTx->CR2, USART_CR2_LBDL)); +} + +/** + * @brief Enable LIN mode + * @note Macro @ref IS_UART_LIN_INSTANCE(USARTx) can be used to check whether or not + * LIN feature is supported by the USARTx instance. + * @rmtoll CR2 LINEN LL_USART_EnableLIN + * @param USARTx USART Instance + * @retval None + */ +__STATIC_INLINE void LL_USART_EnableLIN(USART_TypeDef *USARTx) +{ + SET_BIT(USARTx->CR2, USART_CR2_LINEN); +} + +/** + * @brief Disable LIN mode + * @note Macro @ref IS_UART_LIN_INSTANCE(USARTx) can be used to check whether or not + * LIN feature is supported by the USARTx instance. + * @rmtoll CR2 LINEN LL_USART_DisableLIN + * @param USARTx USART Instance + * @retval None + */ +__STATIC_INLINE void LL_USART_DisableLIN(USART_TypeDef *USARTx) +{ + CLEAR_BIT(USARTx->CR2, USART_CR2_LINEN); +} + +/** + * @brief Indicate if LIN mode is enabled + * @note Macro @ref IS_UART_LIN_INSTANCE(USARTx) can be used to check whether or not + * LIN feature is supported by the USARTx instance. + * @rmtoll CR2 LINEN LL_USART_IsEnabledLIN + * @param USARTx USART Instance + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_USART_IsEnabledLIN(USART_TypeDef *USARTx) +{ + return (READ_BIT(USARTx->CR2, USART_CR2_LINEN) == (USART_CR2_LINEN)); +} + +/** + * @} + */ + +/** @defgroup USART_LL_EF_AdvancedConfiguration Advanced Configurations services + * @{ + */ + +/** + * @brief Perform basic configuration of USART for enabling use in Asynchronous Mode (UART) + * @note In UART mode, the following bits must be kept cleared: + * - LINEN bit in the USART_CR2 register, + * - CLKEN bit in the USART_CR2 register, + * - SCEN bit in the USART_CR3 register, + * - IREN bit in the USART_CR3 register, + * - HDSEL bit in the USART_CR3 register. + * @note Call of this function is equivalent to following function call sequence : + * - Clear LINEN in CR2 using @ref LL_USART_DisableLIN() function + * - Clear CLKEN in CR2 using @ref LL_USART_DisableSCLKOutput() function + * - Clear SCEN in CR3 using @ref LL_USART_DisableSmartcard() function + * - Clear IREN in CR3 using @ref LL_USART_DisableIrda() function + * - Clear HDSEL in CR3 using @ref LL_USART_DisableHalfDuplex() function + * @note Other remaining configurations items related to Asynchronous Mode + * (as Baud Rate, Word length, Parity, ...) should be set using + * dedicated functions + * @rmtoll CR2 LINEN LL_USART_ConfigAsyncMode\n + * CR2 CLKEN LL_USART_ConfigAsyncMode\n + * CR3 SCEN LL_USART_ConfigAsyncMode\n + * CR3 IREN LL_USART_ConfigAsyncMode\n + * CR3 HDSEL LL_USART_ConfigAsyncMode + * @param USARTx USART Instance + * @retval None + */ +__STATIC_INLINE void LL_USART_ConfigAsyncMode(USART_TypeDef *USARTx) +{ + /* In Asynchronous mode, the following bits must be kept cleared: + - LINEN, CLKEN bits in the USART_CR2 register, + - SCEN, IREN and HDSEL bits in the USART_CR3 register.*/ + CLEAR_BIT(USARTx->CR2, (USART_CR2_LINEN | USART_CR2_CLKEN)); + CLEAR_BIT(USARTx->CR3, (USART_CR3_SCEN | USART_CR3_IREN | USART_CR3_HDSEL)); +} + +/** + * @brief Perform basic configuration of USART for enabling use in Synchronous Mode + * @note In Synchronous mode, the following bits must be kept cleared: + * - LINEN bit in the USART_CR2 register, + * - SCEN bit in the USART_CR3 register, + * - IREN bit in the USART_CR3 register, + * - HDSEL bit in the USART_CR3 register. + * This function also sets the USART in Synchronous mode. + * @note Macro @ref IS_USART_INSTANCE(USARTx) can be used to check whether or not + * Synchronous mode is supported by the USARTx instance. + * @note Call of this function is equivalent to following function call sequence : + * - Clear LINEN in CR2 using @ref LL_USART_DisableLIN() function + * - Clear IREN in CR3 using @ref LL_USART_DisableIrda() function + * - Clear SCEN in CR3 using @ref LL_USART_DisableSmartcard() function + * - Clear HDSEL in CR3 using @ref LL_USART_DisableHalfDuplex() function + * - Set CLKEN in CR2 using @ref LL_USART_EnableSCLKOutput() function + * @note Other remaining configurations items related to Synchronous Mode + * (as Baud Rate, Word length, Parity, Clock Polarity, ...) should be set using + * dedicated functions + * @rmtoll CR2 LINEN LL_USART_ConfigSyncMode\n + * CR2 CLKEN LL_USART_ConfigSyncMode\n + * CR3 SCEN LL_USART_ConfigSyncMode\n + * CR3 IREN LL_USART_ConfigSyncMode\n + * CR3 HDSEL LL_USART_ConfigSyncMode + * @param USARTx USART Instance + * @retval None + */ +__STATIC_INLINE void LL_USART_ConfigSyncMode(USART_TypeDef *USARTx) +{ + /* In Synchronous mode, the following bits must be kept cleared: + - LINEN bit in the USART_CR2 register, + - SCEN, IREN and HDSEL bits in the USART_CR3 register.*/ + CLEAR_BIT(USARTx->CR2, (USART_CR2_LINEN)); + CLEAR_BIT(USARTx->CR3, (USART_CR3_SCEN | USART_CR3_IREN | USART_CR3_HDSEL)); + /* set the UART/USART in Synchronous mode */ + SET_BIT(USARTx->CR2, USART_CR2_CLKEN); +} + +/** + * @brief Perform basic configuration of USART for enabling use in LIN Mode + * @note In LIN mode, the following bits must be kept cleared: + * - STOP and CLKEN bits in the USART_CR2 register, + * - SCEN bit in the USART_CR3 register, + * - IREN bit in the USART_CR3 register, + * - HDSEL bit in the USART_CR3 register. + * This function also set the UART/USART in LIN mode. + * @note Macro @ref IS_UART_LIN_INSTANCE(USARTx) can be used to check whether or not + * LIN feature is supported by the USARTx instance. + * @note Call of this function is equivalent to following function call sequence : + * - Clear CLKEN in CR2 using @ref LL_USART_DisableSCLKOutput() function + * - Clear STOP in CR2 using @ref LL_USART_SetStopBitsLength() function + * - Clear SCEN in CR3 using @ref LL_USART_DisableSmartcard() function + * - Clear IREN in CR3 using @ref LL_USART_DisableIrda() function + * - Clear HDSEL in CR3 using @ref LL_USART_DisableHalfDuplex() function + * - Set LINEN in CR2 using @ref LL_USART_EnableLIN() function + * @note Other remaining configurations items related to LIN Mode + * (as Baud Rate, Word length, LIN Break Detection Length, ...) should be set using + * dedicated functions + * @rmtoll CR2 CLKEN LL_USART_ConfigLINMode\n + * CR2 STOP LL_USART_ConfigLINMode\n + * CR2 LINEN LL_USART_ConfigLINMode\n + * CR3 IREN LL_USART_ConfigLINMode\n + * CR3 SCEN LL_USART_ConfigLINMode\n + * CR3 HDSEL LL_USART_ConfigLINMode + * @param USARTx USART Instance + * @retval None + */ +__STATIC_INLINE void LL_USART_ConfigLINMode(USART_TypeDef *USARTx) +{ + /* In LIN mode, the following bits must be kept cleared: + - STOP and CLKEN bits in the USART_CR2 register, + - IREN, SCEN and HDSEL bits in the USART_CR3 register.*/ + CLEAR_BIT(USARTx->CR2, (USART_CR2_CLKEN | USART_CR2_STOP)); + CLEAR_BIT(USARTx->CR3, (USART_CR3_IREN | USART_CR3_SCEN | USART_CR3_HDSEL)); + /* Set the UART/USART in LIN mode */ + SET_BIT(USARTx->CR2, USART_CR2_LINEN); +} + +/** + * @brief Perform basic configuration of USART for enabling use in Half Duplex Mode + * @note In Half Duplex mode, the following bits must be kept cleared: + * - LINEN bit in the USART_CR2 register, + * - CLKEN bit in the USART_CR2 register, + * - SCEN bit in the USART_CR3 register, + * - IREN bit in the USART_CR3 register, + * This function also sets the UART/USART in Half Duplex mode. + * @note Macro @ref IS_UART_HALFDUPLEX_INSTANCE(USARTx) can be used to check whether or not + * Half-Duplex mode is supported by the USARTx instance. + * @note Call of this function is equivalent to following function call sequence : + * - Clear LINEN in CR2 using @ref LL_USART_DisableLIN() function + * - Clear CLKEN in CR2 using @ref LL_USART_DisableSCLKOutput() function + * - Clear SCEN in CR3 using @ref LL_USART_DisableSmartcard() function + * - Clear IREN in CR3 using @ref LL_USART_DisableIrda() function + * - Set HDSEL in CR3 using @ref LL_USART_EnableHalfDuplex() function + * @note Other remaining configurations items related to Half Duplex Mode + * (as Baud Rate, Word length, Parity, ...) should be set using + * dedicated functions + * @rmtoll CR2 LINEN LL_USART_ConfigHalfDuplexMode\n + * CR2 CLKEN LL_USART_ConfigHalfDuplexMode\n + * CR3 HDSEL LL_USART_ConfigHalfDuplexMode\n + * CR3 SCEN LL_USART_ConfigHalfDuplexMode\n + * CR3 IREN LL_USART_ConfigHalfDuplexMode + * @param USARTx USART Instance + * @retval None + */ +__STATIC_INLINE void LL_USART_ConfigHalfDuplexMode(USART_TypeDef *USARTx) +{ + /* In Half Duplex mode, the following bits must be kept cleared: + - LINEN and CLKEN bits in the USART_CR2 register, + - SCEN and IREN bits in the USART_CR3 register.*/ + CLEAR_BIT(USARTx->CR2, (USART_CR2_LINEN | USART_CR2_CLKEN)); + CLEAR_BIT(USARTx->CR3, (USART_CR3_SCEN | USART_CR3_IREN)); + /* set the UART/USART in Half Duplex mode */ + SET_BIT(USARTx->CR3, USART_CR3_HDSEL); +} + +/** + * @brief Perform basic configuration of USART for enabling use in Smartcard Mode + * @note In Smartcard mode, the following bits must be kept cleared: + * - LINEN bit in the USART_CR2 register, + * - IREN bit in the USART_CR3 register, + * - HDSEL bit in the USART_CR3 register. + * This function also configures Stop bits to 1.5 bits and + * sets the USART in Smartcard mode (SCEN bit). + * Clock Output is also enabled (CLKEN). + * @note Macro @ref IS_SMARTCARD_INSTANCE(USARTx) can be used to check whether or not + * Smartcard feature is supported by the USARTx instance. + * @note Call of this function is equivalent to following function call sequence : + * - Clear LINEN in CR2 using @ref LL_USART_DisableLIN() function + * - Clear IREN in CR3 using @ref LL_USART_DisableIrda() function + * - Clear HDSEL in CR3 using @ref LL_USART_DisableHalfDuplex() function + * - Configure STOP in CR2 using @ref LL_USART_SetStopBitsLength() function + * - Set CLKEN in CR2 using @ref LL_USART_EnableSCLKOutput() function + * - Set SCEN in CR3 using @ref LL_USART_EnableSmartcard() function + * @note Other remaining configurations items related to Smartcard Mode + * (as Baud Rate, Word length, Parity, ...) should be set using + * dedicated functions + * @rmtoll CR2 LINEN LL_USART_ConfigSmartcardMode\n + * CR2 STOP LL_USART_ConfigSmartcardMode\n + * CR2 CLKEN LL_USART_ConfigSmartcardMode\n + * CR3 HDSEL LL_USART_ConfigSmartcardMode\n + * CR3 SCEN LL_USART_ConfigSmartcardMode + * @param USARTx USART Instance + * @retval None + */ +__STATIC_INLINE void LL_USART_ConfigSmartcardMode(USART_TypeDef *USARTx) +{ + /* In Smartcard mode, the following bits must be kept cleared: + - LINEN bit in the USART_CR2 register, + - IREN and HDSEL bits in the USART_CR3 register.*/ + CLEAR_BIT(USARTx->CR2, (USART_CR2_LINEN)); + CLEAR_BIT(USARTx->CR3, (USART_CR3_IREN | USART_CR3_HDSEL)); + /* Configure Stop bits to 1.5 bits */ + /* Synchronous mode is activated by default */ + SET_BIT(USARTx->CR2, (USART_CR2_STOP_0 | USART_CR2_STOP_1 | USART_CR2_CLKEN)); + /* set the UART/USART in Smartcard mode */ + SET_BIT(USARTx->CR3, USART_CR3_SCEN); +} + +/** + * @brief Perform basic configuration of USART for enabling use in Irda Mode + * @note In IRDA mode, the following bits must be kept cleared: + * - LINEN bit in the USART_CR2 register, + * - STOP and CLKEN bits in the USART_CR2 register, + * - SCEN bit in the USART_CR3 register, + * - HDSEL bit in the USART_CR3 register. + * This function also sets the UART/USART in IRDA mode (IREN bit). + * @note Macro @ref IS_IRDA_INSTANCE(USARTx) can be used to check whether or not + * IrDA feature is supported by the USARTx instance. + * @note Call of this function is equivalent to following function call sequence : + * - Clear LINEN in CR2 using @ref LL_USART_DisableLIN() function + * - Clear CLKEN in CR2 using @ref LL_USART_DisableSCLKOutput() function + * - Clear SCEN in CR3 using @ref LL_USART_DisableSmartcard() function + * - Clear HDSEL in CR3 using @ref LL_USART_DisableHalfDuplex() function + * - Configure STOP in CR2 using @ref LL_USART_SetStopBitsLength() function + * - Set IREN in CR3 using @ref LL_USART_EnableIrda() function + * @note Other remaining configurations items related to Irda Mode + * (as Baud Rate, Word length, Power mode, ...) should be set using + * dedicated functions + * @rmtoll CR2 LINEN LL_USART_ConfigIrdaMode\n + * CR2 CLKEN LL_USART_ConfigIrdaMode\n + * CR2 STOP LL_USART_ConfigIrdaMode\n + * CR3 SCEN LL_USART_ConfigIrdaMode\n + * CR3 HDSEL LL_USART_ConfigIrdaMode\n + * CR3 IREN LL_USART_ConfigIrdaMode + * @param USARTx USART Instance + * @retval None + */ +__STATIC_INLINE void LL_USART_ConfigIrdaMode(USART_TypeDef *USARTx) +{ + /* In IRDA mode, the following bits must be kept cleared: + - LINEN, STOP and CLKEN bits in the USART_CR2 register, + - SCEN and HDSEL bits in the USART_CR3 register.*/ + CLEAR_BIT(USARTx->CR2, (USART_CR2_LINEN | USART_CR2_CLKEN | USART_CR2_STOP)); + CLEAR_BIT(USARTx->CR3, (USART_CR3_SCEN | USART_CR3_HDSEL)); + /* set the UART/USART in IRDA mode */ + SET_BIT(USARTx->CR3, USART_CR3_IREN); +} + +/** + * @brief Perform basic configuration of USART for enabling use in Multi processor Mode + * (several USARTs connected in a network, one of the USARTs can be the master, + * its TX output connected to the RX inputs of the other slaves USARTs). + * @note In MultiProcessor mode, the following bits must be kept cleared: + * - LINEN bit in the USART_CR2 register, + * - CLKEN bit in the USART_CR2 register, + * - SCEN bit in the USART_CR3 register, + * - IREN bit in the USART_CR3 register, + * - HDSEL bit in the USART_CR3 register. + * @note Call of this function is equivalent to following function call sequence : + * - Clear LINEN in CR2 using @ref LL_USART_DisableLIN() function + * - Clear CLKEN in CR2 using @ref LL_USART_DisableSCLKOutput() function + * - Clear SCEN in CR3 using @ref LL_USART_DisableSmartcard() function + * - Clear IREN in CR3 using @ref LL_USART_DisableIrda() function + * - Clear HDSEL in CR3 using @ref LL_USART_DisableHalfDuplex() function + * @note Other remaining configurations items related to Multi processor Mode + * (as Baud Rate, Wake Up Method, Node address, ...) should be set using + * dedicated functions + * @rmtoll CR2 LINEN LL_USART_ConfigMultiProcessMode\n + * CR2 CLKEN LL_USART_ConfigMultiProcessMode\n + * CR3 SCEN LL_USART_ConfigMultiProcessMode\n + * CR3 HDSEL LL_USART_ConfigMultiProcessMode\n + * CR3 IREN LL_USART_ConfigMultiProcessMode + * @param USARTx USART Instance + * @retval None + */ +__STATIC_INLINE void LL_USART_ConfigMultiProcessMode(USART_TypeDef *USARTx) +{ + /* In Multi Processor mode, the following bits must be kept cleared: + - LINEN and CLKEN bits in the USART_CR2 register, + - IREN, SCEN and HDSEL bits in the USART_CR3 register.*/ + CLEAR_BIT(USARTx->CR2, (USART_CR2_LINEN | USART_CR2_CLKEN)); + CLEAR_BIT(USARTx->CR3, (USART_CR3_SCEN | USART_CR3_HDSEL | USART_CR3_IREN)); +} + +/** + * @} + */ + +/** @defgroup USART_LL_EF_FLAG_Management FLAG_Management + * @{ + */ + +/** + * @brief Check if the USART Parity Error Flag is set or not + * @rmtoll SR PE LL_USART_IsActiveFlag_PE + * @param USARTx USART Instance + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_USART_IsActiveFlag_PE(USART_TypeDef *USARTx) +{ + return (READ_BIT(USARTx->SR, USART_SR_PE) == (USART_SR_PE)); +} + +/** + * @brief Check if the USART Framing Error Flag is set or not + * @rmtoll SR FE LL_USART_IsActiveFlag_FE + * @param USARTx USART Instance + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_USART_IsActiveFlag_FE(USART_TypeDef *USARTx) +{ + return (READ_BIT(USARTx->SR, USART_SR_FE) == (USART_SR_FE)); +} + +/** + * @brief Check if the USART Noise error detected Flag is set or not + * @rmtoll SR NF LL_USART_IsActiveFlag_NE + * @param USARTx USART Instance + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_USART_IsActiveFlag_NE(USART_TypeDef *USARTx) +{ + return (READ_BIT(USARTx->SR, USART_SR_NE) == (USART_SR_NE)); +} + +/** + * @brief Check if the USART OverRun Error Flag is set or not + * @rmtoll SR ORE LL_USART_IsActiveFlag_ORE + * @param USARTx USART Instance + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_USART_IsActiveFlag_ORE(USART_TypeDef *USARTx) +{ + return (READ_BIT(USARTx->SR, USART_SR_ORE) == (USART_SR_ORE)); +} + +/** + * @brief Check if the USART IDLE line detected Flag is set or not + * @rmtoll SR IDLE LL_USART_IsActiveFlag_IDLE + * @param USARTx USART Instance + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_USART_IsActiveFlag_IDLE(USART_TypeDef *USARTx) +{ + return (READ_BIT(USARTx->SR, USART_SR_IDLE) == (USART_SR_IDLE)); +} + +/** + * @brief Check if the USART Read Data Register Not Empty Flag is set or not + * @rmtoll SR RXNE LL_USART_IsActiveFlag_RXNE + * @param USARTx USART Instance + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_USART_IsActiveFlag_RXNE(USART_TypeDef *USARTx) +{ + return (READ_BIT(USARTx->SR, USART_SR_RXNE) == (USART_SR_RXNE)); +} + +/** + * @brief Check if the USART Transmission Complete Flag is set or not + * @rmtoll SR TC LL_USART_IsActiveFlag_TC + * @param USARTx USART Instance + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_USART_IsActiveFlag_TC(USART_TypeDef *USARTx) +{ + return (READ_BIT(USARTx->SR, USART_SR_TC) == (USART_SR_TC)); +} + +/** + * @brief Check if the USART Transmit Data Register Empty Flag is set or not + * @rmtoll SR TXE LL_USART_IsActiveFlag_TXE + * @param USARTx USART Instance + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_USART_IsActiveFlag_TXE(USART_TypeDef *USARTx) +{ + return (READ_BIT(USARTx->SR, USART_SR_TXE) == (USART_SR_TXE)); +} + +/** + * @brief Check if the USART LIN Break Detection Flag is set or not + * @note Macro @ref IS_UART_LIN_INSTANCE(USARTx) can be used to check whether or not + * LIN feature is supported by the USARTx instance. + * @rmtoll SR LBD LL_USART_IsActiveFlag_LBD + * @param USARTx USART Instance + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_USART_IsActiveFlag_LBD(USART_TypeDef *USARTx) +{ + return (READ_BIT(USARTx->SR, USART_SR_LBD) == (USART_SR_LBD)); +} + +/** + * @brief Check if the USART CTS Flag is set or not + * @note Macro @ref IS_UART_HWFLOW_INSTANCE(USARTx) can be used to check whether or not + * Hardware Flow control feature is supported by the USARTx instance. + * @rmtoll SR CTS LL_USART_IsActiveFlag_nCTS + * @param USARTx USART Instance + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_USART_IsActiveFlag_nCTS(USART_TypeDef *USARTx) +{ + return (READ_BIT(USARTx->SR, USART_SR_CTS) == (USART_SR_CTS)); +} + +/** + * @brief Check if the USART Send Break Flag is set or not + * @rmtoll CR1 SBK LL_USART_IsActiveFlag_SBK + * @param USARTx USART Instance + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_USART_IsActiveFlag_SBK(USART_TypeDef *USARTx) +{ + return (READ_BIT(USARTx->CR1, USART_CR1_SBK) == (USART_CR1_SBK)); +} + +/** + * @brief Check if the USART Receive Wake Up from mute mode Flag is set or not + * @rmtoll CR1 RWU LL_USART_IsActiveFlag_RWU + * @param USARTx USART Instance + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_USART_IsActiveFlag_RWU(USART_TypeDef *USARTx) +{ + return (READ_BIT(USARTx->CR1, USART_CR1_RWU) == (USART_CR1_RWU)); +} + +/** + * @brief Clear Parity Error Flag + * @note Clearing this flag is done by a read access to the USARTx_SR + * register followed by a read access to the USARTx_DR register. + * @note Please also consider that when clearing this flag, other flags as + * NE, FE, ORE, IDLE would also be cleared. + * @rmtoll SR PE LL_USART_ClearFlag_PE + * @param USARTx USART Instance + * @retval None + */ +__STATIC_INLINE void LL_USART_ClearFlag_PE(USART_TypeDef *USARTx) +{ + __IO uint32_t tmpreg; + tmpreg = USARTx->SR; + (void) tmpreg; + tmpreg = USARTx->DR; + (void) tmpreg; +} + +/** + * @brief Clear Framing Error Flag + * @note Clearing this flag is done by a read access to the USARTx_SR + * register followed by a read access to the USARTx_DR register. + * @note Please also consider that when clearing this flag, other flags as + * PE, NE, ORE, IDLE would also be cleared. + * @rmtoll SR FE LL_USART_ClearFlag_FE + * @param USARTx USART Instance + * @retval None + */ +__STATIC_INLINE void LL_USART_ClearFlag_FE(USART_TypeDef *USARTx) +{ + __IO uint32_t tmpreg; + tmpreg = USARTx->SR; + (void) tmpreg; + tmpreg = USARTx->DR; + (void) tmpreg; +} + +/** + * @brief Clear Noise detected Flag + * @note Clearing this flag is done by a read access to the USARTx_SR + * register followed by a read access to the USARTx_DR register. + * @note Please also consider that when clearing this flag, other flags as + * PE, FE, ORE, IDLE would also be cleared. + * @rmtoll SR NF LL_USART_ClearFlag_NE + * @param USARTx USART Instance + * @retval None + */ +__STATIC_INLINE void LL_USART_ClearFlag_NE(USART_TypeDef *USARTx) +{ + __IO uint32_t tmpreg; + tmpreg = USARTx->SR; + (void) tmpreg; + tmpreg = USARTx->DR; + (void) tmpreg; +} + +/** + * @brief Clear OverRun Error Flag + * @note Clearing this flag is done by a read access to the USARTx_SR + * register followed by a read access to the USARTx_DR register. + * @note Please also consider that when clearing this flag, other flags as + * PE, NE, FE, IDLE would also be cleared. + * @rmtoll SR ORE LL_USART_ClearFlag_ORE + * @param USARTx USART Instance + * @retval None + */ +__STATIC_INLINE void LL_USART_ClearFlag_ORE(USART_TypeDef *USARTx) +{ + __IO uint32_t tmpreg; + tmpreg = USARTx->SR; + (void) tmpreg; + tmpreg = USARTx->DR; + (void) tmpreg; +} + +/** + * @brief Clear IDLE line detected Flag + * @note Clearing this flag is done by a read access to the USARTx_SR + * register followed by a read access to the USARTx_DR register. + * @note Please also consider that when clearing this flag, other flags as + * PE, NE, FE, ORE would also be cleared. + * @rmtoll SR IDLE LL_USART_ClearFlag_IDLE + * @param USARTx USART Instance + * @retval None + */ +__STATIC_INLINE void LL_USART_ClearFlag_IDLE(USART_TypeDef *USARTx) +{ + __IO uint32_t tmpreg; + tmpreg = USARTx->SR; + (void) tmpreg; + tmpreg = USARTx->DR; + (void) tmpreg; +} + +/** + * @brief Clear Transmission Complete Flag + * @rmtoll SR TC LL_USART_ClearFlag_TC + * @param USARTx USART Instance + * @retval None + */ +__STATIC_INLINE void LL_USART_ClearFlag_TC(USART_TypeDef *USARTx) +{ + WRITE_REG(USARTx->SR, ~(USART_SR_TC)); +} + +/** + * @brief Clear RX Not Empty Flag + * @rmtoll SR RXNE LL_USART_ClearFlag_RXNE + * @param USARTx USART Instance + * @retval None + */ +__STATIC_INLINE void LL_USART_ClearFlag_RXNE(USART_TypeDef *USARTx) +{ + WRITE_REG(USARTx->SR, ~(USART_SR_RXNE)); +} + +/** + * @brief Clear LIN Break Detection Flag + * @note Macro @ref IS_UART_LIN_INSTANCE(USARTx) can be used to check whether or not + * LIN feature is supported by the USARTx instance. + * @rmtoll SR LBD LL_USART_ClearFlag_LBD + * @param USARTx USART Instance + * @retval None + */ +__STATIC_INLINE void LL_USART_ClearFlag_LBD(USART_TypeDef *USARTx) +{ + WRITE_REG(USARTx->SR, ~(USART_SR_LBD)); +} + +/** + * @brief Clear CTS Interrupt Flag + * @note Macro @ref IS_UART_HWFLOW_INSTANCE(USARTx) can be used to check whether or not + * Hardware Flow control feature is supported by the USARTx instance. + * @rmtoll SR CTS LL_USART_ClearFlag_nCTS + * @param USARTx USART Instance + * @retval None + */ +__STATIC_INLINE void LL_USART_ClearFlag_nCTS(USART_TypeDef *USARTx) +{ + WRITE_REG(USARTx->SR, ~(USART_SR_CTS)); +} + +/** + * @} + */ + +/** @defgroup USART_LL_EF_IT_Management IT_Management + * @{ + */ + +/** + * @brief Enable IDLE Interrupt + * @rmtoll CR1 IDLEIE LL_USART_EnableIT_IDLE + * @param USARTx USART Instance + * @retval None + */ +__STATIC_INLINE void LL_USART_EnableIT_IDLE(USART_TypeDef *USARTx) +{ + SET_BIT(USARTx->CR1, USART_CR1_IDLEIE); +} + +/** + * @brief Enable RX Not Empty Interrupt + * @rmtoll CR1 RXNEIE LL_USART_EnableIT_RXNE + * @param USARTx USART Instance + * @retval None + */ +__STATIC_INLINE void LL_USART_EnableIT_RXNE(USART_TypeDef *USARTx) +{ + SET_BIT(USARTx->CR1, USART_CR1_RXNEIE); +} + +/** + * @brief Enable Transmission Complete Interrupt + * @rmtoll CR1 TCIE LL_USART_EnableIT_TC + * @param USARTx USART Instance + * @retval None + */ +__STATIC_INLINE void LL_USART_EnableIT_TC(USART_TypeDef *USARTx) +{ + SET_BIT(USARTx->CR1, USART_CR1_TCIE); +} + +/** + * @brief Enable TX Empty Interrupt + * @rmtoll CR1 TXEIE LL_USART_EnableIT_TXE + * @param USARTx USART Instance + * @retval None + */ +__STATIC_INLINE void LL_USART_EnableIT_TXE(USART_TypeDef *USARTx) +{ + SET_BIT(USARTx->CR1, USART_CR1_TXEIE); +} + +/** + * @brief Enable Parity Error Interrupt + * @rmtoll CR1 PEIE LL_USART_EnableIT_PE + * @param USARTx USART Instance + * @retval None + */ +__STATIC_INLINE void LL_USART_EnableIT_PE(USART_TypeDef *USARTx) +{ + SET_BIT(USARTx->CR1, USART_CR1_PEIE); +} + +/** + * @brief Enable LIN Break Detection Interrupt + * @note Macro @ref IS_UART_LIN_INSTANCE(USARTx) can be used to check whether or not + * LIN feature is supported by the USARTx instance. + * @rmtoll CR2 LBDIE LL_USART_EnableIT_LBD + * @param USARTx USART Instance + * @retval None + */ +__STATIC_INLINE void LL_USART_EnableIT_LBD(USART_TypeDef *USARTx) +{ + SET_BIT(USARTx->CR2, USART_CR2_LBDIE); +} + +/** + * @brief Enable Error Interrupt + * @note When set, Error Interrupt Enable Bit is enabling interrupt generation in case of a framing + * error, overrun error or noise flag (FE=1 or ORE=1 or NF=1 in the USARTx_SR register). + * 0: Interrupt is inhibited + * 1: An interrupt is generated when FE=1 or ORE=1 or NF=1 in the USARTx_SR register. + * @rmtoll CR3 EIE LL_USART_EnableIT_ERROR + * @param USARTx USART Instance + * @retval None + */ +__STATIC_INLINE void LL_USART_EnableIT_ERROR(USART_TypeDef *USARTx) +{ + SET_BIT(USARTx->CR3, USART_CR3_EIE); +} + +/** + * @brief Enable CTS Interrupt + * @note Macro @ref IS_UART_HWFLOW_INSTANCE(USARTx) can be used to check whether or not + * Hardware Flow control feature is supported by the USARTx instance. + * @rmtoll CR3 CTSIE LL_USART_EnableIT_CTS + * @param USARTx USART Instance + * @retval None + */ +__STATIC_INLINE void LL_USART_EnableIT_CTS(USART_TypeDef *USARTx) +{ + SET_BIT(USARTx->CR3, USART_CR3_CTSIE); +} + +/** + * @brief Disable IDLE Interrupt + * @rmtoll CR1 IDLEIE LL_USART_DisableIT_IDLE + * @param USARTx USART Instance + * @retval None + */ +__STATIC_INLINE void LL_USART_DisableIT_IDLE(USART_TypeDef *USARTx) +{ + CLEAR_BIT(USARTx->CR1, USART_CR1_IDLEIE); +} + +/** + * @brief Disable RX Not Empty Interrupt + * @rmtoll CR1 RXNEIE LL_USART_DisableIT_RXNE + * @param USARTx USART Instance + * @retval None + */ +__STATIC_INLINE void LL_USART_DisableIT_RXNE(USART_TypeDef *USARTx) +{ + CLEAR_BIT(USARTx->CR1, USART_CR1_RXNEIE); +} + +/** + * @brief Disable Transmission Complete Interrupt + * @rmtoll CR1 TCIE LL_USART_DisableIT_TC + * @param USARTx USART Instance + * @retval None + */ +__STATIC_INLINE void LL_USART_DisableIT_TC(USART_TypeDef *USARTx) +{ + CLEAR_BIT(USARTx->CR1, USART_CR1_TCIE); +} + +/** + * @brief Disable TX Empty Interrupt + * @rmtoll CR1 TXEIE LL_USART_DisableIT_TXE + * @param USARTx USART Instance + * @retval None + */ +__STATIC_INLINE void LL_USART_DisableIT_TXE(USART_TypeDef *USARTx) +{ + CLEAR_BIT(USARTx->CR1, USART_CR1_TXEIE); +} + +/** + * @brief Disable Parity Error Interrupt + * @rmtoll CR1 PEIE LL_USART_DisableIT_PE + * @param USARTx USART Instance + * @retval None + */ +__STATIC_INLINE void LL_USART_DisableIT_PE(USART_TypeDef *USARTx) +{ + CLEAR_BIT(USARTx->CR1, USART_CR1_PEIE); +} + +/** + * @brief Disable LIN Break Detection Interrupt + * @note Macro @ref IS_UART_LIN_INSTANCE(USARTx) can be used to check whether or not + * LIN feature is supported by the USARTx instance. + * @rmtoll CR2 LBDIE LL_USART_DisableIT_LBD + * @param USARTx USART Instance + * @retval None + */ +__STATIC_INLINE void LL_USART_DisableIT_LBD(USART_TypeDef *USARTx) +{ + CLEAR_BIT(USARTx->CR2, USART_CR2_LBDIE); +} + +/** + * @brief Disable Error Interrupt + * @note When set, Error Interrupt Enable Bit is enabling interrupt generation in case of a framing + * error, overrun error or noise flag (FE=1 or ORE=1 or NF=1 in the USARTx_SR register). + * 0: Interrupt is inhibited + * 1: An interrupt is generated when FE=1 or ORE=1 or NF=1 in the USARTx_SR register. + * @rmtoll CR3 EIE LL_USART_DisableIT_ERROR + * @param USARTx USART Instance + * @retval None + */ +__STATIC_INLINE void LL_USART_DisableIT_ERROR(USART_TypeDef *USARTx) +{ + CLEAR_BIT(USARTx->CR3, USART_CR3_EIE); +} + +/** + * @brief Disable CTS Interrupt + * @note Macro @ref IS_UART_HWFLOW_INSTANCE(USARTx) can be used to check whether or not + * Hardware Flow control feature is supported by the USARTx instance. + * @rmtoll CR3 CTSIE LL_USART_DisableIT_CTS + * @param USARTx USART Instance + * @retval None + */ +__STATIC_INLINE void LL_USART_DisableIT_CTS(USART_TypeDef *USARTx) +{ + CLEAR_BIT(USARTx->CR3, USART_CR3_CTSIE); +} + +/** + * @brief Check if the USART IDLE Interrupt source is enabled or disabled. + * @rmtoll CR1 IDLEIE LL_USART_IsEnabledIT_IDLE + * @param USARTx USART Instance + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_USART_IsEnabledIT_IDLE(USART_TypeDef *USARTx) +{ + return (READ_BIT(USARTx->CR1, USART_CR1_IDLEIE) == (USART_CR1_IDLEIE)); +} + +/** + * @brief Check if the USART RX Not Empty Interrupt is enabled or disabled. + * @rmtoll CR1 RXNEIE LL_USART_IsEnabledIT_RXNE + * @param USARTx USART Instance + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_USART_IsEnabledIT_RXNE(USART_TypeDef *USARTx) +{ + return (READ_BIT(USARTx->CR1, USART_CR1_RXNEIE) == (USART_CR1_RXNEIE)); +} + +/** + * @brief Check if the USART Transmission Complete Interrupt is enabled or disabled. + * @rmtoll CR1 TCIE LL_USART_IsEnabledIT_TC + * @param USARTx USART Instance + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_USART_IsEnabledIT_TC(USART_TypeDef *USARTx) +{ + return (READ_BIT(USARTx->CR1, USART_CR1_TCIE) == (USART_CR1_TCIE)); +} + +/** + * @brief Check if the USART TX Empty Interrupt is enabled or disabled. + * @rmtoll CR1 TXEIE LL_USART_IsEnabledIT_TXE + * @param USARTx USART Instance + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_USART_IsEnabledIT_TXE(USART_TypeDef *USARTx) +{ + return (READ_BIT(USARTx->CR1, USART_CR1_TXEIE) == (USART_CR1_TXEIE)); +} + +/** + * @brief Check if the USART Parity Error Interrupt is enabled or disabled. + * @rmtoll CR1 PEIE LL_USART_IsEnabledIT_PE + * @param USARTx USART Instance + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_USART_IsEnabledIT_PE(USART_TypeDef *USARTx) +{ + return (READ_BIT(USARTx->CR1, USART_CR1_PEIE) == (USART_CR1_PEIE)); +} + +/** + * @brief Check if the USART LIN Break Detection Interrupt is enabled or disabled. + * @note Macro @ref IS_UART_LIN_INSTANCE(USARTx) can be used to check whether or not + * LIN feature is supported by the USARTx instance. + * @rmtoll CR2 LBDIE LL_USART_IsEnabledIT_LBD + * @param USARTx USART Instance + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_USART_IsEnabledIT_LBD(USART_TypeDef *USARTx) +{ + return (READ_BIT(USARTx->CR2, USART_CR2_LBDIE) == (USART_CR2_LBDIE)); +} + +/** + * @brief Check if the USART Error Interrupt is enabled or disabled. + * @rmtoll CR3 EIE LL_USART_IsEnabledIT_ERROR + * @param USARTx USART Instance + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_USART_IsEnabledIT_ERROR(USART_TypeDef *USARTx) +{ + return (READ_BIT(USARTx->CR3, USART_CR3_EIE) == (USART_CR3_EIE)); +} + +/** + * @brief Check if the USART CTS Interrupt is enabled or disabled. + * @note Macro @ref IS_UART_HWFLOW_INSTANCE(USARTx) can be used to check whether or not + * Hardware Flow control feature is supported by the USARTx instance. + * @rmtoll CR3 CTSIE LL_USART_IsEnabledIT_CTS + * @param USARTx USART Instance + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_USART_IsEnabledIT_CTS(USART_TypeDef *USARTx) +{ + return (READ_BIT(USARTx->CR3, USART_CR3_CTSIE) == (USART_CR3_CTSIE)); +} + +/** + * @} + */ + +/** @defgroup USART_LL_EF_DMA_Management DMA_Management + * @{ + */ + +/** + * @brief Enable DMA Mode for reception + * @rmtoll CR3 DMAR LL_USART_EnableDMAReq_RX + * @param USARTx USART Instance + * @retval None + */ +__STATIC_INLINE void LL_USART_EnableDMAReq_RX(USART_TypeDef *USARTx) +{ + SET_BIT(USARTx->CR3, USART_CR3_DMAR); +} + +/** + * @brief Disable DMA Mode for reception + * @rmtoll CR3 DMAR LL_USART_DisableDMAReq_RX + * @param USARTx USART Instance + * @retval None + */ +__STATIC_INLINE void LL_USART_DisableDMAReq_RX(USART_TypeDef *USARTx) +{ + CLEAR_BIT(USARTx->CR3, USART_CR3_DMAR); +} + +/** + * @brief Check if DMA Mode is enabled for reception + * @rmtoll CR3 DMAR LL_USART_IsEnabledDMAReq_RX + * @param USARTx USART Instance + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_USART_IsEnabledDMAReq_RX(USART_TypeDef *USARTx) +{ + return (READ_BIT(USARTx->CR3, USART_CR3_DMAR) == (USART_CR3_DMAR)); +} + +/** + * @brief Enable DMA Mode for transmission + * @rmtoll CR3 DMAT LL_USART_EnableDMAReq_TX + * @param USARTx USART Instance + * @retval None + */ +__STATIC_INLINE void LL_USART_EnableDMAReq_TX(USART_TypeDef *USARTx) +{ + SET_BIT(USARTx->CR3, USART_CR3_DMAT); +} + +/** + * @brief Disable DMA Mode for transmission + * @rmtoll CR3 DMAT LL_USART_DisableDMAReq_TX + * @param USARTx USART Instance + * @retval None + */ +__STATIC_INLINE void LL_USART_DisableDMAReq_TX(USART_TypeDef *USARTx) +{ + CLEAR_BIT(USARTx->CR3, USART_CR3_DMAT); +} + +/** + * @brief Check if DMA Mode is enabled for transmission + * @rmtoll CR3 DMAT LL_USART_IsEnabledDMAReq_TX + * @param USARTx USART Instance + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_USART_IsEnabledDMAReq_TX(USART_TypeDef *USARTx) +{ + return (READ_BIT(USARTx->CR3, USART_CR3_DMAT) == (USART_CR3_DMAT)); +} + +/** + * @brief Get the data register address used for DMA transfer + * @rmtoll DR DR LL_USART_DMA_GetRegAddr + * @note Address of Data Register is valid for both Transmit and Receive transfers. + * @param USARTx USART Instance + * @retval Address of data register + */ +__STATIC_INLINE uint32_t LL_USART_DMA_GetRegAddr(USART_TypeDef *USARTx) +{ + /* return address of DR register */ + return ((uint32_t) & (USARTx->DR)); +} + +/** + * @} + */ + +/** @defgroup USART_LL_EF_Data_Management Data_Management + * @{ + */ + +/** + * @brief Read Receiver Data register (Receive Data value, 8 bits) + * @rmtoll DR DR LL_USART_ReceiveData8 + * @param USARTx USART Instance + * @retval Value between Min_Data=0x00 and Max_Data=0xFF + */ +__STATIC_INLINE uint8_t LL_USART_ReceiveData8(USART_TypeDef *USARTx) +{ + return (uint8_t)(READ_BIT(USARTx->DR, USART_DR_DR)); +} + +/** + * @brief Read Receiver Data register (Receive Data value, 9 bits) + * @rmtoll DR DR LL_USART_ReceiveData9 + * @param USARTx USART Instance + * @retval Value between Min_Data=0x00 and Max_Data=0x1FF + */ +__STATIC_INLINE uint16_t LL_USART_ReceiveData9(USART_TypeDef *USARTx) +{ + return (uint16_t)(READ_BIT(USARTx->DR, USART_DR_DR)); +} + +/** + * @brief Write in Transmitter Data Register (Transmit Data value, 8 bits) + * @rmtoll DR DR LL_USART_TransmitData8 + * @param USARTx USART Instance + * @param Value between Min_Data=0x00 and Max_Data=0xFF + * @retval None + */ +__STATIC_INLINE void LL_USART_TransmitData8(USART_TypeDef *USARTx, uint8_t Value) +{ + USARTx->DR = Value; +} + +/** + * @brief Write in Transmitter Data Register (Transmit Data value, 9 bits) + * @rmtoll DR DR LL_USART_TransmitData9 + * @param USARTx USART Instance + * @param Value between Min_Data=0x00 and Max_Data=0x1FF + * @retval None + */ +__STATIC_INLINE void LL_USART_TransmitData9(USART_TypeDef *USARTx, uint16_t Value) +{ + USARTx->DR = Value & 0x1FFU; +} + +/** + * @} + */ + +/** @defgroup USART_LL_EF_Execution Execution + * @{ + */ + +/** + * @brief Request Break sending + * @rmtoll CR1 SBK LL_USART_RequestBreakSending + * @param USARTx USART Instance + * @retval None + */ +__STATIC_INLINE void LL_USART_RequestBreakSending(USART_TypeDef *USARTx) +{ + SET_BIT(USARTx->CR1, USART_CR1_SBK); +} + +/** + * @brief Put USART in Mute mode + * @rmtoll CR1 RWU LL_USART_RequestEnterMuteMode + * @param USARTx USART Instance + * @retval None + */ +__STATIC_INLINE void LL_USART_RequestEnterMuteMode(USART_TypeDef *USARTx) +{ + SET_BIT(USARTx->CR1, USART_CR1_RWU); +} + +/** + * @brief Put USART in Active mode + * @rmtoll CR1 RWU LL_USART_RequestExitMuteMode + * @param USARTx USART Instance + * @retval None + */ +__STATIC_INLINE void LL_USART_RequestExitMuteMode(USART_TypeDef *USARTx) +{ + CLEAR_BIT(USARTx->CR1, USART_CR1_RWU); +} + +/** + * @} + */ + +#if defined(USE_FULL_LL_DRIVER) +/** @defgroup USART_LL_EF_Init Initialization and de-initialization functions + * @{ + */ +ErrorStatus LL_USART_DeInit(USART_TypeDef *USARTx); +ErrorStatus LL_USART_Init(USART_TypeDef *USARTx, LL_USART_InitTypeDef *USART_InitStruct); +void LL_USART_StructInit(LL_USART_InitTypeDef *USART_InitStruct); +ErrorStatus LL_USART_ClockInit(USART_TypeDef *USARTx, LL_USART_ClockInitTypeDef *USART_ClockInitStruct); +void LL_USART_ClockStructInit(LL_USART_ClockInitTypeDef *USART_ClockInitStruct); +/** + * @} + */ +#endif /* USE_FULL_LL_DRIVER */ + +/** + * @} + */ + +/** + * @} + */ + +#endif /* USART1 || USART2 || USART3 || UART4 || UART5 */ + +/** + * @} + */ + +#ifdef __cplusplus +} +#endif + +#endif /* __STM32F1xx_LL_USART_H */ + +/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/ diff --git a/LLDrivers/inc/stm32f1xx_ll_usb.h b/LLDrivers/inc/stm32f1xx_ll_usb.h new file mode 100644 index 0000000..7ff6a5c --- /dev/null +++ b/LLDrivers/inc/stm32f1xx_ll_usb.h @@ -0,0 +1,651 @@ +/** + ****************************************************************************** + * @file stm32f1xx_ll_usb.h + * @author MCD Application Team + * @brief Header file of USB Low Layer HAL module. + ****************************************************************************** + * @attention + * + *

© Copyright (c) 2016 STMicroelectronics. + * All rights reserved.

+ * + * This software component is licensed by ST under BSD 3-Clause license, + * the "License"; You may not use this file except in compliance with the + * License. You may obtain a copy of the License at: + * opensource.org/licenses/BSD-3-Clause + * + ****************************************************************************** + */ + +/* Define to prevent recursive inclusion -------------------------------------*/ +#ifndef STM32F1xx_LL_USB_H +#define STM32F1xx_LL_USB_H + +#ifdef __cplusplus +extern "C" { +#endif + +/* Includes ------------------------------------------------------------------*/ +#include "stm32f1xx_hal_def.h" + +#if defined (USB) || defined (USB_OTG_FS) +/** @addtogroup STM32F1xx_HAL_Driver + * @{ + */ + +/** @addtogroup USB_LL + * @{ + */ + +/* Exported types ------------------------------------------------------------*/ + +/** + * @brief USB Mode definition + */ +#if defined (USB_OTG_FS) + +typedef enum +{ + USB_DEVICE_MODE = 0, + USB_HOST_MODE = 1, + USB_DRD_MODE = 2 +} USB_ModeTypeDef; + +/** + * @brief URB States definition + */ +typedef enum +{ + URB_IDLE = 0, + URB_DONE, + URB_NOTREADY, + URB_NYET, + URB_ERROR, + URB_STALL +} USB_OTG_URBStateTypeDef; + +/** + * @brief Host channel States definition + */ +typedef enum +{ + HC_IDLE = 0, + HC_XFRC, + HC_HALTED, + HC_NAK, + HC_NYET, + HC_STALL, + HC_XACTERR, + HC_BBLERR, + HC_DATATGLERR +} USB_OTG_HCStateTypeDef; + +/** + * @brief USB OTG Initialization Structure definition + */ +typedef struct +{ + uint32_t dev_endpoints; /*!< Device Endpoints number. + This parameter depends on the used USB core. + This parameter must be a number between Min_Data = 1 and Max_Data = 15 */ + + uint32_t Host_channels; /*!< Host Channels number. + This parameter Depends on the used USB core. + This parameter must be a number between Min_Data = 1 and Max_Data = 15 */ + + uint32_t speed; /*!< USB Core speed. + This parameter can be any value of @ref USB_Core_Speed_ */ + + uint32_t dma_enable; /*!< Enable or disable of the USB embedded DMA used only for OTG HS. */ + + uint32_t ep0_mps; /*!< Set the Endpoint 0 Max Packet size. */ + + uint32_t phy_itface; /*!< Select the used PHY interface. + This parameter can be any value of @ref USB_Core_PHY_ */ + + uint32_t Sof_enable; /*!< Enable or disable the output of the SOF signal. */ + + uint32_t low_power_enable; /*!< Enable or disable the low power mode. */ + + uint32_t lpm_enable; /*!< Enable or disable Link Power Management. */ + + uint32_t battery_charging_enable; /*!< Enable or disable Battery charging. */ + + uint32_t vbus_sensing_enable; /*!< Enable or disable the VBUS Sensing feature. */ + + uint32_t use_dedicated_ep1; /*!< Enable or disable the use of the dedicated EP1 interrupt. */ + + uint32_t use_external_vbus; /*!< Enable or disable the use of the external VBUS. */ +} USB_OTG_CfgTypeDef; + +typedef struct +{ + uint8_t num; /*!< Endpoint number + This parameter must be a number between Min_Data = 1 and Max_Data = 15 */ + + uint8_t is_in; /*!< Endpoint direction + This parameter must be a number between Min_Data = 0 and Max_Data = 1 */ + + uint8_t is_stall; /*!< Endpoint stall condition + This parameter must be a number between Min_Data = 0 and Max_Data = 1 */ + + uint8_t type; /*!< Endpoint type + This parameter can be any value of @ref USB_EP_Type_ */ + + uint8_t data_pid_start; /*!< Initial data PID + This parameter must be a number between Min_Data = 0 and Max_Data = 1 */ + + uint8_t even_odd_frame; /*!< IFrame parity + This parameter must be a number between Min_Data = 0 and Max_Data = 1 */ + + uint16_t tx_fifo_num; /*!< Transmission FIFO number + This parameter must be a number between Min_Data = 1 and Max_Data = 15 */ + + uint32_t maxpacket; /*!< Endpoint Max packet size + This parameter must be a number between Min_Data = 0 and Max_Data = 64KB */ + + uint8_t *xfer_buff; /*!< Pointer to transfer buffer */ + + uint32_t dma_addr; /*!< 32 bits aligned transfer buffer address */ + + uint32_t xfer_len; /*!< Current transfer length */ + + uint32_t xfer_count; /*!< Partial transfer length in case of multi packet transfer */ +} USB_OTG_EPTypeDef; + +typedef struct +{ + uint8_t dev_addr ; /*!< USB device address. + This parameter must be a number between Min_Data = 1 and Max_Data = 255 */ + + uint8_t ch_num; /*!< Host channel number. + This parameter must be a number between Min_Data = 1 and Max_Data = 15 */ + + uint8_t ep_num; /*!< Endpoint number. + This parameter must be a number between Min_Data = 1 and Max_Data = 15 */ + + uint8_t ep_is_in; /*!< Endpoint direction + This parameter must be a number between Min_Data = 0 and Max_Data = 1 */ + + uint8_t speed; /*!< USB Host speed. + This parameter can be any value of @ref USB_Core_Speed_ */ + + uint8_t do_ping; /*!< Enable or disable the use of the PING protocol for HS mode. */ + + uint8_t process_ping; /*!< Execute the PING protocol for HS mode. */ + + uint8_t ep_type; /*!< Endpoint Type. + This parameter can be any value of @ref USB_EP_Type_ */ + + uint16_t max_packet; /*!< Endpoint Max packet size. + This parameter must be a number between Min_Data = 0 and Max_Data = 64KB */ + + uint8_t data_pid; /*!< Initial data PID. + This parameter must be a number between Min_Data = 0 and Max_Data = 1 */ + + uint8_t *xfer_buff; /*!< Pointer to transfer buffer. */ + + uint32_t xfer_len; /*!< Current transfer length. */ + + uint32_t xfer_count; /*!< Partial transfer length in case of multi packet transfer. */ + + uint8_t toggle_in; /*!< IN transfer current toggle flag. + This parameter must be a number between Min_Data = 0 and Max_Data = 1 */ + + uint8_t toggle_out; /*!< OUT transfer current toggle flag + This parameter must be a number between Min_Data = 0 and Max_Data = 1 */ + + uint32_t dma_addr; /*!< 32 bits aligned transfer buffer address. */ + + uint32_t ErrCnt; /*!< Host channel error count.*/ + + USB_OTG_URBStateTypeDef urb_state; /*!< URB state. + This parameter can be any value of @ref USB_OTG_URBStateTypeDef */ + + USB_OTG_HCStateTypeDef state; /*!< Host Channel state. + This parameter can be any value of @ref USB_OTG_HCStateTypeDef */ +} USB_OTG_HCTypeDef; +#endif /* defined (USB_OTG_FS) */ + +#if defined (USB) + +typedef enum +{ + USB_DEVICE_MODE = 0 +} USB_ModeTypeDef; + +/** + * @brief USB Initialization Structure definition + */ +typedef struct +{ + uint32_t dev_endpoints; /*!< Device Endpoints number. + This parameter depends on the used USB core. + This parameter must be a number between Min_Data = 1 and Max_Data = 15 */ + + uint32_t speed; /*!< USB Core speed. + This parameter can be any value of @ref USB_Core_Speed */ + + uint32_t ep0_mps; /*!< Set the Endpoint 0 Max Packet size. */ + + uint32_t phy_itface; /*!< Select the used PHY interface. + This parameter can be any value of @ref USB_Core_PHY */ + + uint32_t Sof_enable; /*!< Enable or disable the output of the SOF signal. */ + + uint32_t low_power_enable; /*!< Enable or disable Low Power mode */ + + uint32_t lpm_enable; /*!< Enable or disable Battery charging. */ + + uint32_t battery_charging_enable; /*!< Enable or disable Battery charging. */ +} USB_CfgTypeDef; + +typedef struct +{ + uint8_t num; /*!< Endpoint number + This parameter must be a number between Min_Data = 1 and Max_Data = 15 */ + + uint8_t is_in; /*!< Endpoint direction + This parameter must be a number between Min_Data = 0 and Max_Data = 1 */ + + uint8_t is_stall; /*!< Endpoint stall condition + This parameter must be a number between Min_Data = 0 and Max_Data = 1 */ + + uint8_t type; /*!< Endpoint type + This parameter can be any value of @ref USB_EP_Type */ + + uint8_t data_pid_start; /*!< Initial data PID + This parameter must be a number between Min_Data = 0 and Max_Data = 1 */ + + uint16_t pmaadress; /*!< PMA Address + This parameter can be any value between Min_addr = 0 and Max_addr = 1K */ + + uint16_t pmaaddr0; /*!< PMA Address0 + This parameter can be any value between Min_addr = 0 and Max_addr = 1K */ + + uint16_t pmaaddr1; /*!< PMA Address1 + This parameter can be any value between Min_addr = 0 and Max_addr = 1K */ + + uint8_t doublebuffer; /*!< Double buffer enable + This parameter can be 0 or 1 */ + + uint16_t tx_fifo_num; /*!< This parameter is not required by USB Device FS peripheral, it is used + only by USB OTG FS peripheral + This parameter is added to ensure compatibility across USB peripherals */ + + uint32_t maxpacket; /*!< Endpoint Max packet size + This parameter must be a number between Min_Data = 0 and Max_Data = 64KB */ + + uint8_t *xfer_buff; /*!< Pointer to transfer buffer */ + + uint32_t xfer_len; /*!< Current transfer length */ + + uint32_t xfer_count; /*!< Partial transfer length in case of multi packet transfer */ + +} USB_EPTypeDef; +#endif /* defined (USB) */ + +/* Exported constants --------------------------------------------------------*/ + +/** @defgroup PCD_Exported_Constants PCD Exported Constants + * @{ + */ + +#if defined (USB_OTG_FS) +/** @defgroup USB_OTG_CORE VERSION ID + * @{ + */ +#define USB_OTG_CORE_ID_300A 0x4F54300AU +#define USB_OTG_CORE_ID_310A 0x4F54310AU +/** + * @} + */ + +/** @defgroup USB_Core_Mode_ USB Core Mode + * @{ + */ +#define USB_OTG_MODE_DEVICE 0U +#define USB_OTG_MODE_HOST 1U +#define USB_OTG_MODE_DRD 2U +/** + * @} + */ + +/** @defgroup USB_LL Device Speed + * @{ + */ +#define USBD_FS_SPEED 2U +#define USBH_FS_SPEED 1U +/** + * @} + */ + +/** @defgroup USB_LL_Core_Speed USB Low Layer Core Speed + * @{ + */ +#define USB_OTG_SPEED_FULL 3U +/** + * @} + */ + +/** @defgroup USB_LL_Core_PHY USB Low Layer Core PHY + * @{ + */ +#define USB_OTG_ULPI_PHY 1U +#define USB_OTG_EMBEDDED_PHY 2U +/** + * @} + */ + +/** @defgroup USB_LL_Turnaround_Timeout Turnaround Timeout Value + * @{ + */ +#ifndef USBD_FS_TRDT_VALUE +#define USBD_FS_TRDT_VALUE 5U +#define USBD_DEFAULT_TRDT_VALUE 9U +#endif /* USBD_HS_TRDT_VALUE */ +/** + * @} + */ + +/** @defgroup USB_LL_Core_MPS USB Low Layer Core MPS + * @{ + */ +#define USB_OTG_FS_MAX_PACKET_SIZE 64U +#define USB_OTG_MAX_EP0_SIZE 64U +/** + * @} + */ + +/** @defgroup USB_LL_Core_PHY_Frequency USB Low Layer Core PHY Frequency + * @{ + */ +#define DSTS_ENUMSPD_HS_PHY_30MHZ_OR_60MHZ (0U << 1) +#define DSTS_ENUMSPD_FS_PHY_30MHZ_OR_60MHZ (1U << 1) +#define DSTS_ENUMSPD_FS_PHY_48MHZ (3U << 1) +/** + * @} + */ + +/** @defgroup USB_LL_CORE_Frame_Interval USB Low Layer Core Frame Interval + * @{ + */ +#define DCFG_FRAME_INTERVAL_80 0U +#define DCFG_FRAME_INTERVAL_85 1U +#define DCFG_FRAME_INTERVAL_90 2U +#define DCFG_FRAME_INTERVAL_95 3U +/** + * @} + */ + +/** @defgroup USB_LL_EP0_MPS USB Low Layer EP0 MPS + * @{ + */ +#define DEP0CTL_MPS_64 0U +#define DEP0CTL_MPS_32 1U +#define DEP0CTL_MPS_16 2U +#define DEP0CTL_MPS_8 3U +/** + * @} + */ + +/** @defgroup USB_LL_EP_Speed USB Low Layer EP Speed + * @{ + */ +#define EP_SPEED_LOW 0U +#define EP_SPEED_FULL 1U +#define EP_SPEED_HIGH 2U +/** + * @} + */ + +/** @defgroup USB_LL_EP_Type USB Low Layer EP Type + * @{ + */ +#define EP_TYPE_CTRL 0U +#define EP_TYPE_ISOC 1U +#define EP_TYPE_BULK 2U +#define EP_TYPE_INTR 3U +#define EP_TYPE_MSK 3U +/** + * @} + */ + +/** @defgroup USB_LL_STS_Defines USB Low Layer STS Defines + * @{ + */ +#define STS_GOUT_NAK 1U +#define STS_DATA_UPDT 2U +#define STS_XFER_COMP 3U +#define STS_SETUP_COMP 4U +#define STS_SETUP_UPDT 6U +/** + * @} + */ + +/** @defgroup USB_LL_HCFG_SPEED_Defines USB Low Layer HCFG Speed Defines + * @{ + */ +#define HCFG_30_60_MHZ 0U +#define HCFG_48_MHZ 1U +#define HCFG_6_MHZ 2U +/** + * @} + */ + +/** @defgroup USB_LL_HPRT0_PRTSPD_SPEED_Defines USB Low Layer HPRT0 PRTSPD Speed Defines + * @{ + */ +#define HPRT0_PRTSPD_HIGH_SPEED 0U +#define HPRT0_PRTSPD_FULL_SPEED 1U +#define HPRT0_PRTSPD_LOW_SPEED 2U +/** + * @} + */ + +#define HCCHAR_CTRL 0U +#define HCCHAR_ISOC 1U +#define HCCHAR_BULK 2U +#define HCCHAR_INTR 3U + +#define HC_PID_DATA0 0U +#define HC_PID_DATA2 1U +#define HC_PID_DATA1 2U +#define HC_PID_SETUP 3U + +#define GRXSTS_PKTSTS_IN 2U +#define GRXSTS_PKTSTS_IN_XFER_COMP 3U +#define GRXSTS_PKTSTS_DATA_TOGGLE_ERR 5U +#define GRXSTS_PKTSTS_CH_HALTED 7U + +#define USBx_PCGCCTL *(__IO uint32_t *)((uint32_t)USBx_BASE + USB_OTG_PCGCCTL_BASE) +#define USBx_HPRT0 *(__IO uint32_t *)((uint32_t)USBx_BASE + USB_OTG_HOST_PORT_BASE) + +#define USBx_DEVICE ((USB_OTG_DeviceTypeDef *)(USBx_BASE + USB_OTG_DEVICE_BASE)) +#define USBx_INEP(i) ((USB_OTG_INEndpointTypeDef *)(USBx_BASE + USB_OTG_IN_ENDPOINT_BASE + ((i) * USB_OTG_EP_REG_SIZE))) +#define USBx_OUTEP(i) ((USB_OTG_OUTEndpointTypeDef *)(USBx_BASE + USB_OTG_OUT_ENDPOINT_BASE + ((i) * USB_OTG_EP_REG_SIZE))) +#define USBx_DFIFO(i) *(__IO uint32_t *)(USBx_BASE + USB_OTG_FIFO_BASE + ((i) * USB_OTG_FIFO_SIZE)) + +#define USBx_HOST ((USB_OTG_HostTypeDef *)(USBx_BASE + USB_OTG_HOST_BASE)) +#define USBx_HC(i) ((USB_OTG_HostChannelTypeDef *)(USBx_BASE + USB_OTG_HOST_CHANNEL_BASE + ((i) * USB_OTG_HOST_CHANNEL_SIZE))) +#endif /* defined (USB_OTG_FS) */ + +#if defined (USB) +/** @defgroup USB_LL_EP0_MPS USB Low Layer EP0 MPS + * @{ + */ +#define DEP0CTL_MPS_64 0U +#define DEP0CTL_MPS_32 1U +#define DEP0CTL_MPS_16 2U +#define DEP0CTL_MPS_8 3U +/** + * @} + */ + +/** @defgroup USB_LL_EP_Type USB Low Layer EP Type + * @{ + */ +#define EP_TYPE_CTRL 0U +#define EP_TYPE_ISOC 1U +#define EP_TYPE_BULK 2U +#define EP_TYPE_INTR 3U +#define EP_TYPE_MSK 3U +/** + * @} + */ + +/** @defgroup USB_LL Device Speed + * @{ + */ +#define USBD_FS_SPEED 2U +/** + * @} + */ + +#define BTABLE_ADDRESS 0x000U +#define PMA_ACCESS 2U +#endif /* defined (USB) */ +#if defined (USB_OTG_FS) +#define EP_ADDR_MSK 0xFU +#endif /* defined (USB_OTG_FS) */ +#if defined (USB) +#define EP_ADDR_MSK 0x7U +#endif /* defined (USB) */ +/** + * @} + */ + +/* Exported macro ------------------------------------------------------------*/ +/** @defgroup USB_LL_Exported_Macros USB Low Layer Exported Macros + * @{ + */ +#if defined (USB_OTG_FS) +#define USB_MASK_INTERRUPT(__INSTANCE__, __INTERRUPT__) ((__INSTANCE__)->GINTMSK &= ~(__INTERRUPT__)) +#define USB_UNMASK_INTERRUPT(__INSTANCE__, __INTERRUPT__) ((__INSTANCE__)->GINTMSK |= (__INTERRUPT__)) + +#define CLEAR_IN_EP_INTR(__EPNUM__, __INTERRUPT__) (USBx_INEP(__EPNUM__)->DIEPINT = (__INTERRUPT__)) +#define CLEAR_OUT_EP_INTR(__EPNUM__, __INTERRUPT__) (USBx_OUTEP(__EPNUM__)->DOEPINT = (__INTERRUPT__)) +#endif /* defined (USB_OTG_FS) */ +/** + * @} + */ + +/* Exported functions --------------------------------------------------------*/ +/** @addtogroup USB_LL_Exported_Functions USB Low Layer Exported Functions + * @{ + */ +#if defined (USB_OTG_FS) +HAL_StatusTypeDef USB_CoreInit(USB_OTG_GlobalTypeDef *USBx, USB_OTG_CfgTypeDef cfg); +HAL_StatusTypeDef USB_DevInit(USB_OTG_GlobalTypeDef *USBx, USB_OTG_CfgTypeDef cfg); +HAL_StatusTypeDef USB_EnableGlobalInt(USB_OTG_GlobalTypeDef *USBx); +HAL_StatusTypeDef USB_DisableGlobalInt(USB_OTG_GlobalTypeDef *USBx); +HAL_StatusTypeDef USB_SetTurnaroundTime(USB_OTG_GlobalTypeDef *USBx, uint32_t hclk, uint8_t speed); +HAL_StatusTypeDef USB_SetCurrentMode(USB_OTG_GlobalTypeDef *USBx, USB_ModeTypeDef mode); +HAL_StatusTypeDef USB_SetDevSpeed(USB_OTG_GlobalTypeDef *USBx, uint8_t speed); +HAL_StatusTypeDef USB_FlushRxFifo(USB_OTG_GlobalTypeDef *USBx); +HAL_StatusTypeDef USB_FlushTxFifo(USB_OTG_GlobalTypeDef *USBx, uint32_t num); +HAL_StatusTypeDef USB_ActivateEndpoint(USB_OTG_GlobalTypeDef *USBx, USB_OTG_EPTypeDef *ep); +HAL_StatusTypeDef USB_DeactivateEndpoint(USB_OTG_GlobalTypeDef *USBx, USB_OTG_EPTypeDef *ep); +HAL_StatusTypeDef USB_ActivateDedicatedEndpoint(USB_OTG_GlobalTypeDef *USBx, USB_OTG_EPTypeDef *ep); +HAL_StatusTypeDef USB_DeactivateDedicatedEndpoint(USB_OTG_GlobalTypeDef *USBx, USB_OTG_EPTypeDef *ep); +HAL_StatusTypeDef USB_EPStartXfer(USB_OTG_GlobalTypeDef *USBx, USB_OTG_EPTypeDef *ep); +HAL_StatusTypeDef USB_EP0StartXfer(USB_OTG_GlobalTypeDef *USBx, USB_OTG_EPTypeDef *ep); +HAL_StatusTypeDef USB_WritePacket(USB_OTG_GlobalTypeDef *USBx, uint8_t *src, uint8_t ch_ep_num, uint16_t len); +void *USB_ReadPacket(USB_OTG_GlobalTypeDef *USBx, uint8_t *dest, uint16_t len); +HAL_StatusTypeDef USB_EPSetStall(USB_OTG_GlobalTypeDef *USBx, USB_OTG_EPTypeDef *ep); +HAL_StatusTypeDef USB_EPClearStall(USB_OTG_GlobalTypeDef *USBx, USB_OTG_EPTypeDef *ep); +HAL_StatusTypeDef USB_SetDevAddress(USB_OTG_GlobalTypeDef *USBx, uint8_t address); +HAL_StatusTypeDef USB_DevConnect(USB_OTG_GlobalTypeDef *USBx); +HAL_StatusTypeDef USB_DevDisconnect(USB_OTG_GlobalTypeDef *USBx); +HAL_StatusTypeDef USB_StopDevice(USB_OTG_GlobalTypeDef *USBx); +HAL_StatusTypeDef USB_ActivateSetup(USB_OTG_GlobalTypeDef *USBx); +HAL_StatusTypeDef USB_EP0_OutStart(USB_OTG_GlobalTypeDef *USBx, uint8_t *psetup); +uint8_t USB_GetDevSpeed(USB_OTG_GlobalTypeDef *USBx); +uint32_t USB_GetMode(USB_OTG_GlobalTypeDef *USBx); +uint32_t USB_ReadInterrupts(USB_OTG_GlobalTypeDef *USBx); +uint32_t USB_ReadDevAllOutEpInterrupt(USB_OTG_GlobalTypeDef *USBx); +uint32_t USB_ReadDevOutEPInterrupt(USB_OTG_GlobalTypeDef *USBx, uint8_t epnum); +uint32_t USB_ReadDevAllInEpInterrupt(USB_OTG_GlobalTypeDef *USBx); +uint32_t USB_ReadDevInEPInterrupt(USB_OTG_GlobalTypeDef *USBx, uint8_t epnum); +void USB_ClearInterrupts(USB_OTG_GlobalTypeDef *USBx, uint32_t interrupt); + +HAL_StatusTypeDef USB_HostInit(USB_OTG_GlobalTypeDef *USBx, USB_OTG_CfgTypeDef cfg); +HAL_StatusTypeDef USB_InitFSLSPClkSel(USB_OTG_GlobalTypeDef *USBx, uint8_t freq); +HAL_StatusTypeDef USB_ResetPort(USB_OTG_GlobalTypeDef *USBx); +HAL_StatusTypeDef USB_DriveVbus(USB_OTG_GlobalTypeDef *USBx, uint8_t state); +uint32_t USB_GetHostSpeed(USB_OTG_GlobalTypeDef *USBx); +uint32_t USB_GetCurrentFrame(USB_OTG_GlobalTypeDef *USBx); +HAL_StatusTypeDef USB_HC_Init(USB_OTG_GlobalTypeDef *USBx, + uint8_t ch_num, + uint8_t epnum, + uint8_t dev_address, + uint8_t speed, + uint8_t ep_type, + uint16_t mps); +HAL_StatusTypeDef USB_HC_StartXfer(USB_OTG_GlobalTypeDef *USBx, USB_OTG_HCTypeDef *hc); +uint32_t USB_HC_ReadInterrupt(USB_OTG_GlobalTypeDef *USBx); +HAL_StatusTypeDef USB_HC_Halt(USB_OTG_GlobalTypeDef *USBx, uint8_t hc_num); +HAL_StatusTypeDef USB_DoPing(USB_OTG_GlobalTypeDef *USBx, uint8_t ch_num); +HAL_StatusTypeDef USB_StopHost(USB_OTG_GlobalTypeDef *USBx); +HAL_StatusTypeDef USB_ActivateRemoteWakeup(USB_OTG_GlobalTypeDef *USBx); +HAL_StatusTypeDef USB_DeActivateRemoteWakeup(USB_OTG_GlobalTypeDef *USBx); +#endif /* defined (USB_OTG_FS) */ + +#if defined (USB) +HAL_StatusTypeDef USB_CoreInit(USB_TypeDef *USBx, USB_CfgTypeDef cfg); +HAL_StatusTypeDef USB_DevInit(USB_TypeDef *USBx, USB_CfgTypeDef cfg); +HAL_StatusTypeDef USB_EnableGlobalInt(USB_TypeDef *USBx); +HAL_StatusTypeDef USB_DisableGlobalInt(USB_TypeDef *USBx); +HAL_StatusTypeDef USB_SetCurrentMode(USB_TypeDef *USBx, USB_ModeTypeDef mode); +HAL_StatusTypeDef USB_SetDevSpeed(USB_TypeDef *USBx, uint8_t speed); +HAL_StatusTypeDef USB_FlushRxFifo(USB_TypeDef *USBx); +HAL_StatusTypeDef USB_FlushTxFifo(USB_TypeDef *USBx, uint32_t num); +HAL_StatusTypeDef USB_ActivateEndpoint(USB_TypeDef *USBx, USB_EPTypeDef *ep); +HAL_StatusTypeDef USB_DeactivateEndpoint(USB_TypeDef *USBx, USB_EPTypeDef *ep); +HAL_StatusTypeDef USB_EPStartXfer(USB_TypeDef *USBx, USB_EPTypeDef *ep); +HAL_StatusTypeDef USB_WritePacket(USB_TypeDef *USBx, uint8_t *src, uint8_t ch_ep_num, uint16_t len); +void *USB_ReadPacket(USB_TypeDef *USBx, uint8_t *dest, uint16_t len); +HAL_StatusTypeDef USB_EPSetStall(USB_TypeDef *USBx, USB_EPTypeDef *ep); +HAL_StatusTypeDef USB_EPClearStall(USB_TypeDef *USBx, USB_EPTypeDef *ep); +HAL_StatusTypeDef USB_SetDevAddress(USB_TypeDef *USBx, uint8_t address); +HAL_StatusTypeDef USB_DevConnect(USB_TypeDef *USBx); +HAL_StatusTypeDef USB_DevDisconnect(USB_TypeDef *USBx); +HAL_StatusTypeDef USB_StopDevice(USB_TypeDef *USBx); +HAL_StatusTypeDef USB_EP0_OutStart(USB_TypeDef *USBx, uint8_t *psetup); +uint32_t USB_ReadInterrupts(USB_TypeDef *USBx); +uint32_t USB_ReadDevAllOutEpInterrupt(USB_TypeDef *USBx); +uint32_t USB_ReadDevOutEPInterrupt(USB_TypeDef *USBx, uint8_t epnum); +uint32_t USB_ReadDevAllInEpInterrupt(USB_TypeDef *USBx); +uint32_t USB_ReadDevInEPInterrupt(USB_TypeDef *USBx, uint8_t epnum); +void USB_ClearInterrupts(USB_TypeDef *USBx, uint32_t interrupt); + +HAL_StatusTypeDef USB_ActivateRemoteWakeup(USB_TypeDef *USBx); +HAL_StatusTypeDef USB_DeActivateRemoteWakeup(USB_TypeDef *USBx); +void USB_WritePMA(USB_TypeDef *USBx, uint8_t *pbUsrBuf, uint16_t wPMABufAddr, uint16_t wNBytes); +void USB_ReadPMA(USB_TypeDef *USBx, uint8_t *pbUsrBuf, uint16_t wPMABufAddr, uint16_t wNBytes); +#endif /* defined (USB) */ +/** + * @} + */ + +/** + * @} + */ + +/** + * @} + */ + +/** + * @} + */ +#endif /* defined (USB) || defined (USB_OTG_FS) */ + +#ifdef __cplusplus +} +#endif + + +#endif /* STM32F1xx_LL_USB_H */ + +/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/ diff --git a/LLDrivers/inc/stm32f1xx_ll_wwdg.h b/LLDrivers/inc/stm32f1xx_ll_wwdg.h new file mode 100644 index 0000000..bf7f3e2 --- /dev/null +++ b/LLDrivers/inc/stm32f1xx_ll_wwdg.h @@ -0,0 +1,318 @@ +/** + ****************************************************************************** + * @file stm32f1xx_ll_wwdg.h + * @author MCD Application Team + * @brief Header file of WWDG LL module. + ****************************************************************************** + * @attention + * + *

© Copyright (c) 2016 STMicroelectronics. + * All rights reserved.

+ * + * This software component is licensed by ST under BSD 3-Clause license, + * the "License"; You may not use this file except in compliance with the + * License. You may obtain a copy of the License at: + * opensource.org/licenses/BSD-3-Clause + * + ****************************************************************************** + */ + +/* Define to prevent recursive inclusion -------------------------------------*/ +#ifndef STM32F1xx_LL_WWDG_H +#define STM32F1xx_LL_WWDG_H + +#ifdef __cplusplus +extern "C" { +#endif + +/* Includes ------------------------------------------------------------------*/ +#include "stm32f1xx.h" + +/** @addtogroup STM32F1xx_LL_Driver + * @{ + */ + +#if defined (WWDG) +/** @defgroup WWDG_LL WWDG + * @{ + */ + +/* Private types -------------------------------------------------------------*/ +/* Private variables ---------------------------------------------------------*/ +/* Private constants ---------------------------------------------------------*/ +/* Private macros ------------------------------------------------------------*/ +/* Exported types ------------------------------------------------------------*/ +/* Exported constants --------------------------------------------------------*/ +/** @defgroup WWDG_LL_Exported_Constants WWDG Exported Constants + * @{ + */ + +/** @defgroup WWDG_LL_EC_IT IT Defines + * @brief IT defines which can be used with LL_WWDG_ReadReg and LL_WWDG_WriteReg functions + * @{ + */ +#define LL_WWDG_CFR_EWI WWDG_CFR_EWI +/** + * @} + */ + +/** @defgroup WWDG_LL_EC_PRESCALER PRESCALER +* @{ +*/ +#define LL_WWDG_PRESCALER_1 0x00000000U /*!< WWDG counter clock = (PCLK1/4096)/1 */ +#define LL_WWDG_PRESCALER_2 WWDG_CFR_WDGTB_0 /*!< WWDG counter clock = (PCLK1/4096)/2 */ +#define LL_WWDG_PRESCALER_4 WWDG_CFR_WDGTB_1 /*!< WWDG counter clock = (PCLK1/4096)/4 */ +#define LL_WWDG_PRESCALER_8 (WWDG_CFR_WDGTB_0 | WWDG_CFR_WDGTB_1) /*!< WWDG counter clock = (PCLK1/4096)/8 */ +/** + * @} + */ + +/** + * @} + */ + +/* Exported macro ------------------------------------------------------------*/ +/** @defgroup WWDG_LL_Exported_Macros WWDG Exported Macros + * @{ + */ +/** @defgroup WWDG_LL_EM_WRITE_READ Common Write and read registers macros + * @{ + */ +/** + * @brief Write a value in WWDG register + * @param __INSTANCE__ WWDG Instance + * @param __REG__ Register to be written + * @param __VALUE__ Value to be written in the register + * @retval None + */ +#define LL_WWDG_WriteReg(__INSTANCE__, __REG__, __VALUE__) WRITE_REG(__INSTANCE__->__REG__, (__VALUE__)) + +/** + * @brief Read a value in WWDG register + * @param __INSTANCE__ WWDG Instance + * @param __REG__ Register to be read + * @retval Register value + */ +#define LL_WWDG_ReadReg(__INSTANCE__, __REG__) READ_REG(__INSTANCE__->__REG__) +/** + * @} + */ + +/** + * @} + */ + +/* Exported functions --------------------------------------------------------*/ +/** @defgroup WWDG_LL_Exported_Functions WWDG Exported Functions + * @{ + */ + +/** @defgroup WWDG_LL_EF_Configuration Configuration + * @{ + */ +/** + * @brief Enable Window Watchdog. The watchdog is always disabled after a reset. + * @note It is enabled by setting the WDGA bit in the WWDG_CR register, + * then it cannot be disabled again except by a reset. + * This bit is set by software and only cleared by hardware after a reset. + * When WDGA = 1, the watchdog can generate a reset. + * @rmtoll CR WDGA LL_WWDG_Enable + * @param WWDGx WWDG Instance + * @retval None + */ +__STATIC_INLINE void LL_WWDG_Enable(WWDG_TypeDef *WWDGx) +{ + SET_BIT(WWDGx->CR, WWDG_CR_WDGA); +} + +/** + * @brief Checks if Window Watchdog is enabled + * @rmtoll CR WDGA LL_WWDG_IsEnabled + * @param WWDGx WWDG Instance + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_WWDG_IsEnabled(WWDG_TypeDef *WWDGx) +{ + return ((READ_BIT(WWDGx->CR, WWDG_CR_WDGA) == (WWDG_CR_WDGA)) ? 1UL : 0UL); +} + +/** + * @brief Set the Watchdog counter value to provided value (7-bits T[6:0]) + * @note When writing to the WWDG_CR register, always write 1 in the MSB b6 to avoid generating an immediate reset + * This counter is decremented every (4096 x 2expWDGTB) PCLK cycles + * A reset is produced when it rolls over from 0x40 to 0x3F (bit T6 becomes cleared) + * Setting the counter lower then 0x40 causes an immediate reset (if WWDG enabled) + * @rmtoll CR T LL_WWDG_SetCounter + * @param WWDGx WWDG Instance + * @param Counter 0..0x7F (7 bit counter value) + * @retval None + */ +__STATIC_INLINE void LL_WWDG_SetCounter(WWDG_TypeDef *WWDGx, uint32_t Counter) +{ + MODIFY_REG(WWDGx->CR, WWDG_CR_T, Counter); +} + +/** + * @brief Return current Watchdog Counter Value (7 bits counter value) + * @rmtoll CR T LL_WWDG_GetCounter + * @param WWDGx WWDG Instance + * @retval 7 bit Watchdog Counter value + */ +__STATIC_INLINE uint32_t LL_WWDG_GetCounter(WWDG_TypeDef *WWDGx) +{ + return (READ_BIT(WWDGx->CR, WWDG_CR_T)); +} + +/** + * @brief Set the time base of the prescaler (WDGTB). + * @note Prescaler is used to apply ratio on PCLK clock, so that Watchdog counter + * is decremented every (4096 x 2expWDGTB) PCLK cycles + * @rmtoll CFR WDGTB LL_WWDG_SetPrescaler + * @param WWDGx WWDG Instance + * @param Prescaler This parameter can be one of the following values: + * @arg @ref LL_WWDG_PRESCALER_1 + * @arg @ref LL_WWDG_PRESCALER_2 + * @arg @ref LL_WWDG_PRESCALER_4 + * @arg @ref LL_WWDG_PRESCALER_8 + * @retval None + */ +__STATIC_INLINE void LL_WWDG_SetPrescaler(WWDG_TypeDef *WWDGx, uint32_t Prescaler) +{ + MODIFY_REG(WWDGx->CFR, WWDG_CFR_WDGTB, Prescaler); +} + +/** + * @brief Return current Watchdog Prescaler Value + * @rmtoll CFR WDGTB LL_WWDG_GetPrescaler + * @param WWDGx WWDG Instance + * @retval Returned value can be one of the following values: + * @arg @ref LL_WWDG_PRESCALER_1 + * @arg @ref LL_WWDG_PRESCALER_2 + * @arg @ref LL_WWDG_PRESCALER_4 + * @arg @ref LL_WWDG_PRESCALER_8 + */ +__STATIC_INLINE uint32_t LL_WWDG_GetPrescaler(WWDG_TypeDef *WWDGx) +{ + return (READ_BIT(WWDGx->CFR, WWDG_CFR_WDGTB)); +} + +/** + * @brief Set the Watchdog Window value to be compared to the downcounter (7-bits W[6:0]). + * @note This window value defines when write in the WWDG_CR register + * to program Watchdog counter is allowed. + * Watchdog counter value update must occur only when the counter value + * is lower than the Watchdog window register value. + * Otherwise, a MCU reset is generated if the 7-bit Watchdog counter value + * (in the control register) is refreshed before the downcounter has reached + * the watchdog window register value. + * Physically is possible to set the Window lower then 0x40 but it is not recommended. + * To generate an immediate reset, it is possible to set the Counter lower than 0x40. + * @rmtoll CFR W LL_WWDG_SetWindow + * @param WWDGx WWDG Instance + * @param Window 0x00..0x7F (7 bit Window value) + * @retval None + */ +__STATIC_INLINE void LL_WWDG_SetWindow(WWDG_TypeDef *WWDGx, uint32_t Window) +{ + MODIFY_REG(WWDGx->CFR, WWDG_CFR_W, Window); +} + +/** + * @brief Return current Watchdog Window Value (7 bits value) + * @rmtoll CFR W LL_WWDG_GetWindow + * @param WWDGx WWDG Instance + * @retval 7 bit Watchdog Window value + */ +__STATIC_INLINE uint32_t LL_WWDG_GetWindow(WWDG_TypeDef *WWDGx) +{ + return (READ_BIT(WWDGx->CFR, WWDG_CFR_W)); +} + +/** + * @} + */ + +/** @defgroup WWDG_LL_EF_FLAG_Management FLAG_Management + * @{ + */ +/** + * @brief Indicates if the WWDG Early Wakeup Interrupt Flag is set or not. + * @note This bit is set by hardware when the counter has reached the value 0x40. + * It must be cleared by software by writing 0. + * A write of 1 has no effect. This bit is also set if the interrupt is not enabled. + * @rmtoll SR EWIF LL_WWDG_IsActiveFlag_EWKUP + * @param WWDGx WWDG Instance + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_WWDG_IsActiveFlag_EWKUP(WWDG_TypeDef *WWDGx) +{ + return ((READ_BIT(WWDGx->SR, WWDG_SR_EWIF) == (WWDG_SR_EWIF)) ? 1UL : 0UL); +} + +/** + * @brief Clear WWDG Early Wakeup Interrupt Flag (EWIF) + * @rmtoll SR EWIF LL_WWDG_ClearFlag_EWKUP + * @param WWDGx WWDG Instance + * @retval None + */ +__STATIC_INLINE void LL_WWDG_ClearFlag_EWKUP(WWDG_TypeDef *WWDGx) +{ + WRITE_REG(WWDGx->SR, ~WWDG_SR_EWIF); +} + +/** + * @} + */ + +/** @defgroup WWDG_LL_EF_IT_Management IT_Management + * @{ + */ +/** + * @brief Enable the Early Wakeup Interrupt. + * @note When set, an interrupt occurs whenever the counter reaches value 0x40. + * This interrupt is only cleared by hardware after a reset + * @rmtoll CFR EWI LL_WWDG_EnableIT_EWKUP + * @param WWDGx WWDG Instance + * @retval None + */ +__STATIC_INLINE void LL_WWDG_EnableIT_EWKUP(WWDG_TypeDef *WWDGx) +{ + SET_BIT(WWDGx->CFR, WWDG_CFR_EWI); +} + +/** + * @brief Check if Early Wakeup Interrupt is enabled + * @rmtoll CFR EWI LL_WWDG_IsEnabledIT_EWKUP + * @param WWDGx WWDG Instance + * @retval State of bit (1 or 0). + */ +__STATIC_INLINE uint32_t LL_WWDG_IsEnabledIT_EWKUP(WWDG_TypeDef *WWDGx) +{ + return ((READ_BIT(WWDGx->CFR, WWDG_CFR_EWI) == (WWDG_CFR_EWI)) ? 1UL : 0UL); +} + +/** + * @} + */ + +/** + * @} + */ + +/** + * @} + */ + +#endif /* WWDG */ + +/** + * @} + */ + +#ifdef __cplusplus +} +#endif + +#endif /* STM32F1xx_LL_WWDG_H */ + +/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/ diff --git a/LLDrivers/src/stm32f1xx_ll_adc.c b/LLDrivers/src/stm32f1xx_ll_adc.c new file mode 100644 index 0000000..a03c69b --- /dev/null +++ b/LLDrivers/src/stm32f1xx_ll_adc.c @@ -0,0 +1,886 @@ +/** + ****************************************************************************** + * @file stm32f1xx_ll_adc.c + * @author MCD Application Team + * @brief ADC LL module driver + ****************************************************************************** + * @attention + * + *

© Copyright (c) 2017 STMicroelectronics. + * All rights reserved.

+ * + * This software component is licensed by ST under BSD 3-Clause license, + * the "License"; You may not use this file except in compliance with the + * License. You may obtain a copy of the License at: + * opensource.org/licenses/BSD-3-Clause + * + ****************************************************************************** + */ + +#if defined(USE_FULL_LL_DRIVER) + +/* Includes ------------------------------------------------------------------*/ +#include "stm32f1xx_ll_adc.h" +#include "stm32f1xx_ll_bus.h" + +#ifdef USE_FULL_ASSERT + #include "stm32_assert.h" +#else + #define assert_param(expr) ((void)0U) +#endif + +/** @addtogroup STM32F1xx_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. */ +/* Check of parameters for configuration of ADC hierarchical scope: */ +/* ADC instance. */ +#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 */ +#if defined(ADC3) +#define IS_LL_ADC_REG_TRIG_SOURCE(__ADC_INSTANCE__, __REG_TRIG_SOURCE__) \ + ((((__ADC_INSTANCE__) == ADC1) || ((__ADC_INSTANCE__) == ADC2)) \ + ? ( ((__REG_TRIG_SOURCE__) == LL_ADC_REG_TRIG_SOFTWARE) \ + || ((__REG_TRIG_SOURCE__) == LL_ADC_REG_TRIG_EXT_TIM1_CH3) \ + || ((__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_TIM2_CH2) \ + || ((__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_EXTI_LINE11) \ + || ((__REG_TRIG_SOURCE__) == LL_ADC_REG_TRIG_EXT_TIM8_TRGO) \ + ) \ + : \ + ( ((__REG_TRIG_SOURCE__) == LL_ADC_REG_TRIG_SOFTWARE) \ + || ((__REG_TRIG_SOURCE__) == LL_ADC_REG_TRIG_EXT_TIM1_CH3) \ + || ((__REG_TRIG_SOURCE__) == LL_ADC_REG_TRIG_EXT_TIM3_CH1) \ + || ((__REG_TRIG_SOURCE__) == LL_ADC_REG_TRIG_EXT_TIM2_CH3) \ + || ((__REG_TRIG_SOURCE__) == LL_ADC_REG_TRIG_EXT_TIM8_CH1) \ + || ((__REG_TRIG_SOURCE__) == LL_ADC_REG_TRIG_EXT_TIM8_TRGO_ADC3) \ + || ((__REG_TRIG_SOURCE__) == LL_ADC_REG_TRIG_EXT_TIM5_CH1) \ + || ((__REG_TRIG_SOURCE__) == LL_ADC_REG_TRIG_EXT_TIM5_CH3) \ + ) \ + ) +#else +#if defined (STM32F101xE) || defined (STM32F105xC) || defined (STM32F107xC) +#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_CH3) \ + || ((__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_TIM2_CH2) \ + || ((__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_EXTI_LINE11) \ + || ((__REG_TRIG_SOURCE__) == LL_ADC_REG_TRIG_EXT_TIM8_TRGO) \ + ) +#else +#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_CH3) \ + || ((__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_TIM2_CH2) \ + || ((__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_EXTI_LINE11) \ + ) +#endif +#endif +#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_UNLIMITED) \ + ) + +#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 */ +#if defined(ADC3) +#define IS_LL_ADC_INJ_TRIG_SOURCE(__ADC_INSTANCE__, __INJ_TRIG_SOURCE__) \ + ((((__ADC_INSTANCE__) == ADC1) || ((__ADC_INSTANCE__) == ADC2)) \ + ? ( ((__INJ_TRIG_SOURCE__) == LL_ADC_INJ_TRIG_SOFTWARE) \ + || ((__INJ_TRIG_SOURCE__) == LL_ADC_INJ_TRIG_EXT_TIM1_TRGO) \ + || ((__INJ_TRIG_SOURCE__) == LL_ADC_INJ_TRIG_EXT_TIM1_CH4) \ + || ((__INJ_TRIG_SOURCE__) == LL_ADC_INJ_TRIG_EXT_TIM2_TRGO) \ + || ((__INJ_TRIG_SOURCE__) == LL_ADC_INJ_TRIG_EXT_TIM2_CH1) \ + || ((__INJ_TRIG_SOURCE__) == LL_ADC_INJ_TRIG_EXT_TIM3_CH4) \ + || ((__INJ_TRIG_SOURCE__) == LL_ADC_INJ_TRIG_EXT_TIM4_TRGO) \ + || ((__INJ_TRIG_SOURCE__) == LL_ADC_INJ_TRIG_EXT_EXTI_LINE15) \ + || ((__INJ_TRIG_SOURCE__) == LL_ADC_INJ_TRIG_EXT_TIM8_CH4) \ + ) \ + : \ + ( ((__INJ_TRIG_SOURCE__) == LL_ADC_INJ_TRIG_SOFTWARE) \ + || ((__INJ_TRIG_SOURCE__) == LL_ADC_INJ_TRIG_EXT_TIM1_TRGO) \ + || ((__INJ_TRIG_SOURCE__) == LL_ADC_INJ_TRIG_EXT_TIM1_CH4) \ + || ((__INJ_TRIG_SOURCE__) == LL_ADC_INJ_TRIG_EXT_TIM4_CH3) \ + || ((__INJ_TRIG_SOURCE__) == LL_ADC_INJ_TRIG_EXT_TIM8_CH2) \ + || ((__INJ_TRIG_SOURCE__) == LL_ADC_INJ_TRIG_EXT_TIM8_CH4_ADC3) \ + || ((__INJ_TRIG_SOURCE__) == LL_ADC_INJ_TRIG_EXT_TIM5_TRGO) \ + || ((__INJ_TRIG_SOURCE__) == LL_ADC_INJ_TRIG_EXT_TIM5_CH4) \ + ) \ + ) +#else +#if defined (STM32F101xE) || defined (STM32F105xC) || defined (STM32F107xC) +#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_TRGO) \ + || ((__INJ_TRIG_SOURCE__) == LL_ADC_INJ_TRIG_EXT_TIM1_CH4) \ + || ((__INJ_TRIG_SOURCE__) == LL_ADC_INJ_TRIG_EXT_TIM2_TRGO) \ + || ((__INJ_TRIG_SOURCE__) == LL_ADC_INJ_TRIG_EXT_TIM2_CH1) \ + || ((__INJ_TRIG_SOURCE__) == LL_ADC_INJ_TRIG_EXT_TIM3_CH4) \ + || ((__INJ_TRIG_SOURCE__) == LL_ADC_INJ_TRIG_EXT_TIM4_TRGO) \ + || ((__INJ_TRIG_SOURCE__) == LL_ADC_INJ_TRIG_EXT_EXTI_LINE15) \ + || ((__INJ_TRIG_SOURCE__) == LL_ADC_INJ_TRIG_EXT_TIM8_CH4) \ + ) +#else +#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_TRGO) \ + || ((__INJ_TRIG_SOURCE__) == LL_ADC_INJ_TRIG_EXT_TIM1_CH4) \ + || ((__INJ_TRIG_SOURCE__) == LL_ADC_INJ_TRIG_EXT_TIM2_TRGO) \ + || ((__INJ_TRIG_SOURCE__) == LL_ADC_INJ_TRIG_EXT_TIM2_CH1) \ + || ((__INJ_TRIG_SOURCE__) == LL_ADC_INJ_TRIG_EXT_TIM3_CH4) \ + || ((__INJ_TRIG_SOURCE__) == LL_ADC_INJ_TRIG_EXT_TIM4_TRGO) \ + || ((__INJ_TRIG_SOURCE__) == LL_ADC_INJ_TRIG_EXT_EXTI_LINE15) \ + ) +#endif +#endif +#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. */ +#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_FAST) \ + || ((__MULTI_MODE__) == LL_ADC_MULTI_DUAL_REG_INTERL_SLOW) \ + || ((__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_INTFAST_INJ_SIM) \ + || ((__MULTI_MODE__) == LL_ADC_MULTI_DUAL_REG_INTSLOW_INJ_SIM) \ + ) + +#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_ADC1); + + /* Release reset of ADC clock (core clock) */ + LL_APB2_GRP1_ReleaseReset(LL_APB2_GRP1_PERIPH_ADC1); + + 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)); +#if defined(ADC_MULTIMODE_SUPPORT) + assert_param(IS_LL_ADC_MULTI_MODE(ADC_CommonInitStruct->Multimode)); +#endif /* ADC_MULTIMODE_SUPPORT */ + + /* Note: Hardware constraint (refer to description of functions */ + /* "LL_ADC_SetCommonXXX()" and "LL_ADC_SetMultiXXX()"): */ + /* On this STM32 serie, 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) == 0U) + { + /* Configuration of ADC hierarchical scope: */ + /* - common to several ADC */ + /* (all ADC instances belonging to the same ADC common instance) */ + /* - 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->CR1, + ADC_CR1_DUALMOD, + ADC_CommonInitStruct->Multimode + ); + } + else + { + MODIFY_REG(ADCxy_COMMON->CR1, + ADC_CR1_DUALMOD, + LL_ADC_MULTI_INDEPENDENT + ); + } +#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) */ + +#if defined(ADC_MULTIMODE_SUPPORT) + /* Set fields of ADC multimode */ + ADC_CommonInitStruct->Multimode = LL_ADC_MULTI_INDEPENDENT; +#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) == 1U) + { + /* 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) == 0U) + { + /* ========== Reset ADC registers ========== */ + /* Reset register SR */ + CLEAR_BIT(ADCx->SR, + ( LL_ADC_FLAG_STRT + | LL_ADC_FLAG_JSTRT + | LL_ADC_FLAG_EOS + | LL_ADC_FLAG_JEOS + | LL_ADC_FLAG_AWD1 ) + ); + + /* Reset register CR1 */ + #if defined (STM32F103x6) || defined (STM32F103xB) || defined (STM32F105xC) || defined (STM32F107xC) || defined (STM32F103xE) || defined (STM32F103xG) + + CLEAR_BIT(ADCx->CR1, + ( ADC_CR1_AWDEN | ADC_CR1_JAWDEN | ADC_CR1_DUALMOD + | 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 ) + ); + #else + + CLEAR_BIT(ADCx->CR1, + ( 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 ) + ); + #endif + + /* Reset register CR2 */ + CLEAR_BIT(ADCx->CR2, + ( ADC_CR2_TSVREFE + | ADC_CR2_SWSTART | ADC_CR2_EXTTRIG | ADC_CR2_EXTSEL + | ADC_CR2_JSWSTART | ADC_CR2_JEXTTRIG | ADC_CR2_JEXTSEL + | ADC_CR2_ALIGN | ADC_CR2_DMA + | ADC_CR2_RSTCAL | ADC_CR2_CAL + | ADC_CR2_CONT | ADC_CR2_ADON ) + ); + + /* Reset register SMPR1 */ + CLEAR_BIT(ADCx->SMPR1, + ( 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 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 */ + + } + + 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_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) == 0U) + { + /* Configuration of ADC hierarchical scope: */ + /* - ADC instance */ + /* - Set ADC conversion data alignment */ + MODIFY_REG(ADCx->CR1, + ADC_CR1_SCAN + , + 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->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)); +#if defined(ADC3) + assert_param(IS_LL_ADC_REG_TRIG_SOURCE(ADCx, ADC_REG_InitStruct->TriggerSource)); +#else + assert_param(IS_LL_ADC_REG_TRIG_SOURCE(ADC_REG_InitStruct->TriggerSource)); +#endif + 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)); + + /* Note: Hardware constraint (refer to description of this function): */ + /* ADC instance must be disabled. */ + if(LL_ADC_IsEnabled(ADCx) == 0U) + { + /* 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 serie, 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->SequencerLength + | ADC_REG_InitStruct->SequencerDiscont + ); + } + else + { + MODIFY_REG(ADCx->CR1, + ADC_CR1_DISCEN + | ADC_CR1_DISCNUM + , + ADC_REG_InitStruct->SequencerLength + | LL_ADC_REG_SEQ_DISCONT_DISABLE + ); + } + + MODIFY_REG(ADCx->CR2, + ADC_CR2_EXTSEL + | ADC_CR2_CONT + | ADC_CR2_DMA + , + ADC_REG_InitStruct->TriggerSource + | 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 serie, 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)); +#if defined(ADC3) + assert_param(IS_LL_ADC_INJ_TRIG_SOURCE(ADCx, ADC_INJ_InitStruct->TriggerSource)); +#else + assert_param(IS_LL_ADC_INJ_TRIG_SOURCE(ADC_INJ_InitStruct->TriggerSource)); +#endif + 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) == 0U) + { + /* 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 serie, 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_INJ_InitStruct->TriggerSource + ); + + /* 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 */ + +/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/ diff --git a/LLDrivers/src/stm32f1xx_ll_crc.c b/LLDrivers/src/stm32f1xx_ll_crc.c new file mode 100644 index 0000000..eafdf6e --- /dev/null +++ b/LLDrivers/src/stm32f1xx_ll_crc.c @@ -0,0 +1,108 @@ +/** + ****************************************************************************** + * @file stm32f1xx_ll_crc.c + * @author MCD Application Team + * @brief CRC LL module driver. + ****************************************************************************** + * @attention + * + *

© Copyright (c) 2016 STMicroelectronics. + * All rights reserved.

+ * + * This software component is licensed by ST under BSD 3-Clause license, + * the "License"; You may not use this file except in compliance with the + * License. You may obtain a copy of the License at: + * opensource.org/licenses/BSD-3-Clause + * + ****************************************************************************** + */ +#if defined(USE_FULL_LL_DRIVER) + +/* Includes ------------------------------------------------------------------*/ +#include "stm32f1xx_ll_crc.h" +#include "stm32f1xx_ll_bus.h" + +#ifdef USE_FULL_ASSERT +#include "stm32_assert.h" +#else +#define assert_param(expr) ((void)0U) +#endif + +/** @addtogroup STM32F1xx_LL_Driver + * @{ + */ + +#if defined (CRC) + +/** @addtogroup CRC_LL + * @{ + */ + +/* Private types -------------------------------------------------------------*/ +/* Private variables ---------------------------------------------------------*/ +/* Private constants ---------------------------------------------------------*/ +/* Private macros ------------------------------------------------------------*/ +/* Private function prototypes -----------------------------------------------*/ + +/* Exported functions --------------------------------------------------------*/ +/** @addtogroup CRC_LL_Exported_Functions + * @{ + */ + +/** @addtogroup CRC_LL_EF_Init + * @{ + */ + +/** + * @brief De-initialize CRC registers (Registers restored to their default values). + * @param CRCx CRC Instance + * @retval An ErrorStatus enumeration value: + * - SUCCESS: CRC registers are de-initialized + * - ERROR: CRC registers are not de-initialized + */ +ErrorStatus LL_CRC_DeInit(CRC_TypeDef *CRCx) +{ + ErrorStatus status = SUCCESS; + + /* Check the parameters */ + assert_param(IS_CRC_ALL_INSTANCE(CRCx)); + + if (CRCx == CRC) + { + + /* Reset the CRC calculation unit */ + LL_CRC_ResetCRCCalculationUnit(CRCx); + + /* Reset IDR register */ + LL_CRC_Write_IDR(CRCx, 0x00U); + } + else + { + status = ERROR; + } + + return (status); +} + +/** + * @} + */ + +/** + * @} + */ + +/** + * @} + */ + +#endif /* defined (CRC) */ + +/** + * @} + */ + +#endif /* USE_FULL_LL_DRIVER */ + +/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/ + diff --git a/LLDrivers/src/stm32f1xx_ll_dac.c b/LLDrivers/src/stm32f1xx_ll_dac.c new file mode 100644 index 0000000..5efd157 --- /dev/null +++ b/LLDrivers/src/stm32f1xx_ll_dac.c @@ -0,0 +1,274 @@ +/** + ****************************************************************************** + * @file stm32f1xx_ll_dac.c + * @author MCD Application Team + * @brief DAC LL module driver + ****************************************************************************** + * @attention + * + *

© Copyright (c) 2016 STMicroelectronics. + * All rights reserved.

+ * + * This software component is licensed by ST under BSD 3-Clause license, + * the "License"; You may not use this file except in compliance with the + * License. You may obtain a copy of the License at: + * opensource.org/licenses/BSD-3-Clause + * + ****************************************************************************** + */ +#if defined(USE_FULL_LL_DRIVER) + +/* Includes ------------------------------------------------------------------*/ +#include "stm32f1xx_ll_dac.h" +#include "stm32f1xx_ll_bus.h" + +#ifdef USE_FULL_ASSERT +#include "stm32_assert.h" +#else +#define assert_param(expr) ((void)0U) +#endif + +/** @addtogroup STM32F1xx_LL_Driver + * @{ + */ + +#if defined(DAC) + +/** @addtogroup DAC_LL DAC + * @{ + */ + +/* Private types -------------------------------------------------------------*/ +/* Private variables ---------------------------------------------------------*/ +/* Private constants ---------------------------------------------------------*/ +/* Private macros ------------------------------------------------------------*/ + +/** @addtogroup DAC_LL_Private_Macros + * @{ + */ +#define IS_LL_DAC_CHANNEL(__DAC_CHANNEL__) \ + ( \ + ((__DAC_CHANNEL__) == LL_DAC_CHANNEL_1) \ + || ((__DAC_CHANNEL__) == LL_DAC_CHANNEL_2) \ + ) + +#define IS_LL_DAC_TRIGGER_SOURCE(__TRIGGER_SOURCE__) \ + ( ((__TRIGGER_SOURCE__) == LL_DAC_TRIG_SOFTWARE) \ + || ((__TRIGGER_SOURCE__) == LL_DAC_TRIG_EXT_TIM3_TRGO) \ + || ((__TRIGGER_SOURCE__) == LL_DAC_TRIG_EXT_TIM15_TRGO) \ + || ((__TRIGGER_SOURCE__) == LL_DAC_TRIG_EXT_TIM2_TRGO) \ + || ((__TRIGGER_SOURCE__) == LL_DAC_TRIG_EXT_TIM4_TRGO) \ + || ((__TRIGGER_SOURCE__) == LL_DAC_TRIG_EXT_TIM5_TRGO) \ + || ((__TRIGGER_SOURCE__) == LL_DAC_TRIG_EXT_TIM6_TRGO) \ + || ((__TRIGGER_SOURCE__) == LL_DAC_TRIG_EXT_TIM7_TRGO) \ + || ((__TRIGGER_SOURCE__) == LL_DAC_TRIG_EXT_TIM8_TRGO) \ + || ((__TRIGGER_SOURCE__) == LL_DAC_TRIG_EXT_EXTI_LINE9) \ + ) + +#define IS_LL_DAC_WAVE_AUTO_GENER_MODE(__WAVE_AUTO_GENERATION_MODE__) \ + ( ((__WAVE_AUTO_GENERATION_MODE__) == LL_DAC_WAVE_AUTO_GENERATION_NONE) \ + || ((__WAVE_AUTO_GENERATION_MODE__) == LL_DAC_WAVE_AUTO_GENERATION_NOISE) \ + || ((__WAVE_AUTO_GENERATION_MODE__) == LL_DAC_WAVE_AUTO_GENERATION_TRIANGLE) \ + ) + +#define IS_LL_DAC_WAVE_AUTO_GENER_CONFIG(__WAVE_AUTO_GENERATION_MODE__, __WAVE_AUTO_GENERATION_CONFIG__) \ + ( (((__WAVE_AUTO_GENERATION_MODE__) == LL_DAC_WAVE_AUTO_GENERATION_NOISE) \ + && ( ((__WAVE_AUTO_GENERATION_CONFIG__) == LL_DAC_NOISE_LFSR_UNMASK_BIT0) \ + || ((__WAVE_AUTO_GENERATION_CONFIG__) == LL_DAC_NOISE_LFSR_UNMASK_BITS1_0) \ + || ((__WAVE_AUTO_GENERATION_CONFIG__) == LL_DAC_NOISE_LFSR_UNMASK_BITS2_0) \ + || ((__WAVE_AUTO_GENERATION_CONFIG__) == LL_DAC_NOISE_LFSR_UNMASK_BITS3_0) \ + || ((__WAVE_AUTO_GENERATION_CONFIG__) == LL_DAC_NOISE_LFSR_UNMASK_BITS4_0) \ + || ((__WAVE_AUTO_GENERATION_CONFIG__) == LL_DAC_NOISE_LFSR_UNMASK_BITS5_0) \ + || ((__WAVE_AUTO_GENERATION_CONFIG__) == LL_DAC_NOISE_LFSR_UNMASK_BITS6_0) \ + || ((__WAVE_AUTO_GENERATION_CONFIG__) == LL_DAC_NOISE_LFSR_UNMASK_BITS7_0) \ + || ((__WAVE_AUTO_GENERATION_CONFIG__) == LL_DAC_NOISE_LFSR_UNMASK_BITS8_0) \ + || ((__WAVE_AUTO_GENERATION_CONFIG__) == LL_DAC_NOISE_LFSR_UNMASK_BITS9_0) \ + || ((__WAVE_AUTO_GENERATION_CONFIG__) == LL_DAC_NOISE_LFSR_UNMASK_BITS10_0) \ + || ((__WAVE_AUTO_GENERATION_CONFIG__) == LL_DAC_NOISE_LFSR_UNMASK_BITS11_0)) \ + ) \ + ||(((__WAVE_AUTO_GENERATION_MODE__) == LL_DAC_WAVE_AUTO_GENERATION_TRIANGLE) \ + && ( ((__WAVE_AUTO_GENERATION_CONFIG__) == LL_DAC_TRIANGLE_AMPLITUDE_1) \ + || ((__WAVE_AUTO_GENERATION_CONFIG__) == LL_DAC_TRIANGLE_AMPLITUDE_3) \ + || ((__WAVE_AUTO_GENERATION_CONFIG__) == LL_DAC_TRIANGLE_AMPLITUDE_7) \ + || ((__WAVE_AUTO_GENERATION_CONFIG__) == LL_DAC_TRIANGLE_AMPLITUDE_15) \ + || ((__WAVE_AUTO_GENERATION_CONFIG__) == LL_DAC_TRIANGLE_AMPLITUDE_31) \ + || ((__WAVE_AUTO_GENERATION_CONFIG__) == LL_DAC_TRIANGLE_AMPLITUDE_63) \ + || ((__WAVE_AUTO_GENERATION_CONFIG__) == LL_DAC_TRIANGLE_AMPLITUDE_127) \ + || ((__WAVE_AUTO_GENERATION_CONFIG__) == LL_DAC_TRIANGLE_AMPLITUDE_255) \ + || ((__WAVE_AUTO_GENERATION_CONFIG__) == LL_DAC_TRIANGLE_AMPLITUDE_511) \ + || ((__WAVE_AUTO_GENERATION_CONFIG__) == LL_DAC_TRIANGLE_AMPLITUDE_1023) \ + || ((__WAVE_AUTO_GENERATION_CONFIG__) == LL_DAC_TRIANGLE_AMPLITUDE_2047) \ + || ((__WAVE_AUTO_GENERATION_CONFIG__) == LL_DAC_TRIANGLE_AMPLITUDE_4095)) \ + ) \ + ) + +#define IS_LL_DAC_OUTPUT_BUFFER(__OUTPUT_BUFFER__) \ + ( ((__OUTPUT_BUFFER__) == LL_DAC_OUTPUT_BUFFER_ENABLE) \ + || ((__OUTPUT_BUFFER__) == LL_DAC_OUTPUT_BUFFER_DISABLE) \ + ) + +/** + * @} + */ + + +/* Private function prototypes -----------------------------------------------*/ + +/* Exported functions --------------------------------------------------------*/ +/** @addtogroup DAC_LL_Exported_Functions + * @{ + */ + +/** @addtogroup DAC_LL_EF_Init + * @{ + */ + +/** + * @brief De-initialize registers of the selected DAC instance + * to their default reset values. + * @param DACx DAC instance + * @retval An ErrorStatus enumeration value: + * - SUCCESS: DAC registers are de-initialized + * - ERROR: not applicable + */ +ErrorStatus LL_DAC_DeInit(DAC_TypeDef *DACx) +{ + /* Check the parameters */ + assert_param(IS_DAC_ALL_INSTANCE(DACx)); + + /* Force reset of DAC clock */ + LL_APB1_GRP1_ForceReset(LL_APB1_GRP1_PERIPH_DAC1); + + /* Release reset of DAC clock */ + LL_APB1_GRP1_ReleaseReset(LL_APB1_GRP1_PERIPH_DAC1); + + return SUCCESS; +} + +/** + * @brief Initialize some features of DAC channel. + * @note @ref LL_DAC_Init() aims to ease basic configuration of a DAC channel. + * Leaving it ready to be enabled and output: + * a level by calling one of + * @ref LL_DAC_ConvertData12RightAligned + * @ref LL_DAC_ConvertData12LeftAligned + * @ref LL_DAC_ConvertData8RightAligned + * or one of the supported autogenerated wave. + * @note This function allows configuration of: + * - Output mode + * - Trigger + * - Wave generation + * @note The setting of these parameters by function @ref LL_DAC_Init() + * is conditioned to DAC state: + * DAC channel must be disabled. + * @param DACx DAC instance + * @param DAC_Channel This parameter can be one of the following values: + * @arg @ref LL_DAC_CHANNEL_1 + * @arg @ref LL_DAC_CHANNEL_2 + * @param DAC_InitStruct Pointer to a @ref LL_DAC_InitTypeDef structure + * @retval An ErrorStatus enumeration value: + * - SUCCESS: DAC registers are initialized + * - ERROR: DAC registers are not initialized + */ +ErrorStatus LL_DAC_Init(DAC_TypeDef *DACx, uint32_t DAC_Channel, LL_DAC_InitTypeDef *DAC_InitStruct) +{ + ErrorStatus status = SUCCESS; + + /* Check the parameters */ + assert_param(IS_DAC_ALL_INSTANCE(DACx)); + assert_param(IS_LL_DAC_CHANNEL(DAC_Channel)); + assert_param(IS_LL_DAC_TRIGGER_SOURCE(DAC_InitStruct->TriggerSource)); + assert_param(IS_LL_DAC_OUTPUT_BUFFER(DAC_InitStruct->OutputBuffer)); + assert_param(IS_LL_DAC_WAVE_AUTO_GENER_MODE(DAC_InitStruct->WaveAutoGeneration)); + if (DAC_InitStruct->WaveAutoGeneration != LL_DAC_WAVE_AUTO_GENERATION_NONE) + { + assert_param(IS_LL_DAC_WAVE_AUTO_GENER_CONFIG(DAC_InitStruct->WaveAutoGeneration, + DAC_InitStruct->WaveAutoGenerationConfig)); + } + + /* Note: Hardware constraint (refer to description of this function) */ + /* DAC instance must be disabled. */ + if (LL_DAC_IsEnabled(DACx, DAC_Channel) == 0U) + { + /* Configuration of DAC channel: */ + /* - TriggerSource */ + /* - WaveAutoGeneration */ + /* - OutputBuffer */ + /* - OutputMode */ + if (DAC_InitStruct->WaveAutoGeneration != LL_DAC_WAVE_AUTO_GENERATION_NONE) + { + MODIFY_REG(DACx->CR, + (DAC_CR_TSEL1 + | DAC_CR_WAVE1 + | DAC_CR_MAMP1 + | DAC_CR_BOFF1 + ) << (DAC_Channel & DAC_CR_CHX_BITOFFSET_MASK) + , + (DAC_InitStruct->TriggerSource + | DAC_InitStruct->WaveAutoGeneration + | DAC_InitStruct->WaveAutoGenerationConfig + | DAC_InitStruct->OutputBuffer + ) << (DAC_Channel & DAC_CR_CHX_BITOFFSET_MASK) + ); + } + else + { + MODIFY_REG(DACx->CR, + (DAC_CR_TSEL1 + | DAC_CR_WAVE1 + | DAC_CR_BOFF1 + ) << (DAC_Channel & DAC_CR_CHX_BITOFFSET_MASK) + , + (DAC_InitStruct->TriggerSource + | LL_DAC_WAVE_AUTO_GENERATION_NONE + | DAC_InitStruct->OutputBuffer + ) << (DAC_Channel & DAC_CR_CHX_BITOFFSET_MASK) + ); + } + } + else + { + /* Initialization error: DAC instance is not disabled. */ + status = ERROR; + } + return status; +} + +/** + * @brief Set each @ref LL_DAC_InitTypeDef field to default value. + * @param DAC_InitStruct pointer to a @ref LL_DAC_InitTypeDef structure + * whose fields will be set to default values. + * @retval None + */ +void LL_DAC_StructInit(LL_DAC_InitTypeDef *DAC_InitStruct) +{ + /* Set DAC_InitStruct fields to default values */ + DAC_InitStruct->TriggerSource = LL_DAC_TRIG_SOFTWARE; + DAC_InitStruct->WaveAutoGeneration = LL_DAC_WAVE_AUTO_GENERATION_NONE; + /* Note: Parameter discarded if wave auto generation is disabled, */ + /* set anyway to its default value. */ + DAC_InitStruct->WaveAutoGenerationConfig = LL_DAC_NOISE_LFSR_UNMASK_BIT0; + DAC_InitStruct->OutputBuffer = LL_DAC_OUTPUT_BUFFER_ENABLE; +} + +/** + * @} + */ + +/** + * @} + */ + +/** + * @} + */ + +#endif /* DAC */ + +/** + * @} + */ + +#endif /* USE_FULL_LL_DRIVER */ + +/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/ diff --git a/LLDrivers/src/stm32f1xx_ll_dma.c b/LLDrivers/src/stm32f1xx_ll_dma.c new file mode 100644 index 0000000..5461480 --- /dev/null +++ b/LLDrivers/src/stm32f1xx_ll_dma.c @@ -0,0 +1,314 @@ +/** + ****************************************************************************** + * @file stm32f1xx_ll_dma.c + * @author MCD Application Team + * @brief DMA LL module driver. + ****************************************************************************** + * @attention + * + *

© Copyright (c) 2016 STMicroelectronics. + * All rights reserved.

+ * + * This software component is licensed by ST under BSD 3-Clause license, + * the "License"; You may not use this file except in compliance with the + * License. You may obtain a copy of the License at: + * opensource.org/licenses/BSD-3-Clause + * + ****************************************************************************** + */ + +#if defined(USE_FULL_LL_DRIVER) + +/* Includes ------------------------------------------------------------------*/ +#include "stm32f1xx_ll_dma.h" +#include "stm32f1xx_ll_bus.h" +#ifdef USE_FULL_ASSERT +#include "stm32_assert.h" +#else +#define assert_param(expr) ((void)0U) +#endif + +/** @addtogroup STM32F1xx_LL_Driver + * @{ + */ + +#if defined (DMA1) || defined (DMA2) + +/** @defgroup DMA_LL DMA + * @{ + */ + +/* Private types -------------------------------------------------------------*/ +/* Private variables ---------------------------------------------------------*/ +/* Private constants ---------------------------------------------------------*/ +/* Private macros ------------------------------------------------------------*/ +/** @addtogroup DMA_LL_Private_Macros + * @{ + */ +#define IS_LL_DMA_DIRECTION(__VALUE__) (((__VALUE__) == LL_DMA_DIRECTION_PERIPH_TO_MEMORY) || \ + ((__VALUE__) == LL_DMA_DIRECTION_MEMORY_TO_PERIPH) || \ + ((__VALUE__) == LL_DMA_DIRECTION_MEMORY_TO_MEMORY)) + +#define IS_LL_DMA_MODE(__VALUE__) (((__VALUE__) == LL_DMA_MODE_NORMAL) || \ + ((__VALUE__) == LL_DMA_MODE_CIRCULAR)) + +#define IS_LL_DMA_PERIPHINCMODE(__VALUE__) (((__VALUE__) == LL_DMA_PERIPH_INCREMENT) || \ + ((__VALUE__) == LL_DMA_PERIPH_NOINCREMENT)) + +#define IS_LL_DMA_MEMORYINCMODE(__VALUE__) (((__VALUE__) == LL_DMA_MEMORY_INCREMENT) || \ + ((__VALUE__) == LL_DMA_MEMORY_NOINCREMENT)) + +#define IS_LL_DMA_PERIPHDATASIZE(__VALUE__) (((__VALUE__) == LL_DMA_PDATAALIGN_BYTE) || \ + ((__VALUE__) == LL_DMA_PDATAALIGN_HALFWORD) || \ + ((__VALUE__) == LL_DMA_PDATAALIGN_WORD)) + +#define IS_LL_DMA_MEMORYDATASIZE(__VALUE__) (((__VALUE__) == LL_DMA_MDATAALIGN_BYTE) || \ + ((__VALUE__) == LL_DMA_MDATAALIGN_HALFWORD) || \ + ((__VALUE__) == LL_DMA_MDATAALIGN_WORD)) + +#define IS_LL_DMA_NBDATA(__VALUE__) ((__VALUE__) <= 0x0000FFFFU) + +#define IS_LL_DMA_PRIORITY(__VALUE__) (((__VALUE__) == LL_DMA_PRIORITY_LOW) || \ + ((__VALUE__) == LL_DMA_PRIORITY_MEDIUM) || \ + ((__VALUE__) == LL_DMA_PRIORITY_HIGH) || \ + ((__VALUE__) == LL_DMA_PRIORITY_VERYHIGH)) + +#if defined (DMA2) +#define IS_LL_DMA_ALL_CHANNEL_INSTANCE(INSTANCE, CHANNEL) ((((INSTANCE) == DMA1) && \ + (((CHANNEL) == LL_DMA_CHANNEL_1) || \ + ((CHANNEL) == LL_DMA_CHANNEL_2) || \ + ((CHANNEL) == LL_DMA_CHANNEL_3) || \ + ((CHANNEL) == LL_DMA_CHANNEL_4) || \ + ((CHANNEL) == LL_DMA_CHANNEL_5) || \ + ((CHANNEL) == LL_DMA_CHANNEL_6) || \ + ((CHANNEL) == LL_DMA_CHANNEL_7))) || \ + (((INSTANCE) == DMA2) && \ + (((CHANNEL) == LL_DMA_CHANNEL_1) || \ + ((CHANNEL) == LL_DMA_CHANNEL_2) || \ + ((CHANNEL) == LL_DMA_CHANNEL_3) || \ + ((CHANNEL) == LL_DMA_CHANNEL_4) || \ + ((CHANNEL) == LL_DMA_CHANNEL_5)))) +#else +#define IS_LL_DMA_ALL_CHANNEL_INSTANCE(INSTANCE, CHANNEL) ((((INSTANCE) == DMA1) && \ + (((CHANNEL) == LL_DMA_CHANNEL_1) || \ + ((CHANNEL) == LL_DMA_CHANNEL_2) || \ + ((CHANNEL) == LL_DMA_CHANNEL_3) || \ + ((CHANNEL) == LL_DMA_CHANNEL_4) || \ + ((CHANNEL) == LL_DMA_CHANNEL_5) || \ + ((CHANNEL) == LL_DMA_CHANNEL_6) || \ + ((CHANNEL) == LL_DMA_CHANNEL_7)))) +#endif +/** + * @} + */ + +/* Private function prototypes -----------------------------------------------*/ +/* Exported functions --------------------------------------------------------*/ +/** @addtogroup DMA_LL_Exported_Functions + * @{ + */ + +/** @addtogroup DMA_LL_EF_Init + * @{ + */ + +/** + * @brief De-initialize the DMA registers to their default reset values. + * @param DMAx DMAx Instance + * @param Channel This parameter can be one of the following values: + * @arg @ref LL_DMA_CHANNEL_1 + * @arg @ref LL_DMA_CHANNEL_2 + * @arg @ref LL_DMA_CHANNEL_3 + * @arg @ref LL_DMA_CHANNEL_4 + * @arg @ref LL_DMA_CHANNEL_5 + * @arg @ref LL_DMA_CHANNEL_6 + * @arg @ref LL_DMA_CHANNEL_7 + * @retval An ErrorStatus enumeration value: + * - SUCCESS: DMA registers are de-initialized + * - ERROR: DMA registers are not de-initialized + */ +uint32_t LL_DMA_DeInit(DMA_TypeDef *DMAx, uint32_t Channel) +{ + DMA_Channel_TypeDef *tmp = (DMA_Channel_TypeDef *)DMA1_Channel1; + ErrorStatus status = SUCCESS; + + /* Check the DMA Instance DMAx and Channel parameters*/ + assert_param(IS_LL_DMA_ALL_CHANNEL_INSTANCE(DMAx, Channel)); + + tmp = (DMA_Channel_TypeDef *)(__LL_DMA_GET_CHANNEL_INSTANCE(DMAx, Channel)); + + /* Disable the selected DMAx_Channely */ + CLEAR_BIT(tmp->CCR, DMA_CCR_EN); + + /* Reset DMAx_Channely control register */ + LL_DMA_WriteReg(tmp, CCR, 0U); + + /* Reset DMAx_Channely remaining bytes register */ + LL_DMA_WriteReg(tmp, CNDTR, 0U); + + /* Reset DMAx_Channely peripheral address register */ + LL_DMA_WriteReg(tmp, CPAR, 0U); + + /* Reset DMAx_Channely memory address register */ + LL_DMA_WriteReg(tmp, CMAR, 0U); + + if (Channel == LL_DMA_CHANNEL_1) + { + /* Reset interrupt pending bits for DMAx Channel1 */ + LL_DMA_ClearFlag_GI1(DMAx); + } + else if (Channel == LL_DMA_CHANNEL_2) + { + /* Reset interrupt pending bits for DMAx Channel2 */ + LL_DMA_ClearFlag_GI2(DMAx); + } + else if (Channel == LL_DMA_CHANNEL_3) + { + /* Reset interrupt pending bits for DMAx Channel3 */ + LL_DMA_ClearFlag_GI3(DMAx); + } + else if (Channel == LL_DMA_CHANNEL_4) + { + /* Reset interrupt pending bits for DMAx Channel4 */ + LL_DMA_ClearFlag_GI4(DMAx); + } + else if (Channel == LL_DMA_CHANNEL_5) + { + /* Reset interrupt pending bits for DMAx Channel5 */ + LL_DMA_ClearFlag_GI5(DMAx); + } + + else if (Channel == LL_DMA_CHANNEL_6) + { + /* Reset interrupt pending bits for DMAx Channel6 */ + LL_DMA_ClearFlag_GI6(DMAx); + } + else if (Channel == LL_DMA_CHANNEL_7) + { + /* Reset interrupt pending bits for DMAx Channel7 */ + LL_DMA_ClearFlag_GI7(DMAx); + } + else + { + status = ERROR; + } + + return status; +} + +/** + * @brief Initialize the DMA registers according to the specified parameters in DMA_InitStruct. + * @note To convert DMAx_Channely Instance to DMAx Instance and Channely, use helper macros : + * @arg @ref __LL_DMA_GET_INSTANCE + * @arg @ref __LL_DMA_GET_CHANNEL + * @param DMAx DMAx Instance + * @param Channel This parameter can be one of the following values: + * @arg @ref LL_DMA_CHANNEL_1 + * @arg @ref LL_DMA_CHANNEL_2 + * @arg @ref LL_DMA_CHANNEL_3 + * @arg @ref LL_DMA_CHANNEL_4 + * @arg @ref LL_DMA_CHANNEL_5 + * @arg @ref LL_DMA_CHANNEL_6 + * @arg @ref LL_DMA_CHANNEL_7 + * @param DMA_InitStruct pointer to a @ref LL_DMA_InitTypeDef structure. + * @retval An ErrorStatus enumeration value: + * - SUCCESS: DMA registers are initialized + * - ERROR: Not applicable + */ +uint32_t LL_DMA_Init(DMA_TypeDef *DMAx, uint32_t Channel, LL_DMA_InitTypeDef *DMA_InitStruct) +{ + /* Check the DMA Instance DMAx and Channel parameters*/ + assert_param(IS_LL_DMA_ALL_CHANNEL_INSTANCE(DMAx, Channel)); + + /* Check the DMA parameters from DMA_InitStruct */ + assert_param(IS_LL_DMA_DIRECTION(DMA_InitStruct->Direction)); + assert_param(IS_LL_DMA_MODE(DMA_InitStruct->Mode)); + assert_param(IS_LL_DMA_PERIPHINCMODE(DMA_InitStruct->PeriphOrM2MSrcIncMode)); + assert_param(IS_LL_DMA_MEMORYINCMODE(DMA_InitStruct->MemoryOrM2MDstIncMode)); + assert_param(IS_LL_DMA_PERIPHDATASIZE(DMA_InitStruct->PeriphOrM2MSrcDataSize)); + assert_param(IS_LL_DMA_MEMORYDATASIZE(DMA_InitStruct->MemoryOrM2MDstDataSize)); + assert_param(IS_LL_DMA_NBDATA(DMA_InitStruct->NbData)); + assert_param(IS_LL_DMA_PRIORITY(DMA_InitStruct->Priority)); + + /*---------------------------- DMAx CCR Configuration ------------------------ + * Configure DMAx_Channely: data transfer direction, data transfer mode, + * peripheral and memory increment mode, + * data size alignment and priority level with parameters : + * - Direction: DMA_CCR_DIR and DMA_CCR_MEM2MEM bits + * - Mode: DMA_CCR_CIRC bit + * - PeriphOrM2MSrcIncMode: DMA_CCR_PINC bit + * - MemoryOrM2MDstIncMode: DMA_CCR_MINC bit + * - PeriphOrM2MSrcDataSize: DMA_CCR_PSIZE[1:0] bits + * - MemoryOrM2MDstDataSize: DMA_CCR_MSIZE[1:0] bits + * - Priority: DMA_CCR_PL[1:0] bits + */ + LL_DMA_ConfigTransfer(DMAx, Channel, DMA_InitStruct->Direction | \ + DMA_InitStruct->Mode | \ + DMA_InitStruct->PeriphOrM2MSrcIncMode | \ + DMA_InitStruct->MemoryOrM2MDstIncMode | \ + DMA_InitStruct->PeriphOrM2MSrcDataSize | \ + DMA_InitStruct->MemoryOrM2MDstDataSize | \ + DMA_InitStruct->Priority); + + /*-------------------------- DMAx CMAR Configuration ------------------------- + * Configure the memory or destination base address with parameter : + * - MemoryOrM2MDstAddress: DMA_CMAR_MA[31:0] bits + */ + LL_DMA_SetMemoryAddress(DMAx, Channel, DMA_InitStruct->MemoryOrM2MDstAddress); + + /*-------------------------- DMAx CPAR Configuration ------------------------- + * Configure the peripheral or source base address with parameter : + * - PeriphOrM2MSrcAddress: DMA_CPAR_PA[31:0] bits + */ + LL_DMA_SetPeriphAddress(DMAx, Channel, DMA_InitStruct->PeriphOrM2MSrcAddress); + + /*--------------------------- DMAx CNDTR Configuration ----------------------- + * Configure the peripheral base address with parameter : + * - NbData: DMA_CNDTR_NDT[15:0] bits + */ + LL_DMA_SetDataLength(DMAx, Channel, DMA_InitStruct->NbData); + + return SUCCESS; +} + +/** + * @brief Set each @ref LL_DMA_InitTypeDef field to default value. + * @param DMA_InitStruct Pointer to a @ref LL_DMA_InitTypeDef structure. + * @retval None + */ +void LL_DMA_StructInit(LL_DMA_InitTypeDef *DMA_InitStruct) +{ + /* Set DMA_InitStruct fields to default values */ + DMA_InitStruct->PeriphOrM2MSrcAddress = 0x00000000U; + DMA_InitStruct->MemoryOrM2MDstAddress = 0x00000000U; + DMA_InitStruct->Direction = LL_DMA_DIRECTION_PERIPH_TO_MEMORY; + DMA_InitStruct->Mode = LL_DMA_MODE_NORMAL; + DMA_InitStruct->PeriphOrM2MSrcIncMode = LL_DMA_PERIPH_NOINCREMENT; + DMA_InitStruct->MemoryOrM2MDstIncMode = LL_DMA_MEMORY_NOINCREMENT; + DMA_InitStruct->PeriphOrM2MSrcDataSize = LL_DMA_PDATAALIGN_BYTE; + DMA_InitStruct->MemoryOrM2MDstDataSize = LL_DMA_MDATAALIGN_BYTE; + DMA_InitStruct->NbData = 0x00000000U; + DMA_InitStruct->Priority = LL_DMA_PRIORITY_LOW; +} + +/** + * @} + */ + +/** + * @} + */ + +/** + * @} + */ + +#endif /* DMA1 || DMA2 */ + +/** + * @} + */ + +#endif /* USE_FULL_LL_DRIVER */ + +/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/ diff --git a/LLDrivers/src/stm32f1xx_ll_exti.c b/LLDrivers/src/stm32f1xx_ll_exti.c new file mode 100644 index 0000000..38a4190 --- /dev/null +++ b/LLDrivers/src/stm32f1xx_ll_exti.c @@ -0,0 +1,215 @@ +/** + ****************************************************************************** + * @file stm32f1xx_ll_exti.c + * @author MCD Application Team + * @brief EXTI LL module driver. + ****************************************************************************** + * @attention + * + *

© Copyright (c) 2016 STMicroelectronics. + * All rights reserved.

+ * + * This software component is licensed by ST under BSD 3-Clause license, + * the "License"; You may not use this file except in compliance with the + * License. You may obtain a copy of the License at: + * opensource.org/licenses/BSD-3-Clause + * + ****************************************************************************** + */ + +#if defined(USE_FULL_LL_DRIVER) + +/* Includes ------------------------------------------------------------------*/ +#include "stm32f1xx_ll_exti.h" +#ifdef USE_FULL_ASSERT +#include "stm32_assert.h" +#else +#define assert_param(expr) ((void)0U) +#endif + +/** @addtogroup STM32F1xx_LL_Driver + * @{ + */ + +#if defined (EXTI) + +/** @defgroup EXTI_LL EXTI + * @{ + */ + +/* Private types -------------------------------------------------------------*/ +/* Private variables ---------------------------------------------------------*/ +/* Private constants ---------------------------------------------------------*/ +/* Private macros ------------------------------------------------------------*/ +/** @addtogroup EXTI_LL_Private_Macros + * @{ + */ + +#define IS_LL_EXTI_LINE_0_31(__VALUE__) (((__VALUE__) & ~LL_EXTI_LINE_ALL_0_31) == 0x00000000U) + +#define IS_LL_EXTI_MODE(__VALUE__) (((__VALUE__) == LL_EXTI_MODE_IT) \ + || ((__VALUE__) == LL_EXTI_MODE_EVENT) \ + || ((__VALUE__) == LL_EXTI_MODE_IT_EVENT)) + + +#define IS_LL_EXTI_TRIGGER(__VALUE__) (((__VALUE__) == LL_EXTI_TRIGGER_NONE) \ + || ((__VALUE__) == LL_EXTI_TRIGGER_RISING) \ + || ((__VALUE__) == LL_EXTI_TRIGGER_FALLING) \ + || ((__VALUE__) == LL_EXTI_TRIGGER_RISING_FALLING)) + +/** + * @} + */ + +/* Private function prototypes -----------------------------------------------*/ + +/* Exported functions --------------------------------------------------------*/ +/** @addtogroup EXTI_LL_Exported_Functions + * @{ + */ + +/** @addtogroup EXTI_LL_EF_Init + * @{ + */ + +/** + * @brief De-initialize the EXTI registers to their default reset values. + * @retval An ErrorStatus enumeration value: + * - SUCCESS: EXTI registers are de-initialized + * - ERROR: not applicable + */ +uint32_t LL_EXTI_DeInit(void) +{ + /* Interrupt mask register set to default reset values */ + LL_EXTI_WriteReg(IMR, 0x00000000U); + /* Event mask register set to default reset values */ + LL_EXTI_WriteReg(EMR, 0x00000000U); + /* Rising Trigger selection register set to default reset values */ + LL_EXTI_WriteReg(RTSR, 0x00000000U); + /* Falling Trigger selection register set to default reset values */ + LL_EXTI_WriteReg(FTSR, 0x00000000U); + /* Software interrupt event register set to default reset values */ + LL_EXTI_WriteReg(SWIER, 0x00000000U); + /* Pending register clear */ + LL_EXTI_WriteReg(PR, 0x000FFFFFU); + + return SUCCESS; +} + +/** + * @brief Initialize the EXTI registers according to the specified parameters in EXTI_InitStruct. + * @param EXTI_InitStruct pointer to a @ref LL_EXTI_InitTypeDef structure. + * @retval An ErrorStatus enumeration value: + * - SUCCESS: EXTI registers are initialized + * - ERROR: not applicable + */ +uint32_t LL_EXTI_Init(LL_EXTI_InitTypeDef *EXTI_InitStruct) +{ + ErrorStatus status = SUCCESS; + /* Check the parameters */ + assert_param(IS_LL_EXTI_LINE_0_31(EXTI_InitStruct->Line_0_31)); + assert_param(IS_FUNCTIONAL_STATE(EXTI_InitStruct->LineCommand)); + assert_param(IS_LL_EXTI_MODE(EXTI_InitStruct->Mode)); + + /* ENABLE LineCommand */ + if (EXTI_InitStruct->LineCommand != DISABLE) + { + assert_param(IS_LL_EXTI_TRIGGER(EXTI_InitStruct->Trigger)); + + /* Configure EXTI Lines in range from 0 to 31 */ + if (EXTI_InitStruct->Line_0_31 != LL_EXTI_LINE_NONE) + { + switch (EXTI_InitStruct->Mode) + { + case LL_EXTI_MODE_IT: + /* First Disable Event on provided Lines */ + LL_EXTI_DisableEvent_0_31(EXTI_InitStruct->Line_0_31); + /* Then Enable IT on provided Lines */ + LL_EXTI_EnableIT_0_31(EXTI_InitStruct->Line_0_31); + break; + case LL_EXTI_MODE_EVENT: + /* First Disable IT on provided Lines */ + LL_EXTI_DisableIT_0_31(EXTI_InitStruct->Line_0_31); + /* Then Enable Event on provided Lines */ + LL_EXTI_EnableEvent_0_31(EXTI_InitStruct->Line_0_31); + break; + case LL_EXTI_MODE_IT_EVENT: + /* Directly Enable IT & Event on provided Lines */ + LL_EXTI_EnableIT_0_31(EXTI_InitStruct->Line_0_31); + LL_EXTI_EnableEvent_0_31(EXTI_InitStruct->Line_0_31); + break; + default: + status = ERROR; + break; + } + if (EXTI_InitStruct->Trigger != LL_EXTI_TRIGGER_NONE) + { + switch (EXTI_InitStruct->Trigger) + { + case LL_EXTI_TRIGGER_RISING: + /* First Disable Falling Trigger on provided Lines */ + LL_EXTI_DisableFallingTrig_0_31(EXTI_InitStruct->Line_0_31); + /* Then Enable Rising Trigger on provided Lines */ + LL_EXTI_EnableRisingTrig_0_31(EXTI_InitStruct->Line_0_31); + break; + case LL_EXTI_TRIGGER_FALLING: + /* First Disable Rising Trigger on provided Lines */ + LL_EXTI_DisableRisingTrig_0_31(EXTI_InitStruct->Line_0_31); + /* Then Enable Falling Trigger on provided Lines */ + LL_EXTI_EnableFallingTrig_0_31(EXTI_InitStruct->Line_0_31); + break; + case LL_EXTI_TRIGGER_RISING_FALLING: + LL_EXTI_EnableRisingTrig_0_31(EXTI_InitStruct->Line_0_31); + LL_EXTI_EnableFallingTrig_0_31(EXTI_InitStruct->Line_0_31); + break; + default: + status = ERROR; + break; + } + } + } + } + /* DISABLE LineCommand */ + else + { + /* De-configure EXTI Lines in range from 0 to 31 */ + LL_EXTI_DisableIT_0_31(EXTI_InitStruct->Line_0_31); + LL_EXTI_DisableEvent_0_31(EXTI_InitStruct->Line_0_31); + } + return status; +} + +/** + * @brief Set each @ref LL_EXTI_InitTypeDef field to default value. + * @param EXTI_InitStruct Pointer to a @ref LL_EXTI_InitTypeDef structure. + * @retval None + */ +void LL_EXTI_StructInit(LL_EXTI_InitTypeDef *EXTI_InitStruct) +{ + EXTI_InitStruct->Line_0_31 = LL_EXTI_LINE_NONE; + EXTI_InitStruct->LineCommand = DISABLE; + EXTI_InitStruct->Mode = LL_EXTI_MODE_IT; + EXTI_InitStruct->Trigger = LL_EXTI_TRIGGER_FALLING; +} + +/** + * @} + */ + +/** + * @} + */ + +/** + * @} + */ + +#endif /* defined (EXTI) */ + +/** + * @} + */ + +#endif /* USE_FULL_LL_DRIVER */ + +/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/ diff --git a/LLDrivers/src/stm32f1xx_ll_fsmc.c b/LLDrivers/src/stm32f1xx_ll_fsmc.c new file mode 100644 index 0000000..ce5207e --- /dev/null +++ b/LLDrivers/src/stm32f1xx_ll_fsmc.c @@ -0,0 +1,985 @@ +/** + ****************************************************************************** + * @file stm32f1xx_ll_fsmc.c + * @author MCD Application Team + * @brief FSMC Low Layer HAL module driver. + * + * This file provides firmware functions to manage the following + * functionalities of the Flexible Memory Controller (FSMC) peripheral memories: + * + Initialization/de-initialization functions + * + Peripheral Control functions + * + Peripheral State functions + * + @verbatim + ============================================================================== + ##### FSMC peripheral features ##### + ============================================================================== + [..] The Flexible memory controller (FSMC) includes following memory controllers: + (+) The NOR/PSRAM memory controller + (+) The NAND/PC Card memory controller + + [..] The FSMC functional block makes the interface with synchronous and asynchronous static + memories and 16-bit PC memory cards. Its main purposes are: + (+) to translate AHB transactions into the appropriate external device protocol + (+) to meet the access time requirements of the external memory devices + + [..] All external memories share the addresses, data and control signals with the controller. + Each external device is accessed by means of a unique Chip Select. The FSMC performs + only one access at a time to an external device. + The main features of the FSMC controller are the following: + (+) Interface with static-memory mapped devices including: + (++) Static random access memory (SRAM) + (++) Read-only memory (ROM) + (++) NOR Flash memory/OneNAND Flash memory + (++) PSRAM (4 memory banks) + (++) 16-bit PC Card compatible devices + (++) Two banks of NAND Flash memory with ECC hardware to check up to 8 Kbytes of + data + (+) Independent Chip Select control for each memory bank + (+) Independent configuration for each memory bank + + @endverbatim + ****************************************************************************** + * @attention + * + *

© Copyright (c) 2016 STMicroelectronics. + * All rights reserved.

+ * + * This software component is licensed by ST under BSD 3-Clause license, + * the "License"; You may not use this file except in compliance with the + * License. You may obtain a copy of the License at: + * opensource.org/licenses/BSD-3-Clause + * + ****************************************************************************** + */ + +/* Includes ------------------------------------------------------------------*/ +#include "stm32f1xx_hal.h" + +/** @addtogroup STM32F1xx_HAL_Driver + * @{ + */ +#if (((defined HAL_NOR_MODULE_ENABLED || defined HAL_SRAM_MODULE_ENABLED)) || defined HAL_NAND_MODULE_ENABLED || defined HAL_PCCARD_MODULE_ENABLED ) + +/** @defgroup FSMC_LL FSMC Low Layer + * @brief FSMC driver modules + * @{ + */ + +/* Private typedef -----------------------------------------------------------*/ +/* Private define ------------------------------------------------------------*/ + +/** @defgroup FSMC_LL_Private_Constants FSMC Low Layer Private Constants + * @{ + */ + +/* ----------------------- FSMC registers bit mask --------------------------- */ + +#if defined FSMC_BANK1 +/* --- BCR Register ---*/ +/* BCR register clear mask */ + +/* --- BTR Register ---*/ +/* BTR register clear mask */ +#define BTR_CLEAR_MASK ((uint32_t)(FSMC_BTRx_ADDSET | FSMC_BTRx_ADDHLD |\ + FSMC_BTRx_DATAST | FSMC_BTRx_BUSTURN |\ + FSMC_BTRx_CLKDIV | FSMC_BTRx_DATLAT |\ + FSMC_BTRx_ACCMOD)) + +/* --- BWTR Register ---*/ +/* BWTR register clear mask */ +#if defined(FSMC_BWTRx_BUSTURN) +#define BWTR_CLEAR_MASK ((uint32_t)(FSMC_BWTRx_ADDSET | FSMC_BWTRx_ADDHLD |\ + FSMC_BWTRx_DATAST | FSMC_BWTRx_BUSTURN |\ + FSMC_BWTRx_ACCMOD)) +#else +#define BWTR_CLEAR_MASK ((uint32_t)(FSMC_BWTRx_ADDSET | FSMC_BWTRx_ADDHLD |\ + FSMC_BWTRx_DATAST | FSMC_BWTRx_ACCMOD)) +#endif /* FSMC_BWTRx_BUSTURN */ +#endif /* FSMC_BANK1 */ +#if defined(FSMC_BANK3) + +/* --- PCR Register ---*/ +/* PCR register clear mask */ +#define PCR_CLEAR_MASK ((uint32_t)(FSMC_PCRx_PWAITEN | FSMC_PCRx_PBKEN | \ + FSMC_PCRx_PTYP | FSMC_PCRx_PWID | \ + FSMC_PCRx_ECCEN | FSMC_PCRx_TCLR | \ + FSMC_PCRx_TAR | FSMC_PCRx_ECCPS)) +/* --- PMEM Register ---*/ +/* PMEM register clear mask */ +#define PMEM_CLEAR_MASK ((uint32_t)(FSMC_PMEMx_MEMSETx | FSMC_PMEMx_MEMWAITx |\ + FSMC_PMEMx_MEMHOLDx | FSMC_PMEMx_MEMHIZx)) + +/* --- PATT Register ---*/ +/* PATT register clear mask */ +#define PATT_CLEAR_MASK ((uint32_t)(FSMC_PATTx_ATTSETx | FSMC_PATTx_ATTWAITx |\ + FSMC_PATTx_ATTHOLDx | FSMC_PATTx_ATTHIZx)) + +#endif /* FSMC_BANK3 */ +#if defined(FSMC_BANK4) +/* --- PCR Register ---*/ +/* PCR register clear mask */ +#define PCR4_CLEAR_MASK ((uint32_t)(FSMC_PCR4_PWAITEN | FSMC_PCR4_PBKEN | \ + FSMC_PCR4_PTYP | FSMC_PCR4_PWID | \ + FSMC_PCR4_ECCEN | FSMC_PCR4_TCLR | \ + FSMC_PCR4_TAR | FSMC_PCR4_ECCPS)) +/* --- PMEM Register ---*/ +/* PMEM register clear mask */ +#define PMEM4_CLEAR_MASK ((uint32_t)(FSMC_PMEM4_MEMSET4 | FSMC_PMEM4_MEMWAIT4 |\ + FSMC_PMEM4_MEMHOLD4 | FSMC_PMEM4_MEMHIZ4)) + +/* --- PATT Register ---*/ +/* PATT register clear mask */ +#define PATT4_CLEAR_MASK ((uint32_t)(FSMC_PATT4_ATTSET4 | FSMC_PATT4_ATTWAIT4 |\ + FSMC_PATT4_ATTHOLD4 | FSMC_PATT4_ATTHIZ4)) + +/* --- PIO4 Register ---*/ +/* PIO4 register clear mask */ +#define PIO4_CLEAR_MASK ((uint32_t)(FSMC_PIO4_IOSET4 | FSMC_PIO4_IOWAIT4 | \ + FSMC_PIO4_IOHOLD4 | FSMC_PIO4_IOHIZ4)) + +#endif /* FSMC_BANK4 */ + +/** + * @} + */ + +/* Private macro -------------------------------------------------------------*/ +/* Private variables ---------------------------------------------------------*/ +/* Private function prototypes -----------------------------------------------*/ +/* Exported functions --------------------------------------------------------*/ + +/** @defgroup FSMC_LL_Exported_Functions FSMC Low Layer Exported Functions + * @{ + */ + +#if defined FSMC_BANK1 + +/** @defgroup FSMC_LL_Exported_Functions_NORSRAM FSMC Low Layer NOR SRAM Exported Functions + * @brief NORSRAM Controller functions + * + @verbatim + ============================================================================== + ##### How to use NORSRAM device driver ##### + ============================================================================== + + [..] + This driver contains a set of APIs to interface with the FSMC NORSRAM banks in order + to run the NORSRAM external devices. + + (+) FSMC NORSRAM bank reset using the function FSMC_NORSRAM_DeInit() + (+) FSMC NORSRAM bank control configuration using the function FSMC_NORSRAM_Init() + (+) FSMC NORSRAM bank timing configuration using the function FSMC_NORSRAM_Timing_Init() + (+) FSMC NORSRAM bank extended timing configuration using the function + FSMC_NORSRAM_Extended_Timing_Init() + (+) FSMC NORSRAM bank enable/disable write operation using the functions + FSMC_NORSRAM_WriteOperation_Enable()/FSMC_NORSRAM_WriteOperation_Disable() + +@endverbatim + * @{ + */ + +/** @defgroup FSMC_LL_NORSRAM_Exported_Functions_Group1 Initialization and de-initialization functions + * @brief Initialization and Configuration functions + * + @verbatim + ============================================================================== + ##### Initialization and de_initialization functions ##### + ============================================================================== + [..] + This section provides functions allowing to: + (+) Initialize and configure the FSMC NORSRAM interface + (+) De-initialize the FSMC NORSRAM interface + (+) Configure the FSMC clock and associated GPIOs + +@endverbatim + * @{ + */ + +/** + * @brief Initialize the FSMC_NORSRAM device according to the specified + * control parameters in the FSMC_NORSRAM_InitTypeDef + * @param Device Pointer to NORSRAM device instance + * @param Init Pointer to NORSRAM Initialization structure + * @retval HAL status + */ +HAL_StatusTypeDef FSMC_NORSRAM_Init(FSMC_NORSRAM_TypeDef *Device, FSMC_NORSRAM_InitTypeDef *Init) +{ + uint32_t flashaccess; + + /* Check the parameters */ + assert_param(IS_FSMC_NORSRAM_DEVICE(Device)); + assert_param(IS_FSMC_NORSRAM_BANK(Init->NSBank)); + assert_param(IS_FSMC_MUX(Init->DataAddressMux)); + assert_param(IS_FSMC_MEMORY(Init->MemoryType)); + assert_param(IS_FSMC_NORSRAM_MEMORY_WIDTH(Init->MemoryDataWidth)); + assert_param(IS_FSMC_BURSTMODE(Init->BurstAccessMode)); + assert_param(IS_FSMC_WAIT_POLARITY(Init->WaitSignalPolarity)); + assert_param(IS_FSMC_WRAP_MODE(Init->WrapMode)); + assert_param(IS_FSMC_WAIT_SIGNAL_ACTIVE(Init->WaitSignalActive)); + assert_param(IS_FSMC_WRITE_OPERATION(Init->WriteOperation)); + assert_param(IS_FSMC_WAITE_SIGNAL(Init->WaitSignal)); + assert_param(IS_FSMC_EXTENDED_MODE(Init->ExtendedMode)); + assert_param(IS_FSMC_ASYNWAIT(Init->AsynchronousWait)); + assert_param(IS_FSMC_WRITE_BURST(Init->WriteBurst)); + assert_param(IS_FSMC_PAGESIZE(Init->PageSize)); + + /* Disable NORSRAM Device */ + __FSMC_NORSRAM_DISABLE(Device, Init->NSBank); + + /* Set NORSRAM device control parameters */ + if (Init->MemoryType == FSMC_MEMORY_TYPE_NOR) + { + flashaccess = FSMC_NORSRAM_FLASH_ACCESS_ENABLE; + } + else + { + flashaccess = FSMC_NORSRAM_FLASH_ACCESS_DISABLE; + } + + MODIFY_REG(Device->BTCR[Init->NSBank], + (FSMC_BCRx_MBKEN | + FSMC_BCRx_MUXEN | + FSMC_BCRx_MTYP | + FSMC_BCRx_MWID | + FSMC_BCRx_FACCEN | + FSMC_BCRx_BURSTEN | + FSMC_BCRx_WAITPOL | + FSMC_BCRx_WRAPMOD | + FSMC_BCRx_WAITCFG | + FSMC_BCRx_WREN | + FSMC_BCRx_WAITEN | + FSMC_BCRx_EXTMOD | + FSMC_BCRx_ASYNCWAIT | + FSMC_BCRx_CBURSTRW | + 0x00070000U), /* CPSIZE to be defined in CMSIS file */ + (flashaccess | + Init->DataAddressMux | + Init->MemoryType | + Init->MemoryDataWidth | + Init->BurstAccessMode | + Init->WaitSignalPolarity | + Init->WrapMode | + Init->WaitSignalActive | + Init->WriteOperation | + Init->WaitSignal | + Init->ExtendedMode | + Init->AsynchronousWait | + Init->WriteBurst | + Init->PageSize)); + + + return HAL_OK; +} + +/** + * @brief DeInitialize the FSMC_NORSRAM peripheral + * @param Device Pointer to NORSRAM device instance + * @param ExDevice Pointer to NORSRAM extended mode device instance + * @param Bank NORSRAM bank number + * @retval HAL status + */ +HAL_StatusTypeDef FSMC_NORSRAM_DeInit(FSMC_NORSRAM_TypeDef *Device, FSMC_NORSRAM_EXTENDED_TypeDef *ExDevice, uint32_t Bank) +{ + /* Check the parameters */ + assert_param(IS_FSMC_NORSRAM_DEVICE(Device)); + assert_param(IS_FSMC_NORSRAM_EXTENDED_DEVICE(ExDevice)); + assert_param(IS_FSMC_NORSRAM_BANK(Bank)); + + /* Disable the FSMC_NORSRAM device */ + __FSMC_NORSRAM_DISABLE(Device, Bank); + + /* De-initialize the FSMC_NORSRAM device */ + /* FSMC_NORSRAM_BANK1 */ + if (Bank == FSMC_NORSRAM_BANK1) + { + Device->BTCR[Bank] = 0x000030DBU; + } + /* FSMC_NORSRAM_BANK2, FSMC_NORSRAM_BANK3 or FSMC_NORSRAM_BANK4 */ + else + { + Device->BTCR[Bank] = 0x000030D2U; + } + + Device->BTCR[Bank + 1U] = 0x0FFFFFFFU; + ExDevice->BWTR[Bank] = 0x0FFFFFFFU; + + return HAL_OK; +} + +/** + * @brief Initialize the FSMC_NORSRAM Timing according to the specified + * parameters in the FSMC_NORSRAM_TimingTypeDef + * @param Device Pointer to NORSRAM device instance + * @param Timing Pointer to NORSRAM Timing structure + * @param Bank NORSRAM bank number + * @retval HAL status + */ +HAL_StatusTypeDef FSMC_NORSRAM_Timing_Init(FSMC_NORSRAM_TypeDef *Device, FSMC_NORSRAM_TimingTypeDef *Timing, uint32_t Bank) +{ + + /* Check the parameters */ + assert_param(IS_FSMC_NORSRAM_DEVICE(Device)); + assert_param(IS_FSMC_ADDRESS_SETUP_TIME(Timing->AddressSetupTime)); + assert_param(IS_FSMC_ADDRESS_HOLD_TIME(Timing->AddressHoldTime)); + assert_param(IS_FSMC_DATASETUP_TIME(Timing->DataSetupTime)); + assert_param(IS_FSMC_TURNAROUND_TIME(Timing->BusTurnAroundDuration)); + assert_param(IS_FSMC_CLK_DIV(Timing->CLKDivision)); + assert_param(IS_FSMC_DATA_LATENCY(Timing->DataLatency)); + assert_param(IS_FSMC_ACCESS_MODE(Timing->AccessMode)); + assert_param(IS_FSMC_NORSRAM_BANK(Bank)); + + /* Set FSMC_NORSRAM device timing parameters */ + MODIFY_REG(Device->BTCR[Bank + 1U], BTR_CLEAR_MASK, (Timing->AddressSetupTime | + ((Timing->AddressHoldTime) << FSMC_BTRx_ADDHLD_Pos) | + ((Timing->DataSetupTime) << FSMC_BTRx_DATAST_Pos) | + ((Timing->BusTurnAroundDuration) << FSMC_BTRx_BUSTURN_Pos) | + (((Timing->CLKDivision) - 1U) << FSMC_BTRx_CLKDIV_Pos) | + (((Timing->DataLatency) - 2U) << FSMC_BTRx_DATLAT_Pos) | + (Timing->AccessMode))); + + return HAL_OK; +} + +/** + * @brief Initialize the FSMC_NORSRAM Extended mode Timing according to the specified + * parameters in the FSMC_NORSRAM_TimingTypeDef + * @param Device Pointer to NORSRAM device instance + * @param Timing Pointer to NORSRAM Timing structure + * @param Bank NORSRAM bank number + * @param ExtendedMode FSMC Extended Mode + * This parameter can be one of the following values: + * @arg FSMC_EXTENDED_MODE_DISABLE + * @arg FSMC_EXTENDED_MODE_ENABLE + * @retval HAL status + */ +HAL_StatusTypeDef FSMC_NORSRAM_Extended_Timing_Init(FSMC_NORSRAM_EXTENDED_TypeDef *Device, FSMC_NORSRAM_TimingTypeDef *Timing, uint32_t Bank, uint32_t ExtendedMode) +{ + /* Check the parameters */ + assert_param(IS_FSMC_EXTENDED_MODE(ExtendedMode)); + + /* Set NORSRAM device timing register for write configuration, if extended mode is used */ + if (ExtendedMode == FSMC_EXTENDED_MODE_ENABLE) + { + /* Check the parameters */ + assert_param(IS_FSMC_NORSRAM_EXTENDED_DEVICE(Device)); + assert_param(IS_FSMC_ADDRESS_SETUP_TIME(Timing->AddressSetupTime)); + assert_param(IS_FSMC_ADDRESS_HOLD_TIME(Timing->AddressHoldTime)); + assert_param(IS_FSMC_DATASETUP_TIME(Timing->DataSetupTime)); +#if defined(STM32F101xE) || defined(STM32F103xE) || defined(STM32F101xG) || defined(STM32F103xG) + assert_param(IS_FSMC_TURNAROUND_TIME(Timing->BusTurnAroundDuration)); +#else + assert_param(IS_FSMC_CLK_DIV(Timing->CLKDivision)); + assert_param(IS_FSMC_DATA_LATENCY(Timing->DataLatency)); +#endif /* STM32F101xE || STM32F103xE || STM32F101xG || STM32F103xG */ + assert_param(IS_FSMC_ACCESS_MODE(Timing->AccessMode)); + assert_param(IS_FSMC_NORSRAM_BANK(Bank)); + + /* Set NORSRAM device timing register for write configuration, if extended mode is used */ +#if defined(STM32F101xE) || defined(STM32F103xE) || defined(STM32F101xG) || defined(STM32F103xG) + MODIFY_REG(Device->BWTR[Bank], BWTR_CLEAR_MASK, (Timing->AddressSetupTime | + ((Timing->AddressHoldTime) << FSMC_BWTRx_ADDHLD_Pos) | + ((Timing->DataSetupTime) << FSMC_BWTRx_DATAST_Pos) | + Timing->AccessMode | + ((Timing->BusTurnAroundDuration) << FSMC_BWTRx_BUSTURN_Pos))); +#else + MODIFY_REG(Device->BWTR[Bank], BWTR_CLEAR_MASK, (Timing->AddressSetupTime | + ((Timing->AddressHoldTime) << FSMC_BWTRx_ADDHLD_Pos) | + ((Timing->DataSetupTime) << FSMC_BWTRx_DATAST_Pos) | + Timing->AccessMode | + (((Timing->CLKDivision) - 1U) << FSMC_BTRx_CLKDIV_Pos) | + (((Timing->DataLatency) - 2U) << FSMC_BWTRx_DATLAT_Pos))); +#endif /* STM32F101xE || STM32F103xE || STM32F101xG || STM32F103xG */ + } + else + { + Device->BWTR[Bank] = 0x0FFFFFFFU; + } + + return HAL_OK; +} +/** + * @} + */ + +/** @addtogroup FSMC_LL_NORSRAM_Private_Functions_Group2 + * @brief management functions + * +@verbatim + ============================================================================== + ##### FSMC_NORSRAM Control functions ##### + ============================================================================== + [..] + This subsection provides a set of functions allowing to control dynamically + the FSMC NORSRAM interface. + +@endverbatim + * @{ + */ + +/** + * @brief Enables dynamically FSMC_NORSRAM write operation. + * @param Device Pointer to NORSRAM device instance + * @param Bank NORSRAM bank number + * @retval HAL status + */ +HAL_StatusTypeDef FSMC_NORSRAM_WriteOperation_Enable(FSMC_NORSRAM_TypeDef *Device, uint32_t Bank) +{ + /* Check the parameters */ + assert_param(IS_FSMC_NORSRAM_DEVICE(Device)); + assert_param(IS_FSMC_NORSRAM_BANK(Bank)); + + /* Enable write operation */ + SET_BIT(Device->BTCR[Bank], FSMC_WRITE_OPERATION_ENABLE); + + return HAL_OK; +} + +/** + * @brief Disables dynamically FSMC_NORSRAM write operation. + * @param Device Pointer to NORSRAM device instance + * @param Bank NORSRAM bank number + * @retval HAL status + */ +HAL_StatusTypeDef FSMC_NORSRAM_WriteOperation_Disable(FSMC_NORSRAM_TypeDef *Device, uint32_t Bank) +{ + /* Check the parameters */ + assert_param(IS_FSMC_NORSRAM_DEVICE(Device)); + assert_param(IS_FSMC_NORSRAM_BANK(Bank)); + + /* Disable write operation */ + CLEAR_BIT(Device->BTCR[Bank], FSMC_WRITE_OPERATION_ENABLE); + + return HAL_OK; +} + +/** + * @} + */ + +/** + * @} + */ +#endif /* FSMC_BANK1 */ + +#if defined(FSMC_BANK3) + +/** @defgroup FSMC_LL_Exported_Functions_NAND FSMC Low Layer NAND Exported Functions + * @brief NAND Controller functions + * + @verbatim + ============================================================================== + ##### How to use NAND device driver ##### + ============================================================================== + [..] + This driver contains a set of APIs to interface with the FSMC NAND banks in order + to run the NAND external devices. + + (+) FSMC NAND bank reset using the function FSMC_NAND_DeInit() + (+) FSMC NAND bank control configuration using the function FSMC_NAND_Init() + (+) FSMC NAND bank common space timing configuration using the function + FSMC_NAND_CommonSpace_Timing_Init() + (+) FSMC NAND bank attribute space timing configuration using the function + FSMC_NAND_AttributeSpace_Timing_Init() + (+) FSMC NAND bank enable/disable ECC correction feature using the functions + FSMC_NAND_ECC_Enable()/FSMC_NAND_ECC_Disable() + (+) FSMC NAND bank get ECC correction code using the function FSMC_NAND_GetECC() + +@endverbatim + * @{ + */ + +/** @defgroup FSMC_LL_NAND_Exported_Functions_Group1 Initialization and de-initialization functions + * @brief Initialization and Configuration functions + * +@verbatim + ============================================================================== + ##### Initialization and de_initialization functions ##### + ============================================================================== + [..] + This section provides functions allowing to: + (+) Initialize and configure the FSMC NAND interface + (+) De-initialize the FSMC NAND interface + (+) Configure the FSMC clock and associated GPIOs + +@endverbatim + * @{ + */ + +/** + * @brief Initializes the FSMC_NAND device according to the specified + * control parameters in the FSMC_NAND_HandleTypeDef + * @param Device Pointer to NAND device instance + * @param Init Pointer to NAND Initialization structure + * @retval HAL status + */ +HAL_StatusTypeDef FSMC_NAND_Init(FSMC_NAND_TypeDef *Device, FSMC_NAND_InitTypeDef *Init) +{ + /* Check the parameters */ + assert_param(IS_FSMC_NAND_DEVICE(Device)); + assert_param(IS_FSMC_NAND_BANK(Init->NandBank)); + assert_param(IS_FSMC_WAIT_FEATURE(Init->Waitfeature)); + assert_param(IS_FSMC_NAND_MEMORY_WIDTH(Init->MemoryDataWidth)); + assert_param(IS_FSMC_ECC_STATE(Init->EccComputation)); + assert_param(IS_FSMC_ECCPAGE_SIZE(Init->ECCPageSize)); + assert_param(IS_FSMC_TCLR_TIME(Init->TCLRSetupTime)); + assert_param(IS_FSMC_TAR_TIME(Init->TARSetupTime)); + + /* Set NAND device control parameters */ + if (Init->NandBank == FSMC_NAND_BANK2) + { + /* NAND bank 2 registers configuration */ + MODIFY_REG(Device->PCR2, PCR_CLEAR_MASK, (Init->Waitfeature | + FSMC_PCR_MEMORY_TYPE_NAND | + Init->MemoryDataWidth | + Init->EccComputation | + Init->ECCPageSize | + ((Init->TCLRSetupTime) << FSMC_PCRx_TCLR_Pos) | + ((Init->TARSetupTime) << FSMC_PCRx_TAR_Pos))); + } + else + { + /* NAND bank 3 registers configuration */ + MODIFY_REG(Device->PCR3, PCR_CLEAR_MASK, (Init->Waitfeature | + FSMC_PCR_MEMORY_TYPE_NAND | + Init->MemoryDataWidth | + Init->EccComputation | + Init->ECCPageSize | + ((Init->TCLRSetupTime) << FSMC_PCRx_TCLR_Pos) | + ((Init->TARSetupTime) << FSMC_PCRx_TAR_Pos))); + } + + return HAL_OK; +} + +/** + * @brief Initializes the FSMC_NAND Common space Timing according to the specified + * parameters in the FSMC_NAND_PCC_TimingTypeDef + * @param Device Pointer to NAND device instance + * @param Timing Pointer to NAND timing structure + * @param Bank NAND bank number + * @retval HAL status + */ +HAL_StatusTypeDef FSMC_NAND_CommonSpace_Timing_Init(FSMC_NAND_TypeDef *Device, FSMC_NAND_PCC_TimingTypeDef *Timing, uint32_t Bank) +{ + /* Check the parameters */ + assert_param(IS_FSMC_NAND_DEVICE(Device)); + assert_param(IS_FSMC_SETUP_TIME(Timing->SetupTime)); + assert_param(IS_FSMC_WAIT_TIME(Timing->WaitSetupTime)); + assert_param(IS_FSMC_HOLD_TIME(Timing->HoldSetupTime)); + assert_param(IS_FSMC_HIZ_TIME(Timing->HiZSetupTime)); + assert_param(IS_FSMC_NAND_BANK(Bank)); + + /* Set FSMC_NAND device timing parameters */ + if (Bank == FSMC_NAND_BANK2) + { + /* NAND bank 2 registers configuration */ + MODIFY_REG(Device->PMEM2, PMEM_CLEAR_MASK, (Timing->SetupTime | + ((Timing->WaitSetupTime) << FSMC_PMEMx_MEMWAITx_Pos) | + ((Timing->HoldSetupTime) << FSMC_PMEMx_MEMHOLDx_Pos) | + ((Timing->HiZSetupTime) << FSMC_PMEMx_MEMHIZx_Pos))); + } + else + { + /* NAND bank 3 registers configuration */ + MODIFY_REG(Device->PMEM3, PMEM_CLEAR_MASK, (Timing->SetupTime | + ((Timing->WaitSetupTime) << FSMC_PMEMx_MEMWAITx_Pos) | + ((Timing->HoldSetupTime) << FSMC_PMEMx_MEMHOLDx_Pos) | + ((Timing->HiZSetupTime) << FSMC_PMEMx_MEMHIZx_Pos))); + } + + return HAL_OK; +} + +/** + * @brief Initializes the FSMC_NAND Attribute space Timing according to the specified + * parameters in the FSMC_NAND_PCC_TimingTypeDef + * @param Device Pointer to NAND device instance + * @param Timing Pointer to NAND timing structure + * @param Bank NAND bank number + * @retval HAL status + */ +HAL_StatusTypeDef FSMC_NAND_AttributeSpace_Timing_Init(FSMC_NAND_TypeDef *Device, FSMC_NAND_PCC_TimingTypeDef *Timing, uint32_t Bank) +{ + /* Check the parameters */ + assert_param(IS_FSMC_NAND_DEVICE(Device)); + assert_param(IS_FSMC_SETUP_TIME(Timing->SetupTime)); + assert_param(IS_FSMC_WAIT_TIME(Timing->WaitSetupTime)); + assert_param(IS_FSMC_HOLD_TIME(Timing->HoldSetupTime)); + assert_param(IS_FSMC_HIZ_TIME(Timing->HiZSetupTime)); + assert_param(IS_FSMC_NAND_BANK(Bank)); + + /* Set FSMC_NAND device timing parameters */ + if (Bank == FSMC_NAND_BANK2) + { + /* NAND bank 2 registers configuration */ + MODIFY_REG(Device->PATT2, PATT_CLEAR_MASK, (Timing->SetupTime | + ((Timing->WaitSetupTime) << FSMC_PATTx_ATTWAITx_Pos) | + ((Timing->HoldSetupTime) << FSMC_PATTx_ATTHOLDx_Pos) | + ((Timing->HiZSetupTime) << FSMC_PATTx_ATTHIZx_Pos))); + } + else + { + /* NAND bank 3 registers configuration */ + MODIFY_REG(Device->PATT3, PATT_CLEAR_MASK, (Timing->SetupTime | + ((Timing->WaitSetupTime) << FSMC_PATTx_ATTWAITx_Pos) | + ((Timing->HoldSetupTime) << FSMC_PATTx_ATTHOLDx_Pos) | + ((Timing->HiZSetupTime) << FSMC_PATTx_ATTHIZx_Pos))); + } + + return HAL_OK; +} + +/** + * @brief DeInitializes the FSMC_NAND device + * @param Device Pointer to NAND device instance + * @param Bank NAND bank number + * @retval HAL status + */ +HAL_StatusTypeDef FSMC_NAND_DeInit(FSMC_NAND_TypeDef *Device, uint32_t Bank) +{ + /* Check the parameters */ + assert_param(IS_FSMC_NAND_DEVICE(Device)); + assert_param(IS_FSMC_NAND_BANK(Bank)); + + /* Disable the NAND Bank */ + __FSMC_NAND_DISABLE(Device, Bank); + + /* De-initialize the NAND Bank */ + if (Bank == FSMC_NAND_BANK2) + { + /* Set the FSMC_NAND_BANK2 registers to their reset values */ + WRITE_REG(Device->PCR2, 0x00000018U); + WRITE_REG(Device->SR2, 0x00000040U); + WRITE_REG(Device->PMEM2, 0xFCFCFCFCU); + WRITE_REG(Device->PATT2, 0xFCFCFCFCU); + } + /* FSMC_Bank3_NAND */ + else + { + /* Set the FSMC_NAND_BANK3 registers to their reset values */ + WRITE_REG(Device->PCR3, 0x00000018U); + WRITE_REG(Device->SR3, 0x00000040U); + WRITE_REG(Device->PMEM3, 0xFCFCFCFCU); + WRITE_REG(Device->PATT3, 0xFCFCFCFCU); + } + + return HAL_OK; +} + +/** + * @} + */ + +/** @defgroup HAL_FSMC_NAND_Group2 Peripheral Control functions + * @brief management functions + * +@verbatim + ============================================================================== + ##### FSMC_NAND Control functions ##### + ============================================================================== + [..] + This subsection provides a set of functions allowing to control dynamically + the FSMC NAND interface. + +@endverbatim + * @{ + */ + + +/** + * @brief Enables dynamically FSMC_NAND ECC feature. + * @param Device Pointer to NAND device instance + * @param Bank NAND bank number + * @retval HAL status + */ +HAL_StatusTypeDef FSMC_NAND_ECC_Enable(FSMC_NAND_TypeDef *Device, uint32_t Bank) +{ + /* Check the parameters */ + assert_param(IS_FSMC_NAND_DEVICE(Device)); + assert_param(IS_FSMC_NAND_BANK(Bank)); + + /* Enable ECC feature */ + if (Bank == FSMC_NAND_BANK2) + { + SET_BIT(Device->PCR2, FSMC_PCRx_ECCEN); + } + else + { + SET_BIT(Device->PCR3, FSMC_PCRx_ECCEN); + } + + return HAL_OK; +} + + +/** + * @brief Disables dynamically FSMC_NAND ECC feature. + * @param Device Pointer to NAND device instance + * @param Bank NAND bank number + * @retval HAL status + */ +HAL_StatusTypeDef FSMC_NAND_ECC_Disable(FSMC_NAND_TypeDef *Device, uint32_t Bank) +{ + /* Check the parameters */ + assert_param(IS_FSMC_NAND_DEVICE(Device)); + assert_param(IS_FSMC_NAND_BANK(Bank)); + + /* Disable ECC feature */ + if (Bank == FSMC_NAND_BANK2) + { + CLEAR_BIT(Device->PCR2, FSMC_PCRx_ECCEN); + } + else + { + CLEAR_BIT(Device->PCR3, FSMC_PCRx_ECCEN); + } + + return HAL_OK; +} + +/** + * @brief Disables dynamically FSMC_NAND ECC feature. + * @param Device Pointer to NAND device instance + * @param ECCval Pointer to ECC value + * @param Bank NAND bank number + * @param Timeout Timeout wait value + * @retval HAL status + */ +HAL_StatusTypeDef FSMC_NAND_GetECC(FSMC_NAND_TypeDef *Device, uint32_t *ECCval, uint32_t Bank, uint32_t Timeout) +{ + uint32_t tickstart; + + /* Check the parameters */ + assert_param(IS_FSMC_NAND_DEVICE(Device)); + assert_param(IS_FSMC_NAND_BANK(Bank)); + + /* Get tick */ + tickstart = HAL_GetTick(); + + /* Wait until FIFO is empty */ + while (__FSMC_NAND_GET_FLAG(Device, Bank, FSMC_FLAG_FEMPT) == RESET) + { + /* Check for the Timeout */ + if (Timeout != HAL_MAX_DELAY) + { + if (((HAL_GetTick() - tickstart) > Timeout) || (Timeout == 0U)) + { + return HAL_TIMEOUT; + } + } + } + + if (Bank == FSMC_NAND_BANK2) + { + /* Get the ECCR2 register value */ + *ECCval = (uint32_t)Device->ECCR2; + } + else + { + /* Get the ECCR3 register value */ + *ECCval = (uint32_t)Device->ECCR3; + } + + return HAL_OK; +} + +/** + * @} + */ +#endif /* FSMC_BANK3 */ + +#if defined(FSMC_BANK4) + +/** @addtogroup FSMC_LL_PCCARD + * @brief PCCARD Controller functions + * + @verbatim + ============================================================================== + ##### How to use PCCARD device driver ##### + ============================================================================== + [..] + This driver contains a set of APIs to interface with the FSMC PCCARD bank in order + to run the PCCARD/compact flash external devices. + + (+) FSMC PCCARD bank reset using the function FSMC_PCCARD_DeInit() + (+) FSMC PCCARD bank control configuration using the function FSMC_PCCARD_Init() + (+) FSMC PCCARD bank common space timing configuration using the function + FSMC_PCCARD_CommonSpace_Timing_Init() + (+) FSMC PCCARD bank attribute space timing configuration using the function + FSMC_PCCARD_AttributeSpace_Timing_Init() + (+) FSMC PCCARD bank IO space timing configuration using the function + FSMC_PCCARD_IOSpace_Timing_Init() +@endverbatim + * @{ + */ + +/** @addtogroup FSMC_LL_PCCARD_Private_Functions_Group1 + * @brief Initialization and Configuration functions + * +@verbatim + ============================================================================== + ##### Initialization and de_initialization functions ##### + ============================================================================== + [..] + This section provides functions allowing to: + (+) Initialize and configure the FSMC PCCARD interface + (+) De-initialize the FSMC PCCARD interface + (+) Configure the FSMC clock and associated GPIOs + +@endverbatim + * @{ + */ + +/** + * @brief Initializes the FSMC_PCCARD device according to the specified + * control parameters in the FSMC_PCCARD_HandleTypeDef + * @param Device Pointer to PCCARD device instance + * @param Init Pointer to PCCARD Initialization structure + * @retval HAL status + */ +HAL_StatusTypeDef FSMC_PCCARD_Init(FSMC_PCCARD_TypeDef *Device, FSMC_PCCARD_InitTypeDef *Init) +{ + /* Check the parameters */ + assert_param(IS_FSMC_PCCARD_DEVICE(Device)); + assert_param(IS_FSMC_WAIT_FEATURE(Init->Waitfeature)); + assert_param(IS_FSMC_TCLR_TIME(Init->TCLRSetupTime)); + assert_param(IS_FSMC_TAR_TIME(Init->TARSetupTime)); + + /* Set FSMC_PCCARD device control parameters */ + MODIFY_REG(Device->PCR4, + (FSMC_PCRx_PTYP | + FSMC_PCRx_PWAITEN | + FSMC_PCRx_PWID | + FSMC_PCRx_TCLR | + FSMC_PCRx_TAR), + (FSMC_PCR_MEMORY_TYPE_PCCARD | + Init->Waitfeature | + FSMC_NAND_PCC_MEM_BUS_WIDTH_16 | + (Init->TCLRSetupTime << FSMC_PCRx_TCLR_Pos) | + (Init->TARSetupTime << FSMC_PCRx_TAR_Pos))); + + return HAL_OK; +} + +/** + * @brief Initializes the FSMC_PCCARD Common space Timing according to the specified + * parameters in the FSMC_NAND_PCC_TimingTypeDef + * @param Device Pointer to PCCARD device instance + * @param Timing Pointer to PCCARD timing structure + * @retval HAL status + */ +HAL_StatusTypeDef FSMC_PCCARD_CommonSpace_Timing_Init(FSMC_PCCARD_TypeDef *Device, FSMC_NAND_PCC_TimingTypeDef *Timing) +{ + /* Check the parameters */ + assert_param(IS_FSMC_PCCARD_DEVICE(Device)); + assert_param(IS_FSMC_SETUP_TIME(Timing->SetupTime)); + assert_param(IS_FSMC_WAIT_TIME(Timing->WaitSetupTime)); + assert_param(IS_FSMC_HOLD_TIME(Timing->HoldSetupTime)); + assert_param(IS_FSMC_HIZ_TIME(Timing->HiZSetupTime)); + + /* Set PCCARD timing parameters */ + MODIFY_REG(Device->PMEM4, PMEM_CLEAR_MASK, + (Timing->SetupTime | + ((Timing->WaitSetupTime) << FSMC_PMEMx_MEMWAITx_Pos) | + ((Timing->HoldSetupTime) << FSMC_PMEMx_MEMHOLDx_Pos) | + ((Timing->HiZSetupTime) << FSMC_PMEMx_MEMHIZx_Pos))); + + return HAL_OK; +} + +/** + * @brief Initializes the FSMC_PCCARD Attribute space Timing according to the specified + * parameters in the FSMC_NAND_PCC_TimingTypeDef + * @param Device Pointer to PCCARD device instance + * @param Timing Pointer to PCCARD timing structure + * @retval HAL status + */ +HAL_StatusTypeDef FSMC_PCCARD_AttributeSpace_Timing_Init(FSMC_PCCARD_TypeDef *Device, FSMC_NAND_PCC_TimingTypeDef *Timing) +{ + /* Check the parameters */ + assert_param(IS_FSMC_PCCARD_DEVICE(Device)); + assert_param(IS_FSMC_SETUP_TIME(Timing->SetupTime)); + assert_param(IS_FSMC_WAIT_TIME(Timing->WaitSetupTime)); + assert_param(IS_FSMC_HOLD_TIME(Timing->HoldSetupTime)); + assert_param(IS_FSMC_HIZ_TIME(Timing->HiZSetupTime)); + + /* Set PCCARD timing parameters */ + MODIFY_REG(Device->PATT4, PATT_CLEAR_MASK, + (Timing->SetupTime | + ((Timing->WaitSetupTime) << FSMC_PATTx_ATTWAITx_Pos) | + ((Timing->HoldSetupTime) << FSMC_PATTx_ATTHOLDx_Pos) | + ((Timing->HiZSetupTime) << FSMC_PATTx_ATTHIZx_Pos))); + + return HAL_OK; +} + +/** + * @brief Initializes the FSMC_PCCARD IO space Timing according to the specified + * parameters in the FSMC_NAND_PCC_TimingTypeDef + * @param Device Pointer to PCCARD device instance + * @param Timing Pointer to PCCARD timing structure + * @retval HAL status + */ +HAL_StatusTypeDef FSMC_PCCARD_IOSpace_Timing_Init(FSMC_PCCARD_TypeDef *Device, FSMC_NAND_PCC_TimingTypeDef *Timing) +{ + /* Check the parameters */ + assert_param(IS_FSMC_PCCARD_DEVICE(Device)); + assert_param(IS_FSMC_SETUP_TIME(Timing->SetupTime)); + assert_param(IS_FSMC_WAIT_TIME(Timing->WaitSetupTime)); + assert_param(IS_FSMC_HOLD_TIME(Timing->HoldSetupTime)); + assert_param(IS_FSMC_HIZ_TIME(Timing->HiZSetupTime)); + + /* Set FSMC_PCCARD device timing parameters */ + MODIFY_REG(Device->PIO4, PIO4_CLEAR_MASK, + (Timing->SetupTime | + (Timing->WaitSetupTime << FSMC_PIO4_IOWAIT4_Pos) | + (Timing->HoldSetupTime << FSMC_PIO4_IOHOLD4_Pos) | + (Timing->HiZSetupTime << FSMC_PIO4_IOHIZ4_Pos))); + + return HAL_OK; +} + +/** + * @brief DeInitializes the FSMC_PCCARD device + * @param Device Pointer to PCCARD device instance + * @retval HAL status + */ +HAL_StatusTypeDef FSMC_PCCARD_DeInit(FSMC_PCCARD_TypeDef *Device) +{ + /* Check the parameters */ + assert_param(IS_FSMC_PCCARD_DEVICE(Device)); + + /* Disable the FSMC_PCCARD device */ + __FSMC_PCCARD_DISABLE(Device); + + /* De-initialize the FSMC_PCCARD device */ + Device->PCR4 = 0x00000018U; + Device->SR4 = 0x00000040U; + Device->PMEM4 = 0xFCFCFCFCU; + Device->PATT4 = 0xFCFCFCFCU; + Device->PIO4 = 0xFCFCFCFCU; + + return HAL_OK; +} + +/** + * @} + */ +#endif /* FSMC_BANK4 */ + + +/** + * @} + */ + +/** + * @} + */ + +#endif /* HAL_NOR_MODULE_ENABLED */ +/** + * @} + */ + +/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/ diff --git a/LLDrivers/src/stm32f1xx_ll_gpio.c b/LLDrivers/src/stm32f1xx_ll_gpio.c new file mode 100644 index 0000000..fc00383 --- /dev/null +++ b/LLDrivers/src/stm32f1xx_ll_gpio.c @@ -0,0 +1,253 @@ +/** + ****************************************************************************** + * @file stm32f1xx_ll_gpio.c + * @author MCD Application Team + * @brief GPIO LL module driver. + ****************************************************************************** + * @attention + * + *

© Copyright (c) 2016 STMicroelectronics. + * All rights reserved.

+ * + * This software component is licensed by ST under BSD 3-Clause license, + * the "License"; You may not use this file except in compliance with the + * License. You may obtain a copy of the License at: + * opensource.org/licenses/BSD-3-Clause + * + ****************************************************************************** + */ + +#if defined(USE_FULL_LL_DRIVER) + +/* Includes ------------------------------------------------------------------*/ +#include "stm32f1xx_ll_gpio.h" +#include "stm32f1xx_ll_bus.h" +#ifdef USE_FULL_ASSERT +#include "stm32_assert.h" +#else +#define assert_param(expr) ((void)0U) +#endif + +/** @addtogroup STM32F1xx_LL_Driver + * @{ + */ + +#if defined (GPIOA) || defined (GPIOB) || defined (GPIOC) || defined (GPIOD) || defined (GPIOE) || defined (GPIOF) || defined (GPIOG) + +/** @addtogroup GPIO_LL + * @{ + */ + +/* Private types -------------------------------------------------------------*/ +/* Private variables ---------------------------------------------------------*/ +/* Private constants ---------------------------------------------------------*/ +/* Private macros ------------------------------------------------------------*/ +/** @addtogroup GPIO_LL_Private_Macros + * @{ + */ + +#define IS_LL_GPIO_PIN(__VALUE__) ((((__VALUE__) & LL_GPIO_PIN_ALL)!= 0u) &&\ + (((__VALUE__) & (~LL_GPIO_PIN_ALL))== 0u)) + +#define IS_LL_GPIO_MODE(__VALUE__) (((__VALUE__) == LL_GPIO_MODE_ANALOG) ||\ + ((__VALUE__) == LL_GPIO_MODE_FLOATING) ||\ + ((__VALUE__) == LL_GPIO_MODE_INPUT) ||\ + ((__VALUE__) == LL_GPIO_MODE_OUTPUT) ||\ + ((__VALUE__) == LL_GPIO_MODE_ALTERNATE)) + +#define IS_LL_GPIO_SPEED(__VALUE__) (((__VALUE__) == LL_GPIO_SPEED_FREQ_LOW) ||\ + ((__VALUE__) == LL_GPIO_SPEED_FREQ_MEDIUM) ||\ + ((__VALUE__) == LL_GPIO_SPEED_FREQ_HIGH)) + +#define IS_LL_GPIO_OUTPUT_TYPE(__VALUE__) (((__VALUE__) == LL_GPIO_OUTPUT_PUSHPULL) ||\ + ((__VALUE__) == LL_GPIO_OUTPUT_OPENDRAIN)) + +#define IS_LL_GPIO_PULL(__VALUE__) (((__VALUE__) == LL_GPIO_PULL_DOWN) ||\ + ((__VALUE__) == LL_GPIO_PULL_UP)) + +/** + * @} + */ + +/* Private function prototypes -----------------------------------------------*/ + +/* Exported functions --------------------------------------------------------*/ +/** @addtogroup GPIO_LL_Exported_Functions + * @{ + */ + +/** @addtogroup GPIO_LL_EF_Init + * @{ + */ + +/** + * @brief De-initialize GPIO registers (Registers restored to their default values). + * @param GPIOx GPIO Port + * @retval An ErrorStatus enumeration value: + * - SUCCESS: GPIO registers are de-initialized + * - ERROR: Wrong GPIO Port + */ +ErrorStatus LL_GPIO_DeInit(GPIO_TypeDef *GPIOx) +{ + ErrorStatus status = SUCCESS; + + /* Check the parameters */ + assert_param(IS_GPIO_ALL_INSTANCE(GPIOx)); + + /* Force and Release reset on clock of GPIOx Port */ + if (GPIOx == GPIOA) + { + LL_APB2_GRP1_ForceReset(LL_APB2_GRP1_PERIPH_GPIOA); + LL_APB2_GRP1_ReleaseReset(LL_APB2_GRP1_PERIPH_GPIOA); + } + else if (GPIOx == GPIOB) + { + LL_APB2_GRP1_ForceReset(LL_APB2_GRP1_PERIPH_GPIOB); + LL_APB2_GRP1_ReleaseReset(LL_APB2_GRP1_PERIPH_GPIOB); + } + else if (GPIOx == GPIOC) + { + LL_APB2_GRP1_ForceReset(LL_APB2_GRP1_PERIPH_GPIOC); + LL_APB2_GRP1_ReleaseReset(LL_APB2_GRP1_PERIPH_GPIOC); + } + else if (GPIOx == GPIOD) + { + LL_APB2_GRP1_ForceReset(LL_APB2_GRP1_PERIPH_GPIOD); + LL_APB2_GRP1_ReleaseReset(LL_APB2_GRP1_PERIPH_GPIOD); + } +#if defined(GPIOE) + else if (GPIOx == GPIOE) + { + LL_APB2_GRP1_ForceReset(LL_APB2_GRP1_PERIPH_GPIOE); + LL_APB2_GRP1_ReleaseReset(LL_APB2_GRP1_PERIPH_GPIOE); + } +#endif +#if defined(GPIOF) + else if (GPIOx == GPIOF) + { + LL_APB2_GRP1_ForceReset(LL_APB2_GRP1_PERIPH_GPIOF); + LL_APB2_GRP1_ReleaseReset(LL_APB2_GRP1_PERIPH_GPIOF); + } +#endif +#if defined(GPIOG) + else if (GPIOx == GPIOG) + { + LL_APB2_GRP1_ForceReset(LL_APB2_GRP1_PERIPH_GPIOG); + LL_APB2_GRP1_ReleaseReset(LL_APB2_GRP1_PERIPH_GPIOG); + } +#endif + else + { + status = ERROR; + } + + return (status); +} + +/** + * @brief Initialize GPIO registers according to the specified parameters in GPIO_InitStruct. + * @param GPIOx GPIO Port + * @param GPIO_InitStruct: pointer to a @ref LL_GPIO_InitTypeDef structure + * that contains the configuration information for the specified GPIO peripheral. + * @retval An ErrorStatus enumeration value: + * - SUCCESS: GPIO registers are initialized according to GPIO_InitStruct content + * - ERROR: Not applicable + */ +ErrorStatus LL_GPIO_Init(GPIO_TypeDef *GPIOx, LL_GPIO_InitTypeDef *GPIO_InitStruct) +{ + uint32_t pinmask; + uint32_t pinpos; + uint32_t currentpin; + + /* Check the parameters */ + assert_param(IS_GPIO_ALL_INSTANCE(GPIOx)); + assert_param(IS_LL_GPIO_PIN(GPIO_InitStruct->Pin)); + + /* ------------------------- Configure the port pins ---------------- */ + /* Initialize pinpos on first pin set */ + + pinmask = ((GPIO_InitStruct->Pin) << GPIO_PIN_MASK_POS) >> GPIO_PIN_NB; + pinpos = POSITION_VAL(pinmask); + + /* Configure the port pins */ + while ((pinmask >> pinpos) != 0u) + { + /* skip if bit is not set */ + if ((pinmask & (1u << pinpos)) != 0u) + { + /* Get current io position */ + if (pinpos < GPIO_PIN_MASK_POS) + { + currentpin = (0x00000101uL << pinpos); + } + else + { + currentpin = ((0x00010001u << (pinpos - GPIO_PIN_MASK_POS)) | 0x04000000u); + } + + /* Check Pin Mode and Pin Pull parameters */ + assert_param(IS_LL_GPIO_MODE(GPIO_InitStruct->Mode)); + assert_param(IS_LL_GPIO_PULL(GPIO_InitStruct->Pull)); + + /* Pin Mode configuration */ + LL_GPIO_SetPinMode(GPIOx, currentpin, GPIO_InitStruct->Mode); + + /* Pull-up Pull-down resistor configuration*/ + LL_GPIO_SetPinPull(GPIOx, currentpin, GPIO_InitStruct->Pull); + + if ((GPIO_InitStruct->Mode == LL_GPIO_MODE_OUTPUT) || (GPIO_InitStruct->Mode == LL_GPIO_MODE_ALTERNATE)) + { + /* Check speed and Output mode parameters */ + assert_param(IS_LL_GPIO_SPEED(GPIO_InitStruct->Speed)); + assert_param(IS_LL_GPIO_OUTPUT_TYPE(GPIO_InitStruct->OutputType)); + + /* Speed mode configuration */ + LL_GPIO_SetPinSpeed(GPIOx, currentpin, GPIO_InitStruct->Speed); + + /* Output mode configuration*/ + LL_GPIO_SetPinOutputType(GPIOx, currentpin, GPIO_InitStruct->OutputType); + } + } + pinpos++; + } + return (SUCCESS); +} + +/** + * @brief Set each @ref LL_GPIO_InitTypeDef field to default value. + * @param GPIO_InitStruct: pointer to a @ref LL_GPIO_InitTypeDef structure + * whose fields will be set to default values. + * @retval None + */ + +void LL_GPIO_StructInit(LL_GPIO_InitTypeDef *GPIO_InitStruct) +{ + /* Reset GPIO init structure parameters values */ + GPIO_InitStruct->Pin = LL_GPIO_PIN_ALL; + GPIO_InitStruct->Mode = LL_GPIO_MODE_FLOATING; + GPIO_InitStruct->Speed = LL_GPIO_SPEED_FREQ_LOW; + GPIO_InitStruct->OutputType = LL_GPIO_OUTPUT_OPENDRAIN; + GPIO_InitStruct->Pull = LL_GPIO_PULL_DOWN; +} + +/** + * @} + */ + +/** + * @} + */ + +/** + * @} + */ + +#endif /* defined (GPIOA) || defined (GPIOB) || defined (GPIOC) || defined (GPIOD) || defined (GPIOE) || defined (GPIOF) || defined (GPIOG) */ + +/** + * @} + */ + +#endif /* USE_FULL_LL_DRIVER */ + +/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/ diff --git a/LLDrivers/src/stm32f1xx_ll_i2c.c b/LLDrivers/src/stm32f1xx_ll_i2c.c new file mode 100644 index 0000000..c6f752e --- /dev/null +++ b/LLDrivers/src/stm32f1xx_ll_i2c.c @@ -0,0 +1,221 @@ +/** + ****************************************************************************** + * @file stm32f1xx_ll_i2c.c + * @author MCD Application Team + * @brief I2C LL module driver. + ****************************************************************************** + * @attention + * + *

© Copyright (c) 2016 STMicroelectronics. + * All rights reserved.

+ * + * This software component is licensed by ST under BSD 3-Clause license, + * the "License"; You may not use this file except in compliance with the + * License. You may obtain a copy of the License at: + * opensource.org/licenses/BSD-3-Clause + * + ****************************************************************************** + */ +#if defined(USE_FULL_LL_DRIVER) + +/* Includes ------------------------------------------------------------------*/ +#include "stm32f1xx_ll_i2c.h" +#include "stm32f1xx_ll_bus.h" +#include "stm32f1xx_ll_rcc.h" +#ifdef USE_FULL_ASSERT +#include "stm32_assert.h" +#else +#define assert_param(expr) ((void)0U) +#endif + +/** @addtogroup STM32F1xx_LL_Driver + * @{ + */ + +#if defined (I2C1) || defined (I2C2) + +/** @defgroup I2C_LL I2C + * @{ + */ + +/* Private types -------------------------------------------------------------*/ +/* Private variables ---------------------------------------------------------*/ +/* Private constants ---------------------------------------------------------*/ +/* Private macros ------------------------------------------------------------*/ +/** @addtogroup I2C_LL_Private_Macros + * @{ + */ + +#define IS_LL_I2C_PERIPHERAL_MODE(__VALUE__) (((__VALUE__) == LL_I2C_MODE_I2C) || \ + ((__VALUE__) == LL_I2C_MODE_SMBUS_HOST) || \ + ((__VALUE__) == LL_I2C_MODE_SMBUS_DEVICE) || \ + ((__VALUE__) == LL_I2C_MODE_SMBUS_DEVICE_ARP)) + +#define IS_LL_I2C_CLOCK_SPEED(__VALUE__) (((__VALUE__) > 0U) && ((__VALUE__) <= LL_I2C_MAX_SPEED_FAST)) + +#define IS_LL_I2C_DUTY_CYCLE(__VALUE__) (((__VALUE__) == LL_I2C_DUTYCYCLE_2) || \ + ((__VALUE__) == LL_I2C_DUTYCYCLE_16_9)) + +#define IS_LL_I2C_OWN_ADDRESS1(__VALUE__) ((__VALUE__) <= 0x000003FFU) + +#define IS_LL_I2C_TYPE_ACKNOWLEDGE(__VALUE__) (((__VALUE__) == LL_I2C_ACK) || \ + ((__VALUE__) == LL_I2C_NACK)) + +#define IS_LL_I2C_OWN_ADDRSIZE(__VALUE__) (((__VALUE__) == LL_I2C_OWNADDRESS1_7BIT) || \ + ((__VALUE__) == LL_I2C_OWNADDRESS1_10BIT)) +/** + * @} + */ + +/* Private function prototypes -----------------------------------------------*/ + +/* Exported functions --------------------------------------------------------*/ +/** @addtogroup I2C_LL_Exported_Functions + * @{ + */ + +/** @addtogroup I2C_LL_EF_Init + * @{ + */ + +/** + * @brief De-initialize the I2C registers to their default reset values. + * @param I2Cx I2C Instance. + * @retval An ErrorStatus enumeration value: + * - SUCCESS I2C registers are de-initialized + * - ERROR I2C registers are not de-initialized + */ +uint32_t LL_I2C_DeInit(I2C_TypeDef *I2Cx) +{ + ErrorStatus status = SUCCESS; + + /* Check the I2C Instance I2Cx */ + assert_param(IS_I2C_ALL_INSTANCE(I2Cx)); + + if (I2Cx == I2C1) + { + /* Force reset of I2C clock */ + LL_APB1_GRP1_ForceReset(LL_APB1_GRP1_PERIPH_I2C1); + + /* Release reset of I2C clock */ + LL_APB1_GRP1_ReleaseReset(LL_APB1_GRP1_PERIPH_I2C1); + } +#if defined(I2C2) + else if (I2Cx == I2C2) + { + /* Force reset of I2C clock */ + LL_APB1_GRP1_ForceReset(LL_APB1_GRP1_PERIPH_I2C2); + + /* Release reset of I2C clock */ + LL_APB1_GRP1_ReleaseReset(LL_APB1_GRP1_PERIPH_I2C2); + + } +#endif /* I2C2 */ + else + { + status = ERROR; + } + + return status; +} + +/** + * @brief Initialize the I2C registers according to the specified parameters in I2C_InitStruct. + * @param I2Cx I2C Instance. + * @param I2C_InitStruct pointer to a @ref LL_I2C_InitTypeDef structure. + * @retval An ErrorStatus enumeration value: + * - SUCCESS I2C registers are initialized + * - ERROR Not applicable + */ +uint32_t LL_I2C_Init(I2C_TypeDef *I2Cx, LL_I2C_InitTypeDef *I2C_InitStruct) +{ + LL_RCC_ClocksTypeDef rcc_clocks; + + /* Check the I2C Instance I2Cx */ + assert_param(IS_I2C_ALL_INSTANCE(I2Cx)); + + /* Check the I2C parameters from I2C_InitStruct */ + assert_param(IS_LL_I2C_PERIPHERAL_MODE(I2C_InitStruct->PeripheralMode)); + assert_param(IS_LL_I2C_CLOCK_SPEED(I2C_InitStruct->ClockSpeed)); + assert_param(IS_LL_I2C_DUTY_CYCLE(I2C_InitStruct->DutyCycle)); + assert_param(IS_LL_I2C_OWN_ADDRESS1(I2C_InitStruct->OwnAddress1)); + assert_param(IS_LL_I2C_TYPE_ACKNOWLEDGE(I2C_InitStruct->TypeAcknowledge)); + assert_param(IS_LL_I2C_OWN_ADDRSIZE(I2C_InitStruct->OwnAddrSize)); + + /* Disable the selected I2Cx Peripheral */ + LL_I2C_Disable(I2Cx); + + /* Retrieve Clock frequencies */ + LL_RCC_GetSystemClocksFreq(&rcc_clocks); + + /*---------------------------- I2Cx SCL Clock Speed Configuration ------------ + * Configure the SCL speed : + * - ClockSpeed: I2C_CR2_FREQ[5:0], I2C_TRISE_TRISE[5:0], I2C_CCR_FS, + * and I2C_CCR_CCR[11:0] bits + * - DutyCycle: I2C_CCR_DUTY[7:0] bits + */ + LL_I2C_ConfigSpeed(I2Cx, rcc_clocks.PCLK1_Frequency, I2C_InitStruct->ClockSpeed, I2C_InitStruct->DutyCycle); + + /*---------------------------- I2Cx OAR1 Configuration ----------------------- + * Disable, Configure and Enable I2Cx device own address 1 with parameters : + * - OwnAddress1: I2C_OAR1_ADD[9:8], I2C_OAR1_ADD[7:1] and I2C_OAR1_ADD0 bits + * - OwnAddrSize: I2C_OAR1_ADDMODE bit + */ + LL_I2C_SetOwnAddress1(I2Cx, I2C_InitStruct->OwnAddress1, I2C_InitStruct->OwnAddrSize); + + /*---------------------------- I2Cx MODE Configuration ----------------------- + * Configure I2Cx peripheral mode with parameter : + * - PeripheralMode: I2C_CR1_SMBUS, I2C_CR1_SMBTYPE and I2C_CR1_ENARP bits + */ + LL_I2C_SetMode(I2Cx, I2C_InitStruct->PeripheralMode); + + /* Enable the selected I2Cx Peripheral */ + LL_I2C_Enable(I2Cx); + + /*---------------------------- I2Cx CR2 Configuration ------------------------ + * Configure the ACKnowledge or Non ACKnowledge condition + * after the address receive match code or next received byte with parameter : + * - TypeAcknowledge: I2C_CR2_NACK bit + */ + LL_I2C_AcknowledgeNextData(I2Cx, I2C_InitStruct->TypeAcknowledge); + + return SUCCESS; +} + +/** + * @brief Set each @ref LL_I2C_InitTypeDef field to default value. + * @param I2C_InitStruct Pointer to a @ref LL_I2C_InitTypeDef structure. + * @retval None + */ +void LL_I2C_StructInit(LL_I2C_InitTypeDef *I2C_InitStruct) +{ + /* Set I2C_InitStruct fields to default values */ + I2C_InitStruct->PeripheralMode = LL_I2C_MODE_I2C; + I2C_InitStruct->ClockSpeed = 5000U; + I2C_InitStruct->DutyCycle = LL_I2C_DUTYCYCLE_2; + I2C_InitStruct->OwnAddress1 = 0U; + I2C_InitStruct->TypeAcknowledge = LL_I2C_NACK; + I2C_InitStruct->OwnAddrSize = LL_I2C_OWNADDRESS1_7BIT; +} + +/** + * @} + */ + +/** + * @} + */ + +/** + * @} + */ + +#endif /* I2C1 || I2C2 */ + +/** + * @} + */ + +#endif /* USE_FULL_LL_DRIVER */ + +/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/ diff --git a/LLDrivers/src/stm32f1xx_ll_pwr.c b/LLDrivers/src/stm32f1xx_ll_pwr.c new file mode 100644 index 0000000..7b1da20 --- /dev/null +++ b/LLDrivers/src/stm32f1xx_ll_pwr.c @@ -0,0 +1,86 @@ +/** + ****************************************************************************** + * @file stm32f1xx_ll_pwr.c + * @author MCD Application Team + * @brief PWR LL module driver. + ****************************************************************************** + * @attention + * + *

© Copyright (c) 2016 STMicroelectronics. + * All rights reserved.

+ * + * This software component is licensed by ST under BSD 3-Clause license, + * the "License"; You may not use this file except in compliance with the + * License. You may obtain a copy of the License at: + * opensource.org/licenses/BSD-3-Clause + * + ****************************************************************************** + */ + +#if defined(USE_FULL_LL_DRIVER) + +/* Includes ------------------------------------------------------------------*/ +#include "stm32f1xx_ll_pwr.h" +#include "stm32f1xx_ll_bus.h" + +/** @addtogroup STM32F1xx_LL_Driver + * @{ + */ + +#if defined(PWR) + +/** @defgroup PWR_LL PWR + * @{ + */ + +/* Private types -------------------------------------------------------------*/ +/* Private variables ---------------------------------------------------------*/ +/* Private constants ---------------------------------------------------------*/ +/* Private macros ------------------------------------------------------------*/ +/* Private function prototypes -----------------------------------------------*/ + +/* Exported functions --------------------------------------------------------*/ +/** @addtogroup PWR_LL_Exported_Functions + * @{ + */ + +/** @addtogroup PWR_LL_EF_Init + * @{ + */ + +/** + * @brief De-initialize the PWR registers to their default reset values. + * @retval An ErrorStatus enumeration value: + * - SUCCESS: PWR registers are de-initialized + * - ERROR: not applicable + */ +ErrorStatus LL_PWR_DeInit(void) +{ + /* Force reset of PWR clock */ + LL_APB1_GRP1_ForceReset(LL_APB1_GRP1_PERIPH_PWR); + + /* Release reset of PWR clock */ + LL_APB1_GRP1_ReleaseReset(LL_APB1_GRP1_PERIPH_PWR); + + return SUCCESS; +} + +/** + * @} + */ + +/** + * @} + */ + +/** + * @} + */ +#endif /* defined(PWR) */ +/** + * @} + */ + +#endif /* USE_FULL_LL_DRIVER */ + +/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/ diff --git a/LLDrivers/src/stm32f1xx_ll_rtc.c b/LLDrivers/src/stm32f1xx_ll_rtc.c new file mode 100644 index 0000000..0f3ba21 --- /dev/null +++ b/LLDrivers/src/stm32f1xx_ll_rtc.c @@ -0,0 +1,544 @@ +/** + ****************************************************************************** + * @file stm32f1xx_ll_rtc.c + * @author MCD Application Team + * @brief RTC LL module driver. + ****************************************************************************** + * @attention + * + *

© Copyright (c) 2016 STMicroelectronics. + * All rights reserved.

+ * + * This software component is licensed by ST under BSD 3-Clause license, + * the "License"; You may not use this file except in compliance with the + * License. You may obtain a copy of the License at: + * opensource.org/licenses/BSD-3-Clause + * + ****************************************************************************** + */ + +#if defined(USE_FULL_LL_DRIVER) + +/* Includes ------------------------------------------------------------------*/ +#include "stm32f1xx_ll_rtc.h" +#include "stm32f1xx_ll_cortex.h" +#ifdef USE_FULL_ASSERT +#include "stm32_assert.h" +#else +#define assert_param(expr) ((void)0U) +#endif + +/** @addtogroup STM32F1xx_LL_Driver + * @{ + */ + +#if defined(RTC) + +/** @addtogroup RTC_LL + * @{ + */ + +/* Private types -------------------------------------------------------------*/ +/* Private variables ---------------------------------------------------------*/ +/* Private constants ---------------------------------------------------------*/ +/** @addtogroup RTC_LL_Private_Constants + * @{ + */ +/* Default values used for prescaler */ +#define RTC_ASYNCH_PRESC_DEFAULT 0x00007FFFU + +/* Values used for timeout */ +#define RTC_INITMODE_TIMEOUT 1000U /* 1s when tick set to 1ms */ +#define RTC_SYNCHRO_TIMEOUT 1000U /* 1s when tick set to 1ms */ +/** + * @} + */ + +/* Private macros ------------------------------------------------------------*/ +/** @addtogroup RTC_LL_Private_Macros + * @{ + */ + +#define IS_LL_RTC_ASYNCH_PREDIV(__VALUE__) ((__VALUE__) <= 0xFFFFFU) + +#define IS_LL_RTC_FORMAT(__VALUE__) (((__VALUE__) == LL_RTC_FORMAT_BIN) \ + || ((__VALUE__) == LL_RTC_FORMAT_BCD)) + +#define IS_LL_RTC_HOUR24(__HOUR__) ((__HOUR__) <= 23U) +#define IS_LL_RTC_MINUTES(__MINUTES__) ((__MINUTES__) <= 59U) +#define IS_LL_RTC_SECONDS(__SECONDS__) ((__SECONDS__) <= 59U) +#define IS_LL_RTC_CALIB_OUTPUT(__OUTPUT__) (((__OUTPUT__) == LL_RTC_CALIB_OUTPUT_NONE) || \ + ((__OUTPUT__) == LL_RTC_CALIB_OUTPUT_RTCCLOCK) || \ + ((__OUTPUT__) == LL_RTC_CALIB_OUTPUT_ALARM) || \ + ((__OUTPUT__) == LL_RTC_CALIB_OUTPUT_SECOND)) +/** + * @} + */ +/* Private function prototypes -----------------------------------------------*/ +/* Exported functions --------------------------------------------------------*/ +/** @addtogroup RTC_LL_Exported_Functions + * @{ + */ + +/** @addtogroup RTC_LL_EF_Init + * @{ + */ + +/** + * @brief De-Initializes the RTC registers to their default reset values. + * @note This function doesn't reset the RTC Clock source and RTC Backup Data + * registers. + * @param RTCx RTC Instance + * @retval An ErrorStatus enumeration value: + * - SUCCESS: RTC registers are de-initialized + * - ERROR: RTC registers are not de-initialized + */ +ErrorStatus LL_RTC_DeInit(RTC_TypeDef *RTCx) +{ + ErrorStatus status = ERROR; + + /* Check the parameter */ + assert_param(IS_RTC_ALL_INSTANCE(RTCx)); + + /* Disable the write protection for RTC registers */ + LL_RTC_DisableWriteProtection(RTCx); + + /* Set Initialization mode */ + if (LL_RTC_EnterInitMode(RTCx) != ERROR) + { + LL_RTC_WriteReg(RTCx, CNTL, 0x0000); + LL_RTC_WriteReg(RTCx, CNTH, 0x0000); + LL_RTC_WriteReg(RTCx, PRLH, 0x0000); + LL_RTC_WriteReg(RTCx, PRLL, 0x8000); + LL_RTC_WriteReg(RTCx, CRH, 0x0000); + LL_RTC_WriteReg(RTCx, CRL, 0x0020); + + /* Reset Tamper and alternate functions configuration register */ + LL_RTC_WriteReg(BKP, RTCCR, 0x00000000U); + LL_RTC_WriteReg(BKP, CR, 0x00000000U); + LL_RTC_WriteReg(BKP, CSR, 0x00000000U); + + /* Exit Initialization Mode */ + if (LL_RTC_ExitInitMode(RTCx) != ERROR) + { + /* Wait till the RTC RSF flag is set */ + status = LL_RTC_WaitForSynchro(RTCx); + + /* Clear RSF Flag */ + LL_RTC_ClearFlag_RS(RTCx); + + /* Enable the write protection for RTC registers */ + LL_RTC_EnableWriteProtection(RTCx); + } + } + else + { + /* Enable the write protection for RTC registers */ + LL_RTC_EnableWriteProtection(RTCx); + } + + return status; +} + +/** + * @brief Initializes the RTC registers according to the specified parameters + * in RTC_InitStruct. + * @param RTCx RTC Instance + * @param RTC_InitStruct pointer to a @ref LL_RTC_InitTypeDef structure that contains + * the configuration information for the RTC peripheral. + * @note The RTC Prescaler register is write protected and can be written in + * initialization mode only. + * @note the user should call LL_RTC_StructInit() or the structure of Prescaler + * need to be initialized before RTC init() + * @retval An ErrorStatus enumeration value: + * - SUCCESS: RTC registers are initialized + * - ERROR: RTC registers are not initialized + */ +ErrorStatus LL_RTC_Init(RTC_TypeDef *RTCx, LL_RTC_InitTypeDef *RTC_InitStruct) +{ + ErrorStatus status = ERROR; + + /* Check the parameters */ + assert_param(IS_RTC_ALL_INSTANCE(RTCx)); + assert_param(IS_LL_RTC_ASYNCH_PREDIV(RTC_InitStruct->AsynchPrescaler)); + assert_param(IS_LL_RTC_CALIB_OUTPUT(RTC_InitStruct->OutPutSource)); + /* Waiting for synchro */ + if (LL_RTC_WaitForSynchro(RTCx) != ERROR) + { + /* Set Initialization mode */ + if (LL_RTC_EnterInitMode(RTCx) != ERROR) + { + /* Clear Flag Bits */ + LL_RTC_ClearFlag_ALR(RTCx); + LL_RTC_ClearFlag_OW(RTCx); + LL_RTC_ClearFlag_SEC(RTCx); + + if (RTC_InitStruct->OutPutSource != LL_RTC_CALIB_OUTPUT_NONE) + { + /* Disable the selected Tamper Pin */ + LL_RTC_TAMPER_Disable(BKP); + } + /* Set the signal which will be routed to RTC Tamper Pin */ + LL_RTC_SetOutputSource(BKP, RTC_InitStruct->OutPutSource); + + /* Configure Synchronous and Asynchronous prescaler factor */ + LL_RTC_SetAsynchPrescaler(RTCx, RTC_InitStruct->AsynchPrescaler); + + /* Exit Initialization Mode */ + LL_RTC_ExitInitMode(RTCx); + + status = SUCCESS; + } + } + return status; +} + +/** + * @brief Set each @ref LL_RTC_InitTypeDef field to default value. + * @param RTC_InitStruct pointer to a @ref LL_RTC_InitTypeDef structure which will be initialized. + * @retval None + */ +void LL_RTC_StructInit(LL_RTC_InitTypeDef *RTC_InitStruct) +{ + /* Set RTC_InitStruct fields to default values */ + RTC_InitStruct->AsynchPrescaler = RTC_ASYNCH_PRESC_DEFAULT; + RTC_InitStruct->OutPutSource = LL_RTC_CALIB_OUTPUT_NONE; +} + +/** + * @brief Set the RTC current time. + * @param RTCx RTC Instance + * @param RTC_Format This parameter can be one of the following values: + * @arg @ref LL_RTC_FORMAT_BIN + * @arg @ref LL_RTC_FORMAT_BCD + * @param RTC_TimeStruct pointer to a RTC_TimeTypeDef structure that contains + * the time configuration information for the RTC. + * @note The user should call LL_RTC_TIME_StructInit() or the structure + * of time need to be initialized before time init() + * @retval An ErrorStatus enumeration value: + * - SUCCESS: RTC Time register is configured + * - ERROR: RTC Time register is not configured + */ +ErrorStatus LL_RTC_TIME_Init(RTC_TypeDef *RTCx, uint32_t RTC_Format, LL_RTC_TimeTypeDef *RTC_TimeStruct) +{ + ErrorStatus status = ERROR; + uint32_t counter_time = 0U; + + /* Check the parameters */ + assert_param(IS_RTC_ALL_INSTANCE(RTCx)); + assert_param(IS_LL_RTC_FORMAT(RTC_Format)); + + if (RTC_Format == LL_RTC_FORMAT_BIN) + { + assert_param(IS_LL_RTC_HOUR24(RTC_TimeStruct->Hours)); + assert_param(IS_LL_RTC_MINUTES(RTC_TimeStruct->Minutes)); + assert_param(IS_LL_RTC_SECONDS(RTC_TimeStruct->Seconds)); + } + else + { + assert_param(IS_LL_RTC_HOUR24(__LL_RTC_CONVERT_BCD2BIN(RTC_TimeStruct->Hours))); + assert_param(IS_LL_RTC_MINUTES(__LL_RTC_CONVERT_BCD2BIN(RTC_TimeStruct->Minutes))); + assert_param(IS_LL_RTC_SECONDS(__LL_RTC_CONVERT_BCD2BIN(RTC_TimeStruct->Seconds))); + } + + /* Enter Initialization mode */ + if (LL_RTC_EnterInitMode(RTCx) != ERROR) + { + /* Check the input parameters format */ + if (RTC_Format != LL_RTC_FORMAT_BIN) + { + counter_time = (uint32_t)(((uint32_t)RTC_TimeStruct->Hours * 3600U) + \ + ((uint32_t)RTC_TimeStruct->Minutes * 60U) + \ + ((uint32_t)RTC_TimeStruct->Seconds)); + LL_RTC_TIME_Set(RTCx, counter_time); + } + else + { + counter_time = (((uint32_t)(__LL_RTC_CONVERT_BCD2BIN(RTC_TimeStruct->Hours)) * 3600U) + \ + ((uint32_t)(__LL_RTC_CONVERT_BCD2BIN(RTC_TimeStruct->Minutes)) * 60U) + \ + ((uint32_t)(__LL_RTC_CONVERT_BCD2BIN(RTC_TimeStruct->Seconds)))); + LL_RTC_TIME_Set(RTCx, counter_time); + } + status = SUCCESS; + } + /* Exit Initialization mode */ + LL_RTC_ExitInitMode(RTCx); + + return status; +} + +/** + * @brief Set each @ref LL_RTC_TimeTypeDef field to default value (Time = 00h:00min:00sec). + * @param RTC_TimeStruct pointer to a @ref LL_RTC_TimeTypeDef structure which will be initialized. + * @retval None + */ +void LL_RTC_TIME_StructInit(LL_RTC_TimeTypeDef *RTC_TimeStruct) +{ + /* Time = 00h:00min:00sec */ + RTC_TimeStruct->Hours = 0U; + RTC_TimeStruct->Minutes = 0U; + RTC_TimeStruct->Seconds = 0U; +} + +/** + * @brief Set the RTC Alarm. + * @param RTCx RTC Instance + * @param RTC_Format This parameter can be one of the following values: + * @arg @ref LL_RTC_FORMAT_BIN + * @arg @ref LL_RTC_FORMAT_BCD + * @param RTC_AlarmStruct pointer to a @ref LL_RTC_AlarmTypeDef structure that + * contains the alarm configuration parameters. + * @note the user should call LL_RTC_ALARM_StructInit() or the structure + * of Alarm need to be initialized before Alarm init() + * @retval An ErrorStatus enumeration value: + * - SUCCESS: ALARM registers are configured + * - ERROR: ALARM registers are not configured + */ +ErrorStatus LL_RTC_ALARM_Init(RTC_TypeDef *RTCx, uint32_t RTC_Format, LL_RTC_AlarmTypeDef *RTC_AlarmStruct) +{ + ErrorStatus status = ERROR; + uint32_t counter_alarm = 0U; + /* Check the parameters */ + assert_param(IS_RTC_ALL_INSTANCE(RTCx)); + assert_param(IS_LL_RTC_FORMAT(RTC_Format)); + + if (RTC_Format == LL_RTC_FORMAT_BIN) + { + assert_param(IS_LL_RTC_HOUR24(RTC_AlarmStruct->AlarmTime.Hours)); + assert_param(IS_LL_RTC_MINUTES(RTC_AlarmStruct->AlarmTime.Minutes)); + assert_param(IS_LL_RTC_SECONDS(RTC_AlarmStruct->AlarmTime.Seconds)); + } + else + { + assert_param(IS_LL_RTC_HOUR24(__LL_RTC_CONVERT_BCD2BIN(RTC_AlarmStruct->AlarmTime.Hours))); + assert_param(IS_LL_RTC_MINUTES(__LL_RTC_CONVERT_BCD2BIN(RTC_AlarmStruct->AlarmTime.Minutes))); + assert_param(IS_LL_RTC_SECONDS(__LL_RTC_CONVERT_BCD2BIN(RTC_AlarmStruct->AlarmTime.Seconds))); + } + + /* Enter Initialization mode */ + if (LL_RTC_EnterInitMode(RTCx) != ERROR) + { + /* Check the input parameters format */ + if (RTC_Format != LL_RTC_FORMAT_BIN) + { + counter_alarm = (uint32_t)(((uint32_t)RTC_AlarmStruct->AlarmTime.Hours * 3600U) + \ + ((uint32_t)RTC_AlarmStruct->AlarmTime.Minutes * 60U) + \ + ((uint32_t)RTC_AlarmStruct->AlarmTime.Seconds)); + LL_RTC_ALARM_Set(RTCx, counter_alarm); + } + else + { + counter_alarm = (((uint32_t)(__LL_RTC_CONVERT_BCD2BIN(RTC_AlarmStruct->AlarmTime.Hours)) * 3600U) + \ + ((uint32_t)(__LL_RTC_CONVERT_BCD2BIN(RTC_AlarmStruct->AlarmTime.Minutes)) * 60U) + \ + ((uint32_t)(__LL_RTC_CONVERT_BCD2BIN(RTC_AlarmStruct->AlarmTime.Seconds)))); + LL_RTC_ALARM_Set(RTCx, counter_alarm); + } + status = SUCCESS; + } + /* Exit Initialization mode */ + LL_RTC_ExitInitMode(RTCx); + + return status; +} + +/** + * @brief Set each @ref LL_RTC_AlarmTypeDef of ALARM field to default value (Time = 00h:00mn:00sec / + * Day = 1st day of the month/Mask = all fields are masked). + * @param RTC_AlarmStruct pointer to a @ref LL_RTC_AlarmTypeDef structure which will be initialized. + * @retval None + */ +void LL_RTC_ALARM_StructInit(LL_RTC_AlarmTypeDef *RTC_AlarmStruct) +{ + /* Alarm Time Settings : Time = 00h:00mn:00sec */ + RTC_AlarmStruct->AlarmTime.Hours = 0U; + RTC_AlarmStruct->AlarmTime.Minutes = 0U; + RTC_AlarmStruct->AlarmTime.Seconds = 0U; +} + +/** + * @brief Enters the RTC Initialization mode. + * @param RTCx RTC Instance + * @retval An ErrorStatus enumeration value: + * - SUCCESS: RTC is in Init mode + * - ERROR: RTC is not in Init mode + */ +ErrorStatus LL_RTC_EnterInitMode(RTC_TypeDef *RTCx) +{ + __IO uint32_t timeout = RTC_INITMODE_TIMEOUT; + ErrorStatus status = SUCCESS; + uint32_t tmp = 0U; + + /* Check the parameter */ + assert_param(IS_RTC_ALL_INSTANCE(RTCx)); + + /* Wait till RTC is in INIT state and if Time out is reached exit */ + tmp = LL_RTC_IsActiveFlag_RTOF(RTCx); + while ((timeout != 0U) && (tmp != 1U)) + { + if (LL_SYSTICK_IsActiveCounterFlag() == 1U) + { + timeout --; + } + tmp = LL_RTC_IsActiveFlag_RTOF(RTCx); + if (timeout == 0U) + { + status = ERROR; + } + } + + /* Disable the write protection for RTC registers */ + LL_RTC_DisableWriteProtection(RTCx); + + return status; +} + +/** + * @brief Exit the RTC Initialization mode. + * @note When the initialization sequence is complete, the calendar restarts + * counting after 4 RTCCLK cycles. + * @param RTCx RTC Instance + * @retval An ErrorStatus enumeration value: + * - SUCCESS: RTC exited from in Init mode + * - ERROR: Not applicable + */ +ErrorStatus LL_RTC_ExitInitMode(RTC_TypeDef *RTCx) +{ + __IO uint32_t timeout = RTC_INITMODE_TIMEOUT; + ErrorStatus status = SUCCESS; + uint32_t tmp = 0U; + + /* Check the parameter */ + assert_param(IS_RTC_ALL_INSTANCE(RTCx)); + + /* Disable initialization mode */ + LL_RTC_EnableWriteProtection(RTCx); + + /* Wait till RTC is in INIT state and if Time out is reached exit */ + tmp = LL_RTC_IsActiveFlag_RTOF(RTCx); + while ((timeout != 0U) && (tmp != 1U)) + { + if (LL_SYSTICK_IsActiveCounterFlag() == 1U) + { + timeout --; + } + tmp = LL_RTC_IsActiveFlag_RTOF(RTCx); + if (timeout == 0U) + { + status = ERROR; + } + } + return status; +} + +/** + * @brief Set the Time Counter + * @param RTCx RTC Instance + * @param TimeCounter this value can be from 0 to 0xFFFFFFFF + * @retval An ErrorStatus enumeration value: + * - SUCCESS: RTC Counter register configured + * - ERROR: Not applicable + */ +ErrorStatus LL_RTC_TIME_SetCounter(RTC_TypeDef *RTCx, uint32_t TimeCounter) +{ + ErrorStatus status = ERROR; + /* Check the parameter */ + assert_param(IS_RTC_ALL_INSTANCE(RTCx)); + + /* Enter Initialization mode */ + if (LL_RTC_EnterInitMode(RTCx) != ERROR) + { + LL_RTC_TIME_Set(RTCx, TimeCounter); + status = SUCCESS; + } + /* Exit Initialization mode */ + LL_RTC_ExitInitMode(RTCx); + + return status; +} + +/** + * @brief Set Alarm Counter. + * @param RTCx RTC Instance + * @param AlarmCounter this value can be from 0 to 0xFFFFFFFF + * @retval An ErrorStatus enumeration value: + * - SUCCESS: RTC exited from in Init mode + * - ERROR: Not applicable + */ +ErrorStatus LL_RTC_ALARM_SetCounter(RTC_TypeDef *RTCx, uint32_t AlarmCounter) +{ + ErrorStatus status = ERROR; + /* Check the parameter */ + assert_param(IS_RTC_ALL_INSTANCE(RTCx)); + + /* Enter Initialization mode */ + if (LL_RTC_EnterInitMode(RTCx) != ERROR) + { + LL_RTC_ALARM_Set(RTCx, AlarmCounter); + status = SUCCESS; + } + /* Exit Initialization mode */ + LL_RTC_ExitInitMode(RTCx); + + return status; +} + +/** + * @brief Waits until the RTC registers are synchronized with RTC APB clock. + * @note The RTC Resynchronization mode is write protected, use the + * @ref LL_RTC_DisableWriteProtection before calling this function. + * @param RTCx RTC Instance + * @retval An ErrorStatus enumeration value: + * - SUCCESS: RTC registers are synchronised + * - ERROR: RTC registers are not synchronised + */ +ErrorStatus LL_RTC_WaitForSynchro(RTC_TypeDef *RTCx) +{ + __IO uint32_t timeout = RTC_SYNCHRO_TIMEOUT; + ErrorStatus status = SUCCESS; + uint32_t tmp = 0U; + + /* Check the parameter */ + assert_param(IS_RTC_ALL_INSTANCE(RTCx)); + + /* Clear RSF flag */ + LL_RTC_ClearFlag_RS(RTCx); + + /* Wait the registers to be synchronised */ + tmp = LL_RTC_IsActiveFlag_RS(RTCx); + while ((timeout != 0U) && (tmp != 0U)) + { + if (LL_SYSTICK_IsActiveCounterFlag() == 1U) + { + timeout--; + } + tmp = LL_RTC_IsActiveFlag_RS(RTCx); + if (timeout == 0U) + { + status = ERROR; + } + } + + return (status); +} + +/** + * @} + */ + +/** + * @} + */ + +/** + * @} + */ + +#endif /* defined(RTC) */ + +/** + * @} + */ + +#endif /* USE_FULL_LL_DRIVER */ + +/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/ diff --git a/LLDrivers/src/stm32f1xx_ll_sdmmc.c b/LLDrivers/src/stm32f1xx_ll_sdmmc.c new file mode 100644 index 0000000..07ba469 --- /dev/null +++ b/LLDrivers/src/stm32f1xx_ll_sdmmc.c @@ -0,0 +1,1521 @@ +/** + ****************************************************************************** + * @file stm32f1xx_ll_sdmmc.c + * @author MCD Application Team + * @brief SDMMC Low Layer HAL module driver. + * + * This file provides firmware functions to manage the following + * functionalities of the SDMMC peripheral: + * + Initialization/de-initialization functions + * + I/O operation functions + * + Peripheral Control functions + * + Peripheral State functions + * + @verbatim + ============================================================================== + ##### SDMMC peripheral features ##### + ============================================================================== + [..] The SD/SDMMC MMC card host interface (SDMMC) provides an interface between the AHB + peripheral bus and MultiMedia cards (MMCs), SD memory cards, SDMMC cards and CE-ATA + devices. + + [..] The SDMMC features include the following: + (+) Full compliance with MultiMedia Card System Specification Version 4.2. Card support + for three different databus modes: 1-bit (default), 4-bit and 8-bit + (+) Full compatibility with previous versions of MultiMedia Cards (forward compatibility) + (+) Full compliance with SD Memory Card Specifications Version 2.0 + (+) Full compliance with SD I/O Card Specification Version 2.0: card support for two + different data bus modes: 1-bit (default) and 4-bit + (+) Full support of the CE-ATA features (full compliance with CE-ATA digital protocol + Rev1.1) + (+) Data transfer up to 48 MHz for the 8 bit mode + (+) Data and command output enable signals to control external bidirectional drivers + + ##### How to use this driver ##### + ============================================================================== + [..] + This driver is a considered as a driver of service for external devices drivers + that interfaces with the SDMMC peripheral. + According to the device used (SD card/ MMC card / SDMMC card ...), a set of APIs + is used in the device's driver to perform SDMMC operations and functionalities. + + This driver is almost transparent for the final user, it is only used to implement other + functionalities of the external device. + + [..] + (+) The SDMMC clock (SDMMCCLK = 48 MHz) is coming from a specific output (MSI, PLLUSB1CLK, + PLLUSB2CLK). Before start working with SDMMC peripheral make sure that the + PLL is well configured. + The SDMMC peripheral uses two clock signals: + (++) SDMMC adapter clock (SDMMCCLK = 48 MHz) + (++) APB2 bus clock (PCLK2) + + -@@- PCLK2 and SDMMC_CK clock frequencies must respect the following condition: + Frequency(PCLK2) >= (3 / 8 x Frequency(SDMMC_CK)) + + (+) Enable/Disable peripheral clock using RCC peripheral macros related to SDMMC + peripheral. + + (+) Enable the Power ON State using the SDIO_PowerState_ON() + function and disable it using the function SDIO_PowerState_OFF(). + + (+) Enable/Disable the clock using the __SDIO_ENABLE()/__SDIO_DISABLE() macros. + + (+) Enable/Disable the peripheral interrupts using the macros __SDIO_ENABLE_IT() + and __SDIO_DISABLE_IT() if you need to use interrupt mode. + + (+) When using the DMA mode + (++) Configure the DMA in the MSP layer of the external device + (++) Active the needed channel Request + (++) Enable the DMA using __SDIO_DMA_ENABLE() macro or Disable it using the macro + __SDIO_DMA_DISABLE(). + + (+) To control the CPSM (Command Path State Machine) and send + commands to the card use the SDIO_SendCommand(), + SDIO_GetCommandResponse() and SDIO_GetResponse() functions. First, user has + to fill the command structure (pointer to SDIO_CmdInitTypeDef) according + to the selected command to be sent. + The parameters that should be filled are: + (++) Command Argument + (++) Command Index + (++) Command Response type + (++) Command Wait + (++) CPSM Status (Enable or Disable). + + -@@- To check if the command is well received, read the SDIO_CMDRESP + register using the SDIO_GetCommandResponse(). + The SDMMC responses registers (SDIO_RESP1 to SDIO_RESP2), use the + SDIO_GetResponse() function. + + (+) To control the DPSM (Data Path State Machine) and send/receive + data to/from the card use the SDIO_DataConfig(), SDIO_GetDataCounter(), + SDIO_ReadFIFO(), SDIO_WriteFIFO() and SDIO_GetFIFOCount() functions. + + *** Read Operations *** + ======================= + [..] + (#) First, user has to fill the data structure (pointer to + SDIO_DataInitTypeDef) according to the selected data type to be received. + The parameters that should be filled are: + (++) Data TimeOut + (++) Data Length + (++) Data Block size + (++) Data Transfer direction: should be from card (To SDMMC) + (++) Data Transfer mode + (++) DPSM Status (Enable or Disable) + + (#) Configure the SDMMC resources to receive the data from the card + according to selected transfer mode (Refer to Step 8, 9 and 10). + + (#) Send the selected Read command (refer to step 11). + + (#) Use the SDIO flags/interrupts to check the transfer status. + + *** Write Operations *** + ======================== + [..] + (#) First, user has to fill the data structure (pointer to + SDIO_DataInitTypeDef) according to the selected data type to be received. + The parameters that should be filled are: + (++) Data TimeOut + (++) Data Length + (++) Data Block size + (++) Data Transfer direction: should be to card (To CARD) + (++) Data Transfer mode + (++) DPSM Status (Enable or Disable) + + (#) Configure the SDMMC resources to send the data to the card according to + selected transfer mode. + + (#) Send the selected Write command. + + (#) Use the SDIO flags/interrupts to check the transfer status. + + *** Command management operations *** + ===================================== + [..] + (#) The commands used for Read/Write/Erase operations are managed in + separate functions. + Each function allows to send the needed command with the related argument, + then check the response. + By the same approach, you could implement a command and check the response. + + @endverbatim + ****************************************************************************** + * @attention + * + *

© Copyright (c) 2018 STMicroelectronics. + * All rights reserved.

+ * + * This software component is licensed by ST under BSD 3-Clause license, + * the "License"; You may not use this file except in compliance with the + * License. You may obtain a copy of the License at: + * opensource.org/licenses/BSD-3-Clause + * + ****************************************************************************** + */ + +/* Includes ------------------------------------------------------------------*/ +#include "stm32f1xx_hal.h" + +#if defined(SDIO) + +/** @addtogroup STM32F1xx_HAL_Driver + * @{ + */ + +/** @defgroup SDMMC_LL SDMMC Low Layer + * @brief Low layer module for SD + * @{ + */ + +#if defined(HAL_SD_MODULE_ENABLED) || defined(HAL_MMC_MODULE_ENABLED) + +/* Private typedef -----------------------------------------------------------*/ +/* Private define ------------------------------------------------------------*/ +/* Private macro -------------------------------------------------------------*/ +/* Private variables ---------------------------------------------------------*/ +/* Private function prototypes -----------------------------------------------*/ +static uint32_t SDMMC_GetCmdError(SDIO_TypeDef *SDIOx); +static uint32_t SDMMC_GetCmdResp1(SDIO_TypeDef *SDIOx, uint8_t SD_CMD, uint32_t Timeout); +static uint32_t SDMMC_GetCmdResp2(SDIO_TypeDef *SDIOx); +static uint32_t SDMMC_GetCmdResp3(SDIO_TypeDef *SDIOx); +static uint32_t SDMMC_GetCmdResp7(SDIO_TypeDef *SDIOx); +static uint32_t SDMMC_GetCmdResp6(SDIO_TypeDef *SDIOx, uint8_t SD_CMD, uint16_t *pRCA); + +/* Exported functions --------------------------------------------------------*/ + +/** @defgroup SDMMC_LL_Exported_Functions SDMMC Low Layer Exported Functions + * @{ + */ + +/** @defgroup HAL_SDMMC_LL_Group1 Initialization de-initialization functions + * @brief Initialization and Configuration functions + * +@verbatim + =============================================================================== + ##### Initialization/de-initialization functions ##### + =============================================================================== + [..] This section provides functions allowing to: + +@endverbatim + * @{ + */ + +/** + * @brief Initializes the SDMMC according to the specified + * parameters in the SDMMC_InitTypeDef and create the associated handle. + * @param SDIOx: Pointer to SDMMC register base + * @param Init: SDMMC initialization structure + * @retval HAL status + */ +HAL_StatusTypeDef SDIO_Init(SDIO_TypeDef *SDIOx, SDIO_InitTypeDef Init) +{ + uint32_t tmpreg = 0; + + /* Check the parameters */ + assert_param(IS_SDIO_ALL_INSTANCE(SDIOx)); + assert_param(IS_SDIO_CLOCK_EDGE(Init.ClockEdge)); + assert_param(IS_SDIO_CLOCK_BYPASS(Init.ClockBypass)); + assert_param(IS_SDIO_CLOCK_POWER_SAVE(Init.ClockPowerSave)); + assert_param(IS_SDIO_BUS_WIDE(Init.BusWide)); + assert_param(IS_SDIO_HARDWARE_FLOW_CONTROL(Init.HardwareFlowControl)); + assert_param(IS_SDIO_CLKDIV(Init.ClockDiv)); + + /* Set SDMMC configuration parameters */ + tmpreg |= (Init.ClockEdge |\ + Init.ClockBypass |\ + Init.ClockPowerSave |\ + Init.BusWide |\ + Init.HardwareFlowControl |\ + Init.ClockDiv + ); + + /* Write to SDMMC CLKCR */ + MODIFY_REG(SDIOx->CLKCR, CLKCR_CLEAR_MASK, tmpreg); + + return HAL_OK; +} + + +/** + * @} + */ + +/** @defgroup HAL_SDMMC_LL_Group2 IO operation functions + * @brief Data transfers functions + * +@verbatim + =============================================================================== + ##### I/O operation functions ##### + =============================================================================== + [..] + This subsection provides a set of functions allowing to manage the SDMMC data + transfers. + +@endverbatim + * @{ + */ + +/** + * @brief Read data (word) from Rx FIFO in blocking mode (polling) + * @param SDIOx: Pointer to SDMMC register base + * @retval HAL status + */ +uint32_t SDIO_ReadFIFO(SDIO_TypeDef *SDIOx) +{ + /* Read data from Rx FIFO */ + return (SDIOx->FIFO); +} + +/** + * @brief Write data (word) to Tx FIFO in blocking mode (polling) + * @param SDIOx: Pointer to SDMMC register base + * @param pWriteData: pointer to data to write + * @retval HAL status + */ +HAL_StatusTypeDef SDIO_WriteFIFO(SDIO_TypeDef *SDIOx, uint32_t *pWriteData) +{ + /* Write data to FIFO */ + SDIOx->FIFO = *pWriteData; + + return HAL_OK; +} + +/** + * @} + */ + +/** @defgroup HAL_SDMMC_LL_Group3 Peripheral Control functions + * @brief management functions + * +@verbatim + =============================================================================== + ##### Peripheral Control functions ##### + =============================================================================== + [..] + This subsection provides a set of functions allowing to control the SDMMC data + transfers. + +@endverbatim + * @{ + */ + +/** + * @brief Set SDMMC Power state to ON. + * @param SDIOx: Pointer to SDMMC register base + * @retval HAL status + */ +HAL_StatusTypeDef SDIO_PowerState_ON(SDIO_TypeDef *SDIOx) +{ + /* Set power state to ON */ + SDIOx->POWER = SDIO_POWER_PWRCTRL; + + /* 1ms: required power up waiting time before starting the SD initialization + sequence */ + HAL_Delay(2); + + return HAL_OK; +} + +/** + * @brief Set SDMMC Power state to OFF. + * @param SDIOx: Pointer to SDMMC register base + * @retval HAL status + */ +HAL_StatusTypeDef SDIO_PowerState_OFF(SDIO_TypeDef *SDIOx) +{ + /* Set power state to OFF */ + SDIOx->POWER = (uint32_t)0x00000000; + + return HAL_OK; +} + +/** + * @brief Get SDMMC Power state. + * @param SDIOx: Pointer to SDMMC register base + * @retval Power status of the controller. The returned value can be one of the + * following values: + * - 0x00: Power OFF + * - 0x02: Power UP + * - 0x03: Power ON + */ +uint32_t SDIO_GetPowerState(SDIO_TypeDef *SDIOx) +{ + return (SDIOx->POWER & SDIO_POWER_PWRCTRL); +} + +/** + * @brief Configure the SDMMC command path according to the specified parameters in + * SDIO_CmdInitTypeDef structure and send the command + * @param SDIOx: Pointer to SDMMC register base + * @param Command: pointer to a SDIO_CmdInitTypeDef structure that contains + * the configuration information for the SDMMC command + * @retval HAL status + */ +HAL_StatusTypeDef SDIO_SendCommand(SDIO_TypeDef *SDIOx, SDIO_CmdInitTypeDef *Command) +{ + uint32_t tmpreg = 0; + + /* Check the parameters */ + assert_param(IS_SDIO_CMD_INDEX(Command->CmdIndex)); + assert_param(IS_SDIO_RESPONSE(Command->Response)); + assert_param(IS_SDIO_WAIT(Command->WaitForInterrupt)); + assert_param(IS_SDIO_CPSM(Command->CPSM)); + + /* Set the SDMMC Argument value */ + SDIOx->ARG = Command->Argument; + + /* Set SDMMC command parameters */ + tmpreg |= (uint32_t)(Command->CmdIndex |\ + Command->Response |\ + Command->WaitForInterrupt |\ + Command->CPSM); + + /* Write to SDMMC CMD register */ + MODIFY_REG(SDIOx->CMD, CMD_CLEAR_MASK, tmpreg); + + return HAL_OK; +} + +/** + * @brief Return the command index of last command for which response received + * @param SDIOx: Pointer to SDMMC register base + * @retval Command index of the last command response received + */ +uint8_t SDIO_GetCommandResponse(SDIO_TypeDef *SDIOx) +{ + return (uint8_t)(SDIOx->RESPCMD); +} + + +/** + * @brief Return the response received from the card for the last command + * @param SDIOx: Pointer to SDMMC register base + * @param Response: Specifies the SDMMC response register. + * This parameter can be one of the following values: + * @arg SDIO_RESP1: Response Register 1 + * @arg SDIO_RESP2: Response Register 2 + * @arg SDIO_RESP3: Response Register 3 + * @arg SDIO_RESP4: Response Register 4 + * @retval The Corresponding response register value + */ +uint32_t SDIO_GetResponse(SDIO_TypeDef *SDIOx, uint32_t Response) +{ + uint32_t tmp; + + /* Check the parameters */ + assert_param(IS_SDIO_RESP(Response)); + + /* Get the response */ + tmp = (uint32_t)(&(SDIOx->RESP1)) + Response; + + return (*(__IO uint32_t *) tmp); +} + +/** + * @brief Configure the SDMMC data path according to the specified + * parameters in the SDIO_DataInitTypeDef. + * @param SDIOx: Pointer to SDIO register base + * @param Data : pointer to a SDIO_DataInitTypeDef structure + * that contains the configuration information for the SDMMC data. + * @retval HAL status + */ +HAL_StatusTypeDef SDIO_ConfigData(SDIO_TypeDef *SDIOx, SDIO_DataInitTypeDef* Data) +{ + uint32_t tmpreg = 0; + + /* Check the parameters */ + assert_param(IS_SDIO_DATA_LENGTH(Data->DataLength)); + assert_param(IS_SDIO_BLOCK_SIZE(Data->DataBlockSize)); + assert_param(IS_SDIO_TRANSFER_DIR(Data->TransferDir)); + assert_param(IS_SDIO_TRANSFER_MODE(Data->TransferMode)); + assert_param(IS_SDIO_DPSM(Data->DPSM)); + + /* Set the SDMMC Data TimeOut value */ + SDIOx->DTIMER = Data->DataTimeOut; + + /* Set the SDMMC DataLength value */ + SDIOx->DLEN = Data->DataLength; + + /* Set the SDMMC data configuration parameters */ + tmpreg |= (uint32_t)(Data->DataBlockSize |\ + Data->TransferDir |\ + Data->TransferMode |\ + Data->DPSM); + + /* Write to SDMMC DCTRL */ + MODIFY_REG(SDIOx->DCTRL, DCTRL_CLEAR_MASK, tmpreg); + + return HAL_OK; + +} + +/** + * @brief Returns number of remaining data bytes to be transferred. + * @param SDIOx: Pointer to SDIO register base + * @retval Number of remaining data bytes to be transferred + */ +uint32_t SDIO_GetDataCounter(SDIO_TypeDef *SDIOx) +{ + return (SDIOx->DCOUNT); +} + +/** + * @brief Get the FIFO data + * @param SDIOx: Pointer to SDIO register base + * @retval Data received + */ +uint32_t SDIO_GetFIFOCount(SDIO_TypeDef *SDIOx) +{ + return (SDIOx->FIFO); +} + +/** + * @brief Sets one of the two options of inserting read wait interval. + * @param SDIOx: Pointer to SDIO register base + * @param SDIO_ReadWaitMode: SDMMC Read Wait operation mode. + * This parameter can be: + * @arg SDIO_READ_WAIT_MODE_CLK: Read Wait control by stopping SDMMCCLK + * @arg SDIO_READ_WAIT_MODE_DATA2: Read Wait control using SDMMC_DATA2 + * @retval None + */ +HAL_StatusTypeDef SDIO_SetSDMMCReadWaitMode(SDIO_TypeDef *SDIOx, uint32_t SDIO_ReadWaitMode) +{ + /* Check the parameters */ + assert_param(IS_SDIO_READWAIT_MODE(SDIO_ReadWaitMode)); + + /* Set SDMMC read wait mode */ + MODIFY_REG(SDIOx->DCTRL, SDIO_DCTRL_RWMOD, SDIO_ReadWaitMode); + + return HAL_OK; +} + +/** + * @} + */ + + +/** @defgroup HAL_SDMMC_LL_Group4 Command management functions + * @brief Data transfers functions + * +@verbatim + =============================================================================== + ##### Commands management functions ##### + =============================================================================== + [..] + This subsection provides a set of functions allowing to manage the needed commands. + +@endverbatim + * @{ + */ + +/** + * @brief Send the Data Block Lenght command and check the response + * @param SDIOx: Pointer to SDIO register base + * @retval HAL status + */ +uint32_t SDMMC_CmdBlockLength(SDIO_TypeDef *SDIOx, uint32_t BlockSize) +{ + SDIO_CmdInitTypeDef sdmmc_cmdinit; + uint32_t errorstate; + + /* Set Block Size for Card */ + sdmmc_cmdinit.Argument = (uint32_t)BlockSize; + sdmmc_cmdinit.CmdIndex = SDMMC_CMD_SET_BLOCKLEN; + sdmmc_cmdinit.Response = SDIO_RESPONSE_SHORT; + sdmmc_cmdinit.WaitForInterrupt = SDIO_WAIT_NO; + sdmmc_cmdinit.CPSM = SDIO_CPSM_ENABLE; + (void)SDIO_SendCommand(SDIOx, &sdmmc_cmdinit); + + /* Check for error conditions */ + errorstate = SDMMC_GetCmdResp1(SDIOx, SDMMC_CMD_SET_BLOCKLEN, SDIO_CMDTIMEOUT); + + return errorstate; +} + +/** + * @brief Send the Read Single Block command and check the response + * @param SDIOx: Pointer to SDIO register base + * @retval HAL status + */ +uint32_t SDMMC_CmdReadSingleBlock(SDIO_TypeDef *SDIOx, uint32_t ReadAdd) +{ + SDIO_CmdInitTypeDef sdmmc_cmdinit; + uint32_t errorstate; + + /* Set Block Size for Card */ + sdmmc_cmdinit.Argument = (uint32_t)ReadAdd; + sdmmc_cmdinit.CmdIndex = SDMMC_CMD_READ_SINGLE_BLOCK; + sdmmc_cmdinit.Response = SDIO_RESPONSE_SHORT; + sdmmc_cmdinit.WaitForInterrupt = SDIO_WAIT_NO; + sdmmc_cmdinit.CPSM = SDIO_CPSM_ENABLE; + (void)SDIO_SendCommand(SDIOx, &sdmmc_cmdinit); + + /* Check for error conditions */ + errorstate = SDMMC_GetCmdResp1(SDIOx, SDMMC_CMD_READ_SINGLE_BLOCK, SDIO_CMDTIMEOUT); + + return errorstate; +} + +/** + * @brief Send the Read Multi Block command and check the response + * @param SDIOx: Pointer to SDIO register base + * @retval HAL status + */ +uint32_t SDMMC_CmdReadMultiBlock(SDIO_TypeDef *SDIOx, uint32_t ReadAdd) +{ + SDIO_CmdInitTypeDef sdmmc_cmdinit; + uint32_t errorstate; + + /* Set Block Size for Card */ + sdmmc_cmdinit.Argument = (uint32_t)ReadAdd; + sdmmc_cmdinit.CmdIndex = SDMMC_CMD_READ_MULT_BLOCK; + sdmmc_cmdinit.Response = SDIO_RESPONSE_SHORT; + sdmmc_cmdinit.WaitForInterrupt = SDIO_WAIT_NO; + sdmmc_cmdinit.CPSM = SDIO_CPSM_ENABLE; + (void)SDIO_SendCommand(SDIOx, &sdmmc_cmdinit); + + /* Check for error conditions */ + errorstate = SDMMC_GetCmdResp1(SDIOx, SDMMC_CMD_READ_MULT_BLOCK, SDIO_CMDTIMEOUT); + + return errorstate; +} + +/** + * @brief Send the Write Single Block command and check the response + * @param SDIOx: Pointer to SDIO register base + * @retval HAL status + */ +uint32_t SDMMC_CmdWriteSingleBlock(SDIO_TypeDef *SDIOx, uint32_t WriteAdd) +{ + SDIO_CmdInitTypeDef sdmmc_cmdinit; + uint32_t errorstate; + + /* Set Block Size for Card */ + sdmmc_cmdinit.Argument = (uint32_t)WriteAdd; + sdmmc_cmdinit.CmdIndex = SDMMC_CMD_WRITE_SINGLE_BLOCK; + sdmmc_cmdinit.Response = SDIO_RESPONSE_SHORT; + sdmmc_cmdinit.WaitForInterrupt = SDIO_WAIT_NO; + sdmmc_cmdinit.CPSM = SDIO_CPSM_ENABLE; + (void)SDIO_SendCommand(SDIOx, &sdmmc_cmdinit); + + /* Check for error conditions */ + errorstate = SDMMC_GetCmdResp1(SDIOx, SDMMC_CMD_WRITE_SINGLE_BLOCK, SDIO_CMDTIMEOUT); + + return errorstate; +} + +/** + * @brief Send the Write Multi Block command and check the response + * @param SDIOx: Pointer to SDIO register base + * @retval HAL status + */ +uint32_t SDMMC_CmdWriteMultiBlock(SDIO_TypeDef *SDIOx, uint32_t WriteAdd) +{ + SDIO_CmdInitTypeDef sdmmc_cmdinit; + uint32_t errorstate; + + /* Set Block Size for Card */ + sdmmc_cmdinit.Argument = (uint32_t)WriteAdd; + sdmmc_cmdinit.CmdIndex = SDMMC_CMD_WRITE_MULT_BLOCK; + sdmmc_cmdinit.Response = SDIO_RESPONSE_SHORT; + sdmmc_cmdinit.WaitForInterrupt = SDIO_WAIT_NO; + sdmmc_cmdinit.CPSM = SDIO_CPSM_ENABLE; + (void)SDIO_SendCommand(SDIOx, &sdmmc_cmdinit); + + /* Check for error conditions */ + errorstate = SDMMC_GetCmdResp1(SDIOx, SDMMC_CMD_WRITE_MULT_BLOCK, SDIO_CMDTIMEOUT); + + return errorstate; +} + +/** + * @brief Send the Start Address Erase command for SD and check the response + * @param SDIOx: Pointer to SDIO register base + * @retval HAL status + */ +uint32_t SDMMC_CmdSDEraseStartAdd(SDIO_TypeDef *SDIOx, uint32_t StartAdd) +{ + SDIO_CmdInitTypeDef sdmmc_cmdinit; + uint32_t errorstate; + + /* Set Block Size for Card */ + sdmmc_cmdinit.Argument = (uint32_t)StartAdd; + sdmmc_cmdinit.CmdIndex = SDMMC_CMD_SD_ERASE_GRP_START; + sdmmc_cmdinit.Response = SDIO_RESPONSE_SHORT; + sdmmc_cmdinit.WaitForInterrupt = SDIO_WAIT_NO; + sdmmc_cmdinit.CPSM = SDIO_CPSM_ENABLE; + (void)SDIO_SendCommand(SDIOx, &sdmmc_cmdinit); + + /* Check for error conditions */ + errorstate = SDMMC_GetCmdResp1(SDIOx, SDMMC_CMD_SD_ERASE_GRP_START, SDIO_CMDTIMEOUT); + + return errorstate; +} + +/** + * @brief Send the End Address Erase command for SD and check the response + * @param SDIOx: Pointer to SDIO register base + * @retval HAL status + */ +uint32_t SDMMC_CmdSDEraseEndAdd(SDIO_TypeDef *SDIOx, uint32_t EndAdd) +{ + SDIO_CmdInitTypeDef sdmmc_cmdinit; + uint32_t errorstate; + + /* Set Block Size for Card */ + sdmmc_cmdinit.Argument = (uint32_t)EndAdd; + sdmmc_cmdinit.CmdIndex = SDMMC_CMD_SD_ERASE_GRP_END; + sdmmc_cmdinit.Response = SDIO_RESPONSE_SHORT; + sdmmc_cmdinit.WaitForInterrupt = SDIO_WAIT_NO; + sdmmc_cmdinit.CPSM = SDIO_CPSM_ENABLE; + (void)SDIO_SendCommand(SDIOx, &sdmmc_cmdinit); + + /* Check for error conditions */ + errorstate = SDMMC_GetCmdResp1(SDIOx, SDMMC_CMD_SD_ERASE_GRP_END, SDIO_CMDTIMEOUT); + + return errorstate; +} + +/** + * @brief Send the Start Address Erase command and check the response + * @param SDIOx: Pointer to SDIO register base + * @retval HAL status + */ +uint32_t SDMMC_CmdEraseStartAdd(SDIO_TypeDef *SDIOx, uint32_t StartAdd) +{ + SDIO_CmdInitTypeDef sdmmc_cmdinit; + uint32_t errorstate; + + /* Set Block Size for Card */ + sdmmc_cmdinit.Argument = (uint32_t)StartAdd; + sdmmc_cmdinit.CmdIndex = SDMMC_CMD_ERASE_GRP_START; + sdmmc_cmdinit.Response = SDIO_RESPONSE_SHORT; + sdmmc_cmdinit.WaitForInterrupt = SDIO_WAIT_NO; + sdmmc_cmdinit.CPSM = SDIO_CPSM_ENABLE; + (void)SDIO_SendCommand(SDIOx, &sdmmc_cmdinit); + + /* Check for error conditions */ + errorstate = SDMMC_GetCmdResp1(SDIOx, SDMMC_CMD_ERASE_GRP_START, SDIO_CMDTIMEOUT); + + return errorstate; +} + +/** + * @brief Send the End Address Erase command and check the response + * @param SDIOx: Pointer to SDIO register base + * @retval HAL status + */ +uint32_t SDMMC_CmdEraseEndAdd(SDIO_TypeDef *SDIOx, uint32_t EndAdd) +{ + SDIO_CmdInitTypeDef sdmmc_cmdinit; + uint32_t errorstate; + + /* Set Block Size for Card */ + sdmmc_cmdinit.Argument = (uint32_t)EndAdd; + sdmmc_cmdinit.CmdIndex = SDMMC_CMD_ERASE_GRP_END; + sdmmc_cmdinit.Response = SDIO_RESPONSE_SHORT; + sdmmc_cmdinit.WaitForInterrupt = SDIO_WAIT_NO; + sdmmc_cmdinit.CPSM = SDIO_CPSM_ENABLE; + (void)SDIO_SendCommand(SDIOx, &sdmmc_cmdinit); + + /* Check for error conditions */ + errorstate = SDMMC_GetCmdResp1(SDIOx, SDMMC_CMD_ERASE_GRP_END, SDIO_CMDTIMEOUT); + + return errorstate; +} + +/** + * @brief Send the Erase command and check the response + * @param SDIOx: Pointer to SDIO register base + * @retval HAL status + */ +uint32_t SDMMC_CmdErase(SDIO_TypeDef *SDIOx) +{ + SDIO_CmdInitTypeDef sdmmc_cmdinit; + uint32_t errorstate; + + /* Set Block Size for Card */ + sdmmc_cmdinit.Argument = 0U; + sdmmc_cmdinit.CmdIndex = SDMMC_CMD_ERASE; + sdmmc_cmdinit.Response = SDIO_RESPONSE_SHORT; + sdmmc_cmdinit.WaitForInterrupt = SDIO_WAIT_NO; + sdmmc_cmdinit.CPSM = SDIO_CPSM_ENABLE; + (void)SDIO_SendCommand(SDIOx, &sdmmc_cmdinit); + + /* Check for error conditions */ + errorstate = SDMMC_GetCmdResp1(SDIOx, SDMMC_CMD_ERASE, SDIO_MAXERASETIMEOUT); + + return errorstate; +} + +/** + * @brief Send the Stop Transfer command and check the response. + * @param SDIOx: Pointer to SDIO register base + * @retval HAL status + */ +uint32_t SDMMC_CmdStopTransfer(SDIO_TypeDef *SDIOx) +{ + SDIO_CmdInitTypeDef sdmmc_cmdinit; + uint32_t errorstate; + + /* Send CMD12 STOP_TRANSMISSION */ + sdmmc_cmdinit.Argument = 0U; + sdmmc_cmdinit.CmdIndex = SDMMC_CMD_STOP_TRANSMISSION; + sdmmc_cmdinit.Response = SDIO_RESPONSE_SHORT; + sdmmc_cmdinit.WaitForInterrupt = SDIO_WAIT_NO; + sdmmc_cmdinit.CPSM = SDIO_CPSM_ENABLE; + (void)SDIO_SendCommand(SDIOx, &sdmmc_cmdinit); + + /* Check for error conditions */ + errorstate = SDMMC_GetCmdResp1(SDIOx, SDMMC_CMD_STOP_TRANSMISSION, SDIO_STOPTRANSFERTIMEOUT); + + return errorstate; +} + +/** + * @brief Send the Select Deselect command and check the response. + * @param SDIOx: Pointer to SDIO register base + * @param addr: Address of the card to be selected + * @retval HAL status + */ +uint32_t SDMMC_CmdSelDesel(SDIO_TypeDef *SDIOx, uint64_t Addr) +{ + SDIO_CmdInitTypeDef sdmmc_cmdinit; + uint32_t errorstate; + + /* Send CMD7 SDMMC_SEL_DESEL_CARD */ + sdmmc_cmdinit.Argument = (uint32_t)Addr; + sdmmc_cmdinit.CmdIndex = SDMMC_CMD_SEL_DESEL_CARD; + sdmmc_cmdinit.Response = SDIO_RESPONSE_SHORT; + sdmmc_cmdinit.WaitForInterrupt = SDIO_WAIT_NO; + sdmmc_cmdinit.CPSM = SDIO_CPSM_ENABLE; + (void)SDIO_SendCommand(SDIOx, &sdmmc_cmdinit); + + /* Check for error conditions */ + errorstate = SDMMC_GetCmdResp1(SDIOx, SDMMC_CMD_SEL_DESEL_CARD, SDIO_CMDTIMEOUT); + + return errorstate; +} + +/** + * @brief Send the Go Idle State command and check the response. + * @param SDIOx: Pointer to SDIO register base + * @retval HAL status + */ +uint32_t SDMMC_CmdGoIdleState(SDIO_TypeDef *SDIOx) +{ + SDIO_CmdInitTypeDef sdmmc_cmdinit; + uint32_t errorstate; + + sdmmc_cmdinit.Argument = 0U; + sdmmc_cmdinit.CmdIndex = SDMMC_CMD_GO_IDLE_STATE; + sdmmc_cmdinit.Response = SDIO_RESPONSE_NO; + sdmmc_cmdinit.WaitForInterrupt = SDIO_WAIT_NO; + sdmmc_cmdinit.CPSM = SDIO_CPSM_ENABLE; + (void)SDIO_SendCommand(SDIOx, &sdmmc_cmdinit); + + /* Check for error conditions */ + errorstate = SDMMC_GetCmdError(SDIOx); + + return errorstate; +} + +/** + * @brief Send the Operating Condition command and check the response. + * @param SDIOx: Pointer to SDIO register base + * @retval HAL status + */ +uint32_t SDMMC_CmdOperCond(SDIO_TypeDef *SDIOx) +{ + SDIO_CmdInitTypeDef sdmmc_cmdinit; + uint32_t errorstate; + + /* Send CMD8 to verify SD card interface operating condition */ + /* Argument: - [31:12]: Reserved (shall be set to '0') + - [11:8]: Supply Voltage (VHS) 0x1 (Range: 2.7-3.6 V) + - [7:0]: Check Pattern (recommended 0xAA) */ + /* CMD Response: R7 */ + sdmmc_cmdinit.Argument = SDMMC_CHECK_PATTERN; + sdmmc_cmdinit.CmdIndex = SDMMC_CMD_HS_SEND_EXT_CSD; + sdmmc_cmdinit.Response = SDIO_RESPONSE_SHORT; + sdmmc_cmdinit.WaitForInterrupt = SDIO_WAIT_NO; + sdmmc_cmdinit.CPSM = SDIO_CPSM_ENABLE; + (void)SDIO_SendCommand(SDIOx, &sdmmc_cmdinit); + + /* Check for error conditions */ + errorstate = SDMMC_GetCmdResp7(SDIOx); + + return errorstate; +} + +/** + * @brief Send the Application command to verify that that the next command + * is an application specific com-mand rather than a standard command + * and check the response. + * @param SDIOx: Pointer to SDIO register base + * @param Argument: Command Argument + * @retval HAL status + */ +uint32_t SDMMC_CmdAppCommand(SDIO_TypeDef *SDIOx, uint32_t Argument) +{ + SDIO_CmdInitTypeDef sdmmc_cmdinit; + uint32_t errorstate; + + sdmmc_cmdinit.Argument = (uint32_t)Argument; + sdmmc_cmdinit.CmdIndex = SDMMC_CMD_APP_CMD; + sdmmc_cmdinit.Response = SDIO_RESPONSE_SHORT; + sdmmc_cmdinit.WaitForInterrupt = SDIO_WAIT_NO; + sdmmc_cmdinit.CPSM = SDIO_CPSM_ENABLE; + (void)SDIO_SendCommand(SDIOx, &sdmmc_cmdinit); + + /* Check for error conditions */ + /* If there is a HAL_ERROR, it is a MMC card, else + it is a SD card: SD card 2.0 (voltage range mismatch) + or SD card 1.x */ + errorstate = SDMMC_GetCmdResp1(SDIOx, SDMMC_CMD_APP_CMD, SDIO_CMDTIMEOUT); + + return errorstate; +} + +/** + * @brief Send the command asking the accessed card to send its operating + * condition register (OCR) + * @param SDIOx: Pointer to SDIO register base + * @param Argument: Command Argument + * @retval HAL status + */ +uint32_t SDMMC_CmdAppOperCommand(SDIO_TypeDef *SDIOx, uint32_t Argument) +{ + SDIO_CmdInitTypeDef sdmmc_cmdinit; + uint32_t errorstate; + + sdmmc_cmdinit.Argument = SDMMC_VOLTAGE_WINDOW_SD | Argument; + sdmmc_cmdinit.CmdIndex = SDMMC_CMD_SD_APP_OP_COND; + sdmmc_cmdinit.Response = SDIO_RESPONSE_SHORT; + sdmmc_cmdinit.WaitForInterrupt = SDIO_WAIT_NO; + sdmmc_cmdinit.CPSM = SDIO_CPSM_ENABLE; + (void)SDIO_SendCommand(SDIOx, &sdmmc_cmdinit); + + /* Check for error conditions */ + errorstate = SDMMC_GetCmdResp3(SDIOx); + + return errorstate; +} + +/** + * @brief Send the Bus Width command and check the response. + * @param SDIOx: Pointer to SDIO register base + * @param BusWidth: BusWidth + * @retval HAL status + */ +uint32_t SDMMC_CmdBusWidth(SDIO_TypeDef *SDIOx, uint32_t BusWidth) +{ + SDIO_CmdInitTypeDef sdmmc_cmdinit; + uint32_t errorstate; + + sdmmc_cmdinit.Argument = (uint32_t)BusWidth; + sdmmc_cmdinit.CmdIndex = SDMMC_CMD_APP_SD_SET_BUSWIDTH; + sdmmc_cmdinit.Response = SDIO_RESPONSE_SHORT; + sdmmc_cmdinit.WaitForInterrupt = SDIO_WAIT_NO; + sdmmc_cmdinit.CPSM = SDIO_CPSM_ENABLE; + (void)SDIO_SendCommand(SDIOx, &sdmmc_cmdinit); + + /* Check for error conditions */ + errorstate = SDMMC_GetCmdResp1(SDIOx, SDMMC_CMD_APP_SD_SET_BUSWIDTH, SDIO_CMDTIMEOUT); + + return errorstate; +} + +/** + * @brief Send the Send SCR command and check the response. + * @param SDIOx: Pointer to SDIO register base + * @retval HAL status + */ +uint32_t SDMMC_CmdSendSCR(SDIO_TypeDef *SDIOx) +{ + SDIO_CmdInitTypeDef sdmmc_cmdinit; + uint32_t errorstate; + + /* Send CMD51 SD_APP_SEND_SCR */ + sdmmc_cmdinit.Argument = 0U; + sdmmc_cmdinit.CmdIndex = SDMMC_CMD_SD_APP_SEND_SCR; + sdmmc_cmdinit.Response = SDIO_RESPONSE_SHORT; + sdmmc_cmdinit.WaitForInterrupt = SDIO_WAIT_NO; + sdmmc_cmdinit.CPSM = SDIO_CPSM_ENABLE; + (void)SDIO_SendCommand(SDIOx, &sdmmc_cmdinit); + + /* Check for error conditions */ + errorstate = SDMMC_GetCmdResp1(SDIOx, SDMMC_CMD_SD_APP_SEND_SCR, SDIO_CMDTIMEOUT); + + return errorstate; +} + +/** + * @brief Send the Send CID command and check the response. + * @param SDIOx: Pointer to SDIO register base + * @retval HAL status + */ +uint32_t SDMMC_CmdSendCID(SDIO_TypeDef *SDIOx) +{ + SDIO_CmdInitTypeDef sdmmc_cmdinit; + uint32_t errorstate; + + /* Send CMD2 ALL_SEND_CID */ + sdmmc_cmdinit.Argument = 0U; + sdmmc_cmdinit.CmdIndex = SDMMC_CMD_ALL_SEND_CID; + sdmmc_cmdinit.Response = SDIO_RESPONSE_LONG; + sdmmc_cmdinit.WaitForInterrupt = SDIO_WAIT_NO; + sdmmc_cmdinit.CPSM = SDIO_CPSM_ENABLE; + (void)SDIO_SendCommand(SDIOx, &sdmmc_cmdinit); + + /* Check for error conditions */ + errorstate = SDMMC_GetCmdResp2(SDIOx); + + return errorstate; +} + +/** + * @brief Send the Send CSD command and check the response. + * @param SDIOx: Pointer to SDIO register base + * @param Argument: Command Argument + * @retval HAL status + */ +uint32_t SDMMC_CmdSendCSD(SDIO_TypeDef *SDIOx, uint32_t Argument) +{ + SDIO_CmdInitTypeDef sdmmc_cmdinit; + uint32_t errorstate; + + /* Send CMD9 SEND_CSD */ + sdmmc_cmdinit.Argument = Argument; + sdmmc_cmdinit.CmdIndex = SDMMC_CMD_SEND_CSD; + sdmmc_cmdinit.Response = SDIO_RESPONSE_LONG; + sdmmc_cmdinit.WaitForInterrupt = SDIO_WAIT_NO; + sdmmc_cmdinit.CPSM = SDIO_CPSM_ENABLE; + (void)SDIO_SendCommand(SDIOx, &sdmmc_cmdinit); + + /* Check for error conditions */ + errorstate = SDMMC_GetCmdResp2(SDIOx); + + return errorstate; +} + +/** + * @brief Send the Send CSD command and check the response. + * @param SDIOx: Pointer to SDIO register base + * @param pRCA: Card RCA + * @retval HAL status + */ +uint32_t SDMMC_CmdSetRelAdd(SDIO_TypeDef *SDIOx, uint16_t *pRCA) +{ + SDIO_CmdInitTypeDef sdmmc_cmdinit; + uint32_t errorstate; + + /* Send CMD3 SD_CMD_SET_REL_ADDR */ + sdmmc_cmdinit.Argument = 0U; + sdmmc_cmdinit.CmdIndex = SDMMC_CMD_SET_REL_ADDR; + sdmmc_cmdinit.Response = SDIO_RESPONSE_SHORT; + sdmmc_cmdinit.WaitForInterrupt = SDIO_WAIT_NO; + sdmmc_cmdinit.CPSM = SDIO_CPSM_ENABLE; + (void)SDIO_SendCommand(SDIOx, &sdmmc_cmdinit); + + /* Check for error conditions */ + errorstate = SDMMC_GetCmdResp6(SDIOx, SDMMC_CMD_SET_REL_ADDR, pRCA); + + return errorstate; +} + +/** + * @brief Send the Status command and check the response. + * @param SDIOx: Pointer to SDIO register base + * @param Argument: Command Argument + * @retval HAL status + */ +uint32_t SDMMC_CmdSendStatus(SDIO_TypeDef *SDIOx, uint32_t Argument) +{ + SDIO_CmdInitTypeDef sdmmc_cmdinit; + uint32_t errorstate; + + sdmmc_cmdinit.Argument = Argument; + sdmmc_cmdinit.CmdIndex = SDMMC_CMD_SEND_STATUS; + sdmmc_cmdinit.Response = SDIO_RESPONSE_SHORT; + sdmmc_cmdinit.WaitForInterrupt = SDIO_WAIT_NO; + sdmmc_cmdinit.CPSM = SDIO_CPSM_ENABLE; + (void)SDIO_SendCommand(SDIOx, &sdmmc_cmdinit); + + /* Check for error conditions */ + errorstate = SDMMC_GetCmdResp1(SDIOx, SDMMC_CMD_SEND_STATUS, SDIO_CMDTIMEOUT); + + return errorstate; +} + +/** + * @brief Send the Status register command and check the response. + * @param SDIOx: Pointer to SDIO register base + * @retval HAL status + */ +uint32_t SDMMC_CmdStatusRegister(SDIO_TypeDef *SDIOx) +{ + SDIO_CmdInitTypeDef sdmmc_cmdinit; + uint32_t errorstate; + + sdmmc_cmdinit.Argument = 0U; + sdmmc_cmdinit.CmdIndex = SDMMC_CMD_SD_APP_STATUS; + sdmmc_cmdinit.Response = SDIO_RESPONSE_SHORT; + sdmmc_cmdinit.WaitForInterrupt = SDIO_WAIT_NO; + sdmmc_cmdinit.CPSM = SDIO_CPSM_ENABLE; + (void)SDIO_SendCommand(SDIOx, &sdmmc_cmdinit); + + /* Check for error conditions */ + errorstate = SDMMC_GetCmdResp1(SDIOx, SDMMC_CMD_SD_APP_STATUS, SDIO_CMDTIMEOUT); + + return errorstate; +} + +/** + * @brief Sends host capacity support information and activates the card's + * initialization process. Send SDMMC_CMD_SEND_OP_COND command + * @param SDIOx: Pointer to SDIO register base + * @parame Argument: Argument used for the command + * @retval HAL status + */ +uint32_t SDMMC_CmdOpCondition(SDIO_TypeDef *SDIOx, uint32_t Argument) +{ + SDIO_CmdInitTypeDef sdmmc_cmdinit; + uint32_t errorstate; + + sdmmc_cmdinit.Argument = Argument; + sdmmc_cmdinit.CmdIndex = SDMMC_CMD_SEND_OP_COND; + sdmmc_cmdinit.Response = SDIO_RESPONSE_SHORT; + sdmmc_cmdinit.WaitForInterrupt = SDIO_WAIT_NO; + sdmmc_cmdinit.CPSM = SDIO_CPSM_ENABLE; + (void)SDIO_SendCommand(SDIOx, &sdmmc_cmdinit); + + /* Check for error conditions */ + errorstate = SDMMC_GetCmdResp3(SDIOx); + + return errorstate; +} + +/** + * @brief Checks switchable function and switch card function. SDMMC_CMD_HS_SWITCH comand + * @param SDIOx: Pointer to SDIO register base + * @parame Argument: Argument used for the command + * @retval HAL status + */ +uint32_t SDMMC_CmdSwitch(SDIO_TypeDef *SDIOx, uint32_t Argument) +{ + SDIO_CmdInitTypeDef sdmmc_cmdinit; + uint32_t errorstate; + + /* Send CMD6 to activate SDR50 Mode and Power Limit 1.44W */ + /* CMD Response: R1 */ + sdmmc_cmdinit.Argument = Argument; /* SDMMC_SDR25_SWITCH_PATTERN */ + sdmmc_cmdinit.CmdIndex = SDMMC_CMD_HS_SWITCH; + sdmmc_cmdinit.Response = SDIO_RESPONSE_SHORT; + sdmmc_cmdinit.WaitForInterrupt = SDIO_WAIT_NO; + sdmmc_cmdinit.CPSM = SDIO_CPSM_ENABLE; + (void)SDIO_SendCommand(SDIOx, &sdmmc_cmdinit); + + /* Check for error conditions */ + errorstate = SDMMC_GetCmdResp1(SDIOx, SDMMC_CMD_HS_SWITCH, SDIO_CMDTIMEOUT); + + return errorstate; +} + +/** + * @} + */ + +/* Private function ----------------------------------------------------------*/ +/** @addtogroup SD_Private_Functions + * @{ + */ + +/** + * @brief Checks for error conditions for CMD0. + * @param hsd: SD handle + * @retval SD Card error state + */ +static uint32_t SDMMC_GetCmdError(SDIO_TypeDef *SDIOx) +{ + /* 8 is the number of required instructions cycles for the below loop statement. + The SDIO_CMDTIMEOUT is expressed in ms */ + register uint32_t count = SDIO_CMDTIMEOUT * (SystemCoreClock / 8U /1000U); + + do + { + if (count-- == 0U) + { + return SDMMC_ERROR_TIMEOUT; + } + + }while(!__SDIO_GET_FLAG(SDIOx, SDIO_FLAG_CMDSENT)); + + /* Clear all the static flags */ + __SDIO_CLEAR_FLAG(SDIOx, SDIO_STATIC_CMD_FLAGS); + + return SDMMC_ERROR_NONE; +} + +/** + * @brief Checks for error conditions for R1 response. + * @param hsd: SD handle + * @param SD_CMD: The sent command index + * @retval SD Card error state + */ +static uint32_t SDMMC_GetCmdResp1(SDIO_TypeDef *SDIOx, uint8_t SD_CMD, uint32_t Timeout) +{ + uint32_t response_r1; + uint32_t sta_reg; + + /* 8 is the number of required instructions cycles for the below loop statement. + The Timeout is expressed in ms */ + register uint32_t count = Timeout * (SystemCoreClock / 8U /1000U); + + do + { + if (count-- == 0U) + { + return SDMMC_ERROR_TIMEOUT; + } + sta_reg = SDIOx->STA; + }while(((sta_reg & (SDIO_FLAG_CCRCFAIL | SDIO_FLAG_CMDREND | SDIO_FLAG_CTIMEOUT)) == 0U) || + ((sta_reg & SDIO_FLAG_CMDACT) != 0U )); + + if(__SDIO_GET_FLAG(SDIOx, SDIO_FLAG_CTIMEOUT)) + { + __SDIO_CLEAR_FLAG(SDIOx, SDIO_FLAG_CTIMEOUT); + + return SDMMC_ERROR_CMD_RSP_TIMEOUT; + } + else if(__SDIO_GET_FLAG(SDIOx, SDIO_FLAG_CCRCFAIL)) + { + __SDIO_CLEAR_FLAG(SDIOx, SDIO_FLAG_CCRCFAIL); + + return SDMMC_ERROR_CMD_CRC_FAIL; + } + else + { + /* Nothing to do */ + } + + /* Clear all the static flags */ + __SDIO_CLEAR_FLAG(SDIOx, SDIO_STATIC_CMD_FLAGS); + + /* Check response received is of desired command */ + if(SDIO_GetCommandResponse(SDIOx) != SD_CMD) + { + return SDMMC_ERROR_CMD_CRC_FAIL; + } + + /* We have received response, retrieve it for analysis */ + response_r1 = SDIO_GetResponse(SDIOx, SDIO_RESP1); + + if((response_r1 & SDMMC_OCR_ERRORBITS) == SDMMC_ALLZERO) + { + return SDMMC_ERROR_NONE; + } + else if((response_r1 & SDMMC_OCR_ADDR_OUT_OF_RANGE) == SDMMC_OCR_ADDR_OUT_OF_RANGE) + { + return SDMMC_ERROR_ADDR_OUT_OF_RANGE; + } + else if((response_r1 & SDMMC_OCR_ADDR_MISALIGNED) == SDMMC_OCR_ADDR_MISALIGNED) + { + return SDMMC_ERROR_ADDR_MISALIGNED; + } + else if((response_r1 & SDMMC_OCR_BLOCK_LEN_ERR) == SDMMC_OCR_BLOCK_LEN_ERR) + { + return SDMMC_ERROR_BLOCK_LEN_ERR; + } + else if((response_r1 & SDMMC_OCR_ERASE_SEQ_ERR) == SDMMC_OCR_ERASE_SEQ_ERR) + { + return SDMMC_ERROR_ERASE_SEQ_ERR; + } + else if((response_r1 & SDMMC_OCR_BAD_ERASE_PARAM) == SDMMC_OCR_BAD_ERASE_PARAM) + { + return SDMMC_ERROR_BAD_ERASE_PARAM; + } + else if((response_r1 & SDMMC_OCR_WRITE_PROT_VIOLATION) == SDMMC_OCR_WRITE_PROT_VIOLATION) + { + return SDMMC_ERROR_WRITE_PROT_VIOLATION; + } + else if((response_r1 & SDMMC_OCR_LOCK_UNLOCK_FAILED) == SDMMC_OCR_LOCK_UNLOCK_FAILED) + { + return SDMMC_ERROR_LOCK_UNLOCK_FAILED; + } + else if((response_r1 & SDMMC_OCR_COM_CRC_FAILED) == SDMMC_OCR_COM_CRC_FAILED) + { + return SDMMC_ERROR_COM_CRC_FAILED; + } + else if((response_r1 & SDMMC_OCR_ILLEGAL_CMD) == SDMMC_OCR_ILLEGAL_CMD) + { + return SDMMC_ERROR_ILLEGAL_CMD; + } + else if((response_r1 & SDMMC_OCR_CARD_ECC_FAILED) == SDMMC_OCR_CARD_ECC_FAILED) + { + return SDMMC_ERROR_CARD_ECC_FAILED; + } + else if((response_r1 & SDMMC_OCR_CC_ERROR) == SDMMC_OCR_CC_ERROR) + { + return SDMMC_ERROR_CC_ERR; + } + else if((response_r1 & SDMMC_OCR_STREAM_READ_UNDERRUN) == SDMMC_OCR_STREAM_READ_UNDERRUN) + { + return SDMMC_ERROR_STREAM_READ_UNDERRUN; + } + else if((response_r1 & SDMMC_OCR_STREAM_WRITE_OVERRUN) == SDMMC_OCR_STREAM_WRITE_OVERRUN) + { + return SDMMC_ERROR_STREAM_WRITE_OVERRUN; + } + else if((response_r1 & SDMMC_OCR_CID_CSD_OVERWRITE) == SDMMC_OCR_CID_CSD_OVERWRITE) + { + return SDMMC_ERROR_CID_CSD_OVERWRITE; + } + else if((response_r1 & SDMMC_OCR_WP_ERASE_SKIP) == SDMMC_OCR_WP_ERASE_SKIP) + { + return SDMMC_ERROR_WP_ERASE_SKIP; + } + else if((response_r1 & SDMMC_OCR_CARD_ECC_DISABLED) == SDMMC_OCR_CARD_ECC_DISABLED) + { + return SDMMC_ERROR_CARD_ECC_DISABLED; + } + else if((response_r1 & SDMMC_OCR_ERASE_RESET) == SDMMC_OCR_ERASE_RESET) + { + return SDMMC_ERROR_ERASE_RESET; + } + else if((response_r1 & SDMMC_OCR_AKE_SEQ_ERROR) == SDMMC_OCR_AKE_SEQ_ERROR) + { + return SDMMC_ERROR_AKE_SEQ_ERR; + } + else + { + return SDMMC_ERROR_GENERAL_UNKNOWN_ERR; + } +} + +/** + * @brief Checks for error conditions for R2 (CID or CSD) response. + * @param hsd: SD handle + * @retval SD Card error state + */ +static uint32_t SDMMC_GetCmdResp2(SDIO_TypeDef *SDIOx) +{ + uint32_t sta_reg; + /* 8 is the number of required instructions cycles for the below loop statement. + The SDIO_CMDTIMEOUT is expressed in ms */ + register uint32_t count = SDIO_CMDTIMEOUT * (SystemCoreClock / 8U /1000U); + + do + { + if (count-- == 0U) + { + return SDMMC_ERROR_TIMEOUT; + } + sta_reg = SDIOx->STA; + }while(((sta_reg & (SDIO_FLAG_CCRCFAIL | SDIO_FLAG_CMDREND | SDIO_FLAG_CTIMEOUT)) == 0U) || + ((sta_reg & SDIO_FLAG_CMDACT) != 0U )); + + if (__SDIO_GET_FLAG(SDIOx, SDIO_FLAG_CTIMEOUT)) + { + __SDIO_CLEAR_FLAG(SDIOx, SDIO_FLAG_CTIMEOUT); + + return SDMMC_ERROR_CMD_RSP_TIMEOUT; + } + else if (__SDIO_GET_FLAG(SDIOx, SDIO_FLAG_CCRCFAIL)) + { + __SDIO_CLEAR_FLAG(SDIOx, SDIO_FLAG_CCRCFAIL); + + return SDMMC_ERROR_CMD_CRC_FAIL; + } + else + { + /* No error flag set */ + /* Clear all the static flags */ + __SDIO_CLEAR_FLAG(SDIOx, SDIO_STATIC_CMD_FLAGS); + } + + return SDMMC_ERROR_NONE; +} + +/** + * @brief Checks for error conditions for R3 (OCR) response. + * @param hsd: SD handle + * @retval SD Card error state + */ +static uint32_t SDMMC_GetCmdResp3(SDIO_TypeDef *SDIOx) +{ + uint32_t sta_reg; + /* 8 is the number of required instructions cycles for the below loop statement. + The SDIO_CMDTIMEOUT is expressed in ms */ + register uint32_t count = SDIO_CMDTIMEOUT * (SystemCoreClock / 8U /1000U); + + do + { + if (count-- == 0U) + { + return SDMMC_ERROR_TIMEOUT; + } + sta_reg = SDIOx->STA; + }while(((sta_reg & (SDIO_FLAG_CCRCFAIL | SDIO_FLAG_CMDREND | SDIO_FLAG_CTIMEOUT)) == 0U) || + ((sta_reg & SDIO_FLAG_CMDACT) != 0U )); + + if(__SDIO_GET_FLAG(SDIOx, SDIO_FLAG_CTIMEOUT)) + { + __SDIO_CLEAR_FLAG(SDIOx, SDIO_FLAG_CTIMEOUT); + + return SDMMC_ERROR_CMD_RSP_TIMEOUT; + } + else + { + /* Clear all the static flags */ + __SDIO_CLEAR_FLAG(SDIOx, SDIO_STATIC_CMD_FLAGS); + } + + return SDMMC_ERROR_NONE; +} + +/** + * @brief Checks for error conditions for R6 (RCA) response. + * @param hsd: SD handle + * @param SD_CMD: The sent command index + * @param pRCA: Pointer to the variable that will contain the SD card relative + * address RCA + * @retval SD Card error state + */ +static uint32_t SDMMC_GetCmdResp6(SDIO_TypeDef *SDIOx, uint8_t SD_CMD, uint16_t *pRCA) +{ + uint32_t response_r1; + uint32_t sta_reg; + + /* 8 is the number of required instructions cycles for the below loop statement. + The SDIO_CMDTIMEOUT is expressed in ms */ + register uint32_t count = SDIO_CMDTIMEOUT * (SystemCoreClock / 8U /1000U); + + do + { + if (count-- == 0U) + { + return SDMMC_ERROR_TIMEOUT; + } + sta_reg = SDIOx->STA; + }while(((sta_reg & (SDIO_FLAG_CCRCFAIL | SDIO_FLAG_CMDREND | SDIO_FLAG_CTIMEOUT)) == 0U) || + ((sta_reg & SDIO_FLAG_CMDACT) != 0U )); + + if(__SDIO_GET_FLAG(SDIOx, SDIO_FLAG_CTIMEOUT)) + { + __SDIO_CLEAR_FLAG(SDIOx, SDIO_FLAG_CTIMEOUT); + + return SDMMC_ERROR_CMD_RSP_TIMEOUT; + } + else if(__SDIO_GET_FLAG(SDIOx, SDIO_FLAG_CCRCFAIL)) + { + __SDIO_CLEAR_FLAG(SDIOx, SDIO_FLAG_CCRCFAIL); + + return SDMMC_ERROR_CMD_CRC_FAIL; + } + else + { + /* Nothing to do */ + } + + /* Check response received is of desired command */ + if(SDIO_GetCommandResponse(SDIOx) != SD_CMD) + { + return SDMMC_ERROR_CMD_CRC_FAIL; + } + + /* Clear all the static flags */ + __SDIO_CLEAR_FLAG(SDIOx, SDIO_STATIC_CMD_FLAGS); + + /* We have received response, retrieve it. */ + response_r1 = SDIO_GetResponse(SDIOx, SDIO_RESP1); + + if((response_r1 & (SDMMC_R6_GENERAL_UNKNOWN_ERROR | SDMMC_R6_ILLEGAL_CMD | SDMMC_R6_COM_CRC_FAILED)) == SDMMC_ALLZERO) + { + *pRCA = (uint16_t) (response_r1 >> 16); + + return SDMMC_ERROR_NONE; + } + else if((response_r1 & SDMMC_R6_ILLEGAL_CMD) == SDMMC_R6_ILLEGAL_CMD) + { + return SDMMC_ERROR_ILLEGAL_CMD; + } + else if((response_r1 & SDMMC_R6_COM_CRC_FAILED) == SDMMC_R6_COM_CRC_FAILED) + { + return SDMMC_ERROR_COM_CRC_FAILED; + } + else + { + return SDMMC_ERROR_GENERAL_UNKNOWN_ERR; + } +} + +/** + * @brief Checks for error conditions for R7 response. + * @param hsd: SD handle + * @retval SD Card error state + */ +static uint32_t SDMMC_GetCmdResp7(SDIO_TypeDef *SDIOx) +{ + uint32_t sta_reg; + /* 8 is the number of required instructions cycles for the below loop statement. + The SDIO_CMDTIMEOUT is expressed in ms */ + register uint32_t count = SDIO_CMDTIMEOUT * (SystemCoreClock / 8U /1000U); + + do + { + if (count-- == 0U) + { + return SDMMC_ERROR_TIMEOUT; + } + sta_reg = SDIOx->STA; + }while(((sta_reg & (SDIO_FLAG_CCRCFAIL | SDIO_FLAG_CMDREND | SDIO_FLAG_CTIMEOUT)) == 0U) || + ((sta_reg & SDIO_FLAG_CMDACT) != 0U )); + + if(__SDIO_GET_FLAG(SDIOx, SDIO_FLAG_CTIMEOUT)) + { + /* Card is SD V2.0 compliant */ + __SDIO_CLEAR_FLAG(SDIOx, SDIO_FLAG_CTIMEOUT); + + return SDMMC_ERROR_CMD_RSP_TIMEOUT; + } + else if(__SDIO_GET_FLAG(SDIOx, SDIO_FLAG_CCRCFAIL)) + { + /* Card is SD V2.0 compliant */ + __SDIO_CLEAR_FLAG(SDIOx, SDIO_FLAG_CCRCFAIL); + + return SDMMC_ERROR_CMD_CRC_FAIL; + } + else + { + /* Nothing to do */ + } + + if(__SDIO_GET_FLAG(SDIOx, SDIO_FLAG_CMDREND)) + { + /* Card is SD V2.0 compliant */ + __SDIO_CLEAR_FLAG(SDIOx, SDIO_FLAG_CMDREND); + } + + return SDMMC_ERROR_NONE; + +} + +/** + * @} + */ + +#endif /* HAL_SD_MODULE_ENABLED || HAL_MMC_MODULE_ENABLED */ +/** + * @} + */ + +/** + * @} + */ + +#endif /* SDIO */ + +/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/ diff --git a/LLDrivers/src/stm32f1xx_ll_spi.c b/LLDrivers/src/stm32f1xx_ll_spi.c new file mode 100644 index 0000000..6a971a1 --- /dev/null +++ b/LLDrivers/src/stm32f1xx_ll_spi.c @@ -0,0 +1,530 @@ +/** + ****************************************************************************** + * @file stm32f1xx_ll_spi.c + * @author MCD Application Team + * @brief SPI LL module driver. + ****************************************************************************** + * @attention + * + *

© Copyright (c) 2016 STMicroelectronics. + * All rights reserved.

+ * + * This software component is licensed by ST under BSD 3-Clause license, + * the "License"; You may not use this file except in compliance with the + * License. You may obtain a copy of the License at: + * opensource.org/licenses/BSD-3-Clause + * + ****************************************************************************** + */ +#if defined(USE_FULL_LL_DRIVER) + +/* Includes ------------------------------------------------------------------*/ +#include "stm32f1xx_ll_spi.h" +#include "stm32f1xx_ll_bus.h" +#include "stm32f1xx_ll_rcc.h" + +#ifdef USE_FULL_ASSERT +#include "stm32_assert.h" +#else +#define assert_param(expr) ((void)0U) +#endif + +/** @addtogroup STM32F1xx_LL_Driver + * @{ + */ + +#if defined (SPI1) || defined (SPI2) || defined (SPI3) + +/** @addtogroup SPI_LL + * @{ + */ + +/* Private types -------------------------------------------------------------*/ +/* Private variables ---------------------------------------------------------*/ + +/* Private constants ---------------------------------------------------------*/ +/** @defgroup SPI_LL_Private_Constants SPI Private Constants + * @{ + */ +/* SPI registers Masks */ +#define SPI_CR1_CLEAR_MASK (SPI_CR1_CPHA | SPI_CR1_CPOL | SPI_CR1_MSTR | \ + SPI_CR1_BR | SPI_CR1_LSBFIRST | SPI_CR1_SSI | \ + SPI_CR1_SSM | SPI_CR1_RXONLY | SPI_CR1_DFF | \ + SPI_CR1_CRCNEXT | SPI_CR1_CRCEN | SPI_CR1_BIDIOE | \ + SPI_CR1_BIDIMODE) +/** + * @} + */ + +/* Private macros ------------------------------------------------------------*/ +/** @defgroup SPI_LL_Private_Macros SPI Private Macros + * @{ + */ +#define IS_LL_SPI_TRANSFER_DIRECTION(__VALUE__) (((__VALUE__) == LL_SPI_FULL_DUPLEX) \ + || ((__VALUE__) == LL_SPI_SIMPLEX_RX) \ + || ((__VALUE__) == LL_SPI_HALF_DUPLEX_RX) \ + || ((__VALUE__) == LL_SPI_HALF_DUPLEX_TX)) + +#define IS_LL_SPI_MODE(__VALUE__) (((__VALUE__) == LL_SPI_MODE_MASTER) \ + || ((__VALUE__) == LL_SPI_MODE_SLAVE)) + +#define IS_LL_SPI_DATAWIDTH(__VALUE__) (((__VALUE__) == LL_SPI_DATAWIDTH_8BIT) \ + || ((__VALUE__) == LL_SPI_DATAWIDTH_16BIT)) + +#define IS_LL_SPI_POLARITY(__VALUE__) (((__VALUE__) == LL_SPI_POLARITY_LOW) \ + || ((__VALUE__) == LL_SPI_POLARITY_HIGH)) + +#define IS_LL_SPI_PHASE(__VALUE__) (((__VALUE__) == LL_SPI_PHASE_1EDGE) \ + || ((__VALUE__) == LL_SPI_PHASE_2EDGE)) + +#define IS_LL_SPI_NSS(__VALUE__) (((__VALUE__) == LL_SPI_NSS_SOFT) \ + || ((__VALUE__) == LL_SPI_NSS_HARD_INPUT) \ + || ((__VALUE__) == LL_SPI_NSS_HARD_OUTPUT)) + +#define IS_LL_SPI_BAUDRATE(__VALUE__) (((__VALUE__) == LL_SPI_BAUDRATEPRESCALER_DIV2) \ + || ((__VALUE__) == LL_SPI_BAUDRATEPRESCALER_DIV4) \ + || ((__VALUE__) == LL_SPI_BAUDRATEPRESCALER_DIV8) \ + || ((__VALUE__) == LL_SPI_BAUDRATEPRESCALER_DIV16) \ + || ((__VALUE__) == LL_SPI_BAUDRATEPRESCALER_DIV32) \ + || ((__VALUE__) == LL_SPI_BAUDRATEPRESCALER_DIV64) \ + || ((__VALUE__) == LL_SPI_BAUDRATEPRESCALER_DIV128) \ + || ((__VALUE__) == LL_SPI_BAUDRATEPRESCALER_DIV256)) + +#define IS_LL_SPI_BITORDER(__VALUE__) (((__VALUE__) == LL_SPI_LSB_FIRST) \ + || ((__VALUE__) == LL_SPI_MSB_FIRST)) + +#define IS_LL_SPI_CRCCALCULATION(__VALUE__) (((__VALUE__) == LL_SPI_CRCCALCULATION_ENABLE) \ + || ((__VALUE__) == LL_SPI_CRCCALCULATION_DISABLE)) + +#define IS_LL_SPI_CRC_POLYNOMIAL(__VALUE__) ((__VALUE__) >= 0x1U) + +/** + * @} + */ + +/* Private function prototypes -----------------------------------------------*/ + +/* Exported functions --------------------------------------------------------*/ +/** @addtogroup SPI_LL_Exported_Functions + * @{ + */ + +/** @addtogroup SPI_LL_EF_Init + * @{ + */ + +/** + * @brief De-initialize the SPI registers to their default reset values. + * @param SPIx SPI Instance + * @retval An ErrorStatus enumeration value: + * - SUCCESS: SPI registers are de-initialized + * - ERROR: SPI registers are not de-initialized + */ +ErrorStatus LL_SPI_DeInit(SPI_TypeDef *SPIx) +{ + ErrorStatus status = ERROR; + + /* Check the parameters */ + assert_param(IS_SPI_ALL_INSTANCE(SPIx)); + +#if defined(SPI1) + if (SPIx == SPI1) + { + /* Force reset of SPI clock */ + LL_APB2_GRP1_ForceReset(LL_APB2_GRP1_PERIPH_SPI1); + + /* Release reset of SPI clock */ + LL_APB2_GRP1_ReleaseReset(LL_APB2_GRP1_PERIPH_SPI1); + + status = SUCCESS; + } +#endif /* SPI1 */ +#if defined(SPI2) + if (SPIx == SPI2) + { + /* Force reset of SPI clock */ + LL_APB1_GRP1_ForceReset(LL_APB1_GRP1_PERIPH_SPI2); + + /* Release reset of SPI clock */ + LL_APB1_GRP1_ReleaseReset(LL_APB1_GRP1_PERIPH_SPI2); + + status = SUCCESS; + } +#endif /* SPI2 */ +#if defined(SPI3) + if (SPIx == SPI3) + { + /* Force reset of SPI clock */ + LL_APB1_GRP1_ForceReset(LL_APB1_GRP1_PERIPH_SPI3); + + /* Release reset of SPI clock */ + LL_APB1_GRP1_ReleaseReset(LL_APB1_GRP1_PERIPH_SPI3); + + status = SUCCESS; + } +#endif /* SPI3 */ + + return status; +} + +/** + * @brief Initialize the SPI registers according to the specified parameters in SPI_InitStruct. + * @note As some bits in SPI configuration registers can only be written when the SPI is disabled (SPI_CR1_SPE bit =0), + * SPI peripheral should be in disabled state prior calling this function. Otherwise, ERROR result will be returned. + * @param SPIx SPI Instance + * @param SPI_InitStruct pointer to a @ref LL_SPI_InitTypeDef structure + * @retval An ErrorStatus enumeration value. (Return always SUCCESS) + */ +ErrorStatus LL_SPI_Init(SPI_TypeDef *SPIx, LL_SPI_InitTypeDef *SPI_InitStruct) +{ + ErrorStatus status = ERROR; + + /* Check the SPI Instance SPIx*/ + assert_param(IS_SPI_ALL_INSTANCE(SPIx)); + + /* Check the SPI parameters from SPI_InitStruct*/ + assert_param(IS_LL_SPI_TRANSFER_DIRECTION(SPI_InitStruct->TransferDirection)); + assert_param(IS_LL_SPI_MODE(SPI_InitStruct->Mode)); + assert_param(IS_LL_SPI_DATAWIDTH(SPI_InitStruct->DataWidth)); + assert_param(IS_LL_SPI_POLARITY(SPI_InitStruct->ClockPolarity)); + assert_param(IS_LL_SPI_PHASE(SPI_InitStruct->ClockPhase)); + assert_param(IS_LL_SPI_NSS(SPI_InitStruct->NSS)); + assert_param(IS_LL_SPI_BAUDRATE(SPI_InitStruct->BaudRate)); + assert_param(IS_LL_SPI_BITORDER(SPI_InitStruct->BitOrder)); + assert_param(IS_LL_SPI_CRCCALCULATION(SPI_InitStruct->CRCCalculation)); + + if (LL_SPI_IsEnabled(SPIx) == 0x00000000U) + { + /*---------------------------- SPIx CR1 Configuration ------------------------ + * Configure SPIx CR1 with parameters: + * - TransferDirection: SPI_CR1_BIDIMODE, SPI_CR1_BIDIOE and SPI_CR1_RXONLY bits + * - Master/Slave Mode: SPI_CR1_MSTR bit + * - DataWidth: SPI_CR1_DFF bit + * - ClockPolarity: SPI_CR1_CPOL bit + * - ClockPhase: SPI_CR1_CPHA bit + * - NSS management: SPI_CR1_SSM bit + * - BaudRate prescaler: SPI_CR1_BR[2:0] bits + * - BitOrder: SPI_CR1_LSBFIRST bit + * - CRCCalculation: SPI_CR1_CRCEN bit + */ + MODIFY_REG(SPIx->CR1, + SPI_CR1_CLEAR_MASK, + SPI_InitStruct->TransferDirection | SPI_InitStruct->Mode | SPI_InitStruct->DataWidth | + SPI_InitStruct->ClockPolarity | SPI_InitStruct->ClockPhase | + SPI_InitStruct->NSS | SPI_InitStruct->BaudRate | + SPI_InitStruct->BitOrder | SPI_InitStruct->CRCCalculation); + + /*---------------------------- SPIx CR2 Configuration ------------------------ + * Configure SPIx CR2 with parameters: + * - NSS management: SSOE bit + */ + MODIFY_REG(SPIx->CR2, SPI_CR2_SSOE, (SPI_InitStruct->NSS >> 16U)); + + /*---------------------------- SPIx CRCPR Configuration ---------------------- + * Configure SPIx CRCPR with parameters: + * - CRCPoly: CRCPOLY[15:0] bits + */ + if (SPI_InitStruct->CRCCalculation == LL_SPI_CRCCALCULATION_ENABLE) + { + assert_param(IS_LL_SPI_CRC_POLYNOMIAL(SPI_InitStruct->CRCPoly)); + LL_SPI_SetCRCPolynomial(SPIx, SPI_InitStruct->CRCPoly); + } + status = SUCCESS; + } + +#if defined (SPI_I2S_SUPPORT) + /* Activate the SPI mode (Reset I2SMOD bit in I2SCFGR register) */ + CLEAR_BIT(SPIx->I2SCFGR, SPI_I2SCFGR_I2SMOD); +#endif /* SPI_I2S_SUPPORT */ + return status; +} + +/** + * @brief Set each @ref LL_SPI_InitTypeDef field to default value. + * @param SPI_InitStruct pointer to a @ref LL_SPI_InitTypeDef structure + * whose fields will be set to default values. + * @retval None + */ +void LL_SPI_StructInit(LL_SPI_InitTypeDef *SPI_InitStruct) +{ + /* Set SPI_InitStruct fields to default values */ + SPI_InitStruct->TransferDirection = LL_SPI_FULL_DUPLEX; + SPI_InitStruct->Mode = LL_SPI_MODE_SLAVE; + SPI_InitStruct->DataWidth = LL_SPI_DATAWIDTH_8BIT; + SPI_InitStruct->ClockPolarity = LL_SPI_POLARITY_LOW; + SPI_InitStruct->ClockPhase = LL_SPI_PHASE_1EDGE; + SPI_InitStruct->NSS = LL_SPI_NSS_HARD_INPUT; + SPI_InitStruct->BaudRate = LL_SPI_BAUDRATEPRESCALER_DIV2; + SPI_InitStruct->BitOrder = LL_SPI_MSB_FIRST; + SPI_InitStruct->CRCCalculation = LL_SPI_CRCCALCULATION_DISABLE; + SPI_InitStruct->CRCPoly = 7U; +} + +/** + * @} + */ + +/** + * @} + */ + +/** + * @} + */ + +#if defined(SPI_I2S_SUPPORT) +/** @addtogroup I2S_LL + * @{ + */ + +/* Private types -------------------------------------------------------------*/ +/* Private variables ---------------------------------------------------------*/ +/* Private constants ---------------------------------------------------------*/ +/** @defgroup I2S_LL_Private_Constants I2S Private Constants + * @{ + */ +/* I2S registers Masks */ +#define I2S_I2SCFGR_CLEAR_MASK (SPI_I2SCFGR_CHLEN | SPI_I2SCFGR_DATLEN | \ + SPI_I2SCFGR_CKPOL | SPI_I2SCFGR_I2SSTD | \ + SPI_I2SCFGR_I2SCFG | SPI_I2SCFGR_I2SMOD ) + +#define I2S_I2SPR_CLEAR_MASK 0x0002U +/** + * @} + */ +/* Private macros ------------------------------------------------------------*/ +/** @defgroup I2S_LL_Private_Macros I2S Private Macros + * @{ + */ + +#define IS_LL_I2S_DATAFORMAT(__VALUE__) (((__VALUE__) == LL_I2S_DATAFORMAT_16B) \ + || ((__VALUE__) == LL_I2S_DATAFORMAT_16B_EXTENDED) \ + || ((__VALUE__) == LL_I2S_DATAFORMAT_24B) \ + || ((__VALUE__) == LL_I2S_DATAFORMAT_32B)) + +#define IS_LL_I2S_CPOL(__VALUE__) (((__VALUE__) == LL_I2S_POLARITY_LOW) \ + || ((__VALUE__) == LL_I2S_POLARITY_HIGH)) + +#define IS_LL_I2S_STANDARD(__VALUE__) (((__VALUE__) == LL_I2S_STANDARD_PHILIPS) \ + || ((__VALUE__) == LL_I2S_STANDARD_MSB) \ + || ((__VALUE__) == LL_I2S_STANDARD_LSB) \ + || ((__VALUE__) == LL_I2S_STANDARD_PCM_SHORT) \ + || ((__VALUE__) == LL_I2S_STANDARD_PCM_LONG)) + +#define IS_LL_I2S_MODE(__VALUE__) (((__VALUE__) == LL_I2S_MODE_SLAVE_TX) \ + || ((__VALUE__) == LL_I2S_MODE_SLAVE_RX) \ + || ((__VALUE__) == LL_I2S_MODE_MASTER_TX) \ + || ((__VALUE__) == LL_I2S_MODE_MASTER_RX)) + +#define IS_LL_I2S_MCLK_OUTPUT(__VALUE__) (((__VALUE__) == LL_I2S_MCLK_OUTPUT_ENABLE) \ + || ((__VALUE__) == LL_I2S_MCLK_OUTPUT_DISABLE)) + +#define IS_LL_I2S_AUDIO_FREQ(__VALUE__) ((((__VALUE__) >= LL_I2S_AUDIOFREQ_8K) \ + && ((__VALUE__) <= LL_I2S_AUDIOFREQ_192K)) \ + || ((__VALUE__) == LL_I2S_AUDIOFREQ_DEFAULT)) + +#define IS_LL_I2S_PRESCALER_LINEAR(__VALUE__) ((__VALUE__) >= 0x2U) + +#define IS_LL_I2S_PRESCALER_PARITY(__VALUE__) (((__VALUE__) == LL_I2S_PRESCALER_PARITY_EVEN) \ + || ((__VALUE__) == LL_I2S_PRESCALER_PARITY_ODD)) +/** + * @} + */ + +/* Private function prototypes -----------------------------------------------*/ + +/* Exported functions --------------------------------------------------------*/ +/** @addtogroup I2S_LL_Exported_Functions + * @{ + */ + +/** @addtogroup I2S_LL_EF_Init + * @{ + */ + +/** + * @brief De-initialize the SPI/I2S registers to their default reset values. + * @param SPIx SPI Instance + * @retval An ErrorStatus enumeration value: + * - SUCCESS: SPI registers are de-initialized + * - ERROR: SPI registers are not de-initialized + */ +ErrorStatus LL_I2S_DeInit(SPI_TypeDef *SPIx) +{ + return LL_SPI_DeInit(SPIx); +} + +/** + * @brief Initializes the SPI/I2S registers according to the specified parameters in I2S_InitStruct. + * @note As some bits in SPI configuration registers can only be written when the SPI is disabled (SPI_CR1_SPE bit =0), + * SPI peripheral should be in disabled state prior calling this function. Otherwise, ERROR result will be returned. + * @param SPIx SPI Instance + * @param I2S_InitStruct pointer to a @ref LL_I2S_InitTypeDef structure + * @retval An ErrorStatus enumeration value: + * - SUCCESS: SPI registers are Initialized + * - ERROR: SPI registers are not Initialized + */ +ErrorStatus LL_I2S_Init(SPI_TypeDef *SPIx, LL_I2S_InitTypeDef *I2S_InitStruct) +{ + uint32_t i2sdiv = 2U; + uint32_t i2sodd = 0U; + uint32_t packetlength = 1U; + uint32_t tmp; + LL_RCC_ClocksTypeDef rcc_clocks; + uint32_t sourceclock; + ErrorStatus status = ERROR; + + /* Check the I2S parameters */ + assert_param(IS_I2S_ALL_INSTANCE(SPIx)); + assert_param(IS_LL_I2S_MODE(I2S_InitStruct->Mode)); + assert_param(IS_LL_I2S_STANDARD(I2S_InitStruct->Standard)); + assert_param(IS_LL_I2S_DATAFORMAT(I2S_InitStruct->DataFormat)); + assert_param(IS_LL_I2S_MCLK_OUTPUT(I2S_InitStruct->MCLKOutput)); + assert_param(IS_LL_I2S_AUDIO_FREQ(I2S_InitStruct->AudioFreq)); + assert_param(IS_LL_I2S_CPOL(I2S_InitStruct->ClockPolarity)); + + if (LL_I2S_IsEnabled(SPIx) == 0x00000000U) + { + /*---------------------------- SPIx I2SCFGR Configuration -------------------- + * Configure SPIx I2SCFGR with parameters: + * - Mode: SPI_I2SCFGR_I2SCFG[1:0] bit + * - Standard: SPI_I2SCFGR_I2SSTD[1:0] and SPI_I2SCFGR_PCMSYNC bits + * - DataFormat: SPI_I2SCFGR_CHLEN and SPI_I2SCFGR_DATLEN bits + * - ClockPolarity: SPI_I2SCFGR_CKPOL bit + */ + + /* Write to SPIx I2SCFGR */ + MODIFY_REG(SPIx->I2SCFGR, + I2S_I2SCFGR_CLEAR_MASK, + I2S_InitStruct->Mode | I2S_InitStruct->Standard | + I2S_InitStruct->DataFormat | I2S_InitStruct->ClockPolarity | + SPI_I2SCFGR_I2SMOD); + + /*---------------------------- SPIx I2SPR Configuration ---------------------- + * Configure SPIx I2SPR with parameters: + * - MCLKOutput: SPI_I2SPR_MCKOE bit + * - AudioFreq: SPI_I2SPR_I2SDIV[7:0] and SPI_I2SPR_ODD bits + */ + + /* If the requested audio frequency is not the default, compute the prescaler (i2sodd, i2sdiv) + * else, default values are used: i2sodd = 0U, i2sdiv = 2U. + */ + if (I2S_InitStruct->AudioFreq != LL_I2S_AUDIOFREQ_DEFAULT) + { + /* Check the frame length (For the Prescaler computing) + * Default value: LL_I2S_DATAFORMAT_16B (packetlength = 1U). + */ + if (I2S_InitStruct->DataFormat != LL_I2S_DATAFORMAT_16B) + { + /* Packet length is 32 bits */ + packetlength = 2U; + } + + /* I2S Clock source is System clock: Get System Clock frequency */ + LL_RCC_GetSystemClocksFreq(&rcc_clocks); + + /* Get the source clock value: based on System Clock value */ + sourceclock = rcc_clocks.SYSCLK_Frequency; + + /* Compute the Real divider depending on the MCLK output state with a floating point */ + if (I2S_InitStruct->MCLKOutput == LL_I2S_MCLK_OUTPUT_ENABLE) + { + /* MCLK output is enabled */ + tmp = (((((sourceclock / 256U) * 10U) / I2S_InitStruct->AudioFreq)) + 5U); + } + else + { + /* MCLK output is disabled */ + tmp = (((((sourceclock / (32U * packetlength)) * 10U) / I2S_InitStruct->AudioFreq)) + 5U); + } + + /* Remove the floating point */ + tmp = tmp / 10U; + + /* Check the parity of the divider */ + i2sodd = (tmp & (uint16_t)0x0001U); + + /* Compute the i2sdiv prescaler */ + i2sdiv = ((tmp - i2sodd) / 2U); + + /* Get the Mask for the Odd bit (SPI_I2SPR[8]) register */ + i2sodd = (i2sodd << 8U); + } + + /* Test if the divider is 1 or 0 or greater than 0xFF */ + if ((i2sdiv < 2U) || (i2sdiv > 0xFFU)) + { + /* Set the default values */ + i2sdiv = 2U; + i2sodd = 0U; + } + + /* Write to SPIx I2SPR register the computed value */ + WRITE_REG(SPIx->I2SPR, i2sdiv | i2sodd | I2S_InitStruct->MCLKOutput); + + status = SUCCESS; + } + return status; +} + +/** + * @brief Set each @ref LL_I2S_InitTypeDef field to default value. + * @param I2S_InitStruct pointer to a @ref LL_I2S_InitTypeDef structure + * whose fields will be set to default values. + * @retval None + */ +void LL_I2S_StructInit(LL_I2S_InitTypeDef *I2S_InitStruct) +{ + /*--------------- Reset I2S init structure parameters values -----------------*/ + I2S_InitStruct->Mode = LL_I2S_MODE_SLAVE_TX; + I2S_InitStruct->Standard = LL_I2S_STANDARD_PHILIPS; + I2S_InitStruct->DataFormat = LL_I2S_DATAFORMAT_16B; + I2S_InitStruct->MCLKOutput = LL_I2S_MCLK_OUTPUT_DISABLE; + I2S_InitStruct->AudioFreq = LL_I2S_AUDIOFREQ_DEFAULT; + I2S_InitStruct->ClockPolarity = LL_I2S_POLARITY_LOW; +} + +/** + * @brief Set linear and parity prescaler. + * @note To calculate value of PrescalerLinear(I2SDIV[7:0] bits) and PrescalerParity(ODD bit)\n + * Check Audio frequency table and formulas inside Reference Manual (SPI/I2S). + * @param SPIx SPI Instance + * @param PrescalerLinear value Min_Data=0x02 and Max_Data=0xFF. + * @param PrescalerParity This parameter can be one of the following values: + * @arg @ref LL_I2S_PRESCALER_PARITY_EVEN + * @arg @ref LL_I2S_PRESCALER_PARITY_ODD + * @retval None + */ +void LL_I2S_ConfigPrescaler(SPI_TypeDef *SPIx, uint32_t PrescalerLinear, uint32_t PrescalerParity) +{ + /* Check the I2S parameters */ + assert_param(IS_I2S_ALL_INSTANCE(SPIx)); + assert_param(IS_LL_I2S_PRESCALER_LINEAR(PrescalerLinear)); + assert_param(IS_LL_I2S_PRESCALER_PARITY(PrescalerParity)); + + /* Write to SPIx I2SPR */ + MODIFY_REG(SPIx->I2SPR, SPI_I2SPR_I2SDIV | SPI_I2SPR_ODD, PrescalerLinear | (PrescalerParity << 8U)); +} + +/** + * @} + */ + +/** + * @} + */ + +/** + * @} + */ +#endif /* SPI_I2S_SUPPORT */ + +#endif /* defined (SPI1) || defined (SPI2) || defined (SPI3) */ + +/** + * @} + */ + +#endif /* USE_FULL_LL_DRIVER */ + +/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/ diff --git a/LLDrivers/src/stm32f1xx_ll_tim.c b/LLDrivers/src/stm32f1xx_ll_tim.c new file mode 100644 index 0000000..dd522e3 --- /dev/null +++ b/LLDrivers/src/stm32f1xx_ll_tim.c @@ -0,0 +1,1198 @@ +/** + ****************************************************************************** + * @file stm32f1xx_ll_tim.c + * @author MCD Application Team + * @brief TIM LL module driver. + ****************************************************************************** + * @attention + * + *

© Copyright (c) 2016 STMicroelectronics. + * All rights reserved.

+ * + * This software component is licensed by ST under BSD 3-Clause license, + * the "License"; You may not use this file except in compliance with the + * License. You may obtain a copy of the License at: + * opensource.org/licenses/BSD-3-Clause + * + ****************************************************************************** + */ +#if defined(USE_FULL_LL_DRIVER) + +/* Includes ------------------------------------------------------------------*/ +#include "stm32f1xx_ll_tim.h" +#include "stm32f1xx_ll_bus.h" + +#ifdef USE_FULL_ASSERT +#include "stm32_assert.h" +#else +#define assert_param(expr) ((void)0U) +#endif /* USE_FULL_ASSERT */ + +/** @addtogroup STM32F1xx_LL_Driver + * @{ + */ + +#if defined (TIM1) || defined (TIM2) || defined (TIM3) || defined (TIM4) || defined (TIM5) || defined (TIM6) || defined (TIM7) || defined (TIM8) || defined (TIM9) || defined (TIM10) || defined (TIM11) || defined (TIM12) || defined (TIM13) || defined (TIM14) || defined (TIM15) || defined (TIM16) || defined (TIM17) + +/** @addtogroup TIM_LL + * @{ + */ + +/* Private types -------------------------------------------------------------*/ +/* Private variables ---------------------------------------------------------*/ +/* Private constants ---------------------------------------------------------*/ +/* Private macros ------------------------------------------------------------*/ +/** @addtogroup TIM_LL_Private_Macros + * @{ + */ +#define IS_LL_TIM_COUNTERMODE(__VALUE__) (((__VALUE__) == LL_TIM_COUNTERMODE_UP) \ + || ((__VALUE__) == LL_TIM_COUNTERMODE_DOWN) \ + || ((__VALUE__) == LL_TIM_COUNTERMODE_CENTER_UP) \ + || ((__VALUE__) == LL_TIM_COUNTERMODE_CENTER_DOWN) \ + || ((__VALUE__) == LL_TIM_COUNTERMODE_CENTER_UP_DOWN)) + +#define IS_LL_TIM_CLOCKDIVISION(__VALUE__) (((__VALUE__) == LL_TIM_CLOCKDIVISION_DIV1) \ + || ((__VALUE__) == LL_TIM_CLOCKDIVISION_DIV2) \ + || ((__VALUE__) == LL_TIM_CLOCKDIVISION_DIV4)) + +#define IS_LL_TIM_OCMODE(__VALUE__) (((__VALUE__) == LL_TIM_OCMODE_FROZEN) \ + || ((__VALUE__) == LL_TIM_OCMODE_ACTIVE) \ + || ((__VALUE__) == LL_TIM_OCMODE_INACTIVE) \ + || ((__VALUE__) == LL_TIM_OCMODE_TOGGLE) \ + || ((__VALUE__) == LL_TIM_OCMODE_FORCED_INACTIVE) \ + || ((__VALUE__) == LL_TIM_OCMODE_FORCED_ACTIVE) \ + || ((__VALUE__) == LL_TIM_OCMODE_PWM1) \ + || ((__VALUE__) == LL_TIM_OCMODE_PWM2)) + +#define IS_LL_TIM_OCSTATE(__VALUE__) (((__VALUE__) == LL_TIM_OCSTATE_DISABLE) \ + || ((__VALUE__) == LL_TIM_OCSTATE_ENABLE)) + +#define IS_LL_TIM_OCPOLARITY(__VALUE__) (((__VALUE__) == LL_TIM_OCPOLARITY_HIGH) \ + || ((__VALUE__) == LL_TIM_OCPOLARITY_LOW)) + +#define IS_LL_TIM_OCIDLESTATE(__VALUE__) (((__VALUE__) == LL_TIM_OCIDLESTATE_LOW) \ + || ((__VALUE__) == LL_TIM_OCIDLESTATE_HIGH)) + +#define IS_LL_TIM_ACTIVEINPUT(__VALUE__) (((__VALUE__) == LL_TIM_ACTIVEINPUT_DIRECTTI) \ + || ((__VALUE__) == LL_TIM_ACTIVEINPUT_INDIRECTTI) \ + || ((__VALUE__) == LL_TIM_ACTIVEINPUT_TRC)) + +#define IS_LL_TIM_ICPSC(__VALUE__) (((__VALUE__) == LL_TIM_ICPSC_DIV1) \ + || ((__VALUE__) == LL_TIM_ICPSC_DIV2) \ + || ((__VALUE__) == LL_TIM_ICPSC_DIV4) \ + || ((__VALUE__) == LL_TIM_ICPSC_DIV8)) + +#define IS_LL_TIM_IC_FILTER(__VALUE__) (((__VALUE__) == LL_TIM_IC_FILTER_FDIV1) \ + || ((__VALUE__) == LL_TIM_IC_FILTER_FDIV1_N2) \ + || ((__VALUE__) == LL_TIM_IC_FILTER_FDIV1_N4) \ + || ((__VALUE__) == LL_TIM_IC_FILTER_FDIV1_N8) \ + || ((__VALUE__) == LL_TIM_IC_FILTER_FDIV2_N6) \ + || ((__VALUE__) == LL_TIM_IC_FILTER_FDIV2_N8) \ + || ((__VALUE__) == LL_TIM_IC_FILTER_FDIV4_N6) \ + || ((__VALUE__) == LL_TIM_IC_FILTER_FDIV4_N8) \ + || ((__VALUE__) == LL_TIM_IC_FILTER_FDIV8_N6) \ + || ((__VALUE__) == LL_TIM_IC_FILTER_FDIV8_N8) \ + || ((__VALUE__) == LL_TIM_IC_FILTER_FDIV16_N5) \ + || ((__VALUE__) == LL_TIM_IC_FILTER_FDIV16_N6) \ + || ((__VALUE__) == LL_TIM_IC_FILTER_FDIV16_N8) \ + || ((__VALUE__) == LL_TIM_IC_FILTER_FDIV32_N5) \ + || ((__VALUE__) == LL_TIM_IC_FILTER_FDIV32_N6) \ + || ((__VALUE__) == LL_TIM_IC_FILTER_FDIV32_N8)) + +#define IS_LL_TIM_IC_POLARITY(__VALUE__) (((__VALUE__) == LL_TIM_IC_POLARITY_RISING) \ + || ((__VALUE__) == LL_TIM_IC_POLARITY_FALLING)) + +#define IS_LL_TIM_ENCODERMODE(__VALUE__) (((__VALUE__) == LL_TIM_ENCODERMODE_X2_TI1) \ + || ((__VALUE__) == LL_TIM_ENCODERMODE_X2_TI2) \ + || ((__VALUE__) == LL_TIM_ENCODERMODE_X4_TI12)) + +#define IS_LL_TIM_IC_POLARITY_ENCODER(__VALUE__) (((__VALUE__) == LL_TIM_IC_POLARITY_RISING) \ + || ((__VALUE__) == LL_TIM_IC_POLARITY_FALLING)) + +#define IS_LL_TIM_OSSR_STATE(__VALUE__) (((__VALUE__) == LL_TIM_OSSR_DISABLE) \ + || ((__VALUE__) == LL_TIM_OSSR_ENABLE)) + +#define IS_LL_TIM_OSSI_STATE(__VALUE__) (((__VALUE__) == LL_TIM_OSSI_DISABLE) \ + || ((__VALUE__) == LL_TIM_OSSI_ENABLE)) + +#define IS_LL_TIM_LOCK_LEVEL(__VALUE__) (((__VALUE__) == LL_TIM_LOCKLEVEL_OFF) \ + || ((__VALUE__) == LL_TIM_LOCKLEVEL_1) \ + || ((__VALUE__) == LL_TIM_LOCKLEVEL_2) \ + || ((__VALUE__) == LL_TIM_LOCKLEVEL_3)) + +#define IS_LL_TIM_BREAK_STATE(__VALUE__) (((__VALUE__) == LL_TIM_BREAK_DISABLE) \ + || ((__VALUE__) == LL_TIM_BREAK_ENABLE)) + +#define IS_LL_TIM_BREAK_POLARITY(__VALUE__) (((__VALUE__) == LL_TIM_BREAK_POLARITY_LOW) \ + || ((__VALUE__) == LL_TIM_BREAK_POLARITY_HIGH)) + +#define IS_LL_TIM_AUTOMATIC_OUTPUT_STATE(__VALUE__) (((__VALUE__) == LL_TIM_AUTOMATICOUTPUT_DISABLE) \ + || ((__VALUE__) == LL_TIM_AUTOMATICOUTPUT_ENABLE)) +/** + * @} + */ + + +/* Private function prototypes -----------------------------------------------*/ +/** @defgroup TIM_LL_Private_Functions TIM Private Functions + * @{ + */ +static ErrorStatus OC1Config(TIM_TypeDef *TIMx, LL_TIM_OC_InitTypeDef *TIM_OCInitStruct); +static ErrorStatus OC2Config(TIM_TypeDef *TIMx, LL_TIM_OC_InitTypeDef *TIM_OCInitStruct); +static ErrorStatus OC3Config(TIM_TypeDef *TIMx, LL_TIM_OC_InitTypeDef *TIM_OCInitStruct); +static ErrorStatus OC4Config(TIM_TypeDef *TIMx, LL_TIM_OC_InitTypeDef *TIM_OCInitStruct); +static ErrorStatus IC1Config(TIM_TypeDef *TIMx, LL_TIM_IC_InitTypeDef *TIM_ICInitStruct); +static ErrorStatus IC2Config(TIM_TypeDef *TIMx, LL_TIM_IC_InitTypeDef *TIM_ICInitStruct); +static ErrorStatus IC3Config(TIM_TypeDef *TIMx, LL_TIM_IC_InitTypeDef *TIM_ICInitStruct); +static ErrorStatus IC4Config(TIM_TypeDef *TIMx, LL_TIM_IC_InitTypeDef *TIM_ICInitStruct); +/** + * @} + */ + +/* Exported functions --------------------------------------------------------*/ +/** @addtogroup TIM_LL_Exported_Functions + * @{ + */ + +/** @addtogroup TIM_LL_EF_Init + * @{ + */ + +/** + * @brief Set TIMx registers to their reset values. + * @param TIMx Timer instance + * @retval An ErrorStatus enumeration value: + * - SUCCESS: TIMx registers are de-initialized + * - ERROR: invalid TIMx instance + */ +ErrorStatus LL_TIM_DeInit(TIM_TypeDef *TIMx) +{ + ErrorStatus result = SUCCESS; + + /* Check the parameters */ + assert_param(IS_TIM_INSTANCE(TIMx)); + + if (TIMx == TIM2) + { + LL_APB1_GRP1_ForceReset(LL_APB1_GRP1_PERIPH_TIM2); + LL_APB1_GRP1_ReleaseReset(LL_APB1_GRP1_PERIPH_TIM2); + } +#if defined(TIM1) + else if (TIMx == TIM1) + { + LL_APB2_GRP1_ForceReset(LL_APB2_GRP1_PERIPH_TIM1); + LL_APB2_GRP1_ReleaseReset(LL_APB2_GRP1_PERIPH_TIM1); + } +#endif +#if defined(TIM3) + else if (TIMx == TIM3) + { + LL_APB1_GRP1_ForceReset(LL_APB1_GRP1_PERIPH_TIM3); + LL_APB1_GRP1_ReleaseReset(LL_APB1_GRP1_PERIPH_TIM3); + } +#endif +#if defined(TIM4) + else if (TIMx == TIM4) + { + LL_APB1_GRP1_ForceReset(LL_APB1_GRP1_PERIPH_TIM4); + LL_APB1_GRP1_ReleaseReset(LL_APB1_GRP1_PERIPH_TIM4); + } +#endif +#if defined(TIM5) + else if (TIMx == TIM5) + { + LL_APB1_GRP1_ForceReset(LL_APB1_GRP1_PERIPH_TIM5); + LL_APB1_GRP1_ReleaseReset(LL_APB1_GRP1_PERIPH_TIM5); + } +#endif +#if defined(TIM6) + else if (TIMx == TIM6) + { + LL_APB1_GRP1_ForceReset(LL_APB1_GRP1_PERIPH_TIM6); + LL_APB1_GRP1_ReleaseReset(LL_APB1_GRP1_PERIPH_TIM6); + } +#endif +#if defined (TIM7) + else if (TIMx == TIM7) + { + LL_APB1_GRP1_ForceReset(LL_APB1_GRP1_PERIPH_TIM7); + LL_APB1_GRP1_ReleaseReset(LL_APB1_GRP1_PERIPH_TIM7); + } +#endif +#if defined(TIM8) + else if (TIMx == TIM8) + { + LL_APB2_GRP1_ForceReset(LL_APB2_GRP1_PERIPH_TIM8); + LL_APB2_GRP1_ReleaseReset(LL_APB2_GRP1_PERIPH_TIM8); + } +#endif +#if defined(TIM9) + else if (TIMx == TIM9) + { + LL_APB2_GRP1_ForceReset(LL_APB2_GRP1_PERIPH_TIM9); + LL_APB2_GRP1_ReleaseReset(LL_APB2_GRP1_PERIPH_TIM9); + } +#endif +#if defined(TIM10) + else if (TIMx == TIM10) + { + LL_APB2_GRP1_ForceReset(LL_APB2_GRP1_PERIPH_TIM10); + LL_APB2_GRP1_ReleaseReset(LL_APB2_GRP1_PERIPH_TIM10); + } +#endif +#if defined(TIM11) + else if (TIMx == TIM11) + { + LL_APB2_GRP1_ForceReset(LL_APB2_GRP1_PERIPH_TIM11); + LL_APB2_GRP1_ReleaseReset(LL_APB2_GRP1_PERIPH_TIM11); + } +#endif +#if defined(TIM12) + else if (TIMx == TIM12) + { + LL_APB1_GRP1_ForceReset(LL_APB1_GRP1_PERIPH_TIM12); + LL_APB1_GRP1_ReleaseReset(LL_APB1_GRP1_PERIPH_TIM12); + } +#endif +#if defined(TIM13) + else if (TIMx == TIM13) + { + LL_APB1_GRP1_ForceReset(LL_APB1_GRP1_PERIPH_TIM13); + LL_APB1_GRP1_ReleaseReset(LL_APB1_GRP1_PERIPH_TIM13); + } +#endif +#if defined(TIM14) + else if (TIMx == TIM14) + { + LL_APB1_GRP1_ForceReset(LL_APB1_GRP1_PERIPH_TIM14); + LL_APB1_GRP1_ReleaseReset(LL_APB1_GRP1_PERIPH_TIM14); + } +#endif +#if defined(TIM15) + else if (TIMx == TIM15) + { + LL_APB2_GRP1_ForceReset(LL_APB2_GRP1_PERIPH_TIM15); + LL_APB2_GRP1_ReleaseReset(LL_APB2_GRP1_PERIPH_TIM15); + } +#endif +#if defined(TIM16) + else if (TIMx == TIM16) + { + LL_APB2_GRP1_ForceReset(LL_APB2_GRP1_PERIPH_TIM16); + LL_APB2_GRP1_ReleaseReset(LL_APB2_GRP1_PERIPH_TIM16); + } +#endif +#if defined(TIM17) + else if (TIMx == TIM17) + { + LL_APB2_GRP1_ForceReset(LL_APB2_GRP1_PERIPH_TIM17); + LL_APB2_GRP1_ReleaseReset(LL_APB2_GRP1_PERIPH_TIM17); + } +#endif + else + { + result = ERROR; + } + + return result; +} + +/** + * @brief Set the fields of the time base unit configuration data structure + * to their default values. + * @param TIM_InitStruct pointer to a @ref LL_TIM_InitTypeDef structure (time base unit configuration data structure) + * @retval None + */ +void LL_TIM_StructInit(LL_TIM_InitTypeDef *TIM_InitStruct) +{ + /* Set the default configuration */ + TIM_InitStruct->Prescaler = (uint16_t)0x0000; + TIM_InitStruct->CounterMode = LL_TIM_COUNTERMODE_UP; + TIM_InitStruct->Autoreload = 0xFFFFFFFFU; + TIM_InitStruct->ClockDivision = LL_TIM_CLOCKDIVISION_DIV1; + TIM_InitStruct->RepetitionCounter = (uint8_t)0x00; +} + +/** + * @brief Configure the TIMx time base unit. + * @param TIMx Timer Instance + * @param TIM_InitStruct pointer to a @ref LL_TIM_InitTypeDef structure (TIMx time base unit configuration data structure) + * @retval An ErrorStatus enumeration value: + * - SUCCESS: TIMx registers are de-initialized + * - ERROR: not applicable + */ +ErrorStatus LL_TIM_Init(TIM_TypeDef *TIMx, LL_TIM_InitTypeDef *TIM_InitStruct) +{ + uint32_t tmpcr1; + + /* Check the parameters */ + assert_param(IS_TIM_INSTANCE(TIMx)); + assert_param(IS_LL_TIM_COUNTERMODE(TIM_InitStruct->CounterMode)); + assert_param(IS_LL_TIM_CLOCKDIVISION(TIM_InitStruct->ClockDivision)); + + tmpcr1 = LL_TIM_ReadReg(TIMx, CR1); + + if (IS_TIM_COUNTER_MODE_SELECT_INSTANCE(TIMx)) + { + /* Select the Counter Mode */ + MODIFY_REG(tmpcr1, (TIM_CR1_DIR | TIM_CR1_CMS), TIM_InitStruct->CounterMode); + } + + if (IS_TIM_CLOCK_DIVISION_INSTANCE(TIMx)) + { + /* Set the clock division */ + MODIFY_REG(tmpcr1, TIM_CR1_CKD, TIM_InitStruct->ClockDivision); + } + + /* Write to TIMx CR1 */ + LL_TIM_WriteReg(TIMx, CR1, tmpcr1); + + /* Set the Autoreload value */ + LL_TIM_SetAutoReload(TIMx, TIM_InitStruct->Autoreload); + + /* Set the Prescaler value */ + LL_TIM_SetPrescaler(TIMx, TIM_InitStruct->Prescaler); + + if (IS_TIM_REPETITION_COUNTER_INSTANCE(TIMx)) + { + /* Set the Repetition Counter value */ + LL_TIM_SetRepetitionCounter(TIMx, TIM_InitStruct->RepetitionCounter); + } + + /* Generate an update event to reload the Prescaler + and the repetition counter value (if applicable) immediately */ + LL_TIM_GenerateEvent_UPDATE(TIMx); + + return SUCCESS; +} + +/** + * @brief Set the fields of the TIMx output channel configuration data + * structure to their default values. + * @param TIM_OC_InitStruct pointer to a @ref LL_TIM_OC_InitTypeDef structure (the output channel configuration data structure) + * @retval None + */ +void LL_TIM_OC_StructInit(LL_TIM_OC_InitTypeDef *TIM_OC_InitStruct) +{ + /* Set the default configuration */ + TIM_OC_InitStruct->OCMode = LL_TIM_OCMODE_FROZEN; + TIM_OC_InitStruct->OCState = LL_TIM_OCSTATE_DISABLE; + TIM_OC_InitStruct->OCNState = LL_TIM_OCSTATE_DISABLE; + TIM_OC_InitStruct->CompareValue = 0x00000000U; + TIM_OC_InitStruct->OCPolarity = LL_TIM_OCPOLARITY_HIGH; + TIM_OC_InitStruct->OCNPolarity = LL_TIM_OCPOLARITY_HIGH; + TIM_OC_InitStruct->OCIdleState = LL_TIM_OCIDLESTATE_LOW; + TIM_OC_InitStruct->OCNIdleState = LL_TIM_OCIDLESTATE_LOW; +} + +/** + * @brief Configure the TIMx output channel. + * @param TIMx Timer Instance + * @param Channel This parameter can be one of the following values: + * @arg @ref LL_TIM_CHANNEL_CH1 + * @arg @ref LL_TIM_CHANNEL_CH2 + * @arg @ref LL_TIM_CHANNEL_CH3 + * @arg @ref LL_TIM_CHANNEL_CH4 + * @param TIM_OC_InitStruct pointer to a @ref LL_TIM_OC_InitTypeDef structure (TIMx output channel configuration data structure) + * @retval An ErrorStatus enumeration value: + * - SUCCESS: TIMx output channel is initialized + * - ERROR: TIMx output channel is not initialized + */ +ErrorStatus LL_TIM_OC_Init(TIM_TypeDef *TIMx, uint32_t Channel, LL_TIM_OC_InitTypeDef *TIM_OC_InitStruct) +{ + ErrorStatus result = ERROR; + + switch (Channel) + { + case LL_TIM_CHANNEL_CH1: + result = OC1Config(TIMx, TIM_OC_InitStruct); + break; + case LL_TIM_CHANNEL_CH2: + result = OC2Config(TIMx, TIM_OC_InitStruct); + break; + case LL_TIM_CHANNEL_CH3: + result = OC3Config(TIMx, TIM_OC_InitStruct); + break; + case LL_TIM_CHANNEL_CH4: + result = OC4Config(TIMx, TIM_OC_InitStruct); + break; + default: + break; + } + + return result; +} + +/** + * @brief Set the fields of the TIMx input channel configuration data + * structure to their default values. + * @param TIM_ICInitStruct pointer to a @ref LL_TIM_IC_InitTypeDef structure (the input channel configuration data structure) + * @retval None + */ +void LL_TIM_IC_StructInit(LL_TIM_IC_InitTypeDef *TIM_ICInitStruct) +{ + /* Set the default configuration */ + TIM_ICInitStruct->ICPolarity = LL_TIM_IC_POLARITY_RISING; + TIM_ICInitStruct->ICActiveInput = LL_TIM_ACTIVEINPUT_DIRECTTI; + TIM_ICInitStruct->ICPrescaler = LL_TIM_ICPSC_DIV1; + TIM_ICInitStruct->ICFilter = LL_TIM_IC_FILTER_FDIV1; +} + +/** + * @brief Configure the TIMx input channel. + * @param TIMx Timer Instance + * @param Channel This parameter can be one of the following values: + * @arg @ref LL_TIM_CHANNEL_CH1 + * @arg @ref LL_TIM_CHANNEL_CH2 + * @arg @ref LL_TIM_CHANNEL_CH3 + * @arg @ref LL_TIM_CHANNEL_CH4 + * @param TIM_IC_InitStruct pointer to a @ref LL_TIM_IC_InitTypeDef structure (TIMx input channel configuration data structure) + * @retval An ErrorStatus enumeration value: + * - SUCCESS: TIMx output channel is initialized + * - ERROR: TIMx output channel is not initialized + */ +ErrorStatus LL_TIM_IC_Init(TIM_TypeDef *TIMx, uint32_t Channel, LL_TIM_IC_InitTypeDef *TIM_IC_InitStruct) +{ + ErrorStatus result = ERROR; + + switch (Channel) + { + case LL_TIM_CHANNEL_CH1: + result = IC1Config(TIMx, TIM_IC_InitStruct); + break; + case LL_TIM_CHANNEL_CH2: + result = IC2Config(TIMx, TIM_IC_InitStruct); + break; + case LL_TIM_CHANNEL_CH3: + result = IC3Config(TIMx, TIM_IC_InitStruct); + break; + case LL_TIM_CHANNEL_CH4: + result = IC4Config(TIMx, TIM_IC_InitStruct); + break; + default: + break; + } + + return result; +} + +/** + * @brief Fills each TIM_EncoderInitStruct field with its default value + * @param TIM_EncoderInitStruct pointer to a @ref LL_TIM_ENCODER_InitTypeDef structure (encoder interface configuration data structure) + * @retval None + */ +void LL_TIM_ENCODER_StructInit(LL_TIM_ENCODER_InitTypeDef *TIM_EncoderInitStruct) +{ + /* Set the default configuration */ + TIM_EncoderInitStruct->EncoderMode = LL_TIM_ENCODERMODE_X2_TI1; + TIM_EncoderInitStruct->IC1Polarity = LL_TIM_IC_POLARITY_RISING; + TIM_EncoderInitStruct->IC1ActiveInput = LL_TIM_ACTIVEINPUT_DIRECTTI; + TIM_EncoderInitStruct->IC1Prescaler = LL_TIM_ICPSC_DIV1; + TIM_EncoderInitStruct->IC1Filter = LL_TIM_IC_FILTER_FDIV1; + TIM_EncoderInitStruct->IC2Polarity = LL_TIM_IC_POLARITY_RISING; + TIM_EncoderInitStruct->IC2ActiveInput = LL_TIM_ACTIVEINPUT_DIRECTTI; + TIM_EncoderInitStruct->IC2Prescaler = LL_TIM_ICPSC_DIV1; + TIM_EncoderInitStruct->IC2Filter = LL_TIM_IC_FILTER_FDIV1; +} + +/** + * @brief Configure the encoder interface of the timer instance. + * @param TIMx Timer Instance + * @param TIM_EncoderInitStruct pointer to a @ref LL_TIM_ENCODER_InitTypeDef structure (TIMx encoder interface configuration data structure) + * @retval An ErrorStatus enumeration value: + * - SUCCESS: TIMx registers are de-initialized + * - ERROR: not applicable + */ +ErrorStatus LL_TIM_ENCODER_Init(TIM_TypeDef *TIMx, LL_TIM_ENCODER_InitTypeDef *TIM_EncoderInitStruct) +{ + uint32_t tmpccmr1; + uint32_t tmpccer; + + /* Check the parameters */ + assert_param(IS_TIM_ENCODER_INTERFACE_INSTANCE(TIMx)); + assert_param(IS_LL_TIM_ENCODERMODE(TIM_EncoderInitStruct->EncoderMode)); + assert_param(IS_LL_TIM_IC_POLARITY_ENCODER(TIM_EncoderInitStruct->IC1Polarity)); + assert_param(IS_LL_TIM_ACTIVEINPUT(TIM_EncoderInitStruct->IC1ActiveInput)); + assert_param(IS_LL_TIM_ICPSC(TIM_EncoderInitStruct->IC1Prescaler)); + assert_param(IS_LL_TIM_IC_FILTER(TIM_EncoderInitStruct->IC1Filter)); + assert_param(IS_LL_TIM_IC_POLARITY_ENCODER(TIM_EncoderInitStruct->IC2Polarity)); + assert_param(IS_LL_TIM_ACTIVEINPUT(TIM_EncoderInitStruct->IC2ActiveInput)); + assert_param(IS_LL_TIM_ICPSC(TIM_EncoderInitStruct->IC2Prescaler)); + assert_param(IS_LL_TIM_IC_FILTER(TIM_EncoderInitStruct->IC2Filter)); + + /* Disable the CC1 and CC2: Reset the CC1E and CC2E Bits */ + TIMx->CCER &= (uint32_t)~(TIM_CCER_CC1E | TIM_CCER_CC2E); + + /* Get the TIMx CCMR1 register value */ + tmpccmr1 = LL_TIM_ReadReg(TIMx, CCMR1); + + /* Get the TIMx CCER register value */ + tmpccer = LL_TIM_ReadReg(TIMx, CCER); + + /* Configure TI1 */ + tmpccmr1 &= (uint32_t)~(TIM_CCMR1_CC1S | TIM_CCMR1_IC1F | TIM_CCMR1_IC1PSC); + tmpccmr1 |= (uint32_t)(TIM_EncoderInitStruct->IC1ActiveInput >> 16U); + tmpccmr1 |= (uint32_t)(TIM_EncoderInitStruct->IC1Filter >> 16U); + tmpccmr1 |= (uint32_t)(TIM_EncoderInitStruct->IC1Prescaler >> 16U); + + /* Configure TI2 */ + tmpccmr1 &= (uint32_t)~(TIM_CCMR1_CC2S | TIM_CCMR1_IC2F | TIM_CCMR1_IC2PSC); + tmpccmr1 |= (uint32_t)(TIM_EncoderInitStruct->IC2ActiveInput >> 8U); + tmpccmr1 |= (uint32_t)(TIM_EncoderInitStruct->IC2Filter >> 8U); + tmpccmr1 |= (uint32_t)(TIM_EncoderInitStruct->IC2Prescaler >> 8U); + + /* Set TI1 and TI2 polarity and enable TI1 and TI2 */ + tmpccer &= (uint32_t)~(TIM_CCER_CC1P | TIM_CCER_CC1NP | TIM_CCER_CC2P | TIM_CCER_CC2NP); + tmpccer |= (uint32_t)(TIM_EncoderInitStruct->IC1Polarity); + tmpccer |= (uint32_t)(TIM_EncoderInitStruct->IC2Polarity << 4U); + tmpccer |= (uint32_t)(TIM_CCER_CC1E | TIM_CCER_CC2E); + + /* Set encoder mode */ + LL_TIM_SetEncoderMode(TIMx, TIM_EncoderInitStruct->EncoderMode); + + /* Write to TIMx CCMR1 */ + LL_TIM_WriteReg(TIMx, CCMR1, tmpccmr1); + + /* Write to TIMx CCER */ + LL_TIM_WriteReg(TIMx, CCER, tmpccer); + + return SUCCESS; +} + +/** + * @brief Set the fields of the TIMx Hall sensor interface configuration data + * structure to their default values. + * @param TIM_HallSensorInitStruct pointer to a @ref LL_TIM_HALLSENSOR_InitTypeDef structure (HALL sensor interface configuration data structure) + * @retval None + */ +void LL_TIM_HALLSENSOR_StructInit(LL_TIM_HALLSENSOR_InitTypeDef *TIM_HallSensorInitStruct) +{ + /* Set the default configuration */ + TIM_HallSensorInitStruct->IC1Polarity = LL_TIM_IC_POLARITY_RISING; + TIM_HallSensorInitStruct->IC1Prescaler = LL_TIM_ICPSC_DIV1; + TIM_HallSensorInitStruct->IC1Filter = LL_TIM_IC_FILTER_FDIV1; + TIM_HallSensorInitStruct->CommutationDelay = 0U; +} + +/** + * @brief Configure the Hall sensor interface of the timer instance. + * @note TIMx CH1, CH2 and CH3 inputs connected through a XOR + * to the TI1 input channel + * @note TIMx slave mode controller is configured in reset mode. + Selected internal trigger is TI1F_ED. + * @note Channel 1 is configured as input, IC1 is mapped on TRC. + * @note Captured value stored in TIMx_CCR1 correspond to the time elapsed + * between 2 changes on the inputs. It gives information about motor speed. + * @note Channel 2 is configured in output PWM 2 mode. + * @note Compare value stored in TIMx_CCR2 corresponds to the commutation delay. + * @note OC2REF is selected as trigger output on TRGO. + * @param TIMx Timer Instance + * @param TIM_HallSensorInitStruct pointer to a @ref LL_TIM_HALLSENSOR_InitTypeDef structure (TIMx HALL sensor interface configuration data structure) + * @retval An ErrorStatus enumeration value: + * - SUCCESS: TIMx registers are de-initialized + * - ERROR: not applicable + */ +ErrorStatus LL_TIM_HALLSENSOR_Init(TIM_TypeDef *TIMx, LL_TIM_HALLSENSOR_InitTypeDef *TIM_HallSensorInitStruct) +{ + uint32_t tmpcr2; + uint32_t tmpccmr1; + uint32_t tmpccer; + uint32_t tmpsmcr; + + /* Check the parameters */ + assert_param(IS_TIM_HALL_SENSOR_INTERFACE_INSTANCE(TIMx)); + assert_param(IS_LL_TIM_IC_POLARITY_ENCODER(TIM_HallSensorInitStruct->IC1Polarity)); + assert_param(IS_LL_TIM_ICPSC(TIM_HallSensorInitStruct->IC1Prescaler)); + assert_param(IS_LL_TIM_IC_FILTER(TIM_HallSensorInitStruct->IC1Filter)); + + /* Disable the CC1 and CC2: Reset the CC1E and CC2E Bits */ + TIMx->CCER &= (uint32_t)~(TIM_CCER_CC1E | TIM_CCER_CC2E); + + /* Get the TIMx CR2 register value */ + tmpcr2 = LL_TIM_ReadReg(TIMx, CR2); + + /* Get the TIMx CCMR1 register value */ + tmpccmr1 = LL_TIM_ReadReg(TIMx, CCMR1); + + /* Get the TIMx CCER register value */ + tmpccer = LL_TIM_ReadReg(TIMx, CCER); + + /* Get the TIMx SMCR register value */ + tmpsmcr = LL_TIM_ReadReg(TIMx, SMCR); + + /* Connect TIMx_CH1, CH2 and CH3 pins to the TI1 input */ + tmpcr2 |= TIM_CR2_TI1S; + + /* OC2REF signal is used as trigger output (TRGO) */ + tmpcr2 |= LL_TIM_TRGO_OC2REF; + + /* Configure the slave mode controller */ + tmpsmcr &= (uint32_t)~(TIM_SMCR_TS | TIM_SMCR_SMS); + tmpsmcr |= LL_TIM_TS_TI1F_ED; + tmpsmcr |= LL_TIM_SLAVEMODE_RESET; + + /* Configure input channel 1 */ + tmpccmr1 &= (uint32_t)~(TIM_CCMR1_CC1S | TIM_CCMR1_IC1F | TIM_CCMR1_IC1PSC); + tmpccmr1 |= (uint32_t)(LL_TIM_ACTIVEINPUT_TRC >> 16U); + tmpccmr1 |= (uint32_t)(TIM_HallSensorInitStruct->IC1Filter >> 16U); + tmpccmr1 |= (uint32_t)(TIM_HallSensorInitStruct->IC1Prescaler >> 16U); + + /* Configure input channel 2 */ + tmpccmr1 &= (uint32_t)~(TIM_CCMR1_OC2M | TIM_CCMR1_OC2FE | TIM_CCMR1_OC2PE | TIM_CCMR1_OC2CE); + tmpccmr1 |= (uint32_t)(LL_TIM_OCMODE_PWM2 << 8U); + + /* Set Channel 1 polarity and enable Channel 1 and Channel2 */ + tmpccer &= (uint32_t)~(TIM_CCER_CC1P | TIM_CCER_CC1NP | TIM_CCER_CC2P | TIM_CCER_CC2NP); + tmpccer |= (uint32_t)(TIM_HallSensorInitStruct->IC1Polarity); + tmpccer |= (uint32_t)(TIM_CCER_CC1E | TIM_CCER_CC2E); + + /* Write to TIMx CR2 */ + LL_TIM_WriteReg(TIMx, CR2, tmpcr2); + + /* Write to TIMx SMCR */ + LL_TIM_WriteReg(TIMx, SMCR, tmpsmcr); + + /* Write to TIMx CCMR1 */ + LL_TIM_WriteReg(TIMx, CCMR1, tmpccmr1); + + /* Write to TIMx CCER */ + LL_TIM_WriteReg(TIMx, CCER, tmpccer); + + /* Write to TIMx CCR2 */ + LL_TIM_OC_SetCompareCH2(TIMx, TIM_HallSensorInitStruct->CommutationDelay); + + return SUCCESS; +} + +/** + * @brief Set the fields of the Break and Dead Time configuration data structure + * to their default values. + * @param TIM_BDTRInitStruct pointer to a @ref LL_TIM_BDTR_InitTypeDef structure (Break and Dead Time configuration data structure) + * @retval None + */ +void LL_TIM_BDTR_StructInit(LL_TIM_BDTR_InitTypeDef *TIM_BDTRInitStruct) +{ + /* Set the default configuration */ + TIM_BDTRInitStruct->OSSRState = LL_TIM_OSSR_DISABLE; + TIM_BDTRInitStruct->OSSIState = LL_TIM_OSSI_DISABLE; + TIM_BDTRInitStruct->LockLevel = LL_TIM_LOCKLEVEL_OFF; + TIM_BDTRInitStruct->DeadTime = (uint8_t)0x00; + TIM_BDTRInitStruct->BreakState = LL_TIM_BREAK_DISABLE; + TIM_BDTRInitStruct->BreakPolarity = LL_TIM_BREAK_POLARITY_LOW; + TIM_BDTRInitStruct->AutomaticOutput = LL_TIM_AUTOMATICOUTPUT_DISABLE; +} + +/** + * @brief Configure the Break and Dead Time feature of the timer instance. + * @note As the bits AOE, BKP, BKE, OSSR, OSSI and DTG[7:0] can be write-locked + * depending on the LOCK configuration, it can be necessary to configure all of + * them during the first write access to the TIMx_BDTR register. + * @note Macro IS_TIM_BREAK_INSTANCE(TIMx) can be used to check whether or not + * a timer instance provides a break input. + * @param TIMx Timer Instance + * @param TIM_BDTRInitStruct pointer to a @ref LL_TIM_BDTR_InitTypeDef structure (Break and Dead Time configuration data structure) + * @retval An ErrorStatus enumeration value: + * - SUCCESS: Break and Dead Time is initialized + * - ERROR: not applicable + */ +ErrorStatus LL_TIM_BDTR_Init(TIM_TypeDef *TIMx, LL_TIM_BDTR_InitTypeDef *TIM_BDTRInitStruct) +{ + uint32_t tmpbdtr = 0; + + /* Check the parameters */ + assert_param(IS_TIM_BREAK_INSTANCE(TIMx)); + assert_param(IS_LL_TIM_OSSR_STATE(TIM_BDTRInitStruct->OSSRState)); + assert_param(IS_LL_TIM_OSSI_STATE(TIM_BDTRInitStruct->OSSIState)); + assert_param(IS_LL_TIM_LOCK_LEVEL(TIM_BDTRInitStruct->LockLevel)); + assert_param(IS_LL_TIM_BREAK_STATE(TIM_BDTRInitStruct->BreakState)); + assert_param(IS_LL_TIM_BREAK_POLARITY(TIM_BDTRInitStruct->BreakPolarity)); + assert_param(IS_LL_TIM_AUTOMATIC_OUTPUT_STATE(TIM_BDTRInitStruct->AutomaticOutput)); + + /* Set the Lock level, the Break enable Bit and the Polarity, the OSSR State, + the OSSI State, the dead time value and the Automatic Output Enable Bit */ + + /* Set the BDTR bits */ + MODIFY_REG(tmpbdtr, TIM_BDTR_DTG, TIM_BDTRInitStruct->DeadTime); + MODIFY_REG(tmpbdtr, TIM_BDTR_LOCK, TIM_BDTRInitStruct->LockLevel); + MODIFY_REG(tmpbdtr, TIM_BDTR_OSSI, TIM_BDTRInitStruct->OSSIState); + MODIFY_REG(tmpbdtr, TIM_BDTR_OSSR, TIM_BDTRInitStruct->OSSRState); + MODIFY_REG(tmpbdtr, TIM_BDTR_BKE, TIM_BDTRInitStruct->BreakState); + MODIFY_REG(tmpbdtr, TIM_BDTR_BKP, TIM_BDTRInitStruct->BreakPolarity); + MODIFY_REG(tmpbdtr, TIM_BDTR_AOE, TIM_BDTRInitStruct->AutomaticOutput); + MODIFY_REG(tmpbdtr, TIM_BDTR_MOE, TIM_BDTRInitStruct->AutomaticOutput); + + /* Set TIMx_BDTR */ + LL_TIM_WriteReg(TIMx, BDTR, tmpbdtr); + + return SUCCESS; +} +/** + * @} + */ + +/** + * @} + */ + +/** @addtogroup TIM_LL_Private_Functions TIM Private Functions + * @brief Private functions + * @{ + */ +/** + * @brief Configure the TIMx output channel 1. + * @param TIMx Timer Instance + * @param TIM_OCInitStruct pointer to the the TIMx output channel 1 configuration data structure + * @retval An ErrorStatus enumeration value: + * - SUCCESS: TIMx registers are de-initialized + * - ERROR: not applicable + */ +static ErrorStatus OC1Config(TIM_TypeDef *TIMx, LL_TIM_OC_InitTypeDef *TIM_OCInitStruct) +{ + uint32_t tmpccmr1; + uint32_t tmpccer; + uint32_t tmpcr2; + + /* Check the parameters */ + assert_param(IS_TIM_CC1_INSTANCE(TIMx)); + assert_param(IS_LL_TIM_OCMODE(TIM_OCInitStruct->OCMode)); + assert_param(IS_LL_TIM_OCSTATE(TIM_OCInitStruct->OCState)); + assert_param(IS_LL_TIM_OCPOLARITY(TIM_OCInitStruct->OCPolarity)); + assert_param(IS_LL_TIM_OCSTATE(TIM_OCInitStruct->OCNState)); + assert_param(IS_LL_TIM_OCPOLARITY(TIM_OCInitStruct->OCNPolarity)); + + /* Disable the Channel 1: Reset the CC1E Bit */ + CLEAR_BIT(TIMx->CCER, TIM_CCER_CC1E); + + /* Get the TIMx CCER register value */ + tmpccer = LL_TIM_ReadReg(TIMx, CCER); + + /* Get the TIMx CR2 register value */ + tmpcr2 = LL_TIM_ReadReg(TIMx, CR2); + + /* Get the TIMx CCMR1 register value */ + tmpccmr1 = LL_TIM_ReadReg(TIMx, CCMR1); + + /* Reset Capture/Compare selection Bits */ + CLEAR_BIT(tmpccmr1, TIM_CCMR1_CC1S); + + /* Set the Output Compare Mode */ + MODIFY_REG(tmpccmr1, TIM_CCMR1_OC1M, TIM_OCInitStruct->OCMode); + + /* Set the Output Compare Polarity */ + MODIFY_REG(tmpccer, TIM_CCER_CC1P, TIM_OCInitStruct->OCPolarity); + + /* Set the Output State */ + MODIFY_REG(tmpccer, TIM_CCER_CC1E, TIM_OCInitStruct->OCState); + + if (IS_TIM_BREAK_INSTANCE(TIMx)) + { + assert_param(IS_LL_TIM_OCIDLESTATE(TIM_OCInitStruct->OCNIdleState)); + assert_param(IS_LL_TIM_OCIDLESTATE(TIM_OCInitStruct->OCIdleState)); + + /* Set the complementary output Polarity */ + MODIFY_REG(tmpccer, TIM_CCER_CC1NP, TIM_OCInitStruct->OCNPolarity << 2U); + + /* Set the complementary output State */ + MODIFY_REG(tmpccer, TIM_CCER_CC1NE, TIM_OCInitStruct->OCNState << 2U); + + /* Set the Output Idle state */ + MODIFY_REG(tmpcr2, TIM_CR2_OIS1, TIM_OCInitStruct->OCIdleState); + + /* Set the complementary output Idle state */ + MODIFY_REG(tmpcr2, TIM_CR2_OIS1N, TIM_OCInitStruct->OCNIdleState << 1U); + } + + /* Write to TIMx CR2 */ + LL_TIM_WriteReg(TIMx, CR2, tmpcr2); + + /* Write to TIMx CCMR1 */ + LL_TIM_WriteReg(TIMx, CCMR1, tmpccmr1); + + /* Set the Capture Compare Register value */ + LL_TIM_OC_SetCompareCH1(TIMx, TIM_OCInitStruct->CompareValue); + + /* Write to TIMx CCER */ + LL_TIM_WriteReg(TIMx, CCER, tmpccer); + + return SUCCESS; +} + +/** + * @brief Configure the TIMx output channel 2. + * @param TIMx Timer Instance + * @param TIM_OCInitStruct pointer to the the TIMx output channel 2 configuration data structure + * @retval An ErrorStatus enumeration value: + * - SUCCESS: TIMx registers are de-initialized + * - ERROR: not applicable + */ +static ErrorStatus OC2Config(TIM_TypeDef *TIMx, LL_TIM_OC_InitTypeDef *TIM_OCInitStruct) +{ + uint32_t tmpccmr1; + uint32_t tmpccer; + uint32_t tmpcr2; + + /* Check the parameters */ + assert_param(IS_TIM_CC2_INSTANCE(TIMx)); + assert_param(IS_LL_TIM_OCMODE(TIM_OCInitStruct->OCMode)); + assert_param(IS_LL_TIM_OCSTATE(TIM_OCInitStruct->OCState)); + assert_param(IS_LL_TIM_OCPOLARITY(TIM_OCInitStruct->OCPolarity)); + assert_param(IS_LL_TIM_OCSTATE(TIM_OCInitStruct->OCNState)); + assert_param(IS_LL_TIM_OCPOLARITY(TIM_OCInitStruct->OCNPolarity)); + + /* Disable the Channel 2: Reset the CC2E Bit */ + CLEAR_BIT(TIMx->CCER, TIM_CCER_CC2E); + + /* Get the TIMx CCER register value */ + tmpccer = LL_TIM_ReadReg(TIMx, CCER); + + /* Get the TIMx CR2 register value */ + tmpcr2 = LL_TIM_ReadReg(TIMx, CR2); + + /* Get the TIMx CCMR1 register value */ + tmpccmr1 = LL_TIM_ReadReg(TIMx, CCMR1); + + /* Reset Capture/Compare selection Bits */ + CLEAR_BIT(tmpccmr1, TIM_CCMR1_CC2S); + + /* Select the Output Compare Mode */ + MODIFY_REG(tmpccmr1, TIM_CCMR1_OC2M, TIM_OCInitStruct->OCMode << 8U); + + /* Set the Output Compare Polarity */ + MODIFY_REG(tmpccer, TIM_CCER_CC2P, TIM_OCInitStruct->OCPolarity << 4U); + + /* Set the Output State */ + MODIFY_REG(tmpccer, TIM_CCER_CC2E, TIM_OCInitStruct->OCState << 4U); + + if (IS_TIM_BREAK_INSTANCE(TIMx)) + { + assert_param(IS_LL_TIM_OCIDLESTATE(TIM_OCInitStruct->OCNIdleState)); + assert_param(IS_LL_TIM_OCIDLESTATE(TIM_OCInitStruct->OCIdleState)); + + /* Set the complementary output Polarity */ + MODIFY_REG(tmpccer, TIM_CCER_CC2NP, TIM_OCInitStruct->OCNPolarity << 6U); + + /* Set the complementary output State */ + MODIFY_REG(tmpccer, TIM_CCER_CC2NE, TIM_OCInitStruct->OCNState << 6U); + + /* Set the Output Idle state */ + MODIFY_REG(tmpcr2, TIM_CR2_OIS2, TIM_OCInitStruct->OCIdleState << 2U); + + /* Set the complementary output Idle state */ + MODIFY_REG(tmpcr2, TIM_CR2_OIS2N, TIM_OCInitStruct->OCNIdleState << 3U); + } + + /* Write to TIMx CR2 */ + LL_TIM_WriteReg(TIMx, CR2, tmpcr2); + + /* Write to TIMx CCMR1 */ + LL_TIM_WriteReg(TIMx, CCMR1, tmpccmr1); + + /* Set the Capture Compare Register value */ + LL_TIM_OC_SetCompareCH2(TIMx, TIM_OCInitStruct->CompareValue); + + /* Write to TIMx CCER */ + LL_TIM_WriteReg(TIMx, CCER, tmpccer); + + return SUCCESS; +} + +/** + * @brief Configure the TIMx output channel 3. + * @param TIMx Timer Instance + * @param TIM_OCInitStruct pointer to the the TIMx output channel 3 configuration data structure + * @retval An ErrorStatus enumeration value: + * - SUCCESS: TIMx registers are de-initialized + * - ERROR: not applicable + */ +static ErrorStatus OC3Config(TIM_TypeDef *TIMx, LL_TIM_OC_InitTypeDef *TIM_OCInitStruct) +{ + uint32_t tmpccmr2; + uint32_t tmpccer; + uint32_t tmpcr2; + + /* Check the parameters */ + assert_param(IS_TIM_CC3_INSTANCE(TIMx)); + assert_param(IS_LL_TIM_OCMODE(TIM_OCInitStruct->OCMode)); + assert_param(IS_LL_TIM_OCSTATE(TIM_OCInitStruct->OCState)); + assert_param(IS_LL_TIM_OCPOLARITY(TIM_OCInitStruct->OCPolarity)); + assert_param(IS_LL_TIM_OCSTATE(TIM_OCInitStruct->OCNState)); + assert_param(IS_LL_TIM_OCPOLARITY(TIM_OCInitStruct->OCNPolarity)); + + /* Disable the Channel 3: Reset the CC3E Bit */ + CLEAR_BIT(TIMx->CCER, TIM_CCER_CC3E); + + /* Get the TIMx CCER register value */ + tmpccer = LL_TIM_ReadReg(TIMx, CCER); + + /* Get the TIMx CR2 register value */ + tmpcr2 = LL_TIM_ReadReg(TIMx, CR2); + + /* Get the TIMx CCMR2 register value */ + tmpccmr2 = LL_TIM_ReadReg(TIMx, CCMR2); + + /* Reset Capture/Compare selection Bits */ + CLEAR_BIT(tmpccmr2, TIM_CCMR2_CC3S); + + /* Select the Output Compare Mode */ + MODIFY_REG(tmpccmr2, TIM_CCMR2_OC3M, TIM_OCInitStruct->OCMode); + + /* Set the Output Compare Polarity */ + MODIFY_REG(tmpccer, TIM_CCER_CC3P, TIM_OCInitStruct->OCPolarity << 8U); + + /* Set the Output State */ + MODIFY_REG(tmpccer, TIM_CCER_CC3E, TIM_OCInitStruct->OCState << 8U); + + if (IS_TIM_BREAK_INSTANCE(TIMx)) + { + assert_param(IS_LL_TIM_OCIDLESTATE(TIM_OCInitStruct->OCNIdleState)); + assert_param(IS_LL_TIM_OCIDLESTATE(TIM_OCInitStruct->OCIdleState)); + + /* Set the complementary output Polarity */ + MODIFY_REG(tmpccer, TIM_CCER_CC3NP, TIM_OCInitStruct->OCNPolarity << 10U); + + /* Set the complementary output State */ + MODIFY_REG(tmpccer, TIM_CCER_CC3NE, TIM_OCInitStruct->OCNState << 10U); + + /* Set the Output Idle state */ + MODIFY_REG(tmpcr2, TIM_CR2_OIS3, TIM_OCInitStruct->OCIdleState << 4U); + + /* Set the complementary output Idle state */ + MODIFY_REG(tmpcr2, TIM_CR2_OIS3N, TIM_OCInitStruct->OCNIdleState << 5U); + } + + /* Write to TIMx CR2 */ + LL_TIM_WriteReg(TIMx, CR2, tmpcr2); + + /* Write to TIMx CCMR2 */ + LL_TIM_WriteReg(TIMx, CCMR2, tmpccmr2); + + /* Set the Capture Compare Register value */ + LL_TIM_OC_SetCompareCH3(TIMx, TIM_OCInitStruct->CompareValue); + + /* Write to TIMx CCER */ + LL_TIM_WriteReg(TIMx, CCER, tmpccer); + + return SUCCESS; +} + +/** + * @brief Configure the TIMx output channel 4. + * @param TIMx Timer Instance + * @param TIM_OCInitStruct pointer to the the TIMx output channel 4 configuration data structure + * @retval An ErrorStatus enumeration value: + * - SUCCESS: TIMx registers are de-initialized + * - ERROR: not applicable + */ +static ErrorStatus OC4Config(TIM_TypeDef *TIMx, LL_TIM_OC_InitTypeDef *TIM_OCInitStruct) +{ + uint32_t tmpccmr2; + uint32_t tmpccer; + uint32_t tmpcr2; + + /* Check the parameters */ + assert_param(IS_TIM_CC4_INSTANCE(TIMx)); + assert_param(IS_LL_TIM_OCMODE(TIM_OCInitStruct->OCMode)); + assert_param(IS_LL_TIM_OCSTATE(TIM_OCInitStruct->OCState)); + assert_param(IS_LL_TIM_OCPOLARITY(TIM_OCInitStruct->OCPolarity)); + assert_param(IS_LL_TIM_OCPOLARITY(TIM_OCInitStruct->OCNPolarity)); + assert_param(IS_LL_TIM_OCSTATE(TIM_OCInitStruct->OCNState)); + + /* Disable the Channel 4: Reset the CC4E Bit */ + CLEAR_BIT(TIMx->CCER, TIM_CCER_CC4E); + + /* Get the TIMx CCER register value */ + tmpccer = LL_TIM_ReadReg(TIMx, CCER); + + /* Get the TIMx CR2 register value */ + tmpcr2 = LL_TIM_ReadReg(TIMx, CR2); + + /* Get the TIMx CCMR2 register value */ + tmpccmr2 = LL_TIM_ReadReg(TIMx, CCMR2); + + /* Reset Capture/Compare selection Bits */ + CLEAR_BIT(tmpccmr2, TIM_CCMR2_CC4S); + + /* Select the Output Compare Mode */ + MODIFY_REG(tmpccmr2, TIM_CCMR2_OC4M, TIM_OCInitStruct->OCMode << 8U); + + /* Set the Output Compare Polarity */ + MODIFY_REG(tmpccer, TIM_CCER_CC4P, TIM_OCInitStruct->OCPolarity << 12U); + + /* Set the Output State */ + MODIFY_REG(tmpccer, TIM_CCER_CC4E, TIM_OCInitStruct->OCState << 12U); + + if (IS_TIM_BREAK_INSTANCE(TIMx)) + { + assert_param(IS_LL_TIM_OCIDLESTATE(TIM_OCInitStruct->OCNIdleState)); + assert_param(IS_LL_TIM_OCIDLESTATE(TIM_OCInitStruct->OCIdleState)); + + /* Set the Output Idle state */ + MODIFY_REG(tmpcr2, TIM_CR2_OIS4, TIM_OCInitStruct->OCIdleState << 6U); + } + + /* Write to TIMx CR2 */ + LL_TIM_WriteReg(TIMx, CR2, tmpcr2); + + /* Write to TIMx CCMR2 */ + LL_TIM_WriteReg(TIMx, CCMR2, tmpccmr2); + + /* Set the Capture Compare Register value */ + LL_TIM_OC_SetCompareCH4(TIMx, TIM_OCInitStruct->CompareValue); + + /* Write to TIMx CCER */ + LL_TIM_WriteReg(TIMx, CCER, tmpccer); + + return SUCCESS; +} + + +/** + * @brief Configure the TIMx input channel 1. + * @param TIMx Timer Instance + * @param TIM_ICInitStruct pointer to the the TIMx input channel 1 configuration data structure + * @retval An ErrorStatus enumeration value: + * - SUCCESS: TIMx registers are de-initialized + * - ERROR: not applicable + */ +static ErrorStatus IC1Config(TIM_TypeDef *TIMx, LL_TIM_IC_InitTypeDef *TIM_ICInitStruct) +{ + /* Check the parameters */ + assert_param(IS_TIM_CC1_INSTANCE(TIMx)); + assert_param(IS_LL_TIM_IC_POLARITY(TIM_ICInitStruct->ICPolarity)); + assert_param(IS_LL_TIM_ACTIVEINPUT(TIM_ICInitStruct->ICActiveInput)); + assert_param(IS_LL_TIM_ICPSC(TIM_ICInitStruct->ICPrescaler)); + assert_param(IS_LL_TIM_IC_FILTER(TIM_ICInitStruct->ICFilter)); + + /* Disable the Channel 1: Reset the CC1E Bit */ + TIMx->CCER &= (uint32_t)~TIM_CCER_CC1E; + + /* Select the Input and set the filter and the prescaler value */ + MODIFY_REG(TIMx->CCMR1, + (TIM_CCMR1_CC1S | TIM_CCMR1_IC1F | TIM_CCMR1_IC1PSC), + (TIM_ICInitStruct->ICActiveInput | TIM_ICInitStruct->ICFilter | TIM_ICInitStruct->ICPrescaler) >> 16U); + + /* Select the Polarity and set the CC1E Bit */ + MODIFY_REG(TIMx->CCER, + (TIM_CCER_CC1P | TIM_CCER_CC1NP), + (TIM_ICInitStruct->ICPolarity | TIM_CCER_CC1E)); + + return SUCCESS; +} + +/** + * @brief Configure the TIMx input channel 2. + * @param TIMx Timer Instance + * @param TIM_ICInitStruct pointer to the the TIMx input channel 2 configuration data structure + * @retval An ErrorStatus enumeration value: + * - SUCCESS: TIMx registers are de-initialized + * - ERROR: not applicable + */ +static ErrorStatus IC2Config(TIM_TypeDef *TIMx, LL_TIM_IC_InitTypeDef *TIM_ICInitStruct) +{ + /* Check the parameters */ + assert_param(IS_TIM_CC2_INSTANCE(TIMx)); + assert_param(IS_LL_TIM_IC_POLARITY(TIM_ICInitStruct->ICPolarity)); + assert_param(IS_LL_TIM_ACTIVEINPUT(TIM_ICInitStruct->ICActiveInput)); + assert_param(IS_LL_TIM_ICPSC(TIM_ICInitStruct->ICPrescaler)); + assert_param(IS_LL_TIM_IC_FILTER(TIM_ICInitStruct->ICFilter)); + + /* Disable the Channel 2: Reset the CC2E Bit */ + TIMx->CCER &= (uint32_t)~TIM_CCER_CC2E; + + /* Select the Input and set the filter and the prescaler value */ + MODIFY_REG(TIMx->CCMR1, + (TIM_CCMR1_CC2S | TIM_CCMR1_IC2F | TIM_CCMR1_IC2PSC), + (TIM_ICInitStruct->ICActiveInput | TIM_ICInitStruct->ICFilter | TIM_ICInitStruct->ICPrescaler) >> 8U); + + /* Select the Polarity and set the CC2E Bit */ + MODIFY_REG(TIMx->CCER, + (TIM_CCER_CC2P | TIM_CCER_CC2NP), + ((TIM_ICInitStruct->ICPolarity << 4U) | TIM_CCER_CC2E)); + + return SUCCESS; +} + +/** + * @brief Configure the TIMx input channel 3. + * @param TIMx Timer Instance + * @param TIM_ICInitStruct pointer to the the TIMx input channel 3 configuration data structure + * @retval An ErrorStatus enumeration value: + * - SUCCESS: TIMx registers are de-initialized + * - ERROR: not applicable + */ +static ErrorStatus IC3Config(TIM_TypeDef *TIMx, LL_TIM_IC_InitTypeDef *TIM_ICInitStruct) +{ + /* Check the parameters */ + assert_param(IS_TIM_CC3_INSTANCE(TIMx)); + assert_param(IS_LL_TIM_IC_POLARITY(TIM_ICInitStruct->ICPolarity)); + assert_param(IS_LL_TIM_ACTIVEINPUT(TIM_ICInitStruct->ICActiveInput)); + assert_param(IS_LL_TIM_ICPSC(TIM_ICInitStruct->ICPrescaler)); + assert_param(IS_LL_TIM_IC_FILTER(TIM_ICInitStruct->ICFilter)); + + /* Disable the Channel 3: Reset the CC3E Bit */ + TIMx->CCER &= (uint32_t)~TIM_CCER_CC3E; + + /* Select the Input and set the filter and the prescaler value */ + MODIFY_REG(TIMx->CCMR2, + (TIM_CCMR2_CC3S | TIM_CCMR2_IC3F | TIM_CCMR2_IC3PSC), + (TIM_ICInitStruct->ICActiveInput | TIM_ICInitStruct->ICFilter | TIM_ICInitStruct->ICPrescaler) >> 16U); + + /* Select the Polarity and set the CC3E Bit */ + MODIFY_REG(TIMx->CCER, + (TIM_CCER_CC3P | TIM_CCER_CC3NP), + ((TIM_ICInitStruct->ICPolarity << 8U) | TIM_CCER_CC3E)); + + return SUCCESS; +} + +/** + * @brief Configure the TIMx input channel 4. + * @param TIMx Timer Instance + * @param TIM_ICInitStruct pointer to the the TIMx input channel 4 configuration data structure + * @retval An ErrorStatus enumeration value: + * - SUCCESS: TIMx registers are de-initialized + * - ERROR: not applicable + */ +static ErrorStatus IC4Config(TIM_TypeDef *TIMx, LL_TIM_IC_InitTypeDef *TIM_ICInitStruct) +{ + /* Check the parameters */ + assert_param(IS_TIM_CC4_INSTANCE(TIMx)); + assert_param(IS_LL_TIM_IC_POLARITY(TIM_ICInitStruct->ICPolarity)); + assert_param(IS_LL_TIM_ACTIVEINPUT(TIM_ICInitStruct->ICActiveInput)); + assert_param(IS_LL_TIM_ICPSC(TIM_ICInitStruct->ICPrescaler)); + assert_param(IS_LL_TIM_IC_FILTER(TIM_ICInitStruct->ICFilter)); + + /* Disable the Channel 4: Reset the CC4E Bit */ + TIMx->CCER &= (uint32_t)~TIM_CCER_CC4E; + + /* Select the Input and set the filter and the prescaler value */ + MODIFY_REG(TIMx->CCMR2, + (TIM_CCMR2_CC4S | TIM_CCMR2_IC4F | TIM_CCMR2_IC4PSC), + (TIM_ICInitStruct->ICActiveInput | TIM_ICInitStruct->ICFilter | TIM_ICInitStruct->ICPrescaler) >> 8U); + + /* Select the Polarity and set the CC4E Bit */ + MODIFY_REG(TIMx->CCER, + TIM_CCER_CC4P, + ((TIM_ICInitStruct->ICPolarity << 12U) | TIM_CCER_CC4E)); + + return SUCCESS; +} + + +/** + * @} + */ + +/** + * @} + */ + +#endif /* TIM1 || TIM2 || TIM3 || TIM4 || TIM5 || TIM6 || TIM7 || TIM8 || TIM9 || TIM10 || TIM11 || TIM12 || TIM13 || TIM14 || TIM15 || TIM16 || TIM17 */ + +/** + * @} + */ + +#endif /* USE_FULL_LL_DRIVER */ + +/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/ diff --git a/LLDrivers/src/stm32f1xx_ll_usart.c b/LLDrivers/src/stm32f1xx_ll_usart.c new file mode 100644 index 0000000..10578a1 --- /dev/null +++ b/LLDrivers/src/stm32f1xx_ll_usart.c @@ -0,0 +1,446 @@ +/** + ****************************************************************************** + * @file stm32f1xx_ll_usart.c + * @author MCD Application Team + * @brief USART LL module driver. + ****************************************************************************** + * @attention + * + *

© Copyright (c) 2016 STMicroelectronics. + * All rights reserved.

+ * + * This software component is licensed by ST under BSD 3-Clause license, + * the "License"; You may not use this file except in compliance with the + * License. You may obtain a copy of the License at: + * opensource.org/licenses/BSD-3-Clause + * + ****************************************************************************** + */ + +#if defined(USE_FULL_LL_DRIVER) + +/* Includes ------------------------------------------------------------------*/ +#include "stm32f1xx_ll_usart.h" +#include "stm32f1xx_ll_rcc.h" +#include "stm32f1xx_ll_bus.h" +#ifdef USE_FULL_ASSERT +#include "stm32_assert.h" +#else +#define assert_param(expr) ((void)0U) +#endif + +/** @addtogroup STM32F1xx_LL_Driver + * @{ + */ + +#if defined (USART1) || defined (USART2) || defined (USART3) || defined (UART4) || defined (UART5) + +/** @addtogroup USART_LL + * @{ + */ + +/* Private types -------------------------------------------------------------*/ +/* Private variables ---------------------------------------------------------*/ +/* Private constants ---------------------------------------------------------*/ +/** @addtogroup USART_LL_Private_Constants + * @{ + */ + +/** + * @} + */ + + +/* Private macros ------------------------------------------------------------*/ +/** @addtogroup USART_LL_Private_Macros + * @{ + */ + +/* __BAUDRATE__ The maximum Baud Rate is derived from the maximum clock available + * divided by the smallest oversampling used on the USART (i.e. 8) */ +#define IS_LL_USART_BAUDRATE(__BAUDRATE__) ((__BAUDRATE__) <= 4500000U) + +/* __VALUE__ In case of oversampling by 16 and 8, BRR content must be greater than or equal to 16d. */ +#define IS_LL_USART_BRR_MIN(__VALUE__) ((__VALUE__) >= 16U) + +/* __VALUE__ BRR content must be lower than or equal to 0xFFFF. */ +#define IS_LL_USART_BRR_MAX(__VALUE__) ((__VALUE__) <= 0x0000FFFFU) + +#define IS_LL_USART_DIRECTION(__VALUE__) (((__VALUE__) == LL_USART_DIRECTION_NONE) \ + || ((__VALUE__) == LL_USART_DIRECTION_RX) \ + || ((__VALUE__) == LL_USART_DIRECTION_TX) \ + || ((__VALUE__) == LL_USART_DIRECTION_TX_RX)) + +#define IS_LL_USART_PARITY(__VALUE__) (((__VALUE__) == LL_USART_PARITY_NONE) \ + || ((__VALUE__) == LL_USART_PARITY_EVEN) \ + || ((__VALUE__) == LL_USART_PARITY_ODD)) + +#define IS_LL_USART_DATAWIDTH(__VALUE__) (((__VALUE__) == LL_USART_DATAWIDTH_8B) \ + || ((__VALUE__) == LL_USART_DATAWIDTH_9B)) + +#define IS_LL_USART_OVERSAMPLING(__VALUE__) (((__VALUE__) == LL_USART_OVERSAMPLING_16) \ + || ((__VALUE__) == LL_USART_OVERSAMPLING_8)) + +#define IS_LL_USART_LASTBITCLKOUTPUT(__VALUE__) (((__VALUE__) == LL_USART_LASTCLKPULSE_NO_OUTPUT) \ + || ((__VALUE__) == LL_USART_LASTCLKPULSE_OUTPUT)) + +#define IS_LL_USART_CLOCKPHASE(__VALUE__) (((__VALUE__) == LL_USART_PHASE_1EDGE) \ + || ((__VALUE__) == LL_USART_PHASE_2EDGE)) + +#define IS_LL_USART_CLOCKPOLARITY(__VALUE__) (((__VALUE__) == LL_USART_POLARITY_LOW) \ + || ((__VALUE__) == LL_USART_POLARITY_HIGH)) + +#define IS_LL_USART_CLOCKOUTPUT(__VALUE__) (((__VALUE__) == LL_USART_CLOCK_DISABLE) \ + || ((__VALUE__) == LL_USART_CLOCK_ENABLE)) + +#define IS_LL_USART_STOPBITS(__VALUE__) (((__VALUE__) == LL_USART_STOPBITS_0_5) \ + || ((__VALUE__) == LL_USART_STOPBITS_1) \ + || ((__VALUE__) == LL_USART_STOPBITS_1_5) \ + || ((__VALUE__) == LL_USART_STOPBITS_2)) + +#define IS_LL_USART_HWCONTROL(__VALUE__) (((__VALUE__) == LL_USART_HWCONTROL_NONE) \ + || ((__VALUE__) == LL_USART_HWCONTROL_RTS) \ + || ((__VALUE__) == LL_USART_HWCONTROL_CTS) \ + || ((__VALUE__) == LL_USART_HWCONTROL_RTS_CTS)) + +/** + * @} + */ + +/* Private function prototypes -----------------------------------------------*/ + +/* Exported functions --------------------------------------------------------*/ +/** @addtogroup USART_LL_Exported_Functions + * @{ + */ + +/** @addtogroup USART_LL_EF_Init + * @{ + */ + +/** + * @brief De-initialize USART registers (Registers restored to their default values). + * @param USARTx USART Instance + * @retval An ErrorStatus enumeration value: + * - SUCCESS: USART registers are de-initialized + * - ERROR: USART registers are not de-initialized + */ +ErrorStatus LL_USART_DeInit(USART_TypeDef *USARTx) +{ + ErrorStatus status = SUCCESS; + + /* Check the parameters */ + assert_param(IS_UART_INSTANCE(USARTx)); + + if (USARTx == USART1) + { + /* Force reset of USART clock */ + LL_APB2_GRP1_ForceReset(LL_APB2_GRP1_PERIPH_USART1); + + /* Release reset of USART clock */ + LL_APB2_GRP1_ReleaseReset(LL_APB2_GRP1_PERIPH_USART1); + } + else if (USARTx == USART2) + { + /* Force reset of USART clock */ + LL_APB1_GRP1_ForceReset(LL_APB1_GRP1_PERIPH_USART2); + + /* Release reset of USART clock */ + LL_APB1_GRP1_ReleaseReset(LL_APB1_GRP1_PERIPH_USART2); + } +#if defined(USART3) + else if (USARTx == USART3) + { + /* Force reset of USART clock */ + LL_APB1_GRP1_ForceReset(LL_APB1_GRP1_PERIPH_USART3); + + /* Release reset of USART clock */ + LL_APB1_GRP1_ReleaseReset(LL_APB1_GRP1_PERIPH_USART3); + } +#endif /* USART3 */ +#if defined(UART4) + else if (USARTx == UART4) + { + /* Force reset of UART clock */ + LL_APB1_GRP1_ForceReset(LL_APB1_GRP1_PERIPH_UART4); + + /* Release reset of UART clock */ + LL_APB1_GRP1_ReleaseReset(LL_APB1_GRP1_PERIPH_UART4); + } +#endif /* UART4 */ +#if defined(UART5) + else if (USARTx == UART5) + { + /* Force reset of UART clock */ + LL_APB1_GRP1_ForceReset(LL_APB1_GRP1_PERIPH_UART5); + + /* Release reset of UART clock */ + LL_APB1_GRP1_ReleaseReset(LL_APB1_GRP1_PERIPH_UART5); + } +#endif /* UART5 */ + else + { + status = ERROR; + } + + return (status); +} + +/** + * @brief Initialize USART registers according to the specified + * parameters in USART_InitStruct. + * @note As some bits in USART configuration registers can only be written when the USART is disabled (USART_CR1_UE bit =0), + * USART IP should be in disabled state prior calling this function. Otherwise, ERROR result will be returned. + * @note Baud rate value stored in USART_InitStruct BaudRate field, should be valid (different from 0). + * @param USARTx USART Instance + * @param USART_InitStruct pointer to a LL_USART_InitTypeDef structure + * that contains the configuration information for the specified USART peripheral. + * @retval An ErrorStatus enumeration value: + * - SUCCESS: USART registers are initialized according to USART_InitStruct content + * - ERROR: Problem occurred during USART Registers initialization + */ +ErrorStatus LL_USART_Init(USART_TypeDef *USARTx, LL_USART_InitTypeDef *USART_InitStruct) +{ + ErrorStatus status = ERROR; + uint32_t periphclk = LL_RCC_PERIPH_FREQUENCY_NO; + LL_RCC_ClocksTypeDef rcc_clocks; + + /* Check the parameters */ + assert_param(IS_UART_INSTANCE(USARTx)); + assert_param(IS_LL_USART_BAUDRATE(USART_InitStruct->BaudRate)); + assert_param(IS_LL_USART_DATAWIDTH(USART_InitStruct->DataWidth)); + assert_param(IS_LL_USART_STOPBITS(USART_InitStruct->StopBits)); + assert_param(IS_LL_USART_PARITY(USART_InitStruct->Parity)); + assert_param(IS_LL_USART_DIRECTION(USART_InitStruct->TransferDirection)); + assert_param(IS_LL_USART_HWCONTROL(USART_InitStruct->HardwareFlowControl)); +#if defined(USART_CR1_OVER8) + assert_param(IS_LL_USART_OVERSAMPLING(USART_InitStruct->OverSampling)); +#endif /* USART_OverSampling_Feature */ + + /* USART needs to be in disabled state, in order to be able to configure some bits in + CRx registers */ + if (LL_USART_IsEnabled(USARTx) == 0U) + { + /*---------------------------- USART CR1 Configuration ----------------------- + * Configure USARTx CR1 (USART Word Length, Parity, Mode and Oversampling bits) with parameters: + * - DataWidth: USART_CR1_M bits according to USART_InitStruct->DataWidth value + * - Parity: USART_CR1_PCE, USART_CR1_PS bits according to USART_InitStruct->Parity value + * - TransferDirection: USART_CR1_TE, USART_CR1_RE bits according to USART_InitStruct->TransferDirection value + * - Oversampling: USART_CR1_OVER8 bit according to USART_InitStruct->OverSampling value. + */ +#if defined(USART_CR1_OVER8) + MODIFY_REG(USARTx->CR1, + (USART_CR1_M | USART_CR1_PCE | USART_CR1_PS | + USART_CR1_TE | USART_CR1_RE | USART_CR1_OVER8), + (USART_InitStruct->DataWidth | USART_InitStruct->Parity | + USART_InitStruct->TransferDirection | USART_InitStruct->OverSampling)); +#else + MODIFY_REG(USARTx->CR1, + (USART_CR1_M | USART_CR1_PCE | USART_CR1_PS | + USART_CR1_TE | USART_CR1_RE), + (USART_InitStruct->DataWidth | USART_InitStruct->Parity | + USART_InitStruct->TransferDirection)); +#endif /* USART_OverSampling_Feature */ + + /*---------------------------- USART CR2 Configuration ----------------------- + * Configure USARTx CR2 (Stop bits) with parameters: + * - Stop Bits: USART_CR2_STOP bits according to USART_InitStruct->StopBits value. + * - CLKEN, CPOL, CPHA and LBCL bits are to be configured using LL_USART_ClockInit(). + */ + LL_USART_SetStopBitsLength(USARTx, USART_InitStruct->StopBits); + + /*---------------------------- USART CR3 Configuration ----------------------- + * Configure USARTx CR3 (Hardware Flow Control) with parameters: + * - HardwareFlowControl: USART_CR3_RTSE, USART_CR3_CTSE bits according to USART_InitStruct->HardwareFlowControl value. + */ + LL_USART_SetHWFlowCtrl(USARTx, USART_InitStruct->HardwareFlowControl); + + /*---------------------------- USART BRR Configuration ----------------------- + * Retrieve Clock frequency used for USART Peripheral + */ + LL_RCC_GetSystemClocksFreq(&rcc_clocks); + if (USARTx == USART1) + { + periphclk = rcc_clocks.PCLK2_Frequency; + } + else if (USARTx == USART2) + { + periphclk = rcc_clocks.PCLK1_Frequency; + } +#if defined(USART3) + else if (USARTx == USART3) + { + periphclk = rcc_clocks.PCLK1_Frequency; + } +#endif /* USART3 */ +#if defined(UART4) + else if (USARTx == UART4) + { + periphclk = rcc_clocks.PCLK1_Frequency; + } +#endif /* UART4 */ +#if defined(UART5) + else if (USARTx == UART5) + { + periphclk = rcc_clocks.PCLK1_Frequency; + } +#endif /* UART5 */ + else + { + /* Nothing to do, as error code is already assigned to ERROR value */ + } + + /* Configure the USART Baud Rate : + - valid baud rate value (different from 0) is required + - Peripheral clock as returned by RCC service, should be valid (different from 0). + */ + if ((periphclk != LL_RCC_PERIPH_FREQUENCY_NO) + && (USART_InitStruct->BaudRate != 0U)) + { + status = SUCCESS; +#if defined(USART_CR1_OVER8) + LL_USART_SetBaudRate(USARTx, + periphclk, + USART_InitStruct->OverSampling, + USART_InitStruct->BaudRate); +#else + LL_USART_SetBaudRate(USARTx, + periphclk, + USART_InitStruct->BaudRate); +#endif /* USART_OverSampling_Feature */ + + /* Check BRR is greater than or equal to 16d */ + assert_param(IS_LL_USART_BRR_MIN(USARTx->BRR)); + + /* Check BRR is greater than or equal to 16d */ + assert_param(IS_LL_USART_BRR_MAX(USARTx->BRR)); + } + } + /* Endif (=> USART not in Disabled state => return ERROR) */ + + return (status); +} + +/** + * @brief Set each @ref LL_USART_InitTypeDef field to default value. + * @param USART_InitStruct Pointer to a @ref LL_USART_InitTypeDef structure + * whose fields will be set to default values. + * @retval None + */ + +void LL_USART_StructInit(LL_USART_InitTypeDef *USART_InitStruct) +{ + /* Set USART_InitStruct fields to default values */ + USART_InitStruct->BaudRate = 9600U; + USART_InitStruct->DataWidth = LL_USART_DATAWIDTH_8B; + USART_InitStruct->StopBits = LL_USART_STOPBITS_1; + USART_InitStruct->Parity = LL_USART_PARITY_NONE ; + USART_InitStruct->TransferDirection = LL_USART_DIRECTION_TX_RX; + USART_InitStruct->HardwareFlowControl = LL_USART_HWCONTROL_NONE; +#if defined(USART_CR1_OVER8) + USART_InitStruct->OverSampling = LL_USART_OVERSAMPLING_16; +#endif /* USART_OverSampling_Feature */ +} + +/** + * @brief Initialize USART Clock related settings according to the + * specified parameters in the USART_ClockInitStruct. + * @note As some bits in USART configuration registers can only be written when the USART is disabled (USART_CR1_UE bit =0), + * USART IP should be in disabled state prior calling this function. Otherwise, ERROR result will be returned. + * @param USARTx USART Instance + * @param USART_ClockInitStruct Pointer to a @ref LL_USART_ClockInitTypeDef structure + * that contains the Clock configuration information for the specified USART peripheral. + * @retval An ErrorStatus enumeration value: + * - SUCCESS: USART registers related to Clock settings are initialized according to USART_ClockInitStruct content + * - ERROR: Problem occurred during USART Registers initialization + */ +ErrorStatus LL_USART_ClockInit(USART_TypeDef *USARTx, LL_USART_ClockInitTypeDef *USART_ClockInitStruct) +{ + ErrorStatus status = SUCCESS; + + /* Check USART Instance and Clock signal output parameters */ + assert_param(IS_UART_INSTANCE(USARTx)); + assert_param(IS_LL_USART_CLOCKOUTPUT(USART_ClockInitStruct->ClockOutput)); + + /* USART needs to be in disabled state, in order to be able to configure some bits in + CRx registers */ + if (LL_USART_IsEnabled(USARTx) == 0U) + { + /*---------------------------- USART CR2 Configuration -----------------------*/ + /* If Clock signal has to be output */ + if (USART_ClockInitStruct->ClockOutput == LL_USART_CLOCK_DISABLE) + { + /* Deactivate Clock signal delivery : + * - Disable Clock Output: USART_CR2_CLKEN cleared + */ + LL_USART_DisableSCLKOutput(USARTx); + } + else + { + /* Ensure USART instance is USART capable */ + assert_param(IS_USART_INSTANCE(USARTx)); + + /* Check clock related parameters */ + assert_param(IS_LL_USART_CLOCKPOLARITY(USART_ClockInitStruct->ClockPolarity)); + assert_param(IS_LL_USART_CLOCKPHASE(USART_ClockInitStruct->ClockPhase)); + assert_param(IS_LL_USART_LASTBITCLKOUTPUT(USART_ClockInitStruct->LastBitClockPulse)); + + /*---------------------------- USART CR2 Configuration ----------------------- + * Configure USARTx CR2 (Clock signal related bits) with parameters: + * - Enable Clock Output: USART_CR2_CLKEN set + * - Clock Polarity: USART_CR2_CPOL bit according to USART_ClockInitStruct->ClockPolarity value + * - Clock Phase: USART_CR2_CPHA bit according to USART_ClockInitStruct->ClockPhase value + * - Last Bit Clock Pulse Output: USART_CR2_LBCL bit according to USART_ClockInitStruct->LastBitClockPulse value. + */ + MODIFY_REG(USARTx->CR2, + USART_CR2_CLKEN | USART_CR2_CPHA | USART_CR2_CPOL | USART_CR2_LBCL, + USART_CR2_CLKEN | USART_ClockInitStruct->ClockPolarity | + USART_ClockInitStruct->ClockPhase | USART_ClockInitStruct->LastBitClockPulse); + } + } + /* Else (USART not in Disabled state => return ERROR */ + else + { + status = ERROR; + } + + return (status); +} + +/** + * @brief Set each field of a @ref LL_USART_ClockInitTypeDef type structure to default value. + * @param USART_ClockInitStruct Pointer to a @ref LL_USART_ClockInitTypeDef structure + * whose fields will be set to default values. + * @retval None + */ +void LL_USART_ClockStructInit(LL_USART_ClockInitTypeDef *USART_ClockInitStruct) +{ + /* Set LL_USART_ClockInitStruct fields with default values */ + USART_ClockInitStruct->ClockOutput = LL_USART_CLOCK_DISABLE; + USART_ClockInitStruct->ClockPolarity = LL_USART_POLARITY_LOW; /* Not relevant when ClockOutput = LL_USART_CLOCK_DISABLE */ + USART_ClockInitStruct->ClockPhase = LL_USART_PHASE_1EDGE; /* Not relevant when ClockOutput = LL_USART_CLOCK_DISABLE */ + USART_ClockInitStruct->LastBitClockPulse = LL_USART_LASTCLKPULSE_NO_OUTPUT; /* Not relevant when ClockOutput = LL_USART_CLOCK_DISABLE */ +} + +/** + * @} + */ + +/** + * @} + */ + +/** + * @} + */ + +#endif /* USART1 || USART2 || USART3 || UART4 || UART5 */ + +/** + * @} + */ + +#endif /* USE_FULL_LL_DRIVER */ + +/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/ + diff --git a/LLDrivers/src/stm32f1xx_ll_usb.c b/LLDrivers/src/stm32f1xx_ll_usb.c new file mode 100644 index 0000000..252baac --- /dev/null +++ b/LLDrivers/src/stm32f1xx_ll_usb.c @@ -0,0 +1,2591 @@ +/** + ****************************************************************************** + * @file stm32f1xx_ll_usb.c + * @author MCD Application Team + * @brief USB Low Layer HAL module driver. + * + * This file provides firmware functions to manage the following + * functionalities of the USB Peripheral Controller: + * + Initialization/de-initialization functions + * + I/O operation functions + * + Peripheral Control functions + * + Peripheral State functions + * + @verbatim + ============================================================================== + ##### How to use this driver ##### + ============================================================================== + [..] + (#) Fill parameters of Init structure in USB_OTG_CfgTypeDef structure. + + (#) Call USB_CoreInit() API to initialize the USB Core peripheral. + + (#) The upper HAL HCD/PCD driver will call the right routines for its internal processes. + + @endverbatim + ****************************************************************************** + * @attention + * + *

© Copyright (c) 2016 STMicroelectronics. + * All rights reserved.

+ * + * This software component is licensed by ST under BSD 3-Clause license, + * the "License"; You may not use this file except in compliance with the + * License. You may obtain a copy of the License at: + * opensource.org/licenses/BSD-3-Clause + * + ****************************************************************************** + */ + +/* Includes ------------------------------------------------------------------*/ +#include "stm32f1xx_hal.h" + +/** @addtogroup STM32F1xx_LL_USB_DRIVER + * @{ + */ + +#if defined (HAL_PCD_MODULE_ENABLED) || defined (HAL_HCD_MODULE_ENABLED) +#if defined (USB) || defined (USB_OTG_FS) +/* Private typedef -----------------------------------------------------------*/ +/* Private define ------------------------------------------------------------*/ +/* Private macro -------------------------------------------------------------*/ +/* Private variables ---------------------------------------------------------*/ +/* Private function prototypes -----------------------------------------------*/ +/* Private functions ---------------------------------------------------------*/ +#if defined (USB_OTG_FS) +static HAL_StatusTypeDef USB_CoreReset(USB_OTG_GlobalTypeDef *USBx); + +/* Exported functions --------------------------------------------------------*/ +/** @defgroup USB_LL_Exported_Functions USB Low Layer Exported Functions + * @{ + */ + +/** @defgroup USB_LL_Exported_Functions_Group1 Initialization/de-initialization functions + * @brief Initialization and Configuration functions + * +@verbatim + =============================================================================== + ##### Initialization/de-initialization functions ##### + =============================================================================== + +@endverbatim + * @{ + */ + +/** + * @brief Initializes the USB Core + * @param USBx USB Instance + * @param cfg pointer to a USB_OTG_CfgTypeDef structure that contains + * the configuration information for the specified USBx peripheral. + * @retval HAL status + */ +HAL_StatusTypeDef USB_CoreInit(USB_OTG_GlobalTypeDef *USBx, USB_OTG_CfgTypeDef cfg) +{ + HAL_StatusTypeDef ret; + + if (cfg.phy_itface == USB_OTG_ULPI_PHY) + { + USBx->GCCFG &= ~(USB_OTG_GCCFG_PWRDWN); + + /* Init The ULPI Interface */ + USBx->GUSBCFG &= ~(USB_OTG_GUSBCFG_TSDPS | USB_OTG_GUSBCFG_ULPIFSLS | USB_OTG_GUSBCFG_PHYSEL); + + /* Select vbus source */ + USBx->GUSBCFG &= ~(USB_OTG_GUSBCFG_ULPIEVBUSD | USB_OTG_GUSBCFG_ULPIEVBUSI); + if (cfg.use_external_vbus == 1U) + { + USBx->GUSBCFG |= USB_OTG_GUSBCFG_ULPIEVBUSD; + } + /* Reset after a PHY select */ + ret = USB_CoreReset(USBx); + } + else /* FS interface (embedded Phy) */ + { + /* Select FS Embedded PHY */ + USBx->GUSBCFG |= USB_OTG_GUSBCFG_PHYSEL; + + /* Reset after a PHY select and set Host mode */ + ret = USB_CoreReset(USBx); + + /* Activate the USB Transceiver */ + USBx->GCCFG |= USB_OTG_GCCFG_PWRDWN; + } + + return ret; +} + + +/** + * @brief Set the USB turnaround time + * @param USBx USB Instance + * @param hclk: AHB clock frequency + * @retval USB turnaround time In PHY Clocks number + */ +HAL_StatusTypeDef USB_SetTurnaroundTime(USB_OTG_GlobalTypeDef *USBx, + uint32_t hclk, uint8_t speed) +{ + uint32_t UsbTrd; + + /* The USBTRD is configured according to the tables below, depending on AHB frequency + used by application. In the low AHB frequency range it is used to stretch enough the USB response + time to IN tokens, the USB turnaround time, so to compensate for the longer AHB read access + latency to the Data FIFO */ + if (speed == USBD_FS_SPEED) + { + if ((hclk >= 14200000U) && (hclk < 15000000U)) + { + /* hclk Clock Range between 14.2-15 MHz */ + UsbTrd = 0xFU; + } + else if ((hclk >= 15000000U) && (hclk < 16000000U)) + { + /* hclk Clock Range between 15-16 MHz */ + UsbTrd = 0xEU; + } + else if ((hclk >= 16000000U) && (hclk < 17200000U)) + { + /* hclk Clock Range between 16-17.2 MHz */ + UsbTrd = 0xDU; + } + else if ((hclk >= 17200000U) && (hclk < 18500000U)) + { + /* hclk Clock Range between 17.2-18.5 MHz */ + UsbTrd = 0xCU; + } + else if ((hclk >= 18500000U) && (hclk < 20000000U)) + { + /* hclk Clock Range between 18.5-20 MHz */ + UsbTrd = 0xBU; + } + else if ((hclk >= 20000000U) && (hclk < 21800000U)) + { + /* hclk Clock Range between 20-21.8 MHz */ + UsbTrd = 0xAU; + } + else if ((hclk >= 21800000U) && (hclk < 24000000U)) + { + /* hclk Clock Range between 21.8-24 MHz */ + UsbTrd = 0x9U; + } + else if ((hclk >= 24000000U) && (hclk < 27700000U)) + { + /* hclk Clock Range between 24-27.7 MHz */ + UsbTrd = 0x8U; + } + else if ((hclk >= 27700000U) && (hclk < 32000000U)) + { + /* hclk Clock Range between 27.7-32 MHz */ + UsbTrd = 0x7U; + } + else /* if(hclk >= 32000000) */ + { + /* hclk Clock Range between 32-200 MHz */ + UsbTrd = 0x6U; + } + } + else + { + UsbTrd = USBD_DEFAULT_TRDT_VALUE; + } + + USBx->GUSBCFG &= ~USB_OTG_GUSBCFG_TRDT; + USBx->GUSBCFG |= (uint32_t)((UsbTrd << 10) & USB_OTG_GUSBCFG_TRDT); + + return HAL_OK; +} + +/** + * @brief USB_EnableGlobalInt + * Enables the controller's Global Int in the AHB Config reg + * @param USBx Selected device + * @retval HAL status + */ +HAL_StatusTypeDef USB_EnableGlobalInt(USB_OTG_GlobalTypeDef *USBx) +{ + USBx->GAHBCFG |= USB_OTG_GAHBCFG_GINT; + return HAL_OK; +} + +/** + * @brief USB_DisableGlobalInt + * Disable the controller's Global Int in the AHB Config reg + * @param USBx Selected device + * @retval HAL status +*/ +HAL_StatusTypeDef USB_DisableGlobalInt(USB_OTG_GlobalTypeDef *USBx) +{ + USBx->GAHBCFG &= ~USB_OTG_GAHBCFG_GINT; + return HAL_OK; +} + +/** + * @brief USB_SetCurrentMode : Set functional mode + * @param USBx Selected device + * @param mode current core mode + * This parameter can be one of these values: + * @arg USB_DEVICE_MODE: Peripheral mode + * @arg USB_HOST_MODE: Host mode + * @arg USB_DRD_MODE: Dual Role Device mode + * @retval HAL status + */ +HAL_StatusTypeDef USB_SetCurrentMode(USB_OTG_GlobalTypeDef *USBx, USB_ModeTypeDef mode) +{ + USBx->GUSBCFG &= ~(USB_OTG_GUSBCFG_FHMOD | USB_OTG_GUSBCFG_FDMOD); + + if (mode == USB_HOST_MODE) + { + USBx->GUSBCFG |= USB_OTG_GUSBCFG_FHMOD; + } + else if (mode == USB_DEVICE_MODE) + { + USBx->GUSBCFG |= USB_OTG_GUSBCFG_FDMOD; + } + else + { + return HAL_ERROR; + } + HAL_Delay(50U); + + return HAL_OK; +} + +/** + * @brief USB_DevInit : Initializes the USB_OTG controller registers + * for device mode + * @param USBx Selected device + * @param cfg pointer to a USB_OTG_CfgTypeDef structure that contains + * the configuration information for the specified USBx peripheral. + * @retval HAL status + */ +HAL_StatusTypeDef USB_DevInit(USB_OTG_GlobalTypeDef *USBx, USB_OTG_CfgTypeDef cfg) +{ + HAL_StatusTypeDef ret = HAL_OK; + uint32_t USBx_BASE = (uint32_t)USBx; + uint32_t i; + + for (i = 0U; i < 15U; i++) + { + USBx->DIEPTXF[i] = 0U; + } + + /* Enable HW VBUS sensing */ + USBx->GCCFG |= USB_OTG_GCCFG_VBUSBSEN; + + /* Restart the Phy Clock */ + USBx_PCGCCTL = 0U; + + /* Device mode configuration */ + USBx_DEVICE->DCFG |= DCFG_FRAME_INTERVAL_80; + + /* Set Core speed to Full speed mode */ + (void)USB_SetDevSpeed(USBx, USB_OTG_SPEED_FULL); + + /* Flush the FIFOs */ + if (USB_FlushTxFifo(USBx, 0x10U) != HAL_OK) /* all Tx FIFOs */ + { + ret = HAL_ERROR; + } + + if (USB_FlushRxFifo(USBx) != HAL_OK) + { + ret = HAL_ERROR; + } + + /* Clear all pending Device Interrupts */ + USBx_DEVICE->DIEPMSK = 0U; + USBx_DEVICE->DOEPMSK = 0U; + USBx_DEVICE->DAINTMSK = 0U; + + for (i = 0U; i < cfg.dev_endpoints; i++) + { + if ((USBx_INEP(i)->DIEPCTL & USB_OTG_DIEPCTL_EPENA) == USB_OTG_DIEPCTL_EPENA) + { + if (i == 0U) + { + USBx_INEP(i)->DIEPCTL = USB_OTG_DIEPCTL_SNAK; + } + else + { + USBx_INEP(i)->DIEPCTL = USB_OTG_DIEPCTL_EPDIS | USB_OTG_DIEPCTL_SNAK; + } + } + else + { + USBx_INEP(i)->DIEPCTL = 0U; + } + + USBx_INEP(i)->DIEPTSIZ = 0U; + USBx_INEP(i)->DIEPINT = 0xFB7FU; + } + + for (i = 0U; i < cfg.dev_endpoints; i++) + { + if ((USBx_OUTEP(i)->DOEPCTL & USB_OTG_DOEPCTL_EPENA) == USB_OTG_DOEPCTL_EPENA) + { + if (i == 0U) + { + USBx_OUTEP(i)->DOEPCTL = USB_OTG_DOEPCTL_SNAK; + } + else + { + USBx_OUTEP(i)->DOEPCTL = USB_OTG_DOEPCTL_EPDIS | USB_OTG_DOEPCTL_SNAK; + } + } + else + { + USBx_OUTEP(i)->DOEPCTL = 0U; + } + + USBx_OUTEP(i)->DOEPTSIZ = 0U; + USBx_OUTEP(i)->DOEPINT = 0xFB7FU; + } + + USBx_DEVICE->DIEPMSK &= ~(USB_OTG_DIEPMSK_TXFURM); + + /* Disable all interrupts. */ + USBx->GINTMSK = 0U; + + /* Clear any pending interrupts */ + USBx->GINTSTS = 0xBFFFFFFFU; + + /* Enable the common interrupts */ + USBx->GINTMSK |= USB_OTG_GINTMSK_RXFLVLM; + + /* Enable interrupts matching to the Device mode ONLY */ + USBx->GINTMSK |= USB_OTG_GINTMSK_USBSUSPM | USB_OTG_GINTMSK_USBRST | + USB_OTG_GINTMSK_ENUMDNEM | USB_OTG_GINTMSK_IEPINT | + USB_OTG_GINTMSK_OEPINT | USB_OTG_GINTMSK_IISOIXFRM | + USB_OTG_GINTMSK_PXFRM_IISOOXFRM | USB_OTG_GINTMSK_WUIM; + + if (cfg.Sof_enable != 0U) + { + USBx->GINTMSK |= USB_OTG_GINTMSK_SOFM; + } + + if (cfg.vbus_sensing_enable == 1U) + { + USBx->GINTMSK |= (USB_OTG_GINTMSK_SRQIM | USB_OTG_GINTMSK_OTGINT); + } + + return ret; +} + +/** + * @brief USB_OTG_FlushTxFifo : Flush a Tx FIFO + * @param USBx Selected device + * @param num FIFO number + * This parameter can be a value from 1 to 15 + 15 means Flush all Tx FIFOs + * @retval HAL status + */ +HAL_StatusTypeDef USB_FlushTxFifo(USB_OTG_GlobalTypeDef *USBx, uint32_t num) +{ + uint32_t count = 0U; + + USBx->GRSTCTL = (USB_OTG_GRSTCTL_TXFFLSH | (num << 6)); + + do + { + if (++count > 200000U) + { + return HAL_TIMEOUT; + } + } + while ((USBx->GRSTCTL & USB_OTG_GRSTCTL_TXFFLSH) == USB_OTG_GRSTCTL_TXFFLSH); + + return HAL_OK; +} + +/** + * @brief USB_FlushRxFifo : Flush Rx FIFO + * @param USBx Selected device + * @retval HAL status + */ +HAL_StatusTypeDef USB_FlushRxFifo(USB_OTG_GlobalTypeDef *USBx) +{ + uint32_t count = 0; + + USBx->GRSTCTL = USB_OTG_GRSTCTL_RXFFLSH; + + do + { + if (++count > 200000U) + { + return HAL_TIMEOUT; + } + } + while ((USBx->GRSTCTL & USB_OTG_GRSTCTL_RXFFLSH) == USB_OTG_GRSTCTL_RXFFLSH); + + return HAL_OK; +} + +/** + * @brief USB_SetDevSpeed Initializes the DevSpd field of DCFG register + * depending the PHY type and the enumeration speed of the device. + * @param USBx Selected device + * @param speed device speed + * This parameter can be one of these values: + * @arg USB_OTG_SPEED_FULL: Full speed mode + * @retval Hal status + */ +HAL_StatusTypeDef USB_SetDevSpeed(USB_OTG_GlobalTypeDef *USBx, uint8_t speed) +{ + uint32_t USBx_BASE = (uint32_t)USBx; + + USBx_DEVICE->DCFG |= speed; + return HAL_OK; +} + +/** + * @brief USB_GetDevSpeed Return the Dev Speed + * @param USBx Selected device + * @retval speed device speed + * This parameter can be one of these values: + * @arg PCD_SPEED_FULL: Full speed mode + */ +uint8_t USB_GetDevSpeed(USB_OTG_GlobalTypeDef *USBx) +{ + uint32_t USBx_BASE = (uint32_t)USBx; + uint8_t speed; + uint32_t DevEnumSpeed = USBx_DEVICE->DSTS & USB_OTG_DSTS_ENUMSPD; + + if ((DevEnumSpeed == DSTS_ENUMSPD_FS_PHY_30MHZ_OR_60MHZ) || + (DevEnumSpeed == DSTS_ENUMSPD_FS_PHY_48MHZ)) + { + speed = USBD_FS_SPEED; + } + else + { + speed = 0xFU; + } + + return speed; +} + +/** + * @brief Activate and configure an endpoint + * @param USBx Selected device + * @param ep pointer to endpoint structure + * @retval HAL status + */ +HAL_StatusTypeDef USB_ActivateEndpoint(USB_OTG_GlobalTypeDef *USBx, USB_OTG_EPTypeDef *ep) +{ + uint32_t USBx_BASE = (uint32_t)USBx; + uint32_t epnum = (uint32_t)ep->num; + + if (ep->is_in == 1U) + { + USBx_DEVICE->DAINTMSK |= USB_OTG_DAINTMSK_IEPM & (uint32_t)(1UL << (ep->num & EP_ADDR_MSK)); + + if ((USBx_INEP(epnum)->DIEPCTL & USB_OTG_DIEPCTL_USBAEP) == 0U) + { + USBx_INEP(epnum)->DIEPCTL |= (ep->maxpacket & USB_OTG_DIEPCTL_MPSIZ) | + ((uint32_t)ep->type << 18) | (epnum << 22) | + USB_OTG_DIEPCTL_SD0PID_SEVNFRM | + USB_OTG_DIEPCTL_USBAEP; + } + } + else + { + USBx_DEVICE->DAINTMSK |= USB_OTG_DAINTMSK_OEPM & ((uint32_t)(1UL << (ep->num & EP_ADDR_MSK)) << 16); + + if (((USBx_OUTEP(epnum)->DOEPCTL) & USB_OTG_DOEPCTL_USBAEP) == 0U) + { + USBx_OUTEP(epnum)->DOEPCTL |= (ep->maxpacket & USB_OTG_DOEPCTL_MPSIZ) | + ((uint32_t)ep->type << 18) | + USB_OTG_DIEPCTL_SD0PID_SEVNFRM | + USB_OTG_DOEPCTL_USBAEP; + } + } + return HAL_OK; +} + +/** + * @brief Activate and configure a dedicated endpoint + * @param USBx Selected device + * @param ep pointer to endpoint structure + * @retval HAL status + */ +HAL_StatusTypeDef USB_ActivateDedicatedEndpoint(USB_OTG_GlobalTypeDef *USBx, USB_OTG_EPTypeDef *ep) +{ + uint32_t USBx_BASE = (uint32_t)USBx; + uint32_t epnum = (uint32_t)ep->num; + + /* Read DEPCTLn register */ + if (ep->is_in == 1U) + { + if (((USBx_INEP(epnum)->DIEPCTL) & USB_OTG_DIEPCTL_USBAEP) == 0U) + { + USBx_INEP(epnum)->DIEPCTL |= (ep->maxpacket & USB_OTG_DIEPCTL_MPSIZ) | + ((uint32_t)ep->type << 18) | (epnum << 22) | + USB_OTG_DIEPCTL_SD0PID_SEVNFRM | + USB_OTG_DIEPCTL_USBAEP; + } + + USBx_DEVICE->DEACHMSK |= USB_OTG_DAINTMSK_IEPM & (uint32_t)(1UL << (ep->num & EP_ADDR_MSK)); + } + else + { + if (((USBx_OUTEP(epnum)->DOEPCTL) & USB_OTG_DOEPCTL_USBAEP) == 0U) + { + USBx_OUTEP(epnum)->DOEPCTL |= (ep->maxpacket & USB_OTG_DOEPCTL_MPSIZ) | + ((uint32_t)ep->type << 18) | (epnum << 22) | + USB_OTG_DOEPCTL_USBAEP; + } + + USBx_DEVICE->DEACHMSK |= USB_OTG_DAINTMSK_OEPM & ((uint32_t)(1UL << (ep->num & EP_ADDR_MSK)) << 16); + } + + return HAL_OK; +} + +/** + * @brief De-activate and de-initialize an endpoint + * @param USBx Selected device + * @param ep pointer to endpoint structure + * @retval HAL status + */ +HAL_StatusTypeDef USB_DeactivateEndpoint(USB_OTG_GlobalTypeDef *USBx, USB_OTG_EPTypeDef *ep) +{ + uint32_t USBx_BASE = (uint32_t)USBx; + uint32_t epnum = (uint32_t)ep->num; + + /* Read DEPCTLn register */ + if (ep->is_in == 1U) + { + USBx_DEVICE->DEACHMSK &= ~(USB_OTG_DAINTMSK_IEPM & (uint32_t)(1UL << (ep->num & EP_ADDR_MSK))); + USBx_DEVICE->DAINTMSK &= ~(USB_OTG_DAINTMSK_IEPM & (uint32_t)(1UL << (ep->num & EP_ADDR_MSK))); + USBx_INEP(epnum)->DIEPCTL &= ~(USB_OTG_DIEPCTL_USBAEP | + USB_OTG_DIEPCTL_MPSIZ | + USB_OTG_DIEPCTL_TXFNUM | + USB_OTG_DIEPCTL_SD0PID_SEVNFRM | + USB_OTG_DIEPCTL_EPTYP); + } + else + { + USBx_DEVICE->DEACHMSK &= ~(USB_OTG_DAINTMSK_OEPM & ((uint32_t)(1UL << (ep->num & EP_ADDR_MSK)) << 16)); + USBx_DEVICE->DAINTMSK &= ~(USB_OTG_DAINTMSK_OEPM & ((uint32_t)(1UL << (ep->num & EP_ADDR_MSK)) << 16)); + USBx_OUTEP(epnum)->DOEPCTL &= ~(USB_OTG_DOEPCTL_USBAEP | + USB_OTG_DOEPCTL_MPSIZ | + USB_OTG_DOEPCTL_SD0PID_SEVNFRM | + USB_OTG_DOEPCTL_EPTYP); + } + + return HAL_OK; +} + +/** + * @brief De-activate and de-initialize a dedicated endpoint + * @param USBx Selected device + * @param ep pointer to endpoint structure + * @retval HAL status + */ +HAL_StatusTypeDef USB_DeactivateDedicatedEndpoint(USB_OTG_GlobalTypeDef *USBx, USB_OTG_EPTypeDef *ep) +{ + uint32_t USBx_BASE = (uint32_t)USBx; + uint32_t epnum = (uint32_t)ep->num; + + /* Read DEPCTLn register */ + if (ep->is_in == 1U) + { + USBx_INEP(epnum)->DIEPCTL &= ~ USB_OTG_DIEPCTL_USBAEP; + USBx_DEVICE->DAINTMSK &= ~(USB_OTG_DAINTMSK_IEPM & (uint32_t)(1UL << (ep->num & EP_ADDR_MSK))); + } + else + { + USBx_OUTEP(epnum)->DOEPCTL &= ~USB_OTG_DOEPCTL_USBAEP; + USBx_DEVICE->DAINTMSK &= ~(USB_OTG_DAINTMSK_OEPM & ((uint32_t)(1UL << (ep->num & EP_ADDR_MSK)) << 16)); + } + + return HAL_OK; +} + +/** + * @brief USB_EPStartXfer : setup and starts a transfer over an EP + * @param USBx Selected device + * @param ep pointer to endpoint structure + * @retval HAL status + */ +HAL_StatusTypeDef USB_EPStartXfer(USB_OTG_GlobalTypeDef *USBx, USB_OTG_EPTypeDef *ep) +{ + uint32_t USBx_BASE = (uint32_t)USBx; + uint32_t epnum = (uint32_t)ep->num; + uint16_t pktcnt; + + /* IN endpoint */ + if (ep->is_in == 1U) + { + /* Zero Length Packet? */ + if (ep->xfer_len == 0U) + { + USBx_INEP(epnum)->DIEPTSIZ &= ~(USB_OTG_DIEPTSIZ_PKTCNT); + USBx_INEP(epnum)->DIEPTSIZ |= (USB_OTG_DIEPTSIZ_PKTCNT & (1U << 19)); + USBx_INEP(epnum)->DIEPTSIZ &= ~(USB_OTG_DIEPTSIZ_XFRSIZ); + } + else + { + /* Program the transfer size and packet count + * as follows: xfersize = N * maxpacket + + * short_packet pktcnt = N + (short_packet + * exist ? 1 : 0) + */ + USBx_INEP(epnum)->DIEPTSIZ &= ~(USB_OTG_DIEPTSIZ_XFRSIZ); + USBx_INEP(epnum)->DIEPTSIZ &= ~(USB_OTG_DIEPTSIZ_PKTCNT); + USBx_INEP(epnum)->DIEPTSIZ |= (USB_OTG_DIEPTSIZ_PKTCNT & (((ep->xfer_len + ep->maxpacket - 1U) / ep->maxpacket) << 19)); + USBx_INEP(epnum)->DIEPTSIZ |= (USB_OTG_DIEPTSIZ_XFRSIZ & ep->xfer_len); + + if (ep->type == EP_TYPE_ISOC) + { + USBx_INEP(epnum)->DIEPTSIZ &= ~(USB_OTG_DIEPTSIZ_MULCNT); + USBx_INEP(epnum)->DIEPTSIZ |= (USB_OTG_DIEPTSIZ_MULCNT & (1U << 29)); + } + } + /* EP enable, IN data in FIFO */ + USBx_INEP(epnum)->DIEPCTL |= (USB_OTG_DIEPCTL_CNAK | USB_OTG_DIEPCTL_EPENA); + + if (ep->type != EP_TYPE_ISOC) + { + /* Enable the Tx FIFO Empty Interrupt for this EP */ + if (ep->xfer_len > 0U) + { + USBx_DEVICE->DIEPEMPMSK |= 1UL << (ep->num & EP_ADDR_MSK); + } + } + else + { + if ((USBx_DEVICE->DSTS & (1U << 8)) == 0U) + { + USBx_INEP(epnum)->DIEPCTL |= USB_OTG_DIEPCTL_SODDFRM; + } + else + { + USBx_INEP(epnum)->DIEPCTL |= USB_OTG_DIEPCTL_SD0PID_SEVNFRM; + } + + (void)USB_WritePacket(USBx, ep->xfer_buff, ep->num, (uint16_t)ep->xfer_len); + } + } + else /* OUT endpoint */ + { + /* Program the transfer size and packet count as follows: + * pktcnt = N + * xfersize = N * maxpacket + */ + USBx_OUTEP(epnum)->DOEPTSIZ &= ~(USB_OTG_DOEPTSIZ_XFRSIZ); + USBx_OUTEP(epnum)->DOEPTSIZ &= ~(USB_OTG_DOEPTSIZ_PKTCNT); + + if (ep->xfer_len == 0U) + { + USBx_OUTEP(epnum)->DOEPTSIZ |= (USB_OTG_DOEPTSIZ_XFRSIZ & ep->maxpacket); + USBx_OUTEP(epnum)->DOEPTSIZ |= (USB_OTG_DOEPTSIZ_PKTCNT & (1U << 19)); + } + else + { + pktcnt = (uint16_t)((ep->xfer_len + ep->maxpacket - 1U) / ep->maxpacket); + USBx_OUTEP(epnum)->DOEPTSIZ |= USB_OTG_DOEPTSIZ_PKTCNT & ((uint32_t)pktcnt << 19); + USBx_OUTEP(epnum)->DOEPTSIZ |= USB_OTG_DOEPTSIZ_XFRSIZ & (ep->maxpacket * pktcnt); + } + + if (ep->type == EP_TYPE_ISOC) + { + if ((USBx_DEVICE->DSTS & (1U << 8)) == 0U) + { + USBx_OUTEP(epnum)->DOEPCTL |= USB_OTG_DOEPCTL_SODDFRM; + } + else + { + USBx_OUTEP(epnum)->DOEPCTL |= USB_OTG_DOEPCTL_SD0PID_SEVNFRM; + } + } + /* EP enable */ + USBx_OUTEP(epnum)->DOEPCTL |= (USB_OTG_DOEPCTL_CNAK | USB_OTG_DOEPCTL_EPENA); + } + + return HAL_OK; +} + +/** + * @brief USB_EP0StartXfer : setup and starts a transfer over the EP 0 + * @param USBx Selected device + * @param ep pointer to endpoint structure + * @retval HAL status + */ +HAL_StatusTypeDef USB_EP0StartXfer(USB_OTG_GlobalTypeDef *USBx, USB_OTG_EPTypeDef *ep) +{ + uint32_t USBx_BASE = (uint32_t)USBx; + uint32_t epnum = (uint32_t)ep->num; + + /* IN endpoint */ + if (ep->is_in == 1U) + { + /* Zero Length Packet? */ + if (ep->xfer_len == 0U) + { + USBx_INEP(epnum)->DIEPTSIZ &= ~(USB_OTG_DIEPTSIZ_PKTCNT); + USBx_INEP(epnum)->DIEPTSIZ |= (USB_OTG_DIEPTSIZ_PKTCNT & (1U << 19)); + USBx_INEP(epnum)->DIEPTSIZ &= ~(USB_OTG_DIEPTSIZ_XFRSIZ); + } + else + { + /* Program the transfer size and packet count + * as follows: xfersize = N * maxpacket + + * short_packet pktcnt = N + (short_packet + * exist ? 1 : 0) + */ + USBx_INEP(epnum)->DIEPTSIZ &= ~(USB_OTG_DIEPTSIZ_XFRSIZ); + USBx_INEP(epnum)->DIEPTSIZ &= ~(USB_OTG_DIEPTSIZ_PKTCNT); + + if (ep->xfer_len > ep->maxpacket) + { + ep->xfer_len = ep->maxpacket; + } + USBx_INEP(epnum)->DIEPTSIZ |= (USB_OTG_DIEPTSIZ_PKTCNT & (1U << 19)); + USBx_INEP(epnum)->DIEPTSIZ |= (USB_OTG_DIEPTSIZ_XFRSIZ & ep->xfer_len); + } + + /* EP enable, IN data in FIFO */ + USBx_INEP(epnum)->DIEPCTL |= (USB_OTG_DIEPCTL_CNAK | USB_OTG_DIEPCTL_EPENA); + + /* Enable the Tx FIFO Empty Interrupt for this EP */ + if (ep->xfer_len > 0U) + { + USBx_DEVICE->DIEPEMPMSK |= 1UL << (ep->num & EP_ADDR_MSK); + } + } + else /* OUT endpoint */ + { + /* Program the transfer size and packet count as follows: + * pktcnt = N + * xfersize = N * maxpacket + */ + USBx_OUTEP(epnum)->DOEPTSIZ &= ~(USB_OTG_DOEPTSIZ_XFRSIZ); + USBx_OUTEP(epnum)->DOEPTSIZ &= ~(USB_OTG_DOEPTSIZ_PKTCNT); + + if (ep->xfer_len > 0U) + { + ep->xfer_len = ep->maxpacket; + } + + USBx_OUTEP(epnum)->DOEPTSIZ |= (USB_OTG_DOEPTSIZ_PKTCNT & (1U << 19)); + USBx_OUTEP(epnum)->DOEPTSIZ |= (USB_OTG_DOEPTSIZ_XFRSIZ & (ep->maxpacket)); + + /* EP enable */ + USBx_OUTEP(epnum)->DOEPCTL |= (USB_OTG_DOEPCTL_CNAK | USB_OTG_DOEPCTL_EPENA); + } + + return HAL_OK; +} + +/** + * @brief USB_WritePacket : Writes a packet into the Tx FIFO associated + * with the EP/channel + * @param USBx Selected device + * @param src pointer to source buffer + * @param ch_ep_num endpoint or host channel number + * @param len Number of bytes to write + * @retval HAL status + */ +HAL_StatusTypeDef USB_WritePacket(USB_OTG_GlobalTypeDef *USBx, uint8_t *src, uint8_t ch_ep_num, uint16_t len) +{ + uint32_t USBx_BASE = (uint32_t)USBx; + uint32_t *pSrc = (uint32_t *)src; + uint32_t count32b, i; + + count32b = ((uint32_t)len + 3U) / 4U; + for (i = 0U; i < count32b; i++) + { + USBx_DFIFO((uint32_t)ch_ep_num) = __UNALIGNED_UINT32_READ(pSrc); + pSrc++; + } + + return HAL_OK; +} + +/** + * @brief USB_ReadPacket : read a packet from the RX FIFO + * @param USBx Selected device + * @param dest source pointer + * @param len Number of bytes to read + * @retval pointer to destination buffer + */ +void *USB_ReadPacket(USB_OTG_GlobalTypeDef *USBx, uint8_t *dest, uint16_t len) +{ + uint32_t USBx_BASE = (uint32_t)USBx; + uint32_t *pDest = (uint32_t *)dest; + uint32_t i; + uint32_t count32b = ((uint32_t)len + 3U) / 4U; + + for (i = 0U; i < count32b; i++) + { + __UNALIGNED_UINT32_WRITE(pDest, USBx_DFIFO(0U)); + pDest++; + } + + return ((void *)pDest); +} + +/** + * @brief USB_EPSetStall : set a stall condition over an EP + * @param USBx Selected device + * @param ep pointer to endpoint structure + * @retval HAL status + */ +HAL_StatusTypeDef USB_EPSetStall(USB_OTG_GlobalTypeDef *USBx, USB_OTG_EPTypeDef *ep) +{ + uint32_t USBx_BASE = (uint32_t)USBx; + uint32_t epnum = (uint32_t)ep->num; + + if (ep->is_in == 1U) + { + if (((USBx_INEP(epnum)->DIEPCTL & USB_OTG_DIEPCTL_EPENA) == 0U) && (epnum != 0U)) + { + USBx_INEP(epnum)->DIEPCTL &= ~(USB_OTG_DIEPCTL_EPDIS); + } + USBx_INEP(epnum)->DIEPCTL |= USB_OTG_DIEPCTL_STALL; + } + else + { + if (((USBx_OUTEP(epnum)->DOEPCTL & USB_OTG_DOEPCTL_EPENA) == 0U) && (epnum != 0U)) + { + USBx_OUTEP(epnum)->DOEPCTL &= ~(USB_OTG_DOEPCTL_EPDIS); + } + USBx_OUTEP(epnum)->DOEPCTL |= USB_OTG_DOEPCTL_STALL; + } + + return HAL_OK; +} + +/** + * @brief USB_EPClearStall : Clear a stall condition over an EP + * @param USBx Selected device + * @param ep pointer to endpoint structure + * @retval HAL status + */ +HAL_StatusTypeDef USB_EPClearStall(USB_OTG_GlobalTypeDef *USBx, USB_OTG_EPTypeDef *ep) +{ + uint32_t USBx_BASE = (uint32_t)USBx; + uint32_t epnum = (uint32_t)ep->num; + + if (ep->is_in == 1U) + { + USBx_INEP(epnum)->DIEPCTL &= ~USB_OTG_DIEPCTL_STALL; + if ((ep->type == EP_TYPE_INTR) || (ep->type == EP_TYPE_BULK)) + { + USBx_INEP(epnum)->DIEPCTL |= USB_OTG_DIEPCTL_SD0PID_SEVNFRM; /* DATA0 */ + } + } + else + { + USBx_OUTEP(epnum)->DOEPCTL &= ~USB_OTG_DOEPCTL_STALL; + if ((ep->type == EP_TYPE_INTR) || (ep->type == EP_TYPE_BULK)) + { + USBx_OUTEP(epnum)->DOEPCTL |= USB_OTG_DOEPCTL_SD0PID_SEVNFRM; /* DATA0 */ + } + } + return HAL_OK; +} + +/** + * @brief USB_StopDevice : Stop the usb device mode + * @param USBx Selected device + * @retval HAL status + */ +HAL_StatusTypeDef USB_StopDevice(USB_OTG_GlobalTypeDef *USBx) +{ + HAL_StatusTypeDef ret; + uint32_t USBx_BASE = (uint32_t)USBx; + uint32_t i; + + /* Clear Pending interrupt */ + for (i = 0U; i < 15U; i++) + { + USBx_INEP(i)->DIEPINT = 0xFB7FU; + USBx_OUTEP(i)->DOEPINT = 0xFB7FU; + } + + /* Clear interrupt masks */ + USBx_DEVICE->DIEPMSK = 0U; + USBx_DEVICE->DOEPMSK = 0U; + USBx_DEVICE->DAINTMSK = 0U; + + /* Flush the FIFO */ + ret = USB_FlushRxFifo(USBx); + if (ret != HAL_OK) + { + return ret; + } + + ret = USB_FlushTxFifo(USBx, 0x10U); + if (ret != HAL_OK) + { + return ret; + } + + return ret; +} + +/** + * @brief USB_SetDevAddress : Stop the usb device mode + * @param USBx Selected device + * @param address new device address to be assigned + * This parameter can be a value from 0 to 255 + * @retval HAL status + */ +HAL_StatusTypeDef USB_SetDevAddress(USB_OTG_GlobalTypeDef *USBx, uint8_t address) +{ + uint32_t USBx_BASE = (uint32_t)USBx; + + USBx_DEVICE->DCFG &= ~(USB_OTG_DCFG_DAD); + USBx_DEVICE->DCFG |= ((uint32_t)address << 4) & USB_OTG_DCFG_DAD; + + return HAL_OK; +} + +/** + * @brief USB_DevConnect : Connect the USB device by enabling the pull-up/pull-down + * @param USBx Selected device + * @retval HAL status + */ +HAL_StatusTypeDef USB_DevConnect(USB_OTG_GlobalTypeDef *USBx) +{ + uint32_t USBx_BASE = (uint32_t)USBx; + + USBx_DEVICE->DCTL &= ~USB_OTG_DCTL_SDIS; + HAL_Delay(3U); + + return HAL_OK; +} + +/** + * @brief USB_DevDisconnect : Disconnect the USB device by disabling the pull-up/pull-down + * @param USBx Selected device + * @retval HAL status + */ +HAL_StatusTypeDef USB_DevDisconnect(USB_OTG_GlobalTypeDef *USBx) +{ + uint32_t USBx_BASE = (uint32_t)USBx; + + USBx_DEVICE->DCTL |= USB_OTG_DCTL_SDIS; + HAL_Delay(3U); + + return HAL_OK; +} + +/** + * @brief USB_ReadInterrupts: return the global USB interrupt status + * @param USBx Selected device + * @retval HAL status + */ +uint32_t USB_ReadInterrupts(USB_OTG_GlobalTypeDef *USBx) +{ + uint32_t tmpreg; + + tmpreg = USBx->GINTSTS; + tmpreg &= USBx->GINTMSK; + + return tmpreg; +} + +/** + * @brief USB_ReadDevAllOutEpInterrupt: return the USB device OUT endpoints interrupt status + * @param USBx Selected device + * @retval HAL status + */ +uint32_t USB_ReadDevAllOutEpInterrupt(USB_OTG_GlobalTypeDef *USBx) +{ + uint32_t USBx_BASE = (uint32_t)USBx; + uint32_t tmpreg; + + tmpreg = USBx_DEVICE->DAINT; + tmpreg &= USBx_DEVICE->DAINTMSK; + + return ((tmpreg & 0xffff0000U) >> 16); +} + +/** + * @brief USB_ReadDevAllInEpInterrupt: return the USB device IN endpoints interrupt status + * @param USBx Selected device + * @retval HAL status + */ +uint32_t USB_ReadDevAllInEpInterrupt(USB_OTG_GlobalTypeDef *USBx) +{ + uint32_t USBx_BASE = (uint32_t)USBx; + uint32_t tmpreg; + + tmpreg = USBx_DEVICE->DAINT; + tmpreg &= USBx_DEVICE->DAINTMSK; + + return ((tmpreg & 0xFFFFU)); +} + +/** + * @brief Returns Device OUT EP Interrupt register + * @param USBx Selected device + * @param epnum endpoint number + * This parameter can be a value from 0 to 15 + * @retval Device OUT EP Interrupt register + */ +uint32_t USB_ReadDevOutEPInterrupt(USB_OTG_GlobalTypeDef *USBx, uint8_t epnum) +{ + uint32_t USBx_BASE = (uint32_t)USBx; + uint32_t tmpreg; + + tmpreg = USBx_OUTEP((uint32_t)epnum)->DOEPINT; + tmpreg &= USBx_DEVICE->DOEPMSK; + + return tmpreg; +} + +/** + * @brief Returns Device IN EP Interrupt register + * @param USBx Selected device + * @param epnum endpoint number + * This parameter can be a value from 0 to 15 + * @retval Device IN EP Interrupt register + */ +uint32_t USB_ReadDevInEPInterrupt(USB_OTG_GlobalTypeDef *USBx, uint8_t epnum) +{ + uint32_t USBx_BASE = (uint32_t)USBx; + uint32_t tmpreg, msk, emp; + + msk = USBx_DEVICE->DIEPMSK; + emp = USBx_DEVICE->DIEPEMPMSK; + msk |= ((emp >> (epnum & EP_ADDR_MSK)) & 0x1U) << 7; + tmpreg = USBx_INEP((uint32_t)epnum)->DIEPINT & msk; + + return tmpreg; +} + +/** + * @brief USB_ClearInterrupts: clear a USB interrupt + * @param USBx Selected device + * @param interrupt interrupt flag + * @retval None + */ +void USB_ClearInterrupts(USB_OTG_GlobalTypeDef *USBx, uint32_t interrupt) +{ + USBx->GINTSTS |= interrupt; +} + +/** + * @brief Returns USB core mode + * @param USBx Selected device + * @retval return core mode : Host or Device + * This parameter can be one of these values: + * 0 : Host + * 1 : Device + */ +uint32_t USB_GetMode(USB_OTG_GlobalTypeDef *USBx) +{ + return ((USBx->GINTSTS) & 0x1U); +} + +/** + * @brief Activate EP0 for Setup transactions + * @param USBx Selected device + * @retval HAL status + */ +HAL_StatusTypeDef USB_ActivateSetup(USB_OTG_GlobalTypeDef *USBx) +{ + uint32_t USBx_BASE = (uint32_t)USBx; + + /* Set the MPS of the IN EP0 to 64 bytes */ + USBx_INEP(0U)->DIEPCTL &= ~USB_OTG_DIEPCTL_MPSIZ; + + USBx_DEVICE->DCTL |= USB_OTG_DCTL_CGINAK; + + return HAL_OK; +} + +/** + * @brief Prepare the EP0 to start the first control setup + * @param USBx Selected device + * @param psetup pointer to setup packet + * @retval HAL status + */ +HAL_StatusTypeDef USB_EP0_OutStart(USB_OTG_GlobalTypeDef *USBx, uint8_t *psetup) +{ + UNUSED(psetup); + uint32_t USBx_BASE = (uint32_t)USBx; + uint32_t gSNPSiD = *(__IO uint32_t *)(&USBx->CID + 0x1U); + + if (gSNPSiD > USB_OTG_CORE_ID_300A) + { + if ((USBx_OUTEP(0U)->DOEPCTL & USB_OTG_DOEPCTL_EPENA) == USB_OTG_DOEPCTL_EPENA) + { + return HAL_OK; + } + } + + USBx_OUTEP(0U)->DOEPTSIZ = 0U; + USBx_OUTEP(0U)->DOEPTSIZ |= (USB_OTG_DOEPTSIZ_PKTCNT & (1U << 19)); + USBx_OUTEP(0U)->DOEPTSIZ |= (3U * 8U); + USBx_OUTEP(0U)->DOEPTSIZ |= USB_OTG_DOEPTSIZ_STUPCNT; + + return HAL_OK; +} + +/** + * @brief Reset the USB Core (needed after USB clock settings change) + * @param USBx Selected device + * @retval HAL status + */ +static HAL_StatusTypeDef USB_CoreReset(USB_OTG_GlobalTypeDef *USBx) +{ + uint32_t count = 0U; + + /* Wait for AHB master IDLE state. */ + do + { + if (++count > 200000U) + { + return HAL_TIMEOUT; + } + } + while ((USBx->GRSTCTL & USB_OTG_GRSTCTL_AHBIDL) == 0U); + + /* Core Soft Reset */ + count = 0U; + USBx->GRSTCTL |= USB_OTG_GRSTCTL_CSRST; + + do + { + if (++count > 200000U) + { + return HAL_TIMEOUT; + } + } + while ((USBx->GRSTCTL & USB_OTG_GRSTCTL_CSRST) == USB_OTG_GRSTCTL_CSRST); + + return HAL_OK; +} + +/** + * @brief USB_HostInit : Initializes the USB OTG controller registers + * for Host mode + * @param USBx Selected device + * @param cfg pointer to a USB_OTG_CfgTypeDef structure that contains + * the configuration information for the specified USBx peripheral. + * @retval HAL status + */ +HAL_StatusTypeDef USB_HostInit(USB_OTG_GlobalTypeDef *USBx, USB_OTG_CfgTypeDef cfg) +{ + uint32_t USBx_BASE = (uint32_t)USBx; + uint32_t i; + + /* Restart the Phy Clock */ + USBx_PCGCCTL = 0U; + + /* Disable VBUS sensing */ + USBx->GCCFG &= ~(USB_OTG_GCCFG_VBUSASEN); + USBx->GCCFG &= ~(USB_OTG_GCCFG_VBUSBSEN); + /* Set default Max speed support */ + USBx_HOST->HCFG &= ~(USB_OTG_HCFG_FSLSS); + + /* Make sure the FIFOs are flushed. */ + (void)USB_FlushTxFifo(USBx, 0x10U); /* all Tx FIFOs */ + (void)USB_FlushRxFifo(USBx); + + /* Clear all pending HC Interrupts */ + for (i = 0U; i < cfg.Host_channels; i++) + { + USBx_HC(i)->HCINT = 0xFFFFFFFFU; + USBx_HC(i)->HCINTMSK = 0U; + } + + /* Enable VBUS driving */ + (void)USB_DriveVbus(USBx, 1U); + + HAL_Delay(200U); + + /* Disable all interrupts. */ + USBx->GINTMSK = 0U; + + /* Clear any pending interrupts */ + USBx->GINTSTS = 0xFFFFFFFFU; + + /* set Rx FIFO size */ + USBx->GRXFSIZ = 0x80U; + USBx->DIEPTXF0_HNPTXFSIZ = (uint32_t)(((0x60U << 16) & USB_OTG_NPTXFD) | 0x80U); + USBx->HPTXFSIZ = (uint32_t)(((0x40U << 16)& USB_OTG_HPTXFSIZ_PTXFD) | 0xE0U); + /* Enable the common interrupts */ + USBx->GINTMSK |= USB_OTG_GINTMSK_RXFLVLM; + + /* Enable interrupts matching to the Host mode ONLY */ + USBx->GINTMSK |= (USB_OTG_GINTMSK_PRTIM | USB_OTG_GINTMSK_HCIM | \ + USB_OTG_GINTMSK_SOFM | USB_OTG_GINTSTS_DISCINT | \ + USB_OTG_GINTMSK_PXFRM_IISOOXFRM | USB_OTG_GINTMSK_WUIM); + + return HAL_OK; +} + +/** + * @brief USB_InitFSLSPClkSel : Initializes the FSLSPClkSel field of the + * HCFG register on the PHY type and set the right frame interval + * @param USBx Selected device + * @param freq clock frequency + * This parameter can be one of these values: + * HCFG_48_MHZ : Full Speed 48 MHz Clock + * HCFG_6_MHZ : Low Speed 6 MHz Clock + * @retval HAL status + */ +HAL_StatusTypeDef USB_InitFSLSPClkSel(USB_OTG_GlobalTypeDef *USBx, uint8_t freq) +{ + uint32_t USBx_BASE = (uint32_t)USBx; + + USBx_HOST->HCFG &= ~(USB_OTG_HCFG_FSLSPCS); + USBx_HOST->HCFG |= (uint32_t)freq & USB_OTG_HCFG_FSLSPCS; + + if (freq == HCFG_48_MHZ) + { + USBx_HOST->HFIR = 48000U; + } + else if (freq == HCFG_6_MHZ) + { + USBx_HOST->HFIR = 6000U; + } + else + { + /* ... */ + } + + return HAL_OK; +} + +/** +* @brief USB_OTG_ResetPort : Reset Host Port + * @param USBx Selected device + * @retval HAL status + * @note (1)The application must wait at least 10 ms + * before clearing the reset bit. + */ +HAL_StatusTypeDef USB_ResetPort(USB_OTG_GlobalTypeDef *USBx) +{ + uint32_t USBx_BASE = (uint32_t)USBx; + + __IO uint32_t hprt0 = 0U; + + hprt0 = USBx_HPRT0; + + hprt0 &= ~(USB_OTG_HPRT_PENA | USB_OTG_HPRT_PCDET | + USB_OTG_HPRT_PENCHNG | USB_OTG_HPRT_POCCHNG); + + USBx_HPRT0 = (USB_OTG_HPRT_PRST | hprt0); + HAL_Delay(100U); /* See Note #1 */ + USBx_HPRT0 = ((~USB_OTG_HPRT_PRST) & hprt0); + HAL_Delay(10U); + + return HAL_OK; +} + +/** + * @brief USB_DriveVbus : activate or de-activate vbus + * @param state VBUS state + * This parameter can be one of these values: + * 0 : VBUS Active + * 1 : VBUS Inactive + * @retval HAL status +*/ +HAL_StatusTypeDef USB_DriveVbus(USB_OTG_GlobalTypeDef *USBx, uint8_t state) +{ + uint32_t USBx_BASE = (uint32_t)USBx; + __IO uint32_t hprt0 = 0U; + + hprt0 = USBx_HPRT0; + + hprt0 &= ~(USB_OTG_HPRT_PENA | USB_OTG_HPRT_PCDET | + USB_OTG_HPRT_PENCHNG | USB_OTG_HPRT_POCCHNG); + + if (((hprt0 & USB_OTG_HPRT_PPWR) == 0U) && (state == 1U)) + { + USBx_HPRT0 = (USB_OTG_HPRT_PPWR | hprt0); + } + if (((hprt0 & USB_OTG_HPRT_PPWR) == USB_OTG_HPRT_PPWR) && (state == 0U)) + { + USBx_HPRT0 = ((~USB_OTG_HPRT_PPWR) & hprt0); + } + return HAL_OK; +} + +/** + * @brief Return Host Core speed + * @param USBx Selected device + * @retval speed : Host speed + * This parameter can be one of these values: + * @arg HCD_SPEED_FULL: Full speed mode + * @arg HCD_SPEED_LOW: Low speed mode + */ +uint32_t USB_GetHostSpeed(USB_OTG_GlobalTypeDef *USBx) +{ + uint32_t USBx_BASE = (uint32_t)USBx; + __IO uint32_t hprt0 = 0U; + + hprt0 = USBx_HPRT0; + return ((hprt0 & USB_OTG_HPRT_PSPD) >> 17); +} + +/** + * @brief Return Host Current Frame number + * @param USBx Selected device + * @retval current frame number +*/ +uint32_t USB_GetCurrentFrame(USB_OTG_GlobalTypeDef *USBx) +{ + uint32_t USBx_BASE = (uint32_t)USBx; + + return (USBx_HOST->HFNUM & USB_OTG_HFNUM_FRNUM); +} + +/** + * @brief Initialize a host channel + * @param USBx Selected device + * @param ch_num Channel number + * This parameter can be a value from 1 to 15 + * @param epnum Endpoint number + * This parameter can be a value from 1 to 15 + * @param dev_address Current device address + * This parameter can be a value from 0 to 255 + * @param speed Current device speed + * This parameter can be one of these values: + * @arg USB_OTG_SPEED_FULL: Full speed mode + * @arg USB_OTG_SPEED_LOW: Low speed mode + * @param ep_type Endpoint Type + * This parameter can be one of these values: + * @arg EP_TYPE_CTRL: Control type + * @arg EP_TYPE_ISOC: Isochronous type + * @arg EP_TYPE_BULK: Bulk type + * @arg EP_TYPE_INTR: Interrupt type + * @param mps Max Packet Size + * This parameter can be a value from 0 to32K + * @retval HAL state + */ +HAL_StatusTypeDef USB_HC_Init(USB_OTG_GlobalTypeDef *USBx, + uint8_t ch_num, + uint8_t epnum, + uint8_t dev_address, + uint8_t speed, + uint8_t ep_type, + uint16_t mps) +{ + HAL_StatusTypeDef ret = HAL_OK; + uint32_t USBx_BASE = (uint32_t)USBx; + uint32_t HCcharEpDir, HCcharLowSpeed; + + /* Clear old interrupt conditions for this host channel. */ + USBx_HC((uint32_t)ch_num)->HCINT = 0xFFFFFFFFU; + + /* Enable channel interrupts required for this transfer. */ + switch (ep_type) + { + case EP_TYPE_CTRL: + case EP_TYPE_BULK: + USBx_HC((uint32_t)ch_num)->HCINTMSK = USB_OTG_HCINTMSK_XFRCM | + USB_OTG_HCINTMSK_STALLM | + USB_OTG_HCINTMSK_TXERRM | + USB_OTG_HCINTMSK_DTERRM | + USB_OTG_HCINTMSK_AHBERR | + USB_OTG_HCINTMSK_NAKM; + + if ((epnum & 0x80U) == 0x80U) + { + USBx_HC((uint32_t)ch_num)->HCINTMSK |= USB_OTG_HCINTMSK_BBERRM; + } + break; + + case EP_TYPE_INTR: + USBx_HC((uint32_t)ch_num)->HCINTMSK = USB_OTG_HCINTMSK_XFRCM | + USB_OTG_HCINTMSK_STALLM | + USB_OTG_HCINTMSK_TXERRM | + USB_OTG_HCINTMSK_DTERRM | + USB_OTG_HCINTMSK_NAKM | + USB_OTG_HCINTMSK_AHBERR | + USB_OTG_HCINTMSK_FRMORM; + + if ((epnum & 0x80U) == 0x80U) + { + USBx_HC((uint32_t)ch_num)->HCINTMSK |= USB_OTG_HCINTMSK_BBERRM; + } + + break; + + case EP_TYPE_ISOC: + USBx_HC((uint32_t)ch_num)->HCINTMSK = USB_OTG_HCINTMSK_XFRCM | + USB_OTG_HCINTMSK_ACKM | + USB_OTG_HCINTMSK_AHBERR | + USB_OTG_HCINTMSK_FRMORM; + + if ((epnum & 0x80U) == 0x80U) + { + USBx_HC((uint32_t)ch_num)->HCINTMSK |= (USB_OTG_HCINTMSK_TXERRM | USB_OTG_HCINTMSK_BBERRM); + } + break; + + default: + ret = HAL_ERROR; + break; + } + + /* Enable the top level host channel interrupt. */ + USBx_HOST->HAINTMSK |= 1UL << (ch_num & 0xFU); + + /* Make sure host channel interrupts are enabled. */ + USBx->GINTMSK |= USB_OTG_GINTMSK_HCIM; + + /* Program the HCCHAR register */ + if ((epnum & 0x80U) == 0x80U) + { + HCcharEpDir = (0x1U << 15) & USB_OTG_HCCHAR_EPDIR; + } + else + { + HCcharEpDir = 0U; + } + + if (speed == HPRT0_PRTSPD_LOW_SPEED) + { + HCcharLowSpeed = (0x1U << 17) & USB_OTG_HCCHAR_LSDEV; + } + else + { + HCcharLowSpeed = 0U; + } + + USBx_HC((uint32_t)ch_num)->HCCHAR = (((uint32_t)dev_address << 22) & USB_OTG_HCCHAR_DAD) | + ((((uint32_t)epnum & 0x7FU) << 11) & USB_OTG_HCCHAR_EPNUM) | + (((uint32_t)ep_type << 18) & USB_OTG_HCCHAR_EPTYP) | + ((uint32_t)mps & USB_OTG_HCCHAR_MPSIZ) | HCcharEpDir | HCcharLowSpeed; + + if (ep_type == EP_TYPE_INTR) + { + USBx_HC((uint32_t)ch_num)->HCCHAR |= USB_OTG_HCCHAR_ODDFRM ; + } + + return ret; +} + +/** + * @brief Start a transfer over a host channel + * @param USBx Selected device + * @param hc pointer to host channel structure + * @retval HAL state + */ +HAL_StatusTypeDef USB_HC_StartXfer(USB_OTG_GlobalTypeDef *USBx, USB_OTG_HCTypeDef *hc) +{ + uint32_t USBx_BASE = (uint32_t)USBx; + uint32_t ch_num = (uint32_t)hc->ch_num; + static __IO uint32_t tmpreg = 0U; + uint8_t is_oddframe; + uint16_t len_words; + uint16_t num_packets; + uint16_t max_hc_pkt_count = 256U; + + /* Compute the expected number of packets associated to the transfer */ + if (hc->xfer_len > 0U) + { + num_packets = (uint16_t)((hc->xfer_len + hc->max_packet - 1U) / hc->max_packet); + + if (num_packets > max_hc_pkt_count) + { + num_packets = max_hc_pkt_count; + hc->xfer_len = (uint32_t)num_packets * hc->max_packet; + } + } + else + { + num_packets = 1U; + } + if (hc->ep_is_in != 0U) + { + hc->xfer_len = (uint32_t)num_packets * hc->max_packet; + } + + /* Initialize the HCTSIZn register */ + USBx_HC(ch_num)->HCTSIZ = (hc->xfer_len & USB_OTG_HCTSIZ_XFRSIZ) | + (((uint32_t)num_packets << 19) & USB_OTG_HCTSIZ_PKTCNT) | + (((uint32_t)hc->data_pid << 29) & USB_OTG_HCTSIZ_DPID); + + is_oddframe = (((uint32_t)USBx_HOST->HFNUM & 0x01U) != 0U) ? 0U : 1U; + USBx_HC(ch_num)->HCCHAR &= ~USB_OTG_HCCHAR_ODDFRM; + USBx_HC(ch_num)->HCCHAR |= (uint32_t)is_oddframe << 29; + + /* Set host channel enable */ + tmpreg = USBx_HC(ch_num)->HCCHAR; + tmpreg &= ~USB_OTG_HCCHAR_CHDIS; + + /* make sure to set the correct ep direction */ + if (hc->ep_is_in != 0U) + { + tmpreg |= USB_OTG_HCCHAR_EPDIR; + } + else + { + tmpreg &= ~USB_OTG_HCCHAR_EPDIR; + } + tmpreg |= USB_OTG_HCCHAR_CHENA; + USBx_HC(ch_num)->HCCHAR = tmpreg; + + if ((hc->ep_is_in == 0U) && (hc->xfer_len > 0U)) + { + switch (hc->ep_type) + { + /* Non periodic transfer */ + case EP_TYPE_CTRL: + case EP_TYPE_BULK: + + len_words = (uint16_t)((hc->xfer_len + 3U) / 4U); + + /* check if there is enough space in FIFO space */ + if (len_words > (USBx->HNPTXSTS & 0xFFFFU)) + { + /* need to process data in nptxfempty interrupt */ + USBx->GINTMSK |= USB_OTG_GINTMSK_NPTXFEM; + } + break; + + /* Periodic transfer */ + case EP_TYPE_INTR: + case EP_TYPE_ISOC: + len_words = (uint16_t)((hc->xfer_len + 3U) / 4U); + /* check if there is enough space in FIFO space */ + if (len_words > (USBx_HOST->HPTXSTS & 0xFFFFU)) /* split the transfer */ + { + /* need to process data in ptxfempty interrupt */ + USBx->GINTMSK |= USB_OTG_GINTMSK_PTXFEM; + } + break; + + default: + break; + } + + /* Write packet into the Tx FIFO. */ + (void)USB_WritePacket(USBx, hc->xfer_buff, hc->ch_num, (uint16_t)hc->xfer_len); + } + + return HAL_OK; +} + +/** + * @brief Read all host channel interrupts status + * @param USBx Selected device + * @retval HAL state + */ +uint32_t USB_HC_ReadInterrupt(USB_OTG_GlobalTypeDef *USBx) +{ + uint32_t USBx_BASE = (uint32_t)USBx; + + return ((USBx_HOST->HAINT) & 0xFFFFU); +} + +/** + * @brief Halt a host channel + * @param USBx Selected device + * @param hc_num Host Channel number + * This parameter can be a value from 1 to 15 + * @retval HAL state + */ +HAL_StatusTypeDef USB_HC_Halt(USB_OTG_GlobalTypeDef *USBx, uint8_t hc_num) +{ + uint32_t USBx_BASE = (uint32_t)USBx; + uint32_t hcnum = (uint32_t)hc_num; + uint32_t count = 0U; + uint32_t HcEpType = (USBx_HC(hcnum)->HCCHAR & USB_OTG_HCCHAR_EPTYP) >> 18; + + /* Check for space in the request queue to issue the halt. */ + if ((HcEpType == HCCHAR_CTRL) || (HcEpType == HCCHAR_BULK)) + { + USBx_HC(hcnum)->HCCHAR |= USB_OTG_HCCHAR_CHDIS; + + if ((USBx->HNPTXSTS & (0xFFU << 16)) == 0U) + { + USBx_HC(hcnum)->HCCHAR &= ~USB_OTG_HCCHAR_CHENA; + USBx_HC(hcnum)->HCCHAR |= USB_OTG_HCCHAR_CHENA; + USBx_HC(hcnum)->HCCHAR &= ~USB_OTG_HCCHAR_EPDIR; + do + { + if (++count > 1000U) + { + break; + } + } + while ((USBx_HC(hcnum)->HCCHAR & USB_OTG_HCCHAR_CHENA) == USB_OTG_HCCHAR_CHENA); + } + else + { + USBx_HC(hcnum)->HCCHAR |= USB_OTG_HCCHAR_CHENA; + } + } + else + { + USBx_HC(hcnum)->HCCHAR |= USB_OTG_HCCHAR_CHDIS; + + if ((USBx_HOST->HPTXSTS & (0xFFU << 16)) == 0U) + { + USBx_HC(hcnum)->HCCHAR &= ~USB_OTG_HCCHAR_CHENA; + USBx_HC(hcnum)->HCCHAR |= USB_OTG_HCCHAR_CHENA; + USBx_HC(hcnum)->HCCHAR &= ~USB_OTG_HCCHAR_EPDIR; + do + { + if (++count > 1000U) + { + break; + } + } + while ((USBx_HC(hcnum)->HCCHAR & USB_OTG_HCCHAR_CHENA) == USB_OTG_HCCHAR_CHENA); + } + else + { + USBx_HC(hcnum)->HCCHAR |= USB_OTG_HCCHAR_CHENA; + } + } + + return HAL_OK; +} + +/** + * @brief Initiate Do Ping protocol + * @param USBx Selected device + * @param hc_num Host Channel number + * This parameter can be a value from 1 to 15 + * @retval HAL state + */ +HAL_StatusTypeDef USB_DoPing(USB_OTG_GlobalTypeDef *USBx, uint8_t ch_num) +{ + uint32_t USBx_BASE = (uint32_t)USBx; + uint32_t chnum = (uint32_t)ch_num; + uint32_t num_packets = 1U; + uint32_t tmpreg; + + USBx_HC(chnum)->HCTSIZ = ((num_packets << 19) & USB_OTG_HCTSIZ_PKTCNT) | + USB_OTG_HCTSIZ_DOPING; + + /* Set host channel enable */ + tmpreg = USBx_HC(chnum)->HCCHAR; + tmpreg &= ~USB_OTG_HCCHAR_CHDIS; + tmpreg |= USB_OTG_HCCHAR_CHENA; + USBx_HC(chnum)->HCCHAR = tmpreg; + + return HAL_OK; +} + +/** + * @brief Stop Host Core + * @param USBx Selected device + * @retval HAL state + */ +HAL_StatusTypeDef USB_StopHost(USB_OTG_GlobalTypeDef *USBx) +{ + uint32_t USBx_BASE = (uint32_t)USBx; + uint32_t count = 0U; + uint32_t value; + uint32_t i; + + (void)USB_DisableGlobalInt(USBx); + + /* Flush FIFO */ + (void)USB_FlushTxFifo(USBx, 0x10U); + (void)USB_FlushRxFifo(USBx); + + /* Flush out any leftover queued requests. */ + for (i = 0U; i <= 15U; i++) + { + value = USBx_HC(i)->HCCHAR; + value |= USB_OTG_HCCHAR_CHDIS; + value &= ~USB_OTG_HCCHAR_CHENA; + value &= ~USB_OTG_HCCHAR_EPDIR; + USBx_HC(i)->HCCHAR = value; + } + + /* Halt all channels to put them into a known state. */ + for (i = 0U; i <= 15U; i++) + { + value = USBx_HC(i)->HCCHAR; + value |= USB_OTG_HCCHAR_CHDIS; + value |= USB_OTG_HCCHAR_CHENA; + value &= ~USB_OTG_HCCHAR_EPDIR; + USBx_HC(i)->HCCHAR = value; + + do + { + if (++count > 1000U) + { + break; + } + } + while ((USBx_HC(i)->HCCHAR & USB_OTG_HCCHAR_CHENA) == USB_OTG_HCCHAR_CHENA); + } + + /* Clear any pending Host interrupts */ + USBx_HOST->HAINT = 0xFFFFFFFFU; + USBx->GINTSTS = 0xFFFFFFFFU; + + (void)USB_EnableGlobalInt(USBx); + + return HAL_OK; +} + +/** + * @brief USB_ActivateRemoteWakeup active remote wakeup signalling + * @param USBx Selected device + * @retval HAL status + */ +HAL_StatusTypeDef USB_ActivateRemoteWakeup(USB_OTG_GlobalTypeDef *USBx) +{ + uint32_t USBx_BASE = (uint32_t)USBx; + + if ((USBx_DEVICE->DSTS & USB_OTG_DSTS_SUSPSTS) == USB_OTG_DSTS_SUSPSTS) + { + /* active Remote wakeup signalling */ + USBx_DEVICE->DCTL |= USB_OTG_DCTL_RWUSIG; + } + + return HAL_OK; +} + +/** + * @brief USB_DeActivateRemoteWakeup de-active remote wakeup signalling + * @param USBx Selected device + * @retval HAL status + */ +HAL_StatusTypeDef USB_DeActivateRemoteWakeup(USB_OTG_GlobalTypeDef *USBx) +{ + uint32_t USBx_BASE = (uint32_t)USBx; + + /* active Remote wakeup signalling */ + USBx_DEVICE->DCTL &= ~(USB_OTG_DCTL_RWUSIG); + + return HAL_OK; +} +#endif /* defined (USB_OTG_FS) */ + +#if defined (USB) +/** + * @brief Initializes the USB Core + * @param USBx: USB Instance + * @param cfg : pointer to a USB_CfgTypeDef structure that contains + * the configuration information for the specified USBx peripheral. + * @retval HAL status + */ +HAL_StatusTypeDef USB_CoreInit(USB_TypeDef *USBx, USB_CfgTypeDef cfg) +{ + /* Prevent unused argument(s) compilation warning */ + UNUSED(USBx); + UNUSED(cfg); + + /* NOTE : - This function is not required by USB Device FS peripheral, it is used + only by USB OTG FS peripheral. + - This function is added to ensure compatibility across platforms. + */ + + return HAL_OK; +} + +/** + * @brief USB_EnableGlobalInt + * Enables the controller's Global Int in the AHB Config reg + * @param USBx : Selected device + * @retval HAL status + */ +HAL_StatusTypeDef USB_EnableGlobalInt(USB_TypeDef *USBx) +{ + uint16_t winterruptmask; + + /* Set winterruptmask variable */ + winterruptmask = USB_CNTR_CTRM | USB_CNTR_WKUPM | + USB_CNTR_SUSPM | USB_CNTR_ERRM | + USB_CNTR_SOFM | USB_CNTR_ESOFM | + USB_CNTR_RESETM; + + /* Set interrupt mask */ + USBx->CNTR |= winterruptmask; + + return HAL_OK; +} + +/** + * @brief USB_DisableGlobalInt + * Disable the controller's Global Int in the AHB Config reg + * @param USBx : Selected device + * @retval HAL status +*/ +HAL_StatusTypeDef USB_DisableGlobalInt(USB_TypeDef *USBx) +{ + uint16_t winterruptmask; + + /* Set winterruptmask variable */ + winterruptmask = USB_CNTR_CTRM | USB_CNTR_WKUPM | + USB_CNTR_SUSPM | USB_CNTR_ERRM | + USB_CNTR_SOFM | USB_CNTR_ESOFM | + USB_CNTR_RESETM; + + /* Clear interrupt mask */ + USBx->CNTR &= ~winterruptmask; + + return HAL_OK; +} + +/** + * @brief USB_SetCurrentMode : Set functional mode + * @param USBx : Selected device + * @param mode : current core mode + * This parameter can be one of the these values: + * @arg USB_DEVICE_MODE: Peripheral mode mode + * @retval HAL status + */ +HAL_StatusTypeDef USB_SetCurrentMode(USB_TypeDef *USBx, USB_ModeTypeDef mode) +{ + /* Prevent unused argument(s) compilation warning */ + UNUSED(USBx); + UNUSED(mode); + + /* NOTE : - This function is not required by USB Device FS peripheral, it is used + only by USB OTG FS peripheral. + - This function is added to ensure compatibility across platforms. + */ + return HAL_OK; +} + +/** + * @brief USB_DevInit : Initializes the USB controller registers + * for device mode + * @param USBx : Selected device + * @param cfg : pointer to a USB_CfgTypeDef structure that contains + * the configuration information for the specified USBx peripheral. + * @retval HAL status + */ +HAL_StatusTypeDef USB_DevInit(USB_TypeDef *USBx, USB_CfgTypeDef cfg) +{ + /* Prevent unused argument(s) compilation warning */ + UNUSED(cfg); + + /* Init Device */ + /*CNTR_FRES = 1*/ + USBx->CNTR = USB_CNTR_FRES; + + /*CNTR_FRES = 0*/ + USBx->CNTR = 0; + + /*Clear pending interrupts*/ + USBx->ISTR = 0; + + /*Set Btable Address*/ + USBx->BTABLE = BTABLE_ADDRESS; + + /* Enable USB Device Interrupt mask */ + (void)USB_EnableGlobalInt(USBx); + + return HAL_OK; +} + +/** + * @brief USB_SetDevSpeed :Initializes the device speed + * depending on the PHY type and the enumeration speed of the device. + * @param USBx Selected device + * @param speed device speed + * @retval Hal status + */ +HAL_StatusTypeDef USB_SetDevSpeed(USB_TypeDef *USBx, uint8_t speed) +{ + /* Prevent unused argument(s) compilation warning */ + UNUSED(USBx); + UNUSED(speed); + + /* NOTE : - This function is not required by USB Device FS peripheral, it is used + only by USB OTG FS peripheral. + - This function is added to ensure compatibility across platforms. + */ + + return HAL_OK; +} + +/** + * @brief USB_FlushTxFifo : Flush a Tx FIFO + * @param USBx : Selected device + * @param num : FIFO number + * This parameter can be a value from 1 to 15 + 15 means Flush all Tx FIFOs + * @retval HAL status + */ +HAL_StatusTypeDef USB_FlushTxFifo(USB_TypeDef *USBx, uint32_t num) +{ + /* Prevent unused argument(s) compilation warning */ + UNUSED(USBx); + UNUSED(num); + + /* NOTE : - This function is not required by USB Device FS peripheral, it is used + only by USB OTG FS peripheral. + - This function is added to ensure compatibility across platforms. + */ + + return HAL_OK; +} + +/** + * @brief USB_FlushRxFifo : Flush Rx FIFO + * @param USBx : Selected device + * @retval HAL status + */ +HAL_StatusTypeDef USB_FlushRxFifo(USB_TypeDef *USBx) +{ + /* Prevent unused argument(s) compilation warning */ + UNUSED(USBx); + + /* NOTE : - This function is not required by USB Device FS peripheral, it is used + only by USB OTG FS peripheral. + - This function is added to ensure compatibility across platforms. + */ + + return HAL_OK; +} + +/** + * @brief Activate and configure an endpoint + * @param USBx : Selected device + * @param ep: pointer to endpoint structure + * @retval HAL status + */ +HAL_StatusTypeDef USB_ActivateEndpoint(USB_TypeDef *USBx, USB_EPTypeDef *ep) +{ + HAL_StatusTypeDef ret = HAL_OK; + uint16_t wEpRegVal; + + wEpRegVal = PCD_GET_ENDPOINT(USBx, ep->num) & USB_EP_T_MASK; + + /* initialize Endpoint */ + switch (ep->type) + { + case EP_TYPE_CTRL: + wEpRegVal |= USB_EP_CONTROL; + break; + + case EP_TYPE_BULK: + wEpRegVal |= USB_EP_BULK; + break; + + case EP_TYPE_INTR: + wEpRegVal |= USB_EP_INTERRUPT; + break; + + case EP_TYPE_ISOC: + wEpRegVal |= USB_EP_ISOCHRONOUS; + break; + + default: + ret = HAL_ERROR; + break; + } + + PCD_SET_ENDPOINT(USBx, ep->num, wEpRegVal | USB_EP_CTR_RX | USB_EP_CTR_TX); + + PCD_SET_EP_ADDRESS(USBx, ep->num, ep->num); + + if (ep->doublebuffer == 0U) + { + if (ep->is_in != 0U) + { + /*Set the endpoint Transmit buffer address */ + PCD_SET_EP_TX_ADDRESS(USBx, ep->num, ep->pmaadress); + PCD_CLEAR_TX_DTOG(USBx, ep->num); + + if (ep->type != EP_TYPE_ISOC) + { + /* Configure NAK status for the Endpoint */ + PCD_SET_EP_TX_STATUS(USBx, ep->num, USB_EP_TX_NAK); + } + else + { + /* Configure TX Endpoint to disabled state */ + PCD_SET_EP_TX_STATUS(USBx, ep->num, USB_EP_TX_DIS); + } + } + else + { + /*Set the endpoint Receive buffer address */ + PCD_SET_EP_RX_ADDRESS(USBx, ep->num, ep->pmaadress); + /*Set the endpoint Receive buffer counter*/ + PCD_SET_EP_RX_CNT(USBx, ep->num, ep->maxpacket); + PCD_CLEAR_RX_DTOG(USBx, ep->num); + /* Configure VALID status for the Endpoint*/ + PCD_SET_EP_RX_STATUS(USBx, ep->num, USB_EP_RX_VALID); + } + } + /*Double Buffer*/ + else + { + /* Set the endpoint as double buffered */ + PCD_SET_EP_DBUF(USBx, ep->num); + /* Set buffer address for double buffered mode */ + PCD_SET_EP_DBUF_ADDR(USBx, ep->num, ep->pmaaddr0, ep->pmaaddr1); + + if (ep->is_in == 0U) + { + /* Clear the data toggle bits for the endpoint IN/OUT */ + PCD_CLEAR_RX_DTOG(USBx, ep->num); + PCD_CLEAR_TX_DTOG(USBx, ep->num); + + /* Reset value of the data toggle bits for the endpoint out */ + PCD_TX_DTOG(USBx, ep->num); + + PCD_SET_EP_RX_STATUS(USBx, ep->num, USB_EP_RX_VALID); + PCD_SET_EP_TX_STATUS(USBx, ep->num, USB_EP_TX_DIS); + } + else + { + /* Clear the data toggle bits for the endpoint IN/OUT */ + PCD_CLEAR_RX_DTOG(USBx, ep->num); + PCD_CLEAR_TX_DTOG(USBx, ep->num); + PCD_RX_DTOG(USBx, ep->num); + + if (ep->type != EP_TYPE_ISOC) + { + /* Configure NAK status for the Endpoint */ + PCD_SET_EP_TX_STATUS(USBx, ep->num, USB_EP_TX_NAK); + } + else + { + /* Configure TX Endpoint to disabled state */ + PCD_SET_EP_TX_STATUS(USBx, ep->num, USB_EP_TX_DIS); + } + + PCD_SET_EP_RX_STATUS(USBx, ep->num, USB_EP_RX_DIS); + } + } + + return ret; +} + +/** + * @brief De-activate and de-initialize an endpoint + * @param USBx : Selected device + * @param ep: pointer to endpoint structure + * @retval HAL status + */ +HAL_StatusTypeDef USB_DeactivateEndpoint(USB_TypeDef *USBx, USB_EPTypeDef *ep) +{ + if (ep->doublebuffer == 0U) + { + if (ep->is_in != 0U) + { + PCD_CLEAR_TX_DTOG(USBx, ep->num); + /* Configure DISABLE status for the Endpoint*/ + PCD_SET_EP_TX_STATUS(USBx, ep->num, USB_EP_TX_DIS); + } + else + { + PCD_CLEAR_RX_DTOG(USBx, ep->num); + /* Configure DISABLE status for the Endpoint*/ + PCD_SET_EP_RX_STATUS(USBx, ep->num, USB_EP_RX_DIS); + } + } + /*Double Buffer*/ + else + { + if (ep->is_in == 0U) + { + /* Clear the data toggle bits for the endpoint IN/OUT*/ + PCD_CLEAR_RX_DTOG(USBx, ep->num); + PCD_CLEAR_TX_DTOG(USBx, ep->num); + + /* Reset value of the data toggle bits for the endpoint out*/ + PCD_TX_DTOG(USBx, ep->num); + + PCD_SET_EP_RX_STATUS(USBx, ep->num, USB_EP_RX_DIS); + PCD_SET_EP_TX_STATUS(USBx, ep->num, USB_EP_TX_DIS); + } + else + { + /* Clear the data toggle bits for the endpoint IN/OUT*/ + PCD_CLEAR_RX_DTOG(USBx, ep->num); + PCD_CLEAR_TX_DTOG(USBx, ep->num); + PCD_RX_DTOG(USBx, ep->num); + /* Configure DISABLE status for the Endpoint*/ + PCD_SET_EP_TX_STATUS(USBx, ep->num, USB_EP_TX_DIS); + PCD_SET_EP_RX_STATUS(USBx, ep->num, USB_EP_RX_DIS); + } + } + + return HAL_OK; +} + +/** + * @brief USB_EPStartXfer : setup and starts a transfer over an EP + * @param USBx : Selected device + * @param ep: pointer to endpoint structure + * @retval HAL status + */ +HAL_StatusTypeDef USB_EPStartXfer(USB_TypeDef *USBx, USB_EPTypeDef *ep) +{ + uint16_t pmabuffer; + uint32_t len; + + /* IN endpoint */ + if (ep->is_in == 1U) + { + /*Multi packet transfer*/ + if (ep->xfer_len > ep->maxpacket) + { + len = ep->maxpacket; + ep->xfer_len -= len; + } + else + { + len = ep->xfer_len; + ep->xfer_len = 0U; + } + + /* configure and validate Tx endpoint */ + if (ep->doublebuffer == 0U) + { + USB_WritePMA(USBx, ep->xfer_buff, ep->pmaadress, (uint16_t)len); + PCD_SET_EP_TX_CNT(USBx, ep->num, len); + } + else + { + /* Write the data to the USB endpoint */ + if ((PCD_GET_ENDPOINT(USBx, ep->num) & USB_EP_DTOG_TX) != 0U) + { + /* Set the Double buffer counter for pmabuffer1 */ + PCD_SET_EP_DBUF1_CNT(USBx, ep->num, ep->is_in, len); + pmabuffer = ep->pmaaddr1; + } + else + { + /* Set the Double buffer counter for pmabuffer0 */ + PCD_SET_EP_DBUF0_CNT(USBx, ep->num, ep->is_in, len); + pmabuffer = ep->pmaaddr0; + } + USB_WritePMA(USBx, ep->xfer_buff, pmabuffer, (uint16_t)len); + PCD_FreeUserBuffer(USBx, ep->num, ep->is_in); + } + + PCD_SET_EP_TX_STATUS(USBx, ep->num, USB_EP_TX_VALID); + } + else /* OUT endpoint */ + { + /* Multi packet transfer*/ + if (ep->xfer_len > ep->maxpacket) + { + len = ep->maxpacket; + ep->xfer_len -= len; + } + else + { + len = ep->xfer_len; + ep->xfer_len = 0U; + } + + /* configure and validate Rx endpoint */ + if (ep->doublebuffer == 0U) + { + /*Set RX buffer count*/ + PCD_SET_EP_RX_CNT(USBx, ep->num, len); + } + else + { + /*Set the Double buffer counter*/ + PCD_SET_EP_DBUF_CNT(USBx, ep->num, ep->is_in, len); + } + + PCD_SET_EP_RX_STATUS(USBx, ep->num, USB_EP_RX_VALID); + } + + return HAL_OK; +} + +/** + * @brief USB_WritePacket : Writes a packet into the Tx FIFO associated + * with the EP/channel + * @param USBx : Selected device + * @param src : pointer to source buffer + * @param ch_ep_num : endpoint or host channel number + * @param len : Number of bytes to write + * @retval HAL status + */ +HAL_StatusTypeDef USB_WritePacket(USB_TypeDef *USBx, uint8_t *src, uint8_t ch_ep_num, uint16_t len) +{ + /* Prevent unused argument(s) compilation warning */ + UNUSED(USBx); + UNUSED(src); + UNUSED(ch_ep_num); + UNUSED(len); + /* NOTE : - This function is not required by USB Device FS peripheral, it is used + only by USB OTG FS peripheral. + - This function is added to ensure compatibility across platforms. + */ + return HAL_OK; +} + +/** + * @brief USB_ReadPacket : read a packet from the Tx FIFO associated + * with the EP/channel + * @param USBx : Selected device + * @param dest : destination pointer + * @param len : Number of bytes to read + * @retval pointer to destination buffer + */ +void *USB_ReadPacket(USB_TypeDef *USBx, uint8_t *dest, uint16_t len) +{ + /* Prevent unused argument(s) compilation warning */ + UNUSED(USBx); + UNUSED(dest); + UNUSED(len); + /* NOTE : - This function is not required by USB Device FS peripheral, it is used + only by USB OTG FS peripheral. + - This function is added to ensure compatibility across platforms. + */ + return ((void *)NULL); +} + +/** + * @brief USB_EPSetStall : set a stall condition over an EP + * @param USBx : Selected device + * @param ep: pointer to endpoint structure + * @retval HAL status + */ +HAL_StatusTypeDef USB_EPSetStall(USB_TypeDef *USBx, USB_EPTypeDef *ep) +{ + if (ep->is_in != 0U) + { + PCD_SET_EP_TX_STATUS(USBx, ep->num, USB_EP_TX_STALL); + } + else + { + PCD_SET_EP_RX_STATUS(USBx, ep->num, USB_EP_RX_STALL); + } + + return HAL_OK; +} + +/** + * @brief USB_EPClearStall : Clear a stall condition over an EP + * @param USBx : Selected device + * @param ep: pointer to endpoint structure + * @retval HAL status + */ +HAL_StatusTypeDef USB_EPClearStall(USB_TypeDef *USBx, USB_EPTypeDef *ep) +{ + if (ep->doublebuffer == 0U) + { + if (ep->is_in != 0U) + { + PCD_CLEAR_TX_DTOG(USBx, ep->num); + + if (ep->type != EP_TYPE_ISOC) + { + /* Configure NAK status for the Endpoint */ + PCD_SET_EP_TX_STATUS(USBx, ep->num, USB_EP_TX_NAK); + } + } + else + { + PCD_CLEAR_RX_DTOG(USBx, ep->num); + + /* Configure VALID status for the Endpoint*/ + PCD_SET_EP_RX_STATUS(USBx, ep->num, USB_EP_RX_VALID); + } + } + + return HAL_OK; +} + +/** + * @brief USB_StopDevice : Stop the usb device mode + * @param USBx : Selected device + * @retval HAL status + */ +HAL_StatusTypeDef USB_StopDevice(USB_TypeDef *USBx) +{ + /* disable all interrupts and force USB reset */ + USBx->CNTR = USB_CNTR_FRES; + + /* clear interrupt status register */ + USBx->ISTR = 0; + + /* switch-off device */ + USBx->CNTR = (USB_CNTR_FRES | USB_CNTR_PDWN); + + return HAL_OK; +} + +/** + * @brief USB_SetDevAddress : Stop the usb device mode + * @param USBx : Selected device + * @param address : new device address to be assigned + * This parameter can be a value from 0 to 255 + * @retval HAL status + */ +HAL_StatusTypeDef USB_SetDevAddress(USB_TypeDef *USBx, uint8_t address) +{ + if (address == 0U) + { + /* set device address and enable function */ + USBx->DADDR = USB_DADDR_EF; + } + + return HAL_OK; +} + +/** + * @brief USB_DevConnect : Connect the USB device by enabling the pull-up/pull-down + * @param USBx : Selected device + * @retval HAL status + */ +HAL_StatusTypeDef USB_DevConnect(USB_TypeDef *USBx) +{ + /* Prevent unused argument(s) compilation warning */ + UNUSED(USBx); + /* NOTE : - This function is not required by USB Device FS peripheral, it is used + only by USB OTG FS peripheral. + - This function is added to ensure compatibility across platforms. + */ + + return HAL_OK; +} + +/** + * @brief USB_DevDisconnect : Disconnect the USB device by disabling the pull-up/pull-down + * @param USBx : Selected device + * @retval HAL status + */ +HAL_StatusTypeDef USB_DevDisconnect(USB_TypeDef *USBx) +{ + /* Prevent unused argument(s) compilation warning */ + UNUSED(USBx); + /* NOTE : - This function is not required by USB Device FS peripheral, it is used + only by USB OTG FS peripheral. + - This function is added to ensure compatibility across platforms. + */ + + return HAL_OK; +} + +/** + * @brief USB_ReadInterrupts: return the global USB interrupt status + * @param USBx : Selected device + * @retval HAL status + */ +uint32_t USB_ReadInterrupts(USB_TypeDef *USBx) +{ + uint32_t tmpreg; + + tmpreg = USBx->ISTR; + return tmpreg; +} + +/** + * @brief USB_ReadDevAllOutEpInterrupt: return the USB device OUT endpoints interrupt status + * @param USBx : Selected device + * @retval HAL status + */ +uint32_t USB_ReadDevAllOutEpInterrupt(USB_TypeDef *USBx) +{ + /* Prevent unused argument(s) compilation warning */ + UNUSED(USBx); + /* NOTE : - This function is not required by USB Device FS peripheral, it is used + only by USB OTG FS peripheral. + - This function is added to ensure compatibility across platforms. + */ + return (0); +} + +/** + * @brief USB_ReadDevAllInEpInterrupt: return the USB device IN endpoints interrupt status + * @param USBx : Selected device + * @retval HAL status + */ +uint32_t USB_ReadDevAllInEpInterrupt(USB_TypeDef *USBx) +{ + /* Prevent unused argument(s) compilation warning */ + UNUSED(USBx); + /* NOTE : - This function is not required by USB Device FS peripheral, it is used + only by USB OTG FS peripheral. + - This function is added to ensure compatibility across platforms. + */ + return (0); +} + +/** + * @brief Returns Device OUT EP Interrupt register + * @param USBx : Selected device + * @param epnum : endpoint number + * This parameter can be a value from 0 to 15 + * @retval Device OUT EP Interrupt register + */ +uint32_t USB_ReadDevOutEPInterrupt(USB_TypeDef *USBx, uint8_t epnum) +{ + /* Prevent unused argument(s) compilation warning */ + UNUSED(USBx); + UNUSED(epnum); + /* NOTE : - This function is not required by USB Device FS peripheral, it is used + only by USB OTG FS peripheral. + - This function is added to ensure compatibility across platforms. + */ + return (0); +} + +/** + * @brief Returns Device IN EP Interrupt register + * @param USBx : Selected device + * @param epnum : endpoint number + * This parameter can be a value from 0 to 15 + * @retval Device IN EP Interrupt register + */ +uint32_t USB_ReadDevInEPInterrupt(USB_TypeDef *USBx, uint8_t epnum) +{ + /* Prevent unused argument(s) compilation warning */ + UNUSED(USBx); + UNUSED(epnum); + /* NOTE : - This function is not required by USB Device FS peripheral, it is used + only by USB OTG FS peripheral. + - This function is added to ensure compatibility across platforms. + */ + return (0); +} + +/** + * @brief USB_ClearInterrupts: clear a USB interrupt + * @param USBx Selected device + * @param interrupt interrupt flag + * @retval None + */ +void USB_ClearInterrupts(USB_TypeDef *USBx, uint32_t interrupt) +{ + /* Prevent unused argument(s) compilation warning */ + UNUSED(USBx); + UNUSED(interrupt); + /* NOTE : - This function is not required by USB Device FS peripheral, it is used + only by USB OTG FS peripheral. + - This function is added to ensure compatibility across platforms. + */ +} + +/** + * @brief Prepare the EP0 to start the first control setup + * @param USBx Selected device + * @param psetup pointer to setup packet + * @retval HAL status + */ +HAL_StatusTypeDef USB_EP0_OutStart(USB_TypeDef *USBx, uint8_t *psetup) +{ + /* Prevent unused argument(s) compilation warning */ + UNUSED(USBx); + UNUSED(psetup); + /* NOTE : - This function is not required by USB Device FS peripheral, it is used + only by USB OTG FS peripheral. + - This function is added to ensure compatibility across platforms. + */ + return HAL_OK; +} + +/** + * @brief USB_ActivateRemoteWakeup : active remote wakeup signalling + * @param USBx Selected device + * @retval HAL status + */ +HAL_StatusTypeDef USB_ActivateRemoteWakeup(USB_TypeDef *USBx) +{ + USBx->CNTR |= USB_CNTR_RESUME; + + return HAL_OK; +} + +/** + * @brief USB_DeActivateRemoteWakeup : de-active remote wakeup signalling + * @param USBx Selected device + * @retval HAL status + */ +HAL_StatusTypeDef USB_DeActivateRemoteWakeup(USB_TypeDef *USBx) +{ + USBx->CNTR &= ~(USB_CNTR_RESUME); + return HAL_OK; +} + +/** + * @brief Copy a buffer from user memory area to packet memory area (PMA) + * @param USBx USB peripheral instance register address. + * @param pbUsrBuf pointer to user memory area. + * @param wPMABufAddr address into PMA. + * @param wNBytes: no. of bytes to be copied. + * @retval None + */ +void USB_WritePMA(USB_TypeDef *USBx, uint8_t *pbUsrBuf, uint16_t wPMABufAddr, uint16_t wNBytes) +{ + uint32_t n = ((uint32_t)wNBytes + 1U) >> 1; + uint32_t BaseAddr = (uint32_t)USBx; + uint32_t i, temp1, temp2; + __IO uint16_t *pdwVal; + uint8_t *pBuf = pbUsrBuf; + + pdwVal = (__IO uint16_t *)(BaseAddr + 0x400U + ((uint32_t)wPMABufAddr * PMA_ACCESS)); + + for (i = n; i != 0U; i--) + { + temp1 = *pBuf; + pBuf++; + temp2 = temp1 | ((uint16_t)((uint16_t) *pBuf << 8)); + *pdwVal = (uint16_t)temp2; + pdwVal++; + +#if PMA_ACCESS > 1U + pdwVal++; +#endif + + pBuf++; + } +} + +/** + * @brief Copy a buffer from user memory area to packet memory area (PMA) + * @param USBx: USB peripheral instance register address. + * @param pbUsrBuf pointer to user memory area. + * @param wPMABufAddr address into PMA. + * @param wNBytes: no. of bytes to be copied. + * @retval None + */ +void USB_ReadPMA(USB_TypeDef *USBx, uint8_t *pbUsrBuf, uint16_t wPMABufAddr, uint16_t wNBytes) +{ + uint32_t n = (uint32_t)wNBytes >> 1; + uint32_t BaseAddr = (uint32_t)USBx; + uint32_t i, temp; + __IO uint16_t *pdwVal; + uint8_t *pBuf = pbUsrBuf; + + pdwVal = (__IO uint16_t *)(BaseAddr + 0x400U + ((uint32_t)wPMABufAddr * PMA_ACCESS)); + + for (i = n; i != 0U; i--) + { + temp = *(__IO uint16_t *)pdwVal; + pdwVal++; + *pBuf = (uint8_t)((temp >> 0) & 0xFFU); + pBuf++; + *pBuf = (uint8_t)((temp >> 8) & 0xFFU); + pBuf++; + +#if PMA_ACCESS > 1U + pdwVal++; +#endif + } + + if ((wNBytes % 2U) != 0U) + { + temp = *pdwVal; + *pBuf = (uint8_t)((temp >> 0) & 0xFFU); + } +} +#endif /* defined (USB) */ + +/** + * @} + */ + +/** + * @} + */ +#endif /* defined (USB) || defined (USB_OTG_FS) */ +#endif /* defined (HAL_PCD_MODULE_ENABLED) || defined (HAL_HCD_MODULE_ENABLED) */ + +/** + * @} + */ + +/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/ From 349537263bbbc19a7baae34958f2bf836adf61e5 Mon Sep 17 00:00:00 2001 From: "Elise.B" Date: Mon, 2 Nov 2020 16:07:01 +0100 Subject: [PATCH 2/6] Modif --- MDK-ARM/Project.uvoptx | 104 ++++++++++++++++++++++++++++++++++++++-- MDK-ARM/Project.uvprojx | 80 +++++++++++++++++++++++++++++++ Src/AntiCharvirement.c | 8 ++++ Src/AntiChavirement.h | 31 ++++++++++++ 4 files changed, 219 insertions(+), 4 deletions(-) diff --git a/MDK-ARM/Project.uvoptx b/MDK-ARM/Project.uvoptx index 9d9a90f..dc33b86 100644 --- a/MDK-ARM/Project.uvoptx +++ b/MDK-ARM/Project.uvoptx @@ -549,6 +549,102 @@ 0 0 + + 2 + 10 + 5 + 0 + 0 + 0 + ..\Src\Allure.h + Allure.h + 0 + 0 + + + 2 + 11 + 5 + 0 + 0 + 0 + ..\Src\AntiChavirement.h + AntiChavirement.h + 0 + 0 + + + 2 + 12 + 5 + 0 + 0 + 0 + ..\Src\Batterie.h + Batterie.h + 0 + 0 + + + 2 + 13 + 5 + 0 + 0 + 0 + ..\Src\Gouvernail.h + Gouvernail.h + 0 + 0 + + + 2 + 14 + 5 + 0 + 0 + 0 + ..\Src\Heure.h + Heure.h + 0 + 0 + + + 2 + 15 + 5 + 0 + 0 + 0 + ..\Src\MyTimer.h + MyTimer.h + 0 + 0 + + + 2 + 16 + 5 + 0 + 0 + 0 + ..\Src\Transmission.h + Transmission.h + 0 + 0 + + + 2 + 17 + 5 + 0 + 0 + 0 + ..\Src\Voile.h + Voile.h + 0 + 0 + @@ -559,7 +655,7 @@ 0 3 - 10 + 18 1 0 0 @@ -571,7 +667,7 @@ 3 - 11 + 19 1 0 0 @@ -599,7 +695,7 @@ 0 5 - 12 + 20 1 0 0 @@ -619,7 +715,7 @@ 0 6 - 13 + 21 2 0 0 diff --git a/MDK-ARM/Project.uvprojx b/MDK-ARM/Project.uvprojx index d5a288a..8616695 100644 --- a/MDK-ARM/Project.uvprojx +++ b/MDK-ARM/Project.uvprojx @@ -432,6 +432,46 @@ 1 ..\Src\Voile.c + + Allure.h + 5 + ..\Src\Allure.h + + + AntiChavirement.h + 5 + ..\Src\AntiChavirement.h + + + Batterie.h + 5 + ..\Src\Batterie.h + + + Gouvernail.h + 5 + ..\Src\Gouvernail.h + + + Heure.h + 5 + ..\Src\Heure.h + + + MyTimer.h + 5 + ..\Src\MyTimer.h + + + Transmission.h + 5 + ..\Src\Transmission.h + + + Voile.h + 5 + ..\Src\Voile.h + @@ -903,6 +943,46 @@ 1 ..\Src\Voile.c + + Allure.h + 5 + ..\Src\Allure.h + + + AntiChavirement.h + 5 + ..\Src\AntiChavirement.h + + + Batterie.h + 5 + ..\Src\Batterie.h + + + Gouvernail.h + 5 + ..\Src\Gouvernail.h + + + Heure.h + 5 + ..\Src\Heure.h + + + MyTimer.h + 5 + ..\Src\MyTimer.h + + + Transmission.h + 5 + ..\Src\Transmission.h + + + Voile.h + 5 + ..\Src\Voile.h + diff --git a/Src/AntiCharvirement.c b/Src/AntiCharvirement.c index e69de29..536c060 100644 --- a/Src/AntiCharvirement.c +++ b/Src/AntiCharvirement.c @@ -0,0 +1,8 @@ +int CalculerDanger(int gamma){ +} + +int RecupRouli(){ +} + +void ConfAntiChavirement(){ +} \ No newline at end of file diff --git a/Src/AntiChavirement.h b/Src/AntiChavirement.h index e69de29..b91a796 100644 --- a/Src/AntiChavirement.h +++ b/Src/AntiChavirement.h @@ -0,0 +1,31 @@ +#ifndef ANTI_CHAVIREMENT_H +#define ANTI_CHAVIREMENT_H + +#include "stm32f103xb.h" + + +/** + * @brief + * @note + * @param + * @retval + */ +int CalculerDanger(int gamma); + +/** + * @brief + * @note + * @param + * @retval + */ +int RecupRouli(); + +/** + * @brief + * @note Fonction à lancer avant toute autre. + * @param None + * @retval None + */ +void ConfAntiChavirement(); + +#endif \ No newline at end of file From 7859806dbd54b143f8d764f5f02ae5016223397f Mon Sep 17 00:00:00 2001 From: EyeXion <52245783+EyeXion@users.noreply.github.com> Date: Mon, 2 Nov 2020 18:21:20 +0100 Subject: [PATCH 3/6] Added files --- MDK-ARM/NUCLEO-F103RB/NUCLEO-F103RB.axf | Bin 363316 -> 428332 bytes .../NUCLEO-F103RB/NUCLEO-F103RB.build_log.htm | 32 +-- MDK-ARM/NUCLEO-F103RB/NUCLEO-F103RB.htm | 94 ++++++-- MDK-ARM/NUCLEO-F103RB/NUCLEO-F103RB.lnp | 2 +- MDK-ARM/NUCLEO-F103RB/NUCLEO-F103RB.map | 206 +++++++++++------- .../NUCLEO-F103RB/Project_NUCLEO-F103RB.dep | 79 ++++--- MDK-ARM/NUCLEO-F103RB/Project_Simulateur.dep | 86 ++++---- MDK-ARM/NUCLEO-F103RB/allure.o | Bin 4740 -> 4736 bytes MDK-ARM/NUCLEO-F103RB/batterie.o | Bin 4760 -> 4756 bytes MDK-ARM/NUCLEO-F103RB/gouvernail.o | Bin 4768 -> 4764 bytes MDK-ARM/NUCLEO-F103RB/heure.o | Bin 4736 -> 4732 bytes MDK-ARM/NUCLEO-F103RB/mytimer.crf | Bin 373859 -> 373859 bytes MDK-ARM/NUCLEO-F103RB/mytimer.o | Bin 399780 -> 399776 bytes MDK-ARM/NUCLEO-F103RB/startup_stm32f103xb.o | Bin 5868 -> 5868 bytes MDK-ARM/NUCLEO-F103RB/stm32f1xx_ll_rcc.crf | Bin 389870 -> 389870 bytes MDK-ARM/NUCLEO-F103RB/stm32f1xx_ll_rcc.o | Bin 413376 -> 413376 bytes MDK-ARM/NUCLEO-F103RB/stm32f1xx_ll_utils.crf | Bin 396190 -> 396190 bytes MDK-ARM/NUCLEO-F103RB/stm32f1xx_ll_utils.o | Bin 422584 -> 422584 bytes MDK-ARM/NUCLEO-F103RB/system_stm32f1xx.crf | Bin 373980 -> 373980 bytes MDK-ARM/NUCLEO-F103RB/system_stm32f1xx.o | Bin 391772 -> 391768 bytes MDK-ARM/NUCLEO-F103RB/transmission.o | Bin 4788 -> 4784 bytes MDK-ARM/NUCLEO-F103RB/voile.o | Bin 4736 -> 4732 bytes MDK-ARM/NUCLEO-F103RB/voilier.crf | Bin 74 -> 18 bytes MDK-ARM/NUCLEO-F103RB/voilier.o | Bin 6020 -> 4740 bytes MDK-ARM/Project.uvoptx | 71 +++--- MDK-ARM/Project.uvprojx | 20 +- Src/AntiCharvirement.c | 8 - Src/AntiChavirement.c | 119 ++++++++++ Src/AntiChavirement.h | 9 +- Src/Voilier.c | 3 - 30 files changed, 503 insertions(+), 226 deletions(-) delete mode 100644 Src/AntiCharvirement.c create mode 100644 Src/AntiChavirement.c diff --git a/MDK-ARM/NUCLEO-F103RB/NUCLEO-F103RB.axf b/MDK-ARM/NUCLEO-F103RB/NUCLEO-F103RB.axf index d141ceee7b4fca70f5de095d09dfb1d6b7416e7f..5f56b63d66bdc6ca4481d0be4fd5fcd702515f71 100644 GIT binary patch delta 65008 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�isyC|rVY3h7rn;YA4l7M;_0C%g>d7ZHXpb9@`Ze?#~JCu}3U z37ykCCw%T8)W1g%K_e6ra3uhLL74hy3g3$Gzm@d65gv|)O5z_wc$(925&kuV(LeBN zN#PF=p0A`28jK7eEEO1LBVsEeAP+4Wvkpc0CM7%%Vf^s!b9f|TEkYQroEu(-Fo@l7 zGr~iZa1X*XJ`gQq#5xV(QA&99MnuT|nFMS{IG%m6A@+^zuypLQ?0xCjv39y^)ru9q zq5RBM*36kJC?%NCI@2`vZ=ER@%dmM$8(RRK(%jYE+Rawa*pc! zjYm*s`E=8r{O!KAG4@9O(WYX6wkiVzgXD%;UUvHlv5%&UnHv3DEHUl`Hj`<^#Im)i zEz{j;S-US<5xXfmDBZeleOpsc^ZKsrG2e|%-~Em6#)h!nXEeof`+o}g==FIcAs=oY?cuKS+B2)9UqovcgE_%(uQ}3(q&)k zjt$-Y>-Dj!5aR52PKo7bmu!fQ8rFmv@G5TxoMl^LW!YDnVmq_nYK;vjkTc_K+o`d` z^Gb?l6=h+P`%PqZ^uB-}yg0=MBj z%c|d*Ej|}%4CghK*$+xZ^oc$T#(c72jlU|4A YKe;^LiqFXIqsTpH^+~~>;BGj&pkPmf9CK52d3v8it6kPs-`i$g83L{k1#jOWbT6tUiTj4%vq4A zKf&`N>g9vm$_*cP>6sdHx{WgakXFNudS2+vfuI7_IOF(rg|A~JV?>NGpBq18@Lf(W zV3qdWdRne= zJ}uvv>RN4#O-+e>0GA8|pcmv&V9wY9_)-STvcKD}y~3076Od<3BERqz_8%#77kn!a zzZ!Bs+Tf9q^hI2hdUST1kKD?5K{HCdKNV!?<0IF+i#*1;;III)517%`GFN*&Yvf2v zRC|nK>_y!G)zZImeuRssc5UwpZmnqxbun(Kp*3oE#fmAF>!{Tl%>Tyu7O}3Twjxkd zzqY!$ZF4x-$+%^b6ZfD_jiMe;c(jm5`8^(%NrmY#^#rVcj>;TH#_qf%u46{o?pP@e z>M_(t2Qs+Ic@xDe3p`zSPe{wEiy67S@6CAI%a{%aj7CQX?B@s8bO$?I!tFbm`U;M1N#2&8S&8OUILD$YR5T_ zn^nS-HD(ji{N`x#$}&+Bp&=t<2jgsR+{^q;VdE2Y7+8h)Ie?Ws*>`}gWQo5Awvr>J zxwn!b{xKNEJewRC;ggI-;v)Rg3(hAg&VN$)y24*5oMx`vxRBz_RJc^(_5AMp%>;TC zgX0QcQuvy}cfi$&k)|G}Ve4DPObCoA@zH7QptT%{8#rm{kV7#s0u&{WP#fi z-US{{=p$tCG6c754#yQ9R`^|oFM+?b`CnG}pJ0v=pbQJ~zR$s_@ezrb0*B5R_O3ZZ zWZ(s-+jtH*)5df$suo54Ehw_ukcZYPb&P5!oOGe?L>@!mF|2qKzolGQ{2?0->OvHXLeR5#Cn)=0H`r-iMAmVH-IPtw< zatj#6NA@0k-RuCPo#cKnoRe&%vMjp7Ck3y;z%5g2#XJ!zF>g@|YsIVXsE;ws*wd+8|Ci(pNwI#HuIP z6t5^NEw5h|>)0f|!DBysUQ}`2zu8}0E-yYW7RMe8h@bJvOy#L2;gtCs#f&MeIUL^6 z8I)zcVv+HoCsU4wg3$oEVTmSTszkktJJ2dQ7y76_cy? zZxi{khHg>8MOm=a8c&Jw?3Xk8M7sP=w^(ZSez-@BPnMM&j==2SyG4mHE0P_X-zy&G ze4#wJQ~b{OOP`PsJZ=SeQeNm2!(SDpGWJ=-Ok}?Qo(OM>pm zProject: C:\Users\elies\Desktop\Cours\4A\Info Mat\Projet_Voilier_4IR\MDK-ARM\Project.uvprojx -Project File Date: 10/12/2020 +Project File Date: 11/02/2020

Output:

*** Using Compiler 'V5.06 update 6 (build 750)', folder: 'F:\Keil\ARM\ARMCC\Bin' -Rebuild target 'NUCLEO-F103RB' -compiling Allure.c... +Rebuild target 'Simulateur' compiling Voilier.c... -..\Src\Voilier.c(3): warning: #1-D: last line of file ends without a newline - } -..\Src\Voilier.c: 1 warning, 0 errors -compiling AntiCharvirement.c... -compiling Batterie.c... +compiling Allure.c... compiling Gouvernail.c... +compiling Batterie.c... compiling Heure.c... compiling Transmission.c... compiling Voile.c... compiling MyTimer.c... compiling stm32f1xx_ll_rcc.c... -compiling stm32f1xx_ll_utils.c... +compiling AntiChavirement.c... +..\Src\AntiChavirement.h(28): warning: #1295-D: Deprecated declaration RecupRouli - give arg types + int RecupRouli(); +..\Src\AntiChavirement.h(36): warning: #1295-D: Deprecated declaration ConfAntiChavirement - give arg types + void ConfAntiChavirement(); +..\Src\AntiChavirement.c(4): warning: #940-D: missing return statement at end of non-void function "CalculerDanger" + } +..\Src\AntiChavirement.c(7): warning: #940-D: missing return statement at end of non-void function "RecupRouli" + } +..\Src\AntiChavirement.c: 4 warnings, 0 errors assembling startup_stm32f103xb.s... +compiling stm32f1xx_ll_utils.c... compiling system_stm32f1xx.c... linking... -Program Size: Code=296 RO-data=268 RW-data=16 ZI-data=1024 -"NUCLEO-F103RB\NUCLEO-F103RB.axf" - 0 Error(s), 1 Warning(s). +Program Size: Code=924 RO-data=268 RW-data=28 ZI-data=1028 +"NUCLEO-F103RB\NUCLEO-F103RB.axf" - 0 Error(s), 4 Warning(s).

Software Packages used:

@@ -61,14 +67,14 @@ Package Vendor: Keil STMicroelectronics STM32F1 Series Device Support, Drivers and Examples

Collection of Component include folders:

- .\RTE\_NUCLEO-F103RB + .\RTE\_Simulateur C:\Users\elies\AppData\Local\Arm\Packs\ARM\CMSIS\5.6.0\CMSIS\Core\Include C:\Users\elies\AppData\Local\Arm\Packs\Keil\STM32F1xx_DFP\2.3.0\Device\Include

Collection of Component Files used:

* Component: ARM::CMSIS:CORE:5.3.0 -Build Time Elapsed: 00:00:04 +Build Time Elapsed: 00:00:06 diff --git a/MDK-ARM/NUCLEO-F103RB/NUCLEO-F103RB.htm b/MDK-ARM/NUCLEO-F103RB/NUCLEO-F103RB.htm index 33fbab3..c0a01bf 100644 --- a/MDK-ARM/NUCLEO-F103RB/NUCLEO-F103RB.htm +++ b/MDK-ARM/NUCLEO-F103RB/NUCLEO-F103RB.htm @@ -3,11 +3,11 @@ Static Call Graph - [NUCLEO-F103RB\NUCLEO-F103RB.axf]

Static Call Graph for image NUCLEO-F103RB\NUCLEO-F103RB.axf


-

#<CALLGRAPH># ARM Linker, 5060750: Last Updated: Mon Oct 12 09:03:11 2020 +

#<CALLGRAPH># ARM Linker, 5060750: Last Updated: Mon Nov 02 18:12:38 2020

-

Maximum Stack Usage = 8 bytes + Unknown(Cycles, Untraceable Function Pointers)

+

Maximum Stack Usage = 32 bytes + Unknown(Cycles, Untraceable Function Pointers)

Call chain for Maximum Stack Depth:

-TIM1_UP_IRQHandler +main ⇒ ConfAntiChavirement ⇒ LL_ADC_SetChannelSamplingTime

Mutually Recursive functions @@ -81,7 +81,7 @@ Function Pointers
  • UsageFault_Handler from startup_stm32f103xb.o(.text) referenced from startup_stm32f103xb.o(RESET)
  • WWDG_IRQHandler from startup_stm32f103xb.o(.text) referenced from startup_stm32f103xb.o(RESET)
  • __main from entry.o(.ARM.Collect$$$$00000000) referenced from startup_stm32f103xb.o(.text) -
  • main from voilier.o(i.main) referenced from entry9a.o(.ARM.Collect$$$$0000000B) +
  • main from antichavirement.o(i.main) referenced from entry9a.o(.ARM.Collect$$$$0000000B)

    @@ -90,7 +90,7 @@ Global Symbols

    __main (Thumb, 0 bytes, Stack size unknown bytes, entry.o(.ARM.Collect$$$$00000000))
    [Address Reference Count : 1]

    • startup_stm32f103xb.o(.text)
    -

    _main_stk (Thumb, 0 bytes, Stack size unknown bytes, entry2.o(.ARM.Collect$$$$00000001)) +

    _main_stk (Thumb, 0 bytes, Stack size unknown bytes, entry2.o(.ARM.Collect$$$$00000001))

    _main_scatterload (Thumb, 0 bytes, Stack size unknown bytes, entry5.o(.ARM.Collect$$$$00000004))

    [Calls]

    • >>   __scatterload @@ -100,15 +100,15 @@ Global Symbols

      [Called By]
      • >>   __scatterload
      -

      _main_clock (Thumb, 0 bytes, Stack size unknown bytes, entry7b.o(.ARM.Collect$$$$00000008)) +

      _main_clock (Thumb, 0 bytes, Stack size unknown bytes, entry7b.o(.ARM.Collect$$$$00000008)) -

      _main_cpp_init (Thumb, 0 bytes, Stack size unknown bytes, entry8b.o(.ARM.Collect$$$$0000000A)) +

      _main_cpp_init (Thumb, 0 bytes, Stack size unknown bytes, entry8b.o(.ARM.Collect$$$$0000000A)) -

      _main_init (Thumb, 0 bytes, Stack size unknown bytes, entry9a.o(.ARM.Collect$$$$0000000B)) +

      _main_init (Thumb, 0 bytes, Stack size unknown bytes, entry9a.o(.ARM.Collect$$$$0000000B)) -

      __rt_final_cpp (Thumb, 0 bytes, Stack size unknown bytes, entry10a.o(.ARM.Collect$$$$0000000D)) +

      __rt_final_cpp (Thumb, 0 bytes, Stack size unknown bytes, entry10a.o(.ARM.Collect$$$$0000000D)) -

      __rt_final_exit (Thumb, 0 bytes, Stack size unknown bytes, entry11a.o(.ARM.Collect$$$$0000000F)) +

      __rt_final_exit (Thumb, 0 bytes, Stack size unknown bytes, entry11a.o(.ARM.Collect$$$$0000000F))

      Reset_Handler (Thumb, 8 bytes, Stack size 0 bytes, startup_stm32f103xb.o(.text))
      [Address Reference Count : 1]

      • startup_stm32f103xb.o(RESET) @@ -303,7 +303,35 @@ Global Symbols
        [Called By]
        • >>   _main_scatterload
        -

        __scatterload_rt2 (Thumb, 0 bytes, Stack size 0 bytes, init.o(.text), UNUSED) +

        __scatterload_rt2 (Thumb, 0 bytes, Stack size 0 bytes, init.o(.text), UNUSED) + +

        ConfAntiChavirement (Thumb, 160 bytes, Stack size 16 bytes, antichavirement.o(i.ConfAntiChavirement)) +

        [Stack]

        • Max Depth = 32
        • Call Chain = ConfAntiChavirement ⇒ LL_ADC_SetChannelSamplingTime +
        +
        [Calls]
        • >>   LL_GPIO_SetPinMode +
        • >>   LL_APB2_GRP1_EnableClock +
        • >>   LL_ADC_SetChannelSamplingTime +
        • >>   LL_ADC_INJ_SetSequencerRanks +
        +
        [Called By]
        • >>   main +
        + +

        LL_Init1msTick (Thumb, 26 bytes, Stack size 0 bytes, stm32f1xx_ll_utils.o(i.LL_Init1msTick)) +

        [Called By]

        • >>   SystemClock_Config +
        + +

        LL_SetSystemCoreClock (Thumb, 6 bytes, Stack size 0 bytes, stm32f1xx_ll_utils.o(i.LL_SetSystemCoreClock)) +

        [Called By]

        • >>   SystemClock_Config +
        + +

        SystemClock_Config (Thumb, 142 bytes, Stack size 8 bytes, antichavirement.o(i.SystemClock_Config)) +

        [Stack]

        • Max Depth = 8
        • Call Chain = SystemClock_Config +
        +
        [Calls]
        • >>   LL_SetSystemCoreClock +
        • >>   LL_Init1msTick +
        +
        [Called By]
        • >>   main +

        SystemInit (Thumb, 56 bytes, Stack size 0 bytes, system_stm32f1xx.o(i.SystemInit))
        [Address Reference Count : 1]

        • startup_stm32f103xb.o(.text) @@ -328,18 +356,52 @@ Global Symbols

        [Address Reference Count : 1]
        • startup_stm32f103xb.o(RESET)
        -

        __scatterload_copy (Thumb, 14 bytes, Stack size unknown bytes, handlers.o(i.__scatterload_copy), UNUSED) +

        __scatterload_copy (Thumb, 14 bytes, Stack size unknown bytes, handlers.o(i.__scatterload_copy), UNUSED) -

        __scatterload_null (Thumb, 2 bytes, Stack size unknown bytes, handlers.o(i.__scatterload_null), UNUSED) +

        __scatterload_null (Thumb, 2 bytes, Stack size unknown bytes, handlers.o(i.__scatterload_null), UNUSED) -

        __scatterload_zeroinit (Thumb, 14 bytes, Stack size unknown bytes, handlers.o(i.__scatterload_zeroinit), UNUSED) +

        __scatterload_zeroinit (Thumb, 14 bytes, Stack size unknown bytes, handlers.o(i.__scatterload_zeroinit), UNUSED) -

        main (Thumb, 4 bytes, Stack size 0 bytes, voilier.o(i.main)) +

        main (Thumb, 56 bytes, Stack size 0 bytes, antichavirement.o(i.main)) +

        [Stack]

        • Max Depth = 32
        • Call Chain = main ⇒ ConfAntiChavirement ⇒ LL_ADC_SetChannelSamplingTime +
        +
        [Calls]
        • >>   SystemClock_Config +
        • >>   ConfAntiChavirement +
        • >>   LL_ADC_INJ_ReadConversionData12 +

        [Address Reference Count : 1]
        • entry9a.o(.ARM.Collect$$$$0000000B)

        Local Symbols -

        +

    +

    LL_ADC_INJ_ReadConversionData12 (Thumb, 28 bytes, Stack size 0 bytes, antichavirement.o(i.LL_ADC_INJ_ReadConversionData12)) +

    [Called By]

    • >>   main +
    + +

    LL_ADC_INJ_SetSequencerRanks (Thumb, 38 bytes, Stack size 8 bytes, antichavirement.o(i.LL_ADC_INJ_SetSequencerRanks)) +

    [Stack]

    • Max Depth = 8
    • Call Chain = LL_ADC_INJ_SetSequencerRanks +
    +
    [Called By]
    • >>   ConfAntiChavirement +
    + +

    LL_ADC_SetChannelSamplingTime (Thumb, 70 bytes, Stack size 16 bytes, antichavirement.o(i.LL_ADC_SetChannelSamplingTime)) +

    [Stack]

    • Max Depth = 16
    • Call Chain = LL_ADC_SetChannelSamplingTime +
    +
    [Called By]
    • >>   ConfAntiChavirement +
    + +

    LL_APB2_GRP1_EnableClock (Thumb, 18 bytes, Stack size 8 bytes, antichavirement.o(i.LL_APB2_GRP1_EnableClock)) +

    [Stack]

    • Max Depth = 8
    • Call Chain = LL_APB2_GRP1_EnableClock +
    +
    [Called By]
    • >>   ConfAntiChavirement +
    + +

    LL_GPIO_SetPinMode (Thumb, 42 bytes, Stack size 12 bytes, antichavirement.o(i.LL_GPIO_SetPinMode)) +

    [Stack]

    • Max Depth = 12
    • Call Chain = LL_GPIO_SetPinMode +
    +
    [Called By]
    • >>   ConfAntiChavirement +
    +

    Undefined Global Symbols


    diff --git a/MDK-ARM/NUCLEO-F103RB/NUCLEO-F103RB.lnp b/MDK-ARM/NUCLEO-F103RB/NUCLEO-F103RB.lnp index 67521aa..7253cd9 100644 --- a/MDK-ARM/NUCLEO-F103RB/NUCLEO-F103RB.lnp +++ b/MDK-ARM/NUCLEO-F103RB/NUCLEO-F103RB.lnp @@ -2,12 +2,12 @@ "nucleo-f103rb\voilier.o" "nucleo-f103rb\mytimer.o" "nucleo-f103rb\allure.o" -"nucleo-f103rb\anticharvirement.o" "nucleo-f103rb\batterie.o" "nucleo-f103rb\gouvernail.o" "nucleo-f103rb\heure.o" "nucleo-f103rb\transmission.o" "nucleo-f103rb\voile.o" +"nucleo-f103rb\antichavirement.o" "nucleo-f103rb\stm32f1xx_ll_rcc.o" "nucleo-f103rb\stm32f1xx_ll_utils.o" "nucleo-f103rb\system_stm32f1xx.o" diff --git a/MDK-ARM/NUCLEO-F103RB/NUCLEO-F103RB.map b/MDK-ARM/NUCLEO-F103RB/NUCLEO-F103RB.map index 8306e02..12a005e 100644 --- a/MDK-ARM/NUCLEO-F103RB/NUCLEO-F103RB.map +++ b/MDK-ARM/NUCLEO-F103RB/NUCLEO-F103RB.map @@ -9,6 +9,16 @@ Section Cross References mytimer.o(i.TIM2_IRQHandler) refers to mytimer.o(.data) for .data mytimer.o(i.TIM3_IRQHandler) refers to mytimer.o(.data) for .data mytimer.o(i.TIM4_IRQHandler) refers to mytimer.o(.data) for .data + antichavirement.o(i.ConfAntiChavirement) refers to antichavirement.o(i.LL_APB2_GRP1_EnableClock) for LL_APB2_GRP1_EnableClock + antichavirement.o(i.ConfAntiChavirement) refers to antichavirement.o(i.LL_GPIO_SetPinMode) for LL_GPIO_SetPinMode + antichavirement.o(i.ConfAntiChavirement) refers to antichavirement.o(i.LL_ADC_INJ_SetSequencerRanks) for LL_ADC_INJ_SetSequencerRanks + antichavirement.o(i.ConfAntiChavirement) refers to antichavirement.o(i.LL_ADC_SetChannelSamplingTime) for LL_ADC_SetChannelSamplingTime + antichavirement.o(i.SystemClock_Config) refers to stm32f1xx_ll_utils.o(i.LL_Init1msTick) for LL_Init1msTick + antichavirement.o(i.SystemClock_Config) refers to stm32f1xx_ll_utils.o(i.LL_SetSystemCoreClock) for LL_SetSystemCoreClock + antichavirement.o(i.main) refers to antichavirement.o(i.SystemClock_Config) for SystemClock_Config + antichavirement.o(i.main) refers to antichavirement.o(i.ConfAntiChavirement) for ConfAntiChavirement + antichavirement.o(i.main) refers to antichavirement.o(i.LL_ADC_INJ_ReadConversionData12) for LL_ADC_INJ_ReadConversionData12 + antichavirement.o(i.main) refers to antichavirement.o(.data) for .data stm32f1xx_ll_rcc.o(i.LL_RCC_GetADCClockFreq) refers to stm32f1xx_ll_rcc.o(i.RCC_GetSystemClockFreq) for RCC_GetSystemClockFreq stm32f1xx_ll_rcc.o(i.LL_RCC_GetADCClockFreq) refers to stm32f1xx_ll_rcc.o(i.RCC_GetHCLKClockFreq) for RCC_GetHCLKClockFreq stm32f1xx_ll_rcc.o(i.LL_RCC_GetADCClockFreq) refers to stm32f1xx_ll_rcc.o(i.RCC_GetPCLK2ClockFreq) for RCC_GetPCLK2ClockFreq @@ -55,8 +65,8 @@ Section Cross References entry2.o(__vectab_stack_and_reset_area) refers to startup_stm32f103xb.o(STACK) for __initial_sp entry2.o(__vectab_stack_and_reset_area) refers to entry.o(.ARM.Collect$$$$00000000) for __main entry5.o(.ARM.Collect$$$$00000004) refers to init.o(.text) for __scatterload - entry9a.o(.ARM.Collect$$$$0000000B) refers to voilier.o(i.main) for main - entry9b.o(.ARM.Collect$$$$0000000C) refers to voilier.o(i.main) for main + entry9a.o(.ARM.Collect$$$$0000000B) refers to antichavirement.o(i.main) for main + entry9b.o(.ARM.Collect$$$$0000000C) refers to antichavirement.o(i.main) for main init.o(.text) refers to entry5.o(.ARM.Collect$$$$00000004) for __main_after_scatterload @@ -72,6 +82,11 @@ Removing Unused input sections from the image. Removing mytimer.o(i.MyTimer_IT_Disable), (68 bytes). Removing mytimer.o(i.MyTimer_Start), (10 bytes). Removing mytimer.o(i.MyTimer_Stop), (10 bytes). + Removing antichavirement.o(.rev16_text), (4 bytes). + Removing antichavirement.o(.revsh_text), (4 bytes). + Removing antichavirement.o(.rrx_text), (6 bytes). + Removing antichavirement.o(i.CalculerDanger), (2 bytes). + Removing antichavirement.o(i.RecupRouli), (2 bytes). Removing stm32f1xx_ll_rcc.o(.rev16_text), (4 bytes). Removing stm32f1xx_ll_rcc.o(.revsh_text), (4 bytes). Removing stm32f1xx_ll_rcc.o(.rrx_text), (6 bytes). @@ -87,11 +102,9 @@ Removing Unused input sections from the image. Removing stm32f1xx_ll_utils.o(.rev16_text), (4 bytes). Removing stm32f1xx_ll_utils.o(.revsh_text), (4 bytes). Removing stm32f1xx_ll_utils.o(.rrx_text), (6 bytes). - Removing stm32f1xx_ll_utils.o(i.LL_Init1msTick), (26 bytes). Removing stm32f1xx_ll_utils.o(i.LL_PLL_ConfigSystemClock_HSE), (108 bytes). Removing stm32f1xx_ll_utils.o(i.LL_PLL_ConfigSystemClock_HSI), (88 bytes). Removing stm32f1xx_ll_utils.o(i.LL_RCC_PLL_ConfigDomain_SYS), (24 bytes). - Removing stm32f1xx_ll_utils.o(i.LL_SetSystemCoreClock), (12 bytes). Removing stm32f1xx_ll_utils.o(i.LL_mDelay), (30 bytes). Removing stm32f1xx_ll_utils.o(i.UTILS_EnablePLLAndSwitchSystem), (172 bytes). Removing stm32f1xx_ll_utils.o(i.UTILS_GetPLLOutputFrequency), (24 bytes). @@ -103,10 +116,9 @@ Removing Unused input sections from the image. Removing system_stm32f1xx.o(i.SystemCoreClockUpdate), (104 bytes). Removing system_stm32f1xx.o(.constdata), (16 bytes). Removing system_stm32f1xx.o(.constdata), (8 bytes). - Removing system_stm32f1xx.o(.data), (4 bytes). Removing startup_stm32f103xb.o(HEAP), (512 bytes). -41 unused section(s) (total 2004 bytes) removed from the image. +43 unused section(s) (total 1980 bytes) removed from the image. ============================================================================== @@ -117,24 +129,24 @@ Image Symbol Table Symbol Name Value Ov Type Size Object(Section) ../Src/system_stm32f1xx.c 0x00000000 Number 0 system_stm32f1xx.o ABSOLUTE - ../clib/microlib/init/entry.s 0x00000000 Number 0 entry9b.o ABSOLUTE ../clib/microlib/init/entry.s 0x00000000 Number 0 entry2.o ABSOLUTE + ../clib/microlib/init/entry.s 0x00000000 Number 0 entry.o ABSOLUTE + ../clib/microlib/init/entry.s 0x00000000 Number 0 entry11b.o ABSOLUTE + ../clib/microlib/init/entry.s 0x00000000 Number 0 entry11a.o ABSOLUTE + ../clib/microlib/init/entry.s 0x00000000 Number 0 entry10a.o ABSOLUTE + ../clib/microlib/init/entry.s 0x00000000 Number 0 entry9b.o ABSOLUTE ../clib/microlib/init/entry.s 0x00000000 Number 0 entry9a.o ABSOLUTE ../clib/microlib/init/entry.s 0x00000000 Number 0 entry8b.o ABSOLUTE ../clib/microlib/init/entry.s 0x00000000 Number 0 entry8a.o ABSOLUTE - ../clib/microlib/init/entry.s 0x00000000 Number 0 entry5.o ABSOLUTE + ../clib/microlib/init/entry.s 0x00000000 Number 0 entry10b.o ABSOLUTE ../clib/microlib/init/entry.s 0x00000000 Number 0 entry7b.o ABSOLUTE ../clib/microlib/init/entry.s 0x00000000 Number 0 entry7a.o ABSOLUTE - ../clib/microlib/init/entry.s 0x00000000 Number 0 entry.o ABSOLUTE - ../clib/microlib/init/entry.s 0x00000000 Number 0 entry10a.o ABSOLUTE - ../clib/microlib/init/entry.s 0x00000000 Number 0 entry10b.o ABSOLUTE - ../clib/microlib/init/entry.s 0x00000000 Number 0 entry11a.o ABSOLUTE - ../clib/microlib/init/entry.s 0x00000000 Number 0 entry11b.o ABSOLUTE + ../clib/microlib/init/entry.s 0x00000000 Number 0 entry5.o ABSOLUTE ..\LLDrivers\src\stm32f1xx_ll_rcc.c 0x00000000 Number 0 stm32f1xx_ll_rcc.o ABSOLUTE ..\LLDrivers\src\stm32f1xx_ll_utils.c 0x00000000 Number 0 stm32f1xx_ll_utils.o ABSOLUTE ..\MyDrivers\MyTimer.c 0x00000000 Number 0 mytimer.o ABSOLUTE ..\Src\Allure.c 0x00000000 Number 0 allure.o ABSOLUTE - ..\Src\AntiCharvirement.c 0x00000000 Number 0 anticharvirement.o ABSOLUTE + ..\Src\AntiChavirement.c 0x00000000 Number 0 antichavirement.o ABSOLUTE ..\Src\Batterie.c 0x00000000 Number 0 batterie.o ABSOLUTE ..\Src\Gouvernail.c 0x00000000 Number 0 gouvernail.o ABSOLUTE ..\Src\Heure.c 0x00000000 Number 0 heure.o ABSOLUTE @@ -145,6 +157,7 @@ Image Symbol Table ..\\LLDrivers\\src\\stm32f1xx_ll_rcc.c 0x00000000 Number 0 stm32f1xx_ll_rcc.o ABSOLUTE ..\\LLDrivers\\src\\stm32f1xx_ll_utils.c 0x00000000 Number 0 stm32f1xx_ll_utils.o ABSOLUTE ..\\MyDrivers\\MyTimer.c 0x00000000 Number 0 mytimer.o ABSOLUTE + ..\\Src\\AntiChavirement.c 0x00000000 Number 0 antichavirement.o ABSOLUTE dc.s 0x00000000 Number 0 dc.o ABSOLUTE handlers.s 0x00000000 Number 0 handlers.o ABSOLUTE init.s 0x00000000 Number 0 init.o ABSOLUTE @@ -162,24 +175,40 @@ Image Symbol Table __lit__00000000 0x080000fc Data 4 entry2.o(.ARM.Collect$$$$00002712) .text 0x08000100 Section 36 startup_stm32f103xb.o(.text) .text 0x08000124 Section 36 init.o(.text) - i.SystemInit 0x08000148 Section 0 system_stm32f1xx.o(i.SystemInit) - i.TIM1_UP_IRQHandler 0x08000190 Section 0 mytimer.o(i.TIM1_UP_IRQHandler) - i.TIM2_IRQHandler 0x080001a8 Section 0 mytimer.o(i.TIM2_IRQHandler) - i.TIM3_IRQHandler 0x080001c0 Section 0 mytimer.o(i.TIM3_IRQHandler) - i.TIM4_IRQHandler 0x080001d8 Section 0 mytimer.o(i.TIM4_IRQHandler) - i.__scatterload_copy 0x080001f0 Section 14 handlers.o(i.__scatterload_copy) - i.__scatterload_null 0x080001fe Section 2 handlers.o(i.__scatterload_null) - i.__scatterload_zeroinit 0x08000200 Section 14 handlers.o(i.__scatterload_zeroinit) - i.main 0x0800020e Section 0 voilier.o(i.main) + i.ConfAntiChavirement 0x08000148 Section 0 antichavirement.o(i.ConfAntiChavirement) + i.LL_ADC_INJ_ReadConversionData12 0x080001f4 Section 0 antichavirement.o(i.LL_ADC_INJ_ReadConversionData12) + LL_ADC_INJ_ReadConversionData12 0x080001f5 Thumb Code 28 antichavirement.o(i.LL_ADC_INJ_ReadConversionData12) + i.LL_ADC_INJ_SetSequencerRanks 0x08000210 Section 0 antichavirement.o(i.LL_ADC_INJ_SetSequencerRanks) + LL_ADC_INJ_SetSequencerRanks 0x08000211 Thumb Code 38 antichavirement.o(i.LL_ADC_INJ_SetSequencerRanks) + i.LL_ADC_SetChannelSamplingTime 0x08000236 Section 0 antichavirement.o(i.LL_ADC_SetChannelSamplingTime) + LL_ADC_SetChannelSamplingTime 0x08000237 Thumb Code 70 antichavirement.o(i.LL_ADC_SetChannelSamplingTime) + i.LL_APB2_GRP1_EnableClock 0x0800027c Section 0 antichavirement.o(i.LL_APB2_GRP1_EnableClock) + LL_APB2_GRP1_EnableClock 0x0800027d Thumb Code 18 antichavirement.o(i.LL_APB2_GRP1_EnableClock) + i.LL_GPIO_SetPinMode 0x08000294 Section 0 antichavirement.o(i.LL_GPIO_SetPinMode) + LL_GPIO_SetPinMode 0x08000295 Thumb Code 42 antichavirement.o(i.LL_GPIO_SetPinMode) + i.LL_Init1msTick 0x080002be Section 0 stm32f1xx_ll_utils.o(i.LL_Init1msTick) + i.LL_SetSystemCoreClock 0x080002d8 Section 0 stm32f1xx_ll_utils.o(i.LL_SetSystemCoreClock) + i.SystemClock_Config 0x080002e4 Section 0 antichavirement.o(i.SystemClock_Config) + i.SystemInit 0x08000380 Section 0 system_stm32f1xx.o(i.SystemInit) + i.TIM1_UP_IRQHandler 0x080003c8 Section 0 mytimer.o(i.TIM1_UP_IRQHandler) + i.TIM2_IRQHandler 0x080003e0 Section 0 mytimer.o(i.TIM2_IRQHandler) + i.TIM3_IRQHandler 0x080003f8 Section 0 mytimer.o(i.TIM3_IRQHandler) + i.TIM4_IRQHandler 0x08000410 Section 0 mytimer.o(i.TIM4_IRQHandler) + i.__scatterload_copy 0x08000428 Section 14 handlers.o(i.__scatterload_copy) + i.__scatterload_null 0x08000436 Section 2 handlers.o(i.__scatterload_null) + i.__scatterload_zeroinit 0x08000438 Section 14 handlers.o(i.__scatterload_zeroinit) + i.main 0x08000448 Section 0 antichavirement.o(i.main) .data 0x20000000 Section 16 mytimer.o(.data) - STACK 0x20000010 Section 1024 startup_stm32f103xb.o(STACK) + .data 0x20000010 Section 8 antichavirement.o(.data) + .data 0x20000018 Section 4 system_stm32f1xx.o(.data) + STACK 0x20000020 Section 1024 startup_stm32f103xb.o(STACK) Global Symbols Symbol Name Value Ov Type Size Object(Section) BuildAttributes$$THM_ISAv4$P$D$K$B$S$PE$A:L22UL41UL21$X:L11$S22US41US21$IEEE1$IW$USESV6$~STKCKD$USESV7$~SHL$OSPACE$EBA8$MICROLIB$REQ8$PRES8$EABIv2 0x00000000 Number 0 anon$$obj.o ABSOLUTE - __ARM_use_no_argv 0x00000000 Number 0 voilier.o ABSOLUTE + __ARM_use_no_argv 0x00000000 Number 0 antichavirement.o ABSOLUTE __cpp_initialize__aeabi_ - Undefined Weak Reference __cxa_finalize - Undefined Weak Reference __decompress - Undefined Weak Reference @@ -248,22 +277,29 @@ Image Symbol Table WWDG_IRQHandler 0x0800011b Thumb Code 0 startup_stm32f103xb.o(.text) __scatterload 0x08000125 Thumb Code 28 init.o(.text) __scatterload_rt2 0x08000125 Thumb Code 0 init.o(.text) - SystemInit 0x08000149 Thumb Code 56 system_stm32f1xx.o(i.SystemInit) - TIM1_UP_IRQHandler 0x08000191 Thumb Code 16 mytimer.o(i.TIM1_UP_IRQHandler) - TIM2_IRQHandler 0x080001a9 Thumb Code 18 mytimer.o(i.TIM2_IRQHandler) - TIM3_IRQHandler 0x080001c1 Thumb Code 16 mytimer.o(i.TIM3_IRQHandler) - TIM4_IRQHandler 0x080001d9 Thumb Code 16 mytimer.o(i.TIM4_IRQHandler) - __scatterload_copy 0x080001f1 Thumb Code 14 handlers.o(i.__scatterload_copy) - __scatterload_null 0x080001ff Thumb Code 2 handlers.o(i.__scatterload_null) - __scatterload_zeroinit 0x08000201 Thumb Code 14 handlers.o(i.__scatterload_zeroinit) - main 0x0800020f Thumb Code 4 voilier.o(i.main) - Region$$Table$$Base 0x08000214 Number 0 anon$$obj.o(Region$$Table) - Region$$Table$$Limit 0x08000234 Number 0 anon$$obj.o(Region$$Table) + ConfAntiChavirement 0x08000149 Thumb Code 160 antichavirement.o(i.ConfAntiChavirement) + LL_Init1msTick 0x080002bf Thumb Code 26 stm32f1xx_ll_utils.o(i.LL_Init1msTick) + LL_SetSystemCoreClock 0x080002d9 Thumb Code 6 stm32f1xx_ll_utils.o(i.LL_SetSystemCoreClock) + SystemClock_Config 0x080002e5 Thumb Code 142 antichavirement.o(i.SystemClock_Config) + SystemInit 0x08000381 Thumb Code 56 system_stm32f1xx.o(i.SystemInit) + TIM1_UP_IRQHandler 0x080003c9 Thumb Code 16 mytimer.o(i.TIM1_UP_IRQHandler) + TIM2_IRQHandler 0x080003e1 Thumb Code 18 mytimer.o(i.TIM2_IRQHandler) + TIM3_IRQHandler 0x080003f9 Thumb Code 16 mytimer.o(i.TIM3_IRQHandler) + TIM4_IRQHandler 0x08000411 Thumb Code 16 mytimer.o(i.TIM4_IRQHandler) + __scatterload_copy 0x08000429 Thumb Code 14 handlers.o(i.__scatterload_copy) + __scatterload_null 0x08000437 Thumb Code 2 handlers.o(i.__scatterload_null) + __scatterload_zeroinit 0x08000439 Thumb Code 14 handlers.o(i.__scatterload_zeroinit) + main 0x08000449 Thumb Code 56 antichavirement.o(i.main) + Region$$Table$$Base 0x08000488 Number 0 anon$$obj.o(Region$$Table) + Region$$Table$$Limit 0x080004a8 Number 0 anon$$obj.o(Region$$Table) pTIM1_Overflow 0x20000000 Data 4 mytimer.o(.data) pTIM2_Overflow 0x20000004 Data 4 mytimer.o(.data) pTIM3_Overflow 0x20000008 Data 4 mytimer.o(.data) pTIM4_Overflow 0x2000000c Data 4 mytimer.o(.data) - __initial_sp 0x20000410 Data 0 startup_stm32f103xb.o(STACK) + res10 0x20000010 Data 4 antichavirement.o(.data) + res12 0x20000014 Data 4 antichavirement.o(.data) + SystemCoreClock 0x20000018 Data 4 system_stm32f1xx.o(.data) + __initial_sp 0x20000420 Data 0 startup_stm32f103xb.o(STACK) @@ -273,43 +309,55 @@ Memory Map of the image Image Entry point : 0x080000ed - Load Region LR_IROM1 (Base: 0x08000000, Size: 0x00000244, Max: 0x00020000, ABSOLUTE) + Load Region LR_IROM1 (Base: 0x08000000, Size: 0x000004c4, Max: 0x00020000, ABSOLUTE) - Execution Region ER_IROM1 (Exec base: 0x08000000, Load base: 0x08000000, Size: 0x00000234, Max: 0x00020000, ABSOLUTE) + Execution Region ER_IROM1 (Exec base: 0x08000000, Load base: 0x08000000, Size: 0x000004a8, Max: 0x00020000, ABSOLUTE) Exec Addr Load Addr Size Type Attr Idx E Section Name Object - 0x08000000 0x08000000 0x000000ec Data RO 329 RESET startup_stm32f103xb.o - 0x080000ec 0x080000ec 0x00000000 Code RO 334 * .ARM.Collect$$$$00000000 mc_w.l(entry.o) - 0x080000ec 0x080000ec 0x00000004 Code RO 337 .ARM.Collect$$$$00000001 mc_w.l(entry2.o) - 0x080000f0 0x080000f0 0x00000004 Code RO 340 .ARM.Collect$$$$00000004 mc_w.l(entry5.o) - 0x080000f4 0x080000f4 0x00000000 Code RO 342 .ARM.Collect$$$$00000008 mc_w.l(entry7b.o) - 0x080000f4 0x080000f4 0x00000000 Code RO 344 .ARM.Collect$$$$0000000A mc_w.l(entry8b.o) - 0x080000f4 0x080000f4 0x00000008 Code RO 345 .ARM.Collect$$$$0000000B mc_w.l(entry9a.o) - 0x080000fc 0x080000fc 0x00000000 Code RO 347 .ARM.Collect$$$$0000000D mc_w.l(entry10a.o) - 0x080000fc 0x080000fc 0x00000000 Code RO 349 .ARM.Collect$$$$0000000F mc_w.l(entry11a.o) - 0x080000fc 0x080000fc 0x00000004 Code RO 338 .ARM.Collect$$$$00002712 mc_w.l(entry2.o) - 0x08000100 0x08000100 0x00000024 Code RO 330 .text startup_stm32f103xb.o - 0x08000124 0x08000124 0x00000024 Code RO 351 .text mc_w.l(init.o) - 0x08000148 0x08000148 0x00000048 Code RO 293 i.SystemInit system_stm32f1xx.o - 0x08000190 0x08000190 0x00000018 Code RO 20 i.TIM1_UP_IRQHandler mytimer.o - 0x080001a8 0x080001a8 0x00000018 Code RO 21 i.TIM2_IRQHandler mytimer.o - 0x080001c0 0x080001c0 0x00000018 Code RO 22 i.TIM3_IRQHandler mytimer.o - 0x080001d8 0x080001d8 0x00000018 Code RO 23 i.TIM4_IRQHandler mytimer.o - 0x080001f0 0x080001f0 0x0000000e Code RO 355 i.__scatterload_copy mc_w.l(handlers.o) - 0x080001fe 0x080001fe 0x00000002 Code RO 356 i.__scatterload_null mc_w.l(handlers.o) - 0x08000200 0x08000200 0x0000000e Code RO 357 i.__scatterload_zeroinit mc_w.l(handlers.o) - 0x0800020e 0x0800020e 0x00000004 Code RO 1 i.main voilier.o - 0x08000212 0x08000212 0x00000002 PAD - 0x08000214 0x08000214 0x00000020 Data RO 353 Region$$Table anon$$obj.o + 0x08000000 0x08000000 0x000000ec Data RO 417 RESET startup_stm32f103xb.o + 0x080000ec 0x080000ec 0x00000000 Code RO 422 * .ARM.Collect$$$$00000000 mc_w.l(entry.o) + 0x080000ec 0x080000ec 0x00000004 Code RO 425 .ARM.Collect$$$$00000001 mc_w.l(entry2.o) + 0x080000f0 0x080000f0 0x00000004 Code RO 428 .ARM.Collect$$$$00000004 mc_w.l(entry5.o) + 0x080000f4 0x080000f4 0x00000000 Code RO 430 .ARM.Collect$$$$00000008 mc_w.l(entry7b.o) + 0x080000f4 0x080000f4 0x00000000 Code RO 432 .ARM.Collect$$$$0000000A mc_w.l(entry8b.o) + 0x080000f4 0x080000f4 0x00000008 Code RO 433 .ARM.Collect$$$$0000000B mc_w.l(entry9a.o) + 0x080000fc 0x080000fc 0x00000000 Code RO 435 .ARM.Collect$$$$0000000D mc_w.l(entry10a.o) + 0x080000fc 0x080000fc 0x00000000 Code RO 437 .ARM.Collect$$$$0000000F mc_w.l(entry11a.o) + 0x080000fc 0x080000fc 0x00000004 Code RO 426 .ARM.Collect$$$$00002712 mc_w.l(entry2.o) + 0x08000100 0x08000100 0x00000024 Code RO 418 .text startup_stm32f103xb.o + 0x08000124 0x08000124 0x00000024 Code RO 439 .text mc_w.l(init.o) + 0x08000148 0x08000148 0x000000ac Code RO 127 i.ConfAntiChavirement antichavirement.o + 0x080001f4 0x080001f4 0x0000001c Code RO 128 i.LL_ADC_INJ_ReadConversionData12 antichavirement.o + 0x08000210 0x08000210 0x00000026 Code RO 129 i.LL_ADC_INJ_SetSequencerRanks antichavirement.o + 0x08000236 0x08000236 0x00000046 Code RO 130 i.LL_ADC_SetChannelSamplingTime antichavirement.o + 0x0800027c 0x0800027c 0x00000018 Code RO 131 i.LL_APB2_GRP1_EnableClock antichavirement.o + 0x08000294 0x08000294 0x0000002a Code RO 132 i.LL_GPIO_SetPinMode antichavirement.o + 0x080002be 0x080002be 0x0000001a Code RO 298 i.LL_Init1msTick stm32f1xx_ll_utils.o + 0x080002d8 0x080002d8 0x0000000c Code RO 302 i.LL_SetSystemCoreClock stm32f1xx_ll_utils.o + 0x080002e4 0x080002e4 0x0000009c Code RO 134 i.SystemClock_Config antichavirement.o + 0x08000380 0x08000380 0x00000048 Code RO 381 i.SystemInit system_stm32f1xx.o + 0x080003c8 0x080003c8 0x00000018 Code RO 14 i.TIM1_UP_IRQHandler mytimer.o + 0x080003e0 0x080003e0 0x00000018 Code RO 15 i.TIM2_IRQHandler mytimer.o + 0x080003f8 0x080003f8 0x00000018 Code RO 16 i.TIM3_IRQHandler mytimer.o + 0x08000410 0x08000410 0x00000018 Code RO 17 i.TIM4_IRQHandler mytimer.o + 0x08000428 0x08000428 0x0000000e Code RO 443 i.__scatterload_copy mc_w.l(handlers.o) + 0x08000436 0x08000436 0x00000002 Code RO 444 i.__scatterload_null mc_w.l(handlers.o) + 0x08000438 0x08000438 0x0000000e Code RO 445 i.__scatterload_zeroinit mc_w.l(handlers.o) + 0x08000446 0x08000446 0x00000002 PAD + 0x08000448 0x08000448 0x00000040 Code RO 135 i.main antichavirement.o + 0x08000488 0x08000488 0x00000020 Data RO 441 Region$$Table anon$$obj.o - Execution Region RW_IRAM1 (Exec base: 0x20000000, Load base: 0x08000234, Size: 0x00000410, Max: 0x00005000, ABSOLUTE) + Execution Region RW_IRAM1 (Exec base: 0x20000000, Load base: 0x080004a8, Size: 0x00000420, Max: 0x00005000, ABSOLUTE) Exec Addr Load Addr Size Type Attr Idx E Section Name Object - 0x20000000 0x08000234 0x00000010 Data RW 24 .data mytimer.o - 0x20000010 - 0x00000400 Zero RW 327 STACK startup_stm32f103xb.o + 0x20000000 0x080004a8 0x00000010 Data RW 18 .data mytimer.o + 0x20000010 0x080004b8 0x00000008 Data RW 136 .data antichavirement.o + 0x20000018 0x080004c0 0x00000004 Data RW 384 .data system_stm32f1xx.o + 0x2000001c 0x080004c4 0x00000004 PAD + 0x20000020 - 0x00000400 Zero RW 415 STACK startup_stm32f103xb.o ============================================================================== @@ -319,15 +367,17 @@ Image component sizes Code (inc. data) RO Data RW Data ZI Data Debug Object Name + 594 40 0 8 0 58276 antichavirement.o 96 30 0 16 0 342549 mytimer.o 36 8 236 0 1024 780 startup_stm32f103xb.o - 72 16 0 0 0 465 system_stm32f1xx.o - 4 0 0 0 0 1863 voilier.o + 38 6 0 0 0 4789 stm32f1xx_ll_utils.o + 72 16 0 4 0 1167 system_stm32f1xx.o + 0 0 0 0 0 1444 voilier.o ---------------------------------------------------------------------- - 210 54 268 16 1024 345657 Object Totals + 836 100 268 28 1028 409005 Object Totals 0 0 32 0 0 0 (incl. Generated) - 2 0 0 0 0 0 (incl. Padding) + 0 0 0 0 4 0 (incl. Padding) ---------------------------------------------------------------------- @@ -345,8 +395,8 @@ Image component sizes 36 8 0 0 0 68 init.o ---------------------------------------------------------------------- - 86 16 0 0 0 68 Library Totals - 0 0 0 0 0 0 (incl. Padding) + 88 16 0 0 0 68 Library Totals + 2 0 0 0 0 0 (incl. Padding) ---------------------------------------------------------------------- @@ -355,7 +405,7 @@ Image component sizes 86 16 0 0 0 68 mc_w.l ---------------------------------------------------------------------- - 86 16 0 0 0 68 Library Totals + 88 16 0 0 0 68 Library Totals ---------------------------------------------------------------------- @@ -364,15 +414,15 @@ Image component sizes Code (inc. data) RO Data RW Data ZI Data Debug - 296 70 268 16 1024 345721 Grand Totals - 296 70 268 16 1024 345721 ELF Image Totals - 296 70 268 16 0 0 ROM Totals + 924 116 268 28 1028 408601 Grand Totals + 924 116 268 28 1028 408601 ELF Image Totals + 924 116 268 28 0 0 ROM Totals ============================================================================== - Total RO Size (Code + RO Data) 564 ( 0.55kB) - Total RW Size (RW Data + ZI Data) 1040 ( 1.02kB) - Total ROM Size (Code + RO Data + RW Data) 580 ( 0.57kB) + Total RO Size (Code + RO Data) 1192 ( 1.16kB) + Total RW Size (RW Data + ZI Data) 1056 ( 1.03kB) + Total ROM Size (Code + RO Data + RW Data) 1220 ( 1.19kB) ============================================================================== diff --git a/MDK-ARM/NUCLEO-F103RB/Project_NUCLEO-F103RB.dep b/MDK-ARM/NUCLEO-F103RB/Project_NUCLEO-F103RB.dep index d91499d..c614eef 100644 --- a/MDK-ARM/NUCLEO-F103RB/Project_NUCLEO-F103RB.dep +++ b/MDK-ARM/NUCLEO-F103RB/Project_NUCLEO-F103RB.dep @@ -1,50 +1,73 @@ Dependencies for Project 'Project', Target 'NUCLEO-F103RB': (DO NOT MODIFY !) CompilerVersion: 5060750::V5.06 update 6 (build 750)::ARMCC -F (..\Src\Voilier.c)(0x5F83FFA9)(-c --cpu Cortex-M3 -D__EVAL -D__MICROLIB -g -O3 --apcs=interwork --split_sections -I ..\Inc -I ..\LLDrivers\inc -I ..\Services -I ..\MyDrivers --C99 -I.\RTE\_NUCLEO-F103RB -IC:\Users\elies\AppData\Local\Arm\Packs\ARM\CMSIS\5.6.0\CMSIS\Core\Include -IC:\Users\elies\AppData\Local\Arm\Packs\Keil\STM32F1xx_DFP\2.3.0\Device\Include -D__UVISION_VERSION="529" -D_RTE_ -DSTM32F10X_MD -DSTM32F103xB -DUSE_FULL_LL_DRIVER -DHSE_VALUE="8000000U" -o nucleo-f103rb\voilier.o --omf_browse nucleo-f103rb\voilier.crf --depend nucleo-f103rb\voilier.d) -F (..\MyDrivers\MyTimer.c)(0x5F64ABA2)(-c --cpu Cortex-M3 -D__EVAL -D__MICROLIB -g -O3 --apcs=interwork --split_sections -I ..\Inc -I ..\LLDrivers\inc -I ..\Services -I ..\MyDrivers --C99 -I.\RTE\_NUCLEO-F103RB -IC:\Users\elies\AppData\Local\Arm\Packs\ARM\CMSIS\5.6.0\CMSIS\Core\Include -IC:\Users\elies\AppData\Local\Arm\Packs\Keil\STM32F1xx_DFP\2.3.0\Device\Include -D__UVISION_VERSION="529" -D_RTE_ -DSTM32F10X_MD -DSTM32F103xB -DUSE_FULL_LL_DRIVER -DHSE_VALUE="8000000U" -o nucleo-f103rb\mytimer.o --omf_browse nucleo-f103rb\mytimer.crf --depend nucleo-f103rb\mytimer.d) -I (..\Inc\stm32f103xb.h)(0x5D1623CA) +F (..\Src\Voilier.c)(0x5FA03B8B)(-c --cpu Cortex-M3 -D__EVAL -D__MICROLIB -g -O3 --apcs=interwork --split_sections -I ..\Inc -I ..\LLDrivers\inc -I ..\Services -I ..\MyDrivers --C99 -I.\RTE\_NUCLEO-F103RB -IC:\Users\elies\AppData\Local\Arm\Packs\ARM\CMSIS\5.6.0\CMSIS\Core\Include -IC:\Users\elies\AppData\Local\Arm\Packs\Keil\STM32F1xx_DFP\2.3.0\Device\Include -D__UVISION_VERSION="529" -D_RTE_ -DSTM32F10X_MD -DSTM32F103xB -DUSE_FULL_LL_DRIVER -DHSE_VALUE="8000000U" -o nucleo-f103rb\voilier.o --omf_browse nucleo-f103rb\voilier.crf --depend nucleo-f103rb\voilier.d) +F (..\MyDrivers\MyTimer.c)(0x5FA01FEC)(-c --cpu Cortex-M3 -D__EVAL -D__MICROLIB -g -O3 --apcs=interwork --split_sections -I ..\Inc -I ..\LLDrivers\inc -I ..\Services -I ..\MyDrivers --C99 -I.\RTE\_NUCLEO-F103RB -IC:\Users\elies\AppData\Local\Arm\Packs\ARM\CMSIS\5.6.0\CMSIS\Core\Include -IC:\Users\elies\AppData\Local\Arm\Packs\Keil\STM32F1xx_DFP\2.3.0\Device\Include -D__UVISION_VERSION="529" -D_RTE_ -DSTM32F10X_MD -DSTM32F103xB -DUSE_FULL_LL_DRIVER -DHSE_VALUE="8000000U" -o nucleo-f103rb\mytimer.o --omf_browse nucleo-f103rb\mytimer.crf --depend nucleo-f103rb\mytimer.d) +I (..\Inc\stm32f103xb.h)(0x5F8D5414) I (C:\Users\elies\AppData\Local\Arm\Packs\ARM\CMSIS\5.6.0\CMSIS\Core\Include\core_cm3.h)(0x5D25F326) I (F:\Keil\ARM\ARMCC\include\stdint.h)(0x5D9B3488) I (C:\Users\elies\AppData\Local\Arm\Packs\ARM\CMSIS\5.6.0\CMSIS\Core\Include\cmsis_version.h)(0x5D25F326) I (C:\Users\elies\AppData\Local\Arm\Packs\ARM\CMSIS\5.6.0\CMSIS\Core\Include\cmsis_compiler.h)(0x5D25F326) I (C:\Users\elies\AppData\Local\Arm\Packs\ARM\CMSIS\5.6.0\CMSIS\Core\Include\cmsis_armcc.h)(0x5D25F326) -I (..\Inc\system_stm32f1xx.h)(0x5D1623CA) -F (..\Src\Allure.c)(0x5F83F90A)(-c --cpu Cortex-M3 -D__EVAL -D__MICROLIB -g -O3 --apcs=interwork --split_sections -I ..\Inc -I ..\LLDrivers\inc -I ..\Services -I ..\MyDrivers --C99 -I.\RTE\_NUCLEO-F103RB -IC:\Users\elies\AppData\Local\Arm\Packs\ARM\CMSIS\5.6.0\CMSIS\Core\Include -IC:\Users\elies\AppData\Local\Arm\Packs\Keil\STM32F1xx_DFP\2.3.0\Device\Include -D__UVISION_VERSION="529" -D_RTE_ -DSTM32F10X_MD -DSTM32F103xB -DUSE_FULL_LL_DRIVER -DHSE_VALUE="8000000U" -o nucleo-f103rb\allure.o --omf_browse nucleo-f103rb\allure.crf --depend nucleo-f103rb\allure.d) -F (..\Src\AntiCharvirement.c)(0x5F83F91C)(-c --cpu Cortex-M3 -D__EVAL -D__MICROLIB -g -O3 --apcs=interwork --split_sections -I ..\Inc -I ..\LLDrivers\inc -I ..\Services -I ..\MyDrivers --C99 -I.\RTE\_NUCLEO-F103RB -IC:\Users\elies\AppData\Local\Arm\Packs\ARM\CMSIS\5.6.0\CMSIS\Core\Include -IC:\Users\elies\AppData\Local\Arm\Packs\Keil\STM32F1xx_DFP\2.3.0\Device\Include -D__UVISION_VERSION="529" -D_RTE_ -DSTM32F10X_MD -DSTM32F103xB -DUSE_FULL_LL_DRIVER -DHSE_VALUE="8000000U" -o nucleo-f103rb\anticharvirement.o --omf_browse nucleo-f103rb\anticharvirement.crf --depend nucleo-f103rb\anticharvirement.d) -F (..\Src\Batterie.c)(0x5F83F929)(-c --cpu Cortex-M3 -D__EVAL -D__MICROLIB -g -O3 --apcs=interwork --split_sections -I ..\Inc -I ..\LLDrivers\inc -I ..\Services -I ..\MyDrivers --C99 -I.\RTE\_NUCLEO-F103RB -IC:\Users\elies\AppData\Local\Arm\Packs\ARM\CMSIS\5.6.0\CMSIS\Core\Include -IC:\Users\elies\AppData\Local\Arm\Packs\Keil\STM32F1xx_DFP\2.3.0\Device\Include -D__UVISION_VERSION="529" -D_RTE_ -DSTM32F10X_MD -DSTM32F103xB -DUSE_FULL_LL_DRIVER -DHSE_VALUE="8000000U" -o nucleo-f103rb\batterie.o --omf_browse nucleo-f103rb\batterie.crf --depend nucleo-f103rb\batterie.d) -F (..\Src\Gouvernail.c)(0x5F83F934)(-c --cpu Cortex-M3 -D__EVAL -D__MICROLIB -g -O3 --apcs=interwork --split_sections -I ..\Inc -I ..\LLDrivers\inc -I ..\Services -I ..\MyDrivers --C99 -I.\RTE\_NUCLEO-F103RB -IC:\Users\elies\AppData\Local\Arm\Packs\ARM\CMSIS\5.6.0\CMSIS\Core\Include -IC:\Users\elies\AppData\Local\Arm\Packs\Keil\STM32F1xx_DFP\2.3.0\Device\Include -D__UVISION_VERSION="529" -D_RTE_ -DSTM32F10X_MD -DSTM32F103xB -DUSE_FULL_LL_DRIVER -DHSE_VALUE="8000000U" -o nucleo-f103rb\gouvernail.o --omf_browse nucleo-f103rb\gouvernail.crf --depend nucleo-f103rb\gouvernail.d) -F (..\Src\Heure.c)(0x5F83F943)(-c --cpu Cortex-M3 -D__EVAL -D__MICROLIB -g -O3 --apcs=interwork --split_sections -I ..\Inc -I ..\LLDrivers\inc -I ..\Services -I ..\MyDrivers --C99 -I.\RTE\_NUCLEO-F103RB -IC:\Users\elies\AppData\Local\Arm\Packs\ARM\CMSIS\5.6.0\CMSIS\Core\Include -IC:\Users\elies\AppData\Local\Arm\Packs\Keil\STM32F1xx_DFP\2.3.0\Device\Include -D__UVISION_VERSION="529" -D_RTE_ -DSTM32F10X_MD -DSTM32F103xB -DUSE_FULL_LL_DRIVER -DHSE_VALUE="8000000U" -o nucleo-f103rb\heure.o --omf_browse nucleo-f103rb\heure.crf --depend nucleo-f103rb\heure.d) -F (..\Src\Transmission.c)(0x5F83F94E)(-c --cpu Cortex-M3 -D__EVAL -D__MICROLIB -g -O3 --apcs=interwork --split_sections -I ..\Inc -I ..\LLDrivers\inc -I ..\Services -I ..\MyDrivers --C99 -I.\RTE\_NUCLEO-F103RB -IC:\Users\elies\AppData\Local\Arm\Packs\ARM\CMSIS\5.6.0\CMSIS\Core\Include -IC:\Users\elies\AppData\Local\Arm\Packs\Keil\STM32F1xx_DFP\2.3.0\Device\Include -D__UVISION_VERSION="529" -D_RTE_ -DSTM32F10X_MD -DSTM32F103xB -DUSE_FULL_LL_DRIVER -DHSE_VALUE="8000000U" -o nucleo-f103rb\transmission.o --omf_browse nucleo-f103rb\transmission.crf --depend nucleo-f103rb\transmission.d) -F (..\Src\Voile.c)(0x5F83F958)(-c --cpu Cortex-M3 -D__EVAL -D__MICROLIB -g -O3 --apcs=interwork --split_sections -I ..\Inc -I ..\LLDrivers\inc -I ..\Services -I ..\MyDrivers --C99 -I.\RTE\_NUCLEO-F103RB -IC:\Users\elies\AppData\Local\Arm\Packs\ARM\CMSIS\5.6.0\CMSIS\Core\Include -IC:\Users\elies\AppData\Local\Arm\Packs\Keil\STM32F1xx_DFP\2.3.0\Device\Include -D__UVISION_VERSION="529" -D_RTE_ -DSTM32F10X_MD -DSTM32F103xB -DUSE_FULL_LL_DRIVER -DHSE_VALUE="8000000U" -o nucleo-f103rb\voile.o --omf_browse nucleo-f103rb\voile.crf --depend nucleo-f103rb\voile.d) -F (..\LLDrivers\src\stm32f1xx_ll_rcc.c)(0x5D10A076)(-c --cpu Cortex-M3 -D__EVAL -D__MICROLIB -g -O3 --apcs=interwork --split_sections -I ..\Inc -I ..\LLDrivers\inc -I ..\Services -I ..\MyDrivers --C99 -I.\RTE\_NUCLEO-F103RB -IC:\Users\elies\AppData\Local\Arm\Packs\ARM\CMSIS\5.6.0\CMSIS\Core\Include -IC:\Users\elies\AppData\Local\Arm\Packs\Keil\STM32F1xx_DFP\2.3.0\Device\Include -D__UVISION_VERSION="529" -D_RTE_ -DSTM32F10X_MD -DSTM32F103xB -DUSE_FULL_LL_DRIVER -DHSE_VALUE="8000000U" -o nucleo-f103rb\stm32f1xx_ll_rcc.o --omf_browse nucleo-f103rb\stm32f1xx_ll_rcc.crf --depend nucleo-f103rb\stm32f1xx_ll_rcc.d) -I (..\LLDrivers\inc\stm32f1xx_ll_rcc.h)(0x5D10A076) -I (..\Inc\stm32f1xx.h)(0x5D1623CA) -I (..\Inc\stm32f103xb.h)(0x5D1623CA) +I (..\Inc\system_stm32f1xx.h)(0x5F8D5414) +F (..\Src\Allure.c)(0x5F8D5416)(-c --cpu Cortex-M3 -D__EVAL -D__MICROLIB -g -O3 --apcs=interwork --split_sections -I ..\Inc -I ..\LLDrivers\inc -I ..\Services -I ..\MyDrivers --C99 -I.\RTE\_NUCLEO-F103RB -IC:\Users\elies\AppData\Local\Arm\Packs\ARM\CMSIS\5.6.0\CMSIS\Core\Include -IC:\Users\elies\AppData\Local\Arm\Packs\Keil\STM32F1xx_DFP\2.3.0\Device\Include -D__UVISION_VERSION="529" -D_RTE_ -DSTM32F10X_MD -DSTM32F103xB -DUSE_FULL_LL_DRIVER -DHSE_VALUE="8000000U" -o nucleo-f103rb\allure.o --omf_browse nucleo-f103rb\allure.crf --depend nucleo-f103rb\allure.d) +F (..\Src\Batterie.c)(0x5F8D5416)(-c --cpu Cortex-M3 -D__EVAL -D__MICROLIB -g -O3 --apcs=interwork --split_sections -I ..\Inc -I ..\LLDrivers\inc -I ..\Services -I ..\MyDrivers --C99 -I.\RTE\_NUCLEO-F103RB -IC:\Users\elies\AppData\Local\Arm\Packs\ARM\CMSIS\5.6.0\CMSIS\Core\Include -IC:\Users\elies\AppData\Local\Arm\Packs\Keil\STM32F1xx_DFP\2.3.0\Device\Include -D__UVISION_VERSION="529" -D_RTE_ -DSTM32F10X_MD -DSTM32F103xB -DUSE_FULL_LL_DRIVER -DHSE_VALUE="8000000U" -o nucleo-f103rb\batterie.o --omf_browse nucleo-f103rb\batterie.crf --depend nucleo-f103rb\batterie.d) +F (..\Src\Gouvernail.c)(0x5F8D5416)(-c --cpu Cortex-M3 -D__EVAL -D__MICROLIB -g -O3 --apcs=interwork --split_sections -I ..\Inc -I ..\LLDrivers\inc -I ..\Services -I ..\MyDrivers --C99 -I.\RTE\_NUCLEO-F103RB -IC:\Users\elies\AppData\Local\Arm\Packs\ARM\CMSIS\5.6.0\CMSIS\Core\Include -IC:\Users\elies\AppData\Local\Arm\Packs\Keil\STM32F1xx_DFP\2.3.0\Device\Include -D__UVISION_VERSION="529" -D_RTE_ -DSTM32F10X_MD -DSTM32F103xB -DUSE_FULL_LL_DRIVER -DHSE_VALUE="8000000U" -o nucleo-f103rb\gouvernail.o --omf_browse nucleo-f103rb\gouvernail.crf --depend nucleo-f103rb\gouvernail.d) +F (..\Src\Heure.c)(0x5F8D5416)(-c --cpu Cortex-M3 -D__EVAL -D__MICROLIB -g -O3 --apcs=interwork --split_sections -I ..\Inc -I ..\LLDrivers\inc -I ..\Services -I ..\MyDrivers --C99 -I.\RTE\_NUCLEO-F103RB -IC:\Users\elies\AppData\Local\Arm\Packs\ARM\CMSIS\5.6.0\CMSIS\Core\Include -IC:\Users\elies\AppData\Local\Arm\Packs\Keil\STM32F1xx_DFP\2.3.0\Device\Include -D__UVISION_VERSION="529" -D_RTE_ -DSTM32F10X_MD -DSTM32F103xB -DUSE_FULL_LL_DRIVER -DHSE_VALUE="8000000U" -o nucleo-f103rb\heure.o --omf_browse nucleo-f103rb\heure.crf --depend nucleo-f103rb\heure.d) +F (..\Src\Transmission.c)(0x5F8D5416)(-c --cpu Cortex-M3 -D__EVAL -D__MICROLIB -g -O3 --apcs=interwork --split_sections -I ..\Inc -I ..\LLDrivers\inc -I ..\Services -I ..\MyDrivers --C99 -I.\RTE\_NUCLEO-F103RB -IC:\Users\elies\AppData\Local\Arm\Packs\ARM\CMSIS\5.6.0\CMSIS\Core\Include -IC:\Users\elies\AppData\Local\Arm\Packs\Keil\STM32F1xx_DFP\2.3.0\Device\Include -D__UVISION_VERSION="529" -D_RTE_ -DSTM32F10X_MD -DSTM32F103xB -DUSE_FULL_LL_DRIVER -DHSE_VALUE="8000000U" -o nucleo-f103rb\transmission.o --omf_browse nucleo-f103rb\transmission.crf --depend nucleo-f103rb\transmission.d) +F (..\Src\Voile.c)(0x5FA01FEC)(-c --cpu Cortex-M3 -D__EVAL -D__MICROLIB -g -O3 --apcs=interwork --split_sections -I ..\Inc -I ..\LLDrivers\inc -I ..\Services -I ..\MyDrivers --C99 -I.\RTE\_NUCLEO-F103RB -IC:\Users\elies\AppData\Local\Arm\Packs\ARM\CMSIS\5.6.0\CMSIS\Core\Include -IC:\Users\elies\AppData\Local\Arm\Packs\Keil\STM32F1xx_DFP\2.3.0\Device\Include -D__UVISION_VERSION="529" -D_RTE_ -DSTM32F10X_MD -DSTM32F103xB -DUSE_FULL_LL_DRIVER -DHSE_VALUE="8000000U" -o nucleo-f103rb\voile.o --omf_browse nucleo-f103rb\voile.crf --depend nucleo-f103rb\voile.d) +F (..\Src\Allure.h)(0x5F8D5416)() +F (..\Src\AntiChavirement.h)(0x5FA03BA6)() +F (..\Src\Batterie.h)(0x5F8D5416)() +F (..\Src\Gouvernail.h)(0x5F8D5416)() +F (..\Src\Heure.h)(0x5F8D5416)() +F (..\Src\MyTimer.h)(0x5F8D5416)() +F (..\Src\Transmission.h)(0x5F8D5416)() +F (..\Src\Voile.h)(0x5FA01FEC)() +F (..\Src\AntiChavirement.c)(0x5FA03B67)(-c --cpu Cortex-M3 -D__EVAL -D__MICROLIB -g -O3 --apcs=interwork --split_sections -I ..\Inc -I ..\LLDrivers\inc -I ..\Services -I ..\MyDrivers --C99 -I.\RTE\_NUCLEO-F103RB -IC:\Users\elies\AppData\Local\Arm\Packs\ARM\CMSIS\5.6.0\CMSIS\Core\Include -IC:\Users\elies\AppData\Local\Arm\Packs\Keil\STM32F1xx_DFP\2.3.0\Device\Include -D__UVISION_VERSION="529" -D_RTE_ -DSTM32F10X_MD -DSTM32F103xB -DUSE_FULL_LL_DRIVER -DHSE_VALUE="8000000U" -o nucleo-f103rb\antichavirement.o --omf_browse nucleo-f103rb\antichavirement.crf --depend nucleo-f103rb\antichavirement.d) +I (..\Src\AntiChavirement.h)(0x5FA03BA6) +I (..\Inc\stm32f103xb.h)(0x5F8D5414) I (C:\Users\elies\AppData\Local\Arm\Packs\ARM\CMSIS\5.6.0\CMSIS\Core\Include\core_cm3.h)(0x5D25F326) I (F:\Keil\ARM\ARMCC\include\stdint.h)(0x5D9B3488) I (C:\Users\elies\AppData\Local\Arm\Packs\ARM\CMSIS\5.6.0\CMSIS\Core\Include\cmsis_version.h)(0x5D25F326) I (C:\Users\elies\AppData\Local\Arm\Packs\ARM\CMSIS\5.6.0\CMSIS\Core\Include\cmsis_compiler.h)(0x5D25F326) I (C:\Users\elies\AppData\Local\Arm\Packs\ARM\CMSIS\5.6.0\CMSIS\Core\Include\cmsis_armcc.h)(0x5D25F326) -I (..\Inc\system_stm32f1xx.h)(0x5D1623CA) -F (..\LLDrivers\src\stm32f1xx_ll_utils.c)(0x5D10A088)(-c --cpu Cortex-M3 -D__EVAL -D__MICROLIB -g -O3 --apcs=interwork --split_sections -I ..\Inc -I ..\LLDrivers\inc -I ..\Services -I ..\MyDrivers --C99 -I.\RTE\_NUCLEO-F103RB -IC:\Users\elies\AppData\Local\Arm\Packs\ARM\CMSIS\5.6.0\CMSIS\Core\Include -IC:\Users\elies\AppData\Local\Arm\Packs\Keil\STM32F1xx_DFP\2.3.0\Device\Include -D__UVISION_VERSION="529" -D_RTE_ -DSTM32F10X_MD -DSTM32F103xB -DUSE_FULL_LL_DRIVER -DHSE_VALUE="8000000U" -o nucleo-f103rb\stm32f1xx_ll_utils.o --omf_browse nucleo-f103rb\stm32f1xx_ll_utils.crf --depend nucleo-f103rb\stm32f1xx_ll_utils.d) -I (..\LLDrivers\inc\stm32f1xx_ll_rcc.h)(0x5D10A076) -I (..\Inc\stm32f1xx.h)(0x5D1623CA) -I (..\Inc\stm32f103xb.h)(0x5D1623CA) +I (..\Inc\system_stm32f1xx.h)(0x5F8D5414) +I (..\LLDrivers\inc\stm32f1xx_ll_adc.h)(0x5F8D5982) +I (..\Inc\stm32f1xx.h)(0x5F8D5414) +I (..\LLDrivers\inc\stm32f1xx_ll_gpio.h)(0x5F8D5982) +I (..\LLDrivers\inc\stm32f1xx_ll_bus.h)(0x5F8D5982) +I (..\LLDrivers\inc\stm32f1xx_ll_utils.h)(0x5F8D5414) +I (..\LLDrivers\inc\stm32f1xx_ll_system.h)(0x5F8D5414) +I (..\LLDrivers\inc\stm32f1xx_ll_rcc.h)(0x5F8D5414) +F (..\LLDrivers\src\stm32f1xx_ll_rcc.c)(0x5F8D5414)(-c --cpu Cortex-M3 -D__EVAL -D__MICROLIB -g -O3 --apcs=interwork --split_sections -I ..\Inc -I ..\LLDrivers\inc -I ..\Services -I ..\MyDrivers --C99 -I.\RTE\_NUCLEO-F103RB -IC:\Users\elies\AppData\Local\Arm\Packs\ARM\CMSIS\5.6.0\CMSIS\Core\Include -IC:\Users\elies\AppData\Local\Arm\Packs\Keil\STM32F1xx_DFP\2.3.0\Device\Include -D__UVISION_VERSION="529" -D_RTE_ -DSTM32F10X_MD -DSTM32F103xB -DUSE_FULL_LL_DRIVER -DHSE_VALUE="8000000U" -o nucleo-f103rb\stm32f1xx_ll_rcc.o --omf_browse nucleo-f103rb\stm32f1xx_ll_rcc.crf --depend nucleo-f103rb\stm32f1xx_ll_rcc.d) +I (..\LLDrivers\inc\stm32f1xx_ll_rcc.h)(0x5F8D5414) +I (..\Inc\stm32f1xx.h)(0x5F8D5414) +I (..\Inc\stm32f103xb.h)(0x5F8D5414) I (C:\Users\elies\AppData\Local\Arm\Packs\ARM\CMSIS\5.6.0\CMSIS\Core\Include\core_cm3.h)(0x5D25F326) I (F:\Keil\ARM\ARMCC\include\stdint.h)(0x5D9B3488) I (C:\Users\elies\AppData\Local\Arm\Packs\ARM\CMSIS\5.6.0\CMSIS\Core\Include\cmsis_version.h)(0x5D25F326) I (C:\Users\elies\AppData\Local\Arm\Packs\ARM\CMSIS\5.6.0\CMSIS\Core\Include\cmsis_compiler.h)(0x5D25F326) I (C:\Users\elies\AppData\Local\Arm\Packs\ARM\CMSIS\5.6.0\CMSIS\Core\Include\cmsis_armcc.h)(0x5D25F326) -I (..\Inc\system_stm32f1xx.h)(0x5D1623CA) -I (..\LLDrivers\inc\stm32f1xx_ll_utils.h)(0x5D10A088) -I (..\LLDrivers\inc\stm32f1xx_ll_system.h)(0x5D10A06A) -F (../Src/system_stm32f1xx.c)(0x5D0B5E70)(-c --cpu Cortex-M3 -D__EVAL -D__MICROLIB -g -O3 --apcs=interwork --split_sections -I ..\Inc -I ..\LLDrivers\inc -I ..\Services -I ..\MyDrivers --C99 -I.\RTE\_NUCLEO-F103RB -IC:\Users\elies\AppData\Local\Arm\Packs\ARM\CMSIS\5.6.0\CMSIS\Core\Include -IC:\Users\elies\AppData\Local\Arm\Packs\Keil\STM32F1xx_DFP\2.3.0\Device\Include -D__UVISION_VERSION="529" -D_RTE_ -DSTM32F10X_MD -DSTM32F103xB -DUSE_FULL_LL_DRIVER -DHSE_VALUE="8000000U" -o nucleo-f103rb\system_stm32f1xx.o --omf_browse nucleo-f103rb\system_stm32f1xx.crf --depend nucleo-f103rb\system_stm32f1xx.d) -I (..\Inc\stm32f1xx.h)(0x5D1623CA) -I (..\Inc\stm32f103xb.h)(0x5D1623CA) +I (..\Inc\system_stm32f1xx.h)(0x5F8D5414) +F (..\LLDrivers\src\stm32f1xx_ll_utils.c)(0x5F8D5414)(-c --cpu Cortex-M3 -D__EVAL -D__MICROLIB -g -O3 --apcs=interwork --split_sections -I ..\Inc -I ..\LLDrivers\inc -I ..\Services -I ..\MyDrivers --C99 -I.\RTE\_NUCLEO-F103RB -IC:\Users\elies\AppData\Local\Arm\Packs\ARM\CMSIS\5.6.0\CMSIS\Core\Include -IC:\Users\elies\AppData\Local\Arm\Packs\Keil\STM32F1xx_DFP\2.3.0\Device\Include -D__UVISION_VERSION="529" -D_RTE_ -DSTM32F10X_MD -DSTM32F103xB -DUSE_FULL_LL_DRIVER -DHSE_VALUE="8000000U" -o nucleo-f103rb\stm32f1xx_ll_utils.o --omf_browse nucleo-f103rb\stm32f1xx_ll_utils.crf --depend nucleo-f103rb\stm32f1xx_ll_utils.d) +I (..\LLDrivers\inc\stm32f1xx_ll_rcc.h)(0x5F8D5414) +I (..\Inc\stm32f1xx.h)(0x5F8D5414) +I (..\Inc\stm32f103xb.h)(0x5F8D5414) I (C:\Users\elies\AppData\Local\Arm\Packs\ARM\CMSIS\5.6.0\CMSIS\Core\Include\core_cm3.h)(0x5D25F326) I (F:\Keil\ARM\ARMCC\include\stdint.h)(0x5D9B3488) I (C:\Users\elies\AppData\Local\Arm\Packs\ARM\CMSIS\5.6.0\CMSIS\Core\Include\cmsis_version.h)(0x5D25F326) I (C:\Users\elies\AppData\Local\Arm\Packs\ARM\CMSIS\5.6.0\CMSIS\Core\Include\cmsis_compiler.h)(0x5D25F326) I (C:\Users\elies\AppData\Local\Arm\Packs\ARM\CMSIS\5.6.0\CMSIS\Core\Include\cmsis_armcc.h)(0x5D25F326) -I (..\Inc\system_stm32f1xx.h)(0x5D1623CA) -F (startup_stm32f103xb.s)(0x5CFE6264)(--cpu Cortex-M3 --pd "__EVAL SETA 1" -g --apcs=interwork --pd "__MICROLIB SETA 1" -I.\RTE\_NUCLEO-F103RB -IC:\Users\elies\AppData\Local\Arm\Packs\ARM\CMSIS\5.6.0\CMSIS\Core\Include -IC:\Users\elies\AppData\Local\Arm\Packs\Keil\STM32F1xx_DFP\2.3.0\Device\Include --pd "__UVISION_VERSION SETA 529" --pd "_RTE_ SETA 1" --pd "STM32F10X_MD SETA 1" --list startup_stm32f103xb.lst --xref -o nucleo-f103rb\startup_stm32f103xb.o --depend nucleo-f103rb\startup_stm32f103xb.d) +I (..\Inc\system_stm32f1xx.h)(0x5F8D5414) +I (..\LLDrivers\inc\stm32f1xx_ll_utils.h)(0x5F8D5414) +I (..\LLDrivers\inc\stm32f1xx_ll_system.h)(0x5F8D5414) +F (../Src/system_stm32f1xx.c)(0x5F8D5416)(-c --cpu Cortex-M3 -D__EVAL -D__MICROLIB -g -O3 --apcs=interwork --split_sections -I ..\Inc -I ..\LLDrivers\inc -I ..\Services -I ..\MyDrivers --C99 -I.\RTE\_NUCLEO-F103RB -IC:\Users\elies\AppData\Local\Arm\Packs\ARM\CMSIS\5.6.0\CMSIS\Core\Include -IC:\Users\elies\AppData\Local\Arm\Packs\Keil\STM32F1xx_DFP\2.3.0\Device\Include -D__UVISION_VERSION="529" -D_RTE_ -DSTM32F10X_MD -DSTM32F103xB -DUSE_FULL_LL_DRIVER -DHSE_VALUE="8000000U" -o nucleo-f103rb\system_stm32f1xx.o --omf_browse nucleo-f103rb\system_stm32f1xx.crf --depend nucleo-f103rb\system_stm32f1xx.d) +I (..\Inc\stm32f1xx.h)(0x5F8D5414) +I (..\Inc\stm32f103xb.h)(0x5F8D5414) +I (C:\Users\elies\AppData\Local\Arm\Packs\ARM\CMSIS\5.6.0\CMSIS\Core\Include\core_cm3.h)(0x5D25F326) +I (F:\Keil\ARM\ARMCC\include\stdint.h)(0x5D9B3488) +I (C:\Users\elies\AppData\Local\Arm\Packs\ARM\CMSIS\5.6.0\CMSIS\Core\Include\cmsis_version.h)(0x5D25F326) +I (C:\Users\elies\AppData\Local\Arm\Packs\ARM\CMSIS\5.6.0\CMSIS\Core\Include\cmsis_compiler.h)(0x5D25F326) +I (C:\Users\elies\AppData\Local\Arm\Packs\ARM\CMSIS\5.6.0\CMSIS\Core\Include\cmsis_armcc.h)(0x5D25F326) +I (..\Inc\system_stm32f1xx.h)(0x5F8D5414) +F (startup_stm32f103xb.s)(0x5F8D5416)(--cpu Cortex-M3 --pd "__EVAL SETA 1" -g --apcs=interwork --pd "__MICROLIB SETA 1" -I.\RTE\_NUCLEO-F103RB -IC:\Users\elies\AppData\Local\Arm\Packs\ARM\CMSIS\5.6.0\CMSIS\Core\Include -IC:\Users\elies\AppData\Local\Arm\Packs\Keil\STM32F1xx_DFP\2.3.0\Device\Include --pd "__UVISION_VERSION SETA 529" --pd "_RTE_ SETA 1" --pd "STM32F10X_MD SETA 1" --list startup_stm32f103xb.lst --xref -o nucleo-f103rb\startup_stm32f103xb.o --depend nucleo-f103rb\startup_stm32f103xb.d) diff --git a/MDK-ARM/NUCLEO-F103RB/Project_Simulateur.dep b/MDK-ARM/NUCLEO-F103RB/Project_Simulateur.dep index 4528a00..5d6b9c1 100644 --- a/MDK-ARM/NUCLEO-F103RB/Project_Simulateur.dep +++ b/MDK-ARM/NUCLEO-F103RB/Project_Simulateur.dep @@ -1,67 +1,73 @@ Dependencies for Project 'Project', Target 'Simulateur': (DO NOT MODIFY !) CompilerVersion: 5060750::V5.06 update 6 (build 750)::ARMCC -F (../Src/main.c)(0x5F6E0735)(-c --cpu Cortex-M3 -D__EVAL -D__MICROLIB -g -O3 --apcs=interwork --split_sections -I ..\Inc -I ..\LLDrivers\inc -I ..\Services -I ..\MyDrivers --C99 -I.\RTE\_Simulateur -IC:\Users\elies\AppData\Local\Arm\Packs\ARM\CMSIS\5.6.0\CMSIS\Core\Include -IC:\Users\elies\AppData\Local\Arm\Packs\Keil\STM32F1xx_DFP\2.3.0\Device\Include -D__UVISION_VERSION="529" -D_RTE_ -DSTM32F10X_MD -DSTM32F103xB -DUSE_FULL_LL_DRIVER -DHSE_VALUE="8000000U" -o nucleo-f103rb\main.o --omf_browse nucleo-f103rb\main.crf --depend nucleo-f103rb\main.d) -I (..\LLDrivers\inc\stm32f1xx_ll_rcc.h)(0x5D10A076) -I (..\Inc\stm32f1xx.h)(0x5D1623CA) -I (..\Inc\stm32f103xb.h)(0x5D1623CA) +F (..\Src\Voilier.c)(0x5FA03B8B)(-c --cpu Cortex-M3 -D__EVAL -D__MICROLIB -g -O3 --apcs=interwork --split_sections -I ..\Inc -I ..\LLDrivers\inc -I ..\Services -I ..\MyDrivers --C99 -I.\RTE\_Simulateur -IC:\Users\elies\AppData\Local\Arm\Packs\ARM\CMSIS\5.6.0\CMSIS\Core\Include -IC:\Users\elies\AppData\Local\Arm\Packs\Keil\STM32F1xx_DFP\2.3.0\Device\Include -D__UVISION_VERSION="529" -D_RTE_ -DSTM32F10X_MD -DSTM32F103xB -DUSE_FULL_LL_DRIVER -DHSE_VALUE="8000000U" -o nucleo-f103rb\voilier.o --omf_browse nucleo-f103rb\voilier.crf --depend nucleo-f103rb\voilier.d) +F (..\MyDrivers\MyTimer.c)(0x5FA01FEC)(-c --cpu Cortex-M3 -D__EVAL -D__MICROLIB -g -O3 --apcs=interwork --split_sections -I ..\Inc -I ..\LLDrivers\inc -I ..\Services -I ..\MyDrivers --C99 -I.\RTE\_Simulateur -IC:\Users\elies\AppData\Local\Arm\Packs\ARM\CMSIS\5.6.0\CMSIS\Core\Include -IC:\Users\elies\AppData\Local\Arm\Packs\Keil\STM32F1xx_DFP\2.3.0\Device\Include -D__UVISION_VERSION="529" -D_RTE_ -DSTM32F10X_MD -DSTM32F103xB -DUSE_FULL_LL_DRIVER -DHSE_VALUE="8000000U" -o nucleo-f103rb\mytimer.o --omf_browse nucleo-f103rb\mytimer.crf --depend nucleo-f103rb\mytimer.d) +I (..\Inc\stm32f103xb.h)(0x5F8D5414) I (C:\Users\elies\AppData\Local\Arm\Packs\ARM\CMSIS\5.6.0\CMSIS\Core\Include\core_cm3.h)(0x5D25F326) I (F:\Keil\ARM\ARMCC\include\stdint.h)(0x5D9B3488) I (C:\Users\elies\AppData\Local\Arm\Packs\ARM\CMSIS\5.6.0\CMSIS\Core\Include\cmsis_version.h)(0x5D25F326) I (C:\Users\elies\AppData\Local\Arm\Packs\ARM\CMSIS\5.6.0\CMSIS\Core\Include\cmsis_compiler.h)(0x5D25F326) I (C:\Users\elies\AppData\Local\Arm\Packs\ARM\CMSIS\5.6.0\CMSIS\Core\Include\cmsis_armcc.h)(0x5D25F326) -I (..\Inc\system_stm32f1xx.h)(0x5D1623CA) -I (..\LLDrivers\inc\stm32f1xx_ll_utils.h)(0x5D10A088) -I (..\LLDrivers\inc\stm32f1xx_ll_system.h)(0x5D10A06A) -I (..\Services\Chrono.h)(0x5F64A7AD) -I (..\MyDrivers\MyTimer.h)(0x5F649B45) -F (..\Services\Chrono.c)(0x5F64B102)(-c --cpu Cortex-M3 -D__EVAL -D__MICROLIB -g -O3 --apcs=interwork --split_sections -I ..\Inc -I ..\LLDrivers\inc -I ..\Services -I ..\MyDrivers --C99 -I.\RTE\_Simulateur -IC:\Users\elies\AppData\Local\Arm\Packs\ARM\CMSIS\5.6.0\CMSIS\Core\Include -IC:\Users\elies\AppData\Local\Arm\Packs\Keil\STM32F1xx_DFP\2.3.0\Device\Include -D__UVISION_VERSION="529" -D_RTE_ -DSTM32F10X_MD -DSTM32F103xB -DUSE_FULL_LL_DRIVER -DHSE_VALUE="8000000U" -o nucleo-f103rb\chrono.o --omf_browse nucleo-f103rb\chrono.crf --depend nucleo-f103rb\chrono.d) -I (..\Services\Chrono.h)(0x5F64A7AD) -I (..\Inc\stm32f103xb.h)(0x5D1623CA) +I (..\Inc\system_stm32f1xx.h)(0x5F8D5414) +F (..\Src\Allure.c)(0x5F8D5416)(-c --cpu Cortex-M3 -D__EVAL -D__MICROLIB -g -O3 --apcs=interwork --split_sections -I ..\Inc -I ..\LLDrivers\inc -I ..\Services -I ..\MyDrivers --C99 -I.\RTE\_Simulateur -IC:\Users\elies\AppData\Local\Arm\Packs\ARM\CMSIS\5.6.0\CMSIS\Core\Include -IC:\Users\elies\AppData\Local\Arm\Packs\Keil\STM32F1xx_DFP\2.3.0\Device\Include -D__UVISION_VERSION="529" -D_RTE_ -DSTM32F10X_MD -DSTM32F103xB -DUSE_FULL_LL_DRIVER -DHSE_VALUE="8000000U" -o nucleo-f103rb\allure.o --omf_browse nucleo-f103rb\allure.crf --depend nucleo-f103rb\allure.d) +F (..\Src\Batterie.c)(0x5F8D5416)(-c --cpu Cortex-M3 -D__EVAL -D__MICROLIB -g -O3 --apcs=interwork --split_sections -I ..\Inc -I ..\LLDrivers\inc -I ..\Services -I ..\MyDrivers --C99 -I.\RTE\_Simulateur -IC:\Users\elies\AppData\Local\Arm\Packs\ARM\CMSIS\5.6.0\CMSIS\Core\Include -IC:\Users\elies\AppData\Local\Arm\Packs\Keil\STM32F1xx_DFP\2.3.0\Device\Include -D__UVISION_VERSION="529" -D_RTE_ -DSTM32F10X_MD -DSTM32F103xB -DUSE_FULL_LL_DRIVER -DHSE_VALUE="8000000U" -o nucleo-f103rb\batterie.o --omf_browse nucleo-f103rb\batterie.crf --depend nucleo-f103rb\batterie.d) +F (..\Src\Gouvernail.c)(0x5F8D5416)(-c --cpu Cortex-M3 -D__EVAL -D__MICROLIB -g -O3 --apcs=interwork --split_sections -I ..\Inc -I ..\LLDrivers\inc -I ..\Services -I ..\MyDrivers --C99 -I.\RTE\_Simulateur -IC:\Users\elies\AppData\Local\Arm\Packs\ARM\CMSIS\5.6.0\CMSIS\Core\Include -IC:\Users\elies\AppData\Local\Arm\Packs\Keil\STM32F1xx_DFP\2.3.0\Device\Include -D__UVISION_VERSION="529" -D_RTE_ -DSTM32F10X_MD -DSTM32F103xB -DUSE_FULL_LL_DRIVER -DHSE_VALUE="8000000U" -o nucleo-f103rb\gouvernail.o --omf_browse nucleo-f103rb\gouvernail.crf --depend nucleo-f103rb\gouvernail.d) +F (..\Src\Heure.c)(0x5F8D5416)(-c --cpu Cortex-M3 -D__EVAL -D__MICROLIB -g -O3 --apcs=interwork --split_sections -I ..\Inc -I ..\LLDrivers\inc -I ..\Services -I ..\MyDrivers --C99 -I.\RTE\_Simulateur -IC:\Users\elies\AppData\Local\Arm\Packs\ARM\CMSIS\5.6.0\CMSIS\Core\Include -IC:\Users\elies\AppData\Local\Arm\Packs\Keil\STM32F1xx_DFP\2.3.0\Device\Include -D__UVISION_VERSION="529" -D_RTE_ -DSTM32F10X_MD -DSTM32F103xB -DUSE_FULL_LL_DRIVER -DHSE_VALUE="8000000U" -o nucleo-f103rb\heure.o --omf_browse nucleo-f103rb\heure.crf --depend nucleo-f103rb\heure.d) +F (..\Src\Transmission.c)(0x5F8D5416)(-c --cpu Cortex-M3 -D__EVAL -D__MICROLIB -g -O3 --apcs=interwork --split_sections -I ..\Inc -I ..\LLDrivers\inc -I ..\Services -I ..\MyDrivers --C99 -I.\RTE\_Simulateur -IC:\Users\elies\AppData\Local\Arm\Packs\ARM\CMSIS\5.6.0\CMSIS\Core\Include -IC:\Users\elies\AppData\Local\Arm\Packs\Keil\STM32F1xx_DFP\2.3.0\Device\Include -D__UVISION_VERSION="529" -D_RTE_ -DSTM32F10X_MD -DSTM32F103xB -DUSE_FULL_LL_DRIVER -DHSE_VALUE="8000000U" -o nucleo-f103rb\transmission.o --omf_browse nucleo-f103rb\transmission.crf --depend nucleo-f103rb\transmission.d) +F (..\Src\Voile.c)(0x5FA01FEC)(-c --cpu Cortex-M3 -D__EVAL -D__MICROLIB -g -O3 --apcs=interwork --split_sections -I ..\Inc -I ..\LLDrivers\inc -I ..\Services -I ..\MyDrivers --C99 -I.\RTE\_Simulateur -IC:\Users\elies\AppData\Local\Arm\Packs\ARM\CMSIS\5.6.0\CMSIS\Core\Include -IC:\Users\elies\AppData\Local\Arm\Packs\Keil\STM32F1xx_DFP\2.3.0\Device\Include -D__UVISION_VERSION="529" -D_RTE_ -DSTM32F10X_MD -DSTM32F103xB -DUSE_FULL_LL_DRIVER -DHSE_VALUE="8000000U" -o nucleo-f103rb\voile.o --omf_browse nucleo-f103rb\voile.crf --depend nucleo-f103rb\voile.d) +F (..\Src\Allure.h)(0x5F8D5416)() +F (..\Src\AntiChavirement.h)(0x5FA03BA6)() +F (..\Src\Batterie.h)(0x5F8D5416)() +F (..\Src\Gouvernail.h)(0x5F8D5416)() +F (..\Src\Heure.h)(0x5F8D5416)() +F (..\Src\MyTimer.h)(0x5F8D5416)() +F (..\Src\Transmission.h)(0x5F8D5416)() +F (..\Src\Voile.h)(0x5FA01FEC)() +F (..\Src\AntiChavirement.c)(0x5FA03DFD)(-c --cpu Cortex-M3 -D__EVAL -D__MICROLIB -g -O3 --apcs=interwork --split_sections -I ..\Inc -I ..\LLDrivers\inc -I ..\Services -I ..\MyDrivers --C99 -I.\RTE\_Simulateur -IC:\Users\elies\AppData\Local\Arm\Packs\ARM\CMSIS\5.6.0\CMSIS\Core\Include -IC:\Users\elies\AppData\Local\Arm\Packs\Keil\STM32F1xx_DFP\2.3.0\Device\Include -D__UVISION_VERSION="529" -D_RTE_ -DSTM32F10X_MD -DSTM32F103xB -DUSE_FULL_LL_DRIVER -DHSE_VALUE="8000000U" -o nucleo-f103rb\antichavirement.o --omf_browse nucleo-f103rb\antichavirement.crf --depend nucleo-f103rb\antichavirement.d) +I (..\Src\AntiChavirement.h)(0x5FA03BA6) +I (..\Inc\stm32f103xb.h)(0x5F8D5414) I (C:\Users\elies\AppData\Local\Arm\Packs\ARM\CMSIS\5.6.0\CMSIS\Core\Include\core_cm3.h)(0x5D25F326) I (F:\Keil\ARM\ARMCC\include\stdint.h)(0x5D9B3488) I (C:\Users\elies\AppData\Local\Arm\Packs\ARM\CMSIS\5.6.0\CMSIS\Core\Include\cmsis_version.h)(0x5D25F326) I (C:\Users\elies\AppData\Local\Arm\Packs\ARM\CMSIS\5.6.0\CMSIS\Core\Include\cmsis_compiler.h)(0x5D25F326) I (C:\Users\elies\AppData\Local\Arm\Packs\ARM\CMSIS\5.6.0\CMSIS\Core\Include\cmsis_armcc.h)(0x5D25F326) -I (..\Inc\system_stm32f1xx.h)(0x5D1623CA) -I (..\MyDrivers\MyTimer.h)(0x5F649B45) -F (..\MyDrivers\MyTimer.c)(0x5F64ABA2)(-c --cpu Cortex-M3 -D__EVAL -D__MICROLIB -g -O3 --apcs=interwork --split_sections -I ..\Inc -I ..\LLDrivers\inc -I ..\Services -I ..\MyDrivers --C99 -I.\RTE\_Simulateur -IC:\Users\elies\AppData\Local\Arm\Packs\ARM\CMSIS\5.6.0\CMSIS\Core\Include -IC:\Users\elies\AppData\Local\Arm\Packs\Keil\STM32F1xx_DFP\2.3.0\Device\Include -D__UVISION_VERSION="529" -D_RTE_ -DSTM32F10X_MD -DSTM32F103xB -DUSE_FULL_LL_DRIVER -DHSE_VALUE="8000000U" -o nucleo-f103rb\mytimer.o --omf_browse nucleo-f103rb\mytimer.crf --depend nucleo-f103rb\mytimer.d) -I (..\Inc\stm32f103xb.h)(0x5D1623CA) +I (..\Inc\system_stm32f1xx.h)(0x5F8D5414) +I (..\LLDrivers\inc\stm32f1xx_ll_adc.h)(0x5F8D5982) +I (..\Inc\stm32f1xx.h)(0x5F8D5414) +I (..\LLDrivers\inc\stm32f1xx_ll_gpio.h)(0x5F8D5982) +I (..\LLDrivers\inc\stm32f1xx_ll_bus.h)(0x5F8D5982) +I (..\LLDrivers\inc\stm32f1xx_ll_utils.h)(0x5F8D5414) +I (..\LLDrivers\inc\stm32f1xx_ll_system.h)(0x5F8D5414) +I (..\LLDrivers\inc\stm32f1xx_ll_rcc.h)(0x5F8D5414) +F (..\LLDrivers\src\stm32f1xx_ll_rcc.c)(0x5F8D5414)(-c --cpu Cortex-M3 -D__EVAL -D__MICROLIB -g -O3 --apcs=interwork --split_sections -I ..\Inc -I ..\LLDrivers\inc -I ..\Services -I ..\MyDrivers --C99 -I.\RTE\_Simulateur -IC:\Users\elies\AppData\Local\Arm\Packs\ARM\CMSIS\5.6.0\CMSIS\Core\Include -IC:\Users\elies\AppData\Local\Arm\Packs\Keil\STM32F1xx_DFP\2.3.0\Device\Include -D__UVISION_VERSION="529" -D_RTE_ -DSTM32F10X_MD -DSTM32F103xB -DUSE_FULL_LL_DRIVER -DHSE_VALUE="8000000U" -o nucleo-f103rb\stm32f1xx_ll_rcc.o --omf_browse nucleo-f103rb\stm32f1xx_ll_rcc.crf --depend nucleo-f103rb\stm32f1xx_ll_rcc.d) +I (..\LLDrivers\inc\stm32f1xx_ll_rcc.h)(0x5F8D5414) +I (..\Inc\stm32f1xx.h)(0x5F8D5414) +I (..\Inc\stm32f103xb.h)(0x5F8D5414) I (C:\Users\elies\AppData\Local\Arm\Packs\ARM\CMSIS\5.6.0\CMSIS\Core\Include\core_cm3.h)(0x5D25F326) I (F:\Keil\ARM\ARMCC\include\stdint.h)(0x5D9B3488) I (C:\Users\elies\AppData\Local\Arm\Packs\ARM\CMSIS\5.6.0\CMSIS\Core\Include\cmsis_version.h)(0x5D25F326) I (C:\Users\elies\AppData\Local\Arm\Packs\ARM\CMSIS\5.6.0\CMSIS\Core\Include\cmsis_compiler.h)(0x5D25F326) I (C:\Users\elies\AppData\Local\Arm\Packs\ARM\CMSIS\5.6.0\CMSIS\Core\Include\cmsis_armcc.h)(0x5D25F326) -I (..\Inc\system_stm32f1xx.h)(0x5D1623CA) -F (..\LLDrivers\src\stm32f1xx_ll_rcc.c)(0x5D10A076)(-c --cpu Cortex-M3 -D__EVAL -D__MICROLIB -g -O3 --apcs=interwork --split_sections -I ..\Inc -I ..\LLDrivers\inc -I ..\Services -I ..\MyDrivers --C99 -I.\RTE\_Simulateur -IC:\Users\elies\AppData\Local\Arm\Packs\ARM\CMSIS\5.6.0\CMSIS\Core\Include -IC:\Users\elies\AppData\Local\Arm\Packs\Keil\STM32F1xx_DFP\2.3.0\Device\Include -D__UVISION_VERSION="529" -D_RTE_ -DSTM32F10X_MD -DSTM32F103xB -DUSE_FULL_LL_DRIVER -DHSE_VALUE="8000000U" -o nucleo-f103rb\stm32f1xx_ll_rcc.o --omf_browse nucleo-f103rb\stm32f1xx_ll_rcc.crf --depend nucleo-f103rb\stm32f1xx_ll_rcc.d) -I (..\LLDrivers\inc\stm32f1xx_ll_rcc.h)(0x5D10A076) -I (..\Inc\stm32f1xx.h)(0x5D1623CA) -I (..\Inc\stm32f103xb.h)(0x5D1623CA) +I (..\Inc\system_stm32f1xx.h)(0x5F8D5414) +F (..\LLDrivers\src\stm32f1xx_ll_utils.c)(0x5F8D5414)(-c --cpu Cortex-M3 -D__EVAL -D__MICROLIB -g -O3 --apcs=interwork --split_sections -I ..\Inc -I ..\LLDrivers\inc -I ..\Services -I ..\MyDrivers --C99 -I.\RTE\_Simulateur -IC:\Users\elies\AppData\Local\Arm\Packs\ARM\CMSIS\5.6.0\CMSIS\Core\Include -IC:\Users\elies\AppData\Local\Arm\Packs\Keil\STM32F1xx_DFP\2.3.0\Device\Include -D__UVISION_VERSION="529" -D_RTE_ -DSTM32F10X_MD -DSTM32F103xB -DUSE_FULL_LL_DRIVER -DHSE_VALUE="8000000U" -o nucleo-f103rb\stm32f1xx_ll_utils.o --omf_browse nucleo-f103rb\stm32f1xx_ll_utils.crf --depend nucleo-f103rb\stm32f1xx_ll_utils.d) +I (..\LLDrivers\inc\stm32f1xx_ll_rcc.h)(0x5F8D5414) +I (..\Inc\stm32f1xx.h)(0x5F8D5414) +I (..\Inc\stm32f103xb.h)(0x5F8D5414) I (C:\Users\elies\AppData\Local\Arm\Packs\ARM\CMSIS\5.6.0\CMSIS\Core\Include\core_cm3.h)(0x5D25F326) I (F:\Keil\ARM\ARMCC\include\stdint.h)(0x5D9B3488) I (C:\Users\elies\AppData\Local\Arm\Packs\ARM\CMSIS\5.6.0\CMSIS\Core\Include\cmsis_version.h)(0x5D25F326) I (C:\Users\elies\AppData\Local\Arm\Packs\ARM\CMSIS\5.6.0\CMSIS\Core\Include\cmsis_compiler.h)(0x5D25F326) I (C:\Users\elies\AppData\Local\Arm\Packs\ARM\CMSIS\5.6.0\CMSIS\Core\Include\cmsis_armcc.h)(0x5D25F326) -I (..\Inc\system_stm32f1xx.h)(0x5D1623CA) -F (..\LLDrivers\src\stm32f1xx_ll_utils.c)(0x5D10A088)(-c --cpu Cortex-M3 -D__EVAL -D__MICROLIB -g -O3 --apcs=interwork --split_sections -I ..\Inc -I ..\LLDrivers\inc -I ..\Services -I ..\MyDrivers --C99 -I.\RTE\_Simulateur -IC:\Users\elies\AppData\Local\Arm\Packs\ARM\CMSIS\5.6.0\CMSIS\Core\Include -IC:\Users\elies\AppData\Local\Arm\Packs\Keil\STM32F1xx_DFP\2.3.0\Device\Include -D__UVISION_VERSION="529" -D_RTE_ -DSTM32F10X_MD -DSTM32F103xB -DUSE_FULL_LL_DRIVER -DHSE_VALUE="8000000U" -o nucleo-f103rb\stm32f1xx_ll_utils.o --omf_browse nucleo-f103rb\stm32f1xx_ll_utils.crf --depend nucleo-f103rb\stm32f1xx_ll_utils.d) -I (..\LLDrivers\inc\stm32f1xx_ll_rcc.h)(0x5D10A076) -I (..\Inc\stm32f1xx.h)(0x5D1623CA) -I (..\Inc\stm32f103xb.h)(0x5D1623CA) +I (..\Inc\system_stm32f1xx.h)(0x5F8D5414) +I (..\LLDrivers\inc\stm32f1xx_ll_utils.h)(0x5F8D5414) +I (..\LLDrivers\inc\stm32f1xx_ll_system.h)(0x5F8D5414) +F (../Src/system_stm32f1xx.c)(0x5F8D5416)(-c --cpu Cortex-M3 -D__EVAL -D__MICROLIB -g -O3 --apcs=interwork --split_sections -I ..\Inc -I ..\LLDrivers\inc -I ..\Services -I ..\MyDrivers --C99 -I.\RTE\_Simulateur -IC:\Users\elies\AppData\Local\Arm\Packs\ARM\CMSIS\5.6.0\CMSIS\Core\Include -IC:\Users\elies\AppData\Local\Arm\Packs\Keil\STM32F1xx_DFP\2.3.0\Device\Include -D__UVISION_VERSION="529" -D_RTE_ -DSTM32F10X_MD -DSTM32F103xB -DUSE_FULL_LL_DRIVER -DHSE_VALUE="8000000U" -o nucleo-f103rb\system_stm32f1xx.o --omf_browse nucleo-f103rb\system_stm32f1xx.crf --depend nucleo-f103rb\system_stm32f1xx.d) +I (..\Inc\stm32f1xx.h)(0x5F8D5414) +I (..\Inc\stm32f103xb.h)(0x5F8D5414) I (C:\Users\elies\AppData\Local\Arm\Packs\ARM\CMSIS\5.6.0\CMSIS\Core\Include\core_cm3.h)(0x5D25F326) I (F:\Keil\ARM\ARMCC\include\stdint.h)(0x5D9B3488) I (C:\Users\elies\AppData\Local\Arm\Packs\ARM\CMSIS\5.6.0\CMSIS\Core\Include\cmsis_version.h)(0x5D25F326) I (C:\Users\elies\AppData\Local\Arm\Packs\ARM\CMSIS\5.6.0\CMSIS\Core\Include\cmsis_compiler.h)(0x5D25F326) I (C:\Users\elies\AppData\Local\Arm\Packs\ARM\CMSIS\5.6.0\CMSIS\Core\Include\cmsis_armcc.h)(0x5D25F326) -I (..\Inc\system_stm32f1xx.h)(0x5D1623CA) -I (..\LLDrivers\inc\stm32f1xx_ll_utils.h)(0x5D10A088) -I (..\LLDrivers\inc\stm32f1xx_ll_system.h)(0x5D10A06A) -F (../readme.txt)(0x5D73DDE0)() -F (../Src/system_stm32f1xx.c)(0x5D0B5E70)(-c --cpu Cortex-M3 -D__EVAL -D__MICROLIB -g -O3 --apcs=interwork --split_sections -I ..\Inc -I ..\LLDrivers\inc -I ..\Services -I ..\MyDrivers --C99 -I.\RTE\_Simulateur -IC:\Users\elies\AppData\Local\Arm\Packs\ARM\CMSIS\5.6.0\CMSIS\Core\Include -IC:\Users\elies\AppData\Local\Arm\Packs\Keil\STM32F1xx_DFP\2.3.0\Device\Include -D__UVISION_VERSION="529" -D_RTE_ -DSTM32F10X_MD -DSTM32F103xB -DUSE_FULL_LL_DRIVER -DHSE_VALUE="8000000U" -o nucleo-f103rb\system_stm32f1xx.o --omf_browse nucleo-f103rb\system_stm32f1xx.crf --depend nucleo-f103rb\system_stm32f1xx.d) -I (..\Inc\stm32f1xx.h)(0x5D1623CA) -I (..\Inc\stm32f103xb.h)(0x5D1623CA) -I (C:\Users\elies\AppData\Local\Arm\Packs\ARM\CMSIS\5.6.0\CMSIS\Core\Include\core_cm3.h)(0x5D25F326) -I (F:\Keil\ARM\ARMCC\include\stdint.h)(0x5D9B3488) -I (C:\Users\elies\AppData\Local\Arm\Packs\ARM\CMSIS\5.6.0\CMSIS\Core\Include\cmsis_version.h)(0x5D25F326) -I (C:\Users\elies\AppData\Local\Arm\Packs\ARM\CMSIS\5.6.0\CMSIS\Core\Include\cmsis_compiler.h)(0x5D25F326) -I (C:\Users\elies\AppData\Local\Arm\Packs\ARM\CMSIS\5.6.0\CMSIS\Core\Include\cmsis_armcc.h)(0x5D25F326) -I (..\Inc\system_stm32f1xx.h)(0x5D1623CA) -F (startup_stm32f103xb.s)(0x5CFE6264)(--cpu Cortex-M3 --pd "__EVAL SETA 1" -g --apcs=interwork --pd "__MICROLIB SETA 1" -I.\RTE\_Simulateur -IC:\Users\elies\AppData\Local\Arm\Packs\ARM\CMSIS\5.6.0\CMSIS\Core\Include -IC:\Users\elies\AppData\Local\Arm\Packs\Keil\STM32F1xx_DFP\2.3.0\Device\Include --pd "__UVISION_VERSION SETA 529" --pd "_RTE_ SETA 1" --pd "STM32F10X_MD SETA 1" --list startup_stm32f103xb.lst --xref -o nucleo-f103rb\startup_stm32f103xb.o --depend nucleo-f103rb\startup_stm32f103xb.d) +I (..\Inc\system_stm32f1xx.h)(0x5F8D5414) +F (startup_stm32f103xb.s)(0x5F8D5416)(--cpu Cortex-M3 --pd "__EVAL SETA 1" -g --apcs=interwork --pd "__MICROLIB SETA 1" -I.\RTE\_Simulateur -IC:\Users\elies\AppData\Local\Arm\Packs\ARM\CMSIS\5.6.0\CMSIS\Core\Include -IC:\Users\elies\AppData\Local\Arm\Packs\Keil\STM32F1xx_DFP\2.3.0\Device\Include --pd "__UVISION_VERSION SETA 529" --pd "_RTE_ SETA 1" --pd "STM32F10X_MD SETA 1" --list startup_stm32f103xb.lst --xref -o nucleo-f103rb\startup_stm32f103xb.o --depend nucleo-f103rb\startup_stm32f103xb.d) diff --git a/MDK-ARM/NUCLEO-F103RB/allure.o b/MDK-ARM/NUCLEO-F103RB/allure.o index f9977c03141dcdbf411d58bf0f40faf7887816f2..3b1e691273d1dbe43d791fd06847c6b5efd9de1f 100644 GIT binary patch delta 508 zcmZosZBU({z*wNgAGt@IanOXfdYqlKn4?x z$578WxlusG8zG>+1t_;4Xe9#}!xb_VLz$DH5+-03%m@V_K4T0s&^+mSkgY7u2ssY0 zt5`S~1cBlV3>*v$oZBG%L(COdB8qK)uEguW~c+LWF>1 z0}u-^u+%d!7{J9CIFx~GW(En6wVV)PKBz3J^S66|YyrzjBD8~9P=!!ap~1=cAFfIe Vtcw{cp#XNRK18+vv+sE5yHU)9ep`@?*+d)zVE`B8bJ@}N1ozDqi3 zlA6@CpimSSgVVeyl9uWAOx82q@>iR%)X^;3I0ymy@J`Q%di{&n$H1eb6r-d=VcsMI zUxFlvhTvz%2_CHCdtfS!rhLzp!k!~O2-%B`r?J}#TnV$VDde#TSaY-73@ioINZ^=R zK)f%-!tYLiih?CfTo(WtUsQ{+A{5;}w^MgR1dUB#TQ57wdS@^4{MfK68&#pc!AApI e6~pLHz$%P4sbN6#bK)eXk_-a3oLp40EdB>?sUvLw diff --git a/MDK-ARM/NUCLEO-F103RB/batterie.o b/MDK-ARM/NUCLEO-F103RB/batterie.o index c9f677ecf413729fc4cb0a8d45527c91c5b2347d..bdaa683843b42842219462734a13d488f4f7c61a 100644 GIT binary patch delta 545 zcmY*UJxc>Y5Pf?W!>OnVq=;a#iG+aF<*o_QA{L@4VxxtHa9CIfiXz7L1PhxKVl1rG zLP#C1&{8XZihskI+1-l{?7TN0Z+7OX@z}W6YB;HFtGT_Cv%%@n)$!nR^rhCa7uED? zyXV(hM>-0lunvVJ+3)qYl0?^A?M^G|#BuiHhlQ*fyawJFBVDefC;;*ZfDLx)jy>tw zo`J3qa-JhoG)){!@dNmlqRBUHqi+#N+eFn=mAcA@y!WE*0}d3Hs7GT??CNfv1IA}~vlJEv;Cl|Q@O u#__6<+#T@B%Otesv=s7PeIO!O0_Yx|OzgjrTsAE+T-e$UuxV*NkjlT3Jtfxw delta 514 zcmbQDIzx4W0^@{@itdcOexc4juKv1ih6ct#PLuaBYHgmwsLrJ5pIo9~Xry3dU}T`g zz{n6EAL8lj8XvEqWMFA!U~FYzx%mmR0n27#j)fe$EDR6;q?bdPK*|QeWB{4~1dNOh z3|*5a3dq$n0eSNv@*pMz>|i*>z@QFM3Kjutg2*v4OoFNcQcXb2%wT~K0I`6InSm5b z43yIhqQL-S%q|!gNKc+4z){Zz65#L@WMGhhNO1ru7KmR!Oa=}HYaj{Hy@Wx53CTG? zaaNEL2;gOCfCT{q+&jh$3`d~yYyu423=A$19v{eHAOPB{%mC5`vYits#0(4>i8MZt wFTj2PDPq{pz$gi3AO#D^qrwbE5MeOM4|SR#g8cYvM@h@f(HUz0a_s_8UO$Q diff --git a/MDK-ARM/NUCLEO-F103RB/gouvernail.o b/MDK-ARM/NUCLEO-F103RB/gouvernail.o index df498a0362bdc7f5dcee742a1a0b5a3eb578ade3..da45ed96a9b71f92f7cd9d6db0b021643782d648 100644 GIT binary patch delta 539 zcmZ3WI!ASa0^^j8ir$P|!I`LDI{S_%M|~A&{PV3``6T zVCjA^i6B6->Off}z<8cv2ND;^WM-%b30RDd@Y3Vb_i1tCL+$jV8Xx% e_8L%#pKo~CtqL|;V`hYGBCC> zu-yEH*??uUG{+K-$r}Xtftan{hJ}HFWjO-_BLga!gx~_D9Of}F!3Cg7)!_mV2Ev3L z3=B++43{9nAcMM)lmeA81GyFup?U}f6l{j6ftUky78HO~gF(z8AO)9IVBmm?Lnu!c zHV}h@K@dcM0F#C_m}X#D0;L%kSRwl1dg~#4ZeySdHeLpSGjNq~2GAu9Kn~RZ63Rfs zL5}m`1QL8OgW!&2U`PRqGHeG*A_I`TB$5Es84TVaAMt}Fq(LN19OMfVARlb5KLdjR SSP3#w0Oo+y1J!tdbOHcE+#_uO diff --git a/MDK-ARM/NUCLEO-F103RB/heure.o b/MDK-ARM/NUCLEO-F103RB/heure.o index cd674334c1d74abfb10320ad7f457d9a62b7bd1e..a852f9da9738e3269c654ff378be8f4392de840b 100644 GIT binary patch delta 553 zcmZor{i8BLfw5$xq9Y?$aAt04PGU)FY0>6hCUE$K?ER91}S4G0E;j(2rw{sKqMIeWMw0- delta 510 zcmeyP(x5s)fw5wvq9Y@(U#PQ>tG}+Bp@DIb)8-sTXC_7e{+14}CdV=Dv8%@>#rST_G>U%)YWf&jNA3j++mSd0t|HbAlEU~wP^3LNGE z8B8!9L*3*;0a0%RUwsQuY9G)>1~7)JV<>_$CqX4lz$%y#3P60u80N{10@C%%fE<=) zgd7LhQ7jw`fQzywqR0*pKmnib|6rVS7Qpk8B$Pq`U* zAwod10f+?{Sn3%V4B%o69Lhj8GlK-kT26>CA5<3A`P)4}wt(d%5!%5ls6u^+Ff=q7 Z|HD-Yf^{)NB^1D})q}_ufSiO1JOEZmCwc$? diff --git a/MDK-ARM/NUCLEO-F103RB/mytimer.crf b/MDK-ARM/NUCLEO-F103RB/mytimer.crf index 5656f32d3de5f5b86e720e8f0cf178b1b743648b..cb417e3e7502f824ecbff31ab4680faa2dfeac84 100644 GIT binary patch delta 146 zcmaF-LhSJiu?cEiEj?TRurdI_jfncXe+lM2nm9$D>&KZlZ@|0@6VJvYkR* z7!wfOJCheM#v-`pli8W%5yrMpHeizBT6BHVZ?H)hn!}jd!7(_DzG0XNaCRW}} E08M=`hX4Qo diff --git a/MDK-ARM/NUCLEO-F103RB/mytimer.o b/MDK-ARM/NUCLEO-F103RB/mytimer.o index 7db76dbf11a323d64a8dd6de6817ee2c2fe423fe..85a31d532f4822fd89cbccf7c55c5a93c19f7ce8 100644 GIT binary patch delta 6838 zcmZWtU5r&%6<+7gIhS*R%1md5xs0`37=)n#9DWjLONCm{u^H-UiJ9mGG*SZzExiqG zc&MCdi%KF7B!yfacpxngjS_?X5gvGGB8hE6B2ph}tUxC`jD`mucu)hz@B7x?=iaF+ zbN1PLt#5s6t-bfz=iE8_Uj58__2Z3X>UT??9bEFvfma%hb&Yi+>qeGZV!LT`coE*%4^Fejva~oE#w>O_$^XP@*YIZT1 z`|Q5wU*7-YgU`MEQtSA&?2$JYtXX;ioyEz8^Pgn@T{&rHDK6_`Y!a@_r_Bv3> z%{Zuwv)|oXTdnr(;Tp#9cibG?g4WA@Ev40FT0AszXI2?&}=H<5Cx_1gWcfALsw zk>87e;g5+>CM_pu@TrWW#BP6q8S(DY;=&M#WpPJnRUbDyrgcqN*FfPDA3b;nf{s@^ zbr!aQ8~dV(ILaKgzFTZU1F%36x3D|Th7z0{@IYekP$}Oz*pv%fKTE6g78^?|1uTiP z%WLFuPQt={JI!)noG|7R(zhegn~*pK0qYNhml*tra`D8_f2d5g)l93sKNLwV!V>4) z8{?amCP7LX0%LL=kkW4No3##fRR>N^Rr4aTOXY(i9(Tp|!{ZZaymJZmW!CKpl_qWy z*>AeR+j+DLbH}*XB-#1j`;Ooavzc3;MS@#_aZp9UhT1+HX+<ronbx(BF^ud$HYK8j+=y5zDNdJyDHT= zJWsh3Ay}oD`T$ZDAN5f@0zoluz2i~miENY65`B2Yp7TMH>j|ba{@TwVtm}zbq!&wk z-9#ebVwadJ!fffzzCR)whY*E&yA|(LN?4ENy?{X zUV+To5KobhW+Nt7Y2x&N0urdXNU1gK1u1VH(k(WX24Cz^a1z8W9Ily7l|!?)2`oSk zUIYpJN379pXE>B#9nU9Dc`9!})h6r=1Vad$*w{*Wsu?fgzJDs=Da9_uqYWvv)k>5l zD?^!QWMMbg-Ms>nM%R?yJR95YPNxrBlud(T=FbR7iynnU07*~)i%3nrX6is3rsN~C*JP{OF z9Lk5d@I~wr@0hR|MDRR9p@xQCpDBRn3R0QRTYz&6agZFOwS74u&Ika}0V#XCR9 z78akDN}5UVv^r>TcD!x22OnUTcDph`#YlLzoW)N4Ib0KDUa=m)5yxLM`i6)73zGO3 z^au8-_693rMyN>+o#;E*YLhks{qLhX7KO1EfO>Tb`>27w66_{QJ>1PUG&7%9#iAy& zkI=3UJJLDl(=cM2V-`d}c5+%E1Yzd&YpFP{JxLW%(Lul&V(nwKY7TL?=Ir(e`3ibS zE&Y$IY%;s%6rKk(m9xpmj5>wO?4SG$Hv5wXYQjUMoX943)vKQKXl(X5JcbiFA8a## z9d;i7bM2F@X7Acx(LaqVR1?-5xkG9y;P2|ANelZd;Qj!3?$6_|Wk#g|SHtIJEwITy zJrN&VfDj!Y{A9TuX%(jof}rT%wX6xO=Fe;%p@;p%4Jw4M@!KIt7DK={zsD)ivYK7j zbcBz19G4I*GpnsfMJb$Ib*t`w9+NF0?0NDN91N0oD`iAqCsTMOdUD) zNJR`B@rQW(sgfv-2SvdNyG{`2+8HXp^s6~H-!Kg zj85V)vp89DC(D-^=LUzGi-$JG{H021LKPZh#VY)Gj>!w>2Jn#KD~!ZSnhxUbpb!+j zkPguNch%15wE^9|d4EQP6C)<(@9OJmesnCZ|g~l7~J3Hmv}I zbK$nrV>k==y##zo4HIOaAJfgZ7boVj0)e5h=ETZi)Q!n)@-&&XCj!Mie5o^I2r^J? z_BG2$b`=Lc>3U^Oml&QhVPb-pYICl%m}Wr8YMnf}jgI=*L%~B4wn0hYnhb2G+vQ1cK&yC!;-VOtxDIcCj1|c_vEZkbN?5s!1x3vLqnfAQS$(uyv<)p$}fowYpK$)<8lj;~( z>{@K}x zQo}a~Cf6~sJ$4Jf&L(zY*j1F+WwJ6ERc^aM6XuWZ>5S}XR{8vE7?r-}InPe}2`$4m zlka2)zT{-BVZodpALNuG&yV^#+Fm_dNI9DkT6Q#ahwKk^A!H~AP?tu)pwe5=`~z2j w97b3F?{Q$@?ZRjgF8p|Yx;r3~+YTvPfPSUHeY61t9sai}c@eFz16z*%2NBfDZ2$lO delta 6970 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 F002;AO*sGn diff --git a/MDK-ARM/NUCLEO-F103RB/stm32f1xx_ll_rcc.o b/MDK-ARM/NUCLEO-F103RB/stm32f1xx_ll_rcc.o index 2ca47878a30a68594c36f5fc34a9c45b211434c5..32a609518c2d8d443fae9862628b0118f643d9ee 100644 GIT binary patch delta 113 zcmX>wSMtDI$qgoQihlWJ3JOLFMg~R(N(_t)@$n&^zOM1{3QC3+R)$7a#wN|7a_ymV zj6lo;#LPgBKiOT delta 111 zcmX>wSMtDI$qgoQivGzZ3Wi1sMg~R(N(_t)@$n&^zOM1{3Q7i+RtCma2A0jCa_ymV zj6lo;#LPgg?m{uj^)LU>xMM{oy~> L2F9%^Y%zWS>=z+L diff --git a/MDK-ARM/NUCLEO-F103RB/stm32f1xx_ll_utils.crf b/MDK-ARM/NUCLEO-F103RB/stm32f1xx_ll_utils.crf index 61707d883f4075ffc8ad635aff5ec71de3682c1b..a7cf0987c3df5573182105a7ed390dc88a5ace44 100644 GIT binary patch delta 273 zcmbO?U1HvJi3z4$Ej?TRurdIF+eCW_1W$8fq7*+|?#9hT2By%-6BxZk@{3aAlXH#r zG8m?vn*I{3^U=hY`uso6ymOiT)5Qy+^)*Z2*gZ43}UkYG3$0!X0}QW01P@*3;+NC delta 273 zcmbO?U1HvJi3z4$-wqsl!O8#x%O~1PaGg4S1Hzj*F;R*i&hxmL$iNgjc><%iNPbaj zd~&X_UIxRmXVYJTb#9yZQlG!$<(oHPp7PB!2Bs*W+5nNV)S}|d{5)i}#*@1l6Zqj; z@7zpbV2S`K7D_D2O-@EuYCbuJNgm;b_M1iwOllJa<-|)%GINT7DmxBBoi2XUn1M+h uC^h*m6DQXzn2#JLe_+z)f~(?hR%LEiWo86oCLji}S%8>zyDBqVB?kaaZC4Bc diff --git a/MDK-ARM/NUCLEO-F103RB/stm32f1xx_ll_utils.o b/MDK-ARM/NUCLEO-F103RB/stm32f1xx_ll_utils.o index 9e7eb3ddee0983a0d176e8b25740caed889eedf2..d1eb7d6e3abfb0f24c04e47cad0e3bac1e9736e3 100644 GIT binary patch delta 95 zcmdn-RC32t$qjE*SpD+L6ci?ZR1x7Yw6HQXvNASp=2dOyRb>QXCLm@8VwUZ^s;oty un2pR$wl|8ii865oXXcjXB$lL>7EOOI$)+{A-dt%rkYUNVT}_&8QaAvp>m6qR delta 95 zcmdn-RC32t$qjE*SpAbr6bvVSR1x7Yu(UETwlc76=2dOyRb>QXCLm@8VwUZ^s;oty vSj`P|jTt5z@>p))C(d@0k=HNO*~isi*UiwtILK-HLP@q(#_bx?Y!ku(f@>R| diff --git a/MDK-ARM/NUCLEO-F103RB/system_stm32f1xx.crf b/MDK-ARM/NUCLEO-F103RB/system_stm32f1xx.crf index 3c53a5ab7675ee97afc22f14f05055c6b018b4f4..19f1d6ed905749ec2213e441f97e7d74288b3080 100644 GIT binary patch delta 215 zcmccfQtZx4u?Z?%Ej?TRurdIF=0rUyemL*O%|r&K(8;lk-Xi%$sqx9V#(EhH(@sr) z30C`P;x>J*A7|dY0rM_Qd>_vRmy4eq!I;1g=W^UkVPJ{?8WbRuSd^QbjBHHuWKAY{ zW4N8-H`N#zrS$algNu^&iz|yuQgh>rOLC2k(hMsq^pY9cU`|bMu4ZblW?}?l5X}t4 MEZeJ@SQ9q^04O|0R{#J2 delta 215 zcmccfQtZx4u?Z?%r;guv!O8#xGbidv@xyr@Hxn6{LMO*EdW+;2rN$@c8tY{+EPFQn zC0OmYiQDwKI$pkc1Li4Dd>_vRmouIm!I;1g=ia%Q!oU;(G$=qQu_!k=8QB=~$(l^^ z#&A2^Z>ljcO6lq82Nxyl7grXSq~^vKm*g57r5RRK=p{3J*s~Vm)R)cGOzqW7j6e*c OnSq#Pdo>el;wAt>?nzew diff --git a/MDK-ARM/NUCLEO-F103RB/system_stm32f1xx.o b/MDK-ARM/NUCLEO-F103RB/system_stm32f1xx.o index e36d31f5414b6ebada686062bcde692b0f88ed41..32805a405b3ca1d05889ee08d116ba85c22018ca 100644 GIT binary patch delta 4374 zcmZ8kO=uNY6h1SV(Rub+Uz#*|3N=j>GGrt_8=FXPgSjEN2KA;;_M7)11t3d zqsm*snI5y$J*blW=`JcwIX^nk`#(tFTSx$3>C zY*rf@U6wkii~0~Ys4}dB!kRcr>;kmE93HO&3mSE40Ze5SUyJ3e#uBrKij*gZ1m}^>wFd*0Iw`WXggY(!^}}?3c9*EEZIaznvKgZD$qY>06WBB`DIOVcUCmM9 z=F!T-xUFtG6V-d$*(~=~iK?eTJ)v6D@zt0E+wA7iU!A|42h>V@ZWis+P*wbZi_AEK z9&scUyrPO?sHX<+S)?x@tff(@q25D5Fa0KjSFv8mqe_=3 z$G$V)+;Cr^u-8b46+v43brQ>+Z5pLIYoP$Vs`4kUjykUH3^Cy{-!_a37ZM4C9bw zf%-JXZ~VvA!bHcuqV^1)Iv%oA@GQxv3#qgtmgyn8)Oh>20%>xQMC0-YK>Cf+(RZd* z{S}cyL8@s@ZH!_wOC`bm#}*YBUzT~N7@xd*)M$e?stNA9grfa)FouFIHZw|kO*2DC zQK!N;DYL^m`1~o-I+Mmy$(74Bz8WQAp4Ftc-$e9E%DmAu2RJ^>sEDaD>N2y!WH@KE z_;hQq#*&dODHW(1!n4ECTKp0nVxE2+Zcmel^3W8?u;#*dN6Ob{G-k=;&OxPVMTiy4 z80ie15f$7LkWHcWmZ%&tDFm$h_X=430a=8tOZflz&Gc1WP)p>kd+>P zf69`~`QYjh>HgO^`b(~ J|2Tv3<$s4l80G)~ delta 4405 zcmZ8kOK4PA82-=X-grkxovE=#sb+jsvGp-VsZZMAqeeSw+FHmWpwupe+ER)O7t+zT zpamCFEpg$(g%%es6odq-B@0^&2qsuiP)HXpw1i@578MHZ_x=Al=Z^kl&ix8eYv%|B6^zvsZ=>Z;CaXRWigK%DH`w|B>`ZTt3B7u42osIA_xs`kxr z>BMl!;Zwk;1)pSKxRl--OjdQSTQ_jwmvnley!)dq^=*5Wzq_io`h(5Y6GnGq;5x7cI87fk|Kq)P-!+FL1-T3Y)nv=qnblqeoo5X}kSuhSy$`nNY`!{GBB9L<`7`T*c)IEcb zIFAe^D25@QM|2y)A!`ydN;_;$`XVAQ&L9nmrFaXHX!B~vf{;e%0;3hF+m&3!+L$HJ zY_`i0(&FPXPDC{#r?c;hXe(K*|Cmy%5=kMgb1_0wRfKIE!J>OgsVTVnNRn$u$VK`4}YEBIO`TU&318DGRzdIWX-JJ9v|2u7)VJ1v-nQ@b3 zsQ=nu>5Rn)JIPdG&177hf4D>qDSOKyz26#eFU^C#nZSuTirT zg;nOthvC#9RGj@4pki95bu$q*axVSB^HiZYE9scb6UP^!jo$-F;|7fL2qf8YpD+Oq z7T0M#m8%^c-XPK)A-r)|i*5w)CnH8=$nzcgzG(h2Uchdt$WgQ5eewh|V#H1?N5+e) zS!wpAx2)386bnd_6+3(=t>uXcK49gJxA9R}9RK7z7jY-H*r>B zPehK7m{A+hjv+Jlnh;6tFx#w35&pGtSi3^^e5n^kwN`Q_h=|$q3BL}JzmA?bY$Jty zMSe`k!_V=sRq?TTDDy%+rs>jx&mgO>z?wg6R;~p(^II-~>y!S6f25NeL*UiVk9QYQ z71`+n$=Uc4qtLT9n2X@-yGwm7nJlv8dP|J4$S_3&EL<|<14akwIlK)WhJZ}r_`&ky z1=>N3sQXRz zA_a@cUW#U~%T2iuer*xt-7wJ!q5#XMsEJjZVZDS8=6pxwXVtxpwW4Q_nQY$?Z7^K; zslgO$`*1OBK0H5|<%s%*Vl50T?iS4sHxihjJ%#*onFb|f^L}gPTc&v77f4!OWH5Li z8z%di$Xz}!;&nks<_jz7pgr&^>9uH*twlS61U7Ij^j=R5lOb9+C*wo$r}1O;&WP1i z@$`-p7JnbqkUQgROX}72ZU{OX^^$}(AGSQGQuXzZ&U>E5d1JmqMLG=YgzN9K$T-7 z78uy0Qek+V)l0r!J@N{EM4W;{nRXUfmil?^e};;x^{KUg4VN%$KA%MA)9yRxuP>(6 z7Uhb6-lBtT!OV3Q6)Rm5oqX6IH8qO(r^4cA=C3Z;$yc@QVk&DwHpH~B^z{FQjm9nE z5gGMU*3eSy#&b5Cw)DD<;LoDyZZtBA#9{vWv&0f1jt+R9`K1eO=O`%wRfO;PAWKK4 z-61)@T~fXcMs>d-I<*V~swT`CC<7Y#Il-LTa~4&@hOkAneO;1N7B?Hg-=S<(+hj(i z{)S?bA_6hh3Kfy%u_o?4GOEo%tB0lG%$=ydP)Wu)--CN6f*3A15vQ<3&b^iKDnCqB zFTnT6_>RG>y&q2_q`IbAXvLPo5E5xHLmNJzq|OrWONQ(*Q2yT&r$9>Y>;Al>LSFqc z7IqTKEo!J=m$c~5iymUt>K7DJ7*%=yXq9MBXNeFnZudvNH$)%z4)HM?jT-^(*0*Rw kuLs>!wLXOCFVruCMZY&fTX^kWM|mh%hq$10Js%$p8QV diff --git a/MDK-ARM/NUCLEO-F103RB/transmission.o b/MDK-ARM/NUCLEO-F103RB/transmission.o index 72ee2b1f29f94a66a517f3873918b2d21b8135fb..70051f3221f9c3d6a165af75b4d0cd42e2e4c34d 100644 GIT binary patch delta 550 zcmZ8cJxc>Y5PfrZ${I16PPLS|}(-3JXCoh_Mk-@DGS7?5qM> zDks?ZA1w9X=+4Y-ayZ4#oA>79?R)*Tejn1yTXmaCJIANJlg`Ca?>xJvj#u3}y9~oP zjH5WJfsm%V?alQx4QtKiRx@rTN%reUK^B>Txd8$^<6n@iSCtD2(j)K$Pl+{6-05P3 z1ra`hh7-TxCLLolp?_5=Sr2{qOy@UQz=QPBog^kkalocIc<4(I3^2~9ttC*gz~t_& zxR8&C?8&|{tVm_=FS;pUV2GXG0y9d=+Mz!ABQQv&fW09LOw6Lpr9G7&otH}f<=p#a n%oS!7cK1IDoVK!gEGa!*P#HFS?IB)GIP9vvp~=3vZ;So_Qd%Zp delta 482 zcmdm>xo~CqG~o;V`hYGBCC> zu-yEI*??uUHpfy9Rz`;93@np33P{)6Ft9LS07eD|CaB;%AlqRUstP8c7y|>C088wF zNUJm4f-vCZGzbf<(uNtKfngF%$z*pyp?aVTE-^GSFf+u!gdv6tg1K<_8GyN-AU+2O zaWJsK)LTFpj6iW#xYNO6j7zLxihwlKEU3Oa48{x$0u1#K-|~XgH2^U;hyk)fnVEqP zNI?N7LyQEB4K-*xkk1DelLV4T{)4JxW+;KO7=XTGVBlw9FaxU6W?+DL4I(+&Tab^D U85kR)ydDe%42eKdMgbrO00x&Pa{vGU diff --git a/MDK-ARM/NUCLEO-F103RB/voile.o b/MDK-ARM/NUCLEO-F103RB/voile.o index 8ecca16d49f30d62827bead7233a8ea36889d76f..c6cd76b2473df636ae57da382d3d4e9c2de21540 100644 GIT binary patch delta 553 zcmZor{i8BLfw5$xq9Y?$aAt04PGU)FY0>6hCUE$K?ER91}S4G0E;j(2rw{sKqMIeWMw0- delta 510 zcmeyP(x5s)fw5wvq9Y@(U#PQ>tG}+Bp@DIb)8-sTXC_7e{+14}CdV=Dv8%@>#rST_G>U%)YWf&jNA3j++mSd0t|HbAlEU~wP^3LNGE z8B8!9L*3*;0a0%RUwsQuY9G)>1~7)JV<>_$CqX4lz$%y#3P60u80N{10@C%%fE<=) zgd7LhQ7jw`fQzywqR0*pKmnib|6rVS7Qpk8B$Pq`U* zAwod10f+?{Sn3%V4B%o69Lhj8GlK-kT26>CA5<3A`P)4}wt(d%5!%5ls6u^+Ff=q7 Z|HD-Yf^{)NB^1D})q}_ufSiO1JOEZmCwc$? diff --git a/MDK-ARM/NUCLEO-F103RB/voilier.crf b/MDK-ARM/NUCLEO-F103RB/voilier.crf index 6cdf718423e89d6f1b7ef7b9cb03389e995ebbab..3ff275a183b5af724c3f8454d687f5dc69a1137c 100644 GIT binary patch literal 18 Wcmcb?!N9=8$N&VgH&}p71| afq^wQF*A?B`Zg<28>7PC8!SL07?c2r#}NSl diff --git a/MDK-ARM/NUCLEO-F103RB/voilier.o b/MDK-ARM/NUCLEO-F103RB/voilier.o index 675084ae4e19a607f614c5b0ed3fd3846bea462e..b689fee777f126b5850f70e550fcbd14b88a83a5 100644 GIT binary patch delta 845 zcmY*X-D(p-6#gc&n?KvQNkmL3vaFU$sWjOXDXkZc7&OpIX-d5jLWI}`wH2`~f)Js7 z0Nc3~yb=V3U`e2O?Hl+2zC#{B+B0WoOnTUz^PTgZne#JqGJG+{ zMvQQh{?p|dk*>F2@4afiYwf-59f-P68QE7|Xa250qw%n^QEfE*;K}a3?}vU^42uCY zu~A!PqO`DB3Kz@e-j+M(#EAkDy zaPbLTXNPWt^8| zq57A5Keo1BtuNfJRvy&$Lv@_bkKLo~%~tby8)8=d%m;;nm=HH*AgBaX)>k1?1TrEg z)F3}~axLAt?*R1S8~sBW83UJY8QVYeyeu>I#RT+O6A>K{`#o)lp^6x5cQiO*OVWCv zkwA3q5lSdGj1I;%^ScinKFe&rE_AF)4V%>S Uk^e`4#~x9f?ajz;8?J+K0rW9UeE?aI+1e2J6MOh0@G?s51Kca@8d;Zk3`SXuIoz2Xxp4@AwHFYXO z^8qPRXjV(5M`67hA0I{^w9=N2=%}`JO!sN6`}Kex)I&NB3`xv@qJVeX`h4hj;)u~j zZSQ;Q!(%k~Flv`;Ej;;$Qp&Ct$~CC*o4zIRc*${^?smJ<0u5@#QeG=^bnpbN5zKJ4 zyf-5=Yqp#QwiS!pYQj=bO0ZvB$DS#twc7L$YpYwB*bv>%sFGo zEG%Z`7BdTbcOtXV!;{=-Vq>4uE&fcECLFjA7~UJ!U)Z}}n~c6bioXtSbzyP5*@Yv- zk9A?tf4mDTR{l?rLYRV$-+FKi-}d0XU3}W3(0H#0_hYvQ51`nC2Z>fhbHHNAtWn@z z!K5(^%N_W4%FD%~>5z2jUaqjDKA?C$2|NKcgp?16cjQ zcfyH(2>8#!2LKt~PTW3%^wR3NbfML1mWyrg#rT5@jdrnCsJh!oH{DA5id$@NI+b$G z?Z)NWM!g$vG`YjO8sAFROGuaM)vC*ZOmpC!oekI7atl}7Cdz4PyJwADnrUylPOa_~ znwvYE8kXQ}HXBZmEvz7w^)8Ie+VxT@oAat8lWLyp?A*fLJEWde?ry!QE0vw|-XD2o zaW#KoKDDx%Uz<^9RSEJ-5@ZlPF)N_$JA$>}LI zt?p9~M3QQRCYB5(_cyM*H%5lJ2Y@&_ThanHZ6m0OrZrh zCgSy||M~l$S#>=v`kAA#*nlQN0r-ZZ9lU~v|5N*tjm1zk!{m~muSCcM6k(mSO?t}i?ENQc$LwK2w zS7FN_zUdB8=3DIkC|shg!F0?q+9{fDEChHRQ?g;XQ$cVrsUQez{KPjP8ADRsoPdIk zVfkJ0l|vjg&l|h_+WZNH`E(GA9)4aCI@Rza!kUHrTzC435Br+G*?*yFS$>tJLn^E= l)bLh;A7y!pQ|kXU8J*v_aCjQQ=siP6^9Sl1LNh)B{sns;*2Dk+ diff --git a/MDK-ARM/Project.uvoptx b/MDK-ARM/Project.uvoptx index dc33b86..ecc3a2c 100644 --- a/MDK-ARM/Project.uvoptx +++ b/MDK-ARM/Project.uvoptx @@ -75,7 +75,7 @@ 1 0 - 1 + 0 18 @@ -260,7 +260,7 @@ 1 0 - 0 + 1 18 @@ -305,7 +305,7 @@ 0 DLGDARM - (1010=-1,-1,-1,-1,0)(1007=-1,-1,-1,-1,0)(1008=-1,-1,-1,-1,0)(1009=-1,-1,-1,-1,0)(100=-1,-1,-1,-1,0)(110=-1,-1,-1,-1,0)(111=-1,-1,-1,-1,0)(1011=-1,-1,-1,-1,0)(180=120,153,415,450,0)(120=-1,-1,-1,-1,0)(121=-1,-1,-1,-1,0)(122=896,89,1317,516,0)(123=-1,-1,-1,-1,0)(140=-1,-1,-1,-1,0)(240=-1,-1,-1,-1,0)(190=-1,-1,-1,-1,0)(200=-1,-1,-1,-1,0)(170=-1,-1,-1,-1,0)(130=248,17,842,768,0)(131=521,17,1115,768,0)(132=-1,-1,-1,-1,0)(133=-1,-1,-1,-1,0)(160=251,288,699,702,0)(161=-1,-1,-1,-1,0)(162=-1,-1,-1,-1,0)(210=-1,-1,-1,-1,0)(211=-1,-1,-1,-1,0)(220=-1,-1,-1,-1,0)(221=-1,-1,-1,-1,0)(230=-1,-1,-1,-1,0)(234=-1,-1,-1,-1,0)(231=-1,-1,-1,-1,0)(232=-1,-1,-1,-1,0)(233=-1,-1,-1,-1,0)(150=-1,-1,-1,-1,0)(151=-1,-1,-1,-1,0) + (1010=-1,-1,-1,-1,0)(1007=-1,-1,-1,-1,0)(1008=-1,-1,-1,-1,0)(1009=-1,-1,-1,-1,0)(100=-1,-1,-1,-1,0)(110=-1,-1,-1,-1,0)(111=-1,-1,-1,-1,0)(1011=-1,-1,-1,-1,0)(180=120,153,415,450,0)(120=-1,-1,-1,-1,0)(121=-1,-1,-1,-1,0)(122=896,89,1317,516,0)(123=-1,-1,-1,-1,0)(140=-1,-1,-1,-1,0)(240=-1,-1,-1,-1,0)(190=-1,-1,-1,-1,0)(200=-1,-1,-1,-1,0)(170=-1,-1,-1,-1,0)(130=248,17,842,768,0)(131=521,17,1115,768,0)(132=-1,-1,-1,-1,0)(133=-1,-1,-1,-1,0)(160=251,288,699,702,0)(161=-1,-1,-1,-1,0)(162=-1,-1,-1,-1,0)(210=-1,-1,-1,-1,0)(211=-1,-1,-1,-1,0)(220=-1,-1,-1,-1,0)(221=-1,-1,-1,-1,0)(230=-1,-1,-1,-1,0)(234=-1,-1,-1,-1,0)(231=-1,-1,-1,-1,0)(232=-1,-1,-1,-1,0)(233=-1,-1,-1,-1,0)(150=229,0,832,751,0)(151=-1,-1,-1,-1,0) 0 @@ -344,7 +344,7 @@ 0 99 1 -
    134218304
    +
    134218720
    0 0 0 @@ -367,6 +367,21 @@ 1 USART1 + + 2 + 1 + res,0x0A + + + 3 + 1 + res10,0x0A + + + 4 + 1 + res12,0x0A + 0 @@ -484,18 +499,6 @@ 0 0 0 - ..\Src\AntiCharvirement.c - AntiCharvirement.c - 0 - 0 - - - 2 - 5 - 1 - 0 - 0 - 0 ..\Src\Batterie.c Batterie.c 0 @@ -503,7 +506,7 @@ 2 - 6 + 5 1 0 0 @@ -515,7 +518,7 @@ 2 - 7 + 6 1 0 0 @@ -527,7 +530,7 @@ 2 - 8 + 7 1 0 0 @@ -539,7 +542,7 @@ 2 - 9 + 8 1 0 0 @@ -551,7 +554,7 @@ 2 - 10 + 9 5 0 0 @@ -563,7 +566,7 @@ 2 - 11 + 10 5 0 0 @@ -575,7 +578,7 @@ 2 - 12 + 11 5 0 0 @@ -587,7 +590,7 @@ 2 - 13 + 12 5 0 0 @@ -599,7 +602,7 @@ 2 - 14 + 13 5 0 0 @@ -611,7 +614,7 @@ 2 - 15 + 14 5 0 0 @@ -623,7 +626,7 @@ 2 - 16 + 15 5 0 0 @@ -635,7 +638,7 @@ 2 - 17 + 16 5 0 0 @@ -645,6 +648,18 @@ 0 0 + + 2 + 17 + 1 + 0 + 0 + 0 + ..\Src\AntiChavirement.c + AntiChavirement.c + 0 + 0 + diff --git a/MDK-ARM/Project.uvprojx b/MDK-ARM/Project.uvprojx index 8616695..b7bdda7 100644 --- a/MDK-ARM/Project.uvprojx +++ b/MDK-ARM/Project.uvprojx @@ -402,11 +402,6 @@ 1 ..\Src\Allure.c - - AntiCharvirement.c - 1 - ..\Src\AntiCharvirement.c - Batterie.c 1 @@ -472,6 +467,11 @@ 5 ..\Src\Voile.h + + AntiChavirement.c + 1 + ..\Src\AntiChavirement.c + @@ -913,11 +913,6 @@ 1 ..\Src\Allure.c - - AntiCharvirement.c - 1 - ..\Src\AntiCharvirement.c - Batterie.c 1 @@ -983,6 +978,11 @@ 5 ..\Src\Voile.h + + AntiChavirement.c + 1 + ..\Src\AntiChavirement.c + diff --git a/Src/AntiCharvirement.c b/Src/AntiCharvirement.c deleted file mode 100644 index 536c060..0000000 --- a/Src/AntiCharvirement.c +++ /dev/null @@ -1,8 +0,0 @@ -int CalculerDanger(int gamma){ -} - -int RecupRouli(){ -} - -void ConfAntiChavirement(){ -} \ No newline at end of file diff --git a/Src/AntiChavirement.c b/Src/AntiChavirement.c new file mode 100644 index 0000000..c69e161 --- /dev/null +++ b/Src/AntiChavirement.c @@ -0,0 +1,119 @@ +#include "AntiChavirement.h" + +int CalculerDanger(int gamma){ +} + +int RecupRouli(){ +} + +void ConfAntiChavirement(){ + //On est pas sûrs pour ADC 1, voir datasheet page 28 + + //Faire les horloges + LL_APB2_GRP1_EnableClock(LL_APB2_GRP1_PERIPH_GPIOC); + LL_APB2_GRP1_EnableClock(LL_APB2_GRP1_PERIPH_ADC1); + + + //On configure les PINS + LL_GPIO_SetPinMode(GPIOC,LL_GPIO_PIN_0,LL_GPIO_MODE_ANALOG); + LL_GPIO_SetPinMode(GPIOC,LL_GPIO_PIN_2,LL_GPIO_MODE_ANALOG); + + + //ON se met en mode scan enable pour pouvoir à chaque trigger aller chercher sur plusieur voies. + LL_ADC_SetSequencersScanMode(ADC1,LL_ADC_SEQ_SCAN_ENABLE); + + //Permet de faire en sorte d'aller chercher 2 voies (2 rangs) à chaque trigger + LL_ADC_INJ_SetSequencerLength(ADC1,LL_ADC_INJ_SEQ_SCAN_ENABLE_2RANKS); + + //Permet de ne pas avoir d'intérruption dans le scan + LL_ADC_INJ_SetSequencerDiscont(ADC1,LL_ADC_INJ_SEQ_DISCONT_DISABLE); + + //A chaque trigger, on va donc avoir voies de rang 1 puis de rang 2 de scannées + + //On met le rang 1 pour la voie 10 (accéléro) + LL_ADC_INJ_SetSequencerRanks(ADC1,LL_ADC_INJ_RANK_1,LL_ADC_CHANNEL_10); + + //On met rang 2 pour la voie 12 (surveillance batterie) + LL_ADC_INJ_SetSequencerRanks(ADC1,LL_ADC_INJ_RANK_2,LL_ADC_CHANNEL_12); + + //Permet d'avoirdes registres indépendants pour chaque voie (chaque rangs en fait, au max 4 + 1 pour les regular) + LL_ADC_INJ_SetTrigAuto(ADC1,LL_ADC_INJ_TRIG_INDEPENDENT); + + + //Sampling time voie 10 et 12, à changer peut-être + LL_ADC_SetChannelSamplingTime(ADC1,LL_ADC_CHANNEL_10,LL_ADC_SAMPLINGTIME_28CYCLES_5); + + LL_ADC_SetChannelSamplingTime(ADC1,LL_ADC_CHANNEL_12,LL_ADC_SAMPLINGTIME_28CYCLES_5); + + + + LL_ADC_INJ_SetTriggerSource(ADC1,LL_ADC_INJ_TRIG_SOFTWARE); //permet d'enable le trigger de l'adc par le software + + + + LL_ADC_StartCalibration(ADC1); + + + //Tant que calibration par terminée on enable pas + while(LL_ADC_IsCalibrationOnGoing(ADC1)){ + } + + //Activation de l'ADC (???) + LL_ADC_Enable(ADC1); +} + + +void SystemClock_Config(void) +{ + /* Set FLASH latency */ + LL_FLASH_SetLatency(LL_FLASH_LATENCY_2); + + /* Enable HSE oscillator */ + // ********* Commenter la ligne ci-dessous pour MCBSTM32 ***************** + // ********* Conserver la ligne si Nucléo********************************* + LL_RCC_HSE_EnableBypass(); + LL_RCC_HSE_Enable(); + while(LL_RCC_HSE_IsReady() != 1) + { + }; + + /* Main PLL configuration and activation */ + LL_RCC_PLL_ConfigDomain_SYS(LL_RCC_PLLSOURCE_HSE_DIV_1, LL_RCC_PLL_MUL_9); + + LL_RCC_PLL_Enable(); + while(LL_RCC_PLL_IsReady() != 1) + { + }; + + /* Sysclk activation on the main PLL */ + LL_RCC_SetAHBPrescaler(LL_RCC_SYSCLK_DIV_1); + LL_RCC_SetSysClkSource(LL_RCC_SYS_CLKSOURCE_PLL); + while(LL_RCC_GetSysClkSource() != LL_RCC_SYS_CLKSOURCE_STATUS_PLL) + { + }; + + /* Set APB1 & APB2 prescaler*/ + LL_RCC_SetAPB1Prescaler(LL_RCC_APB1_DIV_2); + LL_RCC_SetAPB2Prescaler(LL_RCC_APB2_DIV_1); + + /* Set systick to 1ms in using frequency set to 72MHz */ + LL_Init1msTick(72000000); // utile lorsqu'on utilise la fonction LL_mDelay + + /* Update CMSIS variable (which can be updated also through SystemCoreClockUpdate function) */ + LL_SetSystemCoreClock(72000000); +} +int res10; +int res12; + +int main(){ + SystemClock_Config(); + + ConfAntiChavirement(); + + while(1){ + LL_ADC_INJ_StartConversionSWStart(ADC1); + while(!LL_ADC_IsActiveFlag_JEOS(ADC1)){} + res10 = LL_ADC_INJ_ReadConversionData12(ADC1,LL_ADC_INJ_RANK_1); + res12 = LL_ADC_INJ_ReadConversionData12(ADC1,LL_ADC_INJ_RANK_2); + } +} diff --git a/Src/AntiChavirement.h b/Src/AntiChavirement.h index b91a796..f2d3d65 100644 --- a/Src/AntiChavirement.h +++ b/Src/AntiChavirement.h @@ -2,6 +2,13 @@ #define ANTI_CHAVIREMENT_H #include "stm32f103xb.h" +#include "stm32f1xx_ll_adc.h" +#include "stm32f1xx_ll_gpio.h" +#include "stm32f1xx_ll_bus.h" +#include "stm32f1xx_ll_utils.h" // utile dans la fonction SystemClock_Config +#include "stm32f1xx_ll_system.h" // utile dans la fonction SystemClock_Config +#include "stm32f1xx_ll_rcc.h" // utile dans la fonction SystemClock_Config + /** @@ -28,4 +35,4 @@ int RecupRouli(); */ void ConfAntiChavirement(); -#endif \ No newline at end of file +#endif diff --git a/Src/Voilier.c b/Src/Voilier.c index 43f7119..e69de29 100644 --- a/Src/Voilier.c +++ b/Src/Voilier.c @@ -1,3 +0,0 @@ -int main(){ - return 0; -} \ No newline at end of file From c069707bcfa17f57a0bbdcb56c4ad3e4365395a9 Mon Sep 17 00:00:00 2001 From: "Elise.B" Date: Wed, 11 Nov 2020 17:04:18 +0100 Subject: [PATCH 4/6] maj fichiers suivis --- MDK-ARM/NUCLEO-F103RB/ExtDll.iex | 2 - MDK-ARM/NUCLEO-F103RB/NUCLEO-F103RB.axf | Bin 363316 -> 0 bytes .../NUCLEO-F103RB/NUCLEO-F103RB.build_log.htm | 74 ---- MDK-ARM/NUCLEO-F103RB/NUCLEO-F103RB.htm | 345 ---------------- MDK-ARM/NUCLEO-F103RB/NUCLEO-F103RB.lnp | 18 - MDK-ARM/NUCLEO-F103RB/NUCLEO-F103RB.map | 378 ------------------ MDK-ARM/NUCLEO-F103RB/NUCLEO-F103RB.sct | 16 - MDK-ARM/NUCLEO-F103RB/NUCLEO-F103RB_sct.Bak | 15 - .../NUCLEO-F103RB/Project_NUCLEO-F103RB.dep | 50 --- MDK-ARM/NUCLEO-F103RB/Project_Simulateur.dep | 67 ---- MDK-ARM/NUCLEO-F103RB/allure.crf | Bin 18 -> 0 bytes MDK-ARM/NUCLEO-F103RB/allure.d | 1 - MDK-ARM/NUCLEO-F103RB/allure.o | Bin 4740 -> 0 bytes MDK-ARM/NUCLEO-F103RB/anticharvirement.crf | Bin 18 -> 0 bytes MDK-ARM/NUCLEO-F103RB/anticharvirement.d | 1 - MDK-ARM/NUCLEO-F103RB/anticharvirement.o | Bin 4816 -> 0 bytes MDK-ARM/NUCLEO-F103RB/batterie.crf | Bin 18 -> 0 bytes MDK-ARM/NUCLEO-F103RB/batterie.d | 1 - MDK-ARM/NUCLEO-F103RB/batterie.o | Bin 4760 -> 0 bytes MDK-ARM/NUCLEO-F103RB/chrono.crf | Bin 373469 -> 0 bytes MDK-ARM/NUCLEO-F103RB/chrono.d | 10 - MDK-ARM/NUCLEO-F103RB/chrono.o | Bin 396688 -> 0 bytes MDK-ARM/NUCLEO-F103RB/gouvernail.crf | Bin 18 -> 0 bytes MDK-ARM/NUCLEO-F103RB/gouvernail.d | 1 - MDK-ARM/NUCLEO-F103RB/gouvernail.o | Bin 4768 -> 0 bytes MDK-ARM/NUCLEO-F103RB/heure.crf | Bin 18 -> 0 bytes MDK-ARM/NUCLEO-F103RB/heure.d | 1 - MDK-ARM/NUCLEO-F103RB/heure.o | Bin 4736 -> 0 bytes MDK-ARM/NUCLEO-F103RB/main.crf | Bin 394716 -> 0 bytes MDK-ARM/NUCLEO-F103RB/main.d | 14 - MDK-ARM/NUCLEO-F103RB/main.o | Bin 408160 -> 0 bytes MDK-ARM/NUCLEO-F103RB/mytimer.crf | Bin 373859 -> 0 bytes MDK-ARM/NUCLEO-F103RB/mytimer.d | 8 - MDK-ARM/NUCLEO-F103RB/mytimer.o | Bin 399780 -> 0 bytes MDK-ARM/NUCLEO-F103RB/startup_stm32f103xb.d | 1 - MDK-ARM/NUCLEO-F103RB/startup_stm32f103xb.o | Bin 5868 -> 0 bytes MDK-ARM/NUCLEO-F103RB/stm32f1xx_it.d | 4 - MDK-ARM/NUCLEO-F103RB/stm32f1xx_ll_adc.d | 2 - MDK-ARM/NUCLEO-F103RB/stm32f1xx_ll_crc.d | 2 - MDK-ARM/NUCLEO-F103RB/stm32f1xx_ll_dac.d | 2 - MDK-ARM/NUCLEO-F103RB/stm32f1xx_ll_dma.d | 2 - MDK-ARM/NUCLEO-F103RB/stm32f1xx_ll_exti.d | 2 - MDK-ARM/NUCLEO-F103RB/stm32f1xx_ll_gpio.d | 2 - MDK-ARM/NUCLEO-F103RB/stm32f1xx_ll_i2c.d | 2 - MDK-ARM/NUCLEO-F103RB/stm32f1xx_ll_pwr.d | 2 - MDK-ARM/NUCLEO-F103RB/stm32f1xx_ll_rcc.crf | Bin 389870 -> 0 bytes MDK-ARM/NUCLEO-F103RB/stm32f1xx_ll_rcc.d | 10 - MDK-ARM/NUCLEO-F103RB/stm32f1xx_ll_rcc.o | Bin 413376 -> 0 bytes MDK-ARM/NUCLEO-F103RB/stm32f1xx_ll_rtc.d | 2 - MDK-ARM/NUCLEO-F103RB/stm32f1xx_ll_spi.d | 2 - MDK-ARM/NUCLEO-F103RB/stm32f1xx_ll_tim.d | 2 - MDK-ARM/NUCLEO-F103RB/stm32f1xx_ll_usart.d | 2 - MDK-ARM/NUCLEO-F103RB/stm32f1xx_ll_utils.crf | Bin 396190 -> 0 bytes MDK-ARM/NUCLEO-F103RB/stm32f1xx_ll_utils.d | 12 - MDK-ARM/NUCLEO-F103RB/stm32f1xx_ll_utils.o | Bin 422584 -> 0 bytes MDK-ARM/NUCLEO-F103RB/system_stm32f1xx.crf | Bin 373980 -> 0 bytes MDK-ARM/NUCLEO-F103RB/system_stm32f1xx.d | 9 - MDK-ARM/NUCLEO-F103RB/system_stm32f1xx.o | Bin 391772 -> 0 bytes MDK-ARM/NUCLEO-F103RB/transmission.crf | Bin 18 -> 0 bytes MDK-ARM/NUCLEO-F103RB/transmission.d | 1 - MDK-ARM/NUCLEO-F103RB/transmission.o | Bin 4788 -> 0 bytes MDK-ARM/NUCLEO-F103RB/voile.crf | Bin 18 -> 0 bytes MDK-ARM/NUCLEO-F103RB/voile.d | 1 - MDK-ARM/NUCLEO-F103RB/voile.o | Bin 4736 -> 0 bytes MDK-ARM/NUCLEO-F103RB/voilier.crf | Bin 74 -> 0 bytes MDK-ARM/NUCLEO-F103RB/voilier.d | 1 - MDK-ARM/NUCLEO-F103RB/voilier.o | Bin 6020 -> 0 bytes 67 files changed, 1065 deletions(-) delete mode 100644 MDK-ARM/NUCLEO-F103RB/ExtDll.iex delete mode 100644 MDK-ARM/NUCLEO-F103RB/NUCLEO-F103RB.axf delete mode 100644 MDK-ARM/NUCLEO-F103RB/NUCLEO-F103RB.build_log.htm delete mode 100644 MDK-ARM/NUCLEO-F103RB/NUCLEO-F103RB.htm delete mode 100644 MDK-ARM/NUCLEO-F103RB/NUCLEO-F103RB.lnp delete mode 100644 MDK-ARM/NUCLEO-F103RB/NUCLEO-F103RB.map delete mode 100644 MDK-ARM/NUCLEO-F103RB/NUCLEO-F103RB.sct delete mode 100644 MDK-ARM/NUCLEO-F103RB/NUCLEO-F103RB_sct.Bak delete mode 100644 MDK-ARM/NUCLEO-F103RB/Project_NUCLEO-F103RB.dep delete mode 100644 MDK-ARM/NUCLEO-F103RB/Project_Simulateur.dep delete mode 100644 MDK-ARM/NUCLEO-F103RB/allure.crf delete mode 100644 MDK-ARM/NUCLEO-F103RB/allure.d delete mode 100644 MDK-ARM/NUCLEO-F103RB/allure.o delete mode 100644 MDK-ARM/NUCLEO-F103RB/anticharvirement.crf delete mode 100644 MDK-ARM/NUCLEO-F103RB/anticharvirement.d delete mode 100644 MDK-ARM/NUCLEO-F103RB/anticharvirement.o delete mode 100644 MDK-ARM/NUCLEO-F103RB/batterie.crf delete mode 100644 MDK-ARM/NUCLEO-F103RB/batterie.d delete mode 100644 MDK-ARM/NUCLEO-F103RB/batterie.o delete mode 100644 MDK-ARM/NUCLEO-F103RB/chrono.crf delete mode 100644 MDK-ARM/NUCLEO-F103RB/chrono.d delete mode 100644 MDK-ARM/NUCLEO-F103RB/chrono.o delete mode 100644 MDK-ARM/NUCLEO-F103RB/gouvernail.crf delete mode 100644 MDK-ARM/NUCLEO-F103RB/gouvernail.d delete mode 100644 MDK-ARM/NUCLEO-F103RB/gouvernail.o delete mode 100644 MDK-ARM/NUCLEO-F103RB/heure.crf delete mode 100644 MDK-ARM/NUCLEO-F103RB/heure.d delete mode 100644 MDK-ARM/NUCLEO-F103RB/heure.o delete mode 100644 MDK-ARM/NUCLEO-F103RB/main.crf delete mode 100644 MDK-ARM/NUCLEO-F103RB/main.d delete mode 100644 MDK-ARM/NUCLEO-F103RB/main.o delete mode 100644 MDK-ARM/NUCLEO-F103RB/mytimer.crf delete mode 100644 MDK-ARM/NUCLEO-F103RB/mytimer.d delete mode 100644 MDK-ARM/NUCLEO-F103RB/mytimer.o delete mode 100644 MDK-ARM/NUCLEO-F103RB/startup_stm32f103xb.d delete mode 100644 MDK-ARM/NUCLEO-F103RB/startup_stm32f103xb.o delete mode 100644 MDK-ARM/NUCLEO-F103RB/stm32f1xx_it.d delete mode 100644 MDK-ARM/NUCLEO-F103RB/stm32f1xx_ll_adc.d delete mode 100644 MDK-ARM/NUCLEO-F103RB/stm32f1xx_ll_crc.d delete mode 100644 MDK-ARM/NUCLEO-F103RB/stm32f1xx_ll_dac.d delete mode 100644 MDK-ARM/NUCLEO-F103RB/stm32f1xx_ll_dma.d delete mode 100644 MDK-ARM/NUCLEO-F103RB/stm32f1xx_ll_exti.d delete mode 100644 MDK-ARM/NUCLEO-F103RB/stm32f1xx_ll_gpio.d delete mode 100644 MDK-ARM/NUCLEO-F103RB/stm32f1xx_ll_i2c.d delete mode 100644 MDK-ARM/NUCLEO-F103RB/stm32f1xx_ll_pwr.d delete mode 100644 MDK-ARM/NUCLEO-F103RB/stm32f1xx_ll_rcc.crf delete mode 100644 MDK-ARM/NUCLEO-F103RB/stm32f1xx_ll_rcc.d delete mode 100644 MDK-ARM/NUCLEO-F103RB/stm32f1xx_ll_rcc.o delete mode 100644 MDK-ARM/NUCLEO-F103RB/stm32f1xx_ll_rtc.d delete mode 100644 MDK-ARM/NUCLEO-F103RB/stm32f1xx_ll_spi.d delete mode 100644 MDK-ARM/NUCLEO-F103RB/stm32f1xx_ll_tim.d delete mode 100644 MDK-ARM/NUCLEO-F103RB/stm32f1xx_ll_usart.d delete mode 100644 MDK-ARM/NUCLEO-F103RB/stm32f1xx_ll_utils.crf delete mode 100644 MDK-ARM/NUCLEO-F103RB/stm32f1xx_ll_utils.d delete mode 100644 MDK-ARM/NUCLEO-F103RB/stm32f1xx_ll_utils.o delete mode 100644 MDK-ARM/NUCLEO-F103RB/system_stm32f1xx.crf delete mode 100644 MDK-ARM/NUCLEO-F103RB/system_stm32f1xx.d delete mode 100644 MDK-ARM/NUCLEO-F103RB/system_stm32f1xx.o delete mode 100644 MDK-ARM/NUCLEO-F103RB/transmission.crf delete mode 100644 MDK-ARM/NUCLEO-F103RB/transmission.d delete mode 100644 MDK-ARM/NUCLEO-F103RB/transmission.o delete mode 100644 MDK-ARM/NUCLEO-F103RB/voile.crf delete mode 100644 MDK-ARM/NUCLEO-F103RB/voile.d delete mode 100644 MDK-ARM/NUCLEO-F103RB/voile.o delete mode 100644 MDK-ARM/NUCLEO-F103RB/voilier.crf delete mode 100644 MDK-ARM/NUCLEO-F103RB/voilier.d delete mode 100644 MDK-ARM/NUCLEO-F103RB/voilier.o diff --git a/MDK-ARM/NUCLEO-F103RB/ExtDll.iex b/MDK-ARM/NUCLEO-F103RB/ExtDll.iex deleted file mode 100644 index 6c0896e..0000000 --- a/MDK-ARM/NUCLEO-F103RB/ExtDll.iex +++ /dev/null @@ -1,2 +0,0 @@ -[EXTDLL] -Count=0 diff --git a/MDK-ARM/NUCLEO-F103RB/NUCLEO-F103RB.axf b/MDK-ARM/NUCLEO-F103RB/NUCLEO-F103RB.axf deleted file mode 100644 index d141ceee7b4fca70f5de095d09dfb1d6b7416e7f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 363316 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 - -

    -

    µVision Build Log

    -

    Tool Versions:

    -IDE-Version: µVision V5.29.0.0 -Copyright (C) 2019 ARM Ltd and ARM Germany GmbH. All rights reserved. -License Information: Toto Lala, INSA Toulouse, LIC=---- - -Tool Versions: -Toolchain: MDK-Lite Version: 5.29.0.0 -Toolchain Path: F:\Keil\ARM\ARMCC\Bin -C Compiler: Armcc.exe V5.06 update 6 (build 750) -Assembler: Armasm.exe V5.06 update 6 (build 750) -Linker/Locator: ArmLink.exe V5.06 update 6 (build 750) -Library Manager: ArmAr.exe V5.06 update 6 (build 750) -Hex Converter: FromElf.exe V5.06 update 6 (build 750) -CPU DLL: SARMCM3.DLL V5.29.0.0 -Dialog DLL: DARMSTM.DLL V1.68.0.0 -Target DLL: STLink\ST-LINKIII-KEIL_SWO.dll V3.0.7.0 -Dialog DLL: TARMSTM.DLL V1.66.0.0 - -

    Project:

    -C:\Users\elies\Desktop\Cours\4A\Info Mat\Projet_Voilier_4IR\MDK-ARM\Project.uvprojx -Project File Date: 10/12/2020 - -

    Output:

    -*** Using Compiler 'V5.06 update 6 (build 750)', folder: 'F:\Keil\ARM\ARMCC\Bin' -Rebuild target 'NUCLEO-F103RB' -compiling Allure.c... -compiling Voilier.c... -..\Src\Voilier.c(3): warning: #1-D: last line of file ends without a newline - } -..\Src\Voilier.c: 1 warning, 0 errors -compiling AntiCharvirement.c... -compiling Batterie.c... -compiling Gouvernail.c... -compiling Heure.c... -compiling Transmission.c... -compiling Voile.c... -compiling MyTimer.c... -compiling stm32f1xx_ll_rcc.c... -compiling stm32f1xx_ll_utils.c... -assembling startup_stm32f103xb.s... -compiling system_stm32f1xx.c... -linking... -Program Size: Code=296 RO-data=268 RW-data=16 ZI-data=1024 -"NUCLEO-F103RB\NUCLEO-F103RB.axf" - 0 Error(s), 1 Warning(s). - -

    Software Packages used:

    - -Package Vendor: ARM - http://www.keil.com/pack/ARM.CMSIS.5.6.0.pack - ARM.CMSIS.5.6.0 - CMSIS (Cortex Microcontroller Software Interface Standard) - * Component: CORE Version: 5.3.0 - -Package Vendor: Keil - http://www.keil.com/pack/Keil.STM32F1xx_DFP.2.3.0.pack - Keil.STM32F1xx_DFP.2.3.0 - STMicroelectronics STM32F1 Series Device Support, Drivers and Examples - -

    Collection of Component include folders:

    - .\RTE\_NUCLEO-F103RB - C:\Users\elies\AppData\Local\Arm\Packs\ARM\CMSIS\5.6.0\CMSIS\Core\Include - C:\Users\elies\AppData\Local\Arm\Packs\Keil\STM32F1xx_DFP\2.3.0\Device\Include - -

    Collection of Component Files used:

    - - * Component: ARM::CMSIS:CORE:5.3.0 -Build Time Elapsed: 00:00:04 -
    - - diff --git a/MDK-ARM/NUCLEO-F103RB/NUCLEO-F103RB.htm b/MDK-ARM/NUCLEO-F103RB/NUCLEO-F103RB.htm deleted file mode 100644 index 33fbab3..0000000 --- a/MDK-ARM/NUCLEO-F103RB/NUCLEO-F103RB.htm +++ /dev/null @@ -1,345 +0,0 @@ - - -Static Call Graph - [NUCLEO-F103RB\NUCLEO-F103RB.axf] -
    -

    Static Call Graph for image NUCLEO-F103RB\NUCLEO-F103RB.axf


    -

    #<CALLGRAPH># ARM Linker, 5060750: Last Updated: Mon Oct 12 09:03:11 2020 -

    -

    Maximum Stack Usage = 8 bytes + Unknown(Cycles, Untraceable Function Pointers)

    -Call chain for Maximum Stack Depth:

    -TIM1_UP_IRQHandler -

    -

    -Mutually Recursive functions -

  • NMI_Handler   ⇒   NMI_Handler
    -
  • HardFault_Handler   ⇒   HardFault_Handler
    -
  • MemManage_Handler   ⇒   MemManage_Handler
    -
  • BusFault_Handler   ⇒   BusFault_Handler
    -
  • UsageFault_Handler   ⇒   UsageFault_Handler
    -
  • SVC_Handler   ⇒   SVC_Handler
    -
  • DebugMon_Handler   ⇒   DebugMon_Handler
    -
  • PendSV_Handler   ⇒   PendSV_Handler
    -
  • SysTick_Handler   ⇒   SysTick_Handler
    -
  • ADC1_2_IRQHandler   ⇒   ADC1_2_IRQHandler
    - -

    -

    -Function Pointers -

      -
    • ADC1_2_IRQHandler from startup_stm32f103xb.o(.text) referenced from startup_stm32f103xb.o(RESET) -
    • BusFault_Handler from startup_stm32f103xb.o(.text) referenced from startup_stm32f103xb.o(RESET) -
    • CAN1_RX1_IRQHandler from startup_stm32f103xb.o(.text) referenced from startup_stm32f103xb.o(RESET) -
    • CAN1_SCE_IRQHandler from startup_stm32f103xb.o(.text) referenced from startup_stm32f103xb.o(RESET) -
    • DMA1_Channel1_IRQHandler from startup_stm32f103xb.o(.text) referenced from startup_stm32f103xb.o(RESET) -
    • DMA1_Channel2_IRQHandler from startup_stm32f103xb.o(.text) referenced from startup_stm32f103xb.o(RESET) -
    • DMA1_Channel3_IRQHandler from startup_stm32f103xb.o(.text) referenced from startup_stm32f103xb.o(RESET) -
    • DMA1_Channel4_IRQHandler from startup_stm32f103xb.o(.text) referenced from startup_stm32f103xb.o(RESET) -
    • DMA1_Channel5_IRQHandler from startup_stm32f103xb.o(.text) referenced from startup_stm32f103xb.o(RESET) -
    • DMA1_Channel6_IRQHandler from startup_stm32f103xb.o(.text) referenced from startup_stm32f103xb.o(RESET) -
    • DMA1_Channel7_IRQHandler from startup_stm32f103xb.o(.text) referenced from startup_stm32f103xb.o(RESET) -
    • DebugMon_Handler from startup_stm32f103xb.o(.text) referenced from startup_stm32f103xb.o(RESET) -
    • EXTI0_IRQHandler from startup_stm32f103xb.o(.text) referenced from startup_stm32f103xb.o(RESET) -
    • EXTI15_10_IRQHandler from startup_stm32f103xb.o(.text) referenced from startup_stm32f103xb.o(RESET) -
    • EXTI1_IRQHandler from startup_stm32f103xb.o(.text) referenced from startup_stm32f103xb.o(RESET) -
    • EXTI2_IRQHandler from startup_stm32f103xb.o(.text) referenced from startup_stm32f103xb.o(RESET) -
    • EXTI3_IRQHandler from startup_stm32f103xb.o(.text) referenced from startup_stm32f103xb.o(RESET) -
    • EXTI4_IRQHandler from startup_stm32f103xb.o(.text) referenced from startup_stm32f103xb.o(RESET) -
    • EXTI9_5_IRQHandler from startup_stm32f103xb.o(.text) referenced from startup_stm32f103xb.o(RESET) -
    • FLASH_IRQHandler from startup_stm32f103xb.o(.text) referenced from startup_stm32f103xb.o(RESET) -
    • HardFault_Handler from startup_stm32f103xb.o(.text) referenced from startup_stm32f103xb.o(RESET) -
    • I2C1_ER_IRQHandler from startup_stm32f103xb.o(.text) referenced from startup_stm32f103xb.o(RESET) -
    • I2C1_EV_IRQHandler from startup_stm32f103xb.o(.text) referenced from startup_stm32f103xb.o(RESET) -
    • I2C2_ER_IRQHandler from startup_stm32f103xb.o(.text) referenced from startup_stm32f103xb.o(RESET) -
    • I2C2_EV_IRQHandler from startup_stm32f103xb.o(.text) referenced from startup_stm32f103xb.o(RESET) -
    • MemManage_Handler from startup_stm32f103xb.o(.text) referenced from startup_stm32f103xb.o(RESET) -
    • NMI_Handler from startup_stm32f103xb.o(.text) referenced from startup_stm32f103xb.o(RESET) -
    • PVD_IRQHandler from startup_stm32f103xb.o(.text) referenced from startup_stm32f103xb.o(RESET) -
    • PendSV_Handler from startup_stm32f103xb.o(.text) referenced from startup_stm32f103xb.o(RESET) -
    • RCC_IRQHandler from startup_stm32f103xb.o(.text) referenced from startup_stm32f103xb.o(RESET) -
    • RTC_Alarm_IRQHandler from startup_stm32f103xb.o(.text) referenced from startup_stm32f103xb.o(RESET) -
    • RTC_IRQHandler from startup_stm32f103xb.o(.text) referenced from startup_stm32f103xb.o(RESET) -
    • Reset_Handler from startup_stm32f103xb.o(.text) referenced from startup_stm32f103xb.o(RESET) -
    • SPI1_IRQHandler from startup_stm32f103xb.o(.text) referenced from startup_stm32f103xb.o(RESET) -
    • SPI2_IRQHandler from startup_stm32f103xb.o(.text) referenced from startup_stm32f103xb.o(RESET) -
    • SVC_Handler from startup_stm32f103xb.o(.text) referenced from startup_stm32f103xb.o(RESET) -
    • SysTick_Handler from startup_stm32f103xb.o(.text) referenced from startup_stm32f103xb.o(RESET) -
    • SystemInit from system_stm32f1xx.o(i.SystemInit) referenced from startup_stm32f103xb.o(.text) -
    • TAMPER_IRQHandler from startup_stm32f103xb.o(.text) referenced from startup_stm32f103xb.o(RESET) -
    • TIM1_BRK_IRQHandler from startup_stm32f103xb.o(.text) referenced from startup_stm32f103xb.o(RESET) -
    • TIM1_CC_IRQHandler from startup_stm32f103xb.o(.text) referenced from startup_stm32f103xb.o(RESET) -
    • TIM1_TRG_COM_IRQHandler from startup_stm32f103xb.o(.text) referenced from startup_stm32f103xb.o(RESET) -
    • TIM1_UP_IRQHandler from mytimer.o(i.TIM1_UP_IRQHandler) referenced from startup_stm32f103xb.o(RESET) -
    • TIM2_IRQHandler from mytimer.o(i.TIM2_IRQHandler) referenced from startup_stm32f103xb.o(RESET) -
    • TIM3_IRQHandler from mytimer.o(i.TIM3_IRQHandler) referenced from startup_stm32f103xb.o(RESET) -
    • TIM4_IRQHandler from mytimer.o(i.TIM4_IRQHandler) referenced from startup_stm32f103xb.o(RESET) -
    • USART1_IRQHandler from startup_stm32f103xb.o(.text) referenced from startup_stm32f103xb.o(RESET) -
    • USART2_IRQHandler from startup_stm32f103xb.o(.text) referenced from startup_stm32f103xb.o(RESET) -
    • USART3_IRQHandler from startup_stm32f103xb.o(.text) referenced from startup_stm32f103xb.o(RESET) -
    • USBWakeUp_IRQHandler from startup_stm32f103xb.o(.text) referenced from startup_stm32f103xb.o(RESET) -
    • USB_HP_CAN1_TX_IRQHandler from startup_stm32f103xb.o(.text) referenced from startup_stm32f103xb.o(RESET) -
    • USB_LP_CAN1_RX0_IRQHandler from startup_stm32f103xb.o(.text) referenced from startup_stm32f103xb.o(RESET) -
    • UsageFault_Handler from startup_stm32f103xb.o(.text) referenced from startup_stm32f103xb.o(RESET) -
    • WWDG_IRQHandler from startup_stm32f103xb.o(.text) referenced from startup_stm32f103xb.o(RESET) -
    • __main from entry.o(.ARM.Collect$$$$00000000) referenced from startup_stm32f103xb.o(.text) -
    • main from voilier.o(i.main) referenced from entry9a.o(.ARM.Collect$$$$0000000B) -
    -

    -

    -Global Symbols -

    -

    __main (Thumb, 0 bytes, Stack size unknown bytes, entry.o(.ARM.Collect$$$$00000000)) -
    [Address Reference Count : 1]

    • startup_stm32f103xb.o(.text) -
    -

    _main_stk (Thumb, 0 bytes, Stack size unknown bytes, entry2.o(.ARM.Collect$$$$00000001)) - -

    _main_scatterload (Thumb, 0 bytes, Stack size unknown bytes, entry5.o(.ARM.Collect$$$$00000004)) -

    [Calls]

    • >>   __scatterload -
    - -

    __main_after_scatterload (Thumb, 0 bytes, Stack size unknown bytes, entry5.o(.ARM.Collect$$$$00000004)) -

    [Called By]

    • >>   __scatterload -
    - -

    _main_clock (Thumb, 0 bytes, Stack size unknown bytes, entry7b.o(.ARM.Collect$$$$00000008)) - -

    _main_cpp_init (Thumb, 0 bytes, Stack size unknown bytes, entry8b.o(.ARM.Collect$$$$0000000A)) - -

    _main_init (Thumb, 0 bytes, Stack size unknown bytes, entry9a.o(.ARM.Collect$$$$0000000B)) - -

    __rt_final_cpp (Thumb, 0 bytes, Stack size unknown bytes, entry10a.o(.ARM.Collect$$$$0000000D)) - -

    __rt_final_exit (Thumb, 0 bytes, Stack size unknown bytes, entry11a.o(.ARM.Collect$$$$0000000F)) - -

    Reset_Handler (Thumb, 8 bytes, Stack size 0 bytes, startup_stm32f103xb.o(.text)) -
    [Address Reference Count : 1]

    • startup_stm32f103xb.o(RESET) -
    -

    NMI_Handler (Thumb, 2 bytes, Stack size 0 bytes, startup_stm32f103xb.o(.text)) -

    [Calls]

    • >>   NMI_Handler -
    -
    [Called By]
    • >>   NMI_Handler -
    -
    [Address Reference Count : 1]
    • startup_stm32f103xb.o(RESET) -
    -

    HardFault_Handler (Thumb, 2 bytes, Stack size 0 bytes, startup_stm32f103xb.o(.text)) -

    [Calls]

    • >>   HardFault_Handler -
    -
    [Called By]
    • >>   HardFault_Handler -
    -
    [Address Reference Count : 1]
    • startup_stm32f103xb.o(RESET) -
    -

    MemManage_Handler (Thumb, 2 bytes, Stack size 0 bytes, startup_stm32f103xb.o(.text)) -

    [Calls]

    • >>   MemManage_Handler -
    -
    [Called By]
    • >>   MemManage_Handler -
    -
    [Address Reference Count : 1]
    • startup_stm32f103xb.o(RESET) -
    -

    BusFault_Handler (Thumb, 2 bytes, Stack size 0 bytes, startup_stm32f103xb.o(.text)) -

    [Calls]

    • >>   BusFault_Handler -
    -
    [Called By]
    • >>   BusFault_Handler -
    -
    [Address Reference Count : 1]
    • startup_stm32f103xb.o(RESET) -
    -

    UsageFault_Handler (Thumb, 2 bytes, Stack size 0 bytes, startup_stm32f103xb.o(.text)) -

    [Calls]

    • >>   UsageFault_Handler -
    -
    [Called By]
    • >>   UsageFault_Handler -
    -
    [Address Reference Count : 1]
    • startup_stm32f103xb.o(RESET) -
    -

    SVC_Handler (Thumb, 2 bytes, Stack size 0 bytes, startup_stm32f103xb.o(.text)) -

    [Calls]

    • >>   SVC_Handler -
    -
    [Called By]
    • >>   SVC_Handler -
    -
    [Address Reference Count : 1]
    • startup_stm32f103xb.o(RESET) -
    -

    DebugMon_Handler (Thumb, 2 bytes, Stack size 0 bytes, startup_stm32f103xb.o(.text)) -

    [Calls]

    • >>   DebugMon_Handler -
    -
    [Called By]
    • >>   DebugMon_Handler -
    -
    [Address Reference Count : 1]
    • startup_stm32f103xb.o(RESET) -
    -

    PendSV_Handler (Thumb, 2 bytes, Stack size 0 bytes, startup_stm32f103xb.o(.text)) -

    [Calls]

    • >>   PendSV_Handler -
    -
    [Called By]
    • >>   PendSV_Handler -
    -
    [Address Reference Count : 1]
    • startup_stm32f103xb.o(RESET) -
    -

    SysTick_Handler (Thumb, 2 bytes, Stack size 0 bytes, startup_stm32f103xb.o(.text)) -

    [Calls]

    • >>   SysTick_Handler -
    -
    [Called By]
    • >>   SysTick_Handler -
    -
    [Address Reference Count : 1]
    • startup_stm32f103xb.o(RESET) -
    -

    ADC1_2_IRQHandler (Thumb, 0 bytes, Stack size 0 bytes, startup_stm32f103xb.o(.text)) -

    [Calls]

    • >>   ADC1_2_IRQHandler -
    -
    [Called By]
    • >>   ADC1_2_IRQHandler -
    -
    [Address Reference Count : 1]
    • startup_stm32f103xb.o(RESET) -
    -

    CAN1_RX1_IRQHandler (Thumb, 0 bytes, Stack size 0 bytes, startup_stm32f103xb.o(.text)) -
    [Address Reference Count : 1]

    • startup_stm32f103xb.o(RESET) -
    -

    CAN1_SCE_IRQHandler (Thumb, 0 bytes, Stack size 0 bytes, startup_stm32f103xb.o(.text)) -
    [Address Reference Count : 1]

    • startup_stm32f103xb.o(RESET) -
    -

    DMA1_Channel1_IRQHandler (Thumb, 0 bytes, Stack size 0 bytes, startup_stm32f103xb.o(.text)) -
    [Address Reference Count : 1]

    • startup_stm32f103xb.o(RESET) -
    -

    DMA1_Channel2_IRQHandler (Thumb, 0 bytes, Stack size 0 bytes, startup_stm32f103xb.o(.text)) -
    [Address Reference Count : 1]

    • startup_stm32f103xb.o(RESET) -
    -

    DMA1_Channel3_IRQHandler (Thumb, 0 bytes, Stack size 0 bytes, startup_stm32f103xb.o(.text)) -
    [Address Reference Count : 1]

    • startup_stm32f103xb.o(RESET) -
    -

    DMA1_Channel4_IRQHandler (Thumb, 0 bytes, Stack size 0 bytes, startup_stm32f103xb.o(.text)) -
    [Address Reference Count : 1]

    • startup_stm32f103xb.o(RESET) -
    -

    DMA1_Channel5_IRQHandler (Thumb, 0 bytes, Stack size 0 bytes, startup_stm32f103xb.o(.text)) -
    [Address Reference Count : 1]

    • startup_stm32f103xb.o(RESET) -
    -

    DMA1_Channel6_IRQHandler (Thumb, 0 bytes, Stack size 0 bytes, startup_stm32f103xb.o(.text)) -
    [Address Reference Count : 1]

    • startup_stm32f103xb.o(RESET) -
    -

    DMA1_Channel7_IRQHandler (Thumb, 0 bytes, Stack size 0 bytes, startup_stm32f103xb.o(.text)) -
    [Address Reference Count : 1]

    • startup_stm32f103xb.o(RESET) -
    -

    EXTI0_IRQHandler (Thumb, 0 bytes, Stack size 0 bytes, startup_stm32f103xb.o(.text)) -
    [Address Reference Count : 1]

    • startup_stm32f103xb.o(RESET) -
    -

    EXTI15_10_IRQHandler (Thumb, 0 bytes, Stack size 0 bytes, startup_stm32f103xb.o(.text)) -
    [Address Reference Count : 1]

    • startup_stm32f103xb.o(RESET) -
    -

    EXTI1_IRQHandler (Thumb, 0 bytes, Stack size 0 bytes, startup_stm32f103xb.o(.text)) -
    [Address Reference Count : 1]

    • startup_stm32f103xb.o(RESET) -
    -

    EXTI2_IRQHandler (Thumb, 0 bytes, Stack size 0 bytes, startup_stm32f103xb.o(.text)) -
    [Address Reference Count : 1]

    • startup_stm32f103xb.o(RESET) -
    -

    EXTI3_IRQHandler (Thumb, 0 bytes, Stack size 0 bytes, startup_stm32f103xb.o(.text)) -
    [Address Reference Count : 1]

    • startup_stm32f103xb.o(RESET) -
    -

    EXTI4_IRQHandler (Thumb, 0 bytes, Stack size 0 bytes, startup_stm32f103xb.o(.text)) -
    [Address Reference Count : 1]

    • startup_stm32f103xb.o(RESET) -
    -

    EXTI9_5_IRQHandler (Thumb, 0 bytes, Stack size 0 bytes, startup_stm32f103xb.o(.text)) -
    [Address Reference Count : 1]

    • startup_stm32f103xb.o(RESET) -
    -

    FLASH_IRQHandler (Thumb, 0 bytes, Stack size 0 bytes, startup_stm32f103xb.o(.text)) -
    [Address Reference Count : 1]

    • startup_stm32f103xb.o(RESET) -
    -

    I2C1_ER_IRQHandler (Thumb, 0 bytes, Stack size 0 bytes, startup_stm32f103xb.o(.text)) -
    [Address Reference Count : 1]

    • startup_stm32f103xb.o(RESET) -
    -

    I2C1_EV_IRQHandler (Thumb, 0 bytes, Stack size 0 bytes, startup_stm32f103xb.o(.text)) -
    [Address Reference Count : 1]

    • startup_stm32f103xb.o(RESET) -
    -

    I2C2_ER_IRQHandler (Thumb, 0 bytes, Stack size 0 bytes, startup_stm32f103xb.o(.text)) -
    [Address Reference Count : 1]

    • startup_stm32f103xb.o(RESET) -
    -

    I2C2_EV_IRQHandler (Thumb, 0 bytes, Stack size 0 bytes, startup_stm32f103xb.o(.text)) -
    [Address Reference Count : 1]

    • startup_stm32f103xb.o(RESET) -
    -

    PVD_IRQHandler (Thumb, 0 bytes, Stack size 0 bytes, startup_stm32f103xb.o(.text)) -
    [Address Reference Count : 1]

    • startup_stm32f103xb.o(RESET) -
    -

    RCC_IRQHandler (Thumb, 0 bytes, Stack size 0 bytes, startup_stm32f103xb.o(.text)) -
    [Address Reference Count : 1]

    • startup_stm32f103xb.o(RESET) -
    -

    RTC_Alarm_IRQHandler (Thumb, 0 bytes, Stack size 0 bytes, startup_stm32f103xb.o(.text)) -
    [Address Reference Count : 1]

    • startup_stm32f103xb.o(RESET) -
    -

    RTC_IRQHandler (Thumb, 0 bytes, Stack size 0 bytes, startup_stm32f103xb.o(.text)) -
    [Address Reference Count : 1]

    • startup_stm32f103xb.o(RESET) -
    -

    SPI1_IRQHandler (Thumb, 0 bytes, Stack size 0 bytes, startup_stm32f103xb.o(.text)) -
    [Address Reference Count : 1]

    • startup_stm32f103xb.o(RESET) -
    -

    SPI2_IRQHandler (Thumb, 0 bytes, Stack size 0 bytes, startup_stm32f103xb.o(.text)) -
    [Address Reference Count : 1]

    • startup_stm32f103xb.o(RESET) -
    -

    TAMPER_IRQHandler (Thumb, 0 bytes, Stack size 0 bytes, startup_stm32f103xb.o(.text)) -
    [Address Reference Count : 1]

    • startup_stm32f103xb.o(RESET) -
    -

    TIM1_BRK_IRQHandler (Thumb, 0 bytes, Stack size 0 bytes, startup_stm32f103xb.o(.text)) -
    [Address Reference Count : 1]

    • startup_stm32f103xb.o(RESET) -
    -

    TIM1_CC_IRQHandler (Thumb, 0 bytes, Stack size 0 bytes, startup_stm32f103xb.o(.text)) -
    [Address Reference Count : 1]

    • startup_stm32f103xb.o(RESET) -
    -

    TIM1_TRG_COM_IRQHandler (Thumb, 0 bytes, Stack size 0 bytes, startup_stm32f103xb.o(.text)) -
    [Address Reference Count : 1]

    • startup_stm32f103xb.o(RESET) -
    -

    USART1_IRQHandler (Thumb, 0 bytes, Stack size 0 bytes, startup_stm32f103xb.o(.text)) -
    [Address Reference Count : 1]

    • startup_stm32f103xb.o(RESET) -
    -

    USART2_IRQHandler (Thumb, 0 bytes, Stack size 0 bytes, startup_stm32f103xb.o(.text)) -
    [Address Reference Count : 1]

    • startup_stm32f103xb.o(RESET) -
    -

    USART3_IRQHandler (Thumb, 0 bytes, Stack size 0 bytes, startup_stm32f103xb.o(.text)) -
    [Address Reference Count : 1]

    • startup_stm32f103xb.o(RESET) -
    -

    USBWakeUp_IRQHandler (Thumb, 0 bytes, Stack size 0 bytes, startup_stm32f103xb.o(.text)) -
    [Address Reference Count : 1]

    • startup_stm32f103xb.o(RESET) -
    -

    USB_HP_CAN1_TX_IRQHandler (Thumb, 0 bytes, Stack size 0 bytes, startup_stm32f103xb.o(.text)) -
    [Address Reference Count : 1]

    • startup_stm32f103xb.o(RESET) -
    -

    USB_LP_CAN1_RX0_IRQHandler (Thumb, 0 bytes, Stack size 0 bytes, startup_stm32f103xb.o(.text)) -
    [Address Reference Count : 1]

    • startup_stm32f103xb.o(RESET) -
    -

    WWDG_IRQHandler (Thumb, 0 bytes, Stack size 0 bytes, startup_stm32f103xb.o(.text)) -
    [Address Reference Count : 1]

    • startup_stm32f103xb.o(RESET) -
    -

    __scatterload (Thumb, 28 bytes, Stack size 0 bytes, init.o(.text)) -

    [Calls]

    • >>   __main_after_scatterload -
    -
    [Called By]
    • >>   _main_scatterload -
    - -

    __scatterload_rt2 (Thumb, 0 bytes, Stack size 0 bytes, init.o(.text), UNUSED) - -

    SystemInit (Thumb, 56 bytes, Stack size 0 bytes, system_stm32f1xx.o(i.SystemInit)) -
    [Address Reference Count : 1]

    • startup_stm32f103xb.o(.text) -
    -

    TIM1_UP_IRQHandler (Thumb, 16 bytes, Stack size 8 bytes, mytimer.o(i.TIM1_UP_IRQHandler)) -

    [Stack]

    • Max Depth = 8
    • Call Chain = TIM1_UP_IRQHandler -
    -
    [Address Reference Count : 1]
    • startup_stm32f103xb.o(RESET) -
    -

    TIM2_IRQHandler (Thumb, 18 bytes, Stack size 8 bytes, mytimer.o(i.TIM2_IRQHandler)) -

    [Stack]

    • Max Depth = 8
    • Call Chain = TIM2_IRQHandler -
    -
    [Address Reference Count : 1]
    • startup_stm32f103xb.o(RESET) -
    -

    TIM3_IRQHandler (Thumb, 16 bytes, Stack size 8 bytes, mytimer.o(i.TIM3_IRQHandler)) -

    [Stack]

    • Max Depth = 8
    • Call Chain = TIM3_IRQHandler -
    -
    [Address Reference Count : 1]
    • startup_stm32f103xb.o(RESET) -
    -

    TIM4_IRQHandler (Thumb, 16 bytes, Stack size 8 bytes, mytimer.o(i.TIM4_IRQHandler)) -

    [Stack]

    • Max Depth = 8
    • Call Chain = TIM4_IRQHandler -
    -
    [Address Reference Count : 1]
    • startup_stm32f103xb.o(RESET) -
    -

    __scatterload_copy (Thumb, 14 bytes, Stack size unknown bytes, handlers.o(i.__scatterload_copy), UNUSED) - -

    __scatterload_null (Thumb, 2 bytes, Stack size unknown bytes, handlers.o(i.__scatterload_null), UNUSED) - -

    __scatterload_zeroinit (Thumb, 14 bytes, Stack size unknown bytes, handlers.o(i.__scatterload_zeroinit), UNUSED) - -

    main (Thumb, 4 bytes, Stack size 0 bytes, voilier.o(i.main)) -
    [Address Reference Count : 1]

    • entry9a.o(.ARM.Collect$$$$0000000B) -

    -

    -Local Symbols -

    -

    -Undefined Global Symbols -


    diff --git a/MDK-ARM/NUCLEO-F103RB/NUCLEO-F103RB.lnp b/MDK-ARM/NUCLEO-F103RB/NUCLEO-F103RB.lnp deleted file mode 100644 index 67521aa..0000000 --- a/MDK-ARM/NUCLEO-F103RB/NUCLEO-F103RB.lnp +++ /dev/null @@ -1,18 +0,0 @@ ---cpu Cortex-M3 -"nucleo-f103rb\voilier.o" -"nucleo-f103rb\mytimer.o" -"nucleo-f103rb\allure.o" -"nucleo-f103rb\anticharvirement.o" -"nucleo-f103rb\batterie.o" -"nucleo-f103rb\gouvernail.o" -"nucleo-f103rb\heure.o" -"nucleo-f103rb\transmission.o" -"nucleo-f103rb\voile.o" -"nucleo-f103rb\stm32f1xx_ll_rcc.o" -"nucleo-f103rb\stm32f1xx_ll_utils.o" -"nucleo-f103rb\system_stm32f1xx.o" -"nucleo-f103rb\startup_stm32f103xb.o" ---library_type=microlib --strict --scatter "NUCLEO-F103RB\NUCLEO-F103RB.sct" ---summary_stderr --info summarysizes --map --load_addr_map_info --xref --callgraph --symbols ---info sizes --info totals --info unused --info veneers ---list "NUCLEO-F103RB.map" -o NUCLEO-F103RB\NUCLEO-F103RB.axf \ No newline at end of file diff --git a/MDK-ARM/NUCLEO-F103RB/NUCLEO-F103RB.map b/MDK-ARM/NUCLEO-F103RB/NUCLEO-F103RB.map deleted file mode 100644 index 8306e02..0000000 --- a/MDK-ARM/NUCLEO-F103RB/NUCLEO-F103RB.map +++ /dev/null @@ -1,378 +0,0 @@ -Component: ARM Compiler 5.06 update 6 (build 750) Tool: armlink [4d35ed] - -============================================================================== - -Section Cross References - - mytimer.o(i.MyTimer_IT_Conf) refers to mytimer.o(.data) for .data - mytimer.o(i.TIM1_UP_IRQHandler) refers to mytimer.o(.data) for .data - mytimer.o(i.TIM2_IRQHandler) refers to mytimer.o(.data) for .data - mytimer.o(i.TIM3_IRQHandler) refers to mytimer.o(.data) for .data - mytimer.o(i.TIM4_IRQHandler) refers to mytimer.o(.data) for .data - stm32f1xx_ll_rcc.o(i.LL_RCC_GetADCClockFreq) refers to stm32f1xx_ll_rcc.o(i.RCC_GetSystemClockFreq) for RCC_GetSystemClockFreq - stm32f1xx_ll_rcc.o(i.LL_RCC_GetADCClockFreq) refers to stm32f1xx_ll_rcc.o(i.RCC_GetHCLKClockFreq) for RCC_GetHCLKClockFreq - stm32f1xx_ll_rcc.o(i.LL_RCC_GetADCClockFreq) refers to stm32f1xx_ll_rcc.o(i.RCC_GetPCLK2ClockFreq) for RCC_GetPCLK2ClockFreq - stm32f1xx_ll_rcc.o(i.LL_RCC_GetSystemClocksFreq) refers to stm32f1xx_ll_rcc.o(i.RCC_GetSystemClockFreq) for RCC_GetSystemClockFreq - stm32f1xx_ll_rcc.o(i.LL_RCC_GetSystemClocksFreq) refers to stm32f1xx_ll_rcc.o(i.RCC_GetHCLKClockFreq) for RCC_GetHCLKClockFreq - stm32f1xx_ll_rcc.o(i.LL_RCC_GetSystemClocksFreq) refers to stm32f1xx_ll_rcc.o(i.RCC_GetPCLK1ClockFreq) for RCC_GetPCLK1ClockFreq - stm32f1xx_ll_rcc.o(i.LL_RCC_GetSystemClocksFreq) refers to stm32f1xx_ll_rcc.o(i.RCC_GetPCLK2ClockFreq) for RCC_GetPCLK2ClockFreq - stm32f1xx_ll_rcc.o(i.LL_RCC_GetUSBClockFreq) refers to stm32f1xx_ll_rcc.o(i.RCC_PLL_GetFreqDomain_SYS) for RCC_PLL_GetFreqDomain_SYS - stm32f1xx_ll_rcc.o(i.RCC_GetHCLKClockFreq) refers to system_stm32f1xx.o(.constdata) for AHBPrescTable - stm32f1xx_ll_rcc.o(i.RCC_GetPCLK1ClockFreq) refers to system_stm32f1xx.o(.constdata) for APBPrescTable - stm32f1xx_ll_rcc.o(i.RCC_GetPCLK2ClockFreq) refers to system_stm32f1xx.o(.constdata) for APBPrescTable - stm32f1xx_ll_rcc.o(i.RCC_GetSystemClockFreq) refers to stm32f1xx_ll_rcc.o(i.RCC_PLL_GetFreqDomain_SYS) for RCC_PLL_GetFreqDomain_SYS - stm32f1xx_ll_utils.o(i.LL_PLL_ConfigSystemClock_HSE) refers to stm32f1xx_ll_utils.o(i.UTILS_PLL_IsBusy) for UTILS_PLL_IsBusy - stm32f1xx_ll_utils.o(i.LL_PLL_ConfigSystemClock_HSE) refers to stm32f1xx_ll_utils.o(i.UTILS_GetPLLOutputFrequency) for UTILS_GetPLLOutputFrequency - stm32f1xx_ll_utils.o(i.LL_PLL_ConfigSystemClock_HSE) refers to stm32f1xx_ll_utils.o(i.LL_RCC_PLL_ConfigDomain_SYS) for LL_RCC_PLL_ConfigDomain_SYS - stm32f1xx_ll_utils.o(i.LL_PLL_ConfigSystemClock_HSE) refers to stm32f1xx_ll_utils.o(i.UTILS_EnablePLLAndSwitchSystem) for UTILS_EnablePLLAndSwitchSystem - stm32f1xx_ll_utils.o(i.LL_PLL_ConfigSystemClock_HSI) refers to stm32f1xx_ll_utils.o(i.UTILS_PLL_IsBusy) for UTILS_PLL_IsBusy - stm32f1xx_ll_utils.o(i.LL_PLL_ConfigSystemClock_HSI) refers to stm32f1xx_ll_utils.o(i.UTILS_GetPLLOutputFrequency) for UTILS_GetPLLOutputFrequency - stm32f1xx_ll_utils.o(i.LL_PLL_ConfigSystemClock_HSI) refers to stm32f1xx_ll_utils.o(i.LL_RCC_PLL_ConfigDomain_SYS) for LL_RCC_PLL_ConfigDomain_SYS - stm32f1xx_ll_utils.o(i.LL_PLL_ConfigSystemClock_HSI) refers to stm32f1xx_ll_utils.o(i.UTILS_EnablePLLAndSwitchSystem) for UTILS_EnablePLLAndSwitchSystem - stm32f1xx_ll_utils.o(i.LL_SetSystemCoreClock) refers to system_stm32f1xx.o(.data) for SystemCoreClock - stm32f1xx_ll_utils.o(i.UTILS_EnablePLLAndSwitchSystem) refers to stm32f1xx_ll_utils.o(i.UTILS_SetFlashLatency) for UTILS_SetFlashLatency - stm32f1xx_ll_utils.o(i.UTILS_EnablePLLAndSwitchSystem) refers to system_stm32f1xx.o(.constdata) for AHBPrescTable - stm32f1xx_ll_utils.o(i.UTILS_EnablePLLAndSwitchSystem) refers to system_stm32f1xx.o(.data) for SystemCoreClock - system_stm32f1xx.o(i.SystemCoreClockUpdate) refers to system_stm32f1xx.o(.data) for .data - system_stm32f1xx.o(i.SystemCoreClockUpdate) refers to system_stm32f1xx.o(.constdata) for .constdata - startup_stm32f103xb.o(RESET) refers to startup_stm32f103xb.o(STACK) for __initial_sp - startup_stm32f103xb.o(RESET) refers to startup_stm32f103xb.o(.text) for Reset_Handler - startup_stm32f103xb.o(RESET) refers to mytimer.o(i.TIM1_UP_IRQHandler) for TIM1_UP_IRQHandler - startup_stm32f103xb.o(RESET) refers to mytimer.o(i.TIM2_IRQHandler) for TIM2_IRQHandler - startup_stm32f103xb.o(RESET) refers to mytimer.o(i.TIM3_IRQHandler) for TIM3_IRQHandler - startup_stm32f103xb.o(RESET) refers to mytimer.o(i.TIM4_IRQHandler) for TIM4_IRQHandler - startup_stm32f103xb.o(.text) refers to system_stm32f1xx.o(i.SystemInit) for SystemInit - startup_stm32f103xb.o(.text) refers to entry.o(.ARM.Collect$$$$00000000) for __main - entry.o(.ARM.Collect$$$$00000000) refers (Special) to entry10a.o(.ARM.Collect$$$$0000000D) for __rt_final_cpp - entry.o(.ARM.Collect$$$$00000000) refers (Special) to entry11a.o(.ARM.Collect$$$$0000000F) for __rt_final_exit - entry.o(.ARM.Collect$$$$00000000) refers (Special) to entry7b.o(.ARM.Collect$$$$00000008) for _main_clock - entry.o(.ARM.Collect$$$$00000000) refers (Special) to entry8b.o(.ARM.Collect$$$$0000000A) for _main_cpp_init - entry.o(.ARM.Collect$$$$00000000) refers (Special) to entry9a.o(.ARM.Collect$$$$0000000B) for _main_init - entry.o(.ARM.Collect$$$$00000000) refers (Special) to entry5.o(.ARM.Collect$$$$00000004) for _main_scatterload - entry.o(.ARM.Collect$$$$00000000) refers (Special) to entry2.o(.ARM.Collect$$$$00000001) for _main_stk - entry2.o(.ARM.Collect$$$$00000001) refers to entry2.o(.ARM.Collect$$$$00002712) for __lit__00000000 - entry2.o(.ARM.Collect$$$$00002712) refers to startup_stm32f103xb.o(STACK) for __initial_sp - entry2.o(__vectab_stack_and_reset_area) refers to startup_stm32f103xb.o(STACK) for __initial_sp - entry2.o(__vectab_stack_and_reset_area) refers to entry.o(.ARM.Collect$$$$00000000) for __main - entry5.o(.ARM.Collect$$$$00000004) refers to init.o(.text) for __scatterload - entry9a.o(.ARM.Collect$$$$0000000B) refers to voilier.o(i.main) for main - entry9b.o(.ARM.Collect$$$$0000000C) refers to voilier.o(i.main) for main - init.o(.text) refers to entry5.o(.ARM.Collect$$$$00000004) for __main_after_scatterload - - -============================================================================== - -Removing Unused input sections from the image. - - Removing mytimer.o(.rev16_text), (4 bytes). - Removing mytimer.o(.revsh_text), (4 bytes). - Removing mytimer.o(.rrx_text), (6 bytes). - Removing mytimer.o(i.MyTimer_Conf), (76 bytes). - Removing mytimer.o(i.MyTimer_IT_Conf), (152 bytes). - Removing mytimer.o(i.MyTimer_IT_Disable), (68 bytes). - Removing mytimer.o(i.MyTimer_Start), (10 bytes). - Removing mytimer.o(i.MyTimer_Stop), (10 bytes). - Removing stm32f1xx_ll_rcc.o(.rev16_text), (4 bytes). - Removing stm32f1xx_ll_rcc.o(.revsh_text), (4 bytes). - Removing stm32f1xx_ll_rcc.o(.rrx_text), (6 bytes). - Removing stm32f1xx_ll_rcc.o(i.LL_RCC_DeInit), (96 bytes). - Removing stm32f1xx_ll_rcc.o(i.LL_RCC_GetADCClockFreq), (48 bytes). - Removing stm32f1xx_ll_rcc.o(i.LL_RCC_GetSystemClocksFreq), (32 bytes). - Removing stm32f1xx_ll_rcc.o(i.LL_RCC_GetUSBClockFreq), (56 bytes). - Removing stm32f1xx_ll_rcc.o(i.RCC_GetHCLKClockFreq), (28 bytes). - Removing stm32f1xx_ll_rcc.o(i.RCC_GetPCLK1ClockFreq), (28 bytes). - Removing stm32f1xx_ll_rcc.o(i.RCC_GetPCLK2ClockFreq), (28 bytes). - Removing stm32f1xx_ll_rcc.o(i.RCC_GetSystemClockFreq), (36 bytes). - Removing stm32f1xx_ll_rcc.o(i.RCC_PLL_GetFreqDomain_SYS), (60 bytes). - Removing stm32f1xx_ll_utils.o(.rev16_text), (4 bytes). - Removing stm32f1xx_ll_utils.o(.revsh_text), (4 bytes). - Removing stm32f1xx_ll_utils.o(.rrx_text), (6 bytes). - Removing stm32f1xx_ll_utils.o(i.LL_Init1msTick), (26 bytes). - Removing stm32f1xx_ll_utils.o(i.LL_PLL_ConfigSystemClock_HSE), (108 bytes). - Removing stm32f1xx_ll_utils.o(i.LL_PLL_ConfigSystemClock_HSI), (88 bytes). - Removing stm32f1xx_ll_utils.o(i.LL_RCC_PLL_ConfigDomain_SYS), (24 bytes). - Removing stm32f1xx_ll_utils.o(i.LL_SetSystemCoreClock), (12 bytes). - Removing stm32f1xx_ll_utils.o(i.LL_mDelay), (30 bytes). - Removing stm32f1xx_ll_utils.o(i.UTILS_EnablePLLAndSwitchSystem), (172 bytes). - Removing stm32f1xx_ll_utils.o(i.UTILS_GetPLLOutputFrequency), (24 bytes). - Removing stm32f1xx_ll_utils.o(i.UTILS_PLL_IsBusy), (24 bytes). - Removing stm32f1xx_ll_utils.o(i.UTILS_SetFlashLatency), (68 bytes). - Removing system_stm32f1xx.o(.rev16_text), (4 bytes). - Removing system_stm32f1xx.o(.revsh_text), (4 bytes). - Removing system_stm32f1xx.o(.rrx_text), (6 bytes). - Removing system_stm32f1xx.o(i.SystemCoreClockUpdate), (104 bytes). - Removing system_stm32f1xx.o(.constdata), (16 bytes). - Removing system_stm32f1xx.o(.constdata), (8 bytes). - Removing system_stm32f1xx.o(.data), (4 bytes). - Removing startup_stm32f103xb.o(HEAP), (512 bytes). - -41 unused section(s) (total 2004 bytes) removed from the image. - -============================================================================== - -Image Symbol Table - - Local Symbols - - Symbol Name Value Ov Type Size Object(Section) - - ../Src/system_stm32f1xx.c 0x00000000 Number 0 system_stm32f1xx.o ABSOLUTE - ../clib/microlib/init/entry.s 0x00000000 Number 0 entry9b.o ABSOLUTE - ../clib/microlib/init/entry.s 0x00000000 Number 0 entry2.o ABSOLUTE - ../clib/microlib/init/entry.s 0x00000000 Number 0 entry9a.o ABSOLUTE - ../clib/microlib/init/entry.s 0x00000000 Number 0 entry8b.o ABSOLUTE - ../clib/microlib/init/entry.s 0x00000000 Number 0 entry8a.o ABSOLUTE - ../clib/microlib/init/entry.s 0x00000000 Number 0 entry5.o ABSOLUTE - ../clib/microlib/init/entry.s 0x00000000 Number 0 entry7b.o ABSOLUTE - ../clib/microlib/init/entry.s 0x00000000 Number 0 entry7a.o ABSOLUTE - ../clib/microlib/init/entry.s 0x00000000 Number 0 entry.o ABSOLUTE - ../clib/microlib/init/entry.s 0x00000000 Number 0 entry10a.o ABSOLUTE - ../clib/microlib/init/entry.s 0x00000000 Number 0 entry10b.o ABSOLUTE - ../clib/microlib/init/entry.s 0x00000000 Number 0 entry11a.o ABSOLUTE - ../clib/microlib/init/entry.s 0x00000000 Number 0 entry11b.o ABSOLUTE - ..\LLDrivers\src\stm32f1xx_ll_rcc.c 0x00000000 Number 0 stm32f1xx_ll_rcc.o ABSOLUTE - ..\LLDrivers\src\stm32f1xx_ll_utils.c 0x00000000 Number 0 stm32f1xx_ll_utils.o ABSOLUTE - ..\MyDrivers\MyTimer.c 0x00000000 Number 0 mytimer.o ABSOLUTE - ..\Src\Allure.c 0x00000000 Number 0 allure.o ABSOLUTE - ..\Src\AntiCharvirement.c 0x00000000 Number 0 anticharvirement.o ABSOLUTE - ..\Src\Batterie.c 0x00000000 Number 0 batterie.o ABSOLUTE - ..\Src\Gouvernail.c 0x00000000 Number 0 gouvernail.o ABSOLUTE - ..\Src\Heure.c 0x00000000 Number 0 heure.o ABSOLUTE - ..\Src\Transmission.c 0x00000000 Number 0 transmission.o ABSOLUTE - ..\Src\Voile.c 0x00000000 Number 0 voile.o ABSOLUTE - ..\Src\Voilier.c 0x00000000 Number 0 voilier.o ABSOLUTE - ..\Src\system_stm32f1xx.c 0x00000000 Number 0 system_stm32f1xx.o ABSOLUTE - ..\\LLDrivers\\src\\stm32f1xx_ll_rcc.c 0x00000000 Number 0 stm32f1xx_ll_rcc.o ABSOLUTE - ..\\LLDrivers\\src\\stm32f1xx_ll_utils.c 0x00000000 Number 0 stm32f1xx_ll_utils.o ABSOLUTE - ..\\MyDrivers\\MyTimer.c 0x00000000 Number 0 mytimer.o ABSOLUTE - dc.s 0x00000000 Number 0 dc.o ABSOLUTE - handlers.s 0x00000000 Number 0 handlers.o ABSOLUTE - init.s 0x00000000 Number 0 init.o ABSOLUTE - startup_stm32f103xb.s 0x00000000 Number 0 startup_stm32f103xb.o ABSOLUTE - RESET 0x08000000 Section 236 startup_stm32f103xb.o(RESET) - .ARM.Collect$$$$00000000 0x080000ec Section 0 entry.o(.ARM.Collect$$$$00000000) - .ARM.Collect$$$$00000001 0x080000ec Section 4 entry2.o(.ARM.Collect$$$$00000001) - .ARM.Collect$$$$00000004 0x080000f0 Section 4 entry5.o(.ARM.Collect$$$$00000004) - .ARM.Collect$$$$00000008 0x080000f4 Section 0 entry7b.o(.ARM.Collect$$$$00000008) - .ARM.Collect$$$$0000000A 0x080000f4 Section 0 entry8b.o(.ARM.Collect$$$$0000000A) - .ARM.Collect$$$$0000000B 0x080000f4 Section 8 entry9a.o(.ARM.Collect$$$$0000000B) - .ARM.Collect$$$$0000000D 0x080000fc Section 0 entry10a.o(.ARM.Collect$$$$0000000D) - .ARM.Collect$$$$0000000F 0x080000fc Section 0 entry11a.o(.ARM.Collect$$$$0000000F) - .ARM.Collect$$$$00002712 0x080000fc Section 4 entry2.o(.ARM.Collect$$$$00002712) - __lit__00000000 0x080000fc Data 4 entry2.o(.ARM.Collect$$$$00002712) - .text 0x08000100 Section 36 startup_stm32f103xb.o(.text) - .text 0x08000124 Section 36 init.o(.text) - i.SystemInit 0x08000148 Section 0 system_stm32f1xx.o(i.SystemInit) - i.TIM1_UP_IRQHandler 0x08000190 Section 0 mytimer.o(i.TIM1_UP_IRQHandler) - i.TIM2_IRQHandler 0x080001a8 Section 0 mytimer.o(i.TIM2_IRQHandler) - i.TIM3_IRQHandler 0x080001c0 Section 0 mytimer.o(i.TIM3_IRQHandler) - i.TIM4_IRQHandler 0x080001d8 Section 0 mytimer.o(i.TIM4_IRQHandler) - i.__scatterload_copy 0x080001f0 Section 14 handlers.o(i.__scatterload_copy) - i.__scatterload_null 0x080001fe Section 2 handlers.o(i.__scatterload_null) - i.__scatterload_zeroinit 0x08000200 Section 14 handlers.o(i.__scatterload_zeroinit) - i.main 0x0800020e Section 0 voilier.o(i.main) - .data 0x20000000 Section 16 mytimer.o(.data) - STACK 0x20000010 Section 1024 startup_stm32f103xb.o(STACK) - - Global Symbols - - Symbol Name Value Ov Type Size Object(Section) - - BuildAttributes$$THM_ISAv4$P$D$K$B$S$PE$A:L22UL41UL21$X:L11$S22US41US21$IEEE1$IW$USESV6$~STKCKD$USESV7$~SHL$OSPACE$EBA8$MICROLIB$REQ8$PRES8$EABIv2 0x00000000 Number 0 anon$$obj.o ABSOLUTE - __ARM_use_no_argv 0x00000000 Number 0 voilier.o ABSOLUTE - __cpp_initialize__aeabi_ - Undefined Weak Reference - __cxa_finalize - Undefined Weak Reference - __decompress - Undefined Weak Reference - _clock_init - Undefined Weak Reference - _microlib_exit - Undefined Weak Reference - __Vectors_Size 0x000000ec Number 0 startup_stm32f103xb.o ABSOLUTE - __Vectors 0x08000000 Data 4 startup_stm32f103xb.o(RESET) - __Vectors_End 0x080000ec Data 0 startup_stm32f103xb.o(RESET) - __main 0x080000ed Thumb Code 0 entry.o(.ARM.Collect$$$$00000000) - _main_stk 0x080000ed Thumb Code 0 entry2.o(.ARM.Collect$$$$00000001) - _main_scatterload 0x080000f1 Thumb Code 0 entry5.o(.ARM.Collect$$$$00000004) - __main_after_scatterload 0x080000f5 Thumb Code 0 entry5.o(.ARM.Collect$$$$00000004) - _main_clock 0x080000f5 Thumb Code 0 entry7b.o(.ARM.Collect$$$$00000008) - _main_cpp_init 0x080000f5 Thumb Code 0 entry8b.o(.ARM.Collect$$$$0000000A) - _main_init 0x080000f5 Thumb Code 0 entry9a.o(.ARM.Collect$$$$0000000B) - __rt_final_cpp 0x080000fd Thumb Code 0 entry10a.o(.ARM.Collect$$$$0000000D) - __rt_final_exit 0x080000fd Thumb Code 0 entry11a.o(.ARM.Collect$$$$0000000F) - Reset_Handler 0x08000101 Thumb Code 8 startup_stm32f103xb.o(.text) - NMI_Handler 0x08000109 Thumb Code 2 startup_stm32f103xb.o(.text) - HardFault_Handler 0x0800010b Thumb Code 2 startup_stm32f103xb.o(.text) - MemManage_Handler 0x0800010d Thumb Code 2 startup_stm32f103xb.o(.text) - BusFault_Handler 0x0800010f Thumb Code 2 startup_stm32f103xb.o(.text) - UsageFault_Handler 0x08000111 Thumb Code 2 startup_stm32f103xb.o(.text) - SVC_Handler 0x08000113 Thumb Code 2 startup_stm32f103xb.o(.text) - DebugMon_Handler 0x08000115 Thumb Code 2 startup_stm32f103xb.o(.text) - PendSV_Handler 0x08000117 Thumb Code 2 startup_stm32f103xb.o(.text) - SysTick_Handler 0x08000119 Thumb Code 2 startup_stm32f103xb.o(.text) - ADC1_2_IRQHandler 0x0800011b Thumb Code 0 startup_stm32f103xb.o(.text) - CAN1_RX1_IRQHandler 0x0800011b Thumb Code 0 startup_stm32f103xb.o(.text) - CAN1_SCE_IRQHandler 0x0800011b Thumb Code 0 startup_stm32f103xb.o(.text) - DMA1_Channel1_IRQHandler 0x0800011b Thumb Code 0 startup_stm32f103xb.o(.text) - DMA1_Channel2_IRQHandler 0x0800011b Thumb Code 0 startup_stm32f103xb.o(.text) - DMA1_Channel3_IRQHandler 0x0800011b Thumb Code 0 startup_stm32f103xb.o(.text) - DMA1_Channel4_IRQHandler 0x0800011b Thumb Code 0 startup_stm32f103xb.o(.text) - DMA1_Channel5_IRQHandler 0x0800011b Thumb Code 0 startup_stm32f103xb.o(.text) - DMA1_Channel6_IRQHandler 0x0800011b Thumb Code 0 startup_stm32f103xb.o(.text) - DMA1_Channel7_IRQHandler 0x0800011b Thumb Code 0 startup_stm32f103xb.o(.text) - EXTI0_IRQHandler 0x0800011b Thumb Code 0 startup_stm32f103xb.o(.text) - EXTI15_10_IRQHandler 0x0800011b Thumb Code 0 startup_stm32f103xb.o(.text) - EXTI1_IRQHandler 0x0800011b Thumb Code 0 startup_stm32f103xb.o(.text) - EXTI2_IRQHandler 0x0800011b Thumb Code 0 startup_stm32f103xb.o(.text) - EXTI3_IRQHandler 0x0800011b Thumb Code 0 startup_stm32f103xb.o(.text) - EXTI4_IRQHandler 0x0800011b Thumb Code 0 startup_stm32f103xb.o(.text) - EXTI9_5_IRQHandler 0x0800011b Thumb Code 0 startup_stm32f103xb.o(.text) - FLASH_IRQHandler 0x0800011b Thumb Code 0 startup_stm32f103xb.o(.text) - I2C1_ER_IRQHandler 0x0800011b Thumb Code 0 startup_stm32f103xb.o(.text) - I2C1_EV_IRQHandler 0x0800011b Thumb Code 0 startup_stm32f103xb.o(.text) - I2C2_ER_IRQHandler 0x0800011b Thumb Code 0 startup_stm32f103xb.o(.text) - I2C2_EV_IRQHandler 0x0800011b Thumb Code 0 startup_stm32f103xb.o(.text) - PVD_IRQHandler 0x0800011b Thumb Code 0 startup_stm32f103xb.o(.text) - RCC_IRQHandler 0x0800011b Thumb Code 0 startup_stm32f103xb.o(.text) - RTC_Alarm_IRQHandler 0x0800011b Thumb Code 0 startup_stm32f103xb.o(.text) - RTC_IRQHandler 0x0800011b Thumb Code 0 startup_stm32f103xb.o(.text) - SPI1_IRQHandler 0x0800011b Thumb Code 0 startup_stm32f103xb.o(.text) - SPI2_IRQHandler 0x0800011b Thumb Code 0 startup_stm32f103xb.o(.text) - TAMPER_IRQHandler 0x0800011b Thumb Code 0 startup_stm32f103xb.o(.text) - TIM1_BRK_IRQHandler 0x0800011b Thumb Code 0 startup_stm32f103xb.o(.text) - TIM1_CC_IRQHandler 0x0800011b Thumb Code 0 startup_stm32f103xb.o(.text) - TIM1_TRG_COM_IRQHandler 0x0800011b Thumb Code 0 startup_stm32f103xb.o(.text) - USART1_IRQHandler 0x0800011b Thumb Code 0 startup_stm32f103xb.o(.text) - USART2_IRQHandler 0x0800011b Thumb Code 0 startup_stm32f103xb.o(.text) - USART3_IRQHandler 0x0800011b Thumb Code 0 startup_stm32f103xb.o(.text) - USBWakeUp_IRQHandler 0x0800011b Thumb Code 0 startup_stm32f103xb.o(.text) - USB_HP_CAN1_TX_IRQHandler 0x0800011b Thumb Code 0 startup_stm32f103xb.o(.text) - USB_LP_CAN1_RX0_IRQHandler 0x0800011b Thumb Code 0 startup_stm32f103xb.o(.text) - WWDG_IRQHandler 0x0800011b Thumb Code 0 startup_stm32f103xb.o(.text) - __scatterload 0x08000125 Thumb Code 28 init.o(.text) - __scatterload_rt2 0x08000125 Thumb Code 0 init.o(.text) - SystemInit 0x08000149 Thumb Code 56 system_stm32f1xx.o(i.SystemInit) - TIM1_UP_IRQHandler 0x08000191 Thumb Code 16 mytimer.o(i.TIM1_UP_IRQHandler) - TIM2_IRQHandler 0x080001a9 Thumb Code 18 mytimer.o(i.TIM2_IRQHandler) - TIM3_IRQHandler 0x080001c1 Thumb Code 16 mytimer.o(i.TIM3_IRQHandler) - TIM4_IRQHandler 0x080001d9 Thumb Code 16 mytimer.o(i.TIM4_IRQHandler) - __scatterload_copy 0x080001f1 Thumb Code 14 handlers.o(i.__scatterload_copy) - __scatterload_null 0x080001ff Thumb Code 2 handlers.o(i.__scatterload_null) - __scatterload_zeroinit 0x08000201 Thumb Code 14 handlers.o(i.__scatterload_zeroinit) - main 0x0800020f Thumb Code 4 voilier.o(i.main) - Region$$Table$$Base 0x08000214 Number 0 anon$$obj.o(Region$$Table) - Region$$Table$$Limit 0x08000234 Number 0 anon$$obj.o(Region$$Table) - pTIM1_Overflow 0x20000000 Data 4 mytimer.o(.data) - pTIM2_Overflow 0x20000004 Data 4 mytimer.o(.data) - pTIM3_Overflow 0x20000008 Data 4 mytimer.o(.data) - pTIM4_Overflow 0x2000000c Data 4 mytimer.o(.data) - __initial_sp 0x20000410 Data 0 startup_stm32f103xb.o(STACK) - - - -============================================================================== - -Memory Map of the image - - Image Entry point : 0x080000ed - - Load Region LR_IROM1 (Base: 0x08000000, Size: 0x00000244, Max: 0x00020000, ABSOLUTE) - - Execution Region ER_IROM1 (Exec base: 0x08000000, Load base: 0x08000000, Size: 0x00000234, Max: 0x00020000, ABSOLUTE) - - Exec Addr Load Addr Size Type Attr Idx E Section Name Object - - 0x08000000 0x08000000 0x000000ec Data RO 329 RESET startup_stm32f103xb.o - 0x080000ec 0x080000ec 0x00000000 Code RO 334 * .ARM.Collect$$$$00000000 mc_w.l(entry.o) - 0x080000ec 0x080000ec 0x00000004 Code RO 337 .ARM.Collect$$$$00000001 mc_w.l(entry2.o) - 0x080000f0 0x080000f0 0x00000004 Code RO 340 .ARM.Collect$$$$00000004 mc_w.l(entry5.o) - 0x080000f4 0x080000f4 0x00000000 Code RO 342 .ARM.Collect$$$$00000008 mc_w.l(entry7b.o) - 0x080000f4 0x080000f4 0x00000000 Code RO 344 .ARM.Collect$$$$0000000A mc_w.l(entry8b.o) - 0x080000f4 0x080000f4 0x00000008 Code RO 345 .ARM.Collect$$$$0000000B mc_w.l(entry9a.o) - 0x080000fc 0x080000fc 0x00000000 Code RO 347 .ARM.Collect$$$$0000000D mc_w.l(entry10a.o) - 0x080000fc 0x080000fc 0x00000000 Code RO 349 .ARM.Collect$$$$0000000F mc_w.l(entry11a.o) - 0x080000fc 0x080000fc 0x00000004 Code RO 338 .ARM.Collect$$$$00002712 mc_w.l(entry2.o) - 0x08000100 0x08000100 0x00000024 Code RO 330 .text startup_stm32f103xb.o - 0x08000124 0x08000124 0x00000024 Code RO 351 .text mc_w.l(init.o) - 0x08000148 0x08000148 0x00000048 Code RO 293 i.SystemInit system_stm32f1xx.o - 0x08000190 0x08000190 0x00000018 Code RO 20 i.TIM1_UP_IRQHandler mytimer.o - 0x080001a8 0x080001a8 0x00000018 Code RO 21 i.TIM2_IRQHandler mytimer.o - 0x080001c0 0x080001c0 0x00000018 Code RO 22 i.TIM3_IRQHandler mytimer.o - 0x080001d8 0x080001d8 0x00000018 Code RO 23 i.TIM4_IRQHandler mytimer.o - 0x080001f0 0x080001f0 0x0000000e Code RO 355 i.__scatterload_copy mc_w.l(handlers.o) - 0x080001fe 0x080001fe 0x00000002 Code RO 356 i.__scatterload_null mc_w.l(handlers.o) - 0x08000200 0x08000200 0x0000000e Code RO 357 i.__scatterload_zeroinit mc_w.l(handlers.o) - 0x0800020e 0x0800020e 0x00000004 Code RO 1 i.main voilier.o - 0x08000212 0x08000212 0x00000002 PAD - 0x08000214 0x08000214 0x00000020 Data RO 353 Region$$Table anon$$obj.o - - - Execution Region RW_IRAM1 (Exec base: 0x20000000, Load base: 0x08000234, Size: 0x00000410, Max: 0x00005000, ABSOLUTE) - - Exec Addr Load Addr Size Type Attr Idx E Section Name Object - - 0x20000000 0x08000234 0x00000010 Data RW 24 .data mytimer.o - 0x20000010 - 0x00000400 Zero RW 327 STACK startup_stm32f103xb.o - - -============================================================================== - -Image component sizes - - - Code (inc. data) RO Data RW Data ZI Data Debug Object Name - - 96 30 0 16 0 342549 mytimer.o - 36 8 236 0 1024 780 startup_stm32f103xb.o - 72 16 0 0 0 465 system_stm32f1xx.o - 4 0 0 0 0 1863 voilier.o - - ---------------------------------------------------------------------- - 210 54 268 16 1024 345657 Object Totals - 0 0 32 0 0 0 (incl. Generated) - 2 0 0 0 0 0 (incl. Padding) - - ---------------------------------------------------------------------- - - Code (inc. data) RO Data RW Data ZI Data Debug Library Member Name - - 0 0 0 0 0 0 entry.o - 0 0 0 0 0 0 entry10a.o - 0 0 0 0 0 0 entry11a.o - 8 4 0 0 0 0 entry2.o - 4 0 0 0 0 0 entry5.o - 0 0 0 0 0 0 entry7b.o - 0 0 0 0 0 0 entry8b.o - 8 4 0 0 0 0 entry9a.o - 30 0 0 0 0 0 handlers.o - 36 8 0 0 0 68 init.o - - ---------------------------------------------------------------------- - 86 16 0 0 0 68 Library Totals - 0 0 0 0 0 0 (incl. Padding) - - ---------------------------------------------------------------------- - - Code (inc. data) RO Data RW Data ZI Data Debug Library Name - - 86 16 0 0 0 68 mc_w.l - - ---------------------------------------------------------------------- - 86 16 0 0 0 68 Library Totals - - ---------------------------------------------------------------------- - -============================================================================== - - - Code (inc. data) RO Data RW Data ZI Data Debug - - 296 70 268 16 1024 345721 Grand Totals - 296 70 268 16 1024 345721 ELF Image Totals - 296 70 268 16 0 0 ROM Totals - -============================================================================== - - Total RO Size (Code + RO Data) 564 ( 0.55kB) - Total RW Size (RW Data + ZI Data) 1040 ( 1.02kB) - Total ROM Size (Code + RO Data + RW Data) 580 ( 0.57kB) - -============================================================================== - diff --git a/MDK-ARM/NUCLEO-F103RB/NUCLEO-F103RB.sct b/MDK-ARM/NUCLEO-F103RB/NUCLEO-F103RB.sct deleted file mode 100644 index bbacbc6..0000000 --- a/MDK-ARM/NUCLEO-F103RB/NUCLEO-F103RB.sct +++ /dev/null @@ -1,16 +0,0 @@ -; ************************************************************* -; *** Scatter-Loading Description File generated by uVision *** -; ************************************************************* - -LR_IROM1 0x08000000 0x00020000 { ; load region size_region - ER_IROM1 0x08000000 0x00020000 { ; load address = execution address - *.o (RESET, +First) - *(InRoot$$Sections) - .ANY (+RO) - .ANY (+XO) - } - RW_IRAM1 0x20000000 0x00005000 { ; RW data - .ANY (+RW +ZI) - } -} - diff --git a/MDK-ARM/NUCLEO-F103RB/NUCLEO-F103RB_sct.Bak b/MDK-ARM/NUCLEO-F103RB/NUCLEO-F103RB_sct.Bak deleted file mode 100644 index c26b647..0000000 --- a/MDK-ARM/NUCLEO-F103RB/NUCLEO-F103RB_sct.Bak +++ /dev/null @@ -1,15 +0,0 @@ -; ************************************************************* -; *** Scatter-Loading Description File generated by uVision *** -; ************************************************************* - -LR_IROM1 0x08000000 0x00020000 { ; load region size_region - ER_IROM1 0x08000000 0x00020000 { ; load address = execution address - *.o (RESET, +First) - *(InRoot$$Sections) - .ANY (+RO) - } - RW_IRAM1 0x20000000 0x00005000 { ; RW data - .ANY (+RW +ZI) - } -} - diff --git a/MDK-ARM/NUCLEO-F103RB/Project_NUCLEO-F103RB.dep b/MDK-ARM/NUCLEO-F103RB/Project_NUCLEO-F103RB.dep deleted file mode 100644 index d91499d..0000000 --- a/MDK-ARM/NUCLEO-F103RB/Project_NUCLEO-F103RB.dep +++ /dev/null @@ -1,50 +0,0 @@ -Dependencies for Project 'Project', Target 'NUCLEO-F103RB': (DO NOT MODIFY !) -CompilerVersion: 5060750::V5.06 update 6 (build 750)::ARMCC -F (..\Src\Voilier.c)(0x5F83FFA9)(-c --cpu Cortex-M3 -D__EVAL -D__MICROLIB -g -O3 --apcs=interwork --split_sections -I ..\Inc -I ..\LLDrivers\inc -I ..\Services -I ..\MyDrivers --C99 -I.\RTE\_NUCLEO-F103RB -IC:\Users\elies\AppData\Local\Arm\Packs\ARM\CMSIS\5.6.0\CMSIS\Core\Include -IC:\Users\elies\AppData\Local\Arm\Packs\Keil\STM32F1xx_DFP\2.3.0\Device\Include -D__UVISION_VERSION="529" -D_RTE_ -DSTM32F10X_MD -DSTM32F103xB -DUSE_FULL_LL_DRIVER -DHSE_VALUE="8000000U" -o nucleo-f103rb\voilier.o --omf_browse nucleo-f103rb\voilier.crf --depend nucleo-f103rb\voilier.d) -F (..\MyDrivers\MyTimer.c)(0x5F64ABA2)(-c --cpu Cortex-M3 -D__EVAL -D__MICROLIB -g -O3 --apcs=interwork --split_sections -I ..\Inc -I ..\LLDrivers\inc -I ..\Services -I ..\MyDrivers --C99 -I.\RTE\_NUCLEO-F103RB -IC:\Users\elies\AppData\Local\Arm\Packs\ARM\CMSIS\5.6.0\CMSIS\Core\Include -IC:\Users\elies\AppData\Local\Arm\Packs\Keil\STM32F1xx_DFP\2.3.0\Device\Include -D__UVISION_VERSION="529" -D_RTE_ -DSTM32F10X_MD -DSTM32F103xB -DUSE_FULL_LL_DRIVER -DHSE_VALUE="8000000U" -o nucleo-f103rb\mytimer.o --omf_browse nucleo-f103rb\mytimer.crf --depend nucleo-f103rb\mytimer.d) -I (..\Inc\stm32f103xb.h)(0x5D1623CA) -I (C:\Users\elies\AppData\Local\Arm\Packs\ARM\CMSIS\5.6.0\CMSIS\Core\Include\core_cm3.h)(0x5D25F326) -I (F:\Keil\ARM\ARMCC\include\stdint.h)(0x5D9B3488) -I (C:\Users\elies\AppData\Local\Arm\Packs\ARM\CMSIS\5.6.0\CMSIS\Core\Include\cmsis_version.h)(0x5D25F326) -I (C:\Users\elies\AppData\Local\Arm\Packs\ARM\CMSIS\5.6.0\CMSIS\Core\Include\cmsis_compiler.h)(0x5D25F326) -I (C:\Users\elies\AppData\Local\Arm\Packs\ARM\CMSIS\5.6.0\CMSIS\Core\Include\cmsis_armcc.h)(0x5D25F326) -I (..\Inc\system_stm32f1xx.h)(0x5D1623CA) -F (..\Src\Allure.c)(0x5F83F90A)(-c --cpu Cortex-M3 -D__EVAL -D__MICROLIB -g -O3 --apcs=interwork --split_sections -I ..\Inc -I ..\LLDrivers\inc -I ..\Services -I ..\MyDrivers --C99 -I.\RTE\_NUCLEO-F103RB -IC:\Users\elies\AppData\Local\Arm\Packs\ARM\CMSIS\5.6.0\CMSIS\Core\Include -IC:\Users\elies\AppData\Local\Arm\Packs\Keil\STM32F1xx_DFP\2.3.0\Device\Include -D__UVISION_VERSION="529" -D_RTE_ -DSTM32F10X_MD -DSTM32F103xB -DUSE_FULL_LL_DRIVER -DHSE_VALUE="8000000U" -o nucleo-f103rb\allure.o --omf_browse nucleo-f103rb\allure.crf --depend nucleo-f103rb\allure.d) -F (..\Src\AntiCharvirement.c)(0x5F83F91C)(-c --cpu Cortex-M3 -D__EVAL -D__MICROLIB -g -O3 --apcs=interwork --split_sections -I ..\Inc -I ..\LLDrivers\inc -I ..\Services -I ..\MyDrivers --C99 -I.\RTE\_NUCLEO-F103RB -IC:\Users\elies\AppData\Local\Arm\Packs\ARM\CMSIS\5.6.0\CMSIS\Core\Include -IC:\Users\elies\AppData\Local\Arm\Packs\Keil\STM32F1xx_DFP\2.3.0\Device\Include -D__UVISION_VERSION="529" -D_RTE_ -DSTM32F10X_MD -DSTM32F103xB -DUSE_FULL_LL_DRIVER -DHSE_VALUE="8000000U" -o nucleo-f103rb\anticharvirement.o --omf_browse nucleo-f103rb\anticharvirement.crf --depend nucleo-f103rb\anticharvirement.d) -F (..\Src\Batterie.c)(0x5F83F929)(-c --cpu Cortex-M3 -D__EVAL -D__MICROLIB -g -O3 --apcs=interwork --split_sections -I ..\Inc -I ..\LLDrivers\inc -I ..\Services -I ..\MyDrivers --C99 -I.\RTE\_NUCLEO-F103RB -IC:\Users\elies\AppData\Local\Arm\Packs\ARM\CMSIS\5.6.0\CMSIS\Core\Include -IC:\Users\elies\AppData\Local\Arm\Packs\Keil\STM32F1xx_DFP\2.3.0\Device\Include -D__UVISION_VERSION="529" -D_RTE_ -DSTM32F10X_MD -DSTM32F103xB -DUSE_FULL_LL_DRIVER -DHSE_VALUE="8000000U" -o nucleo-f103rb\batterie.o --omf_browse nucleo-f103rb\batterie.crf --depend nucleo-f103rb\batterie.d) -F (..\Src\Gouvernail.c)(0x5F83F934)(-c --cpu Cortex-M3 -D__EVAL -D__MICROLIB -g -O3 --apcs=interwork --split_sections -I ..\Inc -I ..\LLDrivers\inc -I ..\Services -I ..\MyDrivers --C99 -I.\RTE\_NUCLEO-F103RB -IC:\Users\elies\AppData\Local\Arm\Packs\ARM\CMSIS\5.6.0\CMSIS\Core\Include -IC:\Users\elies\AppData\Local\Arm\Packs\Keil\STM32F1xx_DFP\2.3.0\Device\Include -D__UVISION_VERSION="529" -D_RTE_ -DSTM32F10X_MD -DSTM32F103xB -DUSE_FULL_LL_DRIVER -DHSE_VALUE="8000000U" -o nucleo-f103rb\gouvernail.o --omf_browse nucleo-f103rb\gouvernail.crf --depend nucleo-f103rb\gouvernail.d) -F (..\Src\Heure.c)(0x5F83F943)(-c --cpu Cortex-M3 -D__EVAL -D__MICROLIB -g -O3 --apcs=interwork --split_sections -I ..\Inc -I ..\LLDrivers\inc -I ..\Services -I ..\MyDrivers --C99 -I.\RTE\_NUCLEO-F103RB -IC:\Users\elies\AppData\Local\Arm\Packs\ARM\CMSIS\5.6.0\CMSIS\Core\Include -IC:\Users\elies\AppData\Local\Arm\Packs\Keil\STM32F1xx_DFP\2.3.0\Device\Include -D__UVISION_VERSION="529" -D_RTE_ -DSTM32F10X_MD -DSTM32F103xB -DUSE_FULL_LL_DRIVER -DHSE_VALUE="8000000U" -o nucleo-f103rb\heure.o --omf_browse nucleo-f103rb\heure.crf --depend nucleo-f103rb\heure.d) -F (..\Src\Transmission.c)(0x5F83F94E)(-c --cpu Cortex-M3 -D__EVAL -D__MICROLIB -g -O3 --apcs=interwork --split_sections -I ..\Inc -I ..\LLDrivers\inc -I ..\Services -I ..\MyDrivers --C99 -I.\RTE\_NUCLEO-F103RB -IC:\Users\elies\AppData\Local\Arm\Packs\ARM\CMSIS\5.6.0\CMSIS\Core\Include -IC:\Users\elies\AppData\Local\Arm\Packs\Keil\STM32F1xx_DFP\2.3.0\Device\Include -D__UVISION_VERSION="529" -D_RTE_ -DSTM32F10X_MD -DSTM32F103xB -DUSE_FULL_LL_DRIVER -DHSE_VALUE="8000000U" -o nucleo-f103rb\transmission.o --omf_browse nucleo-f103rb\transmission.crf --depend nucleo-f103rb\transmission.d) -F (..\Src\Voile.c)(0x5F83F958)(-c --cpu Cortex-M3 -D__EVAL -D__MICROLIB -g -O3 --apcs=interwork --split_sections -I ..\Inc -I ..\LLDrivers\inc -I ..\Services -I ..\MyDrivers --C99 -I.\RTE\_NUCLEO-F103RB -IC:\Users\elies\AppData\Local\Arm\Packs\ARM\CMSIS\5.6.0\CMSIS\Core\Include -IC:\Users\elies\AppData\Local\Arm\Packs\Keil\STM32F1xx_DFP\2.3.0\Device\Include -D__UVISION_VERSION="529" -D_RTE_ -DSTM32F10X_MD -DSTM32F103xB -DUSE_FULL_LL_DRIVER -DHSE_VALUE="8000000U" -o nucleo-f103rb\voile.o --omf_browse nucleo-f103rb\voile.crf --depend nucleo-f103rb\voile.d) -F (..\LLDrivers\src\stm32f1xx_ll_rcc.c)(0x5D10A076)(-c --cpu Cortex-M3 -D__EVAL -D__MICROLIB -g -O3 --apcs=interwork --split_sections -I ..\Inc -I ..\LLDrivers\inc -I ..\Services -I ..\MyDrivers --C99 -I.\RTE\_NUCLEO-F103RB -IC:\Users\elies\AppData\Local\Arm\Packs\ARM\CMSIS\5.6.0\CMSIS\Core\Include -IC:\Users\elies\AppData\Local\Arm\Packs\Keil\STM32F1xx_DFP\2.3.0\Device\Include -D__UVISION_VERSION="529" -D_RTE_ -DSTM32F10X_MD -DSTM32F103xB -DUSE_FULL_LL_DRIVER -DHSE_VALUE="8000000U" -o nucleo-f103rb\stm32f1xx_ll_rcc.o --omf_browse nucleo-f103rb\stm32f1xx_ll_rcc.crf --depend nucleo-f103rb\stm32f1xx_ll_rcc.d) -I (..\LLDrivers\inc\stm32f1xx_ll_rcc.h)(0x5D10A076) -I (..\Inc\stm32f1xx.h)(0x5D1623CA) -I (..\Inc\stm32f103xb.h)(0x5D1623CA) -I (C:\Users\elies\AppData\Local\Arm\Packs\ARM\CMSIS\5.6.0\CMSIS\Core\Include\core_cm3.h)(0x5D25F326) -I (F:\Keil\ARM\ARMCC\include\stdint.h)(0x5D9B3488) -I (C:\Users\elies\AppData\Local\Arm\Packs\ARM\CMSIS\5.6.0\CMSIS\Core\Include\cmsis_version.h)(0x5D25F326) -I (C:\Users\elies\AppData\Local\Arm\Packs\ARM\CMSIS\5.6.0\CMSIS\Core\Include\cmsis_compiler.h)(0x5D25F326) -I (C:\Users\elies\AppData\Local\Arm\Packs\ARM\CMSIS\5.6.0\CMSIS\Core\Include\cmsis_armcc.h)(0x5D25F326) -I (..\Inc\system_stm32f1xx.h)(0x5D1623CA) -F (..\LLDrivers\src\stm32f1xx_ll_utils.c)(0x5D10A088)(-c --cpu Cortex-M3 -D__EVAL -D__MICROLIB -g -O3 --apcs=interwork --split_sections -I ..\Inc -I ..\LLDrivers\inc -I ..\Services -I ..\MyDrivers --C99 -I.\RTE\_NUCLEO-F103RB -IC:\Users\elies\AppData\Local\Arm\Packs\ARM\CMSIS\5.6.0\CMSIS\Core\Include -IC:\Users\elies\AppData\Local\Arm\Packs\Keil\STM32F1xx_DFP\2.3.0\Device\Include -D__UVISION_VERSION="529" -D_RTE_ -DSTM32F10X_MD -DSTM32F103xB -DUSE_FULL_LL_DRIVER -DHSE_VALUE="8000000U" -o nucleo-f103rb\stm32f1xx_ll_utils.o --omf_browse nucleo-f103rb\stm32f1xx_ll_utils.crf --depend nucleo-f103rb\stm32f1xx_ll_utils.d) -I (..\LLDrivers\inc\stm32f1xx_ll_rcc.h)(0x5D10A076) -I (..\Inc\stm32f1xx.h)(0x5D1623CA) -I (..\Inc\stm32f103xb.h)(0x5D1623CA) -I (C:\Users\elies\AppData\Local\Arm\Packs\ARM\CMSIS\5.6.0\CMSIS\Core\Include\core_cm3.h)(0x5D25F326) -I (F:\Keil\ARM\ARMCC\include\stdint.h)(0x5D9B3488) -I (C:\Users\elies\AppData\Local\Arm\Packs\ARM\CMSIS\5.6.0\CMSIS\Core\Include\cmsis_version.h)(0x5D25F326) -I (C:\Users\elies\AppData\Local\Arm\Packs\ARM\CMSIS\5.6.0\CMSIS\Core\Include\cmsis_compiler.h)(0x5D25F326) -I (C:\Users\elies\AppData\Local\Arm\Packs\ARM\CMSIS\5.6.0\CMSIS\Core\Include\cmsis_armcc.h)(0x5D25F326) -I (..\Inc\system_stm32f1xx.h)(0x5D1623CA) -I (..\LLDrivers\inc\stm32f1xx_ll_utils.h)(0x5D10A088) -I (..\LLDrivers\inc\stm32f1xx_ll_system.h)(0x5D10A06A) -F (../Src/system_stm32f1xx.c)(0x5D0B5E70)(-c --cpu Cortex-M3 -D__EVAL -D__MICROLIB -g -O3 --apcs=interwork --split_sections -I ..\Inc -I ..\LLDrivers\inc -I ..\Services -I ..\MyDrivers --C99 -I.\RTE\_NUCLEO-F103RB -IC:\Users\elies\AppData\Local\Arm\Packs\ARM\CMSIS\5.6.0\CMSIS\Core\Include -IC:\Users\elies\AppData\Local\Arm\Packs\Keil\STM32F1xx_DFP\2.3.0\Device\Include -D__UVISION_VERSION="529" -D_RTE_ -DSTM32F10X_MD -DSTM32F103xB -DUSE_FULL_LL_DRIVER -DHSE_VALUE="8000000U" -o nucleo-f103rb\system_stm32f1xx.o --omf_browse nucleo-f103rb\system_stm32f1xx.crf --depend nucleo-f103rb\system_stm32f1xx.d) -I (..\Inc\stm32f1xx.h)(0x5D1623CA) -I (..\Inc\stm32f103xb.h)(0x5D1623CA) -I (C:\Users\elies\AppData\Local\Arm\Packs\ARM\CMSIS\5.6.0\CMSIS\Core\Include\core_cm3.h)(0x5D25F326) -I (F:\Keil\ARM\ARMCC\include\stdint.h)(0x5D9B3488) -I (C:\Users\elies\AppData\Local\Arm\Packs\ARM\CMSIS\5.6.0\CMSIS\Core\Include\cmsis_version.h)(0x5D25F326) -I (C:\Users\elies\AppData\Local\Arm\Packs\ARM\CMSIS\5.6.0\CMSIS\Core\Include\cmsis_compiler.h)(0x5D25F326) -I (C:\Users\elies\AppData\Local\Arm\Packs\ARM\CMSIS\5.6.0\CMSIS\Core\Include\cmsis_armcc.h)(0x5D25F326) -I (..\Inc\system_stm32f1xx.h)(0x5D1623CA) -F (startup_stm32f103xb.s)(0x5CFE6264)(--cpu Cortex-M3 --pd "__EVAL SETA 1" -g --apcs=interwork --pd "__MICROLIB SETA 1" -I.\RTE\_NUCLEO-F103RB -IC:\Users\elies\AppData\Local\Arm\Packs\ARM\CMSIS\5.6.0\CMSIS\Core\Include -IC:\Users\elies\AppData\Local\Arm\Packs\Keil\STM32F1xx_DFP\2.3.0\Device\Include --pd "__UVISION_VERSION SETA 529" --pd "_RTE_ SETA 1" --pd "STM32F10X_MD SETA 1" --list startup_stm32f103xb.lst --xref -o nucleo-f103rb\startup_stm32f103xb.o --depend nucleo-f103rb\startup_stm32f103xb.d) diff --git a/MDK-ARM/NUCLEO-F103RB/Project_Simulateur.dep b/MDK-ARM/NUCLEO-F103RB/Project_Simulateur.dep deleted file mode 100644 index 4528a00..0000000 --- a/MDK-ARM/NUCLEO-F103RB/Project_Simulateur.dep +++ /dev/null @@ -1,67 +0,0 @@ -Dependencies for Project 'Project', Target 'Simulateur': (DO NOT MODIFY !) -CompilerVersion: 5060750::V5.06 update 6 (build 750)::ARMCC -F (../Src/main.c)(0x5F6E0735)(-c --cpu Cortex-M3 -D__EVAL -D__MICROLIB -g -O3 --apcs=interwork --split_sections -I ..\Inc -I ..\LLDrivers\inc -I ..\Services -I ..\MyDrivers --C99 -I.\RTE\_Simulateur -IC:\Users\elies\AppData\Local\Arm\Packs\ARM\CMSIS\5.6.0\CMSIS\Core\Include -IC:\Users\elies\AppData\Local\Arm\Packs\Keil\STM32F1xx_DFP\2.3.0\Device\Include -D__UVISION_VERSION="529" -D_RTE_ -DSTM32F10X_MD -DSTM32F103xB -DUSE_FULL_LL_DRIVER -DHSE_VALUE="8000000U" -o nucleo-f103rb\main.o --omf_browse nucleo-f103rb\main.crf --depend nucleo-f103rb\main.d) -I (..\LLDrivers\inc\stm32f1xx_ll_rcc.h)(0x5D10A076) -I (..\Inc\stm32f1xx.h)(0x5D1623CA) -I (..\Inc\stm32f103xb.h)(0x5D1623CA) -I (C:\Users\elies\AppData\Local\Arm\Packs\ARM\CMSIS\5.6.0\CMSIS\Core\Include\core_cm3.h)(0x5D25F326) -I (F:\Keil\ARM\ARMCC\include\stdint.h)(0x5D9B3488) -I (C:\Users\elies\AppData\Local\Arm\Packs\ARM\CMSIS\5.6.0\CMSIS\Core\Include\cmsis_version.h)(0x5D25F326) -I (C:\Users\elies\AppData\Local\Arm\Packs\ARM\CMSIS\5.6.0\CMSIS\Core\Include\cmsis_compiler.h)(0x5D25F326) -I (C:\Users\elies\AppData\Local\Arm\Packs\ARM\CMSIS\5.6.0\CMSIS\Core\Include\cmsis_armcc.h)(0x5D25F326) -I (..\Inc\system_stm32f1xx.h)(0x5D1623CA) -I (..\LLDrivers\inc\stm32f1xx_ll_utils.h)(0x5D10A088) -I (..\LLDrivers\inc\stm32f1xx_ll_system.h)(0x5D10A06A) -I (..\Services\Chrono.h)(0x5F64A7AD) -I (..\MyDrivers\MyTimer.h)(0x5F649B45) -F (..\Services\Chrono.c)(0x5F64B102)(-c --cpu Cortex-M3 -D__EVAL -D__MICROLIB -g -O3 --apcs=interwork --split_sections -I ..\Inc -I ..\LLDrivers\inc -I ..\Services -I ..\MyDrivers --C99 -I.\RTE\_Simulateur -IC:\Users\elies\AppData\Local\Arm\Packs\ARM\CMSIS\5.6.0\CMSIS\Core\Include -IC:\Users\elies\AppData\Local\Arm\Packs\Keil\STM32F1xx_DFP\2.3.0\Device\Include -D__UVISION_VERSION="529" -D_RTE_ -DSTM32F10X_MD -DSTM32F103xB -DUSE_FULL_LL_DRIVER -DHSE_VALUE="8000000U" -o nucleo-f103rb\chrono.o --omf_browse nucleo-f103rb\chrono.crf --depend nucleo-f103rb\chrono.d) -I (..\Services\Chrono.h)(0x5F64A7AD) -I (..\Inc\stm32f103xb.h)(0x5D1623CA) -I (C:\Users\elies\AppData\Local\Arm\Packs\ARM\CMSIS\5.6.0\CMSIS\Core\Include\core_cm3.h)(0x5D25F326) -I (F:\Keil\ARM\ARMCC\include\stdint.h)(0x5D9B3488) -I (C:\Users\elies\AppData\Local\Arm\Packs\ARM\CMSIS\5.6.0\CMSIS\Core\Include\cmsis_version.h)(0x5D25F326) -I (C:\Users\elies\AppData\Local\Arm\Packs\ARM\CMSIS\5.6.0\CMSIS\Core\Include\cmsis_compiler.h)(0x5D25F326) -I (C:\Users\elies\AppData\Local\Arm\Packs\ARM\CMSIS\5.6.0\CMSIS\Core\Include\cmsis_armcc.h)(0x5D25F326) -I (..\Inc\system_stm32f1xx.h)(0x5D1623CA) -I (..\MyDrivers\MyTimer.h)(0x5F649B45) -F (..\MyDrivers\MyTimer.c)(0x5F64ABA2)(-c --cpu Cortex-M3 -D__EVAL -D__MICROLIB -g -O3 --apcs=interwork --split_sections -I ..\Inc -I ..\LLDrivers\inc -I ..\Services -I ..\MyDrivers --C99 -I.\RTE\_Simulateur -IC:\Users\elies\AppData\Local\Arm\Packs\ARM\CMSIS\5.6.0\CMSIS\Core\Include -IC:\Users\elies\AppData\Local\Arm\Packs\Keil\STM32F1xx_DFP\2.3.0\Device\Include -D__UVISION_VERSION="529" -D_RTE_ -DSTM32F10X_MD -DSTM32F103xB -DUSE_FULL_LL_DRIVER -DHSE_VALUE="8000000U" -o nucleo-f103rb\mytimer.o --omf_browse nucleo-f103rb\mytimer.crf --depend nucleo-f103rb\mytimer.d) -I (..\Inc\stm32f103xb.h)(0x5D1623CA) -I (C:\Users\elies\AppData\Local\Arm\Packs\ARM\CMSIS\5.6.0\CMSIS\Core\Include\core_cm3.h)(0x5D25F326) -I (F:\Keil\ARM\ARMCC\include\stdint.h)(0x5D9B3488) -I (C:\Users\elies\AppData\Local\Arm\Packs\ARM\CMSIS\5.6.0\CMSIS\Core\Include\cmsis_version.h)(0x5D25F326) -I (C:\Users\elies\AppData\Local\Arm\Packs\ARM\CMSIS\5.6.0\CMSIS\Core\Include\cmsis_compiler.h)(0x5D25F326) -I (C:\Users\elies\AppData\Local\Arm\Packs\ARM\CMSIS\5.6.0\CMSIS\Core\Include\cmsis_armcc.h)(0x5D25F326) -I (..\Inc\system_stm32f1xx.h)(0x5D1623CA) -F (..\LLDrivers\src\stm32f1xx_ll_rcc.c)(0x5D10A076)(-c --cpu Cortex-M3 -D__EVAL -D__MICROLIB -g -O3 --apcs=interwork --split_sections -I ..\Inc -I ..\LLDrivers\inc -I ..\Services -I ..\MyDrivers --C99 -I.\RTE\_Simulateur -IC:\Users\elies\AppData\Local\Arm\Packs\ARM\CMSIS\5.6.0\CMSIS\Core\Include -IC:\Users\elies\AppData\Local\Arm\Packs\Keil\STM32F1xx_DFP\2.3.0\Device\Include -D__UVISION_VERSION="529" -D_RTE_ -DSTM32F10X_MD -DSTM32F103xB -DUSE_FULL_LL_DRIVER -DHSE_VALUE="8000000U" -o nucleo-f103rb\stm32f1xx_ll_rcc.o --omf_browse nucleo-f103rb\stm32f1xx_ll_rcc.crf --depend nucleo-f103rb\stm32f1xx_ll_rcc.d) -I (..\LLDrivers\inc\stm32f1xx_ll_rcc.h)(0x5D10A076) -I (..\Inc\stm32f1xx.h)(0x5D1623CA) -I (..\Inc\stm32f103xb.h)(0x5D1623CA) -I (C:\Users\elies\AppData\Local\Arm\Packs\ARM\CMSIS\5.6.0\CMSIS\Core\Include\core_cm3.h)(0x5D25F326) -I (F:\Keil\ARM\ARMCC\include\stdint.h)(0x5D9B3488) -I (C:\Users\elies\AppData\Local\Arm\Packs\ARM\CMSIS\5.6.0\CMSIS\Core\Include\cmsis_version.h)(0x5D25F326) -I (C:\Users\elies\AppData\Local\Arm\Packs\ARM\CMSIS\5.6.0\CMSIS\Core\Include\cmsis_compiler.h)(0x5D25F326) -I (C:\Users\elies\AppData\Local\Arm\Packs\ARM\CMSIS\5.6.0\CMSIS\Core\Include\cmsis_armcc.h)(0x5D25F326) -I (..\Inc\system_stm32f1xx.h)(0x5D1623CA) -F (..\LLDrivers\src\stm32f1xx_ll_utils.c)(0x5D10A088)(-c --cpu Cortex-M3 -D__EVAL -D__MICROLIB -g -O3 --apcs=interwork --split_sections -I ..\Inc -I ..\LLDrivers\inc -I ..\Services -I ..\MyDrivers --C99 -I.\RTE\_Simulateur -IC:\Users\elies\AppData\Local\Arm\Packs\ARM\CMSIS\5.6.0\CMSIS\Core\Include -IC:\Users\elies\AppData\Local\Arm\Packs\Keil\STM32F1xx_DFP\2.3.0\Device\Include -D__UVISION_VERSION="529" -D_RTE_ -DSTM32F10X_MD -DSTM32F103xB -DUSE_FULL_LL_DRIVER -DHSE_VALUE="8000000U" -o nucleo-f103rb\stm32f1xx_ll_utils.o --omf_browse nucleo-f103rb\stm32f1xx_ll_utils.crf --depend nucleo-f103rb\stm32f1xx_ll_utils.d) -I (..\LLDrivers\inc\stm32f1xx_ll_rcc.h)(0x5D10A076) -I (..\Inc\stm32f1xx.h)(0x5D1623CA) -I (..\Inc\stm32f103xb.h)(0x5D1623CA) -I (C:\Users\elies\AppData\Local\Arm\Packs\ARM\CMSIS\5.6.0\CMSIS\Core\Include\core_cm3.h)(0x5D25F326) -I (F:\Keil\ARM\ARMCC\include\stdint.h)(0x5D9B3488) -I (C:\Users\elies\AppData\Local\Arm\Packs\ARM\CMSIS\5.6.0\CMSIS\Core\Include\cmsis_version.h)(0x5D25F326) -I (C:\Users\elies\AppData\Local\Arm\Packs\ARM\CMSIS\5.6.0\CMSIS\Core\Include\cmsis_compiler.h)(0x5D25F326) -I (C:\Users\elies\AppData\Local\Arm\Packs\ARM\CMSIS\5.6.0\CMSIS\Core\Include\cmsis_armcc.h)(0x5D25F326) -I (..\Inc\system_stm32f1xx.h)(0x5D1623CA) -I (..\LLDrivers\inc\stm32f1xx_ll_utils.h)(0x5D10A088) -I (..\LLDrivers\inc\stm32f1xx_ll_system.h)(0x5D10A06A) -F (../readme.txt)(0x5D73DDE0)() -F (../Src/system_stm32f1xx.c)(0x5D0B5E70)(-c --cpu Cortex-M3 -D__EVAL -D__MICROLIB -g -O3 --apcs=interwork --split_sections -I ..\Inc -I ..\LLDrivers\inc -I ..\Services -I ..\MyDrivers --C99 -I.\RTE\_Simulateur -IC:\Users\elies\AppData\Local\Arm\Packs\ARM\CMSIS\5.6.0\CMSIS\Core\Include -IC:\Users\elies\AppData\Local\Arm\Packs\Keil\STM32F1xx_DFP\2.3.0\Device\Include -D__UVISION_VERSION="529" -D_RTE_ -DSTM32F10X_MD -DSTM32F103xB -DUSE_FULL_LL_DRIVER -DHSE_VALUE="8000000U" -o nucleo-f103rb\system_stm32f1xx.o --omf_browse nucleo-f103rb\system_stm32f1xx.crf --depend nucleo-f103rb\system_stm32f1xx.d) -I (..\Inc\stm32f1xx.h)(0x5D1623CA) -I (..\Inc\stm32f103xb.h)(0x5D1623CA) -I (C:\Users\elies\AppData\Local\Arm\Packs\ARM\CMSIS\5.6.0\CMSIS\Core\Include\core_cm3.h)(0x5D25F326) -I (F:\Keil\ARM\ARMCC\include\stdint.h)(0x5D9B3488) -I (C:\Users\elies\AppData\Local\Arm\Packs\ARM\CMSIS\5.6.0\CMSIS\Core\Include\cmsis_version.h)(0x5D25F326) -I (C:\Users\elies\AppData\Local\Arm\Packs\ARM\CMSIS\5.6.0\CMSIS\Core\Include\cmsis_compiler.h)(0x5D25F326) -I (C:\Users\elies\AppData\Local\Arm\Packs\ARM\CMSIS\5.6.0\CMSIS\Core\Include\cmsis_armcc.h)(0x5D25F326) -I (..\Inc\system_stm32f1xx.h)(0x5D1623CA) -F (startup_stm32f103xb.s)(0x5CFE6264)(--cpu Cortex-M3 --pd "__EVAL SETA 1" -g --apcs=interwork --pd "__MICROLIB SETA 1" -I.\RTE\_Simulateur -IC:\Users\elies\AppData\Local\Arm\Packs\ARM\CMSIS\5.6.0\CMSIS\Core\Include -IC:\Users\elies\AppData\Local\Arm\Packs\Keil\STM32F1xx_DFP\2.3.0\Device\Include --pd "__UVISION_VERSION SETA 529" --pd "_RTE_ SETA 1" --pd "STM32F10X_MD SETA 1" --list startup_stm32f103xb.lst --xref -o nucleo-f103rb\startup_stm32f103xb.o --depend nucleo-f103rb\startup_stm32f103xb.d) diff --git a/MDK-ARM/NUCLEO-F103RB/allure.crf b/MDK-ARM/NUCLEO-F103RB/allure.crf deleted file mode 100644 index 3ff275a183b5af724c3f8454d687f5dc69a1137c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 18 Wcmcb?!N9=8$N&VgH&}p71|kYIioWxKgT(6ST1nTuaaFvN|Q^ z&Z%?V((F>*Fl_u&O&vWTxsN0cRM&PMO6;j)`rZDq-SXU5Bj@6EYr|EJx#1g|Zb>Wof(ci2$eF)m|X#{3<-Lb>TTs-F9WvNzEi(~<|t;(2gTew?k`$8rwWTmWh z7hTwPO)oQrRNRtsTT+p;R!vpVJi|I{@|vHru=E$2U3*@oz{Z17_hjI71T46Ti)zhO^-?Lc300%+uO0W; zMp4K!+koh~gOgci=z9Ty`BjuK4q<~L-H=%4nr!ZAHCw6HZKZ;{6?bSZm|~zRp~|Y1 zYDcB&zf-W%;OU$c2Nz!}4*|=AhG*qL7BdAhO;CxDd_j>AJt-3*EE95T<7DZ$B@5eb zdi@AZ7ABaTY%2TqrXAW&v*ckWNzAskUoYqg@TUdx>3`s#`B9is+Ib#q5ZgHRX@^I?c%=mL)p;x z4z(YNNikkr+)u?+T^OqNtfn2Z1Jl&@bgV2Bw_p9R7Nk(FDweGuB8~AL1TOrS<9=%z zPu9}UWhb~&#bVd-^t7t75>5w6+bYX=z{-}TnYF;n#MaP`G(*U-?LvFKRAv6+5Syp- zg`GoiiP}5x$qK;S9mH`wbgt{`0P`Xwlbq%5m2mm*dz`;%80B&Iicqi0n@Rsy0w;*_%cmnSw zftvT1(X+n(@G`(pI0O(vF24kDClr#&<>V5&zPrN0{9uzc;sQ35{SOHM+@od=y?w+0 zPV4?EQ+&LJ1LL%C1%FDAz|S}b@L&z+ky^u00Mct1{wJi#FL8T`3)CYM@&MVj7{!-c z1F{3i69CvqW6!OXM=QmZc;fMrzRq(~n58+n8IgN|-NT6D-31)AI76;XTZL_CTJ z-VtDXmIBy`h&{~Jr;!+i`UF$LsI_haFRR{o7*Vzu`OA7D{F49t)H<%~d7ZyPRHO>LlZ?N5TbQ5>e)0=FsKg%;u zbC(~W;qy=cco9Gh`ZEs6pur))=bIlriVIxRA8$j&!1&08qp_=^nLV=Im5A8`eAcs_sE(7Re7|wu_ z{UsM3FKwgXapCql#We~A0Dps3@c0qS=-Ce3#DHI2i_uvNaK0S?O!OO%fcq(Y=HdGv z{um0Z{r-oqr{oykl}~5nd8p3FI2wDd;jaLKOMr>OhcFxGF5vuN4qx9;i{^i&mVQUl zc%w)+ec$W0#=bLx^vL)8W((VwA@ZDFntjdT{qERB%~yS9!MSFuRTJecBb%)o`Apr&X2fS(MkXU#$XLi&$mp7;;rpqG zw@mA(ApX{>9ViDX7dKJdH^d6NPl(#C{7|f#n)OiBj@3TD`Dt{jUrf07wjQLZ*f5%!>a0he$_$W|B4cA06z#o`EUz=xyV!;0`5{GY5 z3T{$}z7Cw?`9@|F3E@0h;SVWggFgw-5g>&(DfR~VGuOcCBL?1#17Zm*yx#?8SeiM2 z?_hBi=vKm>Fc`eWgwItxr9X&Y4&vmIvvGq_13P14AA;E5gAeRmAwz9616TnmijlH| X_sY<8e-$Byhi76)VH>L1hx@+(HSkli diff --git a/MDK-ARM/NUCLEO-F103RB/anticharvirement.crf b/MDK-ARM/NUCLEO-F103RB/anticharvirement.crf deleted file mode 100644 index 3ff275a183b5af724c3f8454d687f5dc69a1137c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 18 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 I3;y{30e4KpasU7T diff --git a/MDK-ARM/NUCLEO-F103RB/chrono.d b/MDK-ARM/NUCLEO-F103RB/chrono.d deleted file mode 100644 index ff9866b..0000000 --- a/MDK-ARM/NUCLEO-F103RB/chrono.d +++ /dev/null @@ -1,10 +0,0 @@ -nucleo-f103rb\chrono.o: ..\Services\Chrono.c -nucleo-f103rb\chrono.o: ..\Services\Chrono.h -nucleo-f103rb\chrono.o: ..\Inc\stm32f103xb.h -nucleo-f103rb\chrono.o: C:\Users\elies\AppData\Local\Arm\Packs\ARM\CMSIS\5.6.0\CMSIS\Core\Include\core_cm3.h -nucleo-f103rb\chrono.o: F:\Keil\ARM\ARMCC\Bin\..\include\stdint.h -nucleo-f103rb\chrono.o: C:\Users\elies\AppData\Local\Arm\Packs\ARM\CMSIS\5.6.0\CMSIS\Core\Include\cmsis_version.h -nucleo-f103rb\chrono.o: C:\Users\elies\AppData\Local\Arm\Packs\ARM\CMSIS\5.6.0\CMSIS\Core\Include\cmsis_compiler.h -nucleo-f103rb\chrono.o: C:\Users\elies\AppData\Local\Arm\Packs\ARM\CMSIS\5.6.0\CMSIS\Core\Include\cmsis_armcc.h -nucleo-f103rb\chrono.o: ..\Inc\system_stm32f1xx.h -nucleo-f103rb\chrono.o: ..\MyDrivers\MyTimer.h diff --git a/MDK-ARM/NUCLEO-F103RB/chrono.o b/MDK-ARM/NUCLEO-F103RB/chrono.o deleted file mode 100644 index 89c9964b65ce05b9f316c98b8f130a32f098f1a1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 396688 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

    <|Oc~wY$$xg&FJIRn>kCE~7xAU*oA%dV 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

    xrmSW?{x`>P#GC*L>!5Z2#kKZiHwr| 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 TE#Ao|$=M!mltg~28le9dvYm@( diff --git a/MDK-ARM/NUCLEO-F103RB/gouvernail.crf b/MDK-ARM/NUCLEO-F103RB/gouvernail.crf deleted file mode 100644 index 3ff275a183b5af724c3f8454d687f5dc69a1137c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 18 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 NPH^Rr5}F;we*qazQH}rr diff --git a/MDK-ARM/NUCLEO-F103RB/main.crf b/MDK-ARM/NUCLEO-F103RB/main.crf deleted file mode 100644 index 87283499089fd9e57defb2afd6c0824aba3c5b0f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 394716 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

  • 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 a7+SUX`6OQd>b`J7ZbxVbSycX~;(q~>@@tp? diff --git a/MDK-ARM/NUCLEO-F103RB/startup_stm32f103xb.d b/MDK-ARM/NUCLEO-F103RB/startup_stm32f103xb.d deleted file mode 100644 index ccf1814..0000000 --- a/MDK-ARM/NUCLEO-F103RB/startup_stm32f103xb.d +++ /dev/null @@ -1 +0,0 @@ -nucleo-f103rb\startup_stm32f103xb.o: startup_stm32f103xb.s diff --git a/MDK-ARM/NUCLEO-F103RB/startup_stm32f103xb.o b/MDK-ARM/NUCLEO-F103RB/startup_stm32f103xb.o deleted file mode 100644 index 7c511d66b08574299a05970e859391b052243db5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5868 zcmd^DU5p!78U1E#XT5FGW|Nd=<0du6g|y9@_5LMU8mQOnWZkS2*Y<8!)Mz^Eog^my zlkE-Lsz4tq+J`)};zy>aNW5`ZJLjJBefPWHy>mTt@7y?9NE?PBy<$jM)|tqAJC!9gpAl@f3O57`Qh`3MW5#s$Kj}jjf znI%q%%n@OnCmt5b6O$q(;z5xm;zJ^3B7#3j91&R|CPdB>KPgfpeoUlAjEi)M4~VQ0 zKQ8hN@e?A?68DQdM|@D^1!7d>0ujl)NX&|SjrdWKmx(cvSBV(ZYs4cW-zGjP@;dP| zB5x8uEpm~V68Rx}>h=)Y}OgtvCW$xKyTju20zy7rO4=$?QhpV|uBucyoePZDUlqG0%x^}y} z+Oj&``uN!C!PDNK+D|Xk3PDS@GuU2a- z(Swtt4@OJPW^FoZx9fJN9(`hBWqi`9d`{BS<%N#Z?v$Nc)#;RHozA&#vsF$vSD{U$ z%Gt*0W;ADa%lUTm^G?@VY*yjewkEQLa&Gqc2s&4Jas(`9!Rf$l&TgzA9VLY+pU7qV zB859B&e`piqxNcT-JkMSnsQD(XE*FKPQMl9yJ(tO?f4r}-A>Cw2Mzo->N{vFE~fjT zC}6g68=d9VGr4A?Z=s6cl$d#^u~J;@>(q8rFFw^NRV(NE28#HRG1O__NGSFuMYhlb zX}(3o@PDB3N5lbs1*;CL!>gVeHwnConL)4`uJZ zy?X<{lVQ_D6g+0sxEPH0+ZZwe;RnKz@Q|^?*p6AmgC(E{j3}e{zljpSvaVDf7UP+_ zc5IUY888OSfj~GI4u!Xb2g2d-VEB&koda9LxCe~eD_n^^&N}n!akWA{oVwS}Rp;eu z1$z9|s`GHQ;5=L{GY?nG%fr>G0>`67%#eOgBgr|<=ZWA;nwK>{t9ecHHO-&V`~}S~ zX#TS1uWJ6f=5K2Lw&w3>eo6E9G{2(xRm}mu!rXf$DA#Y^4E7i?Bp-s`*O%6vqtF8V zyWu`p1G25}c^Qi&fP395OUi#x{-)!{6%WbvUVpe*0o<{_X#Rn+2jq`EJ1~It`(%%+ zz}IgA9+&GPABedfi+rbP3XkNBR)rFzMis zNlL$kzQE!V1+Tv&b^l9-ruS3kQDBbc#4`4vL⩛|+(|ir z8IHZ-_CzO4Ag1_k*Xx@Q&_J~qlCQ7}&Og1M-f4!=1tYC52D}uS)DsN0F}q+ z6XV)#P?1#u(~32;pbSgjR0k zh)OI5V!kQzRibi0D^)=lGxW4}G6m7JEFqgg7(EY_vT26!Qg`h!YOeecGNG$$Ks7wVMAVMRZQ1*+s}2z=BtI7UJ|Z)$I}S#7<9&-s z^uoPF5dkCeWzKca2QDlTsmFSQrGi#ZP)AsF34b>XdpXJ`n6v|0Q$wLIe|vCM(}LmA z7Y$KPotiynWebn@_ACp<8EZaorBf%8R$*y$qiIf?N=q9or|fgiLd!3v3Z?N)%Gf3) z=~YVE+{6a%ivhbY0(jC|$Zu$pv`U3zR{CUalb%j*l4c6WeOfA)&lJ2$F`xDI3GU0e zQ1S&OP1W#H_QojqJI*i8dac>9^q7@d+${O>fLC&}7bKt8(fL$y&KoJSRLUNs#WW%g(Ay#$AJN7 z9}9=6#0pOlmc6{(cFre~>us%K^=U_DcmzvzyY1@oYS-z+RrKbDLyP0uHj@gkHWlp>UDCX>PSRD7YBDK1XMzf>$8PamIk z=|RxB`S{6VK9$bIGc&0}@q8guJQUBQX0qqUq*zL&j|-GcN#-)Cyd=8LT36yL67Sw- z$Ns-MVW!&k6i%EYBWjv}Yi;K=Y1KYsbyi!gw$texIed6L39-^zJ(6y=k=#gb9NcbI zI!CIFuG9WPvwe=OoEA=IM;fb@n$sNNak#x)zSWUqB|6gl&tA>wNH$R}lrm-O#6o&L zb8_S;LKbEqZ#WsJTCG{TYnSJn6}wi(pvrl>a;{UxA}FVG#cZ)WnV3q9>N>{Y;Otzf zt*$sKmPqOV-Zi#kFIUCj%O}(yr);@nAU9|Z8N1ATjbUS7FlOLYB|KUigQ(nv!;d67 zXFJ_?*It$c3<DYRl>^qJGi3e*?g=0q53?f9F!a1*sd0I$edy)RC#No=r{a~2e5;usd z;G%Zzy4{Bts4`kVv>FBvG5%uUeDN%E>6ai<9lQ)WAXkIxb6MZytuPXj;4w&j^K!dt zDHkvv7{qR&s1R5y3`<{JXiaSwOfF3N6iAoC)um-PJNJa|A&wCf%0-!a_St?oz0-M;Qg z;_l5_zZVqUyjbH#QEe$HDf E0lYPo&Hw-a diff --git a/MDK-ARM/NUCLEO-F103RB/stm32f1xx_it.d b/MDK-ARM/NUCLEO-F103RB/stm32f1xx_it.d deleted file mode 100644 index 55796c5..0000000 --- a/MDK-ARM/NUCLEO-F103RB/stm32f1xx_it.d +++ /dev/null @@ -1,4 +0,0 @@ -nucleo-f103rb\stm32f1xx_it.o: ../Src/stm32f1xx_it.c -nucleo-f103rb\stm32f1xx_it.o: ../Inc/stm32f1xx_it.h -nucleo-f103rb\stm32f1xx_it.o: ../Inc/main.h -nucleo-f103rb\stm32f1xx_it.o: ../../../../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_ll_rcc.h diff --git a/MDK-ARM/NUCLEO-F103RB/stm32f1xx_ll_adc.d b/MDK-ARM/NUCLEO-F103RB/stm32f1xx_ll_adc.d deleted file mode 100644 index fa3b7de..0000000 --- a/MDK-ARM/NUCLEO-F103RB/stm32f1xx_ll_adc.d +++ /dev/null @@ -1,2 +0,0 @@ -nucleo-f103rb\stm32f1xx_ll_adc.o: ../../../../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_adc.c -nucleo-f103rb\stm32f1xx_ll_adc.o: ../../../../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_ll_adc.h diff --git a/MDK-ARM/NUCLEO-F103RB/stm32f1xx_ll_crc.d b/MDK-ARM/NUCLEO-F103RB/stm32f1xx_ll_crc.d deleted file mode 100644 index 2c400db..0000000 --- a/MDK-ARM/NUCLEO-F103RB/stm32f1xx_ll_crc.d +++ /dev/null @@ -1,2 +0,0 @@ -nucleo-f103rb\stm32f1xx_ll_crc.o: ../../../../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_crc.c -nucleo-f103rb\stm32f1xx_ll_crc.o: ../../../../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_ll_crc.h diff --git a/MDK-ARM/NUCLEO-F103RB/stm32f1xx_ll_dac.d b/MDK-ARM/NUCLEO-F103RB/stm32f1xx_ll_dac.d deleted file mode 100644 index 0394aaa..0000000 --- a/MDK-ARM/NUCLEO-F103RB/stm32f1xx_ll_dac.d +++ /dev/null @@ -1,2 +0,0 @@ -nucleo-f103rb\stm32f1xx_ll_dac.o: ../../../../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_dac.c -nucleo-f103rb\stm32f1xx_ll_dac.o: ../../../../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_ll_dac.h diff --git a/MDK-ARM/NUCLEO-F103RB/stm32f1xx_ll_dma.d b/MDK-ARM/NUCLEO-F103RB/stm32f1xx_ll_dma.d deleted file mode 100644 index d33fcdc..0000000 --- a/MDK-ARM/NUCLEO-F103RB/stm32f1xx_ll_dma.d +++ /dev/null @@ -1,2 +0,0 @@ -nucleo-f103rb\stm32f1xx_ll_dma.o: ../../../../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_dma.c -nucleo-f103rb\stm32f1xx_ll_dma.o: ../../../../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_ll_dma.h diff --git a/MDK-ARM/NUCLEO-F103RB/stm32f1xx_ll_exti.d b/MDK-ARM/NUCLEO-F103RB/stm32f1xx_ll_exti.d deleted file mode 100644 index ee9bce9..0000000 --- a/MDK-ARM/NUCLEO-F103RB/stm32f1xx_ll_exti.d +++ /dev/null @@ -1,2 +0,0 @@ -nucleo-f103rb\stm32f1xx_ll_exti.o: ../../../../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_exti.c -nucleo-f103rb\stm32f1xx_ll_exti.o: ../../../../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_ll_exti.h diff --git a/MDK-ARM/NUCLEO-F103RB/stm32f1xx_ll_gpio.d b/MDK-ARM/NUCLEO-F103RB/stm32f1xx_ll_gpio.d deleted file mode 100644 index d2a7de2..0000000 --- a/MDK-ARM/NUCLEO-F103RB/stm32f1xx_ll_gpio.d +++ /dev/null @@ -1,2 +0,0 @@ -nucleo-f103rb\stm32f1xx_ll_gpio.o: ../../../../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_gpio.c -nucleo-f103rb\stm32f1xx_ll_gpio.o: ../../../../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_ll_gpio.h diff --git a/MDK-ARM/NUCLEO-F103RB/stm32f1xx_ll_i2c.d b/MDK-ARM/NUCLEO-F103RB/stm32f1xx_ll_i2c.d deleted file mode 100644 index 6d210ae..0000000 --- a/MDK-ARM/NUCLEO-F103RB/stm32f1xx_ll_i2c.d +++ /dev/null @@ -1,2 +0,0 @@ -nucleo-f103rb\stm32f1xx_ll_i2c.o: ../../../../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_i2c.c -nucleo-f103rb\stm32f1xx_ll_i2c.o: ../../../../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_ll_i2c.h diff --git a/MDK-ARM/NUCLEO-F103RB/stm32f1xx_ll_pwr.d b/MDK-ARM/NUCLEO-F103RB/stm32f1xx_ll_pwr.d deleted file mode 100644 index 2ae500c..0000000 --- a/MDK-ARM/NUCLEO-F103RB/stm32f1xx_ll_pwr.d +++ /dev/null @@ -1,2 +0,0 @@ -nucleo-f103rb\stm32f1xx_ll_pwr.o: ../../../../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_pwr.c -nucleo-f103rb\stm32f1xx_ll_pwr.o: ../../../../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_ll_pwr.h diff --git a/MDK-ARM/NUCLEO-F103RB/stm32f1xx_ll_rcc.crf b/MDK-ARM/NUCLEO-F103RB/stm32f1xx_ll_rcc.crf deleted file mode 100644 index b704a92fa2c99db9fa15ca96b0238e26054a3877..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 389870 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%0Aa6sE4oW-}MRV<*ONJ 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

    TU9N*oIJ!^B~S8SbZv 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 JQtC>}cY>nfdFkotk=mN%=}~~yZX=`-nnlvc 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%0AYY1%0QO7p4F8N|_xmS+ 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

    fhb>AkQM5yBl>&7--KHZhig$_aN-t5g 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 asoR#MdWU=y;nQod>VjQ}2 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�+eQQ7|8zFzzhQc2xhD~*mKzf{yrZ?BA~ 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�}~ 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 H&Q$*ccyy;| diff --git a/MDK-ARM/NUCLEO-F103RB/system_stm32f1xx.crf b/MDK-ARM/NUCLEO-F103RB/system_stm32f1xx.crf deleted file mode 100644 index 3c53a5ab7675ee97afc22f14f05055c6b018b4f4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 373980 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

    ^s6RbKjZgW^Uxf5pR>( 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

    MQIU}uXYusWlY_) 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

    R}$KISG zZTHxhQ>1#2{W(Qy@HmiDq(+Z}IYnynIFwVQW{<-;MQZUll2fEskE1z7YV$ajQ>1o} z<2gm@@HmlEq)v~MIYsL7I8~~!ZjaNY3hVJWQ>w6DkFz;5QlH1UoU6Njk87nG+Tn4% zR6_$E6Qvs3>2ae}L%Td~mTG9w<5sDLhCC*7>ND(dC#OCm9(Qx+ikdp#cJ)MuZ^Oipw5d(7rE=YYqPoaP+#n9I3pJLK^!=c?_n z$Mc-4wj&-da<1Brdc4fJYCGmJpL5lA+~ZZwRoe-V*Ev^hCq3TeT(zC@c%O5vcG}}Z z&b8VZkB>RmYG*w@=k(>A$CsSGocH*a)0Yb#-*ftM(c?!>UoLt4%<0Qzk6$@`x#ICV zr!QAM{^a!Kn#bRqzFhZMTHyZBgvYW1_W*8qR28@faMNRXfqMYAJXRIB^1tn|y1|u_1IRRLvtS63v}q2M}2_~J@;rR z(4iL|jRiXN(xa(Bhvq$+3v}p}M@xYYy^d}a=+K+!Mu85!jcyd^(7WhHfeyWoZWOp1 z@FBWUphzD*dJA;uQ`DkBhdxIw3fu$u5@jf`hQ502DzJtYq7enw(6?wrfi?6!8c|>k z{fI^sSVKRf3`c2V5)FP+h?F zQVnehm?+iI)_@zO8rl|cyHq*b113wAQy*}rR5=X+cT1Ji7;vvtIZXlgOO?|cFkPyb zmVk$)dT9-KRH~P@fXAhJX%Cnw)k{afY^h#41LjIq(iQNmR3+U3&r4O(6Y!!`CA|SJ zOI6YrFkh;Y{(v`y(*2Ksx1}l>2zXbjlAQtXOI5Nf;6tHw|0CdIsa}QxzLctDIN)ok zN=5<}N>wr%@U2uOV*%d_lx95OM}gAp4)|T5G9O3H95ptF*>qUU2xR+iSkvHmKl z{KZ&nm9+g*tguQx2QLR)tmJd>O02L-KJ%`|%Bke@?OLpjN+!YUu_7w@SWU!hUdd86U|?rms5zE0$2gyYbAIFmv4ts9i$W z?gwmJ!t6a2(7c37J&0$%gqeCep6?Qx^Dtmw3D4+Jz{nD+@;G383F~Dh;PMjg@Xf~a zSi%JQB%a3-?$*LS-JXYNju5e$(3R}W;?aNqAOSp!e zk5#gSE7w=C4vKv2U&m`+7r&gSP=SMgGk10=5)+72XFl6xm@v#OqsRH~kpU zRb&tS6wj^5jQ%-Z%Odmmmw0YPKK5VZxfQ9|LR6~A>iia!DzZAiN1KW~%O6pTVtHpg zkDmb-io6QH;`J?-x5m%?4!Be-Z;nTQ;v-ZnZ;VHO<25hx%$H`kT4eTFmf>2F*{3SQ z^&+#+@(dG2W}g)qZWNh)R%W}8uW%of?pHfMNJWR=uq zcv@sH+md0f$X>QJ!?PlL*|rSNi|l3FGrTCWm(^!@S!6G3$S_}wb@lHTHD+ZEW#wg! zWlPHzcVcPTe~FJ!Qx^Z9I}^=WSyLHzCR%v(|EB)!qSmaeE&h%6_%|x!H@9W+u>AkT zqxP(H}}PF{;%;1U0FQjbd~O`tiO!22YRxyu`=#6 z^k!wd%Xp`zFDu(y#@&VftZaW7@6YVW$_|!sPhlV{J6y)QGCQ-fqh-wPyRx$5W$|9j ze_S+}Ev}3wQyoucarZwy^v4h9rvAgCp=|MgFJHX+AD^oK$A`)I;h(1ddC_pT_I@d}hJeh~kBh_Xdf|FUST^p%?UnY#Fu ny7*^({Ifg$*N?J)J@xMvjhDWoHhyI*$`0QBSBn;5(SQE`B=JCj diff --git a/MDK-ARM/NUCLEO-F103RB/system_stm32f1xx.d b/MDK-ARM/NUCLEO-F103RB/system_stm32f1xx.d deleted file mode 100644 index aaca5d0..0000000 --- a/MDK-ARM/NUCLEO-F103RB/system_stm32f1xx.d +++ /dev/null @@ -1,9 +0,0 @@ -nucleo-f103rb\system_stm32f1xx.o: ../Src/system_stm32f1xx.c -nucleo-f103rb\system_stm32f1xx.o: ..\Inc\stm32f1xx.h -nucleo-f103rb\system_stm32f1xx.o: ..\Inc\stm32f103xb.h -nucleo-f103rb\system_stm32f1xx.o: C:\Users\elies\AppData\Local\Arm\Packs\ARM\CMSIS\5.6.0\CMSIS\Core\Include\core_cm3.h -nucleo-f103rb\system_stm32f1xx.o: F:\Keil\ARM\ARMCC\Bin\..\include\stdint.h -nucleo-f103rb\system_stm32f1xx.o: C:\Users\elies\AppData\Local\Arm\Packs\ARM\CMSIS\5.6.0\CMSIS\Core\Include\cmsis_version.h -nucleo-f103rb\system_stm32f1xx.o: C:\Users\elies\AppData\Local\Arm\Packs\ARM\CMSIS\5.6.0\CMSIS\Core\Include\cmsis_compiler.h -nucleo-f103rb\system_stm32f1xx.o: C:\Users\elies\AppData\Local\Arm\Packs\ARM\CMSIS\5.6.0\CMSIS\Core\Include\cmsis_armcc.h -nucleo-f103rb\system_stm32f1xx.o: ..\Inc\system_stm32f1xx.h diff --git a/MDK-ARM/NUCLEO-F103RB/system_stm32f1xx.o b/MDK-ARM/NUCLEO-F103RB/system_stm32f1xx.o deleted file mode 100644 index e36d31f5414b6ebada686062bcde692b0f88ed41..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 391772 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

    |{kzomn;z&FoZpkT^5+@XXFeONY*ke@HVs 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 diff --git a/MDK-ARM/NUCLEO-F103RB/voile.crf b/MDK-ARM/NUCLEO-F103RB/voile.crf deleted file mode 100644 index 3ff275a183b5af724c3f8454d687f5dc69a1137c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 18 Wcmcb?!N9=8$N&VgH&}p71|d**nfMmMA^$2;q` z9n6vp%3lWt1RG{eYuJZ%#n39r5+-c!BCTvU>LUu_^t#TdArFUY({DBmx83YDunvuC zvwe!ZS#Bt0OSc-EsX{6p$hZZE(&>#m&VL^3!0GlHR;`@NmNIYN*lMZT$fj}_RCOr# zD4=TF+L3ICNfgSuVpa?tQ$|of(k;DmXdh`N%{!Y}JSWx04ca&dq0`UpvN{EGZ^*fB zX?Ce@7&iV>O&ud3xsN0+RM&PMrrD@t`Q84p-SXVmBj>_nY-WATn%vE1|@ombj>v(ovHydU3 zAc+SV^a`KSEa$uU7yE2+8L<0;h7;i29>`&Fku1QrRT+zIiyM`;FJ`i0Hl0mxU1C!!7q`>7?R1f|R!vpVJi|;F2+oekVzHRc7?EnfV%0P}=4o@?s@R!yAzwf`n@$(f zTg+Zl_a=5EM^W=r7MA`}vuiJ^l-PJM>Yfaoj)?6x2~n+?s$MFEHlb?N{jK93+X%%x zvki!zJ2;tThQ1dNSYSm7^AI;F)6FzGdON zaxlT}WK-F-MA%B6jOg_2nY~iYArKB6$`9({bT&tU! zy)PT3XBAVObqck7eZI5sgaXHM-KgnR#3Tq4pCw zDaOl-{ZuT~g{f-KYuX`uT$X@;0%*M;tSsmkKTK$xco40{g2 zC7SQRgB5_eJ1EESp>thd2bh;2k@zeT!yo*GRUsC?8(&*^KfWrwBV1d=r_(G2a48~4 zkA|TOz~u-i=*S~nnI_345fY)r(li0E96~a_8UlcoP>f<F&~aN#C#0JqQq-V5~^d_#JlTab90coIHH08Jk* zV`P2(;bnlIaS=cax%?8qoe(4v%ZViny|Kd5{Ai0!(gIFY{ktRpd`#0EM*D;bxUGBF znBvnlTo|{7C-`#`N%#fl0Pe5hK9Xyg3P5TN(|p{WL81R68$uydAdZ(5jhp)3c&8Hf(1cZiRd5*lIjOov<%)y zx=$Jh0Huh1zVc$_8SZkAQz6`^V48nV(4KSy3P}CvG67=@!yQnuzvAG@ z(qjZ32e;QLuTcm9{7u%u<43HbXFG5c6Mnra(6bgl!5#+!7Wzj+#QPMEdHCV&A495B-8n7?2LR#LT#_x`X6$bWN*)ABjux@p^7q-GC$@idnpUM^vNtw3Mxsp z{j#lF@>yQ0N~&}q?MjwZ)g*b_$Y$$CK2tZc8R_}9k;zCFG8QrxGP7x1K;PP5eo;XaB=HkB^I z!sNpm7Oz|?U!KFq+}yi!H-uZld%}mY4FRtc;HiRuZ30)>GZ2OUVgxTN=ow0QEgvKN zD+?C&!qYz?LD!a#Zz4@d;T-8d`5VH2usc3$i8q9eKLiax{|!QIG(7~NF-uG<0sew; zeyR=QEcN*~U{z4WA66YLsIS=gb1**&W=s=JXbAWOp|QYw5f$Ha0)2D59tr&anQ;6L zg=@4zI%IIMk5G=mO@Q8o!isj_h}KPyA>FOQ?S afq^wQF*A?B`Zg<28>7PC8!SL07?c2r#}NSl diff --git a/MDK-ARM/NUCLEO-F103RB/voilier.d b/MDK-ARM/NUCLEO-F103RB/voilier.d deleted file mode 100644 index bad17ca..0000000 --- a/MDK-ARM/NUCLEO-F103RB/voilier.d +++ /dev/null @@ -1 +0,0 @@ -nucleo-f103rb\voilier.o: ..\Src\Voilier.c diff --git a/MDK-ARM/NUCLEO-F103RB/voilier.o b/MDK-ARM/NUCLEO-F103RB/voilier.o deleted file mode 100644 index 675084ae4e19a607f614c5b0ed3fd3846bea462e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6020 zcmd5=OK%(36+T0X^2m}U+p=Zn*@-hroW^AM($iLKiX2K)ks`x~Y$r@6BsG#5^A$c6 zr)blx`V)$x+jiAOP!vVbMFSMw6ezlAgDwhmQ*>3d*|eJi-K5{ScZNgSavPvs^g^0@ zzVDoS?zyism-CNYA*m<|xkVwBJVf;QqR<55qPj|#=mPm5tBkeoHdo0`tJ`VY?ZJkY zC}cH;ji%kxmP6qcZP-1i4s2~jyILDIng`nIa`)RP-Bfi@tz&+yRM>%EsneSd=oR zztcLjYQ4_;efu#BS??WcnB-!wUfFjRzfNK7#4k|%)n2P!e}#PCm_L7pPLZmpKGm;I zsR4CbJ*BGZjCxv~Rp-=sqB-8aPMJdeBmDaXo;v+V2mhmOK1UC&e9G?MA9T8vWM_!o z5Kmwk4m(=5I;iA(opB!ton62Ly$Z_icmhqIAvAW9l|qkzS| z>l@+NMtEJa#ZoE>^N27Jz&S@uuCK3$BNSZTmpuMc{zBS-wRAOPBW3 z`TwL4NlH%VC{0QDP@>Y1sJMHPsMum6RgDvztQen=u9zMrEX_?=?AF3y`PIi3mW2f5 zNuz~vMwcigcdS**wH;^K!^9*B+tN-syX8#lg!M}N1nUI1iA5(TE?>x{&5ZGIr)eWm zDi;iECy`0t&J|LVja;qlUyjUOA*W%soGF?4%-xe4rgG)2jPZEKDRbXU87H?b?Aai?VLiC0&_*fw#p3fO+-y^=G9iF~qXnR}oS@2=xwaBtYE zjmx989K@m{IhV&_H}M`T<`YSGI3TTJHi1`NqF6KvCCAIiHe>7?87(HZ3-9%GUikBq zA`;{!WEhcz=yOP);$Nglk#|Jyqcf0|=jhc17(NHtk4$*cTtZ^iX?FItSwAjlfpdyq zeL-CeJf)sf&MRl9k^d$sqEjBhdKkJ*h-N&HL__J}^f<{)W?jOym>VaE&bW|`=UqUw z;EJB_vmV99=UyZp(fKJ1&9BbR5-qaG!iB5kSD%LRq7X0}OS4dM2t=1=NeY*lBYFZ2 z=t)-}IZO1Ev|#aR=2>`VmbiNM3_P1lYcoV&ks^`ia&cT3o^!$M?3vj)xW2L=!hC*J zRC)jv&;AQ65WUEi58hr90)}<kHVtl(E!WZ@Ob5nWrvID(4^g($>V@K;$A zpOf}s3AjbX<%yz;3da{)B(@`pvp}>QLd%VX>kI1(e)Z;@xg_UiWs;WUsz+`+c55Cb zn``KGeUfBq!=tvBn7Hl{vLVrpNs4IGBepSDuX)f5^%kb==A?pyW%`y!%W#=Yc;uLq z(?na73gHBF(xV+GAXCp^(jwT8yq^pSh|(T=XW{O`ZH#hTQZC$KXKp*w102}b#vr=b zm5?aIf?vHc7suk<#ENA-g5lmp=y@yUSRl$Ti5)7Jl<0K{d8rGRgeTq?MHX2oNsg#| zN$jTm%h*k~FN?i?CoVksX0E~Tt_z6Xa6|1{d1|+kmc(VS+vHN4F?6MgMdGYJ~#yrwKewznZ|O z=*JUSrSDDP8T!@)K25a=%!xG5%om6Sl@H^_+K6%v?p$hx?I`IAhX?f< z2p=Zt2G{u6g83&Oeu@2%YqkPZ0sFi5(k6x=;>)zWn2ls6~YRR9$J%b9qjoQX#CI~$ouL@$CV zf+>PA4a30mwvJy7#r+li!(wSSxto%36>uk`=fwR`H?|UMdck;oP0tsM;+k$Gw#?(G zyLdX5_2Ca22|hDbyIO0I5`vhFhQjL<7=6W}>C>mOGd{eld>4F|l*`H!%9F~o{woTS z7GeL9!slQ-aRC1NGKIq`3(g@LrM{S z8?Rl*_)XSK+KPb2vl-3rDnA){Kq{Ch!h9E$5Psq6VD`C`1@F=x^$>lXH6KsOub&Xd z)yi11g`F5T2H=znu0Zrlhyf=tzUa|X3ebj2!8!X!-sB?uu~0#}L-~$)(o>TmND{Y8 z2x#F<$oz*ck1IEStUV|FNl(zZ0-XH-ogyI<{S5zd&btiJ!pA#El#BEZ(z`Y{yTOQ80MRI1$UPem?{Jyfpf|vyYx&_(#b(PsI(;Wih8jzm@1S c`3+7`auwZW>N+3ic3>#JrAvjYrtcH|3%t@3BLDyZ From c12e5f7622933519f8f769840501f55eed69b5c7 Mon Sep 17 00:00:00 2001 From: "Elise.B" Date: Wed, 11 Nov 2020 17:10:09 +0100 Subject: [PATCH 5/6] maj fichiers suivis --- MDK-ARM/NUCLEO-F103RB/ExtDll.iex | 2 - MDK-ARM/NUCLEO-F103RB/NUCLEO-F103RB.axf | Bin 428332 -> 0 bytes .../NUCLEO-F103RB/NUCLEO-F103RB.build_log.htm | 80 ---- MDK-ARM/NUCLEO-F103RB/NUCLEO-F103RB.htm | 407 ----------------- MDK-ARM/NUCLEO-F103RB/NUCLEO-F103RB.lnp | 18 - MDK-ARM/NUCLEO-F103RB/NUCLEO-F103RB.map | 428 ------------------ MDK-ARM/NUCLEO-F103RB/NUCLEO-F103RB.sct | 16 - MDK-ARM/NUCLEO-F103RB/NUCLEO-F103RB_sct.Bak | 15 - .../NUCLEO-F103RB/Project_NUCLEO-F103RB.dep | 73 --- MDK-ARM/NUCLEO-F103RB/Project_Simulateur.dep | 73 --- MDK-ARM/NUCLEO-F103RB/allure.crf | Bin 18 -> 0 bytes MDK-ARM/NUCLEO-F103RB/allure.d | 1 - MDK-ARM/NUCLEO-F103RB/allure.o | Bin 4736 -> 0 bytes MDK-ARM/NUCLEO-F103RB/anticharvirement.crf | Bin 18 -> 0 bytes MDK-ARM/NUCLEO-F103RB/anticharvirement.d | 1 - MDK-ARM/NUCLEO-F103RB/anticharvirement.o | Bin 4816 -> 0 bytes MDK-ARM/NUCLEO-F103RB/batterie.crf | Bin 18 -> 0 bytes MDK-ARM/NUCLEO-F103RB/batterie.d | 1 - MDK-ARM/NUCLEO-F103RB/batterie.o | Bin 4756 -> 0 bytes MDK-ARM/NUCLEO-F103RB/chrono.crf | Bin 373469 -> 0 bytes MDK-ARM/NUCLEO-F103RB/chrono.d | 10 - MDK-ARM/NUCLEO-F103RB/chrono.o | Bin 396688 -> 0 bytes MDK-ARM/NUCLEO-F103RB/gouvernail.crf | Bin 18 -> 0 bytes MDK-ARM/NUCLEO-F103RB/gouvernail.d | 1 - MDK-ARM/NUCLEO-F103RB/gouvernail.o | Bin 4764 -> 0 bytes MDK-ARM/NUCLEO-F103RB/heure.crf | Bin 18 -> 0 bytes MDK-ARM/NUCLEO-F103RB/heure.d | 1 - MDK-ARM/NUCLEO-F103RB/heure.o | Bin 4732 -> 0 bytes MDK-ARM/NUCLEO-F103RB/main.crf | Bin 394716 -> 0 bytes MDK-ARM/NUCLEO-F103RB/main.d | 14 - MDK-ARM/NUCLEO-F103RB/main.o | Bin 408160 -> 0 bytes MDK-ARM/NUCLEO-F103RB/mytimer.crf | Bin 373859 -> 0 bytes MDK-ARM/NUCLEO-F103RB/mytimer.d | 8 - MDK-ARM/NUCLEO-F103RB/mytimer.o | Bin 399776 -> 0 bytes MDK-ARM/NUCLEO-F103RB/startup_stm32f103xb.d | 1 - MDK-ARM/NUCLEO-F103RB/startup_stm32f103xb.o | Bin 5868 -> 0 bytes MDK-ARM/NUCLEO-F103RB/stm32f1xx_it.d | 4 - MDK-ARM/NUCLEO-F103RB/stm32f1xx_ll_adc.d | 2 - MDK-ARM/NUCLEO-F103RB/stm32f1xx_ll_crc.d | 2 - MDK-ARM/NUCLEO-F103RB/stm32f1xx_ll_dac.d | 2 - MDK-ARM/NUCLEO-F103RB/stm32f1xx_ll_dma.d | 2 - MDK-ARM/NUCLEO-F103RB/stm32f1xx_ll_exti.d | 2 - MDK-ARM/NUCLEO-F103RB/stm32f1xx_ll_gpio.d | 2 - MDK-ARM/NUCLEO-F103RB/stm32f1xx_ll_i2c.d | 2 - MDK-ARM/NUCLEO-F103RB/stm32f1xx_ll_pwr.d | 2 - MDK-ARM/NUCLEO-F103RB/stm32f1xx_ll_rcc.crf | Bin 389870 -> 0 bytes MDK-ARM/NUCLEO-F103RB/stm32f1xx_ll_rcc.d | 10 - MDK-ARM/NUCLEO-F103RB/stm32f1xx_ll_rcc.o | Bin 413376 -> 0 bytes MDK-ARM/NUCLEO-F103RB/stm32f1xx_ll_rtc.d | 2 - MDK-ARM/NUCLEO-F103RB/stm32f1xx_ll_spi.d | 2 - MDK-ARM/NUCLEO-F103RB/stm32f1xx_ll_tim.d | 2 - MDK-ARM/NUCLEO-F103RB/stm32f1xx_ll_usart.d | 2 - MDK-ARM/NUCLEO-F103RB/stm32f1xx_ll_utils.crf | Bin 396190 -> 0 bytes MDK-ARM/NUCLEO-F103RB/stm32f1xx_ll_utils.d | 12 - MDK-ARM/NUCLEO-F103RB/stm32f1xx_ll_utils.o | Bin 422584 -> 0 bytes MDK-ARM/NUCLEO-F103RB/system_stm32f1xx.crf | Bin 373980 -> 0 bytes MDK-ARM/NUCLEO-F103RB/system_stm32f1xx.d | 9 - MDK-ARM/NUCLEO-F103RB/system_stm32f1xx.o | Bin 391768 -> 0 bytes MDK-ARM/NUCLEO-F103RB/transmission.crf | Bin 18 -> 0 bytes MDK-ARM/NUCLEO-F103RB/transmission.d | 1 - MDK-ARM/NUCLEO-F103RB/transmission.o | Bin 4784 -> 0 bytes MDK-ARM/NUCLEO-F103RB/voile.crf | Bin 18 -> 0 bytes MDK-ARM/NUCLEO-F103RB/voile.d | 1 - MDK-ARM/NUCLEO-F103RB/voile.o | Bin 4732 -> 0 bytes MDK-ARM/NUCLEO-F103RB/voilier.crf | Bin 18 -> 0 bytes MDK-ARM/NUCLEO-F103RB/voilier.d | 1 - MDK-ARM/NUCLEO-F103RB/voilier.o | Bin 4740 -> 0 bytes 67 files changed, 1212 deletions(-) delete mode 100644 MDK-ARM/NUCLEO-F103RB/ExtDll.iex delete mode 100644 MDK-ARM/NUCLEO-F103RB/NUCLEO-F103RB.axf delete mode 100644 MDK-ARM/NUCLEO-F103RB/NUCLEO-F103RB.build_log.htm delete mode 100644 MDK-ARM/NUCLEO-F103RB/NUCLEO-F103RB.htm delete mode 100644 MDK-ARM/NUCLEO-F103RB/NUCLEO-F103RB.lnp delete mode 100644 MDK-ARM/NUCLEO-F103RB/NUCLEO-F103RB.map delete mode 100644 MDK-ARM/NUCLEO-F103RB/NUCLEO-F103RB.sct delete mode 100644 MDK-ARM/NUCLEO-F103RB/NUCLEO-F103RB_sct.Bak delete mode 100644 MDK-ARM/NUCLEO-F103RB/Project_NUCLEO-F103RB.dep delete mode 100644 MDK-ARM/NUCLEO-F103RB/Project_Simulateur.dep delete mode 100644 MDK-ARM/NUCLEO-F103RB/allure.crf delete mode 100644 MDK-ARM/NUCLEO-F103RB/allure.d delete mode 100644 MDK-ARM/NUCLEO-F103RB/allure.o delete mode 100644 MDK-ARM/NUCLEO-F103RB/anticharvirement.crf delete mode 100644 MDK-ARM/NUCLEO-F103RB/anticharvirement.d delete mode 100644 MDK-ARM/NUCLEO-F103RB/anticharvirement.o delete mode 100644 MDK-ARM/NUCLEO-F103RB/batterie.crf delete mode 100644 MDK-ARM/NUCLEO-F103RB/batterie.d delete mode 100644 MDK-ARM/NUCLEO-F103RB/batterie.o delete mode 100644 MDK-ARM/NUCLEO-F103RB/chrono.crf delete mode 100644 MDK-ARM/NUCLEO-F103RB/chrono.d delete mode 100644 MDK-ARM/NUCLEO-F103RB/chrono.o delete mode 100644 MDK-ARM/NUCLEO-F103RB/gouvernail.crf delete mode 100644 MDK-ARM/NUCLEO-F103RB/gouvernail.d delete mode 100644 MDK-ARM/NUCLEO-F103RB/gouvernail.o delete mode 100644 MDK-ARM/NUCLEO-F103RB/heure.crf delete mode 100644 MDK-ARM/NUCLEO-F103RB/heure.d delete mode 100644 MDK-ARM/NUCLEO-F103RB/heure.o delete mode 100644 MDK-ARM/NUCLEO-F103RB/main.crf delete mode 100644 MDK-ARM/NUCLEO-F103RB/main.d delete mode 100644 MDK-ARM/NUCLEO-F103RB/main.o delete mode 100644 MDK-ARM/NUCLEO-F103RB/mytimer.crf delete mode 100644 MDK-ARM/NUCLEO-F103RB/mytimer.d delete mode 100644 MDK-ARM/NUCLEO-F103RB/mytimer.o delete mode 100644 MDK-ARM/NUCLEO-F103RB/startup_stm32f103xb.d delete mode 100644 MDK-ARM/NUCLEO-F103RB/startup_stm32f103xb.o delete mode 100644 MDK-ARM/NUCLEO-F103RB/stm32f1xx_it.d delete mode 100644 MDK-ARM/NUCLEO-F103RB/stm32f1xx_ll_adc.d delete mode 100644 MDK-ARM/NUCLEO-F103RB/stm32f1xx_ll_crc.d delete mode 100644 MDK-ARM/NUCLEO-F103RB/stm32f1xx_ll_dac.d delete mode 100644 MDK-ARM/NUCLEO-F103RB/stm32f1xx_ll_dma.d delete mode 100644 MDK-ARM/NUCLEO-F103RB/stm32f1xx_ll_exti.d delete mode 100644 MDK-ARM/NUCLEO-F103RB/stm32f1xx_ll_gpio.d delete mode 100644 MDK-ARM/NUCLEO-F103RB/stm32f1xx_ll_i2c.d delete mode 100644 MDK-ARM/NUCLEO-F103RB/stm32f1xx_ll_pwr.d delete mode 100644 MDK-ARM/NUCLEO-F103RB/stm32f1xx_ll_rcc.crf delete mode 100644 MDK-ARM/NUCLEO-F103RB/stm32f1xx_ll_rcc.d delete mode 100644 MDK-ARM/NUCLEO-F103RB/stm32f1xx_ll_rcc.o delete mode 100644 MDK-ARM/NUCLEO-F103RB/stm32f1xx_ll_rtc.d delete mode 100644 MDK-ARM/NUCLEO-F103RB/stm32f1xx_ll_spi.d delete mode 100644 MDK-ARM/NUCLEO-F103RB/stm32f1xx_ll_tim.d delete mode 100644 MDK-ARM/NUCLEO-F103RB/stm32f1xx_ll_usart.d delete mode 100644 MDK-ARM/NUCLEO-F103RB/stm32f1xx_ll_utils.crf delete mode 100644 MDK-ARM/NUCLEO-F103RB/stm32f1xx_ll_utils.d delete mode 100644 MDK-ARM/NUCLEO-F103RB/stm32f1xx_ll_utils.o delete mode 100644 MDK-ARM/NUCLEO-F103RB/system_stm32f1xx.crf delete mode 100644 MDK-ARM/NUCLEO-F103RB/system_stm32f1xx.d delete mode 100644 MDK-ARM/NUCLEO-F103RB/system_stm32f1xx.o delete mode 100644 MDK-ARM/NUCLEO-F103RB/transmission.crf delete mode 100644 MDK-ARM/NUCLEO-F103RB/transmission.d delete mode 100644 MDK-ARM/NUCLEO-F103RB/transmission.o delete mode 100644 MDK-ARM/NUCLEO-F103RB/voile.crf delete mode 100644 MDK-ARM/NUCLEO-F103RB/voile.d delete mode 100644 MDK-ARM/NUCLEO-F103RB/voile.o delete mode 100644 MDK-ARM/NUCLEO-F103RB/voilier.crf delete mode 100644 MDK-ARM/NUCLEO-F103RB/voilier.d delete mode 100644 MDK-ARM/NUCLEO-F103RB/voilier.o diff --git a/MDK-ARM/NUCLEO-F103RB/ExtDll.iex b/MDK-ARM/NUCLEO-F103RB/ExtDll.iex deleted file mode 100644 index 6c0896e..0000000 --- a/MDK-ARM/NUCLEO-F103RB/ExtDll.iex +++ /dev/null @@ -1,2 +0,0 @@ -[EXTDLL] -Count=0 diff --git a/MDK-ARM/NUCLEO-F103RB/NUCLEO-F103RB.axf b/MDK-ARM/NUCLEO-F103RB/NUCLEO-F103RB.axf deleted file mode 100644 index 5f56b63d66bdc6ca4481d0be4fd5fcd702515f71..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 428332 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 M)IQFcKFq`YFS7<==Kufz diff --git a/MDK-ARM/NUCLEO-F103RB/NUCLEO-F103RB.build_log.htm b/MDK-ARM/NUCLEO-F103RB/NUCLEO-F103RB.build_log.htm deleted file mode 100644 index 768d4cb..0000000 --- a/MDK-ARM/NUCLEO-F103RB/NUCLEO-F103RB.build_log.htm +++ /dev/null @@ -1,80 +0,0 @@ - - -

    -

    µVision Build Log

    -

    Tool Versions:

    -IDE-Version: µVision V5.29.0.0 -Copyright (C) 2019 ARM Ltd and ARM Germany GmbH. All rights reserved. -License Information: Toto Lala, INSA Toulouse, LIC=---- - -Tool Versions: -Toolchain: MDK-Lite Version: 5.29.0.0 -Toolchain Path: F:\Keil\ARM\ARMCC\Bin -C Compiler: Armcc.exe V5.06 update 6 (build 750) -Assembler: Armasm.exe V5.06 update 6 (build 750) -Linker/Locator: ArmLink.exe V5.06 update 6 (build 750) -Library Manager: ArmAr.exe V5.06 update 6 (build 750) -Hex Converter: FromElf.exe V5.06 update 6 (build 750) -CPU DLL: SARMCM3.DLL V5.29.0.0 -Dialog DLL: DARMSTM.DLL V1.68.0.0 -Target DLL: STLink\ST-LINKIII-KEIL_SWO.dll V3.0.7.0 -Dialog DLL: TARMSTM.DLL V1.66.0.0 - -

    Project:

    -C:\Users\elies\Desktop\Cours\4A\Info Mat\Projet_Voilier_4IR\MDK-ARM\Project.uvprojx -Project File Date: 11/02/2020 - -

    Output:

    -*** Using Compiler 'V5.06 update 6 (build 750)', folder: 'F:\Keil\ARM\ARMCC\Bin' -Rebuild target 'Simulateur' -compiling Voilier.c... -compiling Allure.c... -compiling Gouvernail.c... -compiling Batterie.c... -compiling Heure.c... -compiling Transmission.c... -compiling Voile.c... -compiling MyTimer.c... -compiling stm32f1xx_ll_rcc.c... -compiling AntiChavirement.c... -..\Src\AntiChavirement.h(28): warning: #1295-D: Deprecated declaration RecupRouli - give arg types - int RecupRouli(); -..\Src\AntiChavirement.h(36): warning: #1295-D: Deprecated declaration ConfAntiChavirement - give arg types - void ConfAntiChavirement(); -..\Src\AntiChavirement.c(4): warning: #940-D: missing return statement at end of non-void function "CalculerDanger" - } -..\Src\AntiChavirement.c(7): warning: #940-D: missing return statement at end of non-void function "RecupRouli" - } -..\Src\AntiChavirement.c: 4 warnings, 0 errors -assembling startup_stm32f103xb.s... -compiling stm32f1xx_ll_utils.c... -compiling system_stm32f1xx.c... -linking... -Program Size: Code=924 RO-data=268 RW-data=28 ZI-data=1028 -"NUCLEO-F103RB\NUCLEO-F103RB.axf" - 0 Error(s), 4 Warning(s). - -

    Software Packages used:

    - -Package Vendor: ARM - http://www.keil.com/pack/ARM.CMSIS.5.6.0.pack - ARM.CMSIS.5.6.0 - CMSIS (Cortex Microcontroller Software Interface Standard) - * Component: CORE Version: 5.3.0 - -Package Vendor: Keil - http://www.keil.com/pack/Keil.STM32F1xx_DFP.2.3.0.pack - Keil.STM32F1xx_DFP.2.3.0 - STMicroelectronics STM32F1 Series Device Support, Drivers and Examples - -

    Collection of Component include folders:

    - .\RTE\_Simulateur - C:\Users\elies\AppData\Local\Arm\Packs\ARM\CMSIS\5.6.0\CMSIS\Core\Include - C:\Users\elies\AppData\Local\Arm\Packs\Keil\STM32F1xx_DFP\2.3.0\Device\Include - -

    Collection of Component Files used:

    - - * Component: ARM::CMSIS:CORE:5.3.0 -Build Time Elapsed: 00:00:06 -
    - - diff --git a/MDK-ARM/NUCLEO-F103RB/NUCLEO-F103RB.htm b/MDK-ARM/NUCLEO-F103RB/NUCLEO-F103RB.htm deleted file mode 100644 index c0a01bf..0000000 --- a/MDK-ARM/NUCLEO-F103RB/NUCLEO-F103RB.htm +++ /dev/null @@ -1,407 +0,0 @@ - - -Static Call Graph - [NUCLEO-F103RB\NUCLEO-F103RB.axf] -
    -

    Static Call Graph for image NUCLEO-F103RB\NUCLEO-F103RB.axf


    -

    #<CALLGRAPH># ARM Linker, 5060750: Last Updated: Mon Nov 02 18:12:38 2020 -

    -

    Maximum Stack Usage = 32 bytes + Unknown(Cycles, Untraceable Function Pointers)

    -Call chain for Maximum Stack Depth:

    -main ⇒ ConfAntiChavirement ⇒ LL_ADC_SetChannelSamplingTime -

    -

    -Mutually Recursive functions -

  • NMI_Handler   ⇒   NMI_Handler
    -
  • HardFault_Handler   ⇒   HardFault_Handler
    -
  • MemManage_Handler   ⇒   MemManage_Handler
    -
  • BusFault_Handler   ⇒   BusFault_Handler
    -
  • UsageFault_Handler   ⇒   UsageFault_Handler
    -
  • SVC_Handler   ⇒   SVC_Handler
    -
  • DebugMon_Handler   ⇒   DebugMon_Handler
    -
  • PendSV_Handler   ⇒   PendSV_Handler
    -
  • SysTick_Handler   ⇒   SysTick_Handler
    -
  • ADC1_2_IRQHandler   ⇒   ADC1_2_IRQHandler
    - -

    -

    -Function Pointers -

      -
    • ADC1_2_IRQHandler from startup_stm32f103xb.o(.text) referenced from startup_stm32f103xb.o(RESET) -
    • BusFault_Handler from startup_stm32f103xb.o(.text) referenced from startup_stm32f103xb.o(RESET) -
    • CAN1_RX1_IRQHandler from startup_stm32f103xb.o(.text) referenced from startup_stm32f103xb.o(RESET) -
    • CAN1_SCE_IRQHandler from startup_stm32f103xb.o(.text) referenced from startup_stm32f103xb.o(RESET) -
    • DMA1_Channel1_IRQHandler from startup_stm32f103xb.o(.text) referenced from startup_stm32f103xb.o(RESET) -
    • DMA1_Channel2_IRQHandler from startup_stm32f103xb.o(.text) referenced from startup_stm32f103xb.o(RESET) -
    • DMA1_Channel3_IRQHandler from startup_stm32f103xb.o(.text) referenced from startup_stm32f103xb.o(RESET) -
    • DMA1_Channel4_IRQHandler from startup_stm32f103xb.o(.text) referenced from startup_stm32f103xb.o(RESET) -
    • DMA1_Channel5_IRQHandler from startup_stm32f103xb.o(.text) referenced from startup_stm32f103xb.o(RESET) -
    • DMA1_Channel6_IRQHandler from startup_stm32f103xb.o(.text) referenced from startup_stm32f103xb.o(RESET) -
    • DMA1_Channel7_IRQHandler from startup_stm32f103xb.o(.text) referenced from startup_stm32f103xb.o(RESET) -
    • DebugMon_Handler from startup_stm32f103xb.o(.text) referenced from startup_stm32f103xb.o(RESET) -
    • EXTI0_IRQHandler from startup_stm32f103xb.o(.text) referenced from startup_stm32f103xb.o(RESET) -
    • EXTI15_10_IRQHandler from startup_stm32f103xb.o(.text) referenced from startup_stm32f103xb.o(RESET) -
    • EXTI1_IRQHandler from startup_stm32f103xb.o(.text) referenced from startup_stm32f103xb.o(RESET) -
    • EXTI2_IRQHandler from startup_stm32f103xb.o(.text) referenced from startup_stm32f103xb.o(RESET) -
    • EXTI3_IRQHandler from startup_stm32f103xb.o(.text) referenced from startup_stm32f103xb.o(RESET) -
    • EXTI4_IRQHandler from startup_stm32f103xb.o(.text) referenced from startup_stm32f103xb.o(RESET) -
    • EXTI9_5_IRQHandler from startup_stm32f103xb.o(.text) referenced from startup_stm32f103xb.o(RESET) -
    • FLASH_IRQHandler from startup_stm32f103xb.o(.text) referenced from startup_stm32f103xb.o(RESET) -
    • HardFault_Handler from startup_stm32f103xb.o(.text) referenced from startup_stm32f103xb.o(RESET) -
    • I2C1_ER_IRQHandler from startup_stm32f103xb.o(.text) referenced from startup_stm32f103xb.o(RESET) -
    • I2C1_EV_IRQHandler from startup_stm32f103xb.o(.text) referenced from startup_stm32f103xb.o(RESET) -
    • I2C2_ER_IRQHandler from startup_stm32f103xb.o(.text) referenced from startup_stm32f103xb.o(RESET) -
    • I2C2_EV_IRQHandler from startup_stm32f103xb.o(.text) referenced from startup_stm32f103xb.o(RESET) -
    • MemManage_Handler from startup_stm32f103xb.o(.text) referenced from startup_stm32f103xb.o(RESET) -
    • NMI_Handler from startup_stm32f103xb.o(.text) referenced from startup_stm32f103xb.o(RESET) -
    • PVD_IRQHandler from startup_stm32f103xb.o(.text) referenced from startup_stm32f103xb.o(RESET) -
    • PendSV_Handler from startup_stm32f103xb.o(.text) referenced from startup_stm32f103xb.o(RESET) -
    • RCC_IRQHandler from startup_stm32f103xb.o(.text) referenced from startup_stm32f103xb.o(RESET) -
    • RTC_Alarm_IRQHandler from startup_stm32f103xb.o(.text) referenced from startup_stm32f103xb.o(RESET) -
    • RTC_IRQHandler from startup_stm32f103xb.o(.text) referenced from startup_stm32f103xb.o(RESET) -
    • Reset_Handler from startup_stm32f103xb.o(.text) referenced from startup_stm32f103xb.o(RESET) -
    • SPI1_IRQHandler from startup_stm32f103xb.o(.text) referenced from startup_stm32f103xb.o(RESET) -
    • SPI2_IRQHandler from startup_stm32f103xb.o(.text) referenced from startup_stm32f103xb.o(RESET) -
    • SVC_Handler from startup_stm32f103xb.o(.text) referenced from startup_stm32f103xb.o(RESET) -
    • SysTick_Handler from startup_stm32f103xb.o(.text) referenced from startup_stm32f103xb.o(RESET) -
    • SystemInit from system_stm32f1xx.o(i.SystemInit) referenced from startup_stm32f103xb.o(.text) -
    • TAMPER_IRQHandler from startup_stm32f103xb.o(.text) referenced from startup_stm32f103xb.o(RESET) -
    • TIM1_BRK_IRQHandler from startup_stm32f103xb.o(.text) referenced from startup_stm32f103xb.o(RESET) -
    • TIM1_CC_IRQHandler from startup_stm32f103xb.o(.text) referenced from startup_stm32f103xb.o(RESET) -
    • TIM1_TRG_COM_IRQHandler from startup_stm32f103xb.o(.text) referenced from startup_stm32f103xb.o(RESET) -
    • TIM1_UP_IRQHandler from mytimer.o(i.TIM1_UP_IRQHandler) referenced from startup_stm32f103xb.o(RESET) -
    • TIM2_IRQHandler from mytimer.o(i.TIM2_IRQHandler) referenced from startup_stm32f103xb.o(RESET) -
    • TIM3_IRQHandler from mytimer.o(i.TIM3_IRQHandler) referenced from startup_stm32f103xb.o(RESET) -
    • TIM4_IRQHandler from mytimer.o(i.TIM4_IRQHandler) referenced from startup_stm32f103xb.o(RESET) -
    • USART1_IRQHandler from startup_stm32f103xb.o(.text) referenced from startup_stm32f103xb.o(RESET) -
    • USART2_IRQHandler from startup_stm32f103xb.o(.text) referenced from startup_stm32f103xb.o(RESET) -
    • USART3_IRQHandler from startup_stm32f103xb.o(.text) referenced from startup_stm32f103xb.o(RESET) -
    • USBWakeUp_IRQHandler from startup_stm32f103xb.o(.text) referenced from startup_stm32f103xb.o(RESET) -
    • USB_HP_CAN1_TX_IRQHandler from startup_stm32f103xb.o(.text) referenced from startup_stm32f103xb.o(RESET) -
    • USB_LP_CAN1_RX0_IRQHandler from startup_stm32f103xb.o(.text) referenced from startup_stm32f103xb.o(RESET) -
    • UsageFault_Handler from startup_stm32f103xb.o(.text) referenced from startup_stm32f103xb.o(RESET) -
    • WWDG_IRQHandler from startup_stm32f103xb.o(.text) referenced from startup_stm32f103xb.o(RESET) -
    • __main from entry.o(.ARM.Collect$$$$00000000) referenced from startup_stm32f103xb.o(.text) -
    • main from antichavirement.o(i.main) referenced from entry9a.o(.ARM.Collect$$$$0000000B) -
    -

    -

    -Global Symbols -

    -

    __main (Thumb, 0 bytes, Stack size unknown bytes, entry.o(.ARM.Collect$$$$00000000)) -
    [Address Reference Count : 1]

    • startup_stm32f103xb.o(.text) -
    -

    _main_stk (Thumb, 0 bytes, Stack size unknown bytes, entry2.o(.ARM.Collect$$$$00000001)) - -

    _main_scatterload (Thumb, 0 bytes, Stack size unknown bytes, entry5.o(.ARM.Collect$$$$00000004)) -

    [Calls]

    • >>   __scatterload -
    - -

    __main_after_scatterload (Thumb, 0 bytes, Stack size unknown bytes, entry5.o(.ARM.Collect$$$$00000004)) -

    [Called By]

    • >>   __scatterload -
    - -

    _main_clock (Thumb, 0 bytes, Stack size unknown bytes, entry7b.o(.ARM.Collect$$$$00000008)) - -

    _main_cpp_init (Thumb, 0 bytes, Stack size unknown bytes, entry8b.o(.ARM.Collect$$$$0000000A)) - -

    _main_init (Thumb, 0 bytes, Stack size unknown bytes, entry9a.o(.ARM.Collect$$$$0000000B)) - -

    __rt_final_cpp (Thumb, 0 bytes, Stack size unknown bytes, entry10a.o(.ARM.Collect$$$$0000000D)) - -

    __rt_final_exit (Thumb, 0 bytes, Stack size unknown bytes, entry11a.o(.ARM.Collect$$$$0000000F)) - -

    Reset_Handler (Thumb, 8 bytes, Stack size 0 bytes, startup_stm32f103xb.o(.text)) -
    [Address Reference Count : 1]

    • startup_stm32f103xb.o(RESET) -
    -

    NMI_Handler (Thumb, 2 bytes, Stack size 0 bytes, startup_stm32f103xb.o(.text)) -

    [Calls]

    • >>   NMI_Handler -
    -
    [Called By]
    • >>   NMI_Handler -
    -
    [Address Reference Count : 1]
    • startup_stm32f103xb.o(RESET) -
    -

    HardFault_Handler (Thumb, 2 bytes, Stack size 0 bytes, startup_stm32f103xb.o(.text)) -

    [Calls]

    • >>   HardFault_Handler -
    -
    [Called By]
    • >>   HardFault_Handler -
    -
    [Address Reference Count : 1]
    • startup_stm32f103xb.o(RESET) -
    -

    MemManage_Handler (Thumb, 2 bytes, Stack size 0 bytes, startup_stm32f103xb.o(.text)) -

    [Calls]

    • >>   MemManage_Handler -
    -
    [Called By]
    • >>   MemManage_Handler -
    -
    [Address Reference Count : 1]
    • startup_stm32f103xb.o(RESET) -
    -

    BusFault_Handler (Thumb, 2 bytes, Stack size 0 bytes, startup_stm32f103xb.o(.text)) -

    [Calls]

    • >>   BusFault_Handler -
    -
    [Called By]
    • >>   BusFault_Handler -
    -
    [Address Reference Count : 1]
    • startup_stm32f103xb.o(RESET) -
    -

    UsageFault_Handler (Thumb, 2 bytes, Stack size 0 bytes, startup_stm32f103xb.o(.text)) -

    [Calls]

    • >>   UsageFault_Handler -
    -
    [Called By]
    • >>   UsageFault_Handler -
    -
    [Address Reference Count : 1]
    • startup_stm32f103xb.o(RESET) -
    -

    SVC_Handler (Thumb, 2 bytes, Stack size 0 bytes, startup_stm32f103xb.o(.text)) -

    [Calls]

    • >>   SVC_Handler -
    -
    [Called By]
    • >>   SVC_Handler -
    -
    [Address Reference Count : 1]
    • startup_stm32f103xb.o(RESET) -
    -

    DebugMon_Handler (Thumb, 2 bytes, Stack size 0 bytes, startup_stm32f103xb.o(.text)) -

    [Calls]

    • >>   DebugMon_Handler -
    -
    [Called By]
    • >>   DebugMon_Handler -
    -
    [Address Reference Count : 1]
    • startup_stm32f103xb.o(RESET) -
    -

    PendSV_Handler (Thumb, 2 bytes, Stack size 0 bytes, startup_stm32f103xb.o(.text)) -

    [Calls]

    • >>   PendSV_Handler -
    -
    [Called By]
    • >>   PendSV_Handler -
    -
    [Address Reference Count : 1]
    • startup_stm32f103xb.o(RESET) -
    -

    SysTick_Handler (Thumb, 2 bytes, Stack size 0 bytes, startup_stm32f103xb.o(.text)) -

    [Calls]

    • >>   SysTick_Handler -
    -
    [Called By]
    • >>   SysTick_Handler -
    -
    [Address Reference Count : 1]
    • startup_stm32f103xb.o(RESET) -
    -

    ADC1_2_IRQHandler (Thumb, 0 bytes, Stack size 0 bytes, startup_stm32f103xb.o(.text)) -

    [Calls]

    • >>   ADC1_2_IRQHandler -
    -
    [Called By]
    • >>   ADC1_2_IRQHandler -
    -
    [Address Reference Count : 1]
    • startup_stm32f103xb.o(RESET) -
    -

    CAN1_RX1_IRQHandler (Thumb, 0 bytes, Stack size 0 bytes, startup_stm32f103xb.o(.text)) -
    [Address Reference Count : 1]

    • startup_stm32f103xb.o(RESET) -
    -

    CAN1_SCE_IRQHandler (Thumb, 0 bytes, Stack size 0 bytes, startup_stm32f103xb.o(.text)) -
    [Address Reference Count : 1]

    • startup_stm32f103xb.o(RESET) -
    -

    DMA1_Channel1_IRQHandler (Thumb, 0 bytes, Stack size 0 bytes, startup_stm32f103xb.o(.text)) -
    [Address Reference Count : 1]

    • startup_stm32f103xb.o(RESET) -
    -

    DMA1_Channel2_IRQHandler (Thumb, 0 bytes, Stack size 0 bytes, startup_stm32f103xb.o(.text)) -
    [Address Reference Count : 1]

    • startup_stm32f103xb.o(RESET) -
    -

    DMA1_Channel3_IRQHandler (Thumb, 0 bytes, Stack size 0 bytes, startup_stm32f103xb.o(.text)) -
    [Address Reference Count : 1]

    • startup_stm32f103xb.o(RESET) -
    -

    DMA1_Channel4_IRQHandler (Thumb, 0 bytes, Stack size 0 bytes, startup_stm32f103xb.o(.text)) -
    [Address Reference Count : 1]

    • startup_stm32f103xb.o(RESET) -
    -

    DMA1_Channel5_IRQHandler (Thumb, 0 bytes, Stack size 0 bytes, startup_stm32f103xb.o(.text)) -
    [Address Reference Count : 1]

    • startup_stm32f103xb.o(RESET) -
    -

    DMA1_Channel6_IRQHandler (Thumb, 0 bytes, Stack size 0 bytes, startup_stm32f103xb.o(.text)) -
    [Address Reference Count : 1]

    • startup_stm32f103xb.o(RESET) -
    -

    DMA1_Channel7_IRQHandler (Thumb, 0 bytes, Stack size 0 bytes, startup_stm32f103xb.o(.text)) -
    [Address Reference Count : 1]

    • startup_stm32f103xb.o(RESET) -
    -

    EXTI0_IRQHandler (Thumb, 0 bytes, Stack size 0 bytes, startup_stm32f103xb.o(.text)) -
    [Address Reference Count : 1]

    • startup_stm32f103xb.o(RESET) -
    -

    EXTI15_10_IRQHandler (Thumb, 0 bytes, Stack size 0 bytes, startup_stm32f103xb.o(.text)) -
    [Address Reference Count : 1]

    • startup_stm32f103xb.o(RESET) -
    -

    EXTI1_IRQHandler (Thumb, 0 bytes, Stack size 0 bytes, startup_stm32f103xb.o(.text)) -
    [Address Reference Count : 1]

    • startup_stm32f103xb.o(RESET) -
    -

    EXTI2_IRQHandler (Thumb, 0 bytes, Stack size 0 bytes, startup_stm32f103xb.o(.text)) -
    [Address Reference Count : 1]

    • startup_stm32f103xb.o(RESET) -
    -

    EXTI3_IRQHandler (Thumb, 0 bytes, Stack size 0 bytes, startup_stm32f103xb.o(.text)) -
    [Address Reference Count : 1]

    • startup_stm32f103xb.o(RESET) -
    -

    EXTI4_IRQHandler (Thumb, 0 bytes, Stack size 0 bytes, startup_stm32f103xb.o(.text)) -
    [Address Reference Count : 1]

    • startup_stm32f103xb.o(RESET) -
    -

    EXTI9_5_IRQHandler (Thumb, 0 bytes, Stack size 0 bytes, startup_stm32f103xb.o(.text)) -
    [Address Reference Count : 1]

    • startup_stm32f103xb.o(RESET) -
    -

    FLASH_IRQHandler (Thumb, 0 bytes, Stack size 0 bytes, startup_stm32f103xb.o(.text)) -
    [Address Reference Count : 1]

    • startup_stm32f103xb.o(RESET) -
    -

    I2C1_ER_IRQHandler (Thumb, 0 bytes, Stack size 0 bytes, startup_stm32f103xb.o(.text)) -
    [Address Reference Count : 1]

    • startup_stm32f103xb.o(RESET) -
    -

    I2C1_EV_IRQHandler (Thumb, 0 bytes, Stack size 0 bytes, startup_stm32f103xb.o(.text)) -
    [Address Reference Count : 1]

    • startup_stm32f103xb.o(RESET) -
    -

    I2C2_ER_IRQHandler (Thumb, 0 bytes, Stack size 0 bytes, startup_stm32f103xb.o(.text)) -
    [Address Reference Count : 1]

    • startup_stm32f103xb.o(RESET) -
    -

    I2C2_EV_IRQHandler (Thumb, 0 bytes, Stack size 0 bytes, startup_stm32f103xb.o(.text)) -
    [Address Reference Count : 1]

    • startup_stm32f103xb.o(RESET) -
    -

    PVD_IRQHandler (Thumb, 0 bytes, Stack size 0 bytes, startup_stm32f103xb.o(.text)) -
    [Address Reference Count : 1]

    • startup_stm32f103xb.o(RESET) -
    -

    RCC_IRQHandler (Thumb, 0 bytes, Stack size 0 bytes, startup_stm32f103xb.o(.text)) -
    [Address Reference Count : 1]

    • startup_stm32f103xb.o(RESET) -
    -

    RTC_Alarm_IRQHandler (Thumb, 0 bytes, Stack size 0 bytes, startup_stm32f103xb.o(.text)) -
    [Address Reference Count : 1]

    • startup_stm32f103xb.o(RESET) -
    -

    RTC_IRQHandler (Thumb, 0 bytes, Stack size 0 bytes, startup_stm32f103xb.o(.text)) -
    [Address Reference Count : 1]

    • startup_stm32f103xb.o(RESET) -
    -

    SPI1_IRQHandler (Thumb, 0 bytes, Stack size 0 bytes, startup_stm32f103xb.o(.text)) -
    [Address Reference Count : 1]

    • startup_stm32f103xb.o(RESET) -
    -

    SPI2_IRQHandler (Thumb, 0 bytes, Stack size 0 bytes, startup_stm32f103xb.o(.text)) -
    [Address Reference Count : 1]

    • startup_stm32f103xb.o(RESET) -
    -

    TAMPER_IRQHandler (Thumb, 0 bytes, Stack size 0 bytes, startup_stm32f103xb.o(.text)) -
    [Address Reference Count : 1]

    • startup_stm32f103xb.o(RESET) -
    -

    TIM1_BRK_IRQHandler (Thumb, 0 bytes, Stack size 0 bytes, startup_stm32f103xb.o(.text)) -
    [Address Reference Count : 1]

    • startup_stm32f103xb.o(RESET) -
    -

    TIM1_CC_IRQHandler (Thumb, 0 bytes, Stack size 0 bytes, startup_stm32f103xb.o(.text)) -
    [Address Reference Count : 1]

    • startup_stm32f103xb.o(RESET) -
    -

    TIM1_TRG_COM_IRQHandler (Thumb, 0 bytes, Stack size 0 bytes, startup_stm32f103xb.o(.text)) -
    [Address Reference Count : 1]

    • startup_stm32f103xb.o(RESET) -
    -

    USART1_IRQHandler (Thumb, 0 bytes, Stack size 0 bytes, startup_stm32f103xb.o(.text)) -
    [Address Reference Count : 1]

    • startup_stm32f103xb.o(RESET) -
    -

    USART2_IRQHandler (Thumb, 0 bytes, Stack size 0 bytes, startup_stm32f103xb.o(.text)) -
    [Address Reference Count : 1]

    • startup_stm32f103xb.o(RESET) -
    -

    USART3_IRQHandler (Thumb, 0 bytes, Stack size 0 bytes, startup_stm32f103xb.o(.text)) -
    [Address Reference Count : 1]

    • startup_stm32f103xb.o(RESET) -
    -

    USBWakeUp_IRQHandler (Thumb, 0 bytes, Stack size 0 bytes, startup_stm32f103xb.o(.text)) -
    [Address Reference Count : 1]

    • startup_stm32f103xb.o(RESET) -
    -

    USB_HP_CAN1_TX_IRQHandler (Thumb, 0 bytes, Stack size 0 bytes, startup_stm32f103xb.o(.text)) -
    [Address Reference Count : 1]

    • startup_stm32f103xb.o(RESET) -
    -

    USB_LP_CAN1_RX0_IRQHandler (Thumb, 0 bytes, Stack size 0 bytes, startup_stm32f103xb.o(.text)) -
    [Address Reference Count : 1]

    • startup_stm32f103xb.o(RESET) -
    -

    WWDG_IRQHandler (Thumb, 0 bytes, Stack size 0 bytes, startup_stm32f103xb.o(.text)) -
    [Address Reference Count : 1]

    • startup_stm32f103xb.o(RESET) -
    -

    __scatterload (Thumb, 28 bytes, Stack size 0 bytes, init.o(.text)) -

    [Calls]

    • >>   __main_after_scatterload -
    -
    [Called By]
    • >>   _main_scatterload -
    - -

    __scatterload_rt2 (Thumb, 0 bytes, Stack size 0 bytes, init.o(.text), UNUSED) - -

    ConfAntiChavirement (Thumb, 160 bytes, Stack size 16 bytes, antichavirement.o(i.ConfAntiChavirement)) -

    [Stack]

    • Max Depth = 32
    • Call Chain = ConfAntiChavirement ⇒ LL_ADC_SetChannelSamplingTime -
    -
    [Calls]
    • >>   LL_GPIO_SetPinMode -
    • >>   LL_APB2_GRP1_EnableClock -
    • >>   LL_ADC_SetChannelSamplingTime -
    • >>   LL_ADC_INJ_SetSequencerRanks -
    -
    [Called By]
    • >>   main -
    - -

    LL_Init1msTick (Thumb, 26 bytes, Stack size 0 bytes, stm32f1xx_ll_utils.o(i.LL_Init1msTick)) -

    [Called By]

    • >>   SystemClock_Config -
    - -

    LL_SetSystemCoreClock (Thumb, 6 bytes, Stack size 0 bytes, stm32f1xx_ll_utils.o(i.LL_SetSystemCoreClock)) -

    [Called By]

    • >>   SystemClock_Config -
    - -

    SystemClock_Config (Thumb, 142 bytes, Stack size 8 bytes, antichavirement.o(i.SystemClock_Config)) -

    [Stack]

    • Max Depth = 8
    • Call Chain = SystemClock_Config -
    -
    [Calls]
    • >>   LL_SetSystemCoreClock -
    • >>   LL_Init1msTick -
    -
    [Called By]
    • >>   main -
    - -

    SystemInit (Thumb, 56 bytes, Stack size 0 bytes, system_stm32f1xx.o(i.SystemInit)) -
    [Address Reference Count : 1]

    • startup_stm32f103xb.o(.text) -
    -

    TIM1_UP_IRQHandler (Thumb, 16 bytes, Stack size 8 bytes, mytimer.o(i.TIM1_UP_IRQHandler)) -

    [Stack]

    • Max Depth = 8
    • Call Chain = TIM1_UP_IRQHandler -
    -
    [Address Reference Count : 1]
    • startup_stm32f103xb.o(RESET) -
    -

    TIM2_IRQHandler (Thumb, 18 bytes, Stack size 8 bytes, mytimer.o(i.TIM2_IRQHandler)) -

    [Stack]

    • Max Depth = 8
    • Call Chain = TIM2_IRQHandler -
    -
    [Address Reference Count : 1]
    • startup_stm32f103xb.o(RESET) -
    -

    TIM3_IRQHandler (Thumb, 16 bytes, Stack size 8 bytes, mytimer.o(i.TIM3_IRQHandler)) -

    [Stack]

    • Max Depth = 8
    • Call Chain = TIM3_IRQHandler -
    -
    [Address Reference Count : 1]
    • startup_stm32f103xb.o(RESET) -
    -

    TIM4_IRQHandler (Thumb, 16 bytes, Stack size 8 bytes, mytimer.o(i.TIM4_IRQHandler)) -

    [Stack]

    • Max Depth = 8
    • Call Chain = TIM4_IRQHandler -
    -
    [Address Reference Count : 1]
    • startup_stm32f103xb.o(RESET) -
    -

    __scatterload_copy (Thumb, 14 bytes, Stack size unknown bytes, handlers.o(i.__scatterload_copy), UNUSED) - -

    __scatterload_null (Thumb, 2 bytes, Stack size unknown bytes, handlers.o(i.__scatterload_null), UNUSED) - -

    __scatterload_zeroinit (Thumb, 14 bytes, Stack size unknown bytes, handlers.o(i.__scatterload_zeroinit), UNUSED) - -

    main (Thumb, 56 bytes, Stack size 0 bytes, antichavirement.o(i.main)) -

    [Stack]

    • Max Depth = 32
    • Call Chain = main ⇒ ConfAntiChavirement ⇒ LL_ADC_SetChannelSamplingTime -
    -
    [Calls]
    • >>   SystemClock_Config -
    • >>   ConfAntiChavirement -
    • >>   LL_ADC_INJ_ReadConversionData12 -
    -
    [Address Reference Count : 1]
    • entry9a.o(.ARM.Collect$$$$0000000B) -

    -

    -Local Symbols -

    -

    LL_ADC_INJ_ReadConversionData12 (Thumb, 28 bytes, Stack size 0 bytes, antichavirement.o(i.LL_ADC_INJ_ReadConversionData12)) -

    [Called By]

    • >>   main -
    - -

    LL_ADC_INJ_SetSequencerRanks (Thumb, 38 bytes, Stack size 8 bytes, antichavirement.o(i.LL_ADC_INJ_SetSequencerRanks)) -

    [Stack]

    • Max Depth = 8
    • Call Chain = LL_ADC_INJ_SetSequencerRanks -
    -
    [Called By]
    • >>   ConfAntiChavirement -
    - -

    LL_ADC_SetChannelSamplingTime (Thumb, 70 bytes, Stack size 16 bytes, antichavirement.o(i.LL_ADC_SetChannelSamplingTime)) -

    [Stack]

    • Max Depth = 16
    • Call Chain = LL_ADC_SetChannelSamplingTime -
    -
    [Called By]
    • >>   ConfAntiChavirement -
    - -

    LL_APB2_GRP1_EnableClock (Thumb, 18 bytes, Stack size 8 bytes, antichavirement.o(i.LL_APB2_GRP1_EnableClock)) -

    [Stack]

    • Max Depth = 8
    • Call Chain = LL_APB2_GRP1_EnableClock -
    -
    [Called By]
    • >>   ConfAntiChavirement -
    - -

    LL_GPIO_SetPinMode (Thumb, 42 bytes, Stack size 12 bytes, antichavirement.o(i.LL_GPIO_SetPinMode)) -

    [Stack]

    • Max Depth = 12
    • Call Chain = LL_GPIO_SetPinMode -
    -
    [Called By]
    • >>   ConfAntiChavirement -
    -

    -

    -Undefined Global Symbols -


    diff --git a/MDK-ARM/NUCLEO-F103RB/NUCLEO-F103RB.lnp b/MDK-ARM/NUCLEO-F103RB/NUCLEO-F103RB.lnp deleted file mode 100644 index 7253cd9..0000000 --- a/MDK-ARM/NUCLEO-F103RB/NUCLEO-F103RB.lnp +++ /dev/null @@ -1,18 +0,0 @@ ---cpu Cortex-M3 -"nucleo-f103rb\voilier.o" -"nucleo-f103rb\mytimer.o" -"nucleo-f103rb\allure.o" -"nucleo-f103rb\batterie.o" -"nucleo-f103rb\gouvernail.o" -"nucleo-f103rb\heure.o" -"nucleo-f103rb\transmission.o" -"nucleo-f103rb\voile.o" -"nucleo-f103rb\antichavirement.o" -"nucleo-f103rb\stm32f1xx_ll_rcc.o" -"nucleo-f103rb\stm32f1xx_ll_utils.o" -"nucleo-f103rb\system_stm32f1xx.o" -"nucleo-f103rb\startup_stm32f103xb.o" ---library_type=microlib --strict --scatter "NUCLEO-F103RB\NUCLEO-F103RB.sct" ---summary_stderr --info summarysizes --map --load_addr_map_info --xref --callgraph --symbols ---info sizes --info totals --info unused --info veneers ---list "NUCLEO-F103RB.map" -o NUCLEO-F103RB\NUCLEO-F103RB.axf \ No newline at end of file diff --git a/MDK-ARM/NUCLEO-F103RB/NUCLEO-F103RB.map b/MDK-ARM/NUCLEO-F103RB/NUCLEO-F103RB.map deleted file mode 100644 index 12a005e..0000000 --- a/MDK-ARM/NUCLEO-F103RB/NUCLEO-F103RB.map +++ /dev/null @@ -1,428 +0,0 @@ -Component: ARM Compiler 5.06 update 6 (build 750) Tool: armlink [4d35ed] - -============================================================================== - -Section Cross References - - mytimer.o(i.MyTimer_IT_Conf) refers to mytimer.o(.data) for .data - mytimer.o(i.TIM1_UP_IRQHandler) refers to mytimer.o(.data) for .data - mytimer.o(i.TIM2_IRQHandler) refers to mytimer.o(.data) for .data - mytimer.o(i.TIM3_IRQHandler) refers to mytimer.o(.data) for .data - mytimer.o(i.TIM4_IRQHandler) refers to mytimer.o(.data) for .data - antichavirement.o(i.ConfAntiChavirement) refers to antichavirement.o(i.LL_APB2_GRP1_EnableClock) for LL_APB2_GRP1_EnableClock - antichavirement.o(i.ConfAntiChavirement) refers to antichavirement.o(i.LL_GPIO_SetPinMode) for LL_GPIO_SetPinMode - antichavirement.o(i.ConfAntiChavirement) refers to antichavirement.o(i.LL_ADC_INJ_SetSequencerRanks) for LL_ADC_INJ_SetSequencerRanks - antichavirement.o(i.ConfAntiChavirement) refers to antichavirement.o(i.LL_ADC_SetChannelSamplingTime) for LL_ADC_SetChannelSamplingTime - antichavirement.o(i.SystemClock_Config) refers to stm32f1xx_ll_utils.o(i.LL_Init1msTick) for LL_Init1msTick - antichavirement.o(i.SystemClock_Config) refers to stm32f1xx_ll_utils.o(i.LL_SetSystemCoreClock) for LL_SetSystemCoreClock - antichavirement.o(i.main) refers to antichavirement.o(i.SystemClock_Config) for SystemClock_Config - antichavirement.o(i.main) refers to antichavirement.o(i.ConfAntiChavirement) for ConfAntiChavirement - antichavirement.o(i.main) refers to antichavirement.o(i.LL_ADC_INJ_ReadConversionData12) for LL_ADC_INJ_ReadConversionData12 - antichavirement.o(i.main) refers to antichavirement.o(.data) for .data - stm32f1xx_ll_rcc.o(i.LL_RCC_GetADCClockFreq) refers to stm32f1xx_ll_rcc.o(i.RCC_GetSystemClockFreq) for RCC_GetSystemClockFreq - stm32f1xx_ll_rcc.o(i.LL_RCC_GetADCClockFreq) refers to stm32f1xx_ll_rcc.o(i.RCC_GetHCLKClockFreq) for RCC_GetHCLKClockFreq - stm32f1xx_ll_rcc.o(i.LL_RCC_GetADCClockFreq) refers to stm32f1xx_ll_rcc.o(i.RCC_GetPCLK2ClockFreq) for RCC_GetPCLK2ClockFreq - stm32f1xx_ll_rcc.o(i.LL_RCC_GetSystemClocksFreq) refers to stm32f1xx_ll_rcc.o(i.RCC_GetSystemClockFreq) for RCC_GetSystemClockFreq - stm32f1xx_ll_rcc.o(i.LL_RCC_GetSystemClocksFreq) refers to stm32f1xx_ll_rcc.o(i.RCC_GetHCLKClockFreq) for RCC_GetHCLKClockFreq - stm32f1xx_ll_rcc.o(i.LL_RCC_GetSystemClocksFreq) refers to stm32f1xx_ll_rcc.o(i.RCC_GetPCLK1ClockFreq) for RCC_GetPCLK1ClockFreq - stm32f1xx_ll_rcc.o(i.LL_RCC_GetSystemClocksFreq) refers to stm32f1xx_ll_rcc.o(i.RCC_GetPCLK2ClockFreq) for RCC_GetPCLK2ClockFreq - stm32f1xx_ll_rcc.o(i.LL_RCC_GetUSBClockFreq) refers to stm32f1xx_ll_rcc.o(i.RCC_PLL_GetFreqDomain_SYS) for RCC_PLL_GetFreqDomain_SYS - stm32f1xx_ll_rcc.o(i.RCC_GetHCLKClockFreq) refers to system_stm32f1xx.o(.constdata) for AHBPrescTable - stm32f1xx_ll_rcc.o(i.RCC_GetPCLK1ClockFreq) refers to system_stm32f1xx.o(.constdata) for APBPrescTable - stm32f1xx_ll_rcc.o(i.RCC_GetPCLK2ClockFreq) refers to system_stm32f1xx.o(.constdata) for APBPrescTable - stm32f1xx_ll_rcc.o(i.RCC_GetSystemClockFreq) refers to stm32f1xx_ll_rcc.o(i.RCC_PLL_GetFreqDomain_SYS) for RCC_PLL_GetFreqDomain_SYS - stm32f1xx_ll_utils.o(i.LL_PLL_ConfigSystemClock_HSE) refers to stm32f1xx_ll_utils.o(i.UTILS_PLL_IsBusy) for UTILS_PLL_IsBusy - stm32f1xx_ll_utils.o(i.LL_PLL_ConfigSystemClock_HSE) refers to stm32f1xx_ll_utils.o(i.UTILS_GetPLLOutputFrequency) for UTILS_GetPLLOutputFrequency - stm32f1xx_ll_utils.o(i.LL_PLL_ConfigSystemClock_HSE) refers to stm32f1xx_ll_utils.o(i.LL_RCC_PLL_ConfigDomain_SYS) for LL_RCC_PLL_ConfigDomain_SYS - stm32f1xx_ll_utils.o(i.LL_PLL_ConfigSystemClock_HSE) refers to stm32f1xx_ll_utils.o(i.UTILS_EnablePLLAndSwitchSystem) for UTILS_EnablePLLAndSwitchSystem - stm32f1xx_ll_utils.o(i.LL_PLL_ConfigSystemClock_HSI) refers to stm32f1xx_ll_utils.o(i.UTILS_PLL_IsBusy) for UTILS_PLL_IsBusy - stm32f1xx_ll_utils.o(i.LL_PLL_ConfigSystemClock_HSI) refers to stm32f1xx_ll_utils.o(i.UTILS_GetPLLOutputFrequency) for UTILS_GetPLLOutputFrequency - stm32f1xx_ll_utils.o(i.LL_PLL_ConfigSystemClock_HSI) refers to stm32f1xx_ll_utils.o(i.LL_RCC_PLL_ConfigDomain_SYS) for LL_RCC_PLL_ConfigDomain_SYS - stm32f1xx_ll_utils.o(i.LL_PLL_ConfigSystemClock_HSI) refers to stm32f1xx_ll_utils.o(i.UTILS_EnablePLLAndSwitchSystem) for UTILS_EnablePLLAndSwitchSystem - stm32f1xx_ll_utils.o(i.LL_SetSystemCoreClock) refers to system_stm32f1xx.o(.data) for SystemCoreClock - stm32f1xx_ll_utils.o(i.UTILS_EnablePLLAndSwitchSystem) refers to stm32f1xx_ll_utils.o(i.UTILS_SetFlashLatency) for UTILS_SetFlashLatency - stm32f1xx_ll_utils.o(i.UTILS_EnablePLLAndSwitchSystem) refers to system_stm32f1xx.o(.constdata) for AHBPrescTable - stm32f1xx_ll_utils.o(i.UTILS_EnablePLLAndSwitchSystem) refers to system_stm32f1xx.o(.data) for SystemCoreClock - system_stm32f1xx.o(i.SystemCoreClockUpdate) refers to system_stm32f1xx.o(.data) for .data - system_stm32f1xx.o(i.SystemCoreClockUpdate) refers to system_stm32f1xx.o(.constdata) for .constdata - startup_stm32f103xb.o(RESET) refers to startup_stm32f103xb.o(STACK) for __initial_sp - startup_stm32f103xb.o(RESET) refers to startup_stm32f103xb.o(.text) for Reset_Handler - startup_stm32f103xb.o(RESET) refers to mytimer.o(i.TIM1_UP_IRQHandler) for TIM1_UP_IRQHandler - startup_stm32f103xb.o(RESET) refers to mytimer.o(i.TIM2_IRQHandler) for TIM2_IRQHandler - startup_stm32f103xb.o(RESET) refers to mytimer.o(i.TIM3_IRQHandler) for TIM3_IRQHandler - startup_stm32f103xb.o(RESET) refers to mytimer.o(i.TIM4_IRQHandler) for TIM4_IRQHandler - startup_stm32f103xb.o(.text) refers to system_stm32f1xx.o(i.SystemInit) for SystemInit - startup_stm32f103xb.o(.text) refers to entry.o(.ARM.Collect$$$$00000000) for __main - entry.o(.ARM.Collect$$$$00000000) refers (Special) to entry10a.o(.ARM.Collect$$$$0000000D) for __rt_final_cpp - entry.o(.ARM.Collect$$$$00000000) refers (Special) to entry11a.o(.ARM.Collect$$$$0000000F) for __rt_final_exit - entry.o(.ARM.Collect$$$$00000000) refers (Special) to entry7b.o(.ARM.Collect$$$$00000008) for _main_clock - entry.o(.ARM.Collect$$$$00000000) refers (Special) to entry8b.o(.ARM.Collect$$$$0000000A) for _main_cpp_init - entry.o(.ARM.Collect$$$$00000000) refers (Special) to entry9a.o(.ARM.Collect$$$$0000000B) for _main_init - entry.o(.ARM.Collect$$$$00000000) refers (Special) to entry5.o(.ARM.Collect$$$$00000004) for _main_scatterload - entry.o(.ARM.Collect$$$$00000000) refers (Special) to entry2.o(.ARM.Collect$$$$00000001) for _main_stk - entry2.o(.ARM.Collect$$$$00000001) refers to entry2.o(.ARM.Collect$$$$00002712) for __lit__00000000 - entry2.o(.ARM.Collect$$$$00002712) refers to startup_stm32f103xb.o(STACK) for __initial_sp - entry2.o(__vectab_stack_and_reset_area) refers to startup_stm32f103xb.o(STACK) for __initial_sp - entry2.o(__vectab_stack_and_reset_area) refers to entry.o(.ARM.Collect$$$$00000000) for __main - entry5.o(.ARM.Collect$$$$00000004) refers to init.o(.text) for __scatterload - entry9a.o(.ARM.Collect$$$$0000000B) refers to antichavirement.o(i.main) for main - entry9b.o(.ARM.Collect$$$$0000000C) refers to antichavirement.o(i.main) for main - init.o(.text) refers to entry5.o(.ARM.Collect$$$$00000004) for __main_after_scatterload - - -============================================================================== - -Removing Unused input sections from the image. - - Removing mytimer.o(.rev16_text), (4 bytes). - Removing mytimer.o(.revsh_text), (4 bytes). - Removing mytimer.o(.rrx_text), (6 bytes). - Removing mytimer.o(i.MyTimer_Conf), (76 bytes). - Removing mytimer.o(i.MyTimer_IT_Conf), (152 bytes). - Removing mytimer.o(i.MyTimer_IT_Disable), (68 bytes). - Removing mytimer.o(i.MyTimer_Start), (10 bytes). - Removing mytimer.o(i.MyTimer_Stop), (10 bytes). - Removing antichavirement.o(.rev16_text), (4 bytes). - Removing antichavirement.o(.revsh_text), (4 bytes). - Removing antichavirement.o(.rrx_text), (6 bytes). - Removing antichavirement.o(i.CalculerDanger), (2 bytes). - Removing antichavirement.o(i.RecupRouli), (2 bytes). - Removing stm32f1xx_ll_rcc.o(.rev16_text), (4 bytes). - Removing stm32f1xx_ll_rcc.o(.revsh_text), (4 bytes). - Removing stm32f1xx_ll_rcc.o(.rrx_text), (6 bytes). - Removing stm32f1xx_ll_rcc.o(i.LL_RCC_DeInit), (96 bytes). - Removing stm32f1xx_ll_rcc.o(i.LL_RCC_GetADCClockFreq), (48 bytes). - Removing stm32f1xx_ll_rcc.o(i.LL_RCC_GetSystemClocksFreq), (32 bytes). - Removing stm32f1xx_ll_rcc.o(i.LL_RCC_GetUSBClockFreq), (56 bytes). - Removing stm32f1xx_ll_rcc.o(i.RCC_GetHCLKClockFreq), (28 bytes). - Removing stm32f1xx_ll_rcc.o(i.RCC_GetPCLK1ClockFreq), (28 bytes). - Removing stm32f1xx_ll_rcc.o(i.RCC_GetPCLK2ClockFreq), (28 bytes). - Removing stm32f1xx_ll_rcc.o(i.RCC_GetSystemClockFreq), (36 bytes). - Removing stm32f1xx_ll_rcc.o(i.RCC_PLL_GetFreqDomain_SYS), (60 bytes). - Removing stm32f1xx_ll_utils.o(.rev16_text), (4 bytes). - Removing stm32f1xx_ll_utils.o(.revsh_text), (4 bytes). - Removing stm32f1xx_ll_utils.o(.rrx_text), (6 bytes). - Removing stm32f1xx_ll_utils.o(i.LL_PLL_ConfigSystemClock_HSE), (108 bytes). - Removing stm32f1xx_ll_utils.o(i.LL_PLL_ConfigSystemClock_HSI), (88 bytes). - Removing stm32f1xx_ll_utils.o(i.LL_RCC_PLL_ConfigDomain_SYS), (24 bytes). - Removing stm32f1xx_ll_utils.o(i.LL_mDelay), (30 bytes). - Removing stm32f1xx_ll_utils.o(i.UTILS_EnablePLLAndSwitchSystem), (172 bytes). - Removing stm32f1xx_ll_utils.o(i.UTILS_GetPLLOutputFrequency), (24 bytes). - Removing stm32f1xx_ll_utils.o(i.UTILS_PLL_IsBusy), (24 bytes). - Removing stm32f1xx_ll_utils.o(i.UTILS_SetFlashLatency), (68 bytes). - Removing system_stm32f1xx.o(.rev16_text), (4 bytes). - Removing system_stm32f1xx.o(.revsh_text), (4 bytes). - Removing system_stm32f1xx.o(.rrx_text), (6 bytes). - Removing system_stm32f1xx.o(i.SystemCoreClockUpdate), (104 bytes). - Removing system_stm32f1xx.o(.constdata), (16 bytes). - Removing system_stm32f1xx.o(.constdata), (8 bytes). - Removing startup_stm32f103xb.o(HEAP), (512 bytes). - -43 unused section(s) (total 1980 bytes) removed from the image. - -============================================================================== - -Image Symbol Table - - Local Symbols - - Symbol Name Value Ov Type Size Object(Section) - - ../Src/system_stm32f1xx.c 0x00000000 Number 0 system_stm32f1xx.o ABSOLUTE - ../clib/microlib/init/entry.s 0x00000000 Number 0 entry2.o ABSOLUTE - ../clib/microlib/init/entry.s 0x00000000 Number 0 entry.o ABSOLUTE - ../clib/microlib/init/entry.s 0x00000000 Number 0 entry11b.o ABSOLUTE - ../clib/microlib/init/entry.s 0x00000000 Number 0 entry11a.o ABSOLUTE - ../clib/microlib/init/entry.s 0x00000000 Number 0 entry10a.o ABSOLUTE - ../clib/microlib/init/entry.s 0x00000000 Number 0 entry9b.o ABSOLUTE - ../clib/microlib/init/entry.s 0x00000000 Number 0 entry9a.o ABSOLUTE - ../clib/microlib/init/entry.s 0x00000000 Number 0 entry8b.o ABSOLUTE - ../clib/microlib/init/entry.s 0x00000000 Number 0 entry8a.o ABSOLUTE - ../clib/microlib/init/entry.s 0x00000000 Number 0 entry10b.o ABSOLUTE - ../clib/microlib/init/entry.s 0x00000000 Number 0 entry7b.o ABSOLUTE - ../clib/microlib/init/entry.s 0x00000000 Number 0 entry7a.o ABSOLUTE - ../clib/microlib/init/entry.s 0x00000000 Number 0 entry5.o ABSOLUTE - ..\LLDrivers\src\stm32f1xx_ll_rcc.c 0x00000000 Number 0 stm32f1xx_ll_rcc.o ABSOLUTE - ..\LLDrivers\src\stm32f1xx_ll_utils.c 0x00000000 Number 0 stm32f1xx_ll_utils.o ABSOLUTE - ..\MyDrivers\MyTimer.c 0x00000000 Number 0 mytimer.o ABSOLUTE - ..\Src\Allure.c 0x00000000 Number 0 allure.o ABSOLUTE - ..\Src\AntiChavirement.c 0x00000000 Number 0 antichavirement.o ABSOLUTE - ..\Src\Batterie.c 0x00000000 Number 0 batterie.o ABSOLUTE - ..\Src\Gouvernail.c 0x00000000 Number 0 gouvernail.o ABSOLUTE - ..\Src\Heure.c 0x00000000 Number 0 heure.o ABSOLUTE - ..\Src\Transmission.c 0x00000000 Number 0 transmission.o ABSOLUTE - ..\Src\Voile.c 0x00000000 Number 0 voile.o ABSOLUTE - ..\Src\Voilier.c 0x00000000 Number 0 voilier.o ABSOLUTE - ..\Src\system_stm32f1xx.c 0x00000000 Number 0 system_stm32f1xx.o ABSOLUTE - ..\\LLDrivers\\src\\stm32f1xx_ll_rcc.c 0x00000000 Number 0 stm32f1xx_ll_rcc.o ABSOLUTE - ..\\LLDrivers\\src\\stm32f1xx_ll_utils.c 0x00000000 Number 0 stm32f1xx_ll_utils.o ABSOLUTE - ..\\MyDrivers\\MyTimer.c 0x00000000 Number 0 mytimer.o ABSOLUTE - ..\\Src\\AntiChavirement.c 0x00000000 Number 0 antichavirement.o ABSOLUTE - dc.s 0x00000000 Number 0 dc.o ABSOLUTE - handlers.s 0x00000000 Number 0 handlers.o ABSOLUTE - init.s 0x00000000 Number 0 init.o ABSOLUTE - startup_stm32f103xb.s 0x00000000 Number 0 startup_stm32f103xb.o ABSOLUTE - RESET 0x08000000 Section 236 startup_stm32f103xb.o(RESET) - .ARM.Collect$$$$00000000 0x080000ec Section 0 entry.o(.ARM.Collect$$$$00000000) - .ARM.Collect$$$$00000001 0x080000ec Section 4 entry2.o(.ARM.Collect$$$$00000001) - .ARM.Collect$$$$00000004 0x080000f0 Section 4 entry5.o(.ARM.Collect$$$$00000004) - .ARM.Collect$$$$00000008 0x080000f4 Section 0 entry7b.o(.ARM.Collect$$$$00000008) - .ARM.Collect$$$$0000000A 0x080000f4 Section 0 entry8b.o(.ARM.Collect$$$$0000000A) - .ARM.Collect$$$$0000000B 0x080000f4 Section 8 entry9a.o(.ARM.Collect$$$$0000000B) - .ARM.Collect$$$$0000000D 0x080000fc Section 0 entry10a.o(.ARM.Collect$$$$0000000D) - .ARM.Collect$$$$0000000F 0x080000fc Section 0 entry11a.o(.ARM.Collect$$$$0000000F) - .ARM.Collect$$$$00002712 0x080000fc Section 4 entry2.o(.ARM.Collect$$$$00002712) - __lit__00000000 0x080000fc Data 4 entry2.o(.ARM.Collect$$$$00002712) - .text 0x08000100 Section 36 startup_stm32f103xb.o(.text) - .text 0x08000124 Section 36 init.o(.text) - i.ConfAntiChavirement 0x08000148 Section 0 antichavirement.o(i.ConfAntiChavirement) - i.LL_ADC_INJ_ReadConversionData12 0x080001f4 Section 0 antichavirement.o(i.LL_ADC_INJ_ReadConversionData12) - LL_ADC_INJ_ReadConversionData12 0x080001f5 Thumb Code 28 antichavirement.o(i.LL_ADC_INJ_ReadConversionData12) - i.LL_ADC_INJ_SetSequencerRanks 0x08000210 Section 0 antichavirement.o(i.LL_ADC_INJ_SetSequencerRanks) - LL_ADC_INJ_SetSequencerRanks 0x08000211 Thumb Code 38 antichavirement.o(i.LL_ADC_INJ_SetSequencerRanks) - i.LL_ADC_SetChannelSamplingTime 0x08000236 Section 0 antichavirement.o(i.LL_ADC_SetChannelSamplingTime) - LL_ADC_SetChannelSamplingTime 0x08000237 Thumb Code 70 antichavirement.o(i.LL_ADC_SetChannelSamplingTime) - i.LL_APB2_GRP1_EnableClock 0x0800027c Section 0 antichavirement.o(i.LL_APB2_GRP1_EnableClock) - LL_APB2_GRP1_EnableClock 0x0800027d Thumb Code 18 antichavirement.o(i.LL_APB2_GRP1_EnableClock) - i.LL_GPIO_SetPinMode 0x08000294 Section 0 antichavirement.o(i.LL_GPIO_SetPinMode) - LL_GPIO_SetPinMode 0x08000295 Thumb Code 42 antichavirement.o(i.LL_GPIO_SetPinMode) - i.LL_Init1msTick 0x080002be Section 0 stm32f1xx_ll_utils.o(i.LL_Init1msTick) - i.LL_SetSystemCoreClock 0x080002d8 Section 0 stm32f1xx_ll_utils.o(i.LL_SetSystemCoreClock) - i.SystemClock_Config 0x080002e4 Section 0 antichavirement.o(i.SystemClock_Config) - i.SystemInit 0x08000380 Section 0 system_stm32f1xx.o(i.SystemInit) - i.TIM1_UP_IRQHandler 0x080003c8 Section 0 mytimer.o(i.TIM1_UP_IRQHandler) - i.TIM2_IRQHandler 0x080003e0 Section 0 mytimer.o(i.TIM2_IRQHandler) - i.TIM3_IRQHandler 0x080003f8 Section 0 mytimer.o(i.TIM3_IRQHandler) - i.TIM4_IRQHandler 0x08000410 Section 0 mytimer.o(i.TIM4_IRQHandler) - i.__scatterload_copy 0x08000428 Section 14 handlers.o(i.__scatterload_copy) - i.__scatterload_null 0x08000436 Section 2 handlers.o(i.__scatterload_null) - i.__scatterload_zeroinit 0x08000438 Section 14 handlers.o(i.__scatterload_zeroinit) - i.main 0x08000448 Section 0 antichavirement.o(i.main) - .data 0x20000000 Section 16 mytimer.o(.data) - .data 0x20000010 Section 8 antichavirement.o(.data) - .data 0x20000018 Section 4 system_stm32f1xx.o(.data) - STACK 0x20000020 Section 1024 startup_stm32f103xb.o(STACK) - - Global Symbols - - Symbol Name Value Ov Type Size Object(Section) - - BuildAttributes$$THM_ISAv4$P$D$K$B$S$PE$A:L22UL41UL21$X:L11$S22US41US21$IEEE1$IW$USESV6$~STKCKD$USESV7$~SHL$OSPACE$EBA8$MICROLIB$REQ8$PRES8$EABIv2 0x00000000 Number 0 anon$$obj.o ABSOLUTE - __ARM_use_no_argv 0x00000000 Number 0 antichavirement.o ABSOLUTE - __cpp_initialize__aeabi_ - Undefined Weak Reference - __cxa_finalize - Undefined Weak Reference - __decompress - Undefined Weak Reference - _clock_init - Undefined Weak Reference - _microlib_exit - Undefined Weak Reference - __Vectors_Size 0x000000ec Number 0 startup_stm32f103xb.o ABSOLUTE - __Vectors 0x08000000 Data 4 startup_stm32f103xb.o(RESET) - __Vectors_End 0x080000ec Data 0 startup_stm32f103xb.o(RESET) - __main 0x080000ed Thumb Code 0 entry.o(.ARM.Collect$$$$00000000) - _main_stk 0x080000ed Thumb Code 0 entry2.o(.ARM.Collect$$$$00000001) - _main_scatterload 0x080000f1 Thumb Code 0 entry5.o(.ARM.Collect$$$$00000004) - __main_after_scatterload 0x080000f5 Thumb Code 0 entry5.o(.ARM.Collect$$$$00000004) - _main_clock 0x080000f5 Thumb Code 0 entry7b.o(.ARM.Collect$$$$00000008) - _main_cpp_init 0x080000f5 Thumb Code 0 entry8b.o(.ARM.Collect$$$$0000000A) - _main_init 0x080000f5 Thumb Code 0 entry9a.o(.ARM.Collect$$$$0000000B) - __rt_final_cpp 0x080000fd Thumb Code 0 entry10a.o(.ARM.Collect$$$$0000000D) - __rt_final_exit 0x080000fd Thumb Code 0 entry11a.o(.ARM.Collect$$$$0000000F) - Reset_Handler 0x08000101 Thumb Code 8 startup_stm32f103xb.o(.text) - NMI_Handler 0x08000109 Thumb Code 2 startup_stm32f103xb.o(.text) - HardFault_Handler 0x0800010b Thumb Code 2 startup_stm32f103xb.o(.text) - MemManage_Handler 0x0800010d Thumb Code 2 startup_stm32f103xb.o(.text) - BusFault_Handler 0x0800010f Thumb Code 2 startup_stm32f103xb.o(.text) - UsageFault_Handler 0x08000111 Thumb Code 2 startup_stm32f103xb.o(.text) - SVC_Handler 0x08000113 Thumb Code 2 startup_stm32f103xb.o(.text) - DebugMon_Handler 0x08000115 Thumb Code 2 startup_stm32f103xb.o(.text) - PendSV_Handler 0x08000117 Thumb Code 2 startup_stm32f103xb.o(.text) - SysTick_Handler 0x08000119 Thumb Code 2 startup_stm32f103xb.o(.text) - ADC1_2_IRQHandler 0x0800011b Thumb Code 0 startup_stm32f103xb.o(.text) - CAN1_RX1_IRQHandler 0x0800011b Thumb Code 0 startup_stm32f103xb.o(.text) - CAN1_SCE_IRQHandler 0x0800011b Thumb Code 0 startup_stm32f103xb.o(.text) - DMA1_Channel1_IRQHandler 0x0800011b Thumb Code 0 startup_stm32f103xb.o(.text) - DMA1_Channel2_IRQHandler 0x0800011b Thumb Code 0 startup_stm32f103xb.o(.text) - DMA1_Channel3_IRQHandler 0x0800011b Thumb Code 0 startup_stm32f103xb.o(.text) - DMA1_Channel4_IRQHandler 0x0800011b Thumb Code 0 startup_stm32f103xb.o(.text) - DMA1_Channel5_IRQHandler 0x0800011b Thumb Code 0 startup_stm32f103xb.o(.text) - DMA1_Channel6_IRQHandler 0x0800011b Thumb Code 0 startup_stm32f103xb.o(.text) - DMA1_Channel7_IRQHandler 0x0800011b Thumb Code 0 startup_stm32f103xb.o(.text) - EXTI0_IRQHandler 0x0800011b Thumb Code 0 startup_stm32f103xb.o(.text) - EXTI15_10_IRQHandler 0x0800011b Thumb Code 0 startup_stm32f103xb.o(.text) - EXTI1_IRQHandler 0x0800011b Thumb Code 0 startup_stm32f103xb.o(.text) - EXTI2_IRQHandler 0x0800011b Thumb Code 0 startup_stm32f103xb.o(.text) - EXTI3_IRQHandler 0x0800011b Thumb Code 0 startup_stm32f103xb.o(.text) - EXTI4_IRQHandler 0x0800011b Thumb Code 0 startup_stm32f103xb.o(.text) - EXTI9_5_IRQHandler 0x0800011b Thumb Code 0 startup_stm32f103xb.o(.text) - FLASH_IRQHandler 0x0800011b Thumb Code 0 startup_stm32f103xb.o(.text) - I2C1_ER_IRQHandler 0x0800011b Thumb Code 0 startup_stm32f103xb.o(.text) - I2C1_EV_IRQHandler 0x0800011b Thumb Code 0 startup_stm32f103xb.o(.text) - I2C2_ER_IRQHandler 0x0800011b Thumb Code 0 startup_stm32f103xb.o(.text) - I2C2_EV_IRQHandler 0x0800011b Thumb Code 0 startup_stm32f103xb.o(.text) - PVD_IRQHandler 0x0800011b Thumb Code 0 startup_stm32f103xb.o(.text) - RCC_IRQHandler 0x0800011b Thumb Code 0 startup_stm32f103xb.o(.text) - RTC_Alarm_IRQHandler 0x0800011b Thumb Code 0 startup_stm32f103xb.o(.text) - RTC_IRQHandler 0x0800011b Thumb Code 0 startup_stm32f103xb.o(.text) - SPI1_IRQHandler 0x0800011b Thumb Code 0 startup_stm32f103xb.o(.text) - SPI2_IRQHandler 0x0800011b Thumb Code 0 startup_stm32f103xb.o(.text) - TAMPER_IRQHandler 0x0800011b Thumb Code 0 startup_stm32f103xb.o(.text) - TIM1_BRK_IRQHandler 0x0800011b Thumb Code 0 startup_stm32f103xb.o(.text) - TIM1_CC_IRQHandler 0x0800011b Thumb Code 0 startup_stm32f103xb.o(.text) - TIM1_TRG_COM_IRQHandler 0x0800011b Thumb Code 0 startup_stm32f103xb.o(.text) - USART1_IRQHandler 0x0800011b Thumb Code 0 startup_stm32f103xb.o(.text) - USART2_IRQHandler 0x0800011b Thumb Code 0 startup_stm32f103xb.o(.text) - USART3_IRQHandler 0x0800011b Thumb Code 0 startup_stm32f103xb.o(.text) - USBWakeUp_IRQHandler 0x0800011b Thumb Code 0 startup_stm32f103xb.o(.text) - USB_HP_CAN1_TX_IRQHandler 0x0800011b Thumb Code 0 startup_stm32f103xb.o(.text) - USB_LP_CAN1_RX0_IRQHandler 0x0800011b Thumb Code 0 startup_stm32f103xb.o(.text) - WWDG_IRQHandler 0x0800011b Thumb Code 0 startup_stm32f103xb.o(.text) - __scatterload 0x08000125 Thumb Code 28 init.o(.text) - __scatterload_rt2 0x08000125 Thumb Code 0 init.o(.text) - ConfAntiChavirement 0x08000149 Thumb Code 160 antichavirement.o(i.ConfAntiChavirement) - LL_Init1msTick 0x080002bf Thumb Code 26 stm32f1xx_ll_utils.o(i.LL_Init1msTick) - LL_SetSystemCoreClock 0x080002d9 Thumb Code 6 stm32f1xx_ll_utils.o(i.LL_SetSystemCoreClock) - SystemClock_Config 0x080002e5 Thumb Code 142 antichavirement.o(i.SystemClock_Config) - SystemInit 0x08000381 Thumb Code 56 system_stm32f1xx.o(i.SystemInit) - TIM1_UP_IRQHandler 0x080003c9 Thumb Code 16 mytimer.o(i.TIM1_UP_IRQHandler) - TIM2_IRQHandler 0x080003e1 Thumb Code 18 mytimer.o(i.TIM2_IRQHandler) - TIM3_IRQHandler 0x080003f9 Thumb Code 16 mytimer.o(i.TIM3_IRQHandler) - TIM4_IRQHandler 0x08000411 Thumb Code 16 mytimer.o(i.TIM4_IRQHandler) - __scatterload_copy 0x08000429 Thumb Code 14 handlers.o(i.__scatterload_copy) - __scatterload_null 0x08000437 Thumb Code 2 handlers.o(i.__scatterload_null) - __scatterload_zeroinit 0x08000439 Thumb Code 14 handlers.o(i.__scatterload_zeroinit) - main 0x08000449 Thumb Code 56 antichavirement.o(i.main) - Region$$Table$$Base 0x08000488 Number 0 anon$$obj.o(Region$$Table) - Region$$Table$$Limit 0x080004a8 Number 0 anon$$obj.o(Region$$Table) - pTIM1_Overflow 0x20000000 Data 4 mytimer.o(.data) - pTIM2_Overflow 0x20000004 Data 4 mytimer.o(.data) - pTIM3_Overflow 0x20000008 Data 4 mytimer.o(.data) - pTIM4_Overflow 0x2000000c Data 4 mytimer.o(.data) - res10 0x20000010 Data 4 antichavirement.o(.data) - res12 0x20000014 Data 4 antichavirement.o(.data) - SystemCoreClock 0x20000018 Data 4 system_stm32f1xx.o(.data) - __initial_sp 0x20000420 Data 0 startup_stm32f103xb.o(STACK) - - - -============================================================================== - -Memory Map of the image - - Image Entry point : 0x080000ed - - Load Region LR_IROM1 (Base: 0x08000000, Size: 0x000004c4, Max: 0x00020000, ABSOLUTE) - - Execution Region ER_IROM1 (Exec base: 0x08000000, Load base: 0x08000000, Size: 0x000004a8, Max: 0x00020000, ABSOLUTE) - - Exec Addr Load Addr Size Type Attr Idx E Section Name Object - - 0x08000000 0x08000000 0x000000ec Data RO 417 RESET startup_stm32f103xb.o - 0x080000ec 0x080000ec 0x00000000 Code RO 422 * .ARM.Collect$$$$00000000 mc_w.l(entry.o) - 0x080000ec 0x080000ec 0x00000004 Code RO 425 .ARM.Collect$$$$00000001 mc_w.l(entry2.o) - 0x080000f0 0x080000f0 0x00000004 Code RO 428 .ARM.Collect$$$$00000004 mc_w.l(entry5.o) - 0x080000f4 0x080000f4 0x00000000 Code RO 430 .ARM.Collect$$$$00000008 mc_w.l(entry7b.o) - 0x080000f4 0x080000f4 0x00000000 Code RO 432 .ARM.Collect$$$$0000000A mc_w.l(entry8b.o) - 0x080000f4 0x080000f4 0x00000008 Code RO 433 .ARM.Collect$$$$0000000B mc_w.l(entry9a.o) - 0x080000fc 0x080000fc 0x00000000 Code RO 435 .ARM.Collect$$$$0000000D mc_w.l(entry10a.o) - 0x080000fc 0x080000fc 0x00000000 Code RO 437 .ARM.Collect$$$$0000000F mc_w.l(entry11a.o) - 0x080000fc 0x080000fc 0x00000004 Code RO 426 .ARM.Collect$$$$00002712 mc_w.l(entry2.o) - 0x08000100 0x08000100 0x00000024 Code RO 418 .text startup_stm32f103xb.o - 0x08000124 0x08000124 0x00000024 Code RO 439 .text mc_w.l(init.o) - 0x08000148 0x08000148 0x000000ac Code RO 127 i.ConfAntiChavirement antichavirement.o - 0x080001f4 0x080001f4 0x0000001c Code RO 128 i.LL_ADC_INJ_ReadConversionData12 antichavirement.o - 0x08000210 0x08000210 0x00000026 Code RO 129 i.LL_ADC_INJ_SetSequencerRanks antichavirement.o - 0x08000236 0x08000236 0x00000046 Code RO 130 i.LL_ADC_SetChannelSamplingTime antichavirement.o - 0x0800027c 0x0800027c 0x00000018 Code RO 131 i.LL_APB2_GRP1_EnableClock antichavirement.o - 0x08000294 0x08000294 0x0000002a Code RO 132 i.LL_GPIO_SetPinMode antichavirement.o - 0x080002be 0x080002be 0x0000001a Code RO 298 i.LL_Init1msTick stm32f1xx_ll_utils.o - 0x080002d8 0x080002d8 0x0000000c Code RO 302 i.LL_SetSystemCoreClock stm32f1xx_ll_utils.o - 0x080002e4 0x080002e4 0x0000009c Code RO 134 i.SystemClock_Config antichavirement.o - 0x08000380 0x08000380 0x00000048 Code RO 381 i.SystemInit system_stm32f1xx.o - 0x080003c8 0x080003c8 0x00000018 Code RO 14 i.TIM1_UP_IRQHandler mytimer.o - 0x080003e0 0x080003e0 0x00000018 Code RO 15 i.TIM2_IRQHandler mytimer.o - 0x080003f8 0x080003f8 0x00000018 Code RO 16 i.TIM3_IRQHandler mytimer.o - 0x08000410 0x08000410 0x00000018 Code RO 17 i.TIM4_IRQHandler mytimer.o - 0x08000428 0x08000428 0x0000000e Code RO 443 i.__scatterload_copy mc_w.l(handlers.o) - 0x08000436 0x08000436 0x00000002 Code RO 444 i.__scatterload_null mc_w.l(handlers.o) - 0x08000438 0x08000438 0x0000000e Code RO 445 i.__scatterload_zeroinit mc_w.l(handlers.o) - 0x08000446 0x08000446 0x00000002 PAD - 0x08000448 0x08000448 0x00000040 Code RO 135 i.main antichavirement.o - 0x08000488 0x08000488 0x00000020 Data RO 441 Region$$Table anon$$obj.o - - - Execution Region RW_IRAM1 (Exec base: 0x20000000, Load base: 0x080004a8, Size: 0x00000420, Max: 0x00005000, ABSOLUTE) - - Exec Addr Load Addr Size Type Attr Idx E Section Name Object - - 0x20000000 0x080004a8 0x00000010 Data RW 18 .data mytimer.o - 0x20000010 0x080004b8 0x00000008 Data RW 136 .data antichavirement.o - 0x20000018 0x080004c0 0x00000004 Data RW 384 .data system_stm32f1xx.o - 0x2000001c 0x080004c4 0x00000004 PAD - 0x20000020 - 0x00000400 Zero RW 415 STACK startup_stm32f103xb.o - - -============================================================================== - -Image component sizes - - - Code (inc. data) RO Data RW Data ZI Data Debug Object Name - - 594 40 0 8 0 58276 antichavirement.o - 96 30 0 16 0 342549 mytimer.o - 36 8 236 0 1024 780 startup_stm32f103xb.o - 38 6 0 0 0 4789 stm32f1xx_ll_utils.o - 72 16 0 4 0 1167 system_stm32f1xx.o - 0 0 0 0 0 1444 voilier.o - - ---------------------------------------------------------------------- - 836 100 268 28 1028 409005 Object Totals - 0 0 32 0 0 0 (incl. Generated) - 0 0 0 0 4 0 (incl. Padding) - - ---------------------------------------------------------------------- - - Code (inc. data) RO Data RW Data ZI Data Debug Library Member Name - - 0 0 0 0 0 0 entry.o - 0 0 0 0 0 0 entry10a.o - 0 0 0 0 0 0 entry11a.o - 8 4 0 0 0 0 entry2.o - 4 0 0 0 0 0 entry5.o - 0 0 0 0 0 0 entry7b.o - 0 0 0 0 0 0 entry8b.o - 8 4 0 0 0 0 entry9a.o - 30 0 0 0 0 0 handlers.o - 36 8 0 0 0 68 init.o - - ---------------------------------------------------------------------- - 88 16 0 0 0 68 Library Totals - 2 0 0 0 0 0 (incl. Padding) - - ---------------------------------------------------------------------- - - Code (inc. data) RO Data RW Data ZI Data Debug Library Name - - 86 16 0 0 0 68 mc_w.l - - ---------------------------------------------------------------------- - 88 16 0 0 0 68 Library Totals - - ---------------------------------------------------------------------- - -============================================================================== - - - Code (inc. data) RO Data RW Data ZI Data Debug - - 924 116 268 28 1028 408601 Grand Totals - 924 116 268 28 1028 408601 ELF Image Totals - 924 116 268 28 0 0 ROM Totals - -============================================================================== - - Total RO Size (Code + RO Data) 1192 ( 1.16kB) - Total RW Size (RW Data + ZI Data) 1056 ( 1.03kB) - Total ROM Size (Code + RO Data + RW Data) 1220 ( 1.19kB) - -============================================================================== - diff --git a/MDK-ARM/NUCLEO-F103RB/NUCLEO-F103RB.sct b/MDK-ARM/NUCLEO-F103RB/NUCLEO-F103RB.sct deleted file mode 100644 index bbacbc6..0000000 --- a/MDK-ARM/NUCLEO-F103RB/NUCLEO-F103RB.sct +++ /dev/null @@ -1,16 +0,0 @@ -; ************************************************************* -; *** Scatter-Loading Description File generated by uVision *** -; ************************************************************* - -LR_IROM1 0x08000000 0x00020000 { ; load region size_region - ER_IROM1 0x08000000 0x00020000 { ; load address = execution address - *.o (RESET, +First) - *(InRoot$$Sections) - .ANY (+RO) - .ANY (+XO) - } - RW_IRAM1 0x20000000 0x00005000 { ; RW data - .ANY (+RW +ZI) - } -} - diff --git a/MDK-ARM/NUCLEO-F103RB/NUCLEO-F103RB_sct.Bak b/MDK-ARM/NUCLEO-F103RB/NUCLEO-F103RB_sct.Bak deleted file mode 100644 index c26b647..0000000 --- a/MDK-ARM/NUCLEO-F103RB/NUCLEO-F103RB_sct.Bak +++ /dev/null @@ -1,15 +0,0 @@ -; ************************************************************* -; *** Scatter-Loading Description File generated by uVision *** -; ************************************************************* - -LR_IROM1 0x08000000 0x00020000 { ; load region size_region - ER_IROM1 0x08000000 0x00020000 { ; load address = execution address - *.o (RESET, +First) - *(InRoot$$Sections) - .ANY (+RO) - } - RW_IRAM1 0x20000000 0x00005000 { ; RW data - .ANY (+RW +ZI) - } -} - diff --git a/MDK-ARM/NUCLEO-F103RB/Project_NUCLEO-F103RB.dep b/MDK-ARM/NUCLEO-F103RB/Project_NUCLEO-F103RB.dep deleted file mode 100644 index c614eef..0000000 --- a/MDK-ARM/NUCLEO-F103RB/Project_NUCLEO-F103RB.dep +++ /dev/null @@ -1,73 +0,0 @@ -Dependencies for Project 'Project', Target 'NUCLEO-F103RB': (DO NOT MODIFY !) -CompilerVersion: 5060750::V5.06 update 6 (build 750)::ARMCC -F (..\Src\Voilier.c)(0x5FA03B8B)(-c --cpu Cortex-M3 -D__EVAL -D__MICROLIB -g -O3 --apcs=interwork --split_sections -I ..\Inc -I ..\LLDrivers\inc -I ..\Services -I ..\MyDrivers --C99 -I.\RTE\_NUCLEO-F103RB -IC:\Users\elies\AppData\Local\Arm\Packs\ARM\CMSIS\5.6.0\CMSIS\Core\Include -IC:\Users\elies\AppData\Local\Arm\Packs\Keil\STM32F1xx_DFP\2.3.0\Device\Include -D__UVISION_VERSION="529" -D_RTE_ -DSTM32F10X_MD -DSTM32F103xB -DUSE_FULL_LL_DRIVER -DHSE_VALUE="8000000U" -o nucleo-f103rb\voilier.o --omf_browse nucleo-f103rb\voilier.crf --depend nucleo-f103rb\voilier.d) -F (..\MyDrivers\MyTimer.c)(0x5FA01FEC)(-c --cpu Cortex-M3 -D__EVAL -D__MICROLIB -g -O3 --apcs=interwork --split_sections -I ..\Inc -I ..\LLDrivers\inc -I ..\Services -I ..\MyDrivers --C99 -I.\RTE\_NUCLEO-F103RB -IC:\Users\elies\AppData\Local\Arm\Packs\ARM\CMSIS\5.6.0\CMSIS\Core\Include -IC:\Users\elies\AppData\Local\Arm\Packs\Keil\STM32F1xx_DFP\2.3.0\Device\Include -D__UVISION_VERSION="529" -D_RTE_ -DSTM32F10X_MD -DSTM32F103xB -DUSE_FULL_LL_DRIVER -DHSE_VALUE="8000000U" -o nucleo-f103rb\mytimer.o --omf_browse nucleo-f103rb\mytimer.crf --depend nucleo-f103rb\mytimer.d) -I (..\Inc\stm32f103xb.h)(0x5F8D5414) -I (C:\Users\elies\AppData\Local\Arm\Packs\ARM\CMSIS\5.6.0\CMSIS\Core\Include\core_cm3.h)(0x5D25F326) -I (F:\Keil\ARM\ARMCC\include\stdint.h)(0x5D9B3488) -I (C:\Users\elies\AppData\Local\Arm\Packs\ARM\CMSIS\5.6.0\CMSIS\Core\Include\cmsis_version.h)(0x5D25F326) -I (C:\Users\elies\AppData\Local\Arm\Packs\ARM\CMSIS\5.6.0\CMSIS\Core\Include\cmsis_compiler.h)(0x5D25F326) -I (C:\Users\elies\AppData\Local\Arm\Packs\ARM\CMSIS\5.6.0\CMSIS\Core\Include\cmsis_armcc.h)(0x5D25F326) -I (..\Inc\system_stm32f1xx.h)(0x5F8D5414) -F (..\Src\Allure.c)(0x5F8D5416)(-c --cpu Cortex-M3 -D__EVAL -D__MICROLIB -g -O3 --apcs=interwork --split_sections -I ..\Inc -I ..\LLDrivers\inc -I ..\Services -I ..\MyDrivers --C99 -I.\RTE\_NUCLEO-F103RB -IC:\Users\elies\AppData\Local\Arm\Packs\ARM\CMSIS\5.6.0\CMSIS\Core\Include -IC:\Users\elies\AppData\Local\Arm\Packs\Keil\STM32F1xx_DFP\2.3.0\Device\Include -D__UVISION_VERSION="529" -D_RTE_ -DSTM32F10X_MD -DSTM32F103xB -DUSE_FULL_LL_DRIVER -DHSE_VALUE="8000000U" -o nucleo-f103rb\allure.o --omf_browse nucleo-f103rb\allure.crf --depend nucleo-f103rb\allure.d) -F (..\Src\Batterie.c)(0x5F8D5416)(-c --cpu Cortex-M3 -D__EVAL -D__MICROLIB -g -O3 --apcs=interwork --split_sections -I ..\Inc -I ..\LLDrivers\inc -I ..\Services -I ..\MyDrivers --C99 -I.\RTE\_NUCLEO-F103RB -IC:\Users\elies\AppData\Local\Arm\Packs\ARM\CMSIS\5.6.0\CMSIS\Core\Include -IC:\Users\elies\AppData\Local\Arm\Packs\Keil\STM32F1xx_DFP\2.3.0\Device\Include -D__UVISION_VERSION="529" -D_RTE_ -DSTM32F10X_MD -DSTM32F103xB -DUSE_FULL_LL_DRIVER -DHSE_VALUE="8000000U" -o nucleo-f103rb\batterie.o --omf_browse nucleo-f103rb\batterie.crf --depend nucleo-f103rb\batterie.d) -F (..\Src\Gouvernail.c)(0x5F8D5416)(-c --cpu Cortex-M3 -D__EVAL -D__MICROLIB -g -O3 --apcs=interwork --split_sections -I ..\Inc -I ..\LLDrivers\inc -I ..\Services -I ..\MyDrivers --C99 -I.\RTE\_NUCLEO-F103RB -IC:\Users\elies\AppData\Local\Arm\Packs\ARM\CMSIS\5.6.0\CMSIS\Core\Include -IC:\Users\elies\AppData\Local\Arm\Packs\Keil\STM32F1xx_DFP\2.3.0\Device\Include -D__UVISION_VERSION="529" -D_RTE_ -DSTM32F10X_MD -DSTM32F103xB -DUSE_FULL_LL_DRIVER -DHSE_VALUE="8000000U" -o nucleo-f103rb\gouvernail.o --omf_browse nucleo-f103rb\gouvernail.crf --depend nucleo-f103rb\gouvernail.d) -F (..\Src\Heure.c)(0x5F8D5416)(-c --cpu Cortex-M3 -D__EVAL -D__MICROLIB -g -O3 --apcs=interwork --split_sections -I ..\Inc -I ..\LLDrivers\inc -I ..\Services -I ..\MyDrivers --C99 -I.\RTE\_NUCLEO-F103RB -IC:\Users\elies\AppData\Local\Arm\Packs\ARM\CMSIS\5.6.0\CMSIS\Core\Include -IC:\Users\elies\AppData\Local\Arm\Packs\Keil\STM32F1xx_DFP\2.3.0\Device\Include -D__UVISION_VERSION="529" -D_RTE_ -DSTM32F10X_MD -DSTM32F103xB -DUSE_FULL_LL_DRIVER -DHSE_VALUE="8000000U" -o nucleo-f103rb\heure.o --omf_browse nucleo-f103rb\heure.crf --depend nucleo-f103rb\heure.d) -F (..\Src\Transmission.c)(0x5F8D5416)(-c --cpu Cortex-M3 -D__EVAL -D__MICROLIB -g -O3 --apcs=interwork --split_sections -I ..\Inc -I ..\LLDrivers\inc -I ..\Services -I ..\MyDrivers --C99 -I.\RTE\_NUCLEO-F103RB -IC:\Users\elies\AppData\Local\Arm\Packs\ARM\CMSIS\5.6.0\CMSIS\Core\Include -IC:\Users\elies\AppData\Local\Arm\Packs\Keil\STM32F1xx_DFP\2.3.0\Device\Include -D__UVISION_VERSION="529" -D_RTE_ -DSTM32F10X_MD -DSTM32F103xB -DUSE_FULL_LL_DRIVER -DHSE_VALUE="8000000U" -o nucleo-f103rb\transmission.o --omf_browse nucleo-f103rb\transmission.crf --depend nucleo-f103rb\transmission.d) -F (..\Src\Voile.c)(0x5FA01FEC)(-c --cpu Cortex-M3 -D__EVAL -D__MICROLIB -g -O3 --apcs=interwork --split_sections -I ..\Inc -I ..\LLDrivers\inc -I ..\Services -I ..\MyDrivers --C99 -I.\RTE\_NUCLEO-F103RB -IC:\Users\elies\AppData\Local\Arm\Packs\ARM\CMSIS\5.6.0\CMSIS\Core\Include -IC:\Users\elies\AppData\Local\Arm\Packs\Keil\STM32F1xx_DFP\2.3.0\Device\Include -D__UVISION_VERSION="529" -D_RTE_ -DSTM32F10X_MD -DSTM32F103xB -DUSE_FULL_LL_DRIVER -DHSE_VALUE="8000000U" -o nucleo-f103rb\voile.o --omf_browse nucleo-f103rb\voile.crf --depend nucleo-f103rb\voile.d) -F (..\Src\Allure.h)(0x5F8D5416)() -F (..\Src\AntiChavirement.h)(0x5FA03BA6)() -F (..\Src\Batterie.h)(0x5F8D5416)() -F (..\Src\Gouvernail.h)(0x5F8D5416)() -F (..\Src\Heure.h)(0x5F8D5416)() -F (..\Src\MyTimer.h)(0x5F8D5416)() -F (..\Src\Transmission.h)(0x5F8D5416)() -F (..\Src\Voile.h)(0x5FA01FEC)() -F (..\Src\AntiChavirement.c)(0x5FA03B67)(-c --cpu Cortex-M3 -D__EVAL -D__MICROLIB -g -O3 --apcs=interwork --split_sections -I ..\Inc -I ..\LLDrivers\inc -I ..\Services -I ..\MyDrivers --C99 -I.\RTE\_NUCLEO-F103RB -IC:\Users\elies\AppData\Local\Arm\Packs\ARM\CMSIS\5.6.0\CMSIS\Core\Include -IC:\Users\elies\AppData\Local\Arm\Packs\Keil\STM32F1xx_DFP\2.3.0\Device\Include -D__UVISION_VERSION="529" -D_RTE_ -DSTM32F10X_MD -DSTM32F103xB -DUSE_FULL_LL_DRIVER -DHSE_VALUE="8000000U" -o nucleo-f103rb\antichavirement.o --omf_browse nucleo-f103rb\antichavirement.crf --depend nucleo-f103rb\antichavirement.d) -I (..\Src\AntiChavirement.h)(0x5FA03BA6) -I (..\Inc\stm32f103xb.h)(0x5F8D5414) -I (C:\Users\elies\AppData\Local\Arm\Packs\ARM\CMSIS\5.6.0\CMSIS\Core\Include\core_cm3.h)(0x5D25F326) -I (F:\Keil\ARM\ARMCC\include\stdint.h)(0x5D9B3488) -I (C:\Users\elies\AppData\Local\Arm\Packs\ARM\CMSIS\5.6.0\CMSIS\Core\Include\cmsis_version.h)(0x5D25F326) -I (C:\Users\elies\AppData\Local\Arm\Packs\ARM\CMSIS\5.6.0\CMSIS\Core\Include\cmsis_compiler.h)(0x5D25F326) -I (C:\Users\elies\AppData\Local\Arm\Packs\ARM\CMSIS\5.6.0\CMSIS\Core\Include\cmsis_armcc.h)(0x5D25F326) -I (..\Inc\system_stm32f1xx.h)(0x5F8D5414) -I (..\LLDrivers\inc\stm32f1xx_ll_adc.h)(0x5F8D5982) -I (..\Inc\stm32f1xx.h)(0x5F8D5414) -I (..\LLDrivers\inc\stm32f1xx_ll_gpio.h)(0x5F8D5982) -I (..\LLDrivers\inc\stm32f1xx_ll_bus.h)(0x5F8D5982) -I (..\LLDrivers\inc\stm32f1xx_ll_utils.h)(0x5F8D5414) -I (..\LLDrivers\inc\stm32f1xx_ll_system.h)(0x5F8D5414) -I (..\LLDrivers\inc\stm32f1xx_ll_rcc.h)(0x5F8D5414) -F (..\LLDrivers\src\stm32f1xx_ll_rcc.c)(0x5F8D5414)(-c --cpu Cortex-M3 -D__EVAL -D__MICROLIB -g -O3 --apcs=interwork --split_sections -I ..\Inc -I ..\LLDrivers\inc -I ..\Services -I ..\MyDrivers --C99 -I.\RTE\_NUCLEO-F103RB -IC:\Users\elies\AppData\Local\Arm\Packs\ARM\CMSIS\5.6.0\CMSIS\Core\Include -IC:\Users\elies\AppData\Local\Arm\Packs\Keil\STM32F1xx_DFP\2.3.0\Device\Include -D__UVISION_VERSION="529" -D_RTE_ -DSTM32F10X_MD -DSTM32F103xB -DUSE_FULL_LL_DRIVER -DHSE_VALUE="8000000U" -o nucleo-f103rb\stm32f1xx_ll_rcc.o --omf_browse nucleo-f103rb\stm32f1xx_ll_rcc.crf --depend nucleo-f103rb\stm32f1xx_ll_rcc.d) -I (..\LLDrivers\inc\stm32f1xx_ll_rcc.h)(0x5F8D5414) -I (..\Inc\stm32f1xx.h)(0x5F8D5414) -I (..\Inc\stm32f103xb.h)(0x5F8D5414) -I (C:\Users\elies\AppData\Local\Arm\Packs\ARM\CMSIS\5.6.0\CMSIS\Core\Include\core_cm3.h)(0x5D25F326) -I (F:\Keil\ARM\ARMCC\include\stdint.h)(0x5D9B3488) -I (C:\Users\elies\AppData\Local\Arm\Packs\ARM\CMSIS\5.6.0\CMSIS\Core\Include\cmsis_version.h)(0x5D25F326) -I (C:\Users\elies\AppData\Local\Arm\Packs\ARM\CMSIS\5.6.0\CMSIS\Core\Include\cmsis_compiler.h)(0x5D25F326) -I (C:\Users\elies\AppData\Local\Arm\Packs\ARM\CMSIS\5.6.0\CMSIS\Core\Include\cmsis_armcc.h)(0x5D25F326) -I (..\Inc\system_stm32f1xx.h)(0x5F8D5414) -F (..\LLDrivers\src\stm32f1xx_ll_utils.c)(0x5F8D5414)(-c --cpu Cortex-M3 -D__EVAL -D__MICROLIB -g -O3 --apcs=interwork --split_sections -I ..\Inc -I ..\LLDrivers\inc -I ..\Services -I ..\MyDrivers --C99 -I.\RTE\_NUCLEO-F103RB -IC:\Users\elies\AppData\Local\Arm\Packs\ARM\CMSIS\5.6.0\CMSIS\Core\Include -IC:\Users\elies\AppData\Local\Arm\Packs\Keil\STM32F1xx_DFP\2.3.0\Device\Include -D__UVISION_VERSION="529" -D_RTE_ -DSTM32F10X_MD -DSTM32F103xB -DUSE_FULL_LL_DRIVER -DHSE_VALUE="8000000U" -o nucleo-f103rb\stm32f1xx_ll_utils.o --omf_browse nucleo-f103rb\stm32f1xx_ll_utils.crf --depend nucleo-f103rb\stm32f1xx_ll_utils.d) -I (..\LLDrivers\inc\stm32f1xx_ll_rcc.h)(0x5F8D5414) -I (..\Inc\stm32f1xx.h)(0x5F8D5414) -I (..\Inc\stm32f103xb.h)(0x5F8D5414) -I (C:\Users\elies\AppData\Local\Arm\Packs\ARM\CMSIS\5.6.0\CMSIS\Core\Include\core_cm3.h)(0x5D25F326) -I (F:\Keil\ARM\ARMCC\include\stdint.h)(0x5D9B3488) -I (C:\Users\elies\AppData\Local\Arm\Packs\ARM\CMSIS\5.6.0\CMSIS\Core\Include\cmsis_version.h)(0x5D25F326) -I (C:\Users\elies\AppData\Local\Arm\Packs\ARM\CMSIS\5.6.0\CMSIS\Core\Include\cmsis_compiler.h)(0x5D25F326) -I (C:\Users\elies\AppData\Local\Arm\Packs\ARM\CMSIS\5.6.0\CMSIS\Core\Include\cmsis_armcc.h)(0x5D25F326) -I (..\Inc\system_stm32f1xx.h)(0x5F8D5414) -I (..\LLDrivers\inc\stm32f1xx_ll_utils.h)(0x5F8D5414) -I (..\LLDrivers\inc\stm32f1xx_ll_system.h)(0x5F8D5414) -F (../Src/system_stm32f1xx.c)(0x5F8D5416)(-c --cpu Cortex-M3 -D__EVAL -D__MICROLIB -g -O3 --apcs=interwork --split_sections -I ..\Inc -I ..\LLDrivers\inc -I ..\Services -I ..\MyDrivers --C99 -I.\RTE\_NUCLEO-F103RB -IC:\Users\elies\AppData\Local\Arm\Packs\ARM\CMSIS\5.6.0\CMSIS\Core\Include -IC:\Users\elies\AppData\Local\Arm\Packs\Keil\STM32F1xx_DFP\2.3.0\Device\Include -D__UVISION_VERSION="529" -D_RTE_ -DSTM32F10X_MD -DSTM32F103xB -DUSE_FULL_LL_DRIVER -DHSE_VALUE="8000000U" -o nucleo-f103rb\system_stm32f1xx.o --omf_browse nucleo-f103rb\system_stm32f1xx.crf --depend nucleo-f103rb\system_stm32f1xx.d) -I (..\Inc\stm32f1xx.h)(0x5F8D5414) -I (..\Inc\stm32f103xb.h)(0x5F8D5414) -I (C:\Users\elies\AppData\Local\Arm\Packs\ARM\CMSIS\5.6.0\CMSIS\Core\Include\core_cm3.h)(0x5D25F326) -I (F:\Keil\ARM\ARMCC\include\stdint.h)(0x5D9B3488) -I (C:\Users\elies\AppData\Local\Arm\Packs\ARM\CMSIS\5.6.0\CMSIS\Core\Include\cmsis_version.h)(0x5D25F326) -I (C:\Users\elies\AppData\Local\Arm\Packs\ARM\CMSIS\5.6.0\CMSIS\Core\Include\cmsis_compiler.h)(0x5D25F326) -I (C:\Users\elies\AppData\Local\Arm\Packs\ARM\CMSIS\5.6.0\CMSIS\Core\Include\cmsis_armcc.h)(0x5D25F326) -I (..\Inc\system_stm32f1xx.h)(0x5F8D5414) -F (startup_stm32f103xb.s)(0x5F8D5416)(--cpu Cortex-M3 --pd "__EVAL SETA 1" -g --apcs=interwork --pd "__MICROLIB SETA 1" -I.\RTE\_NUCLEO-F103RB -IC:\Users\elies\AppData\Local\Arm\Packs\ARM\CMSIS\5.6.0\CMSIS\Core\Include -IC:\Users\elies\AppData\Local\Arm\Packs\Keil\STM32F1xx_DFP\2.3.0\Device\Include --pd "__UVISION_VERSION SETA 529" --pd "_RTE_ SETA 1" --pd "STM32F10X_MD SETA 1" --list startup_stm32f103xb.lst --xref -o nucleo-f103rb\startup_stm32f103xb.o --depend nucleo-f103rb\startup_stm32f103xb.d) diff --git a/MDK-ARM/NUCLEO-F103RB/Project_Simulateur.dep b/MDK-ARM/NUCLEO-F103RB/Project_Simulateur.dep deleted file mode 100644 index 5d6b9c1..0000000 --- a/MDK-ARM/NUCLEO-F103RB/Project_Simulateur.dep +++ /dev/null @@ -1,73 +0,0 @@ -Dependencies for Project 'Project', Target 'Simulateur': (DO NOT MODIFY !) -CompilerVersion: 5060750::V5.06 update 6 (build 750)::ARMCC -F (..\Src\Voilier.c)(0x5FA03B8B)(-c --cpu Cortex-M3 -D__EVAL -D__MICROLIB -g -O3 --apcs=interwork --split_sections -I ..\Inc -I ..\LLDrivers\inc -I ..\Services -I ..\MyDrivers --C99 -I.\RTE\_Simulateur -IC:\Users\elies\AppData\Local\Arm\Packs\ARM\CMSIS\5.6.0\CMSIS\Core\Include -IC:\Users\elies\AppData\Local\Arm\Packs\Keil\STM32F1xx_DFP\2.3.0\Device\Include -D__UVISION_VERSION="529" -D_RTE_ -DSTM32F10X_MD -DSTM32F103xB -DUSE_FULL_LL_DRIVER -DHSE_VALUE="8000000U" -o nucleo-f103rb\voilier.o --omf_browse nucleo-f103rb\voilier.crf --depend nucleo-f103rb\voilier.d) -F (..\MyDrivers\MyTimer.c)(0x5FA01FEC)(-c --cpu Cortex-M3 -D__EVAL -D__MICROLIB -g -O3 --apcs=interwork --split_sections -I ..\Inc -I ..\LLDrivers\inc -I ..\Services -I ..\MyDrivers --C99 -I.\RTE\_Simulateur -IC:\Users\elies\AppData\Local\Arm\Packs\ARM\CMSIS\5.6.0\CMSIS\Core\Include -IC:\Users\elies\AppData\Local\Arm\Packs\Keil\STM32F1xx_DFP\2.3.0\Device\Include -D__UVISION_VERSION="529" -D_RTE_ -DSTM32F10X_MD -DSTM32F103xB -DUSE_FULL_LL_DRIVER -DHSE_VALUE="8000000U" -o nucleo-f103rb\mytimer.o --omf_browse nucleo-f103rb\mytimer.crf --depend nucleo-f103rb\mytimer.d) -I (..\Inc\stm32f103xb.h)(0x5F8D5414) -I (C:\Users\elies\AppData\Local\Arm\Packs\ARM\CMSIS\5.6.0\CMSIS\Core\Include\core_cm3.h)(0x5D25F326) -I (F:\Keil\ARM\ARMCC\include\stdint.h)(0x5D9B3488) -I (C:\Users\elies\AppData\Local\Arm\Packs\ARM\CMSIS\5.6.0\CMSIS\Core\Include\cmsis_version.h)(0x5D25F326) -I (C:\Users\elies\AppData\Local\Arm\Packs\ARM\CMSIS\5.6.0\CMSIS\Core\Include\cmsis_compiler.h)(0x5D25F326) -I (C:\Users\elies\AppData\Local\Arm\Packs\ARM\CMSIS\5.6.0\CMSIS\Core\Include\cmsis_armcc.h)(0x5D25F326) -I (..\Inc\system_stm32f1xx.h)(0x5F8D5414) -F (..\Src\Allure.c)(0x5F8D5416)(-c --cpu Cortex-M3 -D__EVAL -D__MICROLIB -g -O3 --apcs=interwork --split_sections -I ..\Inc -I ..\LLDrivers\inc -I ..\Services -I ..\MyDrivers --C99 -I.\RTE\_Simulateur -IC:\Users\elies\AppData\Local\Arm\Packs\ARM\CMSIS\5.6.0\CMSIS\Core\Include -IC:\Users\elies\AppData\Local\Arm\Packs\Keil\STM32F1xx_DFP\2.3.0\Device\Include -D__UVISION_VERSION="529" -D_RTE_ -DSTM32F10X_MD -DSTM32F103xB -DUSE_FULL_LL_DRIVER -DHSE_VALUE="8000000U" -o nucleo-f103rb\allure.o --omf_browse nucleo-f103rb\allure.crf --depend nucleo-f103rb\allure.d) -F (..\Src\Batterie.c)(0x5F8D5416)(-c --cpu Cortex-M3 -D__EVAL -D__MICROLIB -g -O3 --apcs=interwork --split_sections -I ..\Inc -I ..\LLDrivers\inc -I ..\Services -I ..\MyDrivers --C99 -I.\RTE\_Simulateur -IC:\Users\elies\AppData\Local\Arm\Packs\ARM\CMSIS\5.6.0\CMSIS\Core\Include -IC:\Users\elies\AppData\Local\Arm\Packs\Keil\STM32F1xx_DFP\2.3.0\Device\Include -D__UVISION_VERSION="529" -D_RTE_ -DSTM32F10X_MD -DSTM32F103xB -DUSE_FULL_LL_DRIVER -DHSE_VALUE="8000000U" -o nucleo-f103rb\batterie.o --omf_browse nucleo-f103rb\batterie.crf --depend nucleo-f103rb\batterie.d) -F (..\Src\Gouvernail.c)(0x5F8D5416)(-c --cpu Cortex-M3 -D__EVAL -D__MICROLIB -g -O3 --apcs=interwork --split_sections -I ..\Inc -I ..\LLDrivers\inc -I ..\Services -I ..\MyDrivers --C99 -I.\RTE\_Simulateur -IC:\Users\elies\AppData\Local\Arm\Packs\ARM\CMSIS\5.6.0\CMSIS\Core\Include -IC:\Users\elies\AppData\Local\Arm\Packs\Keil\STM32F1xx_DFP\2.3.0\Device\Include -D__UVISION_VERSION="529" -D_RTE_ -DSTM32F10X_MD -DSTM32F103xB -DUSE_FULL_LL_DRIVER -DHSE_VALUE="8000000U" -o nucleo-f103rb\gouvernail.o --omf_browse nucleo-f103rb\gouvernail.crf --depend nucleo-f103rb\gouvernail.d) -F (..\Src\Heure.c)(0x5F8D5416)(-c --cpu Cortex-M3 -D__EVAL -D__MICROLIB -g -O3 --apcs=interwork --split_sections -I ..\Inc -I ..\LLDrivers\inc -I ..\Services -I ..\MyDrivers --C99 -I.\RTE\_Simulateur -IC:\Users\elies\AppData\Local\Arm\Packs\ARM\CMSIS\5.6.0\CMSIS\Core\Include -IC:\Users\elies\AppData\Local\Arm\Packs\Keil\STM32F1xx_DFP\2.3.0\Device\Include -D__UVISION_VERSION="529" -D_RTE_ -DSTM32F10X_MD -DSTM32F103xB -DUSE_FULL_LL_DRIVER -DHSE_VALUE="8000000U" -o nucleo-f103rb\heure.o --omf_browse nucleo-f103rb\heure.crf --depend nucleo-f103rb\heure.d) -F (..\Src\Transmission.c)(0x5F8D5416)(-c --cpu Cortex-M3 -D__EVAL -D__MICROLIB -g -O3 --apcs=interwork --split_sections -I ..\Inc -I ..\LLDrivers\inc -I ..\Services -I ..\MyDrivers --C99 -I.\RTE\_Simulateur -IC:\Users\elies\AppData\Local\Arm\Packs\ARM\CMSIS\5.6.0\CMSIS\Core\Include -IC:\Users\elies\AppData\Local\Arm\Packs\Keil\STM32F1xx_DFP\2.3.0\Device\Include -D__UVISION_VERSION="529" -D_RTE_ -DSTM32F10X_MD -DSTM32F103xB -DUSE_FULL_LL_DRIVER -DHSE_VALUE="8000000U" -o nucleo-f103rb\transmission.o --omf_browse nucleo-f103rb\transmission.crf --depend nucleo-f103rb\transmission.d) -F (..\Src\Voile.c)(0x5FA01FEC)(-c --cpu Cortex-M3 -D__EVAL -D__MICROLIB -g -O3 --apcs=interwork --split_sections -I ..\Inc -I ..\LLDrivers\inc -I ..\Services -I ..\MyDrivers --C99 -I.\RTE\_Simulateur -IC:\Users\elies\AppData\Local\Arm\Packs\ARM\CMSIS\5.6.0\CMSIS\Core\Include -IC:\Users\elies\AppData\Local\Arm\Packs\Keil\STM32F1xx_DFP\2.3.0\Device\Include -D__UVISION_VERSION="529" -D_RTE_ -DSTM32F10X_MD -DSTM32F103xB -DUSE_FULL_LL_DRIVER -DHSE_VALUE="8000000U" -o nucleo-f103rb\voile.o --omf_browse nucleo-f103rb\voile.crf --depend nucleo-f103rb\voile.d) -F (..\Src\Allure.h)(0x5F8D5416)() -F (..\Src\AntiChavirement.h)(0x5FA03BA6)() -F (..\Src\Batterie.h)(0x5F8D5416)() -F (..\Src\Gouvernail.h)(0x5F8D5416)() -F (..\Src\Heure.h)(0x5F8D5416)() -F (..\Src\MyTimer.h)(0x5F8D5416)() -F (..\Src\Transmission.h)(0x5F8D5416)() -F (..\Src\Voile.h)(0x5FA01FEC)() -F (..\Src\AntiChavirement.c)(0x5FA03DFD)(-c --cpu Cortex-M3 -D__EVAL -D__MICROLIB -g -O3 --apcs=interwork --split_sections -I ..\Inc -I ..\LLDrivers\inc -I ..\Services -I ..\MyDrivers --C99 -I.\RTE\_Simulateur -IC:\Users\elies\AppData\Local\Arm\Packs\ARM\CMSIS\5.6.0\CMSIS\Core\Include -IC:\Users\elies\AppData\Local\Arm\Packs\Keil\STM32F1xx_DFP\2.3.0\Device\Include -D__UVISION_VERSION="529" -D_RTE_ -DSTM32F10X_MD -DSTM32F103xB -DUSE_FULL_LL_DRIVER -DHSE_VALUE="8000000U" -o nucleo-f103rb\antichavirement.o --omf_browse nucleo-f103rb\antichavirement.crf --depend nucleo-f103rb\antichavirement.d) -I (..\Src\AntiChavirement.h)(0x5FA03BA6) -I (..\Inc\stm32f103xb.h)(0x5F8D5414) -I (C:\Users\elies\AppData\Local\Arm\Packs\ARM\CMSIS\5.6.0\CMSIS\Core\Include\core_cm3.h)(0x5D25F326) -I (F:\Keil\ARM\ARMCC\include\stdint.h)(0x5D9B3488) -I (C:\Users\elies\AppData\Local\Arm\Packs\ARM\CMSIS\5.6.0\CMSIS\Core\Include\cmsis_version.h)(0x5D25F326) -I (C:\Users\elies\AppData\Local\Arm\Packs\ARM\CMSIS\5.6.0\CMSIS\Core\Include\cmsis_compiler.h)(0x5D25F326) -I (C:\Users\elies\AppData\Local\Arm\Packs\ARM\CMSIS\5.6.0\CMSIS\Core\Include\cmsis_armcc.h)(0x5D25F326) -I (..\Inc\system_stm32f1xx.h)(0x5F8D5414) -I (..\LLDrivers\inc\stm32f1xx_ll_adc.h)(0x5F8D5982) -I (..\Inc\stm32f1xx.h)(0x5F8D5414) -I (..\LLDrivers\inc\stm32f1xx_ll_gpio.h)(0x5F8D5982) -I (..\LLDrivers\inc\stm32f1xx_ll_bus.h)(0x5F8D5982) -I (..\LLDrivers\inc\stm32f1xx_ll_utils.h)(0x5F8D5414) -I (..\LLDrivers\inc\stm32f1xx_ll_system.h)(0x5F8D5414) -I (..\LLDrivers\inc\stm32f1xx_ll_rcc.h)(0x5F8D5414) -F (..\LLDrivers\src\stm32f1xx_ll_rcc.c)(0x5F8D5414)(-c --cpu Cortex-M3 -D__EVAL -D__MICROLIB -g -O3 --apcs=interwork --split_sections -I ..\Inc -I ..\LLDrivers\inc -I ..\Services -I ..\MyDrivers --C99 -I.\RTE\_Simulateur -IC:\Users\elies\AppData\Local\Arm\Packs\ARM\CMSIS\5.6.0\CMSIS\Core\Include -IC:\Users\elies\AppData\Local\Arm\Packs\Keil\STM32F1xx_DFP\2.3.0\Device\Include -D__UVISION_VERSION="529" -D_RTE_ -DSTM32F10X_MD -DSTM32F103xB -DUSE_FULL_LL_DRIVER -DHSE_VALUE="8000000U" -o nucleo-f103rb\stm32f1xx_ll_rcc.o --omf_browse nucleo-f103rb\stm32f1xx_ll_rcc.crf --depend nucleo-f103rb\stm32f1xx_ll_rcc.d) -I (..\LLDrivers\inc\stm32f1xx_ll_rcc.h)(0x5F8D5414) -I (..\Inc\stm32f1xx.h)(0x5F8D5414) -I (..\Inc\stm32f103xb.h)(0x5F8D5414) -I (C:\Users\elies\AppData\Local\Arm\Packs\ARM\CMSIS\5.6.0\CMSIS\Core\Include\core_cm3.h)(0x5D25F326) -I (F:\Keil\ARM\ARMCC\include\stdint.h)(0x5D9B3488) -I (C:\Users\elies\AppData\Local\Arm\Packs\ARM\CMSIS\5.6.0\CMSIS\Core\Include\cmsis_version.h)(0x5D25F326) -I (C:\Users\elies\AppData\Local\Arm\Packs\ARM\CMSIS\5.6.0\CMSIS\Core\Include\cmsis_compiler.h)(0x5D25F326) -I (C:\Users\elies\AppData\Local\Arm\Packs\ARM\CMSIS\5.6.0\CMSIS\Core\Include\cmsis_armcc.h)(0x5D25F326) -I (..\Inc\system_stm32f1xx.h)(0x5F8D5414) -F (..\LLDrivers\src\stm32f1xx_ll_utils.c)(0x5F8D5414)(-c --cpu Cortex-M3 -D__EVAL -D__MICROLIB -g -O3 --apcs=interwork --split_sections -I ..\Inc -I ..\LLDrivers\inc -I ..\Services -I ..\MyDrivers --C99 -I.\RTE\_Simulateur -IC:\Users\elies\AppData\Local\Arm\Packs\ARM\CMSIS\5.6.0\CMSIS\Core\Include -IC:\Users\elies\AppData\Local\Arm\Packs\Keil\STM32F1xx_DFP\2.3.0\Device\Include -D__UVISION_VERSION="529" -D_RTE_ -DSTM32F10X_MD -DSTM32F103xB -DUSE_FULL_LL_DRIVER -DHSE_VALUE="8000000U" -o nucleo-f103rb\stm32f1xx_ll_utils.o --omf_browse nucleo-f103rb\stm32f1xx_ll_utils.crf --depend nucleo-f103rb\stm32f1xx_ll_utils.d) -I (..\LLDrivers\inc\stm32f1xx_ll_rcc.h)(0x5F8D5414) -I (..\Inc\stm32f1xx.h)(0x5F8D5414) -I (..\Inc\stm32f103xb.h)(0x5F8D5414) -I (C:\Users\elies\AppData\Local\Arm\Packs\ARM\CMSIS\5.6.0\CMSIS\Core\Include\core_cm3.h)(0x5D25F326) -I (F:\Keil\ARM\ARMCC\include\stdint.h)(0x5D9B3488) -I (C:\Users\elies\AppData\Local\Arm\Packs\ARM\CMSIS\5.6.0\CMSIS\Core\Include\cmsis_version.h)(0x5D25F326) -I (C:\Users\elies\AppData\Local\Arm\Packs\ARM\CMSIS\5.6.0\CMSIS\Core\Include\cmsis_compiler.h)(0x5D25F326) -I (C:\Users\elies\AppData\Local\Arm\Packs\ARM\CMSIS\5.6.0\CMSIS\Core\Include\cmsis_armcc.h)(0x5D25F326) -I (..\Inc\system_stm32f1xx.h)(0x5F8D5414) -I (..\LLDrivers\inc\stm32f1xx_ll_utils.h)(0x5F8D5414) -I (..\LLDrivers\inc\stm32f1xx_ll_system.h)(0x5F8D5414) -F (../Src/system_stm32f1xx.c)(0x5F8D5416)(-c --cpu Cortex-M3 -D__EVAL -D__MICROLIB -g -O3 --apcs=interwork --split_sections -I ..\Inc -I ..\LLDrivers\inc -I ..\Services -I ..\MyDrivers --C99 -I.\RTE\_Simulateur -IC:\Users\elies\AppData\Local\Arm\Packs\ARM\CMSIS\5.6.0\CMSIS\Core\Include -IC:\Users\elies\AppData\Local\Arm\Packs\Keil\STM32F1xx_DFP\2.3.0\Device\Include -D__UVISION_VERSION="529" -D_RTE_ -DSTM32F10X_MD -DSTM32F103xB -DUSE_FULL_LL_DRIVER -DHSE_VALUE="8000000U" -o nucleo-f103rb\system_stm32f1xx.o --omf_browse nucleo-f103rb\system_stm32f1xx.crf --depend nucleo-f103rb\system_stm32f1xx.d) -I (..\Inc\stm32f1xx.h)(0x5F8D5414) -I (..\Inc\stm32f103xb.h)(0x5F8D5414) -I (C:\Users\elies\AppData\Local\Arm\Packs\ARM\CMSIS\5.6.0\CMSIS\Core\Include\core_cm3.h)(0x5D25F326) -I (F:\Keil\ARM\ARMCC\include\stdint.h)(0x5D9B3488) -I (C:\Users\elies\AppData\Local\Arm\Packs\ARM\CMSIS\5.6.0\CMSIS\Core\Include\cmsis_version.h)(0x5D25F326) -I (C:\Users\elies\AppData\Local\Arm\Packs\ARM\CMSIS\5.6.0\CMSIS\Core\Include\cmsis_compiler.h)(0x5D25F326) -I (C:\Users\elies\AppData\Local\Arm\Packs\ARM\CMSIS\5.6.0\CMSIS\Core\Include\cmsis_armcc.h)(0x5D25F326) -I (..\Inc\system_stm32f1xx.h)(0x5F8D5414) -F (startup_stm32f103xb.s)(0x5F8D5416)(--cpu Cortex-M3 --pd "__EVAL SETA 1" -g --apcs=interwork --pd "__MICROLIB SETA 1" -I.\RTE\_Simulateur -IC:\Users\elies\AppData\Local\Arm\Packs\ARM\CMSIS\5.6.0\CMSIS\Core\Include -IC:\Users\elies\AppData\Local\Arm\Packs\Keil\STM32F1xx_DFP\2.3.0\Device\Include --pd "__UVISION_VERSION SETA 529" --pd "_RTE_ SETA 1" --pd "STM32F10X_MD SETA 1" --list startup_stm32f103xb.lst --xref -o nucleo-f103rb\startup_stm32f103xb.o --depend nucleo-f103rb\startup_stm32f103xb.d) diff --git a/MDK-ARM/NUCLEO-F103RB/allure.crf b/MDK-ARM/NUCLEO-F103RB/allure.crf deleted file mode 100644 index 3ff275a183b5af724c3f8454d687f5dc69a1137c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 18 Wcmcb?!N9=8$N&VgH&}p71|iZ>4G>Kbeg^` z7R39lk<;ynn;YrR#hUAO(b(%Liuh%|lPlylzXC2MlkM$oF_|0=x{hxR?Y8f@{UH(^ zyEQr$lWj5S_DAim?Iuq$>73VUG`roAXQy0dGqC%e-AnZy)VBwtUB&f$`%SWxL%BI< z4|kouZ+ov@?@UaViR?JdQ)@UH3_N={+}+;JWyGYON;UL8u1&x&RL?oLy& zeTICs)KE&MZZWAbVnWgKaX{2JKcs^E9J7q%$qlsTC6m(sT>AXZAv@} zs9KhGEE{4HK}lDtWkcU%Lj71b_41K*tW{~=-N@oGsTS_e!Z`??er}c22{HGEoa?4$ z73+p!;Xk#iV+14*ki>=R+U{1GjXKue?VVUH&wV|#FF(Y#cOqheO|RXM`LVa*d%T7* zb`@vmFY5kJS91X_9GPkl&wO{#P}~t7V_wGkow#DD={G8#`?c*`$F75C>sfid+9;`q zNj%G-TiBFlIp4#-*l1T40oyO=H~}v1fgG-o1z46UW4SGH{m4BR#jKc3XVdE#!m?_5 zi77H$JDKcGF2`B3rYdNjVJ1unPLIg#?d^2Nh*SqyxPnzpy*~+8~`2y0}bh?n< zWcHf6Kei(rMa@rGnEFf2s=cUCVx#`hIqlmW5xZ?1qEf4>da)SVgsP$QYui1sP!#jb zHXyog|8$xe_+CI@eHA6lL)@TDH`2_xCRg{hnx$0gmQu#siZ?VDY%x$3QDv5kwc}#t z-zivY@N$lugNqm1L&Wx=#Z-e#64W9jU(zH*kK05H+l0bexLJDEl7(e8y-KgmmaBpdqvk@h1w zDaOmo{ZuT~rKxJqYuXWeU{qwHce9)Cn89X zhM^0Gg z`s&s-fS+&(AckCi0pM;ZBod2>1q{8u#M1m^lTFebPE`F*2>{%qX$GTx#sF^X{tc%1 zd<7TAZQ%+2lpukhaSq_Y3hpDhf~f$cRxtgCq{%OE`!pBGBNOrf*%g8E%dG&}0ptk) zY^2b0XX(+>_EIeVWI{wfiVB7!>tJf5Zi zb|YdRYxPAWMyWo9^FJe zU8OPsfXXVnq5Mbze!)dL>gp{PiSC6-kU))d0QFn!HXX0wZF;uG?)vjQi!^iX0UEvt z1%Q_U#H7FEkPI3e0(=!((we^vg$GL{T7h_lgkN!iYnogjzLm%2`KoOOaiI- za5BfHQ<|vJU(E%%0yqIgudg`-I1AMjzZ(jC)ol%49qRs>EoCkK2?2q9ui56|dDyPgw;|Pbdp-O}g%rLnS?4FV^~!E` zY!92oX-QJm{$^wkeMv%X*J=F^IgGQnrn8aqQP5CDnMs*85<1mnxDf9ZGwWDOEH{-Z8S-x{=S+jci7GzGGxEl8KCojERh{X&U~0CgDq_d0dcw zW7ZCpLzRo0C>|J6nY~U(+Mc{6RjQh~C28`Wex7~jdqghaQ8(>o%K_m5LM59@Z^PX9 zyBe;{UoBmm!ROq}`!lzM+rkIJ$FX$*?-Ss$f`EMj*V#i5!GAya`wIDm2(RU16#vX( zMZNI!k4Vt9<>R-JCZuqV^q>6=#ec9nK5aP+%)bj7fc_hV+GuhJLSvekRPxkjC)zO1 zQlE_j76l>xuvq~54fp+i@9o>SyYH;?!hu#fjN}p!2reW58Z(?@V7+SEQ|{{>IxryEFl$=FKCCN-R!Np{8Rjn1%2uO3A{S1t>x>%m zaHux@X2WpX&0Yg{r%`RT&yY9E4W(@9R%0VoNTmZAm*7x1y>Z9+&wU*@-Co10m2=rr z=H*LUEma%YR1Tf04#gfhRBc;3k_|D5LRnYLilJl32#hDz`MdmXRVs5pm~OwFc6$Hk;P&$oiQTS ze#NS3m=x3Ix>d0==|aAMbT*wXq&JzprtVGbNRGVbrz|Y}xn|d%RVlFXVAMSsI2{p- zbK;^}GgZA*3T;BwsQYurJ+={wd1f0BJ$G<2%M5)lAaJ)8C5%Jdph!2;Y;a9B_q3X= zRO_}zXWVyXo~KX>u^Z>SR;dw>Rz3cA6y*Gn>S0Yy0)`Zm_L0)`k29 z)-sLBWoI|8YF0|Rp}jh3Nt0`JQ?vJFqx7U=s(2Brsc_5`nl{xu2iwub-Zb|LDII$GG4~AWoc$D@G`MA zv?I+Bb1Ypb*GpCAF9yOq-7xGz!%OG7z78-iK_c;4B8HEKg;gOI z|1iF`@NRrncuTmph}Y9B1#l@MNRNi$5P-`OP;emkaAlgLA&HO(EtaMUfaMU9@zoFj ztb}6Z`&vYi@#;rFD|%}lmllgB5&&x?lJNFDh{bQC@;Vci0oD_!q7VRXB!CMyi37NW z1K^!dpTSqwyWE1r+r*RbUIM6le;GaN>klpi{D6x9V#wu}0Pch!kyuVFq3gRVEX)r! zStl)EN4x(a2>>5aH;3LnW&$qj-ZiH9WDO_AW#I|_kVF!G#5sWbYq*Z&8ioRpTEp-^ zB~5;b+ow685t)z&$gT+#Uv3S^4j@kgz(xv3Zmm3ADXzrgkCyaxzBh$gnv#9528BvD%twYN^h!-(Jm0k&r;fSrig!@c?}f>EfCamyafDkxZ@A4fC~mq9bp&Y^WsF_RF?z$>({gDyhf`Bb%)o`Apr&W~8TE zMkXU!$XLi&$mp7;;qMa(UzyfXLHeatJ5UZ(4mT0*8&ZY6CnRlGejrs%&3Yhd@~(cK z{Wl*casdy$=`>qi5bmR>WK-!PEKI)0Ve!hP^5r?a@#fy1yCK{X-Vxr9-4!si01p@h ztQfe;u0s_5+s2cA`;XJ(<{@~_5cwy7--k*89)}|DDV>9a<^%_fM$dm`6tQVzrwISKt$Jd(1N)xV}CWEd<-WhAiNbCy{7-o kHxR>1Y|^$s!Rv)iml_L5)~F8#w&&OhmuvOxZfo}~8ZFdl_J+Hv>kaJ7 zcp-y)z1QsTI$d<}%Jt5rc#*)CQ$J(LORwgCIjYOhmba8$nOjGlm3)}10 zoB*VtaCber{d z4O3Ao)tl#tmkTwuU>R0zJ&{W!eH!DpDVFxIW&dzrhqlwMS(QR2oljj}GA&=Kr4t!+ zs@W8H=ul%!KUPdBjzqyw%SF@J<4pC~u#DmnJJ!oI?yjeCt2BnIV>tS*lP9d8jj@?a zGOk)W%U4a4;h$DE&;x=82;xLleRng-pDO0w?VPfP=f3LOZ`;PEcPe3uEw5SI3pT$A zf5UQ&@{*js@uu|uRHXCp+Qw;i|9s%~YN|WL&CDv8#Zy-*)CaYa=YC}m*s<&24tp$X zlxqd;FpfLw_l-YLTSeg^zOm_M7XVw)@4g7UxehX#ot-5uU`$gm^-NkjaxWw)Ev1v` z$Di}EP4 ziuuZMzVzP&yiG(pM~x!b*IGrwR-x&6tB}S-vy21OF2rBaFa(cUMhaSn+%jA&oxP;N zSl#P{)M#V;)hT85fNiiqcN`@T6G`H_m4j+w&rj=wb}oB`wn8?U^km{nq@0s*4cq#=ARYI+N4n+74wUg1v}&$7OG~&D4EZ%Hq?sMJyUXBj^ z`$zg)Vp7c)SKDcrsw+d)Pb&HmKRnC&zJZ-p#`3EkRs0kxCDmfa5yBYnq3>ewa@c8% z)1$o{WYQzLSi)vE@FcZLiW)2jL1q;cJZu%q(#sX!%ShMMk9AYZ@N%JA&zHErC`6{| zgh3qO8jTO&vqgZZ2S`Wp%(-o>0!+&gi+vu8;ss!4ITD@wXl`ZZy}9McJCUVXJe?*X z^b-OkN5#Md;CjfYXed0~7zfED765_9{5Sxx5U`|tGhhG~12Xiz6hfrD{4vmq-kHXw zMdxBMfE6N%xb+aCbN5krn-dEFt1%Q&2mp6tAc(t!0o+3acsG!z@W%9>&>-?Y;Y7S2 z0~$V9K+neN=5>G{2@*gGu36{3He206Yy0C~Oq9QPW>K$H9$9J)sp55iOev;*$ zrmjCi#peM7@WLlC=r06G3N=9jd>LrcoIekkM~lQVpPeP<7lILzx?l)zWN~^iYm<{W zQHuzg#wG&bbcPRSG*F|zobh7?aC{Q2z7izBc_1eL?SK(8cLIHqb;%+1qss~O(F;~U z$^Kd}Pv&=!@dR^!mE!6L48UNWcku8r&*;T2+{J)jEl23A1-RVt2~6}GkA(FUJk#*q z_kRc&K7RN8Z^!ruUOmqz_-QCj@HiWPmho2riEDs~!iQ)+&l=$RUAa4~hQ38`K*(z6>bOZYTJc9bWHFU6g#&;Ti&~HyWOOfj1g-#Lm24 z!q*je;>>f0y+oQR9r}1+?MCnAp)okOP_KZxNSRK8xl>o)4`8cNZ@se zU7XtNrCo2?9yW{9kma)d_0aAQWErJxr}00;Fp8c{Mk8lKr-6tflT&Zv6uq2=J^F-J zMhTVW%0Yn{mU5AmOR^>(%6qaUmvmX#Hq+^Zr2+QL>?ij zrW466m>GR#!|aV~h3ivz(oNl(x)Zq7|Ob*%1^$#cdQTGiz(aB`YhdD(TwD%wBN#o6|G}v^3pqFA9$P zs56R=C=Tx9?x+kdjJvoX2#SgeIzr1RqT=qj3o7`X6F1&_@#5WxY`@?5v%ASSH_p8g zapOk3hY4_QU3wG_;zT?yjlB>S* z%0I76@V}R&GOg`f&fdM}qFVL5%24g%b0Blmjko^T$jscfIa$8GaoXAIcQ5VQefH9} zt)Qy!+&Q^<&*rmdcWl|b?da?@hEo}uINbsl8ID2C2_Onrftv2iK zJ?C!Sz6Tlq{u z-}c~S`LPh3yJT|LR#pxEtGo3gWA*1gY(44o@T6s$w{1zDf2Wms*S^D(#UxplB!i8a z_QL!^Zzfr{?>L*brq}Cq=W5j{df)`0zu$KhAb4|faId#z=eE7O`6oGW-w`&)fxTX1 zuGVWeHzYsbcZ^LuwAY(kT;E%4H#^PwZt}c+_p`v^z25wWRs%?Dp*PX$c9P5YJ#$?x{vKe@j#;i&l?+vhg#zHsw7+m>3}_w-ur zGq)%2+IOsl51ZM%>)ff$d$(ESs(mL~|CR*O8NR^-8aC!RGDTm$q5{Z|JDibBm5zeP7p6tM_XSJLp-9y+(b$((7(YH9o-B!_kCiE!^H@>;Db8tD1c6O}2`D;Q^gS zQy71ddl%brZO@kNlsrSXHCO3PwAV?7ujLsGuzpd}56NBIq<7oXy~e_vfY0(WrC#)? z+=r3L*1<7_MB7eB7ZPpr9F^0ys;I=K?J^BNy)9-;7t*Vl{Dhxw<)?C`oyC@|O2-l; zTAPo`n{$1q-tJo2?Ow8#zQ{|qW!#p>D7Hmqq*t-+`uQATU#)M$7$HUaZH~YrHg3Lf zY5h(?ehuS~GXe2HhL>LVlATM*tM)y>#?hk@kr&!c6P9Os)6My2yVXcujqWFL|DYbm z7>?n+3z9dWZ6)=HUXR25Y-^&oq1o=V7UmOLEwTTwUavLZ9Ubm<&suEuddXw=t+Ck# zERwtjokEz7Oobc0&ibjT)+S^~@=>SPTda4w&1y35l9;sQ`6!u?U|122jbw#u`T8{V zDl=wrV8WPXCMucT%iRpK3-iK;L?(I2(tFJEp6Uy>^lMdTG9{A(hc!X6~M4_y!LY#6+g-WnwRT%JL*t!9F_w{ z$!-lXTJ~y)QL_`BMc59emh)^u{-szzCL0wS%jrhJS><#?-_6sFu_^!IUgcJA4gyf<$*lng0wgJnoq`}Kk@%oOA}Ntr z)I&-nJ}{SLM}?V4{7c>)nP^GBSWLC7UoNIvS_Vle{9z#I%{CE0qzayz&s;OaR>Tt( z$X3UM0@+G=oURJR*r8;yWqG^;*#c=+*it<<&&7JliUnQAVOHBuG|Z~| z0i0MW@la};%Ife_#Uc~1Rrs3KRwnUef5nCR`09%@W$@7>R zvc-X(C9hi3@&FoEAggIqfvl=Z?vtpv#ctd5p3BRr(C`X`G^yl+X_gU2@@WNObP7Z9 zwsI%QKjr1?-8uim4H;jQ*%CQ<^?NWNG|Len&o8}cMpHo4xGYh;ok+f__6YzG`2m5 z#&;%!Vj-Ry7F)A;Or1#v^ZrKVtRtDk&0xOAIVs67C+*hT)6Fih#!PPv`nS0Gki#N# zm}CBW-=VfVt1u(%%wgQh#!Sv8XIt~l#0k}$1=hRh78V+GXV4a!T4*<#7QZa-YFNcs zz>-IIeS1DRA$RDW)W%ocl#R{$y5u(3lEr#s9qMeoTM|iwLGAU8ZgN20M>$)jcyIkY zr{tU6N?ku+pKVRg6NGQpIHPtPqlls>Y;3o>&18e?7$uo@vp$*J7^Xqz5t>b58ps%$ zFXVj(?ID&Xt6l%W@=zDgCf(%4Zm}{inW(qht!6uUc%i1+3)AiT9NVtlO@3-7V4T!r z0@j*ubzAk>US~1+Nj?ghW^SzO&9>%RUCiRMsRWjrnvL#48$LEM+e|jPrFIcSPgpsz z9+fu)+7&0RggUHnoxijP4_fox_QGs(HfRq%@IlLx6*nz|CA*f+$KutVT|2fV4{)>W zcCsv@dLCu6d}-Oh7AyU|jOR-p&k3kFQH|#}s%|ZI+DQ{WDSE%M43A9EYm(V_3&M2@ z&t<}2v%)6%Mql`13LldR-(rO~G5Ni)T9~1ZW-Ow%U%BtW){1W~Lr8)Zi@SDUv3qxC z4;G{scVN1^v@1Eq&B~f!))!&MBDL_XWrywAv2)=(W;OYev5fXx5!wg4w6tgrwEqV8 zlzQ2>>=ATD7o7lX23AQJvyIE*=n&raG?jJ83ILAsS8PAVB zp3@NRMKz+m!(*l&CuUqf%en4F4r$w;EyJ@vyv^D)xB24aAjArx1H=}Xs;{5LxQ#aW z8roL!{c;(W0Fcit>zY=WceBxoJlp5c5u_b{wd_DsqbA1@8QZT)Y_rHBMqtt07_r!C zv=P>wWTV6+{}Iy|QSiHEtIpfGd&{om&F)Y(zp#kj=!|U}r&_{(>8D0yOdnvNp)sWIu!U|1k2^mTW+O}ENEV6Cu`g>bYk6NHz|y&ZR{N&#WA-r z`=sP}cbJ`>Y&SPez)zh?fJvKi=cT=#N!yq_%$38i#Js1J(q{08>+l)5jW9Nw!D2Eq zi@ezK$fmg%fI9UqW~)vLmJ++k^{`(m5EGVmdlTwE^@PjPido@O!_&n4^rLagJ!JduYreub*<5VSPu8)| zbML-`t%emCjgwEgKNpgZ?mNVyD}gTHNyPmsyu|gr1H~)2A(+JCr;a7NzOS&rEJ{e{M)_c7HaK z@3}vpl-%V0oKOCnKkpAGUh(GT%g;$ZkfHebbTdrK($;|-V`Yi(H!*Kg1e-LsrB1`E)Gj=8NE24ZlC14sssU1HG~N)k-?8 z{`dbMR)1Qo<_?9p(x(enuSE5v>4U9CtJmuGDp-Bjq$_yVNgeXj%a?bPtCh@EgiuH5 z%;ZDv&kf1@-Jgx*I``+3lK*sn&Z7^eUi&H5>E#)UpHELN%j=YLK=In=WohJdqD_(o7CyPZ3$e!q>iq|?D1BPLPkv+(h6|WsErIL4z8Q=K$ zaD-v7?Nv2S^V1N>oWJ(?x+cr2QYvM+fhK{sprvB6{44}A=WlYq75l6|U!bH@e#hV7 z&ugrkesB4z?U?FqNFI&xK|B{poyAUb7SSSg+wVC}UP1f;Aj# za2e|p?c{tm2CcqhnPcRznb(>0Um^W~)*^a~6};>yM{op-2cR^gB8uJVw%S;(%z~&n zmSJ`hKb1c#m_$l)Gp;phs(V`)W`*z8D?D|rdzY_jEUs@&;><~E%)MxX2F8I`xG5X( zV2-B`CtJPM#vFP9lL9Hjy~|f{QhmFd&_Ke^nZRl~m=ZIKX5%i+vZ^yfRgZI3HKvgA zDmP_@DKB?ZCYf@%YtG!|J3aullz8`0Rcv<`+8$7Szwjcj1?h#r>hB6b=R(ie~0_aGaSj%S)_ zlU{3Xake>!6FXR<;}qf({e;-ypT#K~iEhW_OdIO$7G{Ko+`iS za?rVZ^K&iEk~>(-l*w7PO00>HWqnbPVKEdNQj$xf66APgPy$aW#*izb66APeNTQqC z@v^7{IlMZ{%hFBlcukOl66AQ3QmdHX;fz^xZc%FWw73XaxQHXZc3f8RWI@}s=BG`S zwBsUVIV)c)%viW&=+YeAM}|B{Dy7D&%Xap_q=~%s*c=lldp6W~MM?Ov{jSWK4hz$Cm{rTN`>qy>44-;@dF+ zGTd1#CT*~rLm9_o<0534D8@X)g1I!@6{k~ev)&H1{i z*O&H{BG=``4q_&N*r%H|E4(Sy`}+xz=_8uZ#QIKw=|la5$aIY+G}pwG5{uQTO`qu} zM5Y^ybs(j~!Q}evENdJ~wRB={?xaYO>pA;Qu~Fgyj1nT1md|0kWk2M|w@;HxOX=`^ zXFue~_d`uCZApjk=KYW(-#3e%XlvyxJnuBtAu5`h``1;@8*2P80 z($+N1EnrV`fic=x^Xon`*% zFY*Q|+AvvfG&ZyrW=$7Z9TOnKp^8AuWmp~)Aj6 z2+sU#6%Cl)Oq}(kW?P=>UmBGl$K{Gde)@%DAaKmzdmq=)hB|2@E3< zocT{L+Rqie9$v<1wsDHe5d1hMK!*P<8fX|W)9T`A8Xf40FwERI!eiKf*18^bVjzg=I@wTq7{-m}74e4Ne}Ki{(g zi@M!5Hc`_h-1n?lh2eL$jpecI*ng+7ogQzNoey;%K20(SxbVz_d!709bEc$s_7|ho zKXGH5VKd5mldaCe!j#nbU43N8^NX;|)M7)PLy|r+JV#%X-V<{l&<3Tv%+baaIF$Z|eNs{$gZXp?gZYLjH*rE772{$(J)HLCWj`4jkT@ zt$%-F#R`nFILwlI%_ml@!m~_^M`E*0rSxS<<2ENc4?yzTXpdTOGH?BS7q2?Xn%+D6 zO0fV}g`{TJbr#m+B&ey4fA1?ru6H<%>DtAIi?m+H`pA&SU4L+S@RW#Ci^iaLIl)^I zA$K2xlwN0DbE7fk*HH;_xQ|K&4m^X;$x`22L&k~-S>CO?y?R#VkmRIQ*w$J0 zjTHy%9mgIawyF-r@8#cEv0^XIPaTqV1Sa4_@8RqS+z5K^vRhWHTwK5jo!_Usd(S=L z7B}|3D9d}xiWL~vl4a=z(dmv{1+#&42aR&rfc%3dS51CUki$080hwahk_G)51~$9h z_@8e2FwPq}ie|B6m6r~hXR$N(=T!4?4&g|$G7Atab8B)KbD%VcNXkfZtCupGe9KE2 z!x5cguA$_Ayp#&I4~sI@OaD7J>&8Gqw^UdX*BhA;{wRy`D z-h;Q#i{FY$kmEb~#3ALF?slfqmFe@tFmrEL_&bX@tA)!fmQ30IBPv0T_vSO_)Pl~& zg>(V!qd}B;KV3#K9ZU1_y>vS#Pnj*syk966t#j6VBh9=k3^Vs7`D88S#$K9T)I2x@ zGUt(HtH6+Ey)lR~@6AP{(EoZ9m+V=pZ`ooh`;IWo+&?OEGdFVLh_}h?Jm0WH4$8dM zGBw+o*D!G4d0iN0?ziaSHSJuNu9R8DU(mT^m;ch0t1)+J;5_2iLfT@BY1`bi<|ZR| z0gmmYc?Ub(0HEX-UCG(bdZu+@Oe#4rg^3#zPtJNej9KLQf_t+0%cUz<@qLCN99B)I zG)Q9i9>VcMOrp(sj7wJ@IJJHr8+HrxL*^Ya6Z2OfIX{cCI;b6o;*R^cX|omCv1R_v@|154qo;td^#fSfhV_?#r#SwnRwoVDa%QRi}Q zauD53LgcbM1TxLc?(j4~YU4kLM{qjOartvyo`0d+ZY-{oIm^dl0%Z719*7(UJUrsP z5Sd>(uXHIAMV=rRYHyb4d0^CCKs2eD<7KVmhzG^7B42h#}!J|BO>8)nAw!XS?bA191*h2DLsng zTh}gC92&uy|L8oTXDZ-lY4+`5n7Q{VZoIgFT^VeJ7(f4DOn?lZ&}sn;<~}0fI6N*w zmgBTGH3Lgpm0F8QkER4UUhkP|#vq)w;!tGD^1YY<8Jtxq)}@SC=|3Dko%O-802%Jc zw@oOJj&J#YkmXJNgvj*HqOme2VzlSbXiD>em;f0*TC8?Eg7(sXX^FE{Msrgr{g*85 ze2zpBGg&r&G5?VvkU5Vp#)EXw1qD{|?0T59EN%?219K)ro`HNtq#!d{@76ceCnwu- zxOb$#7}-wmCpKhiceKA4*&dg#Pn2ylZ+5eqX8KBzYaviyv-9gJX)idWj|_Q^ikWUI z-;{7a#K?9+(OI)rMBmG~-rY}#Oz#iWLKE+bw(IlLvcR&juN1kS98j2<$7+9hKOr(* zp-*|!Nz`2{S9Nf3x{ZwyC#hkQTIr;0;4XLaxGI~X-nDXNoyU&(s)U(k-oDI{tR#@949Okjkp!s*k=sKYv(tkR^1uygBF9C<4^{E$9B z+_iFbtIJs?ZY{EP^ai(%MsQO?`n+)0%E88Ly)}n}DVUG=sW@GQx3#QcCpm_V;d#oj z0Fx)2h`zwB0nVpz*Af=)vI%i_u_Y7Y1M-21X>3k&)gG3}?7`hPL?!5AZ_CGEa!yrw5R&+g>+B*^hzg`?YW9}GVpl_1Bpip10& z8nJWfTw}*;qY~tJb3SI}mTqfp$9u@<8;V*?fDES+afmervnQ|K~8w+{^RH zl;}t9=JqMRKW?&rEP^xtXYwJH`EA$9{$CAj-UohnT$5UVject(b?I(Lf}Vky`+mjI#f;;<`Sz3Y zkm)@3li!md$E%9LStRD_^NpP3ytoKiF49C6@ywjFoDmlx%b8kv=C*F1*n3{*878v* zBq~9UUukOUyD!<^*mj{E5nmh^A&VDPw{6&K8hPutxsX_yAucBjX4I)?1UeWl2CS*!%@=5%{fwg$hqA9CdTak!Fk zyX!ozG3er?xiN6n{)v+Hkgz}CeQ)d!;DCf|zc22WBsraDbiYktY1h6H@}h7pS}Ah9 zEGCt;h%*e8H5w^$y?Nh5tw*0&mXh;x@{-4A_eYS7Ur?=MctEe4-nbnPgP8L#^_3#m zwx|?d0XJN)=_^I9H>pw#NO%~@*07xw7pFd4DRO;8?K(yZN8(Y=GmT-V^%o;sUG?^i zE%S~a?1voreioPG(SKv!J^LX?z9d|8ENxR9#Fsj`yofZ-|u^bjaVo9eg-~XEuO#U_sRW~ zCGYiE%96?bU=Op>>eTEcZjQ*)@Vkn1H?7m?n0v*NO}QK&4EZLQd9B^@ah=vFA?XL28xTz5VL3I=teUi~Sl$%D)pC?I`97|~ zkQCfbFoENv*_})F)FQSUvuln>Zth^QIZ!klKgtMDDs#<{MNuFed&(@!%7V>Qo>f_n zTTG6W8=H*L8(Qt|dQ|7(`SQG6=diQ~_qXlXwRO)W)4O);-MMx9`FJZnyExLwOe-=^ z$g9!FG|e4zxPTso%pT~efM5jHp1DkU6vH7Z) z$=kp^=(`;JnVz*MQGLrEd^rW@nX?m9CMS7qec<>(5p(JRPl`nh?TOE|v~iAQ51!$8 z`953VXlViS0ybWQwr$|tR-EeGu(So=2f@u3XZ4|JJsK4E!yT0jnBy()S$!aG+v~}NaI`y3KD>~ld(loD8uYa~ZIEewC)z@6 zOFt-+J6soi@=*`Mk;!H6TfGwXwH=e<`z344t(}m*$b1Q=w*}uBIe+O~Y=hn3GT{>3 zv;}gqQ!}!wE!oT9?4la?6`Bl=NB=Mr|DYAW6r~m2_$m47z2QpBsS zT|Kxn?VVdnERJtrWh-U5-m?5--nK?(bNd#o>!dD+t+>>6Z}46Bd^ED?zhU(nY)LF# zv@;J9m*eKk6g(J<2pQpg=Gix_E_-$t9ZvlIhSf)ToD*C3?8ZH4$7cd-99{$7>Xl^@ zOX*HoUYk|emsbyF20cA1;g|gq{sU}%)N$w~E55w?@SUDH$-#(9DSF6G#}>SAoc3Pi zOBI=Z$==I%grtmL*2~BXB~yV?8F@jccuCr;;UzX2@-(gV>TlZCeG0~7X@+mEUi~zQ zrV|(*h5nnX2PADbuIln>;Wn1`cNy(%miD}i;4|gs%GFtzDM)d?yL#0geEn)S_Wq7e)(l`&S#by_J?)FJ40j%) z#>KEk<^)HY^i6o{V+w-&4$0Tb`2ejtU`pg8k{kC*@D=p?n78p3RzE}i~w88QqA#33i zTR7`;qD?)%UyRvU4VsR zDZ}Q5&#YFlG|!nM6|_r<;68XCHgFpOp{B#bzXY)D5jtt&{3;XG|2VH{V`6%y7u_qts=uo8w1 zVZ}T3rb`D_;k!~;6Mk=2FP9D+fZuO)S$Jl7CT}dfR+u%`eR>V0CcJ)N1uv4TWWMnF zftB4!2S*{1TmW0({u|3Og(%72U{e{qcCsGO%jeD$A=m;FBmRB@mac009+ttoo~2060sR5ABcXC_R|F$OzkPtC#XyP4BOX(wkDcPqJq9SHtL z6Rcq+A?*fN4y>A*szdS`O_J{_xs()Kky?%NWLA&htpD*+%$-*btl2$PXj+`(%i^8! zXY4L9$PDT&oyMu_Oq??P-n<)j9hwM%>m(Xr6EXva5Dt)R-Wj_tx2u91$s9WP&5~nE zI}g1F=%%DcpKcmh-I{FR5D;!9PWf&!;o`|?Uc04)jiR~6`pl1c|Gsj=X6j!zBYMN0 zqqC;Cd0PrMQdO(gs^kbUwBH)V<`Z_Ubo z>%gkcM)tw=Sry+pZ~)HP@!N({)ZCRd0${@Erpyc**0+OywN|E3uK+HkTWV zop%fjEG*(44{O7p>xA(`$t zDHXIuQKpJ_jEX5WY}*`Z8{?n_c|n~`F&nhqM5*6%rZVfiVQCU(a9|_#7$mT7^D$p) z6$uMS_+D0jzaLmR(P_6aU3Ww#kZ^}9GTT_!#!`RgFw=|po^D#h@6oMH`__E}E1Mh8 z)R$(2NSUjn%`U|wm6=hkxo==KeGpRbVZ1S=yDyJ7L(Uu8_YL56rp0y@)8WjV`jlhN z$8~ek;=ORtOz(DN@v%aK}e+28?alb2@};Ww)EC7Hg<23NE( z5jo8jKw$Xiyw+O$*l*g1{LqRLR#R8#qu1tK_ES4^##)Entc#&KRZxEham z&G|OIH;}$Q_qxFW=4axmULp>bx1D3iFlJ&BWj&x^49Ys5H&YwmoJz|Y7~;~Byp!%W zgBfxmVHQi^Y5#cV;L64J?2I#sl$2TLrDLSv2AUakWG5F=X7OC>q~N`X8H9sk%B<7d z!Bd}wIX`n{kTMJA%nA8n*tB%N(OWVt%+=DFCbH6*gerDGQ^&b_kWW`j?r(IQJy|cf zdT><(ug1}H)AqZ1aCLhV64_KvT36EerC(|1s|N>K)sFF;HM#Zplx}AI|HiGqMywyt ztTzc&G*()J*9@-ga9Vt$n=;AK^wz9I*O(Iiy-R|F4>DL7f4l}oY|J4#yge(mO{zK% z$57Sajo;sOiO`@}7*A^(=HUx2cu~knz&ERk60Em;j&4|?`nPTYFhQzf4(k*WDK#uy z6;pmhl^Y z)5+A|GPr`H)G{}L3n~0AjTi_Cmh+@yLQRHj(=fLTuAJtL1nWIRhclRSu@5ej_wo$Yi*py zR#eyI!tq@7a2v0mD}uua;04B!Hol^w2#(;w-Gbm~JNcw0IEn$MAUI~9fw*w;Ag6l9 zBnG86!qK^QqNpB6;B^>V906XV39gkOYZ+HeA*!3JCTv1hjdcY3bRKv6;HpW!K81JW z71a|GfGol43Hfl_qcqV5Rt2&E$}g&?0kn^s-))A%$7DWwH=GvNum33Xdk7$YJ}@7( zH@c%Xr;V~Sdyvd}%{K8@una1xYtmG_KZSE0lbC*F8@e5S*3QTu4AVvaV4MeNEzU^t zZYY)HLqyi@LO&SKW|DqbDsGXNBeNZ8BSQ4Et4s%R1xi{s4rY23|syxw5icI2Bd7}9|yGcAbuPPHNs>1pV zFWFjkNlsxtD{mJ6}O&s%^|K6=iMxIp0yH?4&Ts`EugtcBV_P33kW z(H6g%C!$TQr1QyVG=NQfkXO?-`5$uv3_>>X^nByOBw`O?`}U=67X6-%T8r+`QQNTJ z)lutr-_g+#sg?iH(NRHf*U>RSzn!-}=b)xddFzDr2uzyNw5;n&1hAfReBRYex_Ld* zu)H*9!RIoBrH42v%mb-YT%A|HU6(PrU+m;Y@H1)r(1_$dm;rHdu5KdjZiF^TUdcX< z4_LUrYk29`{XL8ogzSI{Ix%L+8O;8RX=C=AT^B<`_M5%d>`;ih)zV>;`!JliDK&gY zEX%`giklDI-&OP7F3GV1CBc!I3}#=&7@S#%Zi=OZ>?e9?@}*pwofDJ5EI0clJ^`71 zRnBxt9EvX_OeBlNgogPjiP*Es^g-O{UC7eJ#%QL5Jr5rfbAMNHrZe*o;`re4!W<6u zCI67iu^(b)l;vX=MB^0eu7bs=OoDw3m63h+yU^$G2%rL0>_DhM4NH$IFpM1u72p?V zRA3b4Qh_l{PP4{Bhr-dK>?isXerEM*x(nu?2U*`aU||B^^~-8QIs;A`XL{HdCvjz^ z9FKjn2Jn>HQXaUn9QZ;>Hh?n`OE~5a&)I%nhe-96yu&%UP$}6#A|~T_Y<`|@TL2@S zGyJ>xu=1A~#}Np8vx}2*eEN+#M7Fo*#yPoAg+AHhq$PWY4w39XOJvN2>9J4N*k~^( ze7z2l?5!m-=5jyYZVhg9Cgi%ftIK4BNcOQZ86fQ0_?9hhu&=(pMTbcCt`Zq@VTPT} zm#k%rvr_-xR}oVEG#{YzJa~mT3j=v-ZwL#BT6zVcO-rw0x>_n8ESha@7{Z!P0IFbN zI{;PjjrIUk!|Hkf8pf({02*<7lv7ezIEsgaK&~;I6w+$Cx}l0gusTx1yUIE;j6D+_ z8NqQ=9T~+Ur;dza>t9F4vCyw0YjK^Fk4#Q1nxo@?Q4xC10VU5t9(?e)SZR0}Anj_G z>JYhJ={dCIN*+?qk#;qn=#ZgqjcGUJNW0p*%Vg|okIh3`nghK??rok3V6?5}`8G5$ zA4dBue5QQOjrIke(*hXz>SaFW!(<{GA~>n%)g5wr{}~!Ursw5DM3w`G8a$e+rMW}{ zNW%|MOI02yG{})0;Y-&n&BYo(n&+tUPPhTAE!NKpN-iQxqcyK3JWF070tK*Q8Bg z3G*CmT8pP0L3yBFs&hi+Qn)q_fHZ&Et$xGe;Kkbxgb89ANEW{+iV_^YIm@MX__GiqJ;q zlc{+g?9yfdHA}TE^9day7Z)zY?t`6N7*C31h?xz0OZ+Ewh-BA$WReR5nnKnxKJzgh zA{iGzUCRtv3s*K}QQH`dWW3KHRkjqsNVhGI+HO8PG?t9(+RKAKu0v$Iwrm`7;VGg_ z){?2^hjoZ#TyOPC+HFmtb7m#wk^o#|Ci`~a_5en@y?II9d^mWR^|U-aeUJ0_5J<+8 z^PX17iBBD5UY`Tl`;;5jzZgVG`t{tui+SfFcR)8mD=RP4KqI9;_R&DdrAN!-&0F`CLd;?evy%$)*?@MORqS>7TJPid_bwl z0^+E1)&os0>^}E8a*emson44@PIq=7bmwejc9QWJ<*bFcKn0sIs(N%>90U$PO$2lm zLXmKKtXSnz9vO3-aOYSdBaRd9TnynZ8*kinlF zSfmT1Rh<0^qr*5S6-LLCDI8;yPH|MxTIwBj@5?N~qr-S6;M-;VO8L zj*Q~g^DsVAsp1`@vhBDJtSR@X{2_?4S?^Wc&*a5Pn6euQD;FU`7*`=e7?&Z+^(dUC z0iD}gvWm)JUZx+(J&dQ62t1Clqg;y_IT~?apq}Jbp5F&i)}r&YUogDtzL8i&(Dg$# zRqa(!Q+h2{dsVF1=mo{|C%ZwYnhadUGhrn6Fdot(@OW}ypcX~q>-DqUZ4qYDZ^)Jp|WG-_%Mz~#qd!~zhn3~=KAF- zK`icI?U)PDFAc-2lFOAUk=&TmWbcUPzBN0$iTC6h>i>xeko*Tqy@A{?;G4hYasixM zZ!ZiPkKiPKg66`KA6JqqAA8LAG}Tg^1f0WksA+<{^GTJnZ)?qNgkd>_v(0`(7@iR)mPe%QV7 z*v~y;=$D1{j~M!aF#QPL!VXr>sG(0{0<0YWd5VF+*8M2177Nmk8T!A*1W3OsZ2cHE zLxc3=hW@^o0O?nT>Bn&?Uyy#Sp}#jKK>8J7`n5RK{y;kqIo5AlELt%Z-4d0c0(F#> zj*It}wng&GY~<@v32L}4+<_|l%M*D zR1)VxiL7#oRB@iXJn9m`-7>uC4Ew(2Y9WrdcN??o;1_z~_|VArv*kJD@Pbl~d(QVp z3m76RXl2yfq0}i<GizKE@o zpX)V764uI(VsI0uDzmFqe16o8RLqh`(ZUvfr-c<2S%dtiFf4vmeBRA-!?lWyZ6GdN z3GqLNVG{qV*Is#U9O5kzqb_2^DI6fSuuhy??Dtxj1n)C?N$mI997eA#S&aJ6ELQ3` zg#&eLVbpQ4S3oD0-K2t_9>7TXY%d(xe0aVpc3`B7GuYMgwGo`WPb}+9^J6_#;b!$& z?#D%Na!+d9k{^+y#4U{)=Fac{cZ%!Wj@@-lx5ddlQ?^^&rq#rZq-3`=ZMeQOJW$^$ zj`}V+owS8Ky1gh2llf&@|6?a>;QX;d%mNGXOTsXTU!f73+{uH>Ii(eX#3>vgwy;i| zTl}w@UV%yM9B(jDH0#)nRHoA zhI)<-_<`lYcUE;hJP4cWIkb-q^&B10V|j1@I=h6t(0=B)a;EA0zEafXeB@H+!rh;G zsnA23X{qk(BSTFq1EsP&SR3&5uqfDt$C>X`Pq~$fGI}c&WRzCQ@LHc$)bpo+9?OH}Ro@%L4mrG@YASn!FGXEtZ}6lPZx9I{gHLrm zE>NmehMFb=rLr=ZQ0cYD^Yf{mNA!`Qo}qvq%Y(J+!UGs$hm;3rIZ`!e#zm-QQ*ns* zSa6nBSAye#sgjYn2$h^3P$De&E~Z{%=s&}$mU8rw(xx(0Q;t3b8AKml4_}_>rze$( z>9I0OloLCQUuQk_yqNcAef6T^Qcc!A85iD4&`Sk>%u0279~qXa5%4$5gJlTa6|i)Z zR^DV>gj&`GTtQf{pITUEm3P~Fe7nNl)I1y$pn}I17cB}5_*$w)&o}-o{fd|X>Ahnv zmR=aJCQ?{=v*6Tht2<@+ozI<`LCd_m-%BN^z&SQomcY5{!V{I%fOi%w|K0VA^3>RDv1?f*QbqM;BECXS7zs9Z?Bt z_>rzbIB?QU)xf!|)$pCD1U39n*B~6p(@SC5^cI;7TODJ4WT@rwUaz;kF6F^Z25Lz- zf3;e?J%`jItORvPTk5!Pamk^ww}Bl-5Ymn$_^#QYl>tYPhS^8jb|+ z{`70fpq#B*4cA2_sNp7EgK#8gm)g>3FzuA~i*kDxWvHdx-US(@y$#M8sx8SOdP%GV zbsVLaL?rNXq*_;;n_3O`L?x)f`5K#jfHPJK2iBX5L$&oN%x?)sij{T6CnM;I=x}Q)`?m_oUK~^a_lgrw-QuPjvbB!Vuz}MbI`a3D-qEk5=wM3 z`eo*6b&N(ln*EYmyp``XHl#dwms2eX=bcu|!BGk7I5Oz1;J~t-+Sr(LS_MbN1jv7a z-q?mAxvHp~S1Ms&Aw5j}gCI)cpB48Z^SpT7r?3v4B3OtvPIU%@mfpzshcapFo~TPYBOTVjgvoxjYy-@5)a|fO%SZW z+QLJNn={>|{7Bd=G$PJnm21oD#(o2?jtj!vyZy1!_{eSD&iUG)TV&gBex6^ zZ4f2t=Zl8sdGXq5arXe~+H)IZThMs}oK?zP1|#DI-tK|LN=ILjzSx?_L#Nv)Rl76r1|j@T8Z1P1WI+>KZ29{!Da3=KR%dO;+~b&CE@mW zeo?LrC-<>s?i9zeYt}D#1qEI^n(bv@b3P>mlJ!w}zbNFy#Zy_oC;)QQ>$gFaq<_l$ zMKLedQ?q_iL~zjKo*-7iyX3kxaxCmOL6p|q6R@U&8!vThDzN76AXdTa>$){^gzVQr zl-ArGu%?O=Lb^3oSo6mqR>2$dx;1j#>{mgQ*8DMGO%11ybZcs`<_|%vf|vAlYlh8~ z;D3WCt@%U1nqi!H(ybYWHNOvH6YcZ`4dt`Rxcn4=bYh-luNOD6IKy5Ub$IL0z95b^Un|W!?NXV9i+a z!hpsxSo518Rx#h{u*b`?@-^lqH11XM5u+u}r5SEMyopc_iO3`2s}Tapc!m-ZnG>%W zXTzwgY6vB3g`f&fpQwgNKpHZm8&bvT z8PyO*tmzO`abL!8>rvv>6Lmvsrm?4WLuy!ZRSjXVnhHUcq^awYQ1yfm$Qqf_4H?GD ztZE43R5Jusuwkb*jYO%(hd>(A)D0QI0fX zz$<{f1W+C#Ql&Z>!`UkKF_FH#Da#E|aX`r*@7uqhZYNy7TIVVJe#+@n^c z<_%5(lNj7@41*QCdKWNB0{myfFimnkU0F1VS4Ra*Vwk@n3|8=si-1WI>OUQZY0?d$ zhU1-80h1W;KNkiocmdI$KF;*giPt3ojK(}SU#iIJ2l?>6a@i83OK>X>sz%wk@yqg{ zDxfl`+FaV8Y9VbffK zO|%Uy-j=#bZyOWOjt^oLTu-iBBhk!Rr7l=gG1fR2mKIUm0jPRWg`wL zql~?jQy%a9iE0MY7Js6ef|#hPl+rK!DW}aP-NK)8rXZ%ADy2BLa}3Bdz0DVrxtzA_#HY2_1iD@XAD znMx^-CSxIxl#kabN3jX5Qp!WdXb2?b<8;a~>=de$GWv~#KvJHrQ;y^8p-L&^*l-9W z!t%n9!`Q0d;Rl3ruAWGIl0<6P$15#&|-n24^l9k`` zb(am(HW_hWoisIv4^j2-M_jy#2fhjmKc8&d4`mQvdM zQ6Z3ZS<@*;N{<1SQX=Tz>6EhgT-7Ogdx>hLL{R4*=XQ72MpQ+bW&tFF};72LxEFcqvb3m45W+AWGKd0oEEm{HwD{SNc;B zCF`;P>oBgt(OIQ8-4jH~ngm!!aQ>_4R{U~bZ=xd+)bI5fNKU`kr(mhqTR__1@AVl- zO25~qV5!$zKpNlg^%+P?zt^W=sn=UTTHf#V8AwXM*Qa2q*IPiE-S71oNJ_ugr(mhq zTR_^}@AVl-O25~qAbP#p;u1k076M6msuxHsi6^vE%o#iksjpt z^c*Ft-_tV`Jzcj|I+1@kAg>9$I5@;CicR=Lv2x!((rmv#`gmK zshFjdX4ivqTUuQY%I)DmP;N_`>p>YH>rxNO?U6uGZc7B!gEBx;>Or|Z8VJg5iJ*E= z21rUhD7VJ~LAfmvR1eAkNvQ|r_IMyDw9kIO*adsZd3atdk#sB;}v0VAVx9hHkE&V4pc zy0rcCz4cgp@e{fvc)r-%4YC;aFN*8Ck}j?OyZ}b~{zc`hCjQQb@JV|=SLKt|=7*ML z9pn(FT(#2Pgz!mAKS$-0c7Bn{H(c6X5I$++XRCbD!Y@?$MoRkw!YASKSt_4I%NMA8 zqooyo;geYTOqEYUW2H5E;gdl5k1C(U$>*zl<5<_%{6(UqbM1=Lh7u&5Ygb$h zZ(VpZ4DneBk&7Xa9=Oq;xZ0ff9Fs~ZePkg7l5&Gi$uBvnl+sP+Lm(;F>y-Qmlu9W* zWiAAgva3_p@NSw)DV=3D1d`IZlig_@1jQffxun0W3xT9;>sF57ZHVGbb+)k%C#f6j zq{;mwm^n&P|KM_l;^4B*Dy{AxrA+flZ1fKxXDALJ>#Wl7{z2k2pNxwBLE;QWY}Z+( z?fnD6X+DXQ{(;~O#era*Rhr*FwUp+QXz8C?%2334omD)*KYf(ulbGqBKFUy>KGInw zZu$pp(|r0t+YH4)Tb)&+r+;8J%_s5GKQNo2I54ZTN(}v35T(EV#(TC*S;vzX1oBBF z{b>*->#qZ>YZK?5JkyU;efFWR~I@&d1n8eqGh=(y$1c;@t zeIg8#__HD65eyi*2d^`8`&)x3X}=rrwRLy}C>w3eXOx>8@XjJ$TQa21l2Z{Rr?cc# z0I}qhod7KWIBW385LCg-h=E*HyuTZOYPgs#Wd5ch-2Rxo?O8Nrag#Xw4`Ko=DRiKxA?}{5$fvvHEl(L3O<&HtFi>{ z2FhLpFQL+NKM<9mhL1)xRPgpmSc7!l_eUkD;Uf_ZRlHUb)*$`&eNhQ&_;5r+4eyJD zHAokJZ&ZRBJ`~X~jJHd|8l)Fr6_ucd4@NYM;0=##P;**(q1`p(&-Fo+%wNn0wPIeJ zLeCy=iwK6Gn}Qh6pojAD3nbb|V=S%X))TGA84w?V$I_c~-;`(3;)Gdyat@r81aQrI zkY27z{ZdSTb>$pB^XVJ-9CwgjzS8=|m;mXWgJ?eeB)(Y}q?b>i+!PZay>lqdr*Gnm z>52Tzyo)_C9m*%ga9F82aCnwI)XQJ3=t37re;vmtF&N87o5 zrKrvMnuMp#a$(&zq^;&?+tOEx+MF*-c-kx%z9Xf0hTLIdwGH9su6{BVTte_LyH@%@ zT@$X)H@=3c+K`oect8@D4tHDi+1xcR_}j9uoxi>QBb7ZK~xi?ai!F`U!@z4YXhhqo}t8s}6 z0>UY_To2H6WR3pNeWzNvhpKX=CO`6T$-vSczweP&!-M*2z?%nuXN4cE3KtvuxBD$k zL;j@o1gBavZmbXL4edsiL;A>2<5Br75rxvE5yiRHO2aXYI5N=CsU;P>p`$l+Dv|c? zQ}#W^*6hPnU2a3m1Y2flF9OS{-zwX=!buUMO8d7>E4&x zpLvKGmw&V0(zN8BfcKTSv5u^JpF7H^a{~BsDnpIxoFJFMoInpEDaR0eD=xtg4C>yO za-`n(kU-Q(|sO2B>B}Ih=tJlTpw;8l@B|}LsE>KCH ztj(Nq1~bN2u*Rs&XFMs17R~*VWYK2#LvuCx&VKO8BlqNfNmBE={m@*)EyaqXEKUx& z6OZ9OGSv21Z9K|(N{^57G_vuGUSn$7^h$plfYr2Y%{up>j-?;M=n;V{ z2;~vDik(8m$y4%nv(xM%uqv*Tip(#ZG0z*VOgVqCUy>~F@3aQ=IkDNK%z;v=GrINZ z$yTR6F)Poh3;Qcf{Tuc@)DG(>mh04E#xiO|&{hAe{Sl<<7wmhGRegL}wPnN+h2jv> z+|+F~aLk1N$|mlOQ3)!#*?;tQIS`k^8e}4KLsWtqoL8t!QCur4h+JU}5^6pdm7s<% zMaob`=nHF*kaB%gf*QUU(NM!$RWUrfB}6;a@kCl|O;149m%iFhh=zPCu4)30tx;97 z*7TKrLR9tNaa9dG{YF*Ey3@`5gsAG9aaEI8oQtZGzWwEXLR9sQxT+==>Y}RTo~1AK z6QZhH;;N>wXctu_!@?K)2~pM83gk2N@;-WY86QZiGMO>6jSOgA7QH%ujsNX<9Tr}o4Mu@h={DwkNzkz_bXv}Yn z5LLzehC)%lfq=MZ%x{bkRmJ>!D2+@|9-;gQlHxNiSm7=N|X5T92 zH)M+X4Fu8+rl_h(qblY%WQzI?1jI#Seq)6C`3;4leggq<(U{*Dp?-ctA^1(SZp1}D z-%p6Dz7qGq>14Aym#vy-0@+diY*d0uzM#%_EeCGC(&p2G%8v52Q3-1Jd_=BCpw?rDNEoKU08#h4*7Icf@QcNQid@cr_)BWtR3osPL&BrsL+G4 zBSb^=PL&GNgM& z7mfLi5uzo&jfN<`IAuz zDk+`gG)gQ7c1pDQw4icc`I@K%HC(68r!5EG$tZ3?$z(-Pdt~{QaS`fxt+&rrWWoCo z5hYlp!YR;K#6_s&H8CX>yg;FiX|^UAF!U*4CLjSr?^=!!Ez!GHE)?imnScZgy=yr_ zRHb*VTqw}BG64w~de?Gj7Pl&3% z5O<3yJa3 zgk2N@;-a7FCqz{@#yxO4u!18UkK;id7vB_*6c=NC>ZGslD@AkO8X3K)Z31`V#I=c^ zzOJtnwY{Z}wg&Dni)#~CeQjSUYI}1ZZIig(EUrzw^)-E^sO?RCv^8<_SzMbq?5q1q zQJeGWPG=P`_mU~xzZ2IcK6^!9DQa^*8Ln!Z#??IGc@l1hf!9X;2oe%nqkd$hXiwCS zC>8f3NQl=){m4jBThxyz755`Zh}TB_$VgFJ)Q>0?_ajJ%*GB!wNKsqVk0=%QBS?tX zM*YZ0QCrlHC$rp~>s625C3Q6k$TFN=#%iSt#}a!H1hhsGGNtc8-iG%i9V zm&ZynlANNpT3VZoBzn}&B_xvQz0H-PF?w%vqyoJymyk%J_cm9G+VtM$NCkRZE+LUb z?`^IWwduXhkqY#-TtXs=-rHO$YSVk0BZc0k_3d0jBFU@zN>SVE`*_I|u3?L7lSp!T zUny#PT_0`JxS>rO|7_XN$?I`Hf`oW&)Q^l5?TPvkrQ&`B3Gv#f9~miXi~13z;(i1P z@!F^#87XRu`Vpn#egp~e+Nd8HDQb)Q5vAgO1PSrls2>?AYK!_2rQk;quZ4to?JN6A zQQK?#_~bN}g(6;yQKKIBBS?tXM*YZ0(VnOuQ7Z07kPxqp`jL^Mwx}ObD(**+5U-8; zk&&Xds2@=(?njUiuZ{YVk)pP!A5kjqN01P&jrx(1qPD0XQ3`$(@mffT*S?~!6t%sk zk55ixoiXCIn1SUZ`}pKE z?hwlEZ{UJWuQk{1&Dm=@FAQL0-j!dI=;p&^{~8}2kuVE?N&q9@Q&qkSuKCyatwVX*Il07kwYDqjunbZdMFF5o*qfRS&z$~TNFWi>uDJNV8EVC1_< z;_;(RZv2$ItI zUQ_|ZVG5N}x{33>C^wf}BXk!y(D z&ggv6r~qQeL#33C<9yM`%_a9>IbSp?fY{l{ZX(Wr*4z-j|D>f?@C7F=y_y`Prq_}K z)%4+HP)#362GsP?WVM<;maJ0K$MIDg&CazLs*bVm{2l6)7azOXrvnvy%v;S-#dkne zpoaIyRA3ly?Wn*A-jz^+QJhd$fib*?paSDKsCtww;K5D-5txc0vgr)@I|3Np`)OW1 z+I(myjZeba_5en{y((V??W^%gEW0Rxk#CR6SA}0_d=kjE1u*jMR{3i1Cyh^{m_KEb zI+7sfPnj%MnleecgfM@~lw!2cpE6mjG-Z->iC_MdDaFX=Pnj%Mnleec1TTNelw#!b zr%VJVxlK2hT+!@&ZnFR)9H^AiO`Okdy18V?cRsgS01-%3O6e)i=QiD3 zGUPj-+bnr#4)KYdEU()7s!(qH`PQwFkm{OMB)mZnb@kS^m-pE8h? z{`4sYOVcL{NU!myPZ>x`fBKYyrRkFeq~rM0rwk;eKYdC;OrMHFBY`G{{G-)$e%w}* zui|bkO>WnLvEVH}T3N+zr%EZY>n|aYln3Zm*08s! zQcCRdp9`%a61$e`l*8D`R4FBP{V4>}%4Is`2=*;iN{LJ z?hr--6<|D90Y+sNU~E+ZMo1N4oKpctD-~eOQ2|B{6=46*zDb?eNxO^r!BPNWKh*QE zFX;&TgO1Rrb%cJYBlImDp?~PeING=vJg3}w!a*UB-gtypd1+4E%%)OGlshm4lJan! zvV!lntCSMr216hz*XWd0oGeu-CB6-WKvEv2Q`T_oPo}7-#!bN{MW% zLLey*(J4o8q)4Tdu(mP;lG2|v+ZG?ic@LFRV%mxjNXmnBE61=IuTn}tJ0Jv-@<5$( z96O~drOXqShd@#e>Xd7-9a@aLwnpqc!TGL;i6S{lQs=uOMHK5fI;-@cZv|1Ze#h(S zsm=;kb#zwgME@N`$@)J5)+*L^bXMs{-wdK;y*j*Z;bXMt5Uk{>Wy)D2xifuBTRr=J|f+$&U4X}=3vrK1|ZuQk5O4e@$ zSjVwtRvbo+&rM;T@O~YrB=6IKYVuwks3lkFz%VXXR+Wz=SL(nh?nza1j3w{Zf$`*B zIzpmPm_PcM&5w}$C!=(Rz535d=s^gg{jJAErmKaB1h zq?gF(y#DOd%R|(Ehv`Rfm?B6oA<}u}*{7GMDSy%2Y1&botq9UftaRSR^yy`-!e2ml z=*Mu>B1kVm(|M21rGUs!kO*W#HZJBsG#wsREc zRTV{o{q|knsNg6-oI5R|L3*z9dP+%yblv}mXsBQ_JzNIqyv`x{k_PF$?~G`uCgTwe z(tn);%_R-ef!`6)P)o)l8l($5hfhlyqz}J6qG320jcAZw>>LyB(=6Xc)ySSYZv)mz@KFB@NP<-xARX9;`;bOf#dppW zGKrd3=@7|2sFBt1Ni&5^0_1<{5Xt^aBO6YdS`LYYSLzVSuGYv#l1VLxguVCZ5XnBE zk&WVbfKp6}aPQV3lD%Ie8%rj%91_glr9&ippGG#0PhlyR$xP%wbckf{)yUQ+PxN|+ z@nt*jaJ~$0;$(`E&iOLDi@9HhchaR7IA4Y@VB~YY4DVv@m*Jgs=?Ko3;R_h~oG-(> znEPdTCtdo2^JVw~Mn31u@GgeU^kQ_8I+E^iNdP0?bG^-Qn-43t8lUutivt+>o}==O zV7XS~lTPvU07kxNt9+watJV0VUpy^1#_{ z&BBAB+ds@`flBExqXnv^!;BWFl@2pnV7PRc(E=kFb(|@NKCh;B%u6T?jQw>4)TV)!dwh*+GH!tX?nMj5;j608PCW~Eab!*X^C>Cn^HbL z1d_5@rZhRxdL_zkGo`GDKvK?>DNRnSj%GbAH6Ilzk@QsojD)XOE3%50h{`6SB86}w z1d_3(n8=*&@>6Oet3xOsSEdw@l#^vj1H#+OR-z(>@`)jkl+$HOR%8_m!dgYj5OR3{ zBjM}Rimc)NsIrNu4k6Uq+JI!#+M1wyvdFDSp>$3~7C}-vry>iWdnz&oSRF$71f>WD zB;}M|ku|J=YZWPD=PLsk316#L74sbt3*IjI_G{1pnL8&1y~(IsYD9_NvT8& z1G)oKxATMy;(0Y9j;dN+`$6`UGUDozu=~ z;SA`Wc1{6ShfpffLO@a~(ZYa;7TIo~p`2>8dyQ-YbX*W6=>zkfqGDb=^Jbqk%aME< zbVC>>ud{06<;L+Ag_xBi6Six^Fo{2(KfdO~CO2+RQ;1nbLVSG~Ch-?FVv`$(YxD}1 z8N#tal(Z)XD!7Vu0L@(ZozQ+R43qaus=3UKQ$h+ct4N4H6NX8Aqeg6Ux14 z_y(;WOm2MiKp|!o3GrvcFp0mQ5u4n&!%(kanNb`aL`i%9Km`wDy+|_`RV1{!KNy(2 zx<3$xKPbekA|d`%7$))Ow0bbPlZ{$VR*?{^u}5GMtFgzxh&_4*%S_{_AWGU30u?-h z(-KNOGP%3Nfolh}GC5Fp1UJV_?J{ zy@F*1a%2!C?eT#M9>u8>&0JKG(CYqRVDjqzKv*A(SiwSkjiy&%5?>dp;8EP;tXYf- z7GgE_um)x0PK`YVM(oimSY{?i1X0?1zd!|#;q;DXE~-dqb$>80d3ApvtdB*kK_UKx zrdMDRe>POXV@X%b$tn_JHTDQhVm0;{7_lcil*5@z1GBW|yt&8V!74(!NA5e)zVUld zo+r7cI6Ed2f`Z(U^0EL%wpSHr&S^eexL0_jVLGZx`2Hn;k?-YYKIThKF6TiN2;Zdv zjC`*w^D$rYkYa1mzR6bGRNXgqh-|m#yBTTSAs5ahmI~WwwdL|0??IS~3`RQdK{&{dO$CM2*U~+9)o8%h88g9uDfht&)EOo@i zS>sLKKw(NeYd*Yoa=9Ze&SJ+hTXD}yJKGydPEyk=c-ksNLsQD;Ty?HFXViP6f(x@6 zyivh{F)9@6c7C$k?%^*(`>+s5(o?;-un@hWh!4#%mhoz6m}^E;hD=yb)_m;)JN zATM$Gwhoc(POk?`F5C-{9k!}Z;uC!9XS=Prg~?{Gvwm@Lq1{E9vIeFAwgc)L<-V$8 zRfM`u%o{k*gJ(3KskzWGW*@8~WID3MggnVR@?u*4Gg2z2rd^0!H|90qKp6b8n3E=V zx@~FgO#zH_z1%O|e95m%#$|MG*CDc9Su&2f@CtP{W?3c8g@$|VAXUxet+{V9nP1;V zTQz1(9WRAIYTuSSZXqXLFwA_d0H9x97=kJ|oEgYfg^dBIhC`77Xcz|?vo4vMfd;pu z;KmThl0CUxGLtj;RXG>i$+=i=Ap;^}l?=tl<{NgN=R5|c3N1=f=P|H|x{rY=a)v|u`FvFIVe)>Z?4vd} z-cHNLqckUZ=hw@4^r0|J;%mypHg_^#uDz6aDEUMftRx=~gVp3?ib3n^vk3mC&79}q ztT+~?z0UKn2jh9T)LAEO&LKSJ1;Gj;bP%j!sV4~5@TgGol{4U()>jS>qAbdBWv7YN>PEHYKFR;j+u#!k0xr=^VuPUjDW`sU z7$)--<=&DKKfIi?+u6`=PRY};;=?ISV#S9o3?D97+?iYC6liYIo|?QV43qe4MT?!> zcn7`U;tquAt#fN6o5uw!?gd6ZSj7S8fW5MH_JuG^d%qg8w}Ln01NK&6uX813(WFYR z;@*zrgH>!V2JDrcC~roTSA@Jq;?0O07&D@Py;a!j+;>?tsS10Yn=5^=iru<^y|S@$ zV;E-r-W;mm8g3B?*jt0WL6d5**SQw6Xm71o#pYMQUfCycHh+tG<*1Ca`Rl=W0u9(Z z410qn4Z~jN&P|UL_69qYY&$r6sl~jqQR3{SdN7{F0``u;-k?b%u=l2L&MKy&f%=tI zd}nL2XppSpJ6n?;?A`<6L9jPy(kSfxLdf1x)Nimu$)dQk(^u3g=PR6@J`cuDU!Z=+ zU~kZ*G1%+P%JWV<278^$Vp5G5Gv*fM9oN4U2V`coD0|xh#Q`}-amh(xV9gQO>fA%^ zX{@*xBzjmCbLhh4G2@iL>ph-3C@ozcu(X1ee%(?=UFU}Df;9}f&TZ8mR>ey|x}_3w z{}e=N>9T;ORa^t3TgrGFvWDT-xd*#oX%(%1U%(a#w)X^4TIxO1WHnyH?u2eBBW=hU z23qHa?SiF@v-bvUkuZCA5T&Jm4b6S90hOA*g^&TlQ&u2Uh^%;2y!+XHVa>|RA-UCjK z`VTlc0!u^IjKfmz0msS52OPal<>jZ}22s}Op8|Ed7T+7w>vSzF4Oz1mmfjuAS55wy zzr;!(K4W2u3#bcIQ=Mj4qW=$~614bd#qtz6@Ip=Ynrx~8&(fknqV}Cp32OLBSwqf& zt1e0!YN-Z^ws%A&sNqLt4LJuc#wckRPBloB{7zJY8h%*TkaM`#Xt0)MuyZyeD@%tK z{lOw+Ji55YA&7g82$^QVG%HN2icA(E(;-DBLEOuo$kaKLkB?_oq)Po~zzihcQ;O>~ zSxy9u!g^8$z=ORFjvT7^8yq=Q#mZ2Cu!h?f0?;sSN+?eFtnt#6{?lRxvSi*KMrz71 zf|{z0qn)=uljT9z44BWcE@1v}uLko2x`wfSs+LR!$ju>;CA&axvk?R&RU1dgfcYF8 z1LkvV446NHlARmUHC$SBu+1U^s{aIi@GX8vM< z%qaYMVT!Rt&WjXIiN;ZLnx=7hlx{a?61v^v@F(5wak$gv0X@T|Cj_xtW*+|hF~wLS z=ZyxZL~GIJT8TL4(Cy}oL$`Y^N~GJp7A1ORKo6fJ{Fp}Xv8$NnP;Nn%$=jYsFA>n+ zp3eZ3%G;jLq0;tz4wbg&bEvdEpF^eX`4p0gS2>g$#03ro>jKz~~%ryTN67vxYy z8GNm-sxo?6sHTK}3k@TFs%<6{zVh6`$h)X>$h)X>$h)X>$h) zaqi&9z#6^L?1^0w!03x_EX7ol59iAK{v~`v$r}Pl1+Tj5d8&AKQ%7pp%F~fyL}#r; z(p3Ix)0u5rCoSc?xojhb!Ad8e(mX=}ySb90+s$$P#%t6PReQsT&RU6N;_9zT ziFI=ElJg3&Q=*!CSkFyIw9xJ5ii>VH*IRVEYba59)MJg-P$J#4WWwsNUP*~$72J83 z*RgyU$0{{%;A~a5n=3QA-JGlHc5|v)9`#tFVU$SsESaeKt6WkdS;ui+s&z^ zBF<8EyE#eK?dBX+x0_Sc@~FoWji5xjXUPP$JUe18S??*&jtr*EjwFvZI}${j9SNe% zjs($WM}ly6REXkdV94mMpl2ide$pYpx00zuw1PqwZ5IC%tj4?3aa1sQauhY3U zN)&XyPFDc^(^#qVFb)RHXCMri&qx?BpP{g(myEH{x#%soPaXlibGc%nJOg^?axH{& zx!DaRF4+(cf~i2oKLmEhB-a2Z>s>kMbAq>Um7{c;2NlC^o)_106&68(V9hRLJwAw% z_2d$(&5P6SJ}cJgGS>SAQL>&?Vzqg3ZRb%=!D z&8>8D;kxl`=9MO||Nkg^?>No2s?7gYBwd1lND>h+pku1{t?KUEAZT}W)xG7d?rN&4 z@4dt#2o4e@h-qewgJLF#U_en(QPiK~%oxXnsN@_jam;DV{tV;%_^s!xaQ1%I+EsV{ zxVP(bzGppWzx(X9*K@MmbUC@><~2?ogIx0(r~mNiMYil=a{{n19hX#sV#5a#Gu!l+G<(* zvW|AS-jLe7KBk9IY+fJJ!S+=_4NzNI>{@A}y2@hLg2}E8pW5na6Pp*a^bk#KUd+VZf^9j9R(0gdF=S*g*IM(c9*5sj#nk*N41G19m6uQ}R z+RCA3$@kO_B8MwJz&s#LZK&da_u_zHT2e`0@h^Nem*Jo9AZ}ORhW*fx3^<9ZGkhfoS=yimnBeQxbWXPf=^_i^9bOja+UdzdVf#l{>?y7%4;b{CZy4hzdz}2dI8>ZGuAecKyJbTDrL@RI;d2T{qQR3@KEvDpe&`Qm|6pFx8J9QmEdx zRF&BFOG9(t>|Hd~4^*lXh3X$xs-W_{kG%K&0siKT*s(=0C^lcjZkZ%P);n)){Eq_$ zy>IMC=d_O`ZgKY_=88P9i-%b#dvpW}gC1p%GwI)I-z-h>sv(8uovU8llvw#XS*5x% z)q0ztP`y*BDpWpDR;jL=YV+)3?19ZqP^dP~F7{NOU940$O!d}73f1PemPS=#<#DM( zb?>67HV-$>aTA5=pH)2oDmMw`(R65M*14Mw2# z5A#KPv|Y*KKld$@rI_PX>v;nPwQuiR=5cbCqx+@P@|EdT+X92$w-tKA+-TK~K$H8=R$NC1J-t&@@vIWkSZadWw+zwv7a3~Jw$eR z&BfQ2$;H<~Z(a483siHAFz7XxK3gW2J`24K)oU(1&N0HE*IamPnOu0xdV3dD?`Z=D zz322JW$Gu1YoA^9?HsCFa~pL-p!G3%&mLaWUh?zx&#MwuKx|tGl{vv=fKTOR5+{__zB*ApJQae0fU_AUg*TNDn>9tuz#}w6A6=Zl&ly z+2BR#zdH`uQf`hN#jWHhqwZTfC~KZz>$*TN+WNLZ7s#R67gb##6N3(+I}9mg?^+L` z)xqMG)lZpJ*V+$6%x#_6QeLuA{>+sPq2|fKIdpFm80~4E93(7H4%Wgpgql|Xc9DW1 z{F=J|Rx*UHuX;$Dq(g|TsSgsNkR@w6Q?aJyP>{H_(J&FVlwmT8Tgf41-32y;nuiLz zF0digJf%xmPIbhy<}=!n1Uu08f_>>R9NqBcRiiat+;5SgroARdOk=u~`-Bvh3ZJ_HOg?m$v_eqD{@qUwSGpH7I*m;?_nzC~P_EL18QQ zc=0Q@RLiTsK?=U-@BT*`5EO3~HP-sZYZ zf6arvv#esYr+KiKaQl+v4%zhAyg!mLg!!7K456u6GW{LqQ7|E${^-mZdfq5x>CD+o z<;+3HyGR>Czckpc zRnX?$g%rIwsQOQuq(g{KllmYLiuTfJ(wWL(P|<&rDn5NQV)*>gh~X1Rb>G?$D%=Ui z$c7D}!krivcarA#)zQx8y3g@XJBFhho>Mhi;4*}EIwyH7oa zqj#TOw-@np;ic@MNqcS7e-mBG)rdM)d$)NdR@=K9+Pn9tdv{}7UWrxquEed4dQjMM z)PurS?KkJBE$ea+&|j6^lxs0^2&$*Mn>YVyphNU)^X9(}wr~DxfnG1#t+#i1nhy^8 z>tLJKn9J=$k*(wfdl{WSI z5kyNLRsQ_d*5a@0C~fC;BM8a;TJo}7pP|t^^~%b6H04E5h~9xmuT#0$T&rqJn}^+- zK3hqDL$!H9L{H_8f~rT?wMUz`$u?mEq4~)2=dW)q{;HPLc7EXqLh_-t(S(;ral9OX!24{`6{H1(RCZ6%|rR^kGCFeUS!eJ_J-|-Y-o=jmOo!0TKb6c=WlGu zMcryAZD@}+FQ{y{r#rrRL1hQ!1(n^^?@f7!9{$6HxL4H(Eo{DjI>~8N`~6cao~nl( z;r@6p<_KcVCrg{C_LHSpd~RRvvXuXdmN_a~W{6w1FE^d+Z)v~1vTvCqh`qYMufvdh z%ZGNubV^bFhqg5@2%5SE?<|!!GwY*bPvAXkQ0|{#NmyVx6o6#&P8^doh&DbxNh*}< zAS}5K$@NL{;Ufsi$0kXQT>O2C+JL0q40PiNLh>j{YNWhrxU0qI@t*1ncGmcd2MmHw z>(4=ZT>H8f^p!7{%Kp@TMh&u*M-#g%5I_H8~}Bme%C7JiS+w zGws8B@q2dnHm{rZ;wSW7J~e!T=%M@fT^>+w2Jccnfb`M*MrbLQGP~h4MeQ9N>`V>0 z)d->?cPJWy$o8cM@!JGwj{l!pQg7Y;m|AjQE*#|HbpAS>bIGJmzW@wv{HkI&3F9+~ z7NZl#lge%BeEW=2?{fQAsQAg}_OyL;>3iB17}`gdzMb)L+O+(l=`~MB#>o*m$L-xatCDz zHsrp=Zj|fB^*N5_y}$F1)aN+fQvH%$xgo9C3SR90<{IE_g=GZZR9J#_IX6{;jrOf_ zQ*-gwdwGZJ`6=_7kIwZF`=$BlTnF2a&g~!KE$i1F9c=j*Lz+)w_7IY*xs@H13ji@c zI5@YvZ}$i_x6bwulFb(fIw)Tph-7xKcY`TDZonY;q+EQ^gawz2t6jS#^R(Ua$JF1ScnpX3r}X{Z#xMR`iq-A9_C1f` z&~EMtL%Ss`;^o=5m;rWfxNyzUb^AxxZ9Qyi@~dkE#h;(^tcj8bBf?Zpi}68q{rP`e z5=i~?d=teSvv~eItmmat{r;(3zLXcl$2)79^;dF8(*L}D*&UWuKUyQS>8I%DY1HB& z6an9O{gtV&URWcDy^O>(N^XVeTPBP5P3*gB1hMbQViF|}i$^8D0eewQlpawxU(=ld zgs!>iF7__+s{)7_x~na`eJqqt->w!fxi=;+T}npgr7QUePF}h$*9P;_4Y}Ntm!6WlY4g(4?foU*GT9O8W1G9* zJBIzx-2L7%xl1WhNtbW$AKfqwwSO!LwEm4-hM4wF(MAa`VvLk&mg6Oi)pERmv0A<^ z30y7TXj8S(Kh>scv;4HAD(!N#eoanA6pNQ~#;RDnl8+u1i`V6`wqo&yd~mQ>d`j*> zDi)t^?<$!ae&L!!wZ(6kPZScxu6cX4(-7OfQHJ8y|t8Au`j!qmYv#{eM`$u@5>j>XxW*4xwIZmQrma5DW{M2 zZ=5po&qffx_;2PZx{F+V-8^s%TsYjj#x@YH&NoQtKEI5yZcW@5Q2Zjy*Le&!y6Z0Q}1rmY#x8G zc1(joC`5lO{c5A~_7rNUM8xiHPNJ%)LumdhH`Jiq!5@xRqt0EB*AC1(==x(ggdfF2 zVvd(fUs2sudw)xAsXcdaot&|xtsWgd47V!?n{waF*QP_3^e>(QX_OOk%s?C6@!L1=GS^oVzlASBcF<}nW^E;8Sswa z1$NYMi?P8*owO$9OFi4Wx#@~9#6HNwXhQN78I4?7Jf)y?FRrQF{umC~kK>U$$BS#F zfjBeq=gmDI`s*9Il-rqdyKLH++I6pEINEi;qFoj*?_-IZZ(_?Ri1w44kGnC3a`WB` z!ZIu6M$6T+n97@P{Y0p9NPj`mXyf9lO6_T$!H#MU)mv?yheW$MRA(-S>Ul@WcBj}i zd4<84F6Ht`rgMdT?U3U4zL7H*LjcuTu7l-YI}J-o1pL}N9>byh@kLKsywszj#V{G7 zjmHwk6b~lkc1^>|+I8<^INH^`4kGq~#mkpI>tSiqj~`|@^hb9c!ax-BZjWLv)7rBSBM$2id+~{_~ zICBh#^h0QYMW1R=Y8d;a@YP z_`R>^2}6{1!gy5iYdxv4`;+lSq`3qrC*wQwYvDa zp==YzKNXE?Cydj_a7aJ6=uDq5-dxAVgpr1-{3uU)Xs4k%^Y)#Y@sm7uEl&w^r0l3q zs&->c7{4{7Xw&O>!VqPhFdkX_TAvWG`;+lSWHVtT<2&s5E8{R_qko|gwfpo6w%JnuIBb9=5qTJISl#D z&4lsDF@|#UDX37k3F9A&Mz<5j#xWey58?>}yUz|u-dM-Rgpr1-#>Rw^hU&~^sM5?n zGucsTN@(a(X676_CH>^1e`84Tdw-W5hA8WV@$ll;`h6M z#)RbLDkY{YZYPXe9m65pypJWe=o3csoEkIPGq>ll)NFZ~J*QBg5HMoyTC~eK+SR;e zBDQT@9_pb9L$sR-;}K&F<;NA>ZxhBp6pd;pjP+wUq#wu=hBVA4j5pM=F=3>kstSgpJ(Ka3P@7MnoQ!W^xxyEipXCWd8s-zm>+9H< zFw#)f*qAWVP@TC9RZ9Aq$&N}>LPM7_Gw0ZO!uYiz#qWJBPZ*-C6UL3juk{H5yFVFU zL^cyfGQKm<#&>4&Ym@P9XkmPXwi8A&z75AOPR4iU+4u^x838{z8Q&R0IT_!;?SrGp z1-Y?aZZz88(wDW|w!ed8h7i3|e;Y|aacSLs9}~EI;Rby#{bB?mdFw(Fk@6bOF5@T3 zU3vI!&t4=;8Q*aTQ^vPk?l|uT>BP1Vt{nIS!y^jaSNDT-j+Kj=-3&hw>DDV3_3^(i z8e`}_xt~XxX!*`$ZqU}j-nPCT=2wRlvaczcJH@t->BKMy(T^$i*#x0^yJDXK${T0O z9@sk6mOf#OA^ViN2P9e^Tg*Lx{iV9(M5nG(3fWf{Jup$ZN}W}2xbBLnHgAWH{!t3m zR~4!gl@m!h7vw%QZR#yX5SmvN{fbC=0cp;K%NNh>U2m#%)6vuc&LP}90u(>RxcrdZ zT$yIZ&7I(=xq$7P)Ummp1DRl?ZtduOp+DL8dP5=lbA7+gRGxH*o1a6~zXJ5o0fXX= z{SC2`BEAFk=lu`YEy*yR4uwBz1fh7Fem_N|JbaRy=!(}47zFoLdHPsfm_fkQ<6RjUrt&6l~N` zVbaj^Zw+SwC_*$rMo^HZ|qwQt%*VHsP95&@-Bz&NMl-V zZz^csIS`u?1hwV^VGWWGgmv8pvHcq_=(I!W91L=l&dy|PR(d)DFAW&r_ukxvf?8)3tQxPpIn0YnwN#cdDo5 z$&_yJYuuKWvTqtN{QB?c2fxS374G}kgF$!0md+oZJHNZ-|6pRf>v1dS80gZcQ;=bB zf0Mr#QyJLgiZZFc~hN|JRh4jb=o&I{eeyW_(>~aQ$Le8 z)hWrtwP{mld{fgO*wiaeS_zwab>38`BuAj1VtI9MBO zglOL2lpxavBiG(^@@m-NJBtnWYI5^Q-r$rb(*`5s-f;42*x=iX4fbksEh=wtN|tGZ zk$0~GzV2R2o>#C|1gs&I+jN|j68@J&sBU{i%l>{r633YXZeRJp`czNzUCY^rdH{YuzW z;S#%*DwlZLH#Pl%O%*P&UkRHkTw=FUG<|p`vi~tH~$b^RzIna_Ne^>oVR8`QejS!v_Ckw82nYd_|vQ^Y4mP!2tiz$*W<5e>~b?sL9*! za(7Q{idAF?RC||JT9$j4R$7&NmsVPry?bJtHso|#9s-k6GX&ms!aBNB`l~A#0*y|& zN2c;I4S}dc)ln6#hOJdcRsCw^QPs4{yhktuK3EI^S`8cgqhbj3tH}p)a(DNu$PlP< zmsVPqdzV&Pm3x;~T9>_hVw*PPTzMV>lTtGT-g&}0=%e=+vp}OG&jRM8oXYw%1i~Ry z$GNl`wpJbI_N$f0xzj5B5ct5TUGr+#;2#!4pjVSG9p&!sSCJu5&CImYvfR70(yH9M zw9>ll-4oliAroO90+UiR1m1DNI_RVK6+@uWDU))tThkB-=T@D0pw+Oo>dZsGT6yMS zT4mn1m<8Tn3;|jV8~lS}2=uGTCscBG_p8VdsAgtbX<6=FT4`18U0P{f_U?&o+K`Db z4}nRk83J!VVIB0*O~nvsbmRtwJPS-Vcp3uXsH<~9v>LWnoeSz$E6)W@tMo(QeWP~G zt6_t`Ukrg>P2OCaySraShCnql(@M*7@6t-Ea_`bg>#}!GY}1Aqt2_iIrDh1c?SysE zNAE3$K%-O6%hTb>Gz8*Er#d@Ft6^)^*|~nT^6cES%Dite3*1x;0a^_k{GY`T=vR{u z_T=vFSCJu5&CImYvfR70(yH9Mw9>ll-4oliAroO90+UiR1m1eWI_RVK6holVk$dX% zEHE85PD3D$K&$hmv>LWnoiFWIE66?3qjwiWpwTHy^K_VQXYcfHIn|R# zimf*9lQnr`->2E3?0xz}*|no)HR};q&Hb{JGm?X*Et~FJO7{(aY`@}i{A2qSSMpgZ#^zZVzhpjeu-%@V1&3iVlCf!$+zhcE@IjD*iSLL88 zR$P}sb+g*IAy?D#+-Hh0`l>7O(+L6_efoFVeYV=%eQRa%=G6wtTdY_oZ?R&Xyv2%j z@)j%B$!jad=&O=_ci&o>ym_@j@)j%B$y=;gCvUN0oxH`0b@JMZ zG5V_Hoz}6@r+=3>BiU+m_buhjLf*4^HR-;p{1q!M%RyDFxGD!#vEsT6s+-lu4Y`FU zk3Lh3(RaR>`=&E8Hv07Mvioecx%<}2*Os~tdrMPjL}ym z@3fAMKK;AAdCgXvyKgDyZ}Ohat4a4&<*!(ASq`dV#Z@_|iWS#oP~EIHZpi&cdGwiL zjJ|X8BNUtGE*)Kz4?gW&+JETuD9qCa4CfJ_Ge2I@#>qp^@ooY?i ztP$k?Xnt`>6D95L`|kiLa!$V@@|*#K+*i}@wYc_GWz%M4`N6K~HQ(Os81$NNZ?;Un zy_wo4Plf8Im^eRVTN8sG=ZCSBAF^DYX;r=E*-CH2#GuzaTiG&swzA*9_Ip+E{v!y* z&!8#6Bju<&9@q3u9p0!T@P}#yxgV$fD{>MgFE2`B`zH3oHGin)!G0LxT;0*1yc3Z<~pHL#5jdhw|(9AGpV0h_ z5rp1azZ)WQ@tZm7@W#FCRPvr92+8|q$thCqL{6|%}n@=eD_RdWZlFfG%J18F$Ns`z-`l#!t zk02yJH}~Zfx%iD7g-%w%2C(@DtW&V zgyg4Z$thA!i{w_y9#F~Vv(xP!SWZuLH=mvEVEfr=2k2ydX7~YldkWFY<{Qynq+Ih% ztwblQ9`?X$>dObzy9Xyp zaw}!`sN|UuL@OVXC6QVyc~O2h?IKe*{dGEDHee9^4}FdHIC=YGR}-epx0l^CU$c$Q z7X-EDYqkxNGyAD=hZnbWviPb2gWT8U#v!i#Fh;W(9o=79>gnMA+ENc+(5c#|yW=Yc z4DI`xQg0<6*hrnXyQkkArRt1+1%et?XG86)1^vfLgm&K3bK@okxi8C&1CuwLq#rBG zwe!ebTNAYN$Xz>QcWukH^T^EwL;J|hITJV6CCC1@e1K{DqLt}Kj35*r*C$6rF8*PD zFdtp0;L7fSzP@x;mG}0j>PIToi9+>Ol`5!wmpEP`5UTszdlyyp zHbV;4k1bTESb1|Ib*g-%MmkmZ`ol&Lnvda5waCTaaZ>=KQ&scULkiJ5azj0~ePf&c zd=TjvRc+puMHH&dmwtP?`0k=L=onSK)sRB<4nvVBzM;}nx7(r-0 zsPEK>lm}3|y$>L}X~*WuTMj8iZ{Ig`j+M7Fc6)y!^7%;}QjZ=%Xg(n~bQ_WKD%;%9 zz3W|*_S3XMr4Xh4G*jMB@e_1EeN3@UbdJtXw;TNYrM$YV{P`;Ss1ZaH z^HuZTh7_W=C>n~+S;|X&QbV_HxW)z)`2zHfLTHjN2q?ZFOJ0_ZO@|YoJA#lroqzil zBIRY#N%H)j42nr|a|9vzg;{cnlsf>EEOmaDbki0re zPLc8*jwFd=fBoTfo(6kBAtdQMO~A#kWXXfw>r8TO1R;4Qw{nV-}@PlllL5TW(&(@ z1WbeRO*MkrJNvU27A1G($5&ucLR@T3-m6i9rQGLTf|VT4rgj}#yIxx(wCjzzT@ody zmXg@MiT!SkAok`gCQV705SuMryjwyMD^E)d$Tm0TVv+qIJK zdX(*29j&T%9ekl4H2iFC7ZBR@-*dYJ$ql0E*CS$0uEvyLDOX>*X#>Ax_xyEwO7W`) z3=R1DJ}o`2{o1JyvV$GF$Uuh$h?yAl=&-;U9~K<$$YH_Zjdr2tUj0ltLnz*_|H%R6 z@=*7aC$KMV!I?I?ZV?QEblt)kU$>Z+@7ODCUs`Mn40=DcXMynG3r*179btvaRJHvLUV8>2r{MnE~^ly5@Hpj{dig+n52KnKIUHtZQhv(E< zzhjJ{`@TM{n`pT-F%Z_7_3dK};hRRnOL@+1AgnXs+r}8e?;Q!R_}e(nEH6eWgiF5eeCGW zG-stgo^jd7fu)c8gxis$?wDNpIz~W<@^uV{avg&vSCRC|^_c?(!LQ)SP~+sq)LG9b z*Y6oH=)JtqlQ=mYpMP>pt`8YOC~ncTg`Yf4uJ10QVsfSP0f&g1ASCI0KtQpBeJd{< zN|;ZsbYLX&l0it)fl)v{FjC-?D__BwBmp7GS1=sP6%3wSr6Gqtx&G;pLiDfGg4*CQBUdHRo|T^R})^Br`>pRHKdbk>f>tzmwg;K_pu|LTvH#L;Y<*SeZA<9=F9m-WmnhZtKC)Y0>FbIA* zPlg&NZ>P_CKDoYRz@Ya7g&rnXI&*P|hR5Xk;G#b!2*nFLxmx7nT}4z(uInQR$p;pa zlXHCoMO`?QjrrudHG+`bB}tEzhhqDEJprFw`TAo(Nb>bZhjRUqCs%1@Os;=2q!9h9 zG`U)=T)Lvf-^Fi_$u;HYjG>$7K#$J(>5)3Qru>{Sg!3F|!poeW9;uUS%Fh`?IOS*H zJO?_`$@R^np3=$nU1@T)7O%_4si}{zHKdbk>f;%geH=LVu_K*aQyj~(gc zn)-OgWgiF5ee6gl*VM-|hH&cRz|zOv%(aix0zMPcy=lQ9N%y8X<9pMlf z=)Iz!2|Z43>g*N=GetI^jW%3 z$MEkOW9WXMPyZ%b-YwRp|BQ4deCHTL`28c{rQ9kv5Z0NHj)>>&>Rl;x)}g_CL_8y% z3CRt%7%e8p-C%Zu`xpGsQ)j}|$1^VbIB@P`M>-RxKAv&e$ANPnJJOjj_3?}$occI$ z?qf$f6Q(|%aoNX#rH^SQ6sztt;j;$}l3&F$m&Uc<2gSLqeH^g*OxS!3r(@9jp+XOy zkUZL?7c(JG2!2dG&8<8kIFt#YpJU>f8fS1%k02WPV47n*QqIEnl5tE8$>!4_)6WhF z$>!4_9h4XI6p}s@(rH|om!z8kAxWok1By-JnNXr)Cj9duh3Mb*o=`;*E2r{#UJ=#V z6Q*SHgV439v3bJs=$uR*sWV|prWvEbDVYN2WOAf4VM?YMLpV=Z*5Xy3usl*{Lb7f$ z)mfx^LbAsVX6q(1p+)LUnEH6eXmRS}z`2hd=}egVc*bQP2hM%$NN2*-$1^VbIB@P` zM>-RxKAtgzQy&MGKJF53`=Vsj&ZV8h=_Dx~gv}75bPyJh55fQ>$yf3r2Fwd|S5`wI zN_S<=RHn*q%HF;xV`2NeUUPf-fI;z<{S@nQa_0j5aMja`5lFMYp9l6u zwV@C_*B8~9%AF2fsSctUbaqIg`UL~krQD8Ct7;N8AHVE=iDuE~4^&rj(?YGPd30t- z(bk6yRM+L;vY+J+kkSWwefR|f2E~`sEN5~25X`nM*WL6O+VugUNO$){q&zUxk0y)K zeRMQ}kbEMICXZbFa~-8Si0--chUosGdoBaYJ(p!Gb??x9j2@-49NotlQ0`+aC3Tj2 z`#MTz zIl3X*8**lv-sy(ufO3kVY^Ba}H;y1$c~rOZYJPIix23b(4YlOisg;keCC|#u41JFK zfYtQ*>>))vHz>y=RvuBVRW*Y?Ye=EGK2TjQetQt7N%WaR3f0v>b;Y-Wc&9EkkN(|2 zRTF7BP+jMzxVE>?VVc`MHx(pyH3895b~O&g)%2a}Kz9|Fj+sJ~OGnUDI-KaP;?glw zsB-BDno5Tg-BnyVW(rj<9YLjZ)IFfP>hzF8^})2OTorc!)~Y(|of=Z8e%?TJL+*pB zRdwRq7*eP{XrOwE9|(wHrE}lBSocaXS62h7@f*J5W8dc>N$wXTar< zLiOr_>eX`Bb=|Kz39bz(RL=}l&&plW-MNnFS95!}8e{0*p+7m>M9cjq17XdtTaGb= zZ$A=V%C**ku%_6@j4_07Hxgd8Uv{4gwkL{Bh_@IC>x_8SNO*nmeN>>P8S&hv9*470 z3y9XTQFACptse{ybV~f3A%*BE8VnIDw>H$hO8ne`>S=jaydDEOB|czC(F30|P(34$IM=E=C4SnFLiMu;s#nYFdTUjk z51lVqd%&Rg!BTG}pV+GOv=`qsV9@(OskbgC!YVzTrQSJU(0hNW zw;^Z2Dm|T_-Z5a%dta${N=|`QdO9<`eZZi1Q>k~FFY3v&&=@Z|C%vuI(}UFamU?I8 z;y^{Qd4R*c!^lCcb zbtuOy{b9KQ&5<7+LHy{SswJ0lz*0(Tn*7KJLh>hT$(0_ zM-Y;)tR>H+D=RjLG;w~Qmb`j85%Z(9Y*+WlJ!tutp-DVrP)&tb%Btqhx%%L zFw|F?J@rr*2+4Y=uQmoleWlq`4|Rc%tcUvQ)L^KuG<)iyE)bISP+y%M4E2>}Pd(HH zLb4v}t22Y4zS8Wehq^#W)x3jTr^~g4?D(8Pj~$<}B-cQPsRkOTYhXY~at(BtYM_C-1_p#A*FcA<1{$bqU_eN64Rn}l zpnRY8mMbvKuB^8beL+O0&|dD0|P>`9_r#C+3s0XT>}F`vL5Q|whX5R&y!7YE5lHWsDX!*(wq zB1N(-i_+|2yB83W^-vcF z$#&18G<&|ctRm(hUqKGiBl%$uYo$3zwtE_74zeEV;vnmxZVs{@>gFKpp)L;cK~z;& zje}&z=L|i`j?Y+fe7aoon;oAs=&|E7mK>ih*W_l$=L~x6_>3jTr^_|7+3`7p9y>l` z$?@rOO>1_1&Y;JR&scJNx?FRb9iKDkvEwtA9G@=Ngl5O*40`PNj3vjX%Qc(X@i~JY zJ3eE{@#%6+Wp;edpvR8S7(W8Gt;;o!-&BruJrH~+IY^6>i;um7)aB+NxdsMA3%Le5 zOf}FzT>}F`k|zd-X<{%?*T8^~KYgjl3W8F zrW&Zg93$oWV>fknmugy z0z$GL>f#{T?pc&(58J(fkgSKgI7qg87Nyz4b}t|#>!B_VlI@;FY4)()3kb=2sEdPS zyJu0FJ#6;^Lb4v};vm`XS(IiE+r5C0tcSWdNP4!{3XhmXJQMP=vWl34{2_9Xw!O3b zkeo@HgRF8j?WqN*zp-lj!&0sDzoEr20eCs#>DaU z=OA^t=J6W`40`V%2WfHgP(be>b-6i6u7Lre$TiSms(}XT8W<3gJTW*-6N7=e1_p#A zPYe!I4Kz^Kz<`kC8t5?9Km&CR3|whX5R&y!7YE69&!RMY*zN^{WIfcy zL9*SmD9s+WdjTO?4|Q>nZ1*fmvxn_oKuFd@T^uCaJ&V%pVY?R)lJ!s*2g!ENqBMKh z?gfNoJ=DcP(mN5hElRWJrDYW{2l<2KAU%>_8f%i~AnT!S4zeEV;vnmxZVs{@>gFKp zp)L;cELGKw#zC^sx*^xi@0a&wSe z0|P>lYoNna0}a$QFd!s(VsMxy1_N~s3KYgjl3W8FrW$CVu7Lp|$u-bns(}XT8W<3gTmv1Z8fc)d zfdL`OHPB(IfeOq)at#a!$$F@ZgX9`$QJOtm0|P>`9_r#C+3s1CW)IuFfRL<*x;RL- zdlseH!*(wqB$oWV>fknmugy0z$GL>f#{T?pc&(58J(f zkgSKgI7qg87Nyz4b}t|#>!B_VlI@;FY4)()3kb=2sEdQ7Zv<>xlxENOlvTtWzk4w4<8GxQ`oK4Z!8>2l3) zc6`pD$Bxffa(ud6lbao%Gw8A7GnO2mF4xRv$L9=s?D&i&$EV9Rt=aK8gC09RW6AO9 za?NRWe9oZ9j?Y+fe7al{njN1r=&|E7mK>ih*KB6T=L~x6_>3jTr^_{!+3`7p9y>l` z;`n+8smnEwUq4{bdmA}Oi<2+Y^bS&&n}g&U7!ZnF10ALsXrQiv0U^l~gTpj27^rJt zKuGe$;4sxd19c4y2uZGi4pR*@P}jhKkmMTZFx5Z6P!|WucF&?Td)V#;gk(L`#X+*&vnb6TwtE2~Sr2t_kZkuXO0$RUUO-6J zLtPvs+dYfY>|whX5R&y!7YE69&!RMY*zN^{WIfcyL9*SmD9s+WdjTO?4|Q>nZ1*fm zvxn_oKuFd@T^uBR2xZ%%G<#lBRuOZMKR^!BBl-3JCTR|`9_r>G>!B_VvL5Q@AnT!S z4zeEV;vmmZRXyD}NOpYA(39-=j3vjX%Qe5*@i~JYJ3eE{@#%6+ZgzampvR8SSaN*2 zTr-;;pEKyO<1>~VpDx$5X2<6YdhGa&CC8`BHK*C}IfEWMK4Z!8>2ghIc6`pD$Bxff za(ud6vzZ;AGw8A7GnO2mF4t6M$L9=s?D&j{hprPTug=J4jt_ z4w7qNKqztzbeL+Ofw~3;gd|T44%5V7pss-dA;}Yi!&Cze)HN_5B)JAUOf}FzT>}F` zl53#DR09pvH83C~xdu8+HPAp^0|P>mYoNna0}a$QFd!tk20BbN&_G=S145E(punTmvmivxjS7KuFd@T^uCaJ&V%pVY?R)lJ!s* z2g!ENqBMKh?gfNoJ=DcPvfZ;N%^tRU0U=orb#ahv_bf`YhwWZKNY+DL93ih*PLd@=L~x6_>3jTr^_{=+3`7p9y>l`$?@rO&1QCd&Y;JR&scJNx?EG49iKDk zvEwr)j<0u+x?J;^J}bZN40>-N2Wf2aILdupZVr-bU_dBx4Rn}lpn}F` zl53#DR09pvH83C~xdu8+HPAp^0|P>mYoNna0}a$QFd!tk20BbNP=Pr}u7Lp|Sr2t_ zkX!>TO0$P+U_eOLLtPvs+dYfY>|whX5R&y!7YE69&!RMY*zN^{WIfcyL9*SmD9s+W zdjTO?4|Q>nZ1*fmvxn_oKuFd@T^uCaJ&V%pVY?R)lJ!s*2g!ENqBMKh?gfNoJ=DcP zvfZ;N%^tRU0U=orb#ahv_bf`Y=f!0eF$ej5f#_zQN_KwagglzoS`S#@fk~wPnTG zL!ZUE+#Dp=z<^NX8t5?9Km&CR3B-cQPsRkOTYhXY~at(BtYM_C-1_p#A z*FcA<1{$bqU_eN64Rn}lpaOG{Tmu6_vL5Q$oWV>fknmugy0z$GL>f#{T?pc&(&x^_` zVh-|q$w7Lgynnr_J?0?mp>7Vc9_r#C>!EHAvL5Q@AnTzn4swI4>eo zEIB@1uKCT5&l&XC@fk~wPnTfs@L=Mv87LTDU*5&3PxdsM=BG*8NsRkOTYhXY~^2FdU zO$-L=8W<3gJTW*-HPAp^0|P>mYoNna0}a$QFd!tk20BbN&_G=S145E(pu}F`l53#DR09>5gX9_*5R&y! z7YE5T(4sVZxCRDnZ1*fmvxn_oKuFd@T^uCaJ&V%p zVY?R)lJ!s*2g!ENqBMKh?gfNoJ=DcPvfZ;N%^tRU0U=orb#ahv_bf`YhwWZKNY+DL z93nJk*!^x^#W-Ie&8_Ao`NOx#2KE1zvozZ$@A<#U+c%4a}xoL|!t5I>w>)8a6_rp18f_$z2Q1cW3%x9c!H zw`)LioFC)}2uXgB!(n=m!+_>E-`N)sl6+^M!*pk#0nKr~)Ef|ze5u!Ay3}hxbDYop z1%xD@`*WDi{Ta|4XEPWOl57SYiW%&`#bv+@=Cg(rqF+hh;)+=L4q&aS8T8B{h3Z!f zRG0D*z*{T{h|@fJ#*jkwxdYYp#cc<1no3U}QmB5}Ky_nrn?amr z)6<3&s?Qmyo?6^`5T^U&tfbf9{6af>?6?B^g0grcp3ED!@a$byyT)*uUnLUoV@;z0*l zV4t-aWPyFxW{?G9LkC%4U$z-!fqmL$kOksI2U%brw;5!Cecfh|1!6`ASzzC{8DxQd z;AW5o;ztKrV4t`dWPyF-W{?G9Ne5YAU%44%fqmv?kOksO`Gd`t1@@tvK^EATZU$K( z#&nbgnp;mAD;1?X3cdz;Svy%e8R<{oNyu6r`s}znyP3}h^8v)G*?k0 zgDM&ns%idkn&%HAnnY>-2ny9Se>lxm)QIL$s-i)mnyRSNTt$s&Dy1qK6soC;I?Ywo zh-Oo&qCugWs;JXkMU7}er79W}s;P=P%~jNh=2WVpL7|$esMB0Ujc8h>DjF23sfs$y zRn*9!iUx&hs-jMF6;)ymHC54|P#t7}IMh@{ElzW5kOk&Y2U#EvHF-%>)!Z6nfjQJc z7KlSlUeZ)Gw+2~Y4t0#VXm$W#|t$$zFA3J&a zbatp7Dy|mxK^B-p9b|zx)Ik=QLmgy+In+TGh(o;%J5+t6d;RUmr9<>;vXch0 zom8N6K(dn#A(`x?!E7fL=me1Lq(ew1J83Z6Nd=ny$xb?iWU`Y6vz=6+sh{kmLr5k& zX)xPK1)BHCPCA5SvXch0om8MnpX{VVNG3aJFxyE5n(@g_I)r4hlLoV$RG{ge?4(0T zCOc^`UB9!@thvq?H3CACFKRfHiyD;ax-E04sfq@LXsV)4a}_l*sG>okn&uCudHygm zsG>okn&uCuxr!PYRMDVNO;yxsuA)W;RWvA6Qx$cZtEiDd6%7j2R7IWUDr#gS)mvow|sF6Vx4GPs%MV;mB>>s-i)mI>-WX zsHuutoaR=lqCufL$O3Vw$xB+C=2r5OL7_Ux0&%FxOIn=fR`QZTp*qL{aj3~lTAb!q z@{&QJI>-WXsL4xOoaR>Yl0l(5$O3Vw$xB+C=2r5OL7_Ux0&%FxOIn=fR`QZTp*qL{ zaj3~lTAb!q@{&QJI>-WXsL4xOoaWXS*Y(F7>eJYvdhB9R$C*PNWPv%okn&uCudHygmsG>okn&uCuxr!PYRMDVNO;yxsuA)W; zRWvA6Qx$cZtEiDd6%7j2R7IWUDr#gS4 z6?K}csF6Vx4GPs%MV;mB>>s-i)mI>-WXsHuutoaR=lqCufL$O3Vw$xB+C=2r5O zL7_Ux0&%FxOIn=fR`QZTp*qL{aj3~lTAb!q@{&QJI>-WXsL4xOoaR>Yl0l(5$O3Vw z$xB+C=2r5OL7_Ux0&%FxOIn=fR`QZTp*qL{aj3~lTAb!q@{&QJI>-WXsL4xOoaWXO z>-u93^{MPoJ$CVtI?f#GAPdZ)4zfTT>L3fup$@XZ9O@to#G&4bp6*!NUmb0qSA+VV z0YjgDh@SkgI2mpIlO(!a^Pj(S?hJbTopWO{&MH04eE#aC#_0X0{MAciGQui7&3XO? zlE$o0_aN~%kc_2oAn9_=c77wiGyGnDBfhcpMtohadCu=gbp}0tKdQ0xepFqq8P0FZ zat1wqTb8l(wk%z)xy|oRa0WeocY?9>?gU+~S5R#fbp74ry4)-%-&7qCihLK0!*myn0nHJ<3nm~W`Lcz>blJjyrU@Ts281LZXF5#B znFcgd_&75lB>6bgVLHwxhqk-i@4;x9k1melO2hq_&%uZOyr%LmnxnmzSUx6AYO zP#0(Uz*8j?WqN*zp-lj!&0sDzoEr20eCs#?reJbh+j+zdOMh z^!VKg#^l`zy@S-{<{-HS281HlK!>RY8qgf!i6I~)d17#wCI$m_4GaiLo){da8fc)d zfdL`OHPB(Ifd=Xt7!ZKYgjl3W8FrW$CVu7Lp|$u-bns(}j3LDoav9ArJz#X)inG)c`Ku7Ls3%6h1a zgJipBQJOt$_X0w)9_r#C+3s1CW)IuFfRL<*x;RL-dlseH!*(wqB$oWV>fknmugy0z$GL>f#{T?pc&(58J(fkgSKgI7qg87Nyz4b}t|#>!B_V zlAkiSD9xU91#NO!b}BMmK{J@2GM|7s$a<)ogRF~VpDx$@X2<6YdhGa&CC8`BHM!aGIfEWMK4Z!8>2l3%c6`pD$Bxff za(ud6)0!QhGw8A7GnO2mF4vr9$L9=s?D&i&$EV9Rq1o{{gC09RW6AO9a?NITe9oZ9 zj?Y+fe7amynH`@q=&|E7mfn`7%QcVrZCTEs$8XCrCU48?9i%Qd2gx-sAQZUKYgjl3W8FrW$CVu7Lp|$u-bns(}XT8W<3g zTmv1Z8fc)dfdL`OHPB(Ifd=Xt7!Z$oWV>fk znmugy0z$GL>f#{T?pc&(58J(fkgSKgI7oh}kVR?s@cXj@LXzK~ih*PLd@=L~x6_>3jT zr^_{=+3`7p9y>l`$?@rO&1QCd&Y;JR&scJNx?EG49iKDkvEwtA-jAxwHIMoIsLr6r z??*Kz??>$&q%JoH$u%$_6uAaEOf}FzT>}F`k|zd-X<{%?*T8^~KYgjl3W8FrW&Zg93$oWV>fknmugy0z$GL>f#{T?pc&(58J(fkgSKgI7qg87Nyz4b}t|# z>!B_VlI@;FY4)()3kb=2sEdPSyJu0FJ#6;^Lb4v};vm`XS(IiE+r5C0tcSWdNPb2l3)c6`pD$Bxffa(ud6lbao%Gw8A7GnO2mF4xRv$L9=s?D&i&$EV9R zt=aK8gC09RW6AO9a?NRWe9oZ9j?Y+fe7al{njN1r=&|E7mK>ih*KB6T=L~x6_>3jT zr^_{!+3`7p9y>l`>5cfhT=SUUi0=$~{6>6Z@<#mLLF#gIkX!=;LXm5r!&Cze)HN_5 zBza4_zKKH) z8T8ok8B2~&muqIT<8uZ*c6`Q?{sxjU z`36$&Aa%JpNUnhap~yARVXA=!>KYgjk~}duOcR5Fx&{V>Bu@+uQw=mw*T8^~<{-HS283ii)Wtz^4YVlD9|whX5R&y!7YE69&!RMY*zN^{WIfcyLGs6tEK0NI zyUQwK4w65H8T8ok8B2~&muqIT<8uZ*c6`Q?tdW{_3SM`RZlwAa%JpNUnhap~yARVXA=!>KYgjk~}du zOcR5Fx&{V>Bu@+uQw=mw*T8^~<{-HS283ii z)Wtz^4YVlD9|whX5R&y! z7YE69&!RMY*zN^{WIfcyLGrgRElRWJ#bp&S2g%>Q^vLw>O9kd2>!EHAvL5Q~VpDx#gX2<6Y zdhGa&CC8`BHJjP-IfEWMK4Z!8>2ghFc6`pD$Bxff`p&s7*F5I$oI8Uaf9KqoeCND( zkh}F`k|zd-sRkOTYhXY~at(BtYM_C- z1_p#A*FcA<1{$bqU_eN64Rn}lpnRY8mMbvKuB^8beL+Ofw~3;ge2EM zhp7e{sB2(ANOBEym};N`bC6sE146PM>f#`|23nM657)qekgSKgI7qg87Nyz4b}t|# z>!B_VlI@;FY4)()3kb=2sEdPSyJu0FJ#6;^Lb4v};vm`XS(IiE+r5C0tcSWdNVahMr`{XDm5B zU9S1fj?WqN*zp-lj!&0sa-_?$tH9iOq}_;k6ZH9J0M&|}AE zEIB@1t~t$)&l&XC@fk~wPnT;#v*U9HJ$8J?lH=3mn$7I^oI#HrpRwflbh)N7J3eR7 zW5;Jq9AE#wPhGBg{5t~%y*JVOO)YNm7|MNJZVr-bU_dBx4Rn}lpn}F` zl53#DR09pvH83C~xdu8+HPAp^0|P>mYoNna0}a$QFd!tk20BbNP=Pr}u7Lp|Sr2t_ zkX!>TO0$P+U_eOLLtPvs+dYfY>|whX5R&y!7YE69&!RMY*zN^{WIfcyL9*SmD9s+W zdjTO?4|Q>nZ1*fmvxn_oKuFd@T^uCaJ&V%pVY?R)lJ!s*2g!ENqBMKh?gfNoJ=DcP zvfZ;N%^tRU0U=orb#aiNT^0&4iI<=Lti=mQ5Rxyu>28b5i^WGR7I)k{cj;)`ws&^% zS!I+t$a<)ogRFc6kagglzoZ)A)<1>~VpDx$@X2<6Y zdhGa&CC8`BHM!aGIfEWMK4Z!8>2l3%c6`pD$Bxffa(ud6)0!QhGw8A7GnO2mF4vr9 z$L9=s?D&i&$EV9Rq1o{{gC09RW6AO9a?NITe9oZ9j?Y+fe7amynH`@q=&|E7CXTOn zkh)y+__YHDy*HABw7A6)Ww9KYgjl3W8FrW$CVu7Lp|$u-bns(}XT8W<3gTmv1Z8fc)dfdL`OHPB(Ifd=Xt z7!Z$oWV>fknmugy0z$GL>f#{T?pc&(58J(f zkgSKgI7qg87Nyzqg0hO(ImnligY?M7XO>asAnT!S4zeEV;vnmxZVs{@>gFKpp)L-R zhx$@qe6Am*;cspPL|^hZHyoyKZWz!UPcLEC?Jdg>5qM;N3A4SoeKPp`Rz8c;Z`1Hw z`5dOV@)^(^e+BKkfcWA3nihxYH7y1-$N9P4fRNtYTKF=Idh<*is)5>EPw;RN12BoisTb!m)`dYZt{Izf+S}4;O9)qH- z=?jle^A{eCXdb0++XaPc`nH|Z{B1iUno8-bUO}OnzUt*Pf7Q!~W>fmAS5T;?uX;Jn z-?lTN36;KW7Zj@L+jdU#x9yB*PNi?#1%+z*ww=@bZ95~HR_WVzL7|$yZRa$9+s=q) zR{FMGP^hMF+d0kOwo_vEbC3l>p*qL{F`!q~xn+!|zoecEP_1>!{0x9v<-b8C7wMg~wVsL4(`#P3gb(qOie3Um%gcG4jv zlbtk}?W6*o0Fs?_2+3q84Q4y3K(jyDNr#Y3cG6(BlL|ETlbv)3$z&%DW;>}s^FG;0 zhmcHm(qOie3N-1HopcDvWG4+~JE=f3KG{i!kW6;cV78MAG~JV(bO_00Ck>|ScS{AD z>wHloASC&shC{iiK@L?V&7r0$8Wf_biaO0z)X1QU28C*xKb+?I!^ohD28C*xKb+<& zYGhDFgF-b`QKz|z8W~j4pioU!)M>7wMg~Td9f$ zh3X&+#GxiHX>poc$x8->>L3fmp(ZbBahhAnO9qANAPdByCNF7mnp??B28HS%3&f!& zFKKa_TggiXh3X&+#GxiHX>poc$x8->>L3fmp(ZbBahhAnO9qANAPdByCNF7mnp??B z28HS%3&f!=>I!4`hdyygq54$5N@v?VyZA^QXAX6c1?Er(Ss)H|kOk&Y2U%bab&v(( zP;bQ!RbLFR4mH_Hhxq-;P8!U1Qi09^$xb?iWU`Y6vz=6+6F{<)4k4NBq`_<_6=?P+ zJLwRT$xa%~c2a?+ezKDeA(`x?!E7fLXx=9~=@631P8!U1Qh_FYvXc%Wne3#&Y$p|H z#wR=J5R%DG8q9W5fu?)1lMW%7?4-eTkIYhm)=|DkCLkpF9vO#nj|@3fl{AN%s%TJ% zrYh<*S5YH_DjF23Y5s7U=MN);DjF23Y5s7UtEiDd6%7j2R7IWUDr#gS46?K}csF6Vx4GPs%MV;mL3fmp(ZbBahhAnO9qANAPdBy zCNF7mnp??B28HS%3&f!&FKKa_TggiXh3X&+#GxiHX>poc$x8->>L3fmp(ZbBahhAn zO9qANAPdByCNF7mnp??B28HS%3&f!&FKKa_TZ1gHtNep35Qmz)q^W9dJ)y2Yb_42D z*r9st;{U7T%%Kjlz#Qrz3&f!gvcMebAPdZ)4zfTT>MiG|I}R@I9Bu9|k2Wt~dv3bH z^Vb{8L?V=f*X?oWDOG+@wsa@IrK;{VKh z&D(um)$UaiXx;CokF$r>Za2p){!8A1D6K8-TP|NNKB-*3THNQRdzkv2T>aqk*7O5k zQzNwL^*7zsqHf{XuS`L`luOx9ym_dJ{MIH!p47sQcyH#u%b6%GO<+5N=)mjP3ioB76uxmvJDU@{b^DXviQpWmrKuE=YL@Zp!3k1?qa{5%SNpbMJBthxk4F z*{6+{J3Bk=L)D)CnY8bC42L$kxi((TC4Q21%iYl}JFA1u?Q8b&uMCJu{k6xg0sS}j zlTxoCPbJ5g+F5N*Ue}D)H6?-KrFkUGF^dn+JHVG7Ts(i}U~1;>2tw~*9x7d=%pp-} z8gTe9YvE6iF=YSioM05axF$De>(aUX%Trq)GlCHP;@s9La`7)!)a5N5Ur!!ENItWY zlt?*lj(X@nVC&K~s`$$T2EpH)>tP$WIGl6HmtWeG1Awi=&12v4)B^{Hd%BxmFkldTY3>2UiNlEL*n8mI=5^C=zg>-> zc9(fNZldITcM`k2r^EeEYXq^s&SDa^_}U`E2G2*=2x7M_#AM(!C%~h@yIZy=9-a5Z zxd}q>33*RUaPdz$>fi=Hf@+=x_3bHyt(KwoUjoV+`TfS1q2R<#0SKpl@?N zDtX2TLiD*jl2%7kq@)2&6RV@$b9Qw9!vhAvSLKm}IJx7k%j~^#at7$!g$v80GmCGp z(bY$17vI>o-J|rv=68-D+VPV9hef0q@2;;L=&9rH7(qyWcP+VGG=~%DewSQLY4`25 zq&^(>;#zVg=eNpM>Ph2o8$q=4MYZI5dj#LMQqLHFYc07k+0+--k{gRpt)ujG@wbd1 zTKR%n^3>u}>L@)|{QMDw;ZyrHNerGLtW^w;IO3xC1(+EQHJ8H?R zjd*$QLpMnZljHeI7p|Ps zbFi-;V<+3epq3m&}7OZ-ylTu$X6&MKi&d{t<48iUtR%7{ipeWDk2tl z?n}{u%wPxSryM_15(qt{_w^bh?{DfRS1gsEsK=eJ9x$l=d_TE*++w?*L9zV&p&k$IK9d&8-C;Y;P@a0PmBqioz@Ya-Sr2h?6GdmLroE^;W2+?4+RY>R-1g#wxo`Xg%G+xMt($VU z;S@@9amj~?9J6`HH5Vs|Lh`EIaE+B&tedH(J-c&pYwwC4MSbrWL-!T=R~%}z+}+Ym zuhZDPcwUV^-c0z!V>qOrn)jR>-RrTzM|iX17Y=l4{XmVN_=nuDQ1D-hW3x= zu9Eg4y1i4*H;c-uDf%#;FU7J?5TcLa`O@Ix@AB6COv>NZ2y*|N_ZiNjJim|FloNmW z4}<=1Y6P)=>cuQ-@y-1R#NrEA4s~>X&45AfdHv}0I61M{O>S7et)~!{C4tt}{p6-G zi`Vr#@Nj?UVCzW#kDvPdF^1-M^*zx5Dp zwid#d*9c;-EX20Aq$9GJRn?c&2x31_h)GRdoA+KccyC{uc7DJhw=?hAHcqlJtYIwQ zxv;B(&BcTsLb17+&_St?Su%XYpN$|S|7Om#ker;v*A@MAsAm{oSR=^2tmwkSO?h!y zOx>{+_a$cr3~~=Cx)9E!ah{>KdtT3bUtj2fLGMw8o-jG}mfN>^sOk2Q0fXLFp(k;2 z$$`e-Y}S9cMo@bdcb;AW`MjGx*-rI;g8ta^a^dO1&h-JT2X5){$ZqZ@v%>P_LH9VtjA7Ud+3R4VQV*zw&q%kKj*QDTWSu@>xtLqxLh0S z5Za%`1J~f>csp zA%*OpRLw=KykV^vT$gq3Y3|u-ws&Y3 zk&D+>KkbHd*QsXXE@#b&LiG2m9}X(Fu+k)nhU!gCzfvRU{T5G>Q`F*0)r(iOfz1)h z+(2QFdv=vlSGL+`Q9Nck4KvLm56WGv5Q^t>FHTTi7oLWXoQ*zzL5~pra7ZEg7r7TT zR&Gs5qkSTlL_avj&~0utn180UNyg>bxyp$o^&B+|Av^f2`u-9?Cx+QmFo~ zN)@qkqO0iIO}Ry2+FfPGPZX-}t5xN0%I3gm?wrlt>+C|u3#+bG4BeOIF}ymOu+*-i zxpDdOSB4a_zg0DNx`bJzfE>x;qUf4j_)U|Hv8CJ)RE?mWOZGFHub|;MXG{*;o z+cVaV){lI;Z0@q^Aw-+ItUB1(Ax>{8z zRNq>w?p~JH;-`LHKf3n9!IqB7?-*m~es>-|7A+TQ((qY7y5yIui;2W2WQ&PJsZ1n= z>cOUsg7*w5R6kU80%GNUqC!=!&FNwG2Zj`?&0SjaZb7V^3aVB0j73q9)^R=XaN1!- zK~gHUpitdEl%r)FC;!%vqOGs1dH}JDM^8&asgw^Bu{+_7B@E+IDUKW~ho z+gz)hdv=PJt1Z+C*Br|2QkM_((C?K)3fbn$xXOC$;`4d_aUyfmPYu~puA9@m6>%#$ zTpF=;c_4JeHsp-eh@FypIAW*eT*HW+k%uP9bWQENM#tmdk0AQ&U)e5LE@e6XGUc{}$!VI6FzxlGq@ zM|I?G%s7!*aTy4obix`-x%>Zkjg_3#J${Y##l25hV?%uY@fxQV_c~#X({lRmc#SiQ zdz`Sw)r-5Iu*TWN-EO+CjgfnleY#u|D|W&vOQ{Jbtg@2h^b=NDmlNYBtg<0Dik`5_ zDLGE!Rd6Ep{53}hyIWgYj~{pZDj17Tnx{YOmsVx*zf;FL_FKqaa_kz|#1G6fA#DP; zldau!f7>zlVtVe-G0c+gU3zr*FwpGUrpQ`|sU%+RhCZ zWGMMwzQxI_p~Y8?23)AgN$tS~Z|FAok0-B&4gT9`gP|rBe6T^etfyC=rvmYDC$EML z-fOhMP?IV>-k=>yz$M+~OK$oM)4$(I`ZC7HZIKa>+VZ&ni}lf#|DUz5jA%Vy+Nl4HTAS@an$Sy1kV6?(XjHJ?@rq*YA0s>gn$3k!62B z{^++()u}oq=k@cvw}0}0XQ?qh>_KIX!Q+7WJ@N7*P$*A50~< zYXpG!Dt-04I^p)%59pjM_x*HJ7t=VZ!*PSCNd zEnHPT*X#Ijg`rX$|0Y6wxYVF+J8Q~vr~us^gV{uD|1U~8l~*3yjZa)`uhF5b=W`L zgZVHYxVrj(6{>t3NYLF&f;D<|*lJ6HclKgQ@b0OC6jY45|GvFC>alw;0IvnR)nHR( zH6O3YY}UU|pN`n9CYxs0A@5Mb+&+t+NWgcwtwBEgfPNkKV>Rztbv?2?HM|JzgGs7j ztUuhpTSu;2bHXaGhQnXOchasbFnW>dWYvRC(7`v>WY20N0DV{)C}eZ0ov&$mQDqc& z=E0}vEiT{d^(sdJ1gbK$z3V2ogY_~0%Q$vmpHMP7N?%RC^&fJyh_wUw$tJRrTeN-Lz z6DaGfA&zS1)LN2Zs^yro3oCnd*lIcEJA091uA%1C>3>X;v{spcxKL={wx z2i1<(ZjU+kzP&o=l$sNE`&t0QYJ69+KqVji^#0vC?yqZ3Smo6S6>2CDcD+_P^3@0Q z>(EwB1yXfAevqPuoM#+X#b>o2bb^llV$CV2HUhGTmHEjAs>a{*z%%p)hilG9 z^)X;{?(qVjcv;WM`1zR!ouK2taIY7r7y&oG#|wPoWxhZ*{;mg}p*N_us9yCEZjVtN z*HX#(A6Kc#w4ZB_=RoVH_1NwF7f2zqgRoA0Hu?DZB z?-Tma**B^7TO*b4RMD*?SNpAz8r`_*-4BgVRXOqp9?-8tSNlnkYD4q-+^l;%^uzkl z4^x*^`yG?YODno{C9I?{O9hty&~`LxP9)9>$61L9VdLeYQAv; zx^j2)x4UC}{q>1Ex~tbRJohrDqUzD#ROLfqWbJz7(XZ=7KU#H8HPB7PIkk|RtbDnP zcidcus8tI!&$k)o!aceH^0?i7{vO?*s_H&hm1DepZ~e5-J^KQFv*qQ-p0A?|5Y--L z^j~v+wWk}k{Ua3&nBHUj=bwD3>QU@F_?quo?NOe5zD~7s$8P^%#jx+H81~s(FV%VM zaiEPJLugU?_R02ts5tL^73U$ri8s$>{c{s$TYy&DBfKRvT;L9g?ZfS5w-` z@8B~%=L{&E+?K$^bvg1Y~e!#r}=eZExZ zu}8jIb;6_fnDlC2Z_OR-o^jMm)ilgswtuwZt9{`1q&@qBey^9g90fSfW3{S1&hqX5 zSaJIMD^9QTSnbE2fAaY!p|)yOTv_?>@f|9ua+($1{p53cMdg|Qao1a@VyWydziU3I z+iF#var&;=S6%wT^N;Y!9{c)Z&s2Mh@7;AbaDUZU^S6Jj;w3*+@sdxd4tVadXPzUI z+{H~_s9M9QxZslyf9dYeQSC>da9V~TseHwsRT)3+)Pj@BzPWdd&ptfSDsO z&GmQhm}{N}BwN)mzrTYevteF*{HbSOtUBdScd*-YKqEb0>ybLu6xi49c+4m3JX&p* zcHE%=I6lo)?K;oadJMm4R_zmCzWY({nDA-{AAAiw#GP7r(;b&{-S7@A-QbQ1u3hWV zJ1;+6EuCGf*2_--t@QMh&mi4e`8$erZXbT+rChaIEAzXef{Ll-J{cBaqh|77;gQ@j9o~W9T7f{9hM8y#AxbrZeiah%* zRdFsysq<3B!&bvv-=3otPMoWn`H-Bqt@(V+U} z*{t0@scF^M(33cKxBI@n{X-RBK8G`V`bS=I-aaF#N)J@b^6j2#@WpC#eY>~X&xKUY`0dU)RS~LoX7hf# zvs!>qefDp6e-A?UnRkkn%LSkR-D|JC@{3o0`0w};nL;kjzt7599lqi`@w?Z42smR> zdBlG1)gK^1UhTlsKY0y^l{oj-oDSqX|C3+5idEqx_tCdv-_Gm)>nJC9Q?B@K2PZ_e ze*F3`U;E|DwSM{9k8%ycZ;Ui0)ium0xM-(o4Y z=IM1_edUJ$OuVgP^isv>&%g4UpS}EvkN@H~s6(mz$=avCp+XGf{sgjucRhEM`>3Zc zVn6cw>&W(1?$-Xz5AdU6mCy6^ANZo#YklDEVcuNvB+2a)vls1t_nCJM$yc}UKJiTz zpE!E*`Imq6yVqD32E80tJg`&y^`HC_8M3!l+_`xB&N!VP|9y84`Syx)%c`CG*lVwR z|L3n_!RM||^NxzMAF6itqd)l#Pd}+sqO4_ZPdFLlfAGa@GREx*&-ml5STz0UTi=K8 z-0dqBEHkg%&smnKYgu;sYqUi^Sl5ydrTj>I;QucX7V4dtupP;4W4Djke%EKjEcu}$Qev_G~5c{c4^9^{Hr zJ2g7|H*l~d&!ye5EtBWduGl^#FQlEZeUp4W?TGE)$%|=wY~L&|rERf&i+m$(jqO|I zn`ujI-zMKmn`8TS`F7eA+jq!!(#F`nQ@)!v#P(hCa#|nTcgy$Ey4b!)UP=FqZ7SbS z|Ag&(v3;NXF#RuV-!HGGzsL3i@}u;(*nUv{BYhp)56O?yUt#-U`APa3wjYt7 zra#B_@8xIdPqF<6`FZ+dZ2wVyk^TtVkIHN553&6x`DLmf?PKz*^n2L;v-~>!F18<+ z*VAuf`w96?`b}&fmfxl?Vf#t>UHWxwKPA6UpU3vo@}FrPZ2v|6E3J*~zseudXR!T@ z{4sqB+t12>r(ePL-{eo}6WD%E{wICB{PVfb%b!!TJH)h|Rnkc3zpIiFN~SAWp=7U; zOG@VJ)UOA54jlde%zLnxrdQDZcN;8bhiQu8zhFn{xbl4Ni#F!(sq**c9aJvzl9@_YDcP^&s**+e6*nnas4{a<$zdf&K|15Po;D|R_llD1ARosAJY#<@ z{Z09&bI;oUo|-+XF>WfkpkiMo!`pDS_bL2+8aksjPLMVrJMfsb?JuO}BF>h!dU&gn zZA!K)DOa*X$xbD^l87N+k{(KWD(R)9w~{_e`hv75$Kr+b)7}0`1}GV*WDv*^yv5h-FQ#rEXh*l7k`YQq zDVd^Vnvw-d7AaYyWSx?7B|DWIR&rFyIgr=z7GHBO=SVW-k}gWRDVeNf zs*?Fi7AjezWStWIdaiyr_b|wL4ti8~k14sRq=~Z3iApkA*-(jDkNcVpN;WFlq-3*_ zElRd2IS(>O2Q~Vn=8}@e7}PXT(o{(^CC!!S)0>t`^c9TqfKeVWI_;*tl4(k&gZvu@ zouRw4lx$YAMTxS9QT8y(9!6i#D0>)vOQY;zls(K|CHs_IR&oX87aa7e?p{-JUC9k4 zx0KXX+f`3VeI*T)G*r?^Nn<7YtxQuT&6G3;`3(ncp}Q@Ww9`-5UP(tKbCk?gGEd2T zC6|<3QF2wuH6_=T+)#28f}$!aBQl&n>zN{%Qws^plG<4R5_c|*xb zC8v~}R&qwkStaL`oL6!IalVoTm1MEDmMYnxWRsEucM>&C zpW&bvwWEqOQ&n0;Xt;Xnu_`h~cdN*3-K``qa8Me!HQG@{Xz!>~s}w6eB-%i_NhI`@ zNZP70S2CT0R_>bi+CkDmTOE~Dc~@*zxmYz?-Sy-iAn)R!BXqY08KuWaMr&(~k}5~7 zhPOtSt&-H|pcD0qNlIwi7ix=Sy|y-15?ZUhy4ysJ(%?!mN?U7hlb@7-E%!C=lTg_0 zp`@gPl8#C`De0`Fi;}KNx+&?dq=%B8N_r{jtwfc)^aXj7KB%a=m;OoyC{YJl1}Pb? zMD2i#RHDW}Mk`T^AXAm7S&->UW+<5n@?8!(OLu20nWJQ`l6gwzD^Wut3ze)=vRa9n z6j`f8HM4A2qQ*sbfOO}e2X*(5l2b}fD>-oN+u|otwbX$nX6=;lKDy&C|Rgvk&?wqmMB@PWSx@rAlXE1 z(A|wnHYwSxWQ&sBO7de`@Ks3Dhq5W$5No-%Wf0TX#+aK9KO+Sk5f7m}mlVEYUEkLllG`IFX04rUC zRujt}Xr-&rYHHa-taKS#%`AJUl`cW6xn&Qt(nV;sux*n|omfcv=)o2a0>?V?~L^5KKBrC*YB?VSI_TG-$2D!18iyimv_*`LboaKHPJNOIAKad-5 zxgSa0-Z~_S239V~Ol>Jyh0tk&<$eac2w&BfW>J$`#w=E1n6y)O862r`%Az4PFj)-5 z@Q0C)20foBf2R(q@qo)%hr!J?eI1Q!K8I(XXt{{`-Opq4YUd_d?!RN_3l-rTBR4hC zF5@+ZYUR4i08OoA7LhR+V;sg1jM0~xow?=D>5%1mdkwm3Mp=~)lKGu=dklUcqqutvfQs@ z=f%{*&TPy526n!gUd7HF%l$TXz5_KAr|dICH1Ecg4^`2kc(kehG0uVUv% z=`QRnu-qSG=O<7eZ^|vS+@E3R=c(DR-u6L|Jve8P<^CFnUxz{na*HkZci8zobV86@ zV!407&L5HS335v<_kXbSXQcR|+%hnbP9s#Ms)FSf;&!Ct!rTfC-cz@~Wo^gtl^Vq( z-4^CnvE`1otohhmtt^^iPiEt+H5%ckzr^vi8s?|&bPFM|n_H*+lfHuE>y?pHcd>;m zf}7i*(SQ0Jj&IZyKcKTiJ4tS;!ED zxos*BDfZ-ZIBUCR4bqR`c)5kFLF!(#toPyg4rNxPiNf4Yw%qz+HN)O6m7x@SV&kmc znp%M33v+ukzmU4E#X64Tdo|I3L}QrS$Cle&tPR-PuX2}SPgHRqu-w5ym3Po`M+@HB z%^lLj1gvnFJFMA>)SV_)YaBnKX$n}~Fn5$Kcad1X$KEl^U5K+5iM)=pj%x}d{Wlyx z!IryTkZuigZ)jEnUrgi$oOM!#Ed56uKc&)+FDBOKas0H(9k@2konZ^P4(kKhJFDsd zUrZ#$S?5$R(-5umngc=lG|XLK%WZ8i|E1hT%k67Yb3}z|3j|1K>5}CRF{$4DvgM93 z@FU#Z6}+oS9|dDwwcI(lq6LDsx5JaUX1U9;+gxL~-8#wv5WV+x%iUyBou3<)yU(O= zDlg03v|RP0+^b3^K~Jg0yrr2LNEU3YXsa<=^#ln%WO-p@+4>z?4a9A3rw7n#C~ila zcDIqZeQes(#^O%1X&sx0yVOQH8#Y$lO*V4Wu(9IqvpI5eanINsxrMlO9oqJm;qK ze^Mp32OP@#rtt5Zy{{2!o`6c}B?cxw%N*Y?@tY-inb2is_JK*+MR;utdcV}HVOEwY z*Ih_eG6|ZcK5Jw>s}i1?*Zdc(1YuOoZr&{ahg@$lqw&;CdY^*@$(CSrWhF~F*JB& z5WxxxmTleKP%&FAcph$Um|#JLrgyj)1fjphu@Pe62mT7Jkz#gPSh#g_qr~j7(x0I< z8jo)wAL8c5h}myp+1AaC6?4GC!mXPdC+3iPpKflv82FDbqcuScJVp&UCyF^{Vd2)z zO%ij)LRQ4hO%?+W@>#T|2-bDdr_q`U-m=oKqBTv-MJs(0t?7bgp7hIT%@A{0Jyth2 zQw&1gN6?xj2BGd3(3&jS_=e= zMd=8%7D7@aRTpBBVA&`gg4SZe+EJ>W^%B7X5(E3Cf>k6e#=5y>f~6#e_{#ZtkcU_~q)&9uosk zTxa^Ym_@>wJ^?P4^j{D&z5yY&N>Nh7Q~bA!okhxYZgg+96t??7Gxm` zxijEs9Pb(Fiib=^-&w)B9Wr5I?wnxpF2&LZJ^J(Dcu7B`o;Wxj$Ja!ba@9q_njZY+ zLhcgyAIA?y;IqhjGx{z=4kUdyT2}&G@o=0LL-Q9;h;lk1a3JTbg(;yLhB~jT@cv9D;F#$BDq$`)iuzLDb^))MFLAK z@5t3NSX)fZqR=wS@sT!RyAQp4V>yW{>l-XOk_{RdtUN;C3%P~{>*XncE&_;)wHIeK zGElAbhZ`HLN+J)3?3lsQWcmhLO$~G`QgZOz4HhYplS6jQV5JgCIb_ESmMb&Q-C)f! z-H&6f3>Gd^9l5o^>Sekctu_Wrn9SL=HCV@F&aRy?EevCa_6CcY2)jR(>tIYP#4w9A z=3cIZD`8x7;`$PoWVjl`HJE*fa8yrqG^VX#g0GV??FW7(jF}rlU!h2A`wX!SIvr%7j_)ytS(CY^y+Z(|UjX)Mskn0_Xm zgjQc;1{j7q{frrC(y=(!-Xbm@JyrDK3Vax>kA3<{Gozq~Ahoo-ySn z{RUd|joE3ai53{M%TN<7G-j^>FbI0y7{tM@g zG}cDe#+c&<`8()&V-OnuJ6bD^IcZYOhpaN@lu18})@ozU80aqOd1KC+^iyc9HRilQ zW*&OpmUkfpF;i@;$UrSaj%<1tH;kEXr~ePfZbFW14Io)! zo4Hx)qrPnx*g*avSz?=oHn4w4me^*oO+TZNZI;;dGaB1wnGNJ0RIY87S0qbpv(lz_ z(abihY+Q4?TCHre!KQc7+BTcBnQmj7EjG14Tia~Q zX1bkiw%gPK?QOFoo9Pa=*=bWBbhORxY^FQeW{*vM(AhRf*XT@lvCV!P&@X6F+Z@bh zx|?kd+4LT}+vccEpQ49tj%735(>5n;`V_rv^F}t)y=`;KruW##Hm9?h?rWQKHWw`V z+2*`WKcl~GF4~mo0k*l6&GbOqT(K$BgKTp(o9V%}xo)Rl!&42h&5dlPhuY?rP48lu zZID=6hTh?}Y3row4UDh>nxUsS(ne6lc^hQ|K0{A&v~9XNoUJjo>ETdkkF`xthdO(l zZTdRY)Z=Y~q*Nb_H^DXo9BS%`wi%cupeEU7utQBf*)~HQ&e0Ux40EWdr`l$CmY$ks zn~@IZXu54iIauI;pKF`h4!(1kn+d*hQZqJ@vDljh-ooCfM8;unwhe?&YQ`j@zU&+u zP#?(In{#u)cRUNWbBv-9#)7CpnFr=`I2rT7d=A7e$}Ir%@dkCR_h5G+IIv>(UD#a& zHpK2Y4DdGWE(R}F?7ju#EdfJ1a0H{=QZOVs#^byaI+lSK9n4acTW*_;=opHQzeC3g zFr-8EyV5pW9jf0|wkdazpoQWDLpoR(h2pf$E{Bf(S}>%8^)Dz++w66ye%FH`9jf0A zwmIvh|AgL+U>k=H-XKS@=L(ZF4!>(=)$}Gq-`Y zu&#vX&f)NftP}l2d5c~<{-80=5~V7ob;_Ycb5(LRBF~I*2i#sH`vah z7qb&wu;XFK^p)os^CL5P*zmIhiyQuD40iV z;H_w=kJkV$oe&e*0yo@V?k#3E0gIcJ+Lc`E4h5RiQOD$cuLo9=lk=!+1Q zJO%iYZF=RYpfB5|cb)=#1wxZ&cyJX$lcxY*gV5x$ECD48p~+K#Z$N1BH%W=8~IA&iq-2)wSFq`f{jyaS~_h82y$)zrKdjAG0j{qC(Lq8bC+6wwqshl%mB=BOe>e3`dr7fae>Q+ zI(1B2m!A53$Fz6JB?}zW!6lb0bWA6g-q<3?bav^fFLq2_XMU(*!@eSW-qt z0sQQ8-Rpz{$S2f0JWU6lku4Xe`KW}ch zl;j3^b2FRihIv!ZOON1+MtM`;OAn#dIByzy4A7h8O(Ty1degjV;$iU{!F}E|^|OO$(1unwELf+9Q;vRo=Am7-_f8n|2-nB5m@fy~jwqZQgY9(xn)$UEXx| zsIJ@RO*fD6b%(s^?lHdZm^VE=#@C(lrkBU~x^v$2@u;c0)v@Y!lP&1CvQf2T!!qMH)A|XZNI!3 z>(OiLpEu(@O6`EWncz{k56qj%9yR))yqV%rY6s`dG>_T3A$c?1V+=JkZ)SRw+F^M! z%cCA2o;PzmX6r`e&0LQ$)X2P6bg1kBG(Op}ZH^)56@1ndp?ooah=gk`)Bc~;KbJAnvv@~ya`@D7; z?&kB_<+z*A?Cy#@P}3Y`CGP8UlvTK|&zO5P?&brj0EaPej`*p%Yin^|AK5`TjJU54 zcoHIQ+}Ed@xB>U|v4RhWF>g-$)Ek@f=8R9hu{m$f`RV)7yCrYV`;57_=FLT)+G1PY zT=JWmjjT-fc$bWZ<+<iZ**#(?qH(Y$FJ zFo}08Z#o27q@6b%gDld9GzM9uoi|;AEYgNt23e#HxeT&M8*&+Bkv8Nq$RcgXWxzb| zIml%|&3_(p84#Cn0dg5o^IwEq26XQ)K`sMo{>zZdfZ3HRkjsFY|0?7%V0Psi2Bnj^#LTgPOh>l4#leQgP^F~1R*wHm71FFYPt~nJT@!;h;yQVGjkFVgwF0SburZds%>Y6Sg z!JXY)(>0_W>h79uA-S!GYr2Qzww|u(5z>$B<(i%$GrqlD(<`J!>f@T;AuLjq>+706 zVOF`Ru~I+R^bP4&_IFLc5Xl5DH^4Om@f=@7_dwSS59vb=a?OYk)~J*l?3&RSVG%fu zHF9fk-VoP}4+(4;>Y525tsn)=+$`kuJ(jl=B6tRb!T5 zkzfhh%R_{?VQ!R*^HQ@cw0hwVqg_;>@PmzkyoB)h9?Fen3#EO46lH(^RUYTYfk`!u ztI)VV;>z(Zswbh#AIeQ&3srzxrNTeexf5L!Rzf--%1vSm1%g_(!oO|h|CpQXX3!<# zmlV@PU{i)dY;er%$tJyLWF~+3WD#yLnWJgBD z)(Gsat?VCwy>;0h&g_ThSnr}j2l*sitAFFOzh^M&2CzDNL`U9?=h*0?h6gz%JV(X7 zd_2b{FmenN1JEK{5Dx2i*xORM_gn03b+JOGf#Gpl6qBnk3ZEyIqv~U^%pq+rt(TTc|lotli~r&F#fK zRq-Fiq2u^FkzmCzv6e&i?Q_kd1PgB3&1zOHWF3Z)_q(VU0&u^OJHQqaFsN!vc-Mna z?+M(ELhg`@lGqf3iaC{78hjjfQ4otzBFG(aJ>apulveVntMx{&doN zzrKdn3D-m6ykjc2U&CHRLNUDx2tATy;_2MBn0? ziy9|JmDgPqI?*e=;YweNUg=F2pg4LNw_KDw(aWgoq3$VNi;?Sj0s#MNwCa1PfMWd7 zz>~oiSNa-y0=%B4iyC<-jY=1y)!0LQ6eE!)9*U$Gi8S?4DTTxlA|MatQnUrlJpoo_ zI*zsQWU@tV-_k=J6}5dU55-i}_N_fsR5AW& zkq#cJtQd)O^iXQWOhP9Q^;V2YI(sO(qSw;JL**5-{arnjUoqR?%|i_qa|+!(0m8Q< zp09@|C@^S=R!EoeR3qB_7k|#it$YsFsEL_&l6F@># zefRfJ$;BXKfQND}fvuFMtFjHhHs)Z(nC=gUCB`%D#MsW8111vj6uj44>e*8 zLdJS16r)o)&O@~royzf^04DMjMw#HDZj9l`L=VMd3`Zt;csaV4lRZ2o-ODK+s>+yH znChXljCtf~9)O9=BTx5GWJVF1;i1xuj^<2H0A$u2@+=RqMK1Qv_E2-iV04a$!ZW&@ zb3Fm;(goKp_XOaO)@ZHpP~67pUg-fS$?0C@31A{>(pEztgbQ_RAP~ak zo3#)Kg;XOT@?=N`4q5LBAR+&SV;dkOiV8qL1cAsf0Gl8X88~D!1R?{6Y=J-s1BtC* zeqpGv4a_f05^V?bXW)=>Fn!k_6M#oFC_DkaSGWk&A^2XHRyqm3SD1*KI|aTMhKHxY_X-g~LI`{>Oe>xB@Us9+ zE1mNMKoLzVo%aMlk$0nY0W6=PIxc#0Btvyv@=zDZpzyK>&?pl}S3DF4GI4a(Lxms{ zN7p=*2{LhX9g-qU9NmDV2opy)!R^A-&@FJgFf~-yMJgbPYVD&ak?Eo~z5vg$3B7H70SIFiTJ3yPE2b;ZYVV_D zk&AL2eAF!xj?vLa@gm_EoqXwPnBDK}OP>sS(ZxqqBU8IweUvsbwcE{?{uv0PyDtD& z=rULjA2pAZyq-P^AG3szkLt%PA>^Y3k_p{DKI$MTmwkN{LsBmL`KXAbT=w^6oS|F} z@KF{?xg6-DHj;8V$QJ-EI^k}EeVLWPEQa_fnq(SxsE^9YEFt6zU=~eq-f$l^luYQ3 z@MXSXLU*Ju09@2V?!_TXz4cGwb$v_wzeN>bZgt5s-St-gsu*&G8wiJbw zNF4bnFr~5H>Z8h(#(Ep%ErVlhhrHQb04|5T*$m@$KxVQ9`JIrNtS(}gkKY+#LTI;- z9~)spXpfIy9HDOC>*HrfsN47XKrU0a@AvWBBedcNAa5BQ;~?ZMTcke(dCL~*4@2H; zCW($f-m>NTqmZ|3x&D}spC_S~KknlrC0$r49Cezzn` z96?sICHymx)ocm>EM(PY%JCdz)u!D)@8h>jX!kGpGB8`rzvv6#9qJ!k@?~%a+qet~ zt$=7iLMtE|kWib+!fTLFo5{lKkWf2I96=gwCIN3k8g2O1NE|^LZ2)h=T-`wC+NsWK zjN|nJnQv21)DHwO4fVzw1OiCLK%Cn!5LB(`x#}S`3IqU+zGyWLWJLzXXcEZE41m)# z5CAl~p|@Eet8Lor=79jJp&Ft^Ab@IgK&xdS>oO=#t3UwSXoF*|0|98G6PPR~I0Do`iP^$G-l4}E)et$POo(8n*( z>J!L;49w9tki!{Rr(YmPZ0eQ%fdKxY4*!5a0RMOet$~3Y&tN-)0y&Yvb_NFmAjr4S zJ0y^k8LVSyAb^Cth-1S70VL!Fw1x+AHsgd5fdCv*8^=Zl0&vJPXpIWwLI&^{9S9&H zx`IC@5CB1Hp*1!T06`u>Yg`~rGl0kVK$Bn`%R(*gmAWFT780|AJnKUy;a0f${EKMsy}sNqk5;~ggd-vGxuO#Yt) z$2;lY;U1^J@eWGo-P~z#yo2I-_>JIrhsywG!RHSBymR1l%no|b2Z9PT53LK}c!z%8 zMR2^s1;R_nu59t-gmexcr6fMRxab%^+14Exro*c$b*xf zN9!i!!AZ}ebt@3yRZgQ-Hx%Gfj-gdA6yQ>hpjAH<;8Jv{ut6xmr5r%3VJN_*>_e+j zD8QxcL91~nz@_X$t4S!prR+efX(&LWY(uMAC_tlZL92NvK%;Czt3@clo2*5vWhm|P z4BA_T(mtQn_k{wy$#V3z2?cnQrD(McrBj~ad%I9N=NZ1Y4+R($MW}QL1sIgMXmt#w zo8ms82SWiGWhPpkL+O!c_}(QHU`xj0Sl3VnW$=z}p#Wtv634oS0&K}pw0eXBY>7&E z&rn9>DdD|B8J(wG_YMWvlHTa;6AG{;J<;kL3ScE&(dripU?nQe{X?0Qr!)@;Won-G zePAenm8c943I(tdmEpmm%*s=8hlDaa&j5XBD0A|(`NKk)pQo%24`o4~vN|G^g?Y;A z$WWH#DWRi6S(>MWjt*s6o)S7H6o6AyF2{xfaEi+1xKIF2QMnu+3VHFv{1_P)Yj8O0n|jb^^8ye zHPPhK%uoO|(d5#sPyjV~7OmN#0BZ6yT601H)a0vZ%?$-m6P5jWq3q9q9`i#1)I>G- zf=~|UDfX=E zVYe$n0sQ2jacpHMfS>#mTB|}im#2f8DoT6UfrckcssUtRray?HSu?5oOa`v}EdR)%_Hb{?44Za=H z7(=8`w| zL&{w8#sNr~OWrsLDRZg44?)UYa>-#xnM*D?0x5IJB}XA;F17bDNSRB1ISwgv$uB1$ zWiI*U4MiulDG^Bbs0%qfrPru30w_jluLfO23d8P7}3dAjUxfNDgOQGAxoK8J7%?kvBO(FFrVg$c8Oa+iy}?nD z0A%wFj*X54ARFZu)cXKr^A)tlMgnM!`i0{nIp;EJ7#|6sHL71GL;`5dBWO*GyclUMFLok^2>5mMrAOS6_IrC$S*4+>F81C ztcnCsoyItCbtHi5G(>AnBwaGV%GyY}dek}VA_08o&*)tr3E(?_LTf`LJu>LZ#z+9< zQIBy`BmnZL$GAC?-X3+%mPi2UQIBzJB!Kj&W!e@=KaVZqO~KE zff<}-XC#36sEyhc31B{IqjpC!Bm=hWi3ETj)j4}30pLfuXWuZ~3mV36|F@kjs+QocG7 z$;1ry@&+`BM?G{B8pLBp<5VO73w;UaorW&)n9(>B$qbKtbv6=!g_N((L6>9znDfvj z9`hI%pi4aFF)l)vc+6v5f(G$uw=P42c(hwrB3bCsZe4{g@o2ZML6>;6Ti2mCJX)(8 z&>J4D)lKLPkJjoI^oB=kRW}wuiIl_Y#j-l%u==q8RHU9vgIEA6QVwev%esui8pQ%o zk@8jJST<#R)g+e98DBMx1wf;w=xr7YfJVw!&12b?@l}gh06D6UV=ZF=U`WbW?PCE9>9=Tgh-F{KR~=&kAW8YEQ!EEE zzUmyy!Hlo4j0tFx@>SPZ08LWgr&}yXGQR2_%h8Oldc*>_()ZEZGZw&=l&^Zlaw6la z-mw6<^lcpLgR;7eulmMvD&wnuv7FBMs(&nJGQJuR%h`;t2F7wOlau|t><(7VnQtSeXd_jjHQ9k^@~ZdH1wH8og7OepEhqwERB6; zN2bQo+^6Q67E24Ck?-_aTKe>mXT;LVr-wWEx5w7RJ)qr{A?i=~H8URxeZFQ1u_6|wa8nOR*KOCO(^kyWwu^QpO3$I{;?hpmZafKLuv8_PhS znrmGwgM4z>`d9}0)La{48RAoOZH#58PY&A@%P^lDwmFuOKK0d>SVsBetF5t&_Q_Y< zVwvdElinW7B%hvic`TECdeS>$nc`shf_*vdCwS z^;j&6ed?y;u`Kmz^G?LF%%@NNMl8#H>ZX&itjGX%r(#)|0qjmgzxdQmXP{LwfZbVW z6`w08=b%-5uArQcWxdZ8lnb$J$e?x?p=mOx-6d!mpTOM9&@?`QxmTcRd;)W?LepfR zyKB%i8R+ghG>y;ol^f76K7O_i@h|j?&!6781^wdV7wi!KCUPj_je3ayM)*HCRzDHI z2sLZgAd#a!vt|tw0if_daja1y02KZXt;UI*@VTneBoROhbycNlB7hcZPQFy!vUhHKF3oJhTZYc5?90o-r}j&)50aKmM2bxWjS zz%`fdi2!)G2*-LP0^s2Sw0b7eBw$5FuS5VroP%S%6KNhWvhI^ei-3`J-$VdLoQmFl ziL?%=U-~BkFyaIp8;}UVh~v;2m`J+}k~b)k_5t-iA)H{FLM$BXi=@z+(ag4 zAkBG+0KTYR(ELOIUsP+gAdzVqYHeX6(-pOb_&1T60X^x(iOdSb9Ew%0&1Eyi7XDNY1SsPB%r2Q zm&me!zR&tZmIsW%HYBnlgK%z4WJAD=+@?e}28_2hC$cGEytO5f%>m=Bt%+<2=s%<2 zYHL7UvOSS)0d+}vBHIJ%k{tFLjL+YGcko}NW zsBS?Th1qXt7Nl{Q{f1^inuN^ZH7H2akU6}D1!)#Chu5ee%|n&|G%iSskRAngj$Kct7!z90iaYLE^E85mN7bS%i=3|HByAVU;a3H?`)p&@;h zE(IAD(pTwP5CAOuqPJT?MuyZN-3u}*16}qg2%whT(A%>hV?wUt^eV{MkgGVo3j)xk zYLz|(0qC+VT73%w(4}gXeg&D7!7uw4WO7KYGN2$+L$2KnEXcHwYd3=mGCkzl&ESH} z2)TAMq#!dDunGNFkl7)1$*_XV38_nl7X)xljjcu$WL`)QWn@7B zvM8kO8B>tOA#Kmtf-DJXd&U)HX-L~Mz97pp-k4C36&Y_#EXc}?HzpNib;woV$pu*x zX8FH@tW^jo^j|^Ng<1ZuAnU^{|5uQWA+6Aif@}(Dg=Q9HbI3SqRzbFejH6~3WNXMc zYED76hxAqE7Nk6+uQIP7I}|nw{a28kVV3_Z$gVKU{}p6UNH2F$LH34>qZSurUr1kN zNkR69^i`G?76{WcZke8{Zd=7L-ZxiYY& zAQwYwnym%791;PttsqxIdMMiqay29Zq`V;4Laq$#D9H7YD+4 z3sNs4=j4==OA2J=0a}GeJBXZ6`NOD9gbO@5H&{iM`A;}Rr z=SV?XM&z8M1!)zLbB-0HO_b&T3eq;p@_z+s7iIasg0zpQRZbS9Lqx4|svw;ra?WXJ zhKQVV2AUxv=bVLRh{!qT3eqj2zk42(C4lIp;<}21QvR0W?EI&bbB65Rr507G+pO97(;R43Fr) z)GrDk!K!^46lGMzb%TaQ869zruu)OQM9lFtF3Q-5Ii4m(85c3f)3hiPB6=;&iZU@` zPOy1VCPnmLS`=kU#Q3OXQKm+Wk6IOFTEzIMbx{B{?uz@iDawq9K26)A%!;^j+^#6I zBNiaFFUp*VE5{v*GB@JNamS*}i@0*!sVEB~dNQ4hvM{12)1@ejB1T1Bi?UeZ&d`5F zSrXBc>0Xp&5k21?MOhxv^X*v_z?%Pn^LiC!Wkk=ncTrYF^kn)JWlhAWsBcl$M)YL* z6=hw-sHlHY)<^VY1{7sOL{Da5Q8q=)2@WdC=7>4L!A02;(UTccl&ujxnW0757E${Q zD@u7pA9#3Cc0}}nM-*jeL?3u$QFcZ2fkzc(cSP+ox+s8Je+|z(rYQR&`Y&UPvOl8# zGOj2GB1TH%i*hic_L)$WBN^vREXvW0b0!t#SjIV%i*h{UoGC>)5z)JuT9h{;dNG7igG%lcQdmnXCi8!Sw%S;QTxm;%DITzXHHShE4my0Ur{bZ)IRfy zaxr40G`}doet#If3yN|%;_Ab~qFjlX&skKIs}b`#i;HqCVm@a{QLabSLraTtBcdK! zR+O6&_0aO7+={4&RurXfOb>ZwQR>CCWvhx(Kc+2PU6ckfZP}WlG>qvXuPsWWn6_+P zQ5whOtMx@`5|ghs6s2iQzS>xnW-<9{Q&F17Fa&_jx7NBj#t6cgcit0EGjm|ol3GgrVi^|k~J}PSeKHljj6-BmSkN_9oDTRs0a8B z?%Ta28)DkQ9wk97fJW~=m=O1#R+4=& zGeE;jvOlI?8&Q%2G4a{T?ITF)0jxEX2n6`0TNsh&| zjpIvlJf>}&P?8fdZR5m}yb)8wO)AOBm>O$a7oLqe|GUXqRp zxvsnh+&%ui@do0Q3dgx0ianJi3bO`DYo%6&94Y+fdd6I#<2WwIop zHEmfYOA}htR%Nm*p*3w?Cd(6A(>7(YBB3>HTP7OK43ym&y8s*0f8RY)EKLyOznugx0iMnQTgEO}m%L=7iR?N11F% zXia;T$<~C{v{#vIOK44dm&x{oK7XGwDNkru`PiRdCm&t*I)^tdjpvpCiGcl+c8jiCGC7janvN)w zqY16)$TB&W(3*}alj8}k>F6>!k&v8V zff{Z@nY1fV!)+}4|0LblRutV91>iB}3((z_bFS+CpHe`{Dw2~JFaU~T1anSc#GC^P zDvB8u)7fX%o%hW3t+{tqmuRb^aJNfnucB~wO6aMgW_L^It)gc4O6aSiX7@|zucBrT zN*Ji3W)DkPUq#Ixl`vRE%^sJqsfva@DPeOJ4SQO`P!$b(R>GDl8uq+|tyMJaMG4!g zXxMBC+pB2U%MymGXxOU~MyhDoTnVF9G;F?v9aS{!bqPDGXxN()#;R!8+Y)wF(XfRQ zc307`cO{Hh(XjU=?5X1BTr6R46*c=%!oDhM_OXQhRn+WL2?wgE+2;}tR#CGrB}`ON zv#%vgR#CHWB^;`vW=ka;uA*k&OE^+R&3*{4s;Jpd;Z+qiTNYkbQL|sdt152J-@>aZ zo(=v8uc~-9_$$1s;@RMz@T!VugB23aR#CHR3FoS)S&fAARn)9j!i6eowo<~yDr&Y$ z!lf!|RwrSqikj6+n69E`4H7O_QL{z~SE{I4lZ2~P)T~*;^*mQC5^m(VS}kEF&(#_U zH}hPrm2fN1RjY*Cd9Kz;xL3t}*(TwB758Pkga>)TIwU;I6V@r=QJ%0a36JxHbxU}X zC#*-p(>!6l5}xG=>yz-jiu0}^KQtgV;uGSAwegt;mjwn4&t6%E@c;dK=a z+azJ3igIn1@UDt-4M})kMY*;}SgfL4TP1v`qFmb~e5|5e+a-LeqFlogK37q$5eZ+a zDA%ZjuT_+5hlFoclxwGir7FrbCgDe(t6dU)=DFG}VL8v$xP)JMuJ%ayo#$$=gnxOO z_DNV#;9co{3DpJOl^&2#Q{Y|cK?$`5?#2lTD+}C>lM+@HxEl{is4q~d!x9<_RO*O? z#sZZ(Dxs-BrH)BxE>NlC64n%G(+LS{3$*E^gw_IWIwfIUfi|6%&{m*LXC$;2Xwz8< z9R=ESPC{3Kd+@x3?gIDV1qnR`?!k)^dJEixmn8HRxCf^stS@l;O-mRoaQj`Bu%W>1 zcSXX+0=M5)37ZPse%B;yE^zx@moQY|_PZfrOM%;OM#9ztx8F?(+X~!%w7j%@1={pT!rlUHdMsgIfi^vn zu)jc?o=P}SpiR#tOca=$=Mp9hOwJ1lhYC#2tb`*4iu6*#(E>$!CE-|sBF#xSUZ66B-(rXE)3v}p>gfj&?^i~*AphFA7hyopYCyXf2q4&aw0v%cuMil7K2O&d&`|YEU zp}_t2Nyt#(e)}xpT7gesz6cKre1`i~cu?SnQ@#lg3cMj*5*`$IL;78KP~Z*e4+(b) zd;;@R!rcO&;Vugq3VasxOUO{*vzXsPh610({1Gw~_$=nHkfFe5G5>@N1wM;eA>&D& zoN5_Q^W@aXm@ROF)yjBTpgAjLyeiO~RWjxZ+-h|)<_p|v^)g-;xYZhDyeV+2HOhEf z;8tsru~6VvYnJh@z^&FI<9&hVtd_BuCufa}PkCO}%J`h;rB%k4JTL2Hd@XRRwaNIF zC#PM;Ql6X+8Q=5dbjtXVC#Ors&pbKZGM4k?^vL*?C#P4&?*g}4pNu~RZnb_He+%4d z12X;vfTEGFpn%XIRGSBJ~-Ov8G6UMrEumQlA|%T8q?Yr;K$) zHuEtVZACWoT{7B>+-19EbQHPE#$|LCxy$y*=qhrT?Um78GSwqHhnksIuQ zjDaFI*g+ZVi`-xnG6sv>V3RU76!Yi5GBy_J&|w*yigf6RjLk(lbX3Mrkq#Y`v870d zj?36uWFJ2vV_T6Tos_Y?NRdv-7%ozz(=tYi6zPnN(IQ1UD`Q8IBAt`5vq+K7%NQ$C zqzf{}i*)Fsj6FrR@JllG7TLn5Wb7;Qc57P3{v!MMWf=#G++|l}94vB|U6nCW2I z$4_BSk-zX*7UmTB3y)vIoFaeW@mrWvd@# z6nrSst7-)wi}b2S!KWgj8Z46TZHd47XjibZ#3#!g3Rac)WVus8U5Q?GDX1^et8N7iC3@APps_@+dKEO4 z_)D-p1(W|WrdP?+an}XgFz1pszuSBng74(FKwQLv>%x%Mj9UZPj~6bzT>)qVvd zC3@3l%Nd;pidUZ&_t`faEtYCMEUL8>|UZPh=73?X|t78iG zmgv=S1qVv(O(zr_EYYiz3MNYQ>Xd@X61_UD;82NPol$VOM6b>&I8vfl=M)?*(W~Z*csC34GeqE|N+TrSb8TMDj}=+$inS4;Hjj)H3?dUaR9^%A|h zr{G43UfowPQ=(T76x=M)tA`41mFU$Y1-DD|>al`5C3^Kl!QB#D)l&ucN|fuFg8L=P z^<2S&66JcK;9-e!%_?|QqFgT(JT1|yR|=k$=+&Hp=OubIui!f!7 ziE@2Wuvns8Uxh;@%Joe+RH9r}1#TtoTwW?Sv(W`YTS|xhbred8$ui90#N%X2iMY}|= zI#qN?^r}lmx5R$ct)fSwS3N3vC3@AXqEDh%eJc7TdeyIDK%!RzD%MN%YQ2gr zqFjen9Fr*55f#TJ%5_x5DT!VkQ*m0NSI1SHk?7S46=x-SbyCGSiC&#jabBWVr&U~# z=+zk&7bSXiR>dWWUY%1hCDE(%DyAiRbwR~tiC$e)aYdq6msDJp*srEkT$3o*w2JEz z<+`lmhD5opsF;x`*HslaCCYV8#T|)WT~~2eqE|Om+>_|ljEegby}GI5fkdxvsdy;S ztJ^9bN%ZQDipLVYx~t-eM6d3tcq-AW`zoGE^y-0%=MueosN#i0uO6wGmGTd1s(2|; zt|uy9NtElUiaCjLJyS6+QLg7IUQ3kgg^F(y^_f+%BvGH2D!xn9=aq^d67`u=@l&Ec z^D34l>hoH~FNylRQSn=%K5vB)5_{8vFhZh3?}QN&9eOW}klC9Sg%L7)(+6RM%--}- z7$LJaeG*2<>`kAA5i)zz7h#0V-t<*Py-bI`sc4Yt(2{UNrbFL_8!~&-58;N)yMmv> z4VevUS-2syLH!bL$ZSx*g&Q*O3jPQ;WZo706>i8p@%H1x<6sZK+$Op)p}^vM*dK|{Yxks37&$P}qb!+Mz_HES4@ z*`Qi9Y>;WwY7HA@+O$T)CYd&^)v#HnO|2S+WZJY&!xot~wQ1NY)24O}+hp3*p<%mB zn>sZN%e1LW!-!0qx;2c-w5dnK4w*LfYS<~$rald0GHvSDFfLQ10S$X(inLzCUYQ~d zYS<^UL2b~mU#3kPH5`y>(7a%yGHsgBa8;&FlNzqcwCRwB z>oRRRtl@@Cn~rFhk!jOW4L4=lbWFo7nKm8Qa9gHLCp6rVY12s!cV*giO2a*wHl5aR zU#3lGG(3=L(^(Ab!=>GL^cZ;fYM8E^2rxQ>jZDp2<{dO2c!RN=<8c zAycW#8fIlGbw$HVnMz&N@Jgmq*EGz@RO-5hd6`Px(C}KOQZpLf$W-d4hPN`6x}{-3 zrc$>xypyTa9S!egDs@-GqD-akY4{*hsrwo}%IsGUG<=fTuO4dnEVExd((pxQzk00U ztIU4&M8h|k{pzWPC7HrK)9_uUaL+aTkSW{?4L@ZHH>+V;rf@Gc{E{i$D-FM83OA?W zk4)j_HT;z++-nWh3eSUYG}I_`?X8Adg|01VSgFvpcN$hHbnU%{I)$z+YN%J}+6N5{ z3SIlCp;4i0pENWnbnUZ-W`(YO(a@sMwXYghD|GFfhBXRZThg#rp=;kYv?_G%hlX_u zUHhq_O`&Vc!Z3xd{Ssa&yubP_yi$07^+$N6@DB8^@Jitw=s)3=!aL9vI{FoAR;^<| zp=LEY)+^MkR>z=1%~tBzpir|_IyNfQtWL)!g__mt*sM^q1|35RHEYzdMWJR*I<_j* ztXao4g_^bK*sf5s)jEb1YPLqlh(gWQ>KIk1S*wm63N>4&W2ZvR+H{O5)T~{{E`^$P z=-91LvrZl33N`D}u}5Lk>ejJWp=&)l_9=9&SI2&ZuJ!3SpwP8`9S0So~2@wP77+6uLH|_UO2*P`JH1t|%04pN^{vh1;*=hCyd zYjZkQsdQ~#N1aO7UhAk=>Dn6|4JuuGtD{k+YYRG>RJ!&~N3%-T-s@;l>Dr=>)hb>4 zpks|n*FNf4tJ1YkI$Bk__F2a|m9Bl!(WcV1uR7XQy7o;+hf3F$babk8?YoXHm3{4p zj&7C0{nXK;Qn+Ouy()$KrK3-!aKD9XDuw$aTvPd!=dW;0fn@ZQ}3~X2FTD^f`m98}y7*Xk3qk&PCt~D9h zq0+Tx13Oi^)?#2xrE9AV>{9948Uwpky0+H9xJuVr4eU|r+ByS!Rl3$@V4q6Y+6^33 zsac1C36+|48kkh6S(kxBDmCjia9E{gJqC`b)U4OQQI(qY891g=vwj1|Rcbb1;Dk!e z)*CpfQnNt=r&MaT!N6&inr$?2Mx|z(44hS|*=7UhRBAS4;JixBwivjeQnRfFE~?aQ zn}JIzHQR1rN~LDQ2BuYNHe%qiO3g+MTv4gn4g*(JYPQqBHIDoR6cT~Ez-@sj!t{pINPo--I4cu4h+Ju1zDqWj2 z@KB{|hYUPY>Dplfk5#&M#K04kt{pY-RHbXj3_Mfm+HnKVRl0V+h18-Cccfr70mBL*#u%J@7O9tMl6mH7E zdzHdX8(35+++_owRJwM>z-N`NT{ZAUrEAv=d{yb%bpzj2x^~0Bl1kTR418DV+D!vL zRJwM{z)zK~-8QhS(zQDVeyMcru7TewUAt%Ck4o3>8~CfzwFd_NsdVk3ffX8`H$E~@ zt?_x|V*@oBU3+4nR-j4K!=i?3IBQ zjhf9FSgldBc>`-SYWCW|T8)~$G0>_}v$qD;Y1C}NK$}L*-Wh1usM&i19U3)TG|;J0 zvkwNkG-~$IK(|KCJ{joIsM%)&y&5(9VxUi>W?v2TYt-zUfdP%0Eg4v^QM2y`1~qE- z!@vfOn*B7eQKM$d!Z3}R{St<0e0u#`7^d;*^&erF#;4bRg<%?>UjGw@X?%LU!o+rs zu2q{D*63P|i4l#i)tVU9=-NsXJ2bks%EV5MuGN_s)96~giCr39YcR1}qic;O#x=Uu zWMYp-*P2c2)#zG_iG3PfTWw;$M%UJuIH1wBwI&W~>}#ziCNv7S&cvif;o3|b(kNWJ ziNhL&>o9Rdqi~%jj%pOH%fvB_!gZTCu2Hxi6Q?w~)@$OlM%VgGoYCl7zlpONT^lfQ zPNQq?*~GL)*M>}7*67+66IV34w$;Q{ zjjnAoaZRIZ+f7{8=-RM}8ya03F)^djwNVo{HM+LL#3PMf?KJUNqgP`lo@n%Hmx-qu zz1nT!nMSY1O+44=)gBWsGcI_L+F8(X0I?UTO5|fQdPcUL7NoGqI#muJb0oYn1DPi60u}x@h93M!7DTSk@@l zl!;#&<(f9}Tccc;P5jX)*A)|gHOh6>#6OL4T{E#l=evH_O;qcA*YAdj8lCU@&6udw z`L5qh6DxJTDRIlhDxGrOHc_Wjt~(~`_5A%m6AgO){-23PJ%9htM3YX#9++s>Y1l&( zEjkT*WMZ{W!ycPhqtmb_Cf4dS?5T-XorXO#u}-I9&rP)HH0*_mcAbXJn&{AJ*h>?g zIt_beqD!Y?b0)fV8a8jDN2g)0P4wzC?2U;&orb+N(XZ361rq~04SQ!|y-vg4n;6t- z*rJIIIt}|^VxvyOKAPC1)38q_HtRI(vxy;{hJ7)yMWEU^*f$f~bQ-oKY|?4i zcVUxG!+r>xbQ<W`^IO=Y^G(1%!X}+>0{#^?>3kFLpKwUe z-~Y3)Pp4ef7WV6utH#0sopRM$IH*&ul@=y+%C*YEq)xf&EF97)SG|S9I^}Axa73qE zjTVmTl&i_YF`aTXTR5&$t`-X?bjr2b!bzQSt+8-Qr(A0-oYpB$GrDr(soly_!eyO?^;x*0)3AOE zS9KaTVBwlh!`554uG6qV3paEcw!y-TPQx}@xT({yO%`tHG;Fhl+d2&!vT#SIVOuQR z)oIvP3-@$(vuzgc>+ELREj-ZK&4w*J)Y;8OEIiU_-Kd4fI<4Db;fYS`c3OC<)4DMW z&vaV1%ffS=*6p_NLZ@}(7G`x?x5vUuo!0HO@Jgq3`z*}qv~ItJd7aiBu<%-^bq6iH z(P`a;g||Abo3yZ?)4D?z-s!aNu!Z+Jtvh02QKxlBEqu^v-7yOvby|1a!Y7^9ov`p( zr*$VSe9>v$DGOh9T6fyQH=Wj$L8ig&#VtJ8$8qPU|jMSk`IXMGL=l zT6f99Z=KdnS@@&Vx@il4by|1X!atqXU9qsjpmkR*R2#JJnuQvJ)?K$yYtXtI7FHUx zZpOkYgVx=&&|pxwTNWA(3U}K=lR@F`SZFpV++7PT28Fw4VYNZw?ps)6P`C#c)*2M< zp@mk1!acIE&Y*CQEwmXF?umtVgTg(v&|y%xXBIjQ3isSXmqFoPSm-t=+^mHjgTlSE z&}&e*R~GsV3O8q=-=J{w76uFo_u9gGgTlSBFlbP?w-z=S6mG%7CWBdfXJNC!ti87| zWH4)s7Pc77+6N0;4QB15h3y7i`($C*plhEkj2Lw7i-l2xu6?zz!=P*5EQ}dU*ph`^ z1{3z(!ft~J`(a_+V8VV{*kdqZ%fc{&?=}Ath8cA2w=m4$Zyx^$uMB?M;ji$@;I|$A z39k%(+hK)`V+IYYwsG8`VKp{R7&NTb#%Y6ct+a8*pj@kLoHZy{osDY-9jdo6V^E(4 z8#fK=(`e(CL4BHR+%~9BvyD3j^=Ywj*PuSDZQL`c&l(%|4eGPj#sh=;wAy%RP@i=+ z9vRf9&BkMc`n214Vo;wB8&3`D(`n9g_1 zpfvq9-WrrY1Z3#XHc3!8}IYK{stS1`CosdjgJPm+9n&H3~sf}Ha;8NYC|@@ z<$wKcHkR_g{&pMR^S}PEjUNWL+K7#x2DjR%jb(#dZHJ9t2DjQy z8@~;1wJ{ri3~seuHvZ;0*lpuqo`Z24D@^XUJvORM?zg=*YE168eKu-M?zjCmR+`*z z2W+e|x!(@js56<32^;k$voUF-(d4_yhio*Nd^h>9jb@YYCLgiUV)AzrM{TS&`MZf@ zHrAN*<+zPjlUwbCjddos+DRL2Cb!xt8|^03blOIT$*p$AMyJVKowd>SkNnfUHtT*Y)w2h4>Rk>_qlSx&s*w|vylB+hhnzZDa zjcq0^xo%^-NlR|n7&d9ijExbKmfW;4YSNNhHg=e_eh-^RGfw)DWp9+Pe9p^d#J+tMQ&`%LEQv5oyEbM?f=0h76UYGcCW-g;(Z(&XNH zZsU;2z4gMzVUv4n*2WQ&d+Vi*qb5~(CFa~@n&!lun@rQZjguzR^jb{3$!+yUOuWf$ z^;S&0$!)b@ql4EbMQU>J#-vEi4&IvV zLoE*8V`s7n3%%JNRnSrVa<+Om3!5 z2TLY5QJgC8b0Q;&n?JVU(>ewo}%eGYz`+)Vur{+QfM0}lS0+)V2o{4=?k z1|3ve{Dt%e2Q^my|AsiIwfGC^O%7IC{Dt&p2dgapLVCzSot6K;Ar2ZW-W6A&dL%sDrH*9XjSfo@&3|(_@#A1f7J2+}FLpK~8vzVb72gfb8 zo0|?!SZva_9GtS4q1z5lTg=cM2WKp1=&pma7Bh6u!8wcj?Y@Ka7Wdl&2Nx~2n}-fA zS!_3t986hkH;)}mTNLSugUc30dg|bcMUkF4xMuOoGS3}cx7c%DIJjZ4=gc~ou_)3@ z2RAK>^vc04iz3ZAxNFg&c?b6_I`rDXeTxpgaq!5ZK5rd7wy4j7(88iV?}Q8%zgP8M z$Y4>QMInPleLe^eESmFCcwo_-Pr?I>=6rUrVDbMO`XUst{8!>Vystt5%bykh`X(mc z;{P(VBqrYCx2e86_-ygpR6oR=Tl^x`Pci2fzeu$#=G@{JseXw$xA;Y>-wu9S{0iP5 zG4U3^g7;TUyv48J{Sy;!@hf;MT>QqM=G!qVUDVioJ7$%O zTAOdj)VWw`^X-^=7prW(9n;{V-sZPs8eKHl{Bl*3i$A|vBRb`!!CB(lxD=mm`!O$UF@N*`#;5*lV*%?{=}@ zrZnR&4%n1tkBfsgrP=FZ!lpF)Tuj74yy&raQ(q^YV;^LIePJPtHX`7w;n2R$uJN0oFXKn7S6E4o%>^>)5T(H@F zPPw>fv-_NOami-)Ipbo=X7@SkV%lc+Ip^ZC&AoNr#TA?8TySyCX7{=1;=0Z5bIHXG zo84#1#f;7FGwtH0%@fsS7q@JhbH&ANo90|~amS`P*IeAUDa~~k4{Shr|K8=Lw(b+KUcDatb!?`%FrdG6x9&8H|YTrAprIy~#* zgUzSIFI{}J`L4?=7oTjt>oVu!v(2~p=3RWXDbi~f-)xHX#>J9Nk>0xaZu5UYTX6Bi zrcLi${IqG)dl$<#ZCZ5k%jS3UKDhW}`*(z9AB8Wre@p!9lkmm%XT-lg3tt>|>Mz0< zhn@PX@Wo-L{w92JxWSf$FAg`@cNcXI)AU35;xJ7=g)a`%v@Cpa*n)luUmR|*-@+G% z8|;tp#o-3~D|~Ud!Tt$V9PX_Z9@aUusoF!ELz`+mv^%t^)sxVJ3NS%ArUj z9!@(HY1G3xhYs!Va6V7YP7fFIa*X&O^5m%@NmnaJ_kKKcGzSlJUnsOWF|d4b=YJMd3ffq$sG3Z++mYB z;^BqEv(-@#vkuQz$2`1rc(yw3;g!Ra`Uwwn4sUEudYE^3V{^*GYlk;Br#-xJ*lEsq zc=RGVs^yPww4-RhvFM9as@Fwt*hffY~0;fEDap=pmhp!HO zx$NPaLtn0V`0ns2?Ntvy96qJJ=HaJ9U#@#tcIe9u55FAxGUMT|Lsf2i_~%fSTOL-p z`Td`VYB#_C^HAgF_kSL0-TeN~!%8>5|MRfQ&F}v_)VWN=Lk|ruZ+jkjXmokDdhDUe z<=N_qhh~?(_^F2$m%aFzht)27@pBJrU8?fJL#s7ROO|ZZkMXO64UKcl{qop zE>kiurrTvNel4ckWnSKh>2{fyw;p<2=4C<5xy!t~6Lan|FYm>iyUfd?m~)rg>Vueb zm)q*2m~%J3{}XfW=J$VM&fWa}&%-7+zyA{x@8|xZ+@BhS{yZQZ}m~%J3{}XfWGEINQoV!fZKQY}dx77+CdtCZb?PIS? zUut~pbLmU1kNqxvS?S||OJ7#`m~eT@s`D}F@|0EYd5w=#E}xvO^>M~!_i6QU)@Aou=i{8q?$hSuyvy#> z?&E^X?$hDpQl6$xA5(dnx_nH#^rhR!WtZKj$Hx_y()9Yc>Qb6MA2(b!o_-%QE~Odp zaWhZTdLOs)G!6Q=ou_Gok2`sqHu|`mr)iUqdwH5R`?#N{X~@TeJWX4~{d=CKtv(** zY1-!Fah|5_KAz-h8usxtPt%BxXL*`NeLT<8w8O`XJWV@&%;sqt^YJoI(=H#c@-*%C zF_))l+{b*LraeAh=V{vO<4vBXeLmjiY1;2&!KG3Me7wtZbX46*d9Duo_>|}Bh>y=Ml{)IW@X_w^ME}r7 zhsU1%$VaEgp8eQIm&cy{#7DQsp8eEEkH?<<%tx=sX7t=gpT}nO!biWyW;E+#z+*Fd z>0`aeX7tL(pvPu3=VOD%W;E|(qsM0S+Q%l3XZtrkHhb(yZ+#4Tylq_YvCU)8e&=Jm z$DaM($FRqqz35}aW6%EJW7K2M{^(w9-ob^2ynz>N2(5R)ZIxA;9xIO&bHe$kVhbz-*qT%>iC{ z+=D{_<~;7fEdk~|?!m1AUVGew+XB4txCgffc`#epf0T%N#?FjJM zqf$EqeDS#b#sYlxxczno_~vo@?GCWyar=!2_>m`PPk^6!a`pyT&Xcn*z^^_QigYDFpHGpl1{m0I6IX41q@R^*M02_TK=VpLSK9h4Rz>rUeZU@-n)1f;7w)%AFZh-AR8`Ql3 z!#*3-{Qx6A8`OgUqdptd!vH&cCg)LrF`xQ84zSCoK2HMd_W7*iX@GH`4m}I7$EQQj z1MKzb(2D^3efFl=00(^brk4Q@`s_`w0!;YK&|H8?pBb7DaL8wdUJDO=>hnf;;8UNs z!ULcBEC>aBZnbwp0iRp#y->jCR$CMb_}pqA0-W=?)jkRZd`k04DB$xc{AZzn&!_NT zgaSUF!haPC_-x_d0$ldl!k2^xK3n*Ap@7dj#veifpLdKug#tdGa4ZW2eBL(x3UJfs zZR2mDfX}o2AEAKHU+Vo0aM$NAhW`lh=)GSsSWYOr!*@= zJoPEfsu0h7p3CY&Jonj~>O;K9lhY7lHcw7th?jYCnnJwFlhYhxE>BKNi1|D@t3$l@ zY0jDuZ+y1!wISa6Y~igT7JRnwbs^s68EOmhKF?5lh{ZfZ9U(sC8R`u2G0#v}h)+KC z=??MPr#?L)zWCIqH^f(;`t*hP=2M^k5KBH=_&|v7K3n+u5I^!X4Tkucr)fiok+y{R=ToGuAyx!D?{5oH9q_!rJw#2wryj#0Y6Cv? z7zwd5;B(l~5UYax`A3MlAbhN)9ika20Z2O3DFwx zl)pE`x`1tIUxOkVD~u{Vl-g)IUQmwVBV0_yWJ#La;Eyb5tEpgwaU zZU@w7KE%C%=DZdj1T^Q3@F3vH|E=&K;K_d>#G`;Wi|;}_4tNLfUKkPZ4q#Cj5%6a5 zgODNc-~9jnPskAPX7Q7dA>hs8XCXtto5e3ehJZJVUxf?-Zx+7^83NucE(sX|-Yk9> z3Iu%W@k1yO@Ttd7p+LZ=9?N2C13u08C8jpu|LOBvOl`pbk>ih;+JOHf$6qnE0slvi ze`0C_{+~W8BK*$tQXSz>o|l>kfAhT5MyL+?G-G9invhR3Rz;`{d1F`?VP(i0!}KIDyIQ-p?)H-^m-8bjU~wnS(O`P_7MgyxXXP1i(d3HjV~ZG_b! zpPRNuSQGLqbL%3k4f&P1wg{~uzcSYzVO_|t%ymR)3;A55GeT#`6Ma{Nu8=4C?g-r> zPxL(z`a+)Ldn5FRyeI67Fc7i>_eaXoPzqJvbKOe#qu=Ji>#J&ErIb*^qZKCnLNJc_(u!!mE&H=hG49 zLbi-E5#~d-jI$A5hin<=BD@LNGR{YM8?t3wh_Ddy?0hl8yO3w+OA$VVJTXs2_!#oU zJRRXv$P@GB2%kf~J#i(%myk~~uSWP9vSnP0@GWG^xE|qq$T`0e;YY|hpNa4@974a{9UrbcQzw`q!Q4#;r55+`9 zY#EQlL`D3YKNiyy@h|;EOi#pC`czC$#8&!DOi#pC`dmy;#8&!3Oi#o_%!=uWn248R zW+HBlS7K%&ZjCuHGZDAOe1!IhTjOl>#G;s7?hrYB+|K8opyn21keDk65w&tfVfwt_Dac1COkUn7h~OvE=aDG?K~ zBqk+dBEE}BiI|8V5%xq(#7{9P5p%FCCM9AHenmJKF$cdROhnAVA2B@4}(# ze`0zfCSpa5BN6*Sb&R7C`$0{NV-fp7ZH(g)Z&OyrI1#Zatcr0mVpFJ#aVla{sE=_v z;%!Ppj585CLt~7y5j#UujB^n?LvxJt5pPpkVqA#W9#+S=7_mL9iE$}ndsrJ|D&pCt zHO6$r9Hj2&|*CRHHt{68WHj3^Tw<0!*o)~xX zZ1l#sn`fgh#=VGI^vAd#v3Cx{co5Nz^)VhsbYn2aqlj*7i19e08yjOh%~P@|#`B16 zb90Orc}j+2%;qWC660l_lC3dbMQjw?V$9`v*&bs)&&zO(HxX}6Mq<2;cylruVLf6-Q%K z$2|2Oi%}DEYaEYJ8*^)%h_N!});JlXE@p;K#i);&q0=!MVrJ+}jK-K5Ivb-YW`@qi zXoOwOek>tZHnDn?t(^n7-VMF&HyBw_RmTEuLiAA}Y$8|X)&MVz01g%L3w`Yeoy z>ChKpL`;Xi3L|1}rfMv^v4dn44)$ zf>$v&)7k`cF*j3dg4Z$4S(o5VOmo^2yp7pa+7m3q>?$1z-o@0XGr?laQ%qNa4>3DW*9C3BJcPXMKVnd2$95EXUkn8xs7A zxxqFj_#JbDZA$Pb<_6oG;BTIsp#&=uKF8jYpgLhI-I|~#VJqF1pf+JE-JW1&!skrG z305WSry~jK686*41oa8~>5c>q3GZlkCTL1{(>9i%IpGG|m7pcz2HTxrb;1oco?uPF z4YnsiYeIAOCRms7rfpw>wuGH^e}ayL<{U`Snb4er3Az%RGm)S>;oh1|(35a)9ZJxb z(44~w`V)4VBMAl)cABFJ)+g*V#}W)C>@>#{Y)IH?P9)fz(43PAh7y`{D#4b7=A2Hj zEy>Tn3AQKs`8UCElAnJQj3m5iJD*@QVR9}c*qP9riwVXOZmUZPb|p;CRD#_JlQW%Q zJYjM!C)krPIadnZc7me`&AF4{Si-)0H^K3QH*NP4oJ{ibZ-P@ve*R5xI?2z!3C<+>`8UDYBtQQq zIG@m*CkZYj>^@HuTuivPo+Y@HumwF&FqNj}-7 zOE8o0)H|QxX2MhN>jbwFo_gO184{j)-wGKLo_ZIA2MNu2Cp<`a)An9?knp{}Md3lh zQ||}iLBdn-#{`cPo_aqC84{j)KMNTW>hnd&knq&|Rd|r_+kD>=%qILc-;$6a@$ZRK z^midc!uM%@2pJN-PxDjAknmlcR(*=) zgyuA)_?6I{#uUHvQbJB+fvl0JPEg_Xh?Yy?nu#?@+91uqABG`xGP0-N`1Ohw4~IhC&ikS zcWJ#T)~38m>r2s^@-D4E#k!RD`~xZ4Qr@bqPtlRmoWT^GDNn~6Qgo#}9dAt0lhT|` zDSA_yvpGdyN^^!%^rvjiTT%?9Y|UF!45l<^TZ#=S&&k_UY)pAh9!{|-^XZfgR>`%F^CQ}?p*?116IG8dyhf_?X)aOWw z$&~sWO>sD7a*m}qk}^5RQyfj1oD(UIrA*Gr6vtEEzMV>OGNn1EQ=CfKc+R9aowD(q zO>s7*IpE5*H(J?D0c z`zgEfofHpJcICS%9;WQd_fkAc*_H37c$`w72PvMU)aPM}rz!P$l;T-ReIBQHo>HGD zDPE*Ji$6^Z&IGh=Tf{) z`Hj%|6bmW85&AmCyOa*SN%20VLvK?orgUf_#fOv*y%TPvbm)DGPbuH)TNHw%{95P- zAxO%vg?ED%F=^ zb4I25GYn-^Y9PawjOViT8MbCTmknmvma!vk$gn+QN7|TSIAcfJlwl-eN7|fWG-F2^ z$}pC(U2n;-E91FrYlht!&t=;(jA!&}dxkw3y&BH2H=|c08TMuLYBa%P^6#E$zxMnXxVH&TuGWTN=-BIAdGdli^6lwzN0H(TqKNUxs5Dci#RC z$20D{0~tAZ=6Lu`a z#f;nUc!ueWC$tk8E@wQUoy>40V_Q0v;YP-D+35^389UOM3^y}&q_Y|BWNb#~GThDB zjLv7cm+?e@A;ZIrN?pwGD5FxBGCaT@T<*No=e&G0Rw zIrlOwWi;o0hF=+dd640EMqeIg_><9>M;TU>*^nP+s4lZ1Kgm#2=C*p8VO5zs>Y13| zGI!K-F~4Q*s25^Z%iK(}VphxCOfSW(mbsZ;iMcGZ4bO?WEVB*Ii@7XQkk?`c%XH(7 zn87mLcq?YGOg9$9yp{R4e3zlG%qH_bLw}in)kQIHW&SNchyJb#ZO&Ryf zoV?mH?w2`vE6aFP=De*c<8hhuR#(Q8GUu(njOS%eSwk5w%AB&sGG@!1vZgZT%ABp{ zGUm&it(G!gmpNOj%UCFLqSlo0uFQ#ATgLk`C#toKk7b@e)|K(8%=1TE8K2AS0_|md zE3*M~l(AH11L!Q{dzlTOtBmC`C#t)QUu8~IPZ__e8NC&{ zJ61+th3@VuqrXCTcb73x;hpMu8S5()cuyIF6$-q!jExnZP4|_tslv1A{xUXKcs4yy z#?}fa?_e3*DxAEDGPYMZd6Q*~RQT6FRK{q9fBnN{?5I%NBW3KYFb7A=7^^S`$I94M zVGfR$vAaTTPn0oUVIoeJvA4o$JXOZN3a9aO8T%`o#xrG1R5*=i%b2Wi8qbw+sKRMH zU&fIN6LF!8qZKCNVj0IOY=@W1I9_2krph=`VK%1AI9XvfE|+nt!uzl*Wt^@sC0ENh zTVXrAR>rvsXZ3m+=PPW7H_EtF;Vsxq8B-Nb?aeZ#D?E|jD&tCp?%porYK89JDdSp& z?eK0H*DDnGUKuwk6!^ZFyb1+=P{z#)+u_49ZdGXUqcZMPcnkJe%w>gh{zS}Wh0kZ6 zmhrH{Td-$hE-Re)=VC4^JdwUA<7tH!&zAA5LW^ID39YaRz7i8!p~`b&LMv2xzKoX@ zs{Fc)R~0tFH)3ilY=UpatXBBDj)gMbRQMeBT^VmHd=C3w%xZ<_(8V$qD?EpODC0wg z=g^O0YAbAgpTyKw*!n(~@ukAn_oa-l6}G;wVv;Ltec!|+SNQ9*B{9jBy#JN)qmuVO zG1C?QkT?_n6f<4n|6IN-X1c=vx%^id|0;Y+`@4)4|M499N6h(u6y&d%?*FLwzcN<- zN4-~6u1Jcl+`(EcASX{w;}KU&gULDzq@q@{xH|7gkT3VQydC2K0^{g0Nct)TBe zTGCpmm04&L=tfl*+6B5%orMm8Zq#JqsX#Ys zv(P25cHhpzbAc86P8NCvR*kwW^a-pQ^;zf_*pW44VL)L0Xw1T(!1{4F3qu0y$Gt2J z3)G@13oj3!{{1YB2{htC7RCh{@h}S$0*!c-g-L-%G-qK-pb?L=FfGuCCs~*gXhcgE z<^;;nnuP^{9a&oz76o=>?O9k7m>@f{@K#`N_B0Fc1RBwqg=K+8bY)>x;H;`U3u^*r zRnM}pF3^MLS=bQhK~EMo1@>mWS=bWToAqU3TVPu3&%%ztE^QzSy8>kx%)(cJ9t>sS zyFd?KWZ{QE4~Da_C(whDEc_Jc!DtqK3H0D)7WM^t@G1*`1pXRhEDHw$6&TM#uE=LT zk%c27_wkciI4bh#Pi5hl$f_}&xmzNu#_P=85;3Su84g4?=m+^4~*!0h4kJtJUFWG`@5z`V#_;GBR3k-flq z0gEDgfeQkbMBei}0dGa#^LzpCMBej@0+tV-^d$i+BJcTS0jr14{EC40BE7#V;Dbo- zuL)Qa*&kdN@KI!ca6`bl$h&`2z=p`XUm##pDG6A1O&aTS^d=Z(@ZVC7*(t`>C-$Z&)Dd4+E52^(GI6M*60`^3DP$OVp zWT#Lo;J3(5;kJN3B0GgU0{)8Z6zT;06DdQzfCG^-GziF%SQi=vPg2bt0yMR22Q^^hi`4YR$rvffY>^3_ET#_hAmw?L>1?d)W zMWP_j1YDQs#&ZETB)ZWf;HJdH*DIhvV&dx)P$)6+^$RGHIF%d_P%P1sK>;NaEg2F} zD$$Y`0?H&>GAy86q9r2&Zb`IcR6vEqzVoGkN{Mr%R|2XecA#SdswH-y;{s|V`Z6J) zR-!MH0&Yw6WlF#uiM~t=sFUc+YXS8VeVGx^ATcAp5zr_xBhCuAD={O^3AiV5QaLZ6 zNuoIm0`5yRXHmcdiRLT`cqq}Fw*nqXH0PawW{Ku33wSKCD_s%rL}IF370@DaPx4+s ztHgZyK|q^Cht>qNOLXX?fDVZctqXW6(V-0ioe~||6woEnp)CR368qC_0na4%r#k|k zOYBcSWmJ)vNOuMFO0?;-fIf*feGxDqacb~2BaOt$^erQe#LDzNBaOt$^dlpU#LBdn zkw#)=`k9eNVrBXz;HAV)bw6W{#7_0MfH8?Pg+BtuCC(K73Yd^MQ}`!fO5!gD4+Kn0 z>{)X}yq4IjiFNCQhy{tRofNSs(X~?| zmL$4%TEtt4uALFFB2lxmB3318c22~5iFNC|hz}AqyC7msVg<_+@lm2?`6AY(!~82^ zLpsdAA~vPN{3~KhqGne_Y)jPas)!wlnq3p|S)yUrMSPK1%WjDHD$%f;BECs9tU$zf ziG~%5_#x4-A`yEM4J#J$Q=(xdB7R9UtW?Cl#Hv;%;K}ab+9F@66sS$BZreU=rj>|Ocwulol4Z9=aq)fx=M4XaoSiOkT zG7W1GaYm+LjUvvD97`UYTC4i0G5) z)vAbonO?mYF(A{c4%9Fi&5&x}Jd<@%LzNM_pJ&p0GAZU4?VB=ZX|e?%%-9DRePm|r90?x|PgAahwZqeNM8e0z({xnA`r&ChCSl|7G#!_)d3c&mNZ2|& zO(!L6%dCy3B{jY=)<#7Kip;S5C z|4JxR4)?zj$`w|>hZ1fntbUIqR4A-|%@QgVR=>v*suWhgClaa^R=*YrH43X=tAtvG z)vrxLox+;eE}>pwFW(`dL1FcKDxpzf_3M;yS7G(*l5kI9_3M_Q^?NSi zfx_z7BcWMg&Fhu$SYgfUlkh}g&Fh!YqOj%-NN81<-v%YLDXe}&65173zZViZ6xuW_ z;i*EKMkI79v}sgAmqMFfO6XQ-(<=!*3Txh&gkFU;Z(Ks3!kRZBpu!~L&>DdlkgD`8qW-2X~=t+1C`mN28Rms*kVMmgO7N|;sHOTCvcr?8j$AYoo% zFSRCNK{?$2N?245_rDUBl*9e6gtyA!{#U|^!maO?gjI!G-)#x+6>fcZGL|UZ`hLn- zqHycGo3TVWod0DkQ4Z&S8B3JI`CrBo<#7I&aYLa<-!pC~ocjI9xS??Bwmx_TABFWTSH@q3_3em^e+ui{Q5gpc>)SCIIqKp3Pe!hKIRBGzMCGpcq>Q5~cfF@% z98 z7iHwB6zP(Te3c?ymT^&~NLOTBQYq3^8JAV=daud2qSB`8GOnt$>4uCODn+^}5hzgl_J&2XizCqy^Kbc zA~ncpQt42mjQc7bx+~*>$}aq#jE5>kYLf9trAYT>G^-TpfsDs0MS3XXiAs?k$!Jk2 zQnQR!l_EWs(WX+QCo93)GP+cX)Fz`_rAX~Eo~ab6L&kHJB0ZJSqf(?! z8NDh+>XOl?QlxGf{VGLzCSyRQNY7;qsuZb5#*j*pdS#5L6sb?fs7jIgWxP}=(twOt zDn%NUF{V(u) zDbl!%d6gnf$XHM*(xi+5YsPl_Jf`_@L6E zIT>pz9h#T%QKdr*GS*c(v?yakr9(?HHdSW2w=%X=iu6v#wn~wfW$dUFX+_2-l_IUm z*i|Xgdl{cqiu6Ioca`smt;zVI@*S~{GWJxyBepK%r^q4MozX(&_F*TZh03?ZK4rAfcye|#T4+2upEFu$JUL%7T4+piUo%>0JVW0y zT4+2&-!ochJVQS+T4+2&dooUGJVQTaoYr`Teq{vFc!u^ff@nNLzcYepJVSpnf@nNL ze=~w;JVXC7f@nNL2N^*$cHB7%E^6FTBf*Tss-6;h(HKx1M3JNr)yE6(3HKx0>3W_wQyK@SPHKx1s3Q9Dl zy9)|RHKw~f1!Wr3UA}^Hjp^>9f?FEX-6aJT8q?in1(h1p-4z8@8q?iX1=SkU-8BU@ z8q?i%1+^N}-3iJk^-#>J@Zq%ybP3x-@3GMg`p(yYRaTo@q>X_Y^$W znC_Ys^k__X_Z9SNOm`0y^l7Yq4;A!ltbUIa3}~!=%?buJR=>vzhBT(TCkkF@?8jRa z3~TJiTNR9G?8n;_jB4!1+ZDXjIHBrL@JeH6{#3!3#?HJ`!MMhp*QH=WW6tYVFsU); zJyS5HG3Py3Fs(7?^(c6)G3WIvn9(?)>QgYMG3WIwnAe!|1{5r4%z1+f7B%L)Aq7hs zbKVODZ#Cw;VFm9r=DZOF%NldusDc%ZIq#){RgF3Cm4f#gbKaPO4;pjcxPmo}Id4M2 zM~yjeQo*{$oHwOlLu1aHRU~yI)(eB;FwO~b`>1gDcolTCv*z;MZrm(!hKb6MyG4v6r9!R+II!#bh`FK!Fipo z?J2mR)3u)p@^rfPOF_O)*Y-1p>2&RP#xR|({mB@nvr7KW7^bsI{>vDqvq~Oh4AWU9 zb5vZ{=~}Le8#-M(qT;4b*N&Dq>2)quANd*s?)X8 zD#~=ac1A_HPS?(=xTVvzb1Euyx^`YgrB2r_sHoEETAqq(ov!7psL|=#MHRI=UAv^> zwocbBtGJ`nwJR#>bh>s`MZM0c)io6jI)%HgqEV-CH&oo!DcnsJ_jC$ZprT2qaD^)F z>lCg?#RHwf6{~otQ@9cpk8}!Gs-jt^aAhi5bh=iqqE)ABw^X$0bge=~yH3|CRdncd ztxCmHovu}@=+x<2jfyUvuGOmO*6G@970-0Kc1Oi?ovziX=+Ws~y^3C)t~IFW)9G5H zihiB0-BmH5)3tjl26ejDq+&>?Yxh;W(COL(6~j7Rd#GYWr)!T?jOui)S;b48u02-q zN~dd2RE+6#twqJSPS;vhOz3p2O~s^6*V2$3_#k5Y>o~n4Q)3r_&Gdf-CQt?Ko zYuzel^~3$IiaDK=tmi7`bqd#`VnL^Hy($)U3fHG%NvClAD&Fc8Za~F5ox%;OSk@`r zkct(Z!o5(js#CaO74LNlH=^Q$PT@vXtmzc)rHYR_g?pu9U8itkDmHWqH?Cq+r*IQ0 zwsZT&pL&BqvDHB;bv8Q)hXPZif=lFn^*B& zr*I1@e&`f#QN^B4;g(eV)G6Fs6~A-}_fEyWPT`hS{MISlii$rvgB~-6~_$F(syJuRx^F7Z8?^4biVFs<`=KJwpmlpH@(o(| zQ^iGt*8Ng($)I)nDlQwe?zf672Ce&};;KRG{;IfU(7Jya>kKA>gN$_s6G4uKLW9EP zYA7-&+z}1M28BDSp~RqY$26206z;f&GK0dM&`@qrxRV-g85Hi6h6;nioz_rkP`EQ1 zstgKuRztNx;m&EOF(}-54YdY^yP)B=LE-W=+%YIzzJ@x3!d=u*Z&0{P8X61=cUeQD zLE)}wxNA_js~YYZ6z-aaCWFFV*KpsUa5pqOFeuzj4G#?pSD@jMLE#EDG#eDINW)`; z!WCVhx>60T2CXa8&}PuOat-YUt-Gb6!=QB)8lD=ou2Ms%LF=kCbQ!d+ zT0^%%>uNMSGiY6{hUW&YyRD(epmldN^cu9TPD7tT>*_W18?>%L!+=5S8Z`_WwC=8k zA%oW4)9}Kebxj(E4O(|!!-zra9%vXfXx&2%FAZAvNW&|G)-`JwGicpo4dVu_d!k{& zpmi-8CJkEGs$t5Yb!{4^4O-W(;k7~QIyB4}wC<^fHwLZi)G%w%x-JcK2CeJXFmKSh zXBrj^TK8PTqCx9=G%Ojku2;ibgVyzFcxTYMehte8tsBs=V$ixl4XXyN8`ALJpmi@a zd@yL;u!c2*){SWRXwbS*4eJK2d#Pc=pmnb_Y#Ov~Ov9Ez>&7)~8?NO|!oAb*&!BM28V(E!x1u4(;l63OXi~WE8ZMa>?uUlUCWYJ6aK)r>KQ&x6Dcmm& z*Gvkxui?5$;eKnlVN$q18g7~t?yrUdlQWNh8S6~WJPtC}nVfm#=qNU6U9OH2lhz&4 zQEJkAe>$qjox)VAoOj>tRN2N*YPU)yJY29fZ)h4Ywqoc;8b!T|A? zT6a~)eUsK*)A7Khb=P$~G-=%p9gj>}cT-2RN$U!9JT_@vp^hgett-;eV$!-|9jzv< zE78$r(z;R|?Ix`&)6rqlx^f*)Ol$^uFlpUg9m6KAyQgEs zq;*X?Mon6GU&l+6);-Yi%A|DSN$c8l%$T&UUB?@f)^+HZHEG>b9djnF>(nuC(z-4kOD2Wu*74S)aL;tSGb!A2 z9m^(#>(Q}dQn+3nt0sl()A8PBzBY-Lj5ci`K2^IAYPdRUJnyTK8VZF^krH&~eQqIDZOPFu8YQ^y&L)@|uHYtg!G9p@}sx1-~{Me9E4xM0z`T^)HAt^2Ga z-=cM2bX>G(-B%r#EL!(X$7PGweb;ftqIExXT(xN3o{no4t^29tx<%`L>9}Fhx_uot zEn4?mM}bA_{^%&QXx(2OMHa35m$A;`#_1qqoyAFSj)78(*5w)~vuNEB1LYR2J8IyT zMeB|ksIX|=aRZeWtvg|$%A$2A4OCmS?v#NVi`JbsP;1e;GX`#3wC=2dI~J`wXQ0la zb>|J#TeR+ifd-4#n<5+vS{691NSXjcg4U1i`HE=@X(@l z*9<(eXx()K%@(b@Vc@Yv>uwr&V$r$+11%PTq*(Yhi7Z5FL7HqdU-x)K8&7Og8a z@YJGpWd^z}3RiC6nML7l8F+3{xC#S37KN)c&}&h+Dg%8Mg{wBuZ&A1!0|OR?t2Hoa zQMlU%hAawq$G{7V!qpiVwkTY^ff0+sH5eGRC|sj~mllP)Yv7ed;qDn2vnX7XfpLq% z-8V2{QMd;NCM^p0(7=>M;T{>7wkTY)f!7v=du(9FqHs?Pys;=;i-B2-!nGQhvnX7f zfq9FUK#jo(Yi4MUo2WTZs4m$>n03*vuNFkXo7TNIaKff_9}JwdY2BKEQ#P&pXyCL>>(&jN zv1#3gfwMNP+ca>_rgd8e&fBzZ+rR~z*6kR`vuWKY1Nk9tKvuWKA1J`X@w`bsnP3wLdxM|b6Uj_~pDclJYw`~e{(!?E`!kscvXH&S-ChBbpcg946P2tX(XtXKZITLqn3U}VbJ)6Q^ zFwtaFxI7d0Z3>rf;(<-!E}D2~Q@Bee9@!M`vWaG!!d)@(*rsq-O+2wF+%*#|Hif%x zqSdBwH%zqI6z-;pcALT#nCP%6T%n1lHiauP(P>k-ViR39ySWk*-8QW&HSx@*b!8@= z+qACSM2}7DZkgz{X+YMFvT5A| z6Vo=WduZadP3s<+n6YVHvxzr0t$S=@)~0n&Ow8G|uEoT>P3u}sEZDTJ&BUTj>)K5$ z*|e_1#9N!zJvH&prgfbrmTg+sWn#sqb=@XbZCdxt#Cx08JvZ^ergc3g)@)kWYvQ9# z>-tQr+qACV#D-1l225<)v~JMEmQCx1Ol;eG;+swD#!Y;;Y2Ad0A2zLN;+IY9UYpprY2A#8 z-!`p#W8#lZ>t;>-wQ1d)iGMb&n>TS_)4Bx{IS#E`G?DAjx+N1w99s9*#Bqnhy)$vb zp>WG4PC68B#l$Ix!mXM(?NGS)CeAn%?t_W54uxAYan7M|A5ENhDBQY<3l4?bFp=j_ zxJ?uJ4u#t?anYf0+a@kK6mG}FWrxCjGI7PBaJwe1Iu!1+iE9pp`(om{L*c%fxZzN^ zZzgU!6z;o;0*Au=Fj44GxIGg^4u$(^qS&Euzf6=k6mH){sYBs@n<#TA+#eI=4u$(` z;+Dg`{lAQL4)^v48S5PG?Q<+tIkYayBHvYchW+=L+egiXmDuVX$y@Gtvh4ku0!k2TDa%Xx^otq99nnY!hMI=r{ z9y+ux-@+q@)?KvF?9jSP79Kma?y`j^4z0Ulp~azfS1q(UwC#8gaIkc|Y!V8Di)mRvIXkD#^5r@{@wlM0@x;qwLI<&6N z!YhZ?)ms>IXkCMaafjA5T9|NX-CYZl4z0UqValO(O%|pdT6f>VYlqf7urTA$x`!6t zIJEAOg;|HzHCvc-Xx(EA^A4?hVqw9dbuAVa9a`6FVacI&Z5G}-w65L4JBQYFSXg#w z-BSxI4z267uc8h3mHP(V=k9EUY^e?zx2xhr;z(*mNjduZ1m#!u46$b|_rG zg&l{&4OsZ(P`E)0yAFjLvhdlVa4#%;aVXrdg|7~U8?o@sp>U%XzB?4|rG+03g?nXT z&!KQ*7JfPuZrs8zhr&%**mo%0q=nxOg`2YQ$Dwf37XCUE?zM$~4uzYsaNtn5Hx_bS z{t9WDcrn;qb`M8uyD*}H@9fvxJ&DnESzv@-CGMMU0V0f!YP;5En7J4 z(z+E3XIxshYT>L)>)u;9=hC_l7S6l0Zq334m)3o>kmu66bqo0}t=q70(WP~p7B0E8 zZp*@Dm)31txZ={f9Sc`oTKCDqHJ8@yTDb1gy3ZDFxU}wzg_|y|`)Z-UrFGvd6uPwT zyM-c`*8Q+h?9#eD3nebC`)Q%nrFFk7l)1ES-$J=d>wa6f<(1MF=+e3iHXgaOF3(1@OY8D& zJa%c_MH^3CT6f7ti%aV++h}!Z-4z>cF0H$2qur%-*KBmSwC=i%r!K9#VWZQfbvJEv zxwNjpMz>4r3T-@dXHeR?C zuENH!OW`VQjJOo8%EqWm;i_%CbSYeojaM#(tF9*#;i->?%SAiDcl1a^Dc#ZXk)>paF1*( zx)iS2#*$0n9@}{9Qn)8J-nkU6#m2Hr;aY91xD>9<#;Qx<+HJgdDO`t*4=%g8r#9AH zTGwggqf6_$Y^=MquG_|jOY5H5*mP;#a~oSOt?RL|?b5nl8#^wo>$CC6rFH!_c3oOG zVB@n(>jrInacSLagEtsAwm=hC{DHh#La?v;&SF0C80 zvG3BlaT~u~S~p?ik4x(&ZTxj<-IR@gF0Grkap2Or*EVuIS~p`O*Q0fBY#i}u-K>qH z9<7_Ram=H2^EQrqv~I!136It-+BoUax+NQ@JX-hG#%Yh%y|Zz~qjk$R&U&eX&vK(YmiTiac8P%|@|D>%QA4@o3!- z8>Jqt+p|&T(Yl{D$~{{5%f>B_*6rJ<@Mzs{8!8`AaOWI6_9)zW2Twc-cfmo6N8$1uw0aaS-$9#4;VwF8 z_bA*Y2OS=TyX@epN8zqG==3PuRR>)jg}dgU+oN#T9X#_W+zkiMJqmZzL61k_3LNx$ z6t2)gpGV<}9Q1n>uGqnV$8N5~!JtR$N*xS&w64s-3y;>7I~ew8-7N+U+3^=REa2Xh{+YjQB}(YpH%7Cc(_z`>$N>mE8-@@U;72X8%E*X-b( zN9!ItSoUb$69+3Et!r_x>e0GZ2k$*v*XH1ZN9)=hta-Gq!@)<7);)Ew?$NqV2OA!( z>vFK^(YkI2TOO@@=3v{SbqZ>>^l06vgI^x4d+A``qjj$w{Pt+wn1eqats8gn z*Q0e44*q$xZqmVlN9(2>Q>s~uJ;?uer2S9GvoL-J*ljKCN4FaK@)~ZylWXDcm~;7kmo0>>$sla4Qb-eG0eg;G$3A z-aEMDQ@9TfF8dU2&A}C)!hLjb)u(Xl4zBqWZo|QKpTccAxZzW{EeAJ!3b*Z`z^8CK z4hnq=_sKz#PvLeQ6#EqJvx5?!!hLa2>QlI{4$6EA_sv1MPvO2hxaCv09}X&f3b*H= z(x-4g9aQ-g?w5mVpTg}ssPQS>ZwIwLh5O^+wol>yI=JKW7w7*n*7^L!`9a1ypYOor zxM=WcU9O8ppVl35ao4AHM_t_WY27gwO+KwV?&7{r>rS|M;M2O3E*|={?v#s1KCL_L zqS>c)XIwn?Y28^DPkdT;&P9t)>(0Aq^=aJ&7i~VR%X880)4F^Y9X_qQ=;EnQ>n^$I z^l9B?7hOKByW*nTr*&6dJo9PYH5bo)T6f(=k5B7vxajq1-AxyLKCLTo(eKl`LKg!* ztt)ad=+nAl7ehX+D{=9{r*)++hJ9LB=3>OBb>%KbeOh;oRk(QN)4EC*V?M2` zaxw1Hx@s2_KCP>9G3nE~S{GA3t-I}F+NX7QT)g&aU7d>=pVrm8c;nN$1{bqFt!s2K z=hM2oF6Mn&chALwPwSdoEc&$WzKbQF);)0X)~9t3UA*&Y-6I#vKCNqZvEtLZ$1YZV zTKB}od!N>|xcK1Hx>gr!KCNqW@zJMs?Jm}RTG!!X!>4smU2OWauG7VqPwTo|eDWz= zw~Jk$!aZ~G*{5*NU3~E=T#t*dK85Rb@y(}jeJ;NH6t3UJ51+yfxY+Y4+@On}K7|`{ z@yn-hFI?>V6mHnXZ=b@AxcK8!xKS5>eG2!|#Xq0Iy>fBjQ@Ak~IRW3F8F!HzP`C*f zM*<2r>EdWW;ig<13n<*Qi{k->d+p*xK;dRwoD3-38yBYn3ODQGbU@+eT$~9g+`Nmk z0fk#|aV}stx9H-0KB_b#pk zwC;n8s{yTBb8#)8bst?^4`|)GiyHy0+i-C+pmm!r3IbZU<)Sd4b=xkA0$R7@qBx*+ zpInp#v~Jf$X+Y~fyC@52-4_?-0j>M$;#NTGzPYFfXx(=gl>x2$;i4*_b$c$V16udf zMNL5Kez~X(Xx+Yx+X1cn?cz>A>;AZ?3uxV67xe+H`0j)dg;eJ5tj(K-7Tpm6OTwgU>+;bA9WH}}-Tr-0UVde{wUU6+T?0j=xy@Fk#i z&pdn$Xx(!U-vV0Kv}!>2xwiOhrNK-^?Udk(7FK+zXDn}=wUygbweJ02ej^m zhd%+W8}{%wpmif2{spvd)WbnQ>t1@u32EIc54j<&8}o1^q;=ySj)t^u!o#tU)=hdi z9@4rg4<|xeH|^nMNb6pEI2F>m84ssJTKC4onUL1adN>=>x;YQ$LRvTP;e1Hz7Cc-C zY2BiSypYx{dB_iG-CGYALt6LF!=;ecEqk~e(z+E7S3+91>fvfg>)v~~7Sg&89mCY1TDRe$Fr;;x9*RO*x8%MuY3TfSU57i;9`{AJ`q;-29YC~H0)5GnM*8TEu zC!}@z9_m6`_uE5#NbCN1Xb5TDUk{BTt^1d;F629f2N~-^zEhav<3UK_a(z4uDclhs zk3tG})JJnj;g0!u98$RBKAwaW?u3t)kiwnx(Hc^?Q$E^43U}H^dr0BV_~-~J+*uz_ zLkf4!M`uXk&im*JDcl7g-64g`^YJXCaQQx-hZOFjkDidiUGmWzQn<@L`a%kK#YcZg z;ja1^2r1k(AA=!mKAAEP0KEAsI&q;SPPUWM%D zN_>okw64_0cu4EYd`yJ2uH46DNb7F-mZm=9n!igA2T7XtM>6Gq;)ku zWtimYb+>)YhqUgFkA;xd)%jQqXz?`e9@4t! zK7NF>uE)n-Nb7oi{0wPbpO0T5t?T!(AJV!3AHPFdH|XO}Nb81t{0(W{3m^YNS~u+D zAf$C8K5`;jH|irdqIEBQ9EoV%D<4NAS~uq7SVZf_eH@Qy-Gq-55v`l_aWbNHQ$9{b zv~JqR>4?_7_Hibnbu&KBMzrpYk8=^NoAq%%qIGjVE=06$-bY?U>lS?EN3?Fy$Hj=& zE%~?<(Ym)ju0|B@osVk~g)lh{C=1Q4mqM4?YSb3b*E?D57v5 zeH2F&Zrw*oMBz4kltvV8(??lE;kJB~M-*<`$E}FM?f9sODBLF>l@W#8^-&d3xX(VS zBMSG$M@>ZGzWS(*DBL$6w<8Mo-N&7X!u{}37g4x9AN3K1`{|=0qHw=_G)5F|-^bmE z!u|GfFQRaNd^ANA?yryg5#O5rm$5G5Thj*_>mt52ofF_uMC)<`G)J`VNPx!?tvedv zNkr?81!#$A-SGge5v@BBpe>?xCj+!cwC+@Zj)>Ns4)8Rhb!P%}Mzrp1fUbzvoeR(% z(Yo^io<+3oLV)KHt;-A06VbZ-0KE~dyBMG^qIH)7^hdPra)5z|)?EoO7}2_`0fr)4 zcP+q+h}K;XFdWgk8v#ZlT6Z(RXhiD@0=$f9U15M%5v?lg(-Ez^72tJ5>nZ}wM6|9lz?+EHRRx%hXkB%Hxro-)1elL#U2TAc zh}PW>uo%(0I{}s=T2~j~ZA9zp1H6l9T|)r<_ifP@40L3w_TMJMU)4GoVN@H5L z9-u6ybsGW7V_LTv;8slQwgObdv~D{egtTUY299c#+cUq3~)E5b-x1Ki)r0{fToz%{SI(H zrgeV;Jcw!C-vAF|TK6wwUCb{;9AvDE`Gts_5RYS8mmA_qOzVz>Xo+dv(GaaMtveQ? zEv9wHL$t@V?nH==nAV*P@ieA&r$ThbwC;3>u9()H3DF(Xy0amk#kB5Ri03h_J0GGa zrgaxW^v1L+(bN$F%NZh=G{aT?#Q6)4IzchGJTGCB%!E)?E!T9MigMAx2_a zcRj>tOzUohcp1~Wn;~Asw5}k;SWN2*LyX6?t|-JrOzVn6OvbdXB*auq>quNu^3ah>JUpYg{ukiHl}d3A>PFl?skaf zn8Mu&u@Y0bx)7@|g{u$oKBjODAwI+ut}(<~OyTZ^_!v{Tdm+|i3fB~3Bc^coLu|$r z?m>vHn8G~_u^m&mM;QWV+z+2;!8~7T0?w|DO_8KZ!v{y z5Ai*wa2+9j#O&sthS-Z~U1x}&F|F$g@hhfv-68g4TK6o(@0iv-5Ai3abv+^e#3-C&3#39TCnaWtWIFG3tkXx(s#;|Z-B32`E!b)z9p zCbaHlh*JrzdllkzLhHstoJnZic!;wJt(ypOE}?akAk#<~ zt(ysPF`;#DLR?B{-E4@<39Xw8aV4R3^C7M#v~D59wS?9!hPa;4x}^{|5?c2*#La}( zy$ey0(7NRig$b=&2~m{Ly44WH39Wk{q9mbpA3~HSv~Dd#SwibRhA2;H-Fk>y39Z`* zQIXKP%@CCdt=kGwmC(BF5Y-8-+X+#V(7I0{Y7<(w8{&3C>pq9LlhC>^A?gxZ_ccU) zLhHVTXh>+?_YjQigwBM*9gonJ zP`DEjx)Ta_GQzWj!kvonJfU!>BlIK`?o5QNpc zTwa8sgu>-Vc#%-JixGws3U?{ONJ8N*M;J{g+?5C~6AE`V!mEVBU5hZ5P`K+6#uEy6 zBf>;N;ciBlOekDIgsFtW6-Jm&C|ps5*9nCyjxdw3n=6U%CZTnu5oQxwR~BI|p>^dE z<`Y_XE5brT>nb8FCbX_H!cs!(sv^8iXkB%LcL}YliLji|y4naU39Y*wVKt$3cOtw` zXkA@|4+*WSkFb`|x`qfJ6I$08VLhRBcOz^hwC-Mn&4ku9Mc7Jc-TesL39Wk&VJD$= z4vwAbpsKOrfA(@gkvdMHx%J`iq^e|a3V$Ph9jIz(Ylccr&6?TG{Wf=t$P{a zOp4aMif}eX>&7CSOVPUV272$S@!fi*mlcI1t5$aMD?o)*N6ouQ3(2$~VpCdG;DBPC_cT*JZYlM3# z3imBSQ;NcUk8nRl;eJGTkfLyV5gw)}+|LM)QWWl2gys~5+mG-#Md5x&c#@)UetDvY6u&@tkg+bsFA(O$=t$AJ+!#+&wC+fZ&J?XX8lx*k>yE|fPSLvK zF`lJp-H8~_Q?%}6jGh#&I~AihMe9z-=u6SMGco#8wC-$-ffTJf7h^C*>(0j*O3}It zFxyH{rf6MBjJXu8D~&OqqIG34 z7E-jXJjP;**4>J+l%jPNG2W(VU1f}SDOy(*V>w0Zs$;CAXkAT=)fBC(jqyH3>u$&R zkfL>WVyvZTU0sZiDOy(_V?9Od8e(juXkBBB%@nP>8)GX)>+Z$aPSLui7&|FicR$9b z6s>y@V>d(~bqIHjAd`Z!|<``d7wC-_?Zz)>$B*ym?t!s(#BSq_4W9+49U0aNw zDO%Sa<5!B-b;Q_D(YmKGey3<%XN*57TGtihAVuN2W8|dy&BA9fa?=#2j1y@JHxT1wn!*jnIF+VwLorULDcp+~XVMgIIL6sDg&T=+ zE=}P^W1LS@xR)_5q$%917y~1a zq-ovT7^P`i_bx_Rn$|7HC{NS6l^D0uv~D#rD@$-jOsM4`xv7p zP3zWU)TU|OMvU8OTDKYFPMX$j#i&cuy6qVCX%PT!kfwFtV?0dLx*stfrD@$>jOH}0`x)bLn%4b_@gz;__G7f9 zY2EJ_t!Y~KCq`SE*8Ppqo~CvGGS;Q}wbg@+b!mPHIwwJAn%3ne=t|SNBMG|GwC-qv zXK7k@EWz_MtvjBeCr#^4B`%MT6Z`3KPtxXuCyiJHbYp!re)*nWk`c3AWM{u0Fwbn!+_C*hy2k#sr_z6z*<<-86-}m*8`n z!ZjuMlBRI?6MRimxCaTor77IQ1mDvX?oomtX$sezU@uMK9w+#jrf^RZ{7O@}mIV80 z3fG$8cbdYrCHRx3aP0~HrYT%Uf`4gtb59c-q-kAef}Ctx*OeeQo7QzFIFe24o+UV% zP3xW~IF?Q8dJ-JZrggmuPGr-%z62+;XN^mxt*1bq@ zE}Pa3Cpe!?>qZh>$fk9p3G%XO-OB{|*|hFef{WR-ZY;s2Y+5&-;Bq#tn@Dgao7PPx zxSCDtrV?DsrghT^u4mJ_*9mT9)4G`iH?wKon*;^fv~D&*VK%LsOHh*f;_XVbcc z1SQ$DZZSb=HmzGqP?k;W-XHn7QE2gfmO%J$vzE6q%LPi>8F6Ji5RWj0l@734Z=isAA zk!GSubCFSQQ#uS6Galup@T)+kQUI8294(`48tnWFwu(W(In6vkL ze($sPDX*Y)uYbj$pmlG4#gL$NZ-2$Gpmpzl#co0C-v5d{g4TWb6(fSyef$-pg4TWd z6?+A(`}`~R30n8%SL_$G?(45OAZXpUUoj?V-S=NHE@<74Xr16^O#h7534X?OMS=-I z;VKgx6%=k!f@6ZhElzM;P`D)tP6!IOG{H$h;g%&hB`DnT1g8ast4eT2P`DKd&I$^* zGQl}P;Z`L$FDTsV1Q!H_Ta)0Tpm1vwToM$nI>BW@;c60G5frXA!Bs)w)+M+mC|q5F zNkQT26HEyT*N|XZP`Jhf*9C=ZN^nC^xb+EU1chr(a8ppY4GCrig=&_>rm9*|cf_0MCT})6XY2Bp+^^(?IPS7A}-IWB5lGa^K&?ITy zwFK)Wt(#2HENR_Tf(??^O($rPwC;L>jgr>gNYE;2-AsZuN$YMVXqU8ZHbIA^b+;01 zlC16YP`} z?oonXN#PzR*d;04lLUQ|!aYsUFDcx!1Ot-7Jx?$wDcp+$Lz2S1OfW1d+^Yn;C53yP zV2`A5ZxW113imd_sHAZ366}=}?tOxNlEQsRuwPQRj|mP)3im0&n51x@6O2m=_a(tW zN#VXGI3y|Dw*-eJh5Mf1h~%f}|A^K}ev1CjXr1Jz=vSmTCTU$|isO>jElP1h(z?Yd zPD)z0B*iI7>z1ZCEot4d6lWx@Tb|;qq;*v(&PiIgBE@-0>sF??AZgvI6c;6}Tb<&P zq;+djT$Z$MZHgWstDrsF!iffYA)uxz~v~FFBDM{<^AfEyaCF>)KO1 zkhHEN#hj#dn^Me6TGyH4p`>+PDIQ5$w>iaQN$a{(Jdw0+ONytG)@@DkOwziZ6wf8C z+m_;mq;=aLn%H?w?9RN zqICySR4Q6GmST~jb>k@(D_VCj#S%s94y9PGDBR%`Rf@tLNwGpvxQP@i6@@#RVwIwB z$5O0T6z+J6HHyNWNU>H?xRWWW6@@#MqDE1;(S}qHyO^ zG$;ypAw{F2a2HcFDGGNf#d<~IE~jW#6z)oj4T{2DP0^w#+_e-N6@{Bj(W)riREjo5 z;iglxD++f#MTeqrH&Sd;6mBL(r=oB-Q*UX zrsz?$?p}&*iq_pvv0c%+2Pt+aS~r(sr=oT9DS8#HdzfOEqIHi_^eI~RI7Pprbx%?Z zC|dV4#h{{f&r%F2TK7D~u%dM@QtVc=?q!NSiq^eKF`{VQ>lCAk*1buwSJAq+DfTH^ z_b$bLMeE+DIG||VhZJLq)_qJdu4vt-6bBWp`<&vCqIF+V99FdMYl;HIK=jRLcZ)-?&-QnYTpz->kAng#AC zTDL*quA+4<0{0ZH+bD2f(YjWF2a49U3Ct;4*Df%xXkCZEV@2UM2|Q60u2bNtqHtXT z&lH8*Ebv@WxNd20z*0@&#srpWrnzx}<(k$V6sXd) z?vTI=P3sN|tkksbh`=gM>m~$NYg%_yV2!4A#{|}DT6bKaTGP4{0yUb}ofN3mwC^cSfLI)4H<)4Vu=S6KK@5?z}*grgawt)@xdKQJ`7Vx=R8ZG_AWV(4uMG z6@iVK)?F27)wJ%KK%1s@lLGCU)=dd?Xj(Tduu0Rp>jIsc*4+^3(zI?yV6&!mHwC&i zt(z6tqG{bNfvuX>-4^K4wC;|;Hcjj93T)T3?w-I7P3!Ip?9{aGfk3aOb#nr{G_9K# z=+m_Bp+LW;b&muFG_89qFsNzW6M-R3>z)b>Yg+eAV7I1q&jt2qTK7U=MAN#L0;8JN zy%N}~Y29mqeVW$25!kP3-CKbJn%2D&7}K=wy}-Dpbsq!{YFhVE;E<+up9BtTTK8Gt zh^BR41ST}C`zml$)4Fd0$26_`E^u7ax*yRx&FM%#qjj3okt!t4XbM*;aaL2fMH1&U zgG+xT-1KN{MTl!mW~+)D&*D z#FVCRYb2&Mgy!ARXS54~%B)(}{Hz@I4 z)4CyvADY$;OZ?QdZns2*p>=yCDh;h0kyvDC-KfN3L+kcREHSihpTtr_>-I}5Gqmo2 z#BxLH#w4l?ts9qEVQAe!iIs-d9grP438(Mc-qQTI*GZKx4)}57TGPLfT#Ck*P&Py~KT6aNW zgQ0a7C0Y!vyCkvE(7MYKt%lZJk!Ult?y5w)p>@|JIt;Cwl-Oiw-IPS9p>@*|U53_O zm)LA*-3^IuL+fTFwisG>Q(~*3b+ZyZhSuGZ*k)+mZHeuM*4>flH5Bfy#4bbO?n(3+ z3U^Q81jv5O0N#dBHaGxcPo8tU8i4&$c|4rhgDb9bBIAx0S-y}|(;{3O0ohilQ0qG_-Ds!X-oNmMUB}v~HQg6+`QmD_k|Su1evW zp>-=1CJn7ysW4?|-71A?L+e&6TsO3CjlvB>>((mF7+P1YaMRGb8iiRy>uMEl8Ctha z;kKc5bqaS3t*ckKYiM1A!aYOl8WrvvTGyoTz|gw&3Uh|mH7m>;TDL*rp`mpx3Xcq} z+o-V!&ke2Hr0~Mfx=w|chSqf{yfU$(-* z7+SYQ;jN){TNU0JTGylS-q5;j3Lgxu+ph4@(7GK8pA4-rVG8(KG@@War$L4}`&)(t6CSXwu%P-$u1ZiPjb*6mSPY-!zy!V*jCMirJ? zTDMnWnWc666qZ|Bw_l;k(z*i*D=e)WQ&?$f-MGRkOY06QthTi7kV3VkaEBFYEQLFw zP-`jNgu*&Y;f^ZQSqgVdq25xs;|dLy!ktiPv=r{7LX)L%rxey(3U^we*;2SO3L7ki zJFC!QDcm`Qjh4clS7@~q?t(&_rEnJ&+AW2szR5gaMu(z zTM9R+&}}K)l)@HE;ieU~S_*evp~q6V8w%Sjg_}{>ZYkVNg&mf{%_{7)OmnvsdM&NH zt+30|x;qMeme$=>=(n`)p2C2ob@vqpEvlSNVwzO`E z#uZEJmTFwJv~HQkHB0N3YfM^NSEVs!Y26BqX-n%?YFxLpZk5IjOY2r^%vf5tM&qWX zb!#88xMgWwjmB+D>uNRbSX#GE(z;fSXO`BrX*{>Iu3h7WrF9(|A1w{r zr18npuuhH7mWFj{e6ciav&L6T!@4!TSsJ!Q_8ugBb9nffS zG;Bx#xMN4c(Q^f}6PO{3pYu1SpnN4cgn1|8*^));b>>$=9U zqg*#Mc00;7qp`n2IC^zQW6aU3yBgz;Uft6;=;+mb zjYE!JJ{Q8fP56dZ}^N(W_S)=N!Fyt#RJbt2facN3Y&Sa~!>T7tL|>>U}iF(W?*9 z97nG{Mqgan=IGU@=!+}sjH}Pl7gyF1S6`wfjSg zKAi^ZJYPT5Wl-n&?D}Sdde3LqyA2vVpK;n^(CGP$(^i8f&#SOK2J1bq!frEY_Ph$a z-C%>~HHsYuEuPmXb{cH-%sF&knZNV5g@!`wV(L&Dn3T%hQ|# z27R99j2ZNMnlo-N;Azf5gF(;SbjV=HQ=h{I!=CyaG1%>?&xFAqPkoLWjCksE%wW`0 zpW_C5J@q+Zu+LMUlLlj+=A1GZ_cZ6U!6DCXb;jVZXEHx)aKtm2pEH>7Oy=hej(R5Z z3kJtLyV^yARunrak9X-Z!}JIg$5)!3|$F5Ve>ynDJ$OaW!vn)0g$e)kA|>U$!Hz z9vR&BH0QCw9nXyP#Ne){K2HrEc$)Jpy5Y;(;&(icZg}eRBD&$J&r5?xp8C8pcmsnH=&I4a+u_$mJ_%e&df%CwZTPz8j2VP~dG;kjH3X5f-?62Yx zT4}L7a5DHRi>koM;HxcG1WpEDW3e)DGWc4HRe_Vit1VUsP6n^BSQ9uIyw+lE;AHT1 z7S(~1!Rst)0w;slThsG&HoS=0y42w!i}5V+%OwrC98@olhZ z3f%FvSga4sO&cwm19MZW#fHG#)Mn8dn3mct+5*#3hedl}TH0jM5tx=bEj9(Fr7nxk zz_hg4qAM^hbz5u>OiNoVx&zbFR*NlxX{pCzYhYU1X3-OvmbP1L3rtHpEVc)xrJWW# z0@G5j#m>OAw9BG5FfH|2>#(6qtfeSX>TFK_@M) z1g4-<7FPpP&}oZnfhp*W#bjU#I%_c%n1aq(Ob4c*^A^_wQ_uyA8-Xe4qQy*L3c6%* zGcW~RwwMh}L02qp1*V{@7PkXa&^3!YfhlOx;%;CHnzFbTn1ZG)?gyrz>lP0JQ_u~I zxxf@OV=*6?f^J$o3`{|@7LNi&x@GY=P^8-yPXa}{WAQvtq`MX`0!6xK@iI`P`xb8k z9eQB#HqfCti+6!}Xx`#|phyobJ_L&N$l_z5NRKVP1d8;;;%lHtPc6O$iu5eH5h&90 z=tiJOFQOZPBE5`mWZaj%if&}wm%WZ|WZaj%iEd=vm%WW{WZaj%i*97xm%Wc}WEAN` zbR(lkAEO%?Mfw!o$ha^29NoycFZ&YR$ha^28r{g)>ApobGIqM}(T$9q?niVZW2gHW z-N@MKDjaGvid5;aE~7|`9O^QPwAi6Oqex2}8ZwHs)S)q>NXs0WGK#d^VSPrCsvMd# zinPLELq?HSI<#aIX_dpqj3TXeXw4|n8i%%wBCU03&nQy0Lq|rDY8*CY6sgvsGowiB z9J(@!ROhfIqe%4*TQiE(;Lwv%q(+Br8AWPx*q%|O^$t5Siq!0|Gowfw9C|Z~)Z(x! zqevSa`Z9{t>d>E2q&A0vj3Tu=3}zIm!(k|+NShpnGm6ydusfqjT@HIPinQ5bB%?^( z4x<@G+TyS`qexpF_GJ{Q$KgQ6?7hulEaNqR?GED^Q}_;tgBer!PKQGoQ+Th#k&Ghk za+t^{QlG=oj3V_roXF_VfWyg*4h=e-%IMIL!|9BTn_Bu5GWw#f-bQeGZp0?%MV{T+S%h0f#FY@b~Ct|JcDGs-pLa3iB!M;&G|%5}`)W=6S=JIrR3>x9FtjB=fHxSdh1Qx11B z%5~b|ZbrGzINZx9*I9@A8Ra_X@F1gH=N;xU%5}kEKBHV09Uf+s>ypEhj9y)Kc$(3x zD-O>xdUe&|c}B0UIlRc|)uhAAj9yJSyvpd+w8QI+`?u>3Z!*et!{Kd4xn>;RWt8it z!-uS_Iri>ZhmToVQ(WD0_>`43#MNzw${g$Ej>DoHJJ?-^#W{Acdk#x;te5)^%W|xj z2M)_~td}{5svK>acUY05O%EMb=4jI+hgCV+^w?o_jy64USd*hoPaW3gXwx%?>Ktu) z?ogAXO)sJ)Iok9xT9Ttpuc9S6+VnbFlA}#;q9r-n^fp?OqfPIkB{|ykKDv=(_Wlsv z$T53=jBezZy+1`aa?IYJqZ>J9?=R7f9JBY==thp&`&)D)$L#$*x{+h{{t?~CF?;`X z*qmebuJGv2QKU+btvT-L7J2mKitm5(*p@54|IK52uK4~pj~%(<``sorCMjv_U99LQ0mMvt)^MQZXG&rziH9tU$2soCRDjv{UF zIGm$MEgna56ltT!M6tqJJ&qPDtj*(CvBKItj^~(>Iy_F~xVziraiLg4ogNp9HPq#C zsaQjsJuVk(sN3U8v4*yITrJknR*%UX_381L%2A(f9@9DMv)$u*j{5BIxRIkiJ3VG{ z)Th_uW{&#o@|ew0pFWRUIqK8zaW_YE20ZTNXwIO={T$61@|Y`D&alUPv2u2MJSpK|o&h{xv~eVOq1lA|w2J-+7X%Q25{Ir?(k<9m+2obdRO zqc0~te&*=QDUXUguVSC}sLb;kz!{H4d0qoJ>#;b`YXIjwmgTwgKku|(3D3_o(@fW z)aL2Xb&qvDMMJnHjw=%zhmfZk*7YdqY-)P^ClXRr#^3^5qZ|o zyC_4R-RgamAv#x$b8S<>FpHYT9>#8DPJkKjil>rCyyrQ%y;831dlokgZ&hv`Wl7J(5UQt>a zFj1_lWdX;F)wDd|M6sHx0#4?O&;JITE7s7;fb+!~S`~1iSVOA=E*5KOO~9pM4Xq8h zT&$t$fNRCdsR@`YR!(ieRIzf_1xyz!r!L@nv2yAIZWJr0Az-#xFO31WiuKYIaJyJ9 z>jUl->!ms1Zn0iA1l%juOH069u}U@u%onSqHQ-^fO4)t7KEa z^L+97kAN4&D(MP%S*()H0k4Wx(jD+RUwr-};7ze!wg$W}R!L95hhmj%3;0;9lI;PX zidC{B;B%hR>6*-}97aSHO=vrRfX!nWr@U0Tt!!Q3C;$`Z$DTFTi;_64++vw!Rl=qRTQ z2Ld|FnM=k3y35%s#shlFi`V}Gddrzq4+ZQgXBIsiFjijN|Hk?&r}7iA*2-!7(O6;S zd<-57I9<-i;PF^t<$UCwh?P^$$J@zR8|6%br(#8v^H`mZ=e(Sco-^^Rmh;Nk*??!| zd@P)cXQ8}oYfM$=<8dx$BD)ZeWI5B<#egLXDdDAf&lfUtT@I*ONY}0eG%jTJz8bJ` zA(gro@A*Pz>dAP27t)-mfb9!;kER3q7gCk$0YeK}FE;|tF60%ynRq`I@-clg-j9X6 zUN;*svyfNmZpDgSSls`{np{}c9)IUMvFa9bhkG|x*h21W@5O3b$UW@+SS1U&bA1r& zpul547teWt$9_KEqXPE^4+E+T{GA^K)E9Ub9tSiR*kPZ<^IKpyeHzeJU=Mv3?^}Tx z{dqi>h2rzS@xB#!>|e(FR-k6D0!9j~&es8>1y<*qfPDqt%ePUBLfN)>Ki&nLD)214 zkLR~g)*WyA5OAhY))iMD;}I&9ZHlW;@thZU&p$_13T3VFwl7hYLRm{(eT}LVc;3E6 zRSHba-{UbYFg5=OxKb#qi~sItz|}%oZCq7kxK?28R%VziF#9aZFje50UYud3z+Sc_ z!_5NE`O*xt1@^LK8EzHW%a&)jU0^S(%5bN^UbZ5`-2!{r$_)1k>}9Jm+%K?7R%dun zU@u#fVXnYlwl>3jfxWCc!@~l5SxtsV1@^Mq437)!W$Q9LDa5+^I}7TvlD{8|^B*m! z&r1HFth5ZJe}U5f{+rVOQBwLhD6J^LU(Ni{f`+W*56epb8A|^WrT_CcrT?p>^lx!% z<_{M%W+nfitn`mj`tMQtzkgHue@p&Dys;@O`G;jCs-mRyck$0(SCsU}gS0*?`KJ{n zEi4KK5S zGyc54jtk#Z_tiZ)f7|o3mg3NkvIjyuF*N(m$^#8H=}X$$t6g6(#>?=64IWa#iZ$ zfA{YyN+#mhda_^sWktzT{1sf)j9$#DGD2eWvXOaG*#^iSiVD*4ybzg@5Z I3;y{30e4KpasU7T diff --git a/MDK-ARM/NUCLEO-F103RB/chrono.d b/MDK-ARM/NUCLEO-F103RB/chrono.d deleted file mode 100644 index ff9866b..0000000 --- a/MDK-ARM/NUCLEO-F103RB/chrono.d +++ /dev/null @@ -1,10 +0,0 @@ -nucleo-f103rb\chrono.o: ..\Services\Chrono.c -nucleo-f103rb\chrono.o: ..\Services\Chrono.h -nucleo-f103rb\chrono.o: ..\Inc\stm32f103xb.h -nucleo-f103rb\chrono.o: C:\Users\elies\AppData\Local\Arm\Packs\ARM\CMSIS\5.6.0\CMSIS\Core\Include\core_cm3.h -nucleo-f103rb\chrono.o: F:\Keil\ARM\ARMCC\Bin\..\include\stdint.h -nucleo-f103rb\chrono.o: C:\Users\elies\AppData\Local\Arm\Packs\ARM\CMSIS\5.6.0\CMSIS\Core\Include\cmsis_version.h -nucleo-f103rb\chrono.o: C:\Users\elies\AppData\Local\Arm\Packs\ARM\CMSIS\5.6.0\CMSIS\Core\Include\cmsis_compiler.h -nucleo-f103rb\chrono.o: C:\Users\elies\AppData\Local\Arm\Packs\ARM\CMSIS\5.6.0\CMSIS\Core\Include\cmsis_armcc.h -nucleo-f103rb\chrono.o: ..\Inc\system_stm32f1xx.h -nucleo-f103rb\chrono.o: ..\MyDrivers\MyTimer.h diff --git a/MDK-ARM/NUCLEO-F103RB/chrono.o b/MDK-ARM/NUCLEO-F103RB/chrono.o deleted file mode 100644 index 89c9964b65ce05b9f316c98b8f130a32f098f1a1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 396688 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

    <|Oc~wY$$xg&FJIRn>kCE~7xAU*oA%dV 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

    xrmSW?{x`>P#GC*L>!5Z2#kKZiHwr| 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 TE#Ao|$=M!mltg~28le9dvYm@( diff --git a/MDK-ARM/NUCLEO-F103RB/gouvernail.crf b/MDK-ARM/NUCLEO-F103RB/gouvernail.crf deleted file mode 100644 index 3ff275a183b5af724c3f8454d687f5dc69a1137c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 18 Wcmcb?!N9=8$N&VgH&}p71|L`!?Kr-?o=oNC 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

  • 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 My)|q8u;!ote^v*?asU7T diff --git a/MDK-ARM/NUCLEO-F103RB/mytimer.d b/MDK-ARM/NUCLEO-F103RB/mytimer.d deleted file mode 100644 index d7b0ed2..0000000 --- a/MDK-ARM/NUCLEO-F103RB/mytimer.d +++ /dev/null @@ -1,8 +0,0 @@ -nucleo-f103rb\mytimer.o: ..\MyDrivers\MyTimer.c -nucleo-f103rb\mytimer.o: ..\Inc\stm32f103xb.h -nucleo-f103rb\mytimer.o: C:\Users\elies\AppData\Local\Arm\Packs\ARM\CMSIS\5.6.0\CMSIS\Core\Include\core_cm3.h -nucleo-f103rb\mytimer.o: F:\Keil\ARM\ARMCC\Bin\..\include\stdint.h -nucleo-f103rb\mytimer.o: C:\Users\elies\AppData\Local\Arm\Packs\ARM\CMSIS\5.6.0\CMSIS\Core\Include\cmsis_version.h -nucleo-f103rb\mytimer.o: C:\Users\elies\AppData\Local\Arm\Packs\ARM\CMSIS\5.6.0\CMSIS\Core\Include\cmsis_compiler.h -nucleo-f103rb\mytimer.o: C:\Users\elies\AppData\Local\Arm\Packs\ARM\CMSIS\5.6.0\CMSIS\Core\Include\cmsis_armcc.h -nucleo-f103rb\mytimer.o: ..\Inc\system_stm32f1xx.h diff --git a/MDK-ARM/NUCLEO-F103RB/mytimer.o b/MDK-ARM/NUCLEO-F103RB/mytimer.o deleted file mode 100644 index 85a31d532f4822fd89cbccf7c55c5a93c19f7ce8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 399776 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

    -`$Oe(al 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 E2h7T%fB*mh diff --git a/MDK-ARM/NUCLEO-F103RB/stm32f1xx_ll_rcc.d b/MDK-ARM/NUCLEO-F103RB/stm32f1xx_ll_rcc.d deleted file mode 100644 index d632c3a..0000000 --- a/MDK-ARM/NUCLEO-F103RB/stm32f1xx_ll_rcc.d +++ /dev/null @@ -1,10 +0,0 @@ -nucleo-f103rb\stm32f1xx_ll_rcc.o: ..\LLDrivers\src\stm32f1xx_ll_rcc.c -nucleo-f103rb\stm32f1xx_ll_rcc.o: ..\LLDrivers\inc\stm32f1xx_ll_rcc.h -nucleo-f103rb\stm32f1xx_ll_rcc.o: ..\Inc\stm32f1xx.h -nucleo-f103rb\stm32f1xx_ll_rcc.o: ..\Inc\stm32f103xb.h -nucleo-f103rb\stm32f1xx_ll_rcc.o: C:\Users\elies\AppData\Local\Arm\Packs\ARM\CMSIS\5.6.0\CMSIS\Core\Include\core_cm3.h -nucleo-f103rb\stm32f1xx_ll_rcc.o: F:\Keil\ARM\ARMCC\Bin\..\include\stdint.h -nucleo-f103rb\stm32f1xx_ll_rcc.o: C:\Users\elies\AppData\Local\Arm\Packs\ARM\CMSIS\5.6.0\CMSIS\Core\Include\cmsis_version.h -nucleo-f103rb\stm32f1xx_ll_rcc.o: C:\Users\elies\AppData\Local\Arm\Packs\ARM\CMSIS\5.6.0\CMSIS\Core\Include\cmsis_compiler.h -nucleo-f103rb\stm32f1xx_ll_rcc.o: C:\Users\elies\AppData\Local\Arm\Packs\ARM\CMSIS\5.6.0\CMSIS\Core\Include\cmsis_armcc.h -nucleo-f103rb\stm32f1xx_ll_rcc.o: ..\Inc\system_stm32f1xx.h diff --git a/MDK-ARM/NUCLEO-F103RB/stm32f1xx_ll_rcc.o b/MDK-ARM/NUCLEO-F103RB/stm32f1xx_ll_rcc.o deleted file mode 100644 index 32a609518c2d8d443fae9862628b0118f643d9ee..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 413376 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�(i(i{~K1xRx-prm*;FR*AM*gUW(EGQVZfCYUA{O!-f8aw@A zhPE&dDl{!i-b>WCGar*d$@F(sIIuupoClQ-L#AfIP90d1S+xU6$sJhELb`7fhL1N; z-phl<4tP6t;Qh?X9RMYFV5JH}$FKvd@?fn4V5bhO&aB#jq~s2)VnE>na zV6g+j2oP1Di9eb|5La1H1ldz$<20(f3(3COAaOG)}%igDYQQwaC%Nf$1Dt{5Tg*}d?p5yF1m3$Ga=?A5*Sx)H)Y z-3xCRA>0`9!kb12w}ia#`y}jPQrF{|XMaeM4io91?^~xxr-^jZZy2UXPZR0+%(Hh= zq?d{Gdgj@?De`+0`8|DlIYs_pB7dOoLB|Nq8@YJqcfcNE0OzHST|G2$9)UhWSi#fh zi3s|44SU7R&0p-x#mT7#f;=^1L2#4-znWlaf|_=Q|A#OFeyK1;jdX;S7AC2Yj-MmpL`3scod$5?4$vKr}lBh~53VVbY6nwU;lj?s*rU}8FDIYx7KqKWCG z21&lk}8<=-hX&`=nKR8 z4e8PKT=T~Zy@&Rrjj_Dg(e>Q#^wsD7`MDnd+9Uk07q$F>XgVvJKaysJXnIyOeMqxX zG`-52jvl00C7Rz?G);e2i{=j%P1Bz>qItfeY5KEXG{gGPn@3%L4=Zcy zG&XANBXn?z>FrBtnh(GRmGtc%{HFxuOYx09RwNoDAvZaXGF8RU%_5@l4ejnNTbuB1 z`xX}xq@3tskj6&Dt>_S-YM8f8J4L^Q{j%PY=iS&3CDgHWGZwQ@MlkUbi1 zW>2?FOkSM#x=0a}T!i`z9SRc-v5!hOB>Y{Hi$Omn(9i#lSITfU6Z&KTvUuVB>9KRHEYCYjV+)9%pHo{jUm3EFXX zgf!eR;WSP<(9J+@nxGwL&k(*P;Rb8QDJ|c|sE$*b{vM-toKm3jasDKp9<=+iZ-3r_ z*Gr2*bkIb)Yt=H(LYz;F`zg#z9c7(A`opW;gFIL|DXBT*CFaA-m%yrI`lCz;`|fa> zWX(U$U3TwXaXm>cUF>#6cJA3O2vzS~eUu=Fx z?keUNU2h~8pIC9Iyi(1|qm>*RGY$34%$J6$N*?O$By7&ENayzu=VZYOJXwi7*Siv0 zbWENvvJO`U7QpKQggs$&5Nx4U3n;`H@=glt0?iYNle;Jn3J%UwYR-6x`EKS*U{x}G zaV9LxqpbNQxhtPXnQK{c=>p9o*RGi7;q=1W6WB{f9%Mv_q0 z=s@Q(uqO*v;K@qtz2243qGR%Yk#)K( z{WJ(&890*%h3=;puDEA2AJ9`7IF|{_(+itFpSz0F3tbnJE3W2R1}^znCCSl9DZcDH zX^5r_Ts5M+3|z~jmHgt0dp+|RxGe)WGGRHt*!<1hRm?BCZYP(n&peMq8TdYrR&s32 zl;s~XUmB_^sUdoQKM7@x4s2)2xTBT2=>sb z1r*{8d7Q$!K=b&x4E&r21qbITHD|oUe3JPRSd~owB@-6rQP%v^+?CIx%r*Rf4Yyt> zpbIpQl*_<~JSZcDGJswh>B!8NMyeDZ>8K=>MVjGU21aMG3OhLoJ;u8dS#%5@n`F8` zGnvc4xI9=v8!xfPXTAhiCDSK>(3OFSc~Izndf|#YDf0n6m4V5buspr6`6;=pIK9v{ zHM!zyu4Q1Fk5!T!jg;c)&Xa~{%D@aG%FDpaJX*;wuDEYxJ_EO9U{)q9=NFrQGj|p9 zi>^7zrRy`#<4^|X=Fv)yjhV7MFY~3Ls*)O_C$J}>tkHqaWng|5tiY3%*bBTXp+(2! zcSP39m4QX@x&WaJLB}== zVIF18zn8o6d6c<6NG@HVd8AwhR^&k$DU<GjjsVaG-tCCO_X@+wdSe?Zx z?Bpc$8t+PE(J^>!lIa4?WG(~i@?ZsRyu@Cg`4U`}O#cXkt_*C*gF^Sy3s>BYnGfix z3~b7T<>`gZZ_ZuC>4mPX$rV>~Ed$$ptdittq!e#=o-{;L26h-xUIupN(Mo=C#r-7n z8MrM2yE0)pzu5fl+*Qmky7nZOuFpJ=LmAkcM=LotX3FwsnJ*1hmDCV@?KlZ#jSh4! z1N*aJ1)i+LKHyymEjlKDF0$XdGH@7P7a){@=pfh^RxO|qXULHh)&-i!$7SGX9uyp$ zr_`MB67#Ffm%yrI`q!DTFpsk4zsX(sJjz_hl1mq89x0cB<9Sd<3T1#AHC`I&cbPAZ zRFyo^6Gly@bv=ooxD$#j8cGM9lfd9Z>uUSglkddnL%fK}st0XxZDaF^FCk@e* zftyB@mw{V(w31(3ac^fn1Gi=1`%GBQFE;-}?keUNT|Xt4uFpJ=Lm9Y}M=LotX3Fy2 z%$J6$N@|F{jFE)0Mh7~Vf%{po0#8Q)B`iM+em`ACV=3@}l{K(vu&!fyW zI=OU#=8mT z%U#9%qHBI~>H5s`IFx|}d9;#aW2P)G%zSC6s-%YKt1d|>YjmJ<8F(iPR^Z7>>_y&{ z(4u4V5|KUc%D_^1U4T#qqJv<|tXe=J&XD&~SQls>AD4mm^Pu41Jf-H0mzW=9z64e! z(^q7|!aT~FUzxk|d6cYkwV5xCRFyo^bxA0TG{dL+?st(J}a=B+~_&$y^3Dt_*C+gF^Sy3s>B& znGfix3~bAU<>`gZZ_i!D>4mNx$rV>~Edx7!tdittq!fSRJZXrg4D2?dybOGrM=SZo z6?aeOGjLl5_GZFzezEz_a#u0G=-QuLx<2zf4rSm#9<&E6kv>J`4DG|7c3NVO4hGCC5FHO!lmB+Y^#W8~%LH5aPz z)JD9i=tw-)FmGCt(0U*^UTLOdq(T!D!CnV_Vl@gz%}9c9`U{OugPB>d0!&t7zTsU7 zD>^36O0s6#XSS7ZVx+vK;J9?$w8F) zM$HU~GGRds4vZ&Un2-xGA{cX_*EFLh!n_Uo2x0}J-bn&|PIm{-jYSX;khzR!P_Pi^ zU8_zQiZf+#40rv#ude<)DVAWQ%uy48mV!Q#Siz`eR-h*r7n-{+_Qgh|J9VWo=*>v>aSz(%xHXklE^@X%JHq=x~n@u7Tlu`%`$ajo+pvPU>_ z>rm7oXI671v)+eVnCv6Zht7k{j==l~MV*1k3*-hLYGJaEm>Zo3nVo^T2}SbD3w$PQ z_MsLg`-r*4d63yNFt?&eetUsWi)}vC!ek#Yw>u9qdj;mlDEfWKEuSAde5i%VK4R{4 z9%TMLFh4=j9|Du_81C|+7AE_Mx!ZY=`G>&VV?_OAhs3uD_hO*N3m&3<271FH1)1qn zDJ*!QyY~wN`wf%-$K{77&%r`eneiE{O?Ai`Aoii$%pE{2_u@;IHcL^D=J_-6k5CAk z)AdM2A-$neWmc!?kAH-%>Cti{+^Z;!e{j#fiIxuS8UK-b_H9K`?OE0k4ewaFk=Qfz zaL-OeOQ-gX|42PMSy5DbmNi5@J5_EZ_6$ATv$N6CQ+vjLq@JCtD5^cn8ls+^FEx%8&n{OK)t+SyQO~ZF8;Lzb5BKbPwESLs#($)q-KZ$4JTS=JEs?8kB=v1jPvp52X>=e1}2N9x(VilW-HtRd>z z{c4O>0M8|q@@Yaa^sP z)J5mxE>1``UT(OHX|dxjPONIGUCi5}E>5bole*}9+{M?Djn^ISVp{dMi&LwbY8Ugi zsEgBT?W8U`A9ry^vhf1MT};a#cX4J_Q|)5j7IpEBT05zW&c|Jxoou`kaTn7%$X%RM z)l|Efw?$o?TWcqE(fPQG^OKF2B<^Bb5V?yBs+wvS^R}pq3v2D9E;=7~adEQoy4YhF zcQX8~j}dFuJ^IXolhV)T#pRTrM@BMwh*$HFulJLbml0_-{Ee-ybW&-RrLNUANy=xw zv>N`#R@XbJw8~P~>V_oclT}&`e`Bkgom5(7scUsxlJfZ_t%kp`)g4YMt+Ld$x+_Wf zl#o`#-`MINCzV!N>RR2Gq&$nI)$ljAdeBLwRhGI|4<{*4JZUxjjjbMWQfZZ?uGMc@ z8me;D^qS~{p zA?n%bawD;4=;5B7ia`H zpDT)L&$5Q7XHUwF#Gavtdp6>KZ*JB|A*E#_{l$IbEyBpEMtWDeF7a(q_eRy);SMHp z`ir|b#@SwanSSV0e^8S?OvQa1TNOzkJIvjn1c0`vi{om|xGp9icX52p7C!l;KhcV* zPHj-CiT!G|5&j^Q{%~u1BNM8PbT$v0)Sq*0Z)9S%5%^(*_C_XE8-brpXm4bSYvhH2 zLkIj9{q0M>%llecp+`OZs0>02MZY`T;^1TbdNOdW{zNOR}U7)C)`)WzAgW?UDOkGnXhW~-brMfTikBjq!u z*vPzUBjq!u*vMPeM#^VQv61=JM#^VQv5|$Yku=%q!1EdNc3GiE-JLNENsZ7Ef2Zho zhufYpi<5!(V0^};9Uz}EOR5^_SANFiZBgfz*4jz^b3UGq%bhLF)=;9kkMC7Qnmd2S zFbdkDF1}xD#&t3IxQiduY?U*n$X-!xqToMUmNflldep7Hg2qHq+j_Nlea~k z+f-{O_0RcuI&N{cG+WIXv$ZPH-1#$xQP383aa*k!*Tv-HE^e>cDrZcQ{c*LC@)=WX zWJk4;@)=WXWM{RJ@)=WX57@pnEh3a^eaDO^0ugR2Wsu4{y85{$3xDRW~(`4KCg;2cm9lF6tqQM zJX~wWbusz4i(k}il{2Qu{<7Lg`HU$xa-`Zw`HU$xaR8w@)=WXtgb87thyhl{2QuzEEwXe8vi4Yh{HVb$7-vBsD@u{Cd&v4!1pHZY2ZX zWuKK4XfF+^;rLK4XfFJg7EOK4XfFJghcSK4XfFJa&zw$*yP2 z&t-)kb$7-vBsD@u{7KR84!1pHeoY3x_snNZy7SFv%<%ss-kozA=~sTnI2}!G>fDH0 zJE?!p$J23?v!&T;&Y00vk><{yF^qz?sEcE2&A2WmA9rzV%~m;MitKUKM#^VQv61oB zM#^VQv5{A+jg-%rVj~l(jg-%rVk47WBWbeh88f-8(4+3o7>1-q=!j1#`rYBSXUyx# z(4%>)NZz#$f8)E>Gc#$LH$6o9d>{Ti#2al=nnm(stKpaKX0?j>{qW{v7JuZH-)t4@ z52VS@r_F8^_mpnPuc^&x755S`b-DS#$Gl7|N!77YZyVhLr;~U3Ilb>}Kz_RG&S5%---f&fZTmX-cn~y?ffEe)jHd z6}#E{S*zI1-hHiNH+%QDirwrzn2F1?_psB+?B(>j+52TCP3d*B_eh)6&)%c0VmEug zY8AWL`*o|>&E9WX#cuW<%f#i`dm`!heyYsg@HfuhQ<*fS*UjG3ZBjpb&$No&>^<8m zcC+_ftJuxn^Q~exdoO0<^6b6hbTWH6y>9ki%cLp2ZuVYplls|vqgCu?@6A@Ro4vPM z#cuZAZWX)P`$Hx!&)z#p$M-g6_J+T4_TI~+DZOs?-fxro+54bX>}K!7RM2<>t^qiHmRSzueFNZ?48;wcC&X{tJuxn z>8)ZnduL?g^6Z`EbTWH6y>9l-&ZH^5ZuZV;lls{^w^i(B@4QyAo4s$firws;-zs*q zcVQ+j&)!8z$M^hX_J+T4_Abt(DZOs?E@_kc*}Jq=>}Kz>R^;;fcC+{MRHd3vq46V6&S9VoQxCDugFd2I!K4dO(A9sSJdB5*RdEpmWs-V` zbP4p4#0n-|j)IqZcXfvh^5adeV4zG=50S2dK9X3$q-#;o`xW}S10O5?@a}aClu7C# z(hbl@5-XT=GYMW8EF^xE$t?_2Na7*VZO|uDqhQkaQPADpM@ak#lOHfpCaH%=KY~7z zSiz*9q98szP2bSD<3eRvv=QwtIwHf{R;X>Vg-|i|DU{2 z5uKj7HXw|NSBViAD3jDfq>-SHBvvqKR20yYdPi7s1A(BhrF~aj!;6_uu8L;zuV=fY-|?aS&*tRYyz{XUL=&?otRpF>x}y zUWSN+AXBV5LYg>3UW?(Oy$5N5;$k=zBV~@72s91!k;Do{O^*V4k2O?6p5U+B*UOk- zAjk}(jR=Y|U=|0vX<~Q%wa*ZKL>Ybms;Rbbx=2m|7dd95gIP(#xH(bM{rABy3XVrK z*G0;>=px)abVOXxFz&4=={;~LJ@@T^A|iqKj~g(GhV$!?-0;(o7Y3A|0Q?OI@Ul zi!Q<~Lr25~4da$aNpnC2$0zf9E>gxt7vbJVN5lmU<35Oz=70(=d}nio3zd1%M!c2i zh`gX--l`~Rj;QkZR9NjoWnQ!qZw)#kFKC#zHcFa9syyDSt#hF=FWQK=9vzVvG|c-j zN}6LT&k_u~jgMTY%!@YSZ9qrl1r75yMoDu}mB(kpCKoF6qK$Z)(Ght;!@Mm~(i~Lf z@#(PDh045WBi=T2L|)J^Z+nz92UU4|K78y#WnQ!qZwEReFKC#zGfJ9+D!fi!%sz3U zGB4VQw+kJS7c|V<9VLCzWAu49@+n4yCeL1Nwq;F?Q4_)TfIhNV!Klxopj)3`-^ttH zeGm}P^Wno&3K9!(_FHwtG;yXJuwgAdj5&xA;m9*y4TntxIs|%4l81$UZUu5`cksFubXM@JKZ21eicN$%3VMr@M}vMH1p^1aBBh(>`!^5}kULCb zA0vqrdW(|7 zblM8!F!ki(at0$+lpdzDptmSFOcz+t)xQTlmw6EEATPRzu*{hYE;?41(808%A^$Va zUN(}K2M&}Y#_Q4*AIb+88dDz;uR4!GvWl74jEElLFHByXuKQ4psXk)fa2~^C6*F%p zQCI)LgM`WT`j!t>n9)bf+s>1iLB-4;MbyEEQf4Sm(4SmHh;S&4i-32~Aw1PE?yiwg zvh|E;E+%Ax`Nx`t6f8X!-i;6pk5|7uE1isZx;qw6ICjz9%A%?9CZ!z9rod<}Hbmp#xuxJl@VPb)hmZ+K9Id9g!C_%zK|D{hE8* zulz~g7U0?P0S0oI^$=?X=ou9iOj?-)L;j|3Ks4ok6$UCK@sNHs=o6_?FlkK`&_opy zmxi?%D3jDfq;;T=Bvvr#!ziFB8qPJ|O?(8e3&&ifG?@_xVK!KGq%?7cY_wr|+nJt_ zWiA)7sZF5eFHLo(OIXxy1}%R#s#i_BHEO$cpy77THVDW_^$F0;UZY`(hlaY{%HvR* zI1lyX817O`Cnt0V1S%Nu5N4;9M@$oE%x(_9K))^XLf4RR*m%x=3a<+#ezUI`jqwm> zkJU3q{lgHDteBG~AobGp3#&F+kqgr=ZMc#ZZR!YU%UMzFQP7sN zqS~*bcIaR99tO|muOT2KHJ4M(NX0_O{~N20BW>b*{J*u~;z(0d$3R;eY0@5#+JP^; zDDT;Y8y4STMEY;mq^AFBq5+%$eH;NRcnBw>VCaDO;RxPCoWe*Mr6xk127N@af>GyL z&^>@|Sakm#KFe~!MRFFn2zC)2OiLQZT}qNJN=kSWuPJ($F;IbthxAuKpHPj0Nmr9# z0Q?f^H4Icp;vv#?&?i!(VA72w==XR1l|Q}|y6Gaqq7~Fu1Wu7U33v-#iO3p8-cFLC z-HPnw8S=dg2{Zl(7~fKD4!0VK_yc+pku^-b6C{1R$=P?H)OKE`?z)Ho<-664vo6Bj zLr1_x4dd<`N%x=RQ#*W7^1wv|XU?{6Zc1E)dx#E$Ycz~|WF-UiK6ofjk9|xBhzBu1 z#Y@zmoy}q!6?318Xke4o-rc?BRsrYr*DMynsg!j01uJof|KB0y@pS>me+TjiCzE>2 zDIS@{TFGoB@+fa}WU0@ios6pkebR@oA;x6ERA?KkZ0HcQd&pi89l3+!hkAVs-Rn!HbPpDW?7bXE# z)VDEEA*G7?4(JmpR@6mFpmp)N-*H8K*F}VtRa8p8Iw_5d(Upj)qAp1iEsW3oE>zT| zE+kA>QHiKVA}&KuBBqM^evtI-CMQzvJEV@3T)L<5`rxQe|{_;cVxj< zv{uxe-saF!QFn{%&vLkIMg26370FoN zqV9JxsHg|BU@KZH>OpUFXsM`&oD3@J=UK27trhjKw>h*_)FVMQpfjteM_ojycImP% zI>cY0BLJg@{Lei5b&_C3{RRUSSgNSsfQMLm`TSW%B-ph8L&^*hifQmm*al0fUC zRMe9$BCM>UQu5VFX*`9lL`)U+bdqRc)QWn>g@oxUDiPI4#Ixv0#8go)1WDg+a$-fj z=pq8dike)6yM&H_i!GC%Zdn)!R@5slA~-uOxv5l9ucE`?Vnw}XC9a}g_c0xyuc$Oe zQ&Dd?o5jY8dRs&ToBX(n`h6CQV5q3pO3D4f+XS2toZugw%vRK&vRErwE9xC@b7ZNg zcbyC>>b)%3iq?vH-`gBoD(V9#gNphv3$~)QqCWCAhn9-^L}Y)K!(}V#FIlWe1}h!u zr`{&yq@!l&D<@87E9&t7C*06b3zx#?O&_?2);ERaa~j^}$Wl>9IvG^dQCYBc&{|PP zdz(W`MIGa0P*KNb!B(_Z)N$VC&{9z+u&k@O4TvRfA_jzM7B1_d<2woT42udrvXhel zOWYI;R7k1By$1S3iY0Dp5@?~45;x67gyl*c_gkGbwCU(d#8l#5PZF(ETHOyBTSXME2k%-bw(v;YDvseVD z8rPNGhh6M#0!|1fFL5$kOlcT2Ix?ZALA zp~fW-9p9ax4=`<&%+EagNfKa<+l7G&Db={$piiV&<33FStyEIu_PB_!vKmJtQzs2= zFS-&j)ws`+L`#*{xP2}pOjqNGs7500M^7TA8h0p2;_b_Hf`0BI0>qj_Jh}KI++lPC zTx^;A^eqn~!5a6aizqJRr5bkxEru6s+)*RZI;A!4D<6wUSL0}q>ZMVB?Q8~{YTPjq zrQ4P%vB$Gm1VfE$a;uks#Qo0O1e_3@;S)|~Yuw2!)=JhIcgouwS!&#ACxaSyCJVNr zwZ@(GHiwoPch1S6#+}cCt!S-r7rf1(rN&(rS-NeRj`Wo*RwRR!j`US;6LQi~GtWGG z&B<(yyPm~b$y(!Xc$*_jjl1b&P~&c8!B(`^xZB?5&{E^RcQUAPKV-pHwAQ#Ez0IMe z#@%CC|3UQKj{z?YkdI05<-mOx5vr+j;G#qP038fW8uHU8DWZff$vf#MXn9`o^}r(^ z5@1iWST?OCBOxCj^Na6CEyCrjX~Adv---^QKbB6XZDeG}0EI9c{4fkbXz@#hOCyGR|!E;@Eo&;ht! z;ac@IkjP5MAH1LHB6XZDa?{WOI9cGPgG81${>;qlE>g$o!ZrgPfRjaSCP-vSFQLqHkvfiDgnJ7e zfcqD@tpSn_SysaH6c+ecofwRSTtBcfe zT9&q<18`E7wu8i$rH@^tj?=QV108^qva}NAAhBiXQx~b@ zv@GpG2jHYE?FES~OP{$&9j9e!A36XhWobW1Y*{+sB6XaWrGw}IoRpq!zjxT#@a57;7ZIW>Ox8&2{V6mBWYka-^c547*y41? zhYF+A#O(C|ok7=}2bnU1uA|5ntQ$Vm!qk#=(|M37Me7!dY}LB$LoH0LTi-hmGNp3; zfFfJEe)ORhrWUWCoCldwzV4vN)~~xh)WXyXcF%c`DK+dqifj>k;6p7;En^Rz2bogH z9-+uqvd2Eu!qi&!v-2QRs@W41VLAIH3$|cmL3`?52-cGJtCQ(+#5HYr2j5ZBWv+u) z6Zf5ETByTvO;Ng~MyuEe?{Z{WlSVoj6t+=Wux-q`E{*msN0yaojFUli8=D2&$hta> z^Dal0^=U$oamIT0={6N^qKgRBRXA&;Oiw~nU`7o!K~D-niLG!`e5f!`ZA>fNYtDm6 zsc=(Kq*JP?aMOIKg{kvty7M4YX4C5^vK4NI54A9LCe3snWXe2x14XvN&GMlZrp}=^ zod=mRgJz@1R=7Dn)WXyXH`jTPDHU!Wifn~@%ZFN+TH)q94>F~~EkKd2a0`8?g{c+p zZRbIzRJeCgWGmbvA8KK0g?ra|kSP^zF^X)3TjE14Os#NBod=mx;g+GuR=DLp)WXyX z_nz}0Q!3p1D8dT&K^APm#tOH>yAZ4uZl#mya>NyGRTgX`>x#76yBt~8q%}?k6>e=7 zY$NNsw9dO6Syra?P6ie3!z|cF*461F?{Z{WpEd% zJzBd#Z%J~TKD7c{MfPBzO416l7xb1S)#EcOu(e|!2C5{j8~Z_TNm4ToSb?n=2Qg43 zX|*^6dP|Z@@wpY)I&l~SRg%_-FFuS0lg(jE%??7uo4_|p(-p^f#c|~IIRHRfkc-IUjI+HP@Si%#YuDkPu7c5Ac0l? zvOoI13V3>(9ARou@0ud2|3z){YAxk;S8f->tsrLUo?5AD7SpJXt|5 zgG82)4t~4(iVM|wx{6#y2k>MaxdswhNWwS&ue(s4r)$X#bO29Qlbaxs<)nk(u)gI& zb)K#$x6uJSSyR3Ti7YA|{85-6T&T{|b>&BN08dtypFko@O9#JYeaD6BJY8Mxq62uc zzTC5tPT7QXhL0AxP?Z;Kw3~Q<4$C7A`RSuYAd&SYeE(P z;rFSZxKN#^>&q|b0G_NbPeCHH0FflkX{otz2hM;K}+j0wl7&gvVcu zbfG#=*OyV~0G_Nbqd_9;ODC@{V_c}t)AeO6I)EqZ%Q%q8`Vt;oKi-AvJY8R2MF;R? zeVG6fSzp3q_WH)|a_K(ve-m&BH(eW;`^uw?H3Is^F2$w*na$@5>fopi0tFEd;$K$(Y`@0$nnj ztHpOPP$lVlxd`-@B&+4SRv?Qdf1GDA2C5`oDVKoWl4PA+Y6Y@P@-A!{2C5`oBbS5T zl4ON^&kAIL-wISJQrhh3=7(-q|lbO2B9 z3xPxym2eGr#D(fSU005x19*CO2qdz!glo93U8v5})#V#>08j4`SqWal9dn^7FJ8kP zM~CI>H2aB9l+CjL?Ds%C0xT@aiKa-*O#m40G{3> z0*S0I;TrC`3)OkLzT7|u@bn%LNMwBp*KoI7sLs>%O5Uv zenbcG^d1pNWPJ(OaCcm&&eQefE;@jx_lT?nui@^yP?Z<2;U1vF^7I<+AxLC>3DWTuDq_T(En;WZf;@5@GDpi0tF zjRd_V$(a6s=H3KKuJX#(j6fJ;8<#1JT-1A1R=&br4|}=2q!g2@T-}vQWuh!JWM!rR zchf6dWvg7YF?cb&c6HUN76J(&1QN4AAcO=$3>rW}2oPcr^C*c)fB=a}AjCY2ssDS< z**E@uB2I|)s{JUhWjiwV-uJsV;>M19{)kMSlp9c)#SC{c3n2-8Ihp)9$=Y&CZm_bH z8SWGoLK2#CD*1Dg_2j9!!D>=wxM?heBy{9y7tbVrPO?@!D>qmv$_#fl3n2-Ocn8N$hb*WHUGH&H z%tKqu8bNK|HMdki}|4XSmCq6!Xv=3phbMtpAY3%0p+k zg-(ij=#MKoK|HJik;N)RXSl1K6!Xv`*KmS(SPLSH6^YJpi=7nn&?QSaK|HJok;Upn zXSi#f6!Xw1*KvY)SQjFTm5R=A%bgVS&@0z-f_PXRB8ydv&Tuz4DdwSFR&s)PSR=|U zJj31Oq>xw6a5r-z=V69hMHcH9o#AeAQp`iYtmXvqtY2;=3ob}>jmSwc5B+jGCy0kN zBC=S&=nS{UNih%oawjKC&fJU%M+X+9@dC*3(s&HoD}lP8SW`g^QJnNU|)iSJZhTFtK16Y%)(7gVmwTa38Y}lF)^pkUu9`6K>B9R)jLceab>eLJNLI{+whT_<3&N z8SV=wg|Kpl`;rqm4l~@u{baRA+e3flEBygDUGH&H%tKpD;so)mFHRzh6^71mCp#(T zp))3Pf_PZ@A&b?9&TywVDdwR$rgDOKSpOl5m50u7)0`CZ&>yF9f_PX3B8yds&TywY zDdwR?&fo;`uogrXD-xaIW;!Y6p-ax>1o5yUL>8+Po#D=QQp`i6oWlv?VO@wURw_Ef zo#&*Ohh90K6U4*n5Lv8RbcVaYNih%Yav>*(hc%+y!ZX}OP6~PD40kanavo;5Ib^X* z5uM>KaZ=1fzs%(X@vL7iB?~S{WQLpPq?m_(na>I0VU36^)-O84UGAiqhkjYW3F2Xm zh%DAGI>Rk=Qp`iYT*(RIVU36^)-O84UG1cphkm(+6U4(B5m~HXbcS2(q?m_(S;7h8 zVU36^)-O84UF)Qnhkm(^6U4(B5m~HXbcS2*q?m_(xt{?ImwRcp4@=SEM~ZSSqMq!%lpWmldLW8 z&ka_VGQ&NJVA1T6Bi{)JZW9?eZBX zh=(57fuR!FCvqNUxQYAA8j)U|v{}FC40ocFVjlWs5+{gf{c;jna6uw7 z+{sRgdFYqPoFE?7h{$67qBGnnPKtTxm#Lf}9@dD+V*R2s+%zY}JoL+HoFE?7h{$67 zqBGp-PKtTxmoqp)JggCs#rj2OxS39hdFYojIYB(E5s}6EMQ6CPofPxXFXwQAcvvGM zi}j1naOXKG=AmEC=LGSvMno3t7oFiQa8k@ezg)-(;$e*_x9|*ik&{ARIm2DdiJXTS zZVp+jUv!4M#7Qv^{W6ym#It^xua^DmX1L2(XaLJHX+FA~{EC7jg)7wsxxo%huFI}q zAtd3b7Lq?F*)d(28&H|W40ja^AqjnXHTiRrwdFOr!OBu*xJ4|4BsAq>^5-P$$tAhL zYEovnr7VObbmX<<&q>yh*X0H)NSWc5u@I8bj?2lPldK!B&ka_MGQ+K4Ata#}Zy|#%hP#o4kc39OiTpXq`tau5V09=n+$t7A61wmf^5-OL!qvIKicn^_TUiK6 zXu;dapOdTuZ_f=p!`cw&k5pTEr={uBs#-A=A@X1E_s|2#KVdZS*%WUhI`UUF%ONhffK~Tx)52c zRCI=W+DS1Fz48nvh=Q~g zWU+qH8SX_V#XR)OOPnB{^~=j-!3BxTaIZKi=AmD|^UyDEaDsSPBO;6Si_UOwIVt9$U*6^f@vufj7V8(C;ofyp%tODt z#|h$LjfgDPFFM10;G~#`e)*6S#KRg9S*%}lhWpq_F%SLn2`7k$H6pTDzvvA2sgq(J z`sFiD5D#laxrJxAFPs$e${FrUPUJkya1#%ZH6opUhFQPp40ocFVjlWs5+{gf{W4iC z2h`1QQ&?yK%Q9&`I)(g-f+K}1)v39`4ot4gPGun^;i#sOKPTBSot7I=nZ*n@orREu zzC4}$Imz1cjND*lDKp#*7D5u5awhq6lJ(@7xxs2uX1KFh2ubM3v&o;6tRc_I4OWmc z!=1}QNJ2ZFNB*2--FSX(uxgYUZWaq63B7m$`E!!B;)S`vN>OIG*(`)4G~z|%&q>yY z7v~16Lz&^`un>~ag_n>&Cs`BD%?(zBGQ(ZULP$aj&Le+LvJRY|8+eAh%t;}voZ&9# zM2^D@w}33D3SIAUQp`hJEaU|7tS_!4ixq~>a924g=AkpL<^=Ju@eN!@cOFn1_COi4(-Le%Ydy1M6nES6OHP%Q9&`dX4;wf+K}1)vdX~4ot4g zUS}aB;i$HeKPTBSy^$MGnZ*qECJP}6efbvobCR{?+quEYQf9b!SO`gI%6G}1ldLD- z%MDhOGQ+*kLP$bKen9@5WDWUYZm@!s8SWz%LK52XWAf)D>&8!VgH@x8N$l`N5$5f_PZ@A&b?9&TuoF6!Xv=GdV##tpAY3%0p+kvz!$3 z&>v@Wf_PX3B8yds&T!{CDdwR?&f^5}uogrXD-xaIW;rS5p-V2{1o5yUL>8+Po#AFX zDdwS3F5(37ur5RvD;1sL<~S+l;Tr1_P7u$UWiDB)T6BiH)JZW9?J|!O#KRgzDh~a!}n2cRvdaU|A;3M-Px+QE;SirTSoQumh9pvWHj*NjR#9$)A(#m>$Uu zsLW!9TgyU7LSL>Ue@?QtT%Q}PEM|{-hTF(ONJ1|@Oa7c>t@vDSuu_y6?s*nM z5*l$6`E!!>;pW_6btp633oL{rbm5ES&q>yVFXaX+LYd)SW+5b@1z#b5PO=W%k{fu2 zd(}xHteoLq<3x_b47Zgms0v;0aZ=1fTWsS5@vJZ2Ad3}-&Twx!DdwRw-r@xDu<}C| zs|}su-f>dQLvy^#3F2Y>hb&eeI>Wv1q?m{P_<$3{!zvJ2tU`2#`^ZT#4=wUBCy0l& zAhKAI=nS{rNih#y@+l{XhZP~RSe@t$_qmf|9vbBfP7n|4LS(U0(HU;yL9#NWZ?r?D z8T`^vsoB~PCx~awGKnl!Ejq)Ut7lD`&VeN!_9C~%tOD-eN!=3A-n1_Bjj}yeh8WCBnUv!3><)oO0ez|}X z#KRg9S*%}lhMVoAn1_D3h!e!a8WCBnUv!3>y}G6K|Jf1xn!|^(HZViC&fJU z%REjH4{JoZg=e_SoD}lP8SZjU*qqBGnTPKtTxmxY`lp7qPsYWZ2+40jC+ z4PaR&%}0yKuP8WDxKdr58|=X3x@-vxAqhvdl>9l#j_KOmfXXapxa(L5N$AUEBX1;sPO^r)DK}U_$_#fi3n2;Z zxQhHa$-42D++fuxGu&zxLK1rMR`Ta0YsK4ggO#GpaJRD%lF*2EkUu9`AFjy_R);df z-N`~oLKoge{+wh@cz15FB9s~K9u`6pTJT=-=OpXE`*H)%aQ8bYgq1Vg1DwclnBg8I z3#vlbdz=*W&=wDKf_T;!kC4R*Lua_PPKtTxjCGtK9#($HVzr?&+@ns4d1#KuI6*wD z|B%JXLua@roD}oWA5U_EcvuA@i&coua8EfY=AlKN<^=Ju7DN^+5}n~TIw|I%OP=Kf z@vtI97ONAT;huL=%tNDW;so)qE<_e96`kQ;a8k@eue`_!;#sr2L>8+So#9?~Qp`iU zyuu0MVT~xa@C^5=lR{oO!@b6doQD~1D_N{xbcTD~Nih%ovW*kOvwnGlEVv+%8SYId z#XR)OTbv*s)`-Yr{h~A6J5Gvu=$CgnK|HJxk;VE&XSnyB6!Xw8A8>+rSR*2f^^4AM zA2})JpB88o#D1SDdwSHKIH`Qutr1{>ldBjK6g^gL%)2%3F2Xmh%DAG zI>Sx;nXD1%g?yXzgI^;mHCrR%1o5n2CXvPZMQ6B^oD?4)`sHL!5D#laxrJxADNYJ` z{_SvF?693U*1U=ngtOMXnk+o_UE{TwSPp)RT!xq!{T8zc<)Z6EUTXqHzbthbhFZg1 z%OR zFcb?)Y_ihPdGKbhHG!gcR=EsAv9`n}s~#N+S9`4q6zy}X%P!Q2aWM!l?;yqq#0!1I)>oN?*Iux0BP`ux3 zF|-^NA8;9hVpx2TP1Z;{Ek5M6CQvle!!E;6Yotfmgo_>-8P|HP2^5XA&Se;iWhpjU zBkA1usMnf6(MXTE3`4Ot#U^Vc9UhE&LWR0W~CtD`Ks4qXgOTI<}w7uc)68L)<`;EzV5Xq zP&Cpumtm+i(pzR4S~p|9?UY8uES2WAcQ|1@cv8MneU~hDh;kM9o>O8Rj_-X=5YCS7 z1G1oQiy8Anr^GmP?MIv-oHgyoWU-=^8S@jT#5lC{IoT;O4sAMx6NIxaJ%ub*r7~kqbxMpwkDkg2!dZ(>Ba4-&%$TP+CB~sar*ndE z)}N=7g=fq&ycQG78FPlq5EC=zOg5ohbOp<6O`zzPvs{Lu)-Y$Y$tp%?%yYcf1d5h9 z*JT)rwJbJS(ddkMzSo*S(KWMNhM`!|Vw2U4&X^Z^tqBy3GuvetighhES?TDEd9l}; zK+!vMT!x`o-C~nfkItBLz19SZ_PNw$7>YG6Hdz7bj5*(HO`zzY%Up(`Sm|Pu)sW7Z z3%u3@iYB_kWf+R}E;d;i>5O@$*P1}lM_0KFL$T^bCY~{`@mdTmXUs(|Lr~0^i`it2 zq%-CcuQh?9k(Rm)L#>gnWfLxXWX8PCYfYeNq-8F{P^@~f$r?##%9rZRdHd!O-jCrTmnn2M=cexBhvFgPpYb2d9@9|m_ zC>rTrmtiPYy~xBf=KWraq2-MEfXfgRGvl-pp+{fm1mUbjw~@t4RA$UKoD$>Epl@=5aMqu1k%ec>x4jk<%Ng?>mmwx*%y-#@ za?uqmuQh?9U*2~ahFZgXz$U90oiRW3S`#Q*<|CJ3DAuyrWJRMh<|kfj0!7zscNvCa zMT<>VH#%c}=CvkJG|uNP!%(bivB^qDXUs3X)&z>)nfTYbwxw@ML$SDp9|zJVD%BI& zWYwcH<|MB*fuem*av45StZ}i)3P@+n$zE#$MF&lB8HQq|i%nKTI%7`tS`#Rm=v0?s zDAv2!WM!l?=4oDQ0!1H9cNvCa)r(9#W1iu)7+TJlGhBwCm@#Lv$r?##%rm{#1d2vF z%Vij9jdV7faM2?(<~d$#0!1U8>oN?*su!EAk#xp9-)l{vXrx&#!%(bxvB?@qXUq$| z)&z=1n(Zi9CQvleWiG=|ta`D@8cAo&1zu|cMI&9|G7QD47n`h+bjG~WYfYeNq^n$pp;+}I z6VI5}crAvOGv*?fAt+|d#cZ-h(iwA!*P1}lNK0LYq1H&t%rvZS#$4`{M#LBs?3=8IVHxSP4DLf;jBv^Ad6M0%$N^4CB~sgAL0bz ztVJItiFA8P*=tRp=$#i_hM`#9Vv|*m&X_NGtqBzE^Rmk@6l+{;vI5c> zbBouSK+!?3x(q|H(#0mLA)PU|daVf*P4v3UFcj-uY_c-a8S@RVHG!g!-gFs;V%3XG zJY&A?wHR8?nD4j@K`~>#%O-0ioiX3@S`#Q5>3x@Bs5R0DY{Es4%$Of~tqBy3^pVRj z6sulrvPRMw^AoQ%fufPNy9`6I>cu8&B%Luo^I8)q8tHSFVJKF;*kp~QGv=3GYXU_h zP5im8dg*0y8&Br0!1U82s?e1vC&fIp z#Y#>P&-&sO`l( z`&?xtFf_PYuB8!!Z4uTIlDdwS99^wS?upmVis}`LBA8}I5L%Xcy1o5yUm0NiH zTkoWhR}O!Vaw6wp^m~jf)-O8wJ?^BKhkkj26U4KAd6F!+Ad#VOgOg$&`sFE35D!aG zWU+qHdG8q~#XR)OMoth9t50OHe$i3yIVZ(D^vm;{ARZQ;$YTAXQ{HAL#XR)O3!ESx z)||*<{h|ZjOHPV;=$Dr{K|Cxsk;VE&XS*#xvRa_?{==V6e0mn_yVI>)`|q?m_( zd7l%+vwrzVEko;OxQ|(A0LwCIKKg|Gih?7BE7k3}!46EW%RXfxB;lw&BY#e^WBNQd zpfZaY?h6(|68iE>^5-OL%ZY!Zi#+n^Sy{>qcOnZR2~9bP{5i>b@}%5gH7PUP$t;8< zbmV06=Ok;$DY?N4Qf9bQSO`gI$EoDcN!E?0<_4=qnc=3f5R%Y~r;$G=Su0M@4OWUW z!=27TNJ1l?LH?X%eK;dGSRKj?H*@T}ZmMJO}e*(`)4wBR}9&q>yS z=jH~U;m&hX2rFl}^Er{@FvHCv3#vlbdz=*W&=wbRf_T;!v&mwGp)=e?PKtTxjEgxz zJgoeX#cD%mxJ#TA^Uxe~IYB(E|B%JXLua^oPKtTxkNKP+9#((ZgNu0L%-b23F2Xmh%DAGI>X)Kq?m_(S|#%hI@;Jkc38joBTP+`tY6HV09=n+`BA zPIQJl-AOSIjdBJjh=+9{vRJ9;3^&tBF%P|RCMSr8)giK2wdf3Ywv%EW+T|Qh z5D#laxrJxA^PCj&${Fr_PUJkyaI?r_{h~A61x|{2=$8vQK|Jf1*<`^5iOg^pIVt9$ zUoPeZ@vufj7V8(C;VyAf%tOD-aycvvGMi}j1naF;tN z=AmB}aDsSPBO;6Si_UNhofPxXFIRGccvvGMi}j1na92Ai=AmD%;RNxpMno3t7oFi2 zJ1OR&UzTu!cvvGMi}j1naMwC1=AmD%;{@@rMwDB4hFk8WkXO!d*K;E0VTM~l7V8(C z;cjqJ%tODdOIGbu5G=G~#;l=OpXHM{|SKq0DfPu@I8bg^!azCs`9dksGWCWrll_g^+|6+(7=E zWF7caZr~a2X(xrSa)x_`6FCku+(xpXDs;WaNih#?@f;_JXMOQJS*$R0hTG(%n1{~T z%n9OQ<%cX*8#=?i=%kp3=6Hz{#KZazS*$#ChI_?HF%SK*g%iZXDiB$$LUe|E%}Fs2 zEwYsp#KT$;S*%EOhTG<(n1?QTgA>HViV#_>PIQKQ%Ska0jq)}ph=+9{vRJ9;4EL^+ zVjgH zARg9;$YTAXGu+8eih1al$($e_)`-Yr{h~A6DNc%c=$EOSARg9;$YTAXGu$*M#XR)O zX`CP))`-Yr{h~A6=}wAy=$A7%K|HJxk;VE&XSkV8ih1alGdV##tPzpL`bB5Bvz-+4 z&@bn3f_PXX$}K#@o#&*GSI%(fb0X(qhMPqe>ldBjE^t!JL%&?e3F2A5T&$M;>Snk( zEHr>+nKU0=LViWTk;0Yg+}vOXCf8+`vJjGRRP)H6lkAx0=LS?}F~eQPLP$biUQYg; zWNo=1H&|K940inko-Bxdh*KLU^OW-+*K@uBy{A}CZvOc^%H&`9Y z47Y-Xkc2M0f&4kins8-qup*Qh?nV|u5?b&k^5-P$z?*Xe&v2`p6vE0G?iNnuILvUX z$%3lT^&Th1Jha7aoFJa{#qDIV!q6G+4kyJtbjBJ^5DzOqWU<=N8SXA8#XK~}-JBpE z)_=%i<)Jg&y-tdG=#Tq2K|HJik;N)RXSfHP6!Xv`4|0NdSPLSH6^YJp4?8L5p-Ud& z1o5yUL>8+Po#ECwDdwS3)^mb*SQjFTm5R=Ak2xvkp;sQ~1o5ysL>8+So#CEzQp`iU zY~Td(uttSBdq?m_(d5#mrvwnG=EVv+%8E%u4 zVjlWsGbf0LH6pTDzvvA2qLX4C`sF1~5D#laWU+qH8SWJ)#XR)O7ETZkYeZzRe$g53 zH7CV9^vhOG5D#laWU+qH8E%`CVjlYC4NedbYeZzRe$g53Ehoi1^vm0vARg9;$YTAX zGu*pQih1al_c%d3tPzpL`bB5B51bV9&@Ufyf_PXX$}K#@ee9%=SI%&sa3benhTBdS z>ldBjK6O&eL%)2+3F2A5e5scG>t?u#e=CbQ5E{TBrN4uc=A#qIuP8WDxKf>z8|=X3 zy6hwtLK2SZWb)@EJEqCG0hL+Ia8p*@WR|+MJO}e zY!*TiTJR$B=OpXEi*p0daC4j#!pa%$5>Dhe%y4tbf~wH<9w)^-w8cD55YPHzK3S|V zbcVakNih$daXBZ5hm{|)SZ(MGcZHK;9-3nzCy0mjAF^0^=nQw2lVTqF<7!S2534|A zu?o={ZjqB>9$I8ECy0l&AhKAI=nS{iNih#yaxEu_hZP~RSe@t$x6DZ~4~?>%6U4*1 z5Lv8LbcS2uq?m_Zxq%bJ!|D)OtXg!2yU|H85AAXjCy0kNqTIqW+$tx9ymE%Sg%dds zGu&#jSik5DcdL_P9{S}rP7u%f<#w{*f<$JxJDe2r&@XE^K|HJxk;VE&XSlnZ6!Xw8 zcXNVxSR*2f^^4AM_c|%&pB88o#7sEQp`iYJje;+VU36^)-O84J?x~I zhkkj46U4(B5m~HXbcS2!q?m_(SsH&`jk4EGTWAqkE6G5K?n_2DPE z!Rkt}|Hr zySBd{I&M_!&wrk8s+{3Y zI4S0#MP_n>cvuS}ixr8^aA!Fw=Alc@<^=JuB19Ie6P@ACbyCbjqnyVH;$dBgELJKy z!_9J1%tNnSzzO1Eb%-ohEjq)^c2dkkyIjNx;$e*_x9|)%$4MctoZ&9vM9#wuHZF*5ewoJ!;#t4UCkrk}WQM!UNih%oayci6hczOySik5DcZHK;9{Ob=Cy0kN zBC=S&=nQw2lVTqF9{Oc5Cy0kNBC=S&=nS{iNih%oaxEu_ zhczOySik5Dx6DZ~5B;*76U4(B5m~HXbcS2uq?m_(xq%bJ!x|A;tY377yU|H85B+iz zCy0kNqTIqW+$tx9ymE%Sg%ddsGu&#jSik5DcdL_P9{S}rP7u%fWsO=6tefHPWT62p z%cS|}F7hi1jufs`@6HW&U~*k{4+|j)M|CgxbCMm?eYpXZSaAtWrll*g^+}%e3<+>$$IjU++Z~+Gu&DhLJ~T19r<&THRSr-Ujfr6lI2ciiMDbMtqw5Im!C)ncQG?C^Otf z7D5ub@LBTbBx}Owa)TA2%y7@M5R%Y>o5-J&tOGaa2A<(wa8d{>XSf$Rk>hj*OshR) zK~?B_kCS2^+Ts;X5YPHz3t6l%bcTD?Nih$d@fs(Hhm{|)SZ(MG_qvl}9-3ntCy0mj zAF^0^=nVI!lVTqF<1J1Q534|Au?o={?j0w^JhaHWoFE?7g2-Y;qBGq4PKtTxk`FjR zJgf+j#p*<7xR0C^^Ux?CbAotS7b1(5iq3G`ofPxXE1zDhi%y4tbV*R2s+@(&6dFYpUoFJa{%jIf0sBVT^z(NC9mPzx`735bG94TC>F3b&f zU~*k{B?}=5M|BnXbCMm?)wuzcS~amy5`sldLTl=LRcFnc|Rr zhP$1Gkc1YzgZw$kI&e*H;2G{tCxx(bhP#UsISw=2-DE*k=z5QnVjkM!UQQ6t`r8L_C&fH8$HSZ;9@c-zV&$PT+*&8aJoLvpP7n{P zKxDBB(HZVhC&fIp$YY!!9@c`$Vnw1e+!IcUdFYZSIYB(E2$99=L}$3CoD}oWC{J^O zcvu%AiB88o#9@0 zQp`iYY~uv+utr1{>ldBj-gHvTL%+Pm3F2Xmh%DAGI>Wu=q?m_(d6yH!!x|A;tY377 zd*4Yh5B>51Cy0kNBC=S&=nVIflVTqFmLV<9BrsHT%YC)qKb zo*Ph^#SC`_3n2-8IfMK;$=Y&eZm_bH8SYFLLK2$tEb`|h>&dfogVm(WaObcPlF*Uo zl0PR|L!Or#tRQ8EJD-J+gm#=o{+wjpctLKkYLpr7LKZ?2dT}=SbCR{)WNg=G9;jZ9Bj>8PMkSwSQUGH&H%tKpT#R=kBUtCQVD-50Cu5nV#LuV}F1o5!) zLl&zIo#B=^DdwR$mU4o4SpOl5m50u7*EuQXp+A;!f_PX3B8yds&T!W|DdwR?R&auN zSPLSH6^YJpE1eYc&?Pr=f_PXFB8%0D&Tuz7DdwS3R&j!OSQjFTm5R=AtDO|{&?~oc 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%0ABPSZ_WOVM=|2@a^~2gef(dw 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 Ywy5b6fkPIZfKi2MpJj$EjUj0N3BZFj0{{R3 diff --git a/MDK-ARM/NUCLEO-F103RB/stm32f1xx_ll_rtc.d b/MDK-ARM/NUCLEO-F103RB/stm32f1xx_ll_rtc.d deleted file mode 100644 index 9c487b1..0000000 --- a/MDK-ARM/NUCLEO-F103RB/stm32f1xx_ll_rtc.d +++ /dev/null @@ -1,2 +0,0 @@ -nucleo-f103rb\stm32f1xx_ll_rtc.o: ../../../../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_rtc.c -nucleo-f103rb\stm32f1xx_ll_rtc.o: ../../../../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_ll_rtc.h diff --git a/MDK-ARM/NUCLEO-F103RB/stm32f1xx_ll_spi.d b/MDK-ARM/NUCLEO-F103RB/stm32f1xx_ll_spi.d deleted file mode 100644 index 53d2a6e..0000000 --- a/MDK-ARM/NUCLEO-F103RB/stm32f1xx_ll_spi.d +++ /dev/null @@ -1,2 +0,0 @@ -nucleo-f103rb\stm32f1xx_ll_spi.o: ../../../../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_spi.c -nucleo-f103rb\stm32f1xx_ll_spi.o: ../../../../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_ll_spi.h diff --git a/MDK-ARM/NUCLEO-F103RB/stm32f1xx_ll_tim.d b/MDK-ARM/NUCLEO-F103RB/stm32f1xx_ll_tim.d deleted file mode 100644 index 5f959a5..0000000 --- a/MDK-ARM/NUCLEO-F103RB/stm32f1xx_ll_tim.d +++ /dev/null @@ -1,2 +0,0 @@ -nucleo-f103rb\stm32f1xx_ll_tim.o: ../../../../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_tim.c -nucleo-f103rb\stm32f1xx_ll_tim.o: ../../../../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_ll_tim.h diff --git a/MDK-ARM/NUCLEO-F103RB/stm32f1xx_ll_usart.d b/MDK-ARM/NUCLEO-F103RB/stm32f1xx_ll_usart.d deleted file mode 100644 index f40e410..0000000 --- a/MDK-ARM/NUCLEO-F103RB/stm32f1xx_ll_usart.d +++ /dev/null @@ -1,2 +0,0 @@ -nucleo-f103rb\stm32f1xx_ll_usart.o: ../../../../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_usart.c -nucleo-f103rb\stm32f1xx_ll_usart.o: ../../../../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_ll_usart.h diff --git a/MDK-ARM/NUCLEO-F103RB/stm32f1xx_ll_utils.crf b/MDK-ARM/NUCLEO-F103RB/stm32f1xx_ll_utils.crf deleted file mode 100644 index a7cf0987c3df5573182105a7ed390dc88a5ace44..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 396190 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Ξ(626+1d~8J3xi&)v2o<9T;KAu@d+KE1zv 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 diff --git a/MDK-ARM/NUCLEO-F103RB/stm32f1xx_ll_utils.d b/MDK-ARM/NUCLEO-F103RB/stm32f1xx_ll_utils.d deleted file mode 100644 index c045391..0000000 --- a/MDK-ARM/NUCLEO-F103RB/stm32f1xx_ll_utils.d +++ /dev/null @@ -1,12 +0,0 @@ -nucleo-f103rb\stm32f1xx_ll_utils.o: ..\LLDrivers\src\stm32f1xx_ll_utils.c -nucleo-f103rb\stm32f1xx_ll_utils.o: ..\LLDrivers\inc\stm32f1xx_ll_rcc.h -nucleo-f103rb\stm32f1xx_ll_utils.o: ..\Inc\stm32f1xx.h -nucleo-f103rb\stm32f1xx_ll_utils.o: ..\Inc\stm32f103xb.h -nucleo-f103rb\stm32f1xx_ll_utils.o: C:\Users\elies\AppData\Local\Arm\Packs\ARM\CMSIS\5.6.0\CMSIS\Core\Include\core_cm3.h -nucleo-f103rb\stm32f1xx_ll_utils.o: F:\Keil\ARM\ARMCC\Bin\..\include\stdint.h -nucleo-f103rb\stm32f1xx_ll_utils.o: C:\Users\elies\AppData\Local\Arm\Packs\ARM\CMSIS\5.6.0\CMSIS\Core\Include\cmsis_version.h -nucleo-f103rb\stm32f1xx_ll_utils.o: C:\Users\elies\AppData\Local\Arm\Packs\ARM\CMSIS\5.6.0\CMSIS\Core\Include\cmsis_compiler.h -nucleo-f103rb\stm32f1xx_ll_utils.o: C:\Users\elies\AppData\Local\Arm\Packs\ARM\CMSIS\5.6.0\CMSIS\Core\Include\cmsis_armcc.h -nucleo-f103rb\stm32f1xx_ll_utils.o: ..\Inc\system_stm32f1xx.h -nucleo-f103rb\stm32f1xx_ll_utils.o: ..\LLDrivers\inc\stm32f1xx_ll_utils.h -nucleo-f103rb\stm32f1xx_ll_utils.o: ..\LLDrivers\inc\stm32f1xx_ll_system.h diff --git a/MDK-ARM/NUCLEO-F103RB/stm32f1xx_ll_utils.o b/MDK-ARM/NUCLEO-F103RB/stm32f1xx_ll_utils.o deleted file mode 100644 index d1eb7d6e3abfb0f24c04e47cad0e3bac1e9736e3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 422584 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�(O5gzKColjAVRgo{jI!D&yPG!uSep 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�@c%QP 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%0Ay1m5?=BgVZxz@KNXk%p)zH(J~$@V+M= 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 diff --git a/MDK-ARM/NUCLEO-F103RB/transmission.crf b/MDK-ARM/NUCLEO-F103RB/transmission.crf deleted file mode 100644 index 3ff275a183b5af724c3f8454d687f5dc69a1137c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 18 Wcmcb?!N9=8$N&VgH&}p71|eBO(a~ z1ZAg(PG|Zbw1*x#(^F@XTMs?7hyD*ew*N*>J*MyN0t9KxX=d6TkM{k3@9o>SyYDR* z{&%^m2!a4%6Ce%|0{G?{)6C^rcMlff3e2D!4+bc1Z{YUrzP~NX)sjfi>Dr#So=O+Q z(V)}xZLuKUYmJ<4N8DIXeyS zo^QWQmU4)jgZ6O8>HD_#!u8I?WSPj0(>%3?qrt$lhr^w%tz1S->Zw#i?_(S!7>4RO z=e9R&I3Z=)-nrAZF=jF-eH9oGY*cGn!!n)TsEeC2@{m)u8}%WLx4Vu#Y{-Lw+Vq#0I29mp8JO|f)G9s7s-IpBZ*<$A9OG_yA&^pqp)bFfk@yJvQS7%`#xK1Bi zC3OPkUee&YsaeIkVOaQ2t?K9j$$cboqPn)TnP#nyd++v6td{4#7~0==lx^=s#BDac zcB3|#2yOTqre}<$=Gi#eGUI&AMOT(p(@RW|+1$=#w{tnpnl)8H^9(a#AUIhfx3;#@86#5dm(7}n88KfYFnX5f1Pfjg}zVI1N*MY^75gKKhiPperYI?m$8XrusI=QOsTN_qrJIRuVsZCq7nlYnjI6veO$^ zsg{enp}jh3QIl)+s%GuWM)7gEs!k6IwS0cQvhak0fu*`p(<{c4iwCOZ`mUk9*|Dl0 z>8f_|*!rPt=zE9S8)8z7rx%Y?ajPy2RXeU}hwL(~YI{0XRu$8)epm~(P_8JZr5_@V z@g4*&{O6-yYf>JcrJu`=<#Gj!UB{c%tjJ2Z93(BXB;(~Po2FK+1zyIshIXVGVveN? z<$AHg{KY_+r5gr$fJ@Zhg-@3NX6~XK!#n4Oz5*~SK_c;4B8Crxx$8nK{$YH1?%nux z;Vt3XJl;;z6#9t>(xYKG1mJQ66dcGsT$vf!ON+%534mo1NqGAn#Nu~Qd4may04oVpQ3wDx6TpRA!~xvK0q{Q7;^aqfV&|`Bo-43=z4XDh55k->!dmCX!k!P z0pKI*X3*QmOu%K`yT%lsEaSwuEIh#Yz=LTDU?(E>aIZd#U=->j+_Hz$3JR9!M-k1#B~p&a2`5(ocBd80 z3DQbL2TqVw-@{GIU_MelX&e9)BldXd$Zs74&jqmpIDv?xzThIjS*Rxe-4O7Zd!aq)`s9%6 z(PaYq7=$aJ&Hj>uhYJr7cpThWp}2-20PxpY1&{8t9X;QHTNv<*>jK@i052Z|0&etc zO~iZ(+bn$h-5)~0`ftDc%>)+k>3lYYXQ48MaW>Yjgi`Bg%65U)Av26HS+Btq=vrdH(S_04<*m;rq~xBKJQLk)O^)r7MyFgTAqE5 zFB)`YoqB^*V9WW`sppOcsjMaU=wrg_wg%4+bpOnjvKIfmfWW@jY;*VAZP)4BkZQZV z9)8S13ZF~X`H5{kx0@Z?!(wq-l2o<79N9x(l2F@qTK_`~GBNTb~A6!+!SsL?+EY5Rt3x|z{3Rrs|BvIs}O}B z+GgSFS4}A=A8?YtWVrl$fIqUFMfiwQ6IH@9nbC|D;P3cj%FO`&$+JC#ua5@!9sdFi zCT5lKTkb9>w#mt$flnx=rO(!XaDVt?N_7M}hxjr%Yg$|St*zi`HY9GhAjX<6ScsAhL{jpIHHsb#PvFvEp diff --git a/MDK-ARM/NUCLEO-F103RB/voile.crf b/MDK-ARM/NUCLEO-F103RB/voile.crf deleted file mode 100644 index 3ff275a183b5af724c3f8454d687f5dc69a1137c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 18 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 N1{(?rTcIXn_zy1TSE~R3 From 643c601172a503cb92fc7027e497d41a48a4540e Mon Sep 17 00:00:00 2001 From: EyeXion <52245783+EyeXion@users.noreply.github.com> Date: Sat, 14 Nov 2020 12:35:24 +0100 Subject: [PATCH 6/6] =?UTF-8?q?Module=20s=C3=A9curit=C3=A9=20fait=20(presq?= =?UTF-8?q?ue=20fini,=20manque=20les=20calculs=20rouli)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- LLDrivers/inc/stm32f1xx_ll_adc.h | 6 +- MDK-ARM/Project.uvoptx | 53 +++++--- MDK-ARM/Project.uvprojx | 20 +++ Src/AntiChavirement.c | 56 -------- Src/Securite.c | 225 +++++++++++++++++++++++++++++++ Src/Securite.h | 55 ++++++++ 6 files changed, 338 insertions(+), 77 deletions(-) create mode 100644 Src/Securite.c create mode 100644 Src/Securite.h diff --git a/LLDrivers/inc/stm32f1xx_ll_adc.h b/LLDrivers/inc/stm32f1xx_ll_adc.h index b8cd276..0c0304a 100644 --- a/LLDrivers/inc/stm32f1xx_ll_adc.h +++ b/LLDrivers/inc/stm32f1xx_ll_adc.h @@ -3539,8 +3539,7 @@ __STATIC_INLINE uint32_t LL_ADC_INJ_ReadConversionData32(ADC_TypeDef *ADCx, uint __STATIC_INLINE uint16_t LL_ADC_INJ_ReadConversionData12(ADC_TypeDef *ADCx, uint32_t Rank) { register __IO uint32_t *preg = __ADC_PTR_REG_OFFSET(ADCx->JDR1, __ADC_MASK_SHIFT(Rank, ADC_INJ_JDRX_REGOFFSET_MASK)); - - return (uint16_t)(READ_BIT(*preg, + return (uint16_t)(READ_BIT(*preg, ADC_JDR1_JDATA) ); } @@ -3581,8 +3580,7 @@ __STATIC_INLINE uint32_t LL_ADC_IsActiveFlag_JEOS(ADC_TypeDef *ADCx) /* end of unitary conversion. */ /* Flag noted as "JEOC" is corresponding to flag "JEOS" */ /* in other STM32 families). */ - return (READ_BIT(ADCx->SR, LL_ADC_FLAG_JEOS) == (LL_ADC_FLAG_JEOS)); -} + return (READ_BIT(ADCx->SR, LL_ADC_FLAG_JEOS) == (LL_ADC_FLAG_JEOS));} /** * @brief Get flag ADC analog watchdog 1 flag diff --git a/MDK-ARM/Project.uvoptx b/MDK-ARM/Project.uvoptx index ecc3a2c..0893976 100644 --- a/MDK-ARM/Project.uvoptx +++ b/MDK-ARM/Project.uvoptx @@ -305,7 +305,7 @@ 0 DLGDARM - (1010=-1,-1,-1,-1,0)(1007=-1,-1,-1,-1,0)(1008=-1,-1,-1,-1,0)(1009=-1,-1,-1,-1,0)(100=-1,-1,-1,-1,0)(110=-1,-1,-1,-1,0)(111=-1,-1,-1,-1,0)(1011=-1,-1,-1,-1,0)(180=120,153,415,450,0)(120=-1,-1,-1,-1,0)(121=-1,-1,-1,-1,0)(122=896,89,1317,516,0)(123=-1,-1,-1,-1,0)(140=-1,-1,-1,-1,0)(240=-1,-1,-1,-1,0)(190=-1,-1,-1,-1,0)(200=-1,-1,-1,-1,0)(170=-1,-1,-1,-1,0)(130=248,17,842,768,0)(131=521,17,1115,768,0)(132=-1,-1,-1,-1,0)(133=-1,-1,-1,-1,0)(160=251,288,699,702,0)(161=-1,-1,-1,-1,0)(162=-1,-1,-1,-1,0)(210=-1,-1,-1,-1,0)(211=-1,-1,-1,-1,0)(220=-1,-1,-1,-1,0)(221=-1,-1,-1,-1,0)(230=-1,-1,-1,-1,0)(234=-1,-1,-1,-1,0)(231=-1,-1,-1,-1,0)(232=-1,-1,-1,-1,0)(233=-1,-1,-1,-1,0)(150=229,0,832,751,0)(151=-1,-1,-1,-1,0) + (1010=-1,-1,-1,-1,0)(1007=-1,-1,-1,-1,0)(1008=-1,-1,-1,-1,0)(1009=-1,-1,-1,-1,0)(100=-1,-1,-1,-1,0)(110=-1,-1,-1,-1,0)(111=-1,-1,-1,-1,0)(1011=-1,-1,-1,-1,0)(180=120,153,415,450,0)(120=-1,-1,-1,-1,0)(121=-1,-1,-1,-1,0)(122=896,89,1317,516,0)(123=-1,-1,-1,-1,0)(140=-1,-1,-1,-1,0)(240=-1,-1,-1,-1,0)(190=-1,-1,-1,-1,0)(200=-1,-1,-1,-1,0)(170=-1,-1,-1,-1,0)(130=248,17,842,768,0)(131=521,17,1115,768,0)(132=-1,-1,-1,-1,0)(133=-1,-1,-1,-1,0)(160=251,288,699,702,0)(161=-1,-1,-1,-1,0)(162=-1,-1,-1,-1,0)(210=-1,-1,-1,-1,0)(211=-1,-1,-1,-1,0)(220=-1,-1,-1,-1,0)(221=-1,-1,-1,-1,0)(230=-1,-1,-1,-1,0)(234=-1,-1,-1,-1,0)(231=-1,-1,-1,-1,0)(232=-1,-1,-1,-1,0)(233=-1,-1,-1,-1,0)(150=60,0,663,751,0)(151=-1,-1,-1,-1,0) 0 @@ -344,7 +344,7 @@ 0 99 1 -

    134218720
    +
    134218780
    0 0 0 @@ -360,27 +360,22 @@ 0 1 - Chrono_Time + USART1 1 1 - USART1 + res10,0x0A 2 1 - res,0x0A + level,0x0A 3 1 - res10,0x0A - - - 4 - 1 - res12,0x0A + danger,0x0A @@ -391,7 +386,7 @@ 1 1 0 - 0 + 1 0 0 1 @@ -429,7 +424,7 @@ 0 ((TIM_TypeDef *)(0x40000000UL + 0x00000000UL))->CNT - FF0000000000000000000000000000000000594000000000000000000000000000000000282854494D5F54797065446566202A292830783430303030303030554C202B2030783030303030303030554C29292D3E434E5400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000500000001000000000000000000F03F1000000000000000000000000000000000000000B6020008 + FF0000000000000000000000000000000000594000000000000000000000000000000000282854494D5F54797065446566202A292830783430303030303030554C202B2030783030303030303030554C29292D3E434E5400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000500000001000000000000000000F03F1900000000000000000000000000000000000000B6020008 @@ -660,6 +655,30 @@ 0 0 + + 2 + 18 + 1 + 0 + 0 + 0 + ..\Src\Securite.c + Securite.c + 0 + 0 + + + 2 + 19 + 5 + 0 + 0 + 0 + ..\Src\Securite.h + Securite.h + 0 + 0 + @@ -670,7 +689,7 @@ 0 3 - 18 + 20 1 0 0 @@ -682,7 +701,7 @@ 3 - 19 + 21 1 0 0 @@ -710,7 +729,7 @@ 0 5 - 20 + 22 1 0 0 @@ -730,7 +749,7 @@ 0 6 - 21 + 23 2 0 0 diff --git a/MDK-ARM/Project.uvprojx b/MDK-ARM/Project.uvprojx index b7bdda7..a6279eb 100644 --- a/MDK-ARM/Project.uvprojx +++ b/MDK-ARM/Project.uvprojx @@ -472,6 +472,16 @@ 1 ..\Src\AntiChavirement.c + + Securite.c + 1 + ..\Src\Securite.c + + + Securite.h + 5 + ..\Src\Securite.h + @@ -983,6 +993,16 @@ 1 ..\Src\AntiChavirement.c + + Securite.c + 1 + ..\Src\Securite.c + + + Securite.h + 5 + ..\Src\Securite.h + diff --git a/Src/AntiChavirement.c b/Src/AntiChavirement.c index c69e161..b0ef40a 100644 --- a/Src/AntiChavirement.c +++ b/Src/AntiChavirement.c @@ -61,59 +61,3 @@ void ConfAntiChavirement(){ //Activation de l'ADC (???) LL_ADC_Enable(ADC1); } - - -void SystemClock_Config(void) -{ - /* Set FLASH latency */ - LL_FLASH_SetLatency(LL_FLASH_LATENCY_2); - - /* Enable HSE oscillator */ - // ********* Commenter la ligne ci-dessous pour MCBSTM32 ***************** - // ********* Conserver la ligne si Nucléo********************************* - LL_RCC_HSE_EnableBypass(); - LL_RCC_HSE_Enable(); - while(LL_RCC_HSE_IsReady() != 1) - { - }; - - /* Main PLL configuration and activation */ - LL_RCC_PLL_ConfigDomain_SYS(LL_RCC_PLLSOURCE_HSE_DIV_1, LL_RCC_PLL_MUL_9); - - LL_RCC_PLL_Enable(); - while(LL_RCC_PLL_IsReady() != 1) - { - }; - - /* Sysclk activation on the main PLL */ - LL_RCC_SetAHBPrescaler(LL_RCC_SYSCLK_DIV_1); - LL_RCC_SetSysClkSource(LL_RCC_SYS_CLKSOURCE_PLL); - while(LL_RCC_GetSysClkSource() != LL_RCC_SYS_CLKSOURCE_STATUS_PLL) - { - }; - - /* Set APB1 & APB2 prescaler*/ - LL_RCC_SetAPB1Prescaler(LL_RCC_APB1_DIV_2); - LL_RCC_SetAPB2Prescaler(LL_RCC_APB2_DIV_1); - - /* Set systick to 1ms in using frequency set to 72MHz */ - LL_Init1msTick(72000000); // utile lorsqu'on utilise la fonction LL_mDelay - - /* Update CMSIS variable (which can be updated also through SystemCoreClockUpdate function) */ - LL_SetSystemCoreClock(72000000); -} -int res10; -int res12; - -int main(){ - SystemClock_Config(); - - ConfAntiChavirement(); - - while(1){ - LL_ADC_INJ_StartConversionSWStart(ADC1); - while(!LL_ADC_IsActiveFlag_JEOS(ADC1)){} - res10 = LL_ADC_INJ_ReadConversionData12(ADC1,LL_ADC_INJ_RANK_1); - res12 = LL_ADC_INJ_ReadConversionData12(ADC1,LL_ADC_INJ_RANK_2); - } -} diff --git a/Src/Securite.c b/Src/Securite.c new file mode 100644 index 0000000..6ec87c4 --- /dev/null +++ b/Src/Securite.c @@ -0,0 +1,225 @@ +#include "Securite.h" + + +// Seuil represente la valeur (en %) en dessous de laquelle le niveau de batterie est consideree faible +#define Seuil (20) + +// Seuil represente la valeur de l'angle au dessus de laquelle le chavirement est trop prononcé +#define SeuilAngle (40) + + +int drapeauRecupSecurite = 0; // Flag qui est mis à 1 toute les 10 sec pour recuperer niveau batterie/rouli et envoi régulier +int drapeauDangerBatterie = 0; //Flag qui est mis à 1 toute les 10 sec si batterie faible --> envoie message alarme +int drapeauDangerRouli = 0; //Flag qui est mis à 1 toute les 10 sec si rouli pas bon --> envoie message alarme + + +void ConfSecurite(){ + //On est pas sûrs pour ADC 1, voir datasheet page 28 + + //Faire les horloges + LL_APB2_GRP1_EnableClock(LL_APB2_GRP1_PERIPH_GPIOC); + LL_APB2_GRP1_EnableClock(LL_APB2_GRP1_PERIPH_ADC1); + + + //On configure les PINS + LL_GPIO_SetPinMode(GPIOC,LL_GPIO_PIN_0,LL_GPIO_MODE_ANALOG); + LL_GPIO_SetPinMode(GPIOC,LL_GPIO_PIN_2,LL_GPIO_MODE_ANALOG); + + + //ON se met en mode scan enable pour pouvoir à chaque trigger aller chercher sur plusieur voies. + LL_ADC_SetSequencersScanMode(ADC1,LL_ADC_SEQ_SCAN_ENABLE); + + //Permet de faire en sorte d'aller chercher 2 voies (2 rangs) à chaque trigger + LL_ADC_INJ_SetSequencerLength(ADC1,LL_ADC_INJ_SEQ_SCAN_ENABLE_2RANKS); + + //Permet de ne pas avoir d'intérruption dans le scan + LL_ADC_INJ_SetSequencerDiscont(ADC1,LL_ADC_INJ_SEQ_DISCONT_DISABLE); + + //A chaque trigger, on va donc avoir voies de rang 1 puis de rang 2 de scannées + + //On met le rang 1 pour la voie 10 (accéléro) + LL_ADC_INJ_SetSequencerRanks(ADC1,LL_ADC_INJ_RANK_1,LL_ADC_CHANNEL_10); + + //On met rang 2 pour la voie 12 (surveillance batterie) + LL_ADC_INJ_SetSequencerRanks(ADC1,LL_ADC_INJ_RANK_2,LL_ADC_CHANNEL_12); + + //Permet d'avoirdes registres indépendants pour chaque voie (chaque rangs en fait, au max 4 + 1 pour les regular) + LL_ADC_INJ_SetTrigAuto(ADC1,LL_ADC_INJ_TRIG_INDEPENDENT); + + + //Sampling time voie 10 et 12, à changer peut-être + LL_ADC_SetChannelSamplingTime(ADC1,LL_ADC_CHANNEL_10,LL_ADC_SAMPLINGTIME_28CYCLES_5); + + LL_ADC_SetChannelSamplingTime(ADC1,LL_ADC_CHANNEL_12,LL_ADC_SAMPLINGTIME_28CYCLES_5); + + + + LL_ADC_INJ_SetTriggerSource(ADC1,LL_ADC_INJ_TRIG_SOFTWARE); //permet d'enable le trigger de l'adc par le software + + + + LL_ADC_StartCalibration(ADC1); + + + //Tant que calibration par terminée on enable pas + while(LL_ADC_IsCalibrationOnGoing(ADC1)){ + } + + //Activation de l'ADC (???) + LL_ADC_Enable(ADC1); +} + +/** + * @brief Recuperer le niveau de batterie + * @note ADC1 -> Channel 12 (Rang 2) + * @param None + * @retval niveau de batterie en pourcentage + */ +int RecupNiveauBatterie(void){ + // Lancement de la conversion + LL_ADC_INJ_StartConversionSWStart(ADC1); + // Attente de la fin de conversion + while(!LL_ADC_IsActiveFlag_JEOS(ADC1)){} + // R?cuperation de la valeur apres conversion + int NiveauBatterie = LL_ADC_INJ_ReadConversionData12(ADC1,LL_ADC_INJ_RANK_2); + // Valeur code sur 12 bits : 0 a 4095 ; on veut Niveau de batterie en pourcentage + return NiveauBatterie * 100 / 4095 ; +} + + +/** + * @brief Met le flag de dangerBatterie à 1 si batterie faible. + * @note + * @param un entier representant le niveau de batterie en pourcentage + * @retval + */ +void CalculDangerNiveauBatterie(int niveau){ + if ( niveau <= Seuil) + { + drapeauDangerBatterie = 1; + } + else + { + drapeauDangerBatterie = 0 ; + } +} + + + /* + * @brief Mets le flag drapeauDangerRouli a 1 si l angle de rouli est mauvais + * @note Si le voilier prend un angle de roulis supe´rieur a` 40° -> MSG de danger + voiles sont imme´diatement rela^che´es + * @param un entier representant l angle de rouli + * @retval NONE + */ +void CalculerDangerChavirement(int gamma){ + if ( gamma >= SeuilAngle) + { + drapeauDangerRouli = 1; + TendreVoile(90); //On lache les voiles si danger de chavirement + } + else + { + drapeauDangerRouli = 0 ; + } +} + +/* + * @brief Recuperer l angle de rouli + * @note ADC1 -> Channel 10 (Rang 1) + * @param None + * @retval angle de rouli + */ +int RecupRouli(){ + // Lancement de la conversion + LL_ADC_INJ_StartConversionSWStart(ADC1); + // Attente de la fin de conversion + while(!LL_ADC_IsActiveFlag_JEOS(ADC1)){} + // R?cuperation de la valeur apres conversion + int NiveauChavirement = LL_ADC_INJ_ReadConversionData12(ADC1,LL_ADC_INJ_RANK_1); + return 0; // Trouver le calcul de l'angle +} + +void SystemClock_Config(void) +{ + /* Set FLASH latency */ + LL_FLASH_SetLatency(LL_FLASH_LATENCY_2); + + /* Enable HSE oscillator */ + // ********* Commenter la ligne ci-dessous pour MCBSTM32 ***************** + // ********* Conserver la ligne si Nucléo********************************* + LL_RCC_HSE_EnableBypass(); + LL_RCC_HSE_Enable(); + while(LL_RCC_HSE_IsReady() != 1) + { + }; + + /* Main PLL configuration and activation */ + LL_RCC_PLL_ConfigDomain_SYS(LL_RCC_PLLSOURCE_HSE_DIV_1, LL_RCC_PLL_MUL_9); + + LL_RCC_PLL_Enable(); + while(LL_RCC_PLL_IsReady() != 1) + { + }; + + /* Sysclk activation on the main PLL */ + LL_RCC_SetAHBPrescaler(LL_RCC_SYSCLK_DIV_1); + LL_RCC_SetSysClkSource(LL_RCC_SYS_CLKSOURCE_PLL); + while(LL_RCC_GetSysClkSource() != LL_RCC_SYS_CLKSOURCE_STATUS_PLL) + { + }; + + /* Set APB1 & APB2 prescaler*/ + LL_RCC_SetAPB1Prescaler(LL_RCC_APB1_DIV_2); + LL_RCC_SetAPB2Prescaler(LL_RCC_APB2_DIV_1); + + /* Set systick to 1ms in using frequency set to 72MHz */ + LL_Init1msTick(72000000); // utile lorsqu'on utilise la fonction LL_mDelay + + /* Update CMSIS variable (which can be updated also through SystemCoreClockUpdate function) */ + LL_SetSystemCoreClock(72000000); +} + +int res10; +int level ; +int danger; +int rouli; + +//Dans le main voilier.c en theorie +int main(){ + SystemClock_Config(); + ConfSecurite(); + + + while(1){ + + /* Envoi message toute les 3 sec sur l'Allure et la tension voile */ + if (drapeauTransimission){ + //Envoi message régulier + drapeauTransmission = 0; + } + + /* Recuperation toute les 10 sec niveau batterie et angle chavirement, puis calcul des dangers */ + if (drapeauRecupSecurite){ + level = RecupNiveauBatterie(); + CalculDangerNiveauBatterie( level ); + rouli = RecupRouli() + CalculerDanger(rouli); + drapeauRecupSecurite = 0; + } + + /*Si batterie faible après recup (toute les 10 sec), envoi alerte batterie faible */ + if (drapeauDangerBatterie){ + char * msgBatterie = "Batterie faible"; + EnvoiExcpetionnel(msgBatterie); + drapeauDangerBatterie = 0; + } + + /*Si angle chavirement pas bon après recup (toute les 10 sec), envoi alerte chavirement */ + if (drapeauDangerRouli){ + char * msgRouli = "Bateau chavire !"; + EnvoiExcpetionnel(msgRouli); + drapeauDangerRouli = 0; + } + + } +} diff --git a/Src/Securite.h b/Src/Securite.h new file mode 100644 index 0000000..6ab7aa0 --- /dev/null +++ b/Src/Securite.h @@ -0,0 +1,55 @@ +#ifndef ANTI_CHAVIREMENT_H +#define ANTI_CHAVIREMENT_H + +#include "stm32f103xb.h" +#include "stm32f1xx_ll_adc.h" +#include "stm32f1xx_ll_gpio.h" +#include "stm32f1xx_ll_bus.h" +#include "stm32f1xx_ll_utils.h" // utile dans la fonction SystemClock_Config +#include "stm32f1xx_ll_system.h" // utile dans la fonction SystemClock_Config +#include "stm32f1xx_ll_rcc.h" // utile dans la fonction SystemClock_Config + + + +/** + * @brief + * @note + * @param + * @retval + */ +void CalculerDanger(int gamma); + +/** + * @brief + * @note + * @param + * @retval + */ +int RecupRouli(); + + +/** + * @brief + * @note + * @param + * @retval + */ +int RecupNiveauBatterie(void); + +/** + * @brief + * @note A lancer en 1er avant tout + * @param + * @retval + */ +void confSecurite(void); + +/** + * @brief + * @note + * @param + * @retval + */ +void CalculDangerNiveauBatterie(int niveau ); + +#endif

    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 diff --git a/MDK-ARM/NUCLEO-F103RB/stm32f1xx_it.d b/MDK-ARM/NUCLEO-F103RB/stm32f1xx_it.d deleted file mode 100644 index 55796c5..0000000 --- a/MDK-ARM/NUCLEO-F103RB/stm32f1xx_it.d +++ /dev/null @@ -1,4 +0,0 @@ -nucleo-f103rb\stm32f1xx_it.o: ../Src/stm32f1xx_it.c -nucleo-f103rb\stm32f1xx_it.o: ../Inc/stm32f1xx_it.h -nucleo-f103rb\stm32f1xx_it.o: ../Inc/main.h -nucleo-f103rb\stm32f1xx_it.o: ../../../../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_ll_rcc.h diff --git a/MDK-ARM/NUCLEO-F103RB/stm32f1xx_ll_adc.d b/MDK-ARM/NUCLEO-F103RB/stm32f1xx_ll_adc.d deleted file mode 100644 index fa3b7de..0000000 --- a/MDK-ARM/NUCLEO-F103RB/stm32f1xx_ll_adc.d +++ /dev/null @@ -1,2 +0,0 @@ -nucleo-f103rb\stm32f1xx_ll_adc.o: ../../../../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_adc.c -nucleo-f103rb\stm32f1xx_ll_adc.o: ../../../../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_ll_adc.h diff --git a/MDK-ARM/NUCLEO-F103RB/stm32f1xx_ll_crc.d b/MDK-ARM/NUCLEO-F103RB/stm32f1xx_ll_crc.d deleted file mode 100644 index 2c400db..0000000 --- a/MDK-ARM/NUCLEO-F103RB/stm32f1xx_ll_crc.d +++ /dev/null @@ -1,2 +0,0 @@ -nucleo-f103rb\stm32f1xx_ll_crc.o: ../../../../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_crc.c -nucleo-f103rb\stm32f1xx_ll_crc.o: ../../../../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_ll_crc.h diff --git a/MDK-ARM/NUCLEO-F103RB/stm32f1xx_ll_dac.d b/MDK-ARM/NUCLEO-F103RB/stm32f1xx_ll_dac.d deleted file mode 100644 index 0394aaa..0000000 --- a/MDK-ARM/NUCLEO-F103RB/stm32f1xx_ll_dac.d +++ /dev/null @@ -1,2 +0,0 @@ -nucleo-f103rb\stm32f1xx_ll_dac.o: ../../../../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_dac.c -nucleo-f103rb\stm32f1xx_ll_dac.o: ../../../../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_ll_dac.h diff --git a/MDK-ARM/NUCLEO-F103RB/stm32f1xx_ll_dma.d b/MDK-ARM/NUCLEO-F103RB/stm32f1xx_ll_dma.d deleted file mode 100644 index d33fcdc..0000000 --- a/MDK-ARM/NUCLEO-F103RB/stm32f1xx_ll_dma.d +++ /dev/null @@ -1,2 +0,0 @@ -nucleo-f103rb\stm32f1xx_ll_dma.o: ../../../../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_dma.c -nucleo-f103rb\stm32f1xx_ll_dma.o: ../../../../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_ll_dma.h diff --git a/MDK-ARM/NUCLEO-F103RB/stm32f1xx_ll_exti.d b/MDK-ARM/NUCLEO-F103RB/stm32f1xx_ll_exti.d deleted file mode 100644 index ee9bce9..0000000 --- a/MDK-ARM/NUCLEO-F103RB/stm32f1xx_ll_exti.d +++ /dev/null @@ -1,2 +0,0 @@ -nucleo-f103rb\stm32f1xx_ll_exti.o: ../../../../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_exti.c -nucleo-f103rb\stm32f1xx_ll_exti.o: ../../../../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_ll_exti.h diff --git a/MDK-ARM/NUCLEO-F103RB/stm32f1xx_ll_gpio.d b/MDK-ARM/NUCLEO-F103RB/stm32f1xx_ll_gpio.d deleted file mode 100644 index d2a7de2..0000000 --- a/MDK-ARM/NUCLEO-F103RB/stm32f1xx_ll_gpio.d +++ /dev/null @@ -1,2 +0,0 @@ -nucleo-f103rb\stm32f1xx_ll_gpio.o: ../../../../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_gpio.c -nucleo-f103rb\stm32f1xx_ll_gpio.o: ../../../../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_ll_gpio.h diff --git a/MDK-ARM/NUCLEO-F103RB/stm32f1xx_ll_i2c.d b/MDK-ARM/NUCLEO-F103RB/stm32f1xx_ll_i2c.d deleted file mode 100644 index 6d210ae..0000000 --- a/MDK-ARM/NUCLEO-F103RB/stm32f1xx_ll_i2c.d +++ /dev/null @@ -1,2 +0,0 @@ -nucleo-f103rb\stm32f1xx_ll_i2c.o: ../../../../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_i2c.c -nucleo-f103rb\stm32f1xx_ll_i2c.o: ../../../../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_ll_i2c.h diff --git a/MDK-ARM/NUCLEO-F103RB/stm32f1xx_ll_pwr.d b/MDK-ARM/NUCLEO-F103RB/stm32f1xx_ll_pwr.d deleted file mode 100644 index 2ae500c..0000000 --- a/MDK-ARM/NUCLEO-F103RB/stm32f1xx_ll_pwr.d +++ /dev/null @@ -1,2 +0,0 @@ -nucleo-f103rb\stm32f1xx_ll_pwr.o: ../../../../Drivers/STM32F1xx_HAL_Driver/Src/stm32f1xx_ll_pwr.c -nucleo-f103rb\stm32f1xx_ll_pwr.o: ../../../../Drivers/STM32F1xx_HAL_Driver/Inc/stm32f1xx_ll_pwr.h diff --git a/MDK-ARM/NUCLEO-F103RB/stm32f1xx_ll_rcc.crf b/MDK-ARM/NUCLEO-F103RB/stm32f1xx_ll_rcc.crf deleted file mode 100644 index 874bd22a726a10cf15117f05a3c55c738b47215b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 389870 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

  • 7sDmbt!X0yP$)j+k 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 JNlN;g{~tNDrhotd diff --git a/MDK-ARM/NUCLEO-F103RB/stm32f1xx_ll_rcc.d b/MDK-ARM/NUCLEO-F103RB/stm32f1xx_ll_rcc.d deleted file mode 100644 index d632c3a..0000000 --- a/MDK-ARM/NUCLEO-F103RB/stm32f1xx_ll_rcc.d +++ /dev/null @@ -1,10 +0,0 @@ -nucleo-f103rb\stm32f1xx_ll_rcc.o: ..\LLDrivers\src\stm32f1xx_ll_rcc.c -nucleo-f103rb\stm32f1xx_ll_rcc.o: ..\LLDrivers\inc\stm32f1xx_ll_rcc.h -nucleo-f103rb\stm32f1xx_ll_rcc.o: ..\Inc\stm32f1xx.h -nucleo-f103rb\stm32f1xx_ll_rcc.o: ..\Inc\stm32f103xb.h -nucleo-f103rb\stm32f1xx_ll_rcc.o: C:\Users\elies\AppData\Local\Arm\Packs\ARM\CMSIS\5.6.0\CMSIS\Core\Include\core_cm3.h -nucleo-f103rb\stm32f1xx_ll_rcc.o: F:\Keil\ARM\ARMCC\Bin\..\include\stdint.h -nucleo-f103rb\stm32f1xx_ll_rcc.o: C:\Users\elies\AppData\Local\Arm\Packs\ARM\CMSIS\5.6.0\CMSIS\Core\Include\cmsis_version.h -nucleo-f103rb\stm32f1xx_ll_rcc.o: C:\Users\elies\AppData\Local\Arm\Packs\ARM\CMSIS\5.6.0\CMSIS\Core\Include\cmsis_compiler.h -nucleo-f103rb\stm32f1xx_ll_rcc.o: C:\Users\elies\AppData\Local\Arm\Packs\ARM\CMSIS\5.6.0\CMSIS\Core\Include\cmsis_armcc.h -nucleo-f103rb\stm32f1xx_ll_rcc.o: ..\Inc\system_stm32f1xx.h diff --git a/MDK-ARM/NUCLEO-F103RB/stm32f1xx_ll_rcc.o b/MDK-ARM/NUCLEO-F103RB/stm32f1xx_ll_rcc.o deleted file mode 100644 index 2ca47878a30a68594c36f5fc34a9c45b211434c5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 413376 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�_EZ&Rx%m)zqR$|Nlkej=4vMtC~Zy(V|*l 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