Refs #1003. Upgraded the ST HAL and USB libraries in the Nucleo-F746ZG demo programs because these include a fix for a problem in the HAL USB driver that had to previously be fixed manually by Feaser.
git-svn-id: https://svn.code.sf.net/p/openblt/code/trunk@776 5dc33758-31d5-4daf-9ae8-b24bf3d40d73
This commit is contained in:
parent
a97abde0ed
commit
54ea656f69
Binary file not shown.
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
|
@ -16,29 +16,13 @@
|
||||||
******************************************************************************
|
******************************************************************************
|
||||||
* @attention
|
* @attention
|
||||||
*
|
*
|
||||||
* <h2><center>© COPYRIGHT(c) 2016 STMicroelectronics</center></h2>
|
* <h2><center>© Copyright (c) 2016 STMicroelectronics.
|
||||||
|
* All rights reserved.</center></h2>
|
||||||
*
|
*
|
||||||
* Redistribution and use in source and binary forms, with or without modification,
|
* This software component is licensed by ST under BSD 3-Clause license,
|
||||||
* are permitted provided that the following conditions are met:
|
* the "License"; You may not use this file except in compliance with the
|
||||||
* 1. Redistributions of source code must retain the above copyright notice,
|
* License. You may obtain a copy of the License at:
|
||||||
* this list of conditions and the following disclaimer.
|
* opensource.org/licenses/BSD-3-Clause
|
||||||
* 2. Redistributions in binary form must reproduce the above copyright notice,
|
|
||||||
* this list of conditions and the following disclaimer in the documentation
|
|
||||||
* and/or other materials provided with the distribution.
|
|
||||||
* 3. Neither the name of STMicroelectronics nor the names of its contributors
|
|
||||||
* may be used to endorse or promote products derived from this software
|
|
||||||
* without specific prior written permission.
|
|
||||||
*
|
|
||||||
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
|
|
||||||
* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
|
||||||
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
|
||||||
* DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
|
|
||||||
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
|
|
||||||
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
|
|
||||||
* SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
|
|
||||||
* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
|
|
||||||
* OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
|
||||||
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
|
||||||
*
|
*
|
||||||
******************************************************************************
|
******************************************************************************
|
||||||
*/
|
*/
|
||||||
|
@ -72,10 +56,10 @@
|
||||||
/* Uncomment the line below according to the target STM32 device used in your
|
/* Uncomment the line below according to the target STM32 device used in your
|
||||||
application
|
application
|
||||||
*/
|
*/
|
||||||
#if !defined (STM32F756xx) && !defined (STM32F746xx) && !defined (STM32F745xx) && !defined (STM32F767xx) && \
|
#if !defined (STM32F756xx) && !defined (STM32F746xx) && !defined (STM32F745xx) && !defined (STM32F765xx) && \
|
||||||
!defined (STM32F769xx) && !defined (STM32F777xx) && !defined (STM32F779xx) && !defined (STM32F722xx) && \
|
!defined (STM32F767xx) && !defined (STM32F769xx) && !defined (STM32F777xx) && !defined (STM32F779xx) && \
|
||||||
!defined (STM32F723xx) && !defined (STM32F732xx) && !defined (STM32F733xx) && !defined (STM32F730xx) && \
|
!defined (STM32F722xx) && !defined (STM32F723xx) && !defined (STM32F732xx) && !defined (STM32F733xx) && \
|
||||||
!defined (STM32F750xx)
|
!defined (STM32F730xx) && !defined (STM32F750xx)
|
||||||
|
|
||||||
/* #define STM32F756xx */ /*!< STM32F756VG, STM32F756ZG, STM32F756ZG, STM32F756IG, STM32F756BG,
|
/* #define STM32F756xx */ /*!< STM32F756VG, STM32F756ZG, STM32F756ZG, STM32F756IG, STM32F756BG,
|
||||||
STM32F756NG Devices */
|
STM32F756NG Devices */
|
||||||
|
@ -113,11 +97,11 @@
|
||||||
#endif /* USE_HAL_DRIVER */
|
#endif /* USE_HAL_DRIVER */
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief CMSIS Device version number V1.2.4
|
* @brief CMSIS Device version number V1.2.5
|
||||||
*/
|
*/
|
||||||
#define __STM32F7_CMSIS_VERSION_MAIN (0x01) /*!< [31:24] main version */
|
#define __STM32F7_CMSIS_VERSION_MAIN (0x01) /*!< [31:24] main version */
|
||||||
#define __STM32F7_CMSIS_VERSION_SUB1 (0x02) /*!< [23:16] sub1 version */
|
#define __STM32F7_CMSIS_VERSION_SUB1 (0x02) /*!< [23:16] sub1 version */
|
||||||
#define __STM32F7_CMSIS_VERSION_SUB2 (0x04) /*!< [15:8] sub2 version */
|
#define __STM32F7_CMSIS_VERSION_SUB2 (0x05) /*!< [15:8] sub2 version */
|
||||||
#define __STM32F7_CMSIS_VERSION_RC (0x00) /*!< [7:0] release candidate */
|
#define __STM32F7_CMSIS_VERSION_RC (0x00) /*!< [7:0] release candidate */
|
||||||
#define __STM32F7_CMSIS_VERSION ((__STM32F7_CMSIS_VERSION_MAIN << 24)\
|
#define __STM32F7_CMSIS_VERSION ((__STM32F7_CMSIS_VERSION_MAIN << 24)\
|
||||||
|(__STM32F7_CMSIS_VERSION_SUB1 << 16)\
|
|(__STM32F7_CMSIS_VERSION_SUB1 << 16)\
|
||||||
|
|
|
@ -7,7 +7,7 @@
|
||||||
******************************************************************************
|
******************************************************************************
|
||||||
* @attention
|
* @attention
|
||||||
*
|
*
|
||||||
* <h2><center>© Copyright (c) 2018 STMicroelectronics.
|
* <h2><center>© Copyright (c) 2019 STMicroelectronics.
|
||||||
* All rights reserved.</center></h2>
|
* All rights reserved.</center></h2>
|
||||||
*
|
*
|
||||||
* This software component is licensed by ST under BSD 3-Clause license,
|
* This software component is licensed by ST under BSD 3-Clause license,
|
||||||
|
@ -236,6 +236,16 @@
|
||||||
#define DAC_WAVEGENERATION_NOISE DAC_WAVE_NOISE
|
#define DAC_WAVEGENERATION_NOISE DAC_WAVE_NOISE
|
||||||
#define DAC_WAVEGENERATION_TRIANGLE DAC_WAVE_TRIANGLE
|
#define DAC_WAVEGENERATION_TRIANGLE DAC_WAVE_TRIANGLE
|
||||||
|
|
||||||
|
#if defined(STM32G4) || defined(STM32H7)
|
||||||
|
#define DAC_CHIPCONNECT_DISABLE DAC_CHIPCONNECT_EXTERNAL
|
||||||
|
#define DAC_CHIPCONNECT_ENABLE DAC_CHIPCONNECT_INTERNAL
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if defined(STM32L1) || defined(STM32L4) || defined(STM32G0) || defined(STM32L5) || defined(STM32H7) || defined(STM32F4)
|
||||||
|
#define HAL_DAC_MSP_INIT_CB_ID HAL_DAC_MSPINIT_CB_ID
|
||||||
|
#define HAL_DAC_MSP_DEINIT_CB_ID HAL_DAC_MSPDEINIT_CB_ID
|
||||||
|
#endif
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @}
|
* @}
|
||||||
*/
|
*/
|
||||||
|
@ -296,8 +306,17 @@
|
||||||
#define HAL_DMAMUX_REQUEST_GEN_FALLING HAL_DMAMUX_REQ_GEN_FALLING
|
#define HAL_DMAMUX_REQUEST_GEN_FALLING HAL_DMAMUX_REQ_GEN_FALLING
|
||||||
#define HAL_DMAMUX_REQUEST_GEN_RISING_FALLING HAL_DMAMUX_REQ_GEN_RISING_FALLING
|
#define HAL_DMAMUX_REQUEST_GEN_RISING_FALLING HAL_DMAMUX_REQ_GEN_RISING_FALLING
|
||||||
|
|
||||||
|
#if defined(STM32L4R5xx) || defined(STM32L4R9xx) || defined(STM32L4R9xx) || defined(STM32L4S5xx) || defined(STM32L4S7xx) || defined(STM32L4S9xx)
|
||||||
|
#define DMA_REQUEST_DCMI_PSSI DMA_REQUEST_DCMI
|
||||||
|
#endif
|
||||||
|
|
||||||
#endif /* STM32L4 */
|
#endif /* STM32L4 */
|
||||||
|
|
||||||
|
#if defined(STM32G0)
|
||||||
|
#define DMA_REQUEST_DAC1_CHANNEL1 DMA_REQUEST_DAC1_CH1
|
||||||
|
#define DMA_REQUEST_DAC1_CHANNEL2 DMA_REQUEST_DAC1_CH2
|
||||||
|
#endif
|
||||||
|
|
||||||
#if defined(STM32H7)
|
#if defined(STM32H7)
|
||||||
|
|
||||||
#define DMA_REQUEST_DAC1 DMA_REQUEST_DAC1_CH1
|
#define DMA_REQUEST_DAC1 DMA_REQUEST_DAC1_CH1
|
||||||
|
@ -355,6 +374,9 @@
|
||||||
#define DFSDM_FILTER_EXT_TRIG_LPTIM2 DFSDM_FILTER_EXT_TRIG_LPTIM2_OUT
|
#define DFSDM_FILTER_EXT_TRIG_LPTIM2 DFSDM_FILTER_EXT_TRIG_LPTIM2_OUT
|
||||||
#define DFSDM_FILTER_EXT_TRIG_LPTIM3 DFSDM_FILTER_EXT_TRIG_LPTIM3_OUT
|
#define DFSDM_FILTER_EXT_TRIG_LPTIM3 DFSDM_FILTER_EXT_TRIG_LPTIM3_OUT
|
||||||
|
|
||||||
|
#define DAC_TRIGGER_LP1_OUT DAC_TRIGGER_LPTIM1_OUT
|
||||||
|
#define DAC_TRIGGER_LP2_OUT DAC_TRIGGER_LPTIM2_OUT
|
||||||
|
|
||||||
#endif /* STM32H7 */
|
#endif /* STM32H7 */
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -450,7 +472,9 @@
|
||||||
#define FLASH_FLAG_SNECCE_BANK2RR FLASH_FLAG_SNECCERR_BANK2
|
#define FLASH_FLAG_SNECCE_BANK2RR FLASH_FLAG_SNECCERR_BANK2
|
||||||
#define FLASH_FLAG_DBECCE_BANK2RR FLASH_FLAG_DBECCERR_BANK2
|
#define FLASH_FLAG_DBECCE_BANK2RR FLASH_FLAG_DBECCERR_BANK2
|
||||||
#define FLASH_FLAG_STRBER_BANK2R FLASH_FLAG_STRBERR_BANK2
|
#define FLASH_FLAG_STRBER_BANK2R FLASH_FLAG_STRBERR_BANK2
|
||||||
#endif
|
#define FLASH_FLAG_WDW FLASH_FLAG_WBNE
|
||||||
|
#define OB_WRP_SECTOR_All OB_WRP_SECTOR_ALL
|
||||||
|
#endif /* STM32H7 */
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @}
|
* @}
|
||||||
|
@ -486,6 +510,13 @@
|
||||||
#define HAL_SYSCFG_FASTMODEPLUS_I2C1 I2C_FASTMODEPLUS_I2C1
|
#define HAL_SYSCFG_FASTMODEPLUS_I2C1 I2C_FASTMODEPLUS_I2C1
|
||||||
#define HAL_SYSCFG_FASTMODEPLUS_I2C2 I2C_FASTMODEPLUS_I2C2
|
#define HAL_SYSCFG_FASTMODEPLUS_I2C2 I2C_FASTMODEPLUS_I2C2
|
||||||
#define HAL_SYSCFG_FASTMODEPLUS_I2C3 I2C_FASTMODEPLUS_I2C3
|
#define HAL_SYSCFG_FASTMODEPLUS_I2C3 I2C_FASTMODEPLUS_I2C3
|
||||||
|
#if defined(STM32G4)
|
||||||
|
|
||||||
|
#define HAL_SYSCFG_EnableIOAnalogSwitchBooster HAL_SYSCFG_EnableIOSwitchBooster
|
||||||
|
#define HAL_SYSCFG_DisableIOAnalogSwitchBooster HAL_SYSCFG_DisableIOSwitchBooster
|
||||||
|
#define HAL_SYSCFG_EnableIOAnalogSwitchVDD HAL_SYSCFG_EnableIOSwitchVDD
|
||||||
|
#define HAL_SYSCFG_DisableIOAnalogSwitchVDD HAL_SYSCFG_DisableIOSwitchVDD
|
||||||
|
#endif /* STM32G4 */
|
||||||
/**
|
/**
|
||||||
* @}
|
* @}
|
||||||
*/
|
*/
|
||||||
|
@ -494,7 +525,7 @@
|
||||||
/** @defgroup LL_FMC_Aliased_Defines LL FMC Aliased Defines maintained for compatibility purpose
|
/** @defgroup LL_FMC_Aliased_Defines LL FMC Aliased Defines maintained for compatibility purpose
|
||||||
* @{
|
* @{
|
||||||
*/
|
*/
|
||||||
#if defined(STM32L4) || defined(STM32F7) || defined(STM32H7)
|
#if defined(STM32L4) || defined(STM32F7) || defined(STM32H7) || defined(STM32G4)
|
||||||
#define FMC_NAND_PCC_WAIT_FEATURE_DISABLE FMC_NAND_WAIT_FEATURE_DISABLE
|
#define FMC_NAND_PCC_WAIT_FEATURE_DISABLE FMC_NAND_WAIT_FEATURE_DISABLE
|
||||||
#define FMC_NAND_PCC_WAIT_FEATURE_ENABLE FMC_NAND_WAIT_FEATURE_ENABLE
|
#define FMC_NAND_PCC_WAIT_FEATURE_ENABLE FMC_NAND_WAIT_FEATURE_ENABLE
|
||||||
#define FMC_NAND_PCC_MEM_BUS_WIDTH_8 FMC_NAND_MEM_BUS_WIDTH_8
|
#define FMC_NAND_PCC_MEM_BUS_WIDTH_8 FMC_NAND_MEM_BUS_WIDTH_8
|
||||||
|
@ -547,18 +578,25 @@
|
||||||
#define GPIO_AF9_SDIO2 GPIO_AF9_SDMMC2
|
#define GPIO_AF9_SDIO2 GPIO_AF9_SDMMC2
|
||||||
#define GPIO_AF10_SDIO2 GPIO_AF10_SDMMC2
|
#define GPIO_AF10_SDIO2 GPIO_AF10_SDMMC2
|
||||||
#define GPIO_AF11_SDIO2 GPIO_AF11_SDMMC2
|
#define GPIO_AF11_SDIO2 GPIO_AF11_SDMMC2
|
||||||
#endif
|
|
||||||
|
#if defined (STM32H743xx) || defined (STM32H753xx) || defined (STM32H750xx) || defined (STM32H742xx) || \
|
||||||
|
defined (STM32H745xx) || defined (STM32H755xx) || defined (STM32H747xx) || defined (STM32H757xx)
|
||||||
|
#define GPIO_AF10_OTG2_HS GPIO_AF10_OTG2_FS
|
||||||
|
#define GPIO_AF10_OTG1_FS GPIO_AF10_OTG1_HS
|
||||||
|
#define GPIO_AF12_OTG2_FS GPIO_AF12_OTG1_FS
|
||||||
|
#endif /*STM32H743xx || STM32H753xx || STM32H750xx || STM32H742xx || STM32H745xx || STM32H755xx || STM32H747xx || STM32H757xx */
|
||||||
|
#endif /* STM32H7 */
|
||||||
|
|
||||||
#define GPIO_AF0_LPTIM GPIO_AF0_LPTIM1
|
#define GPIO_AF0_LPTIM GPIO_AF0_LPTIM1
|
||||||
#define GPIO_AF1_LPTIM GPIO_AF1_LPTIM1
|
#define GPIO_AF1_LPTIM GPIO_AF1_LPTIM1
|
||||||
#define GPIO_AF2_LPTIM GPIO_AF2_LPTIM1
|
#define GPIO_AF2_LPTIM GPIO_AF2_LPTIM1
|
||||||
|
|
||||||
#if defined(STM32L0) || defined(STM32L4) || defined(STM32F4) || defined(STM32F2) || defined(STM32F7) || defined(STM32H7)
|
#if defined(STM32L0) || defined(STM32L4) || defined(STM32F4) || defined(STM32F2) || defined(STM32F7) || defined(STM32G4) || defined(STM32H7)
|
||||||
#define GPIO_SPEED_LOW GPIO_SPEED_FREQ_LOW
|
#define GPIO_SPEED_LOW GPIO_SPEED_FREQ_LOW
|
||||||
#define GPIO_SPEED_MEDIUM GPIO_SPEED_FREQ_MEDIUM
|
#define GPIO_SPEED_MEDIUM GPIO_SPEED_FREQ_MEDIUM
|
||||||
#define GPIO_SPEED_FAST GPIO_SPEED_FREQ_HIGH
|
#define GPIO_SPEED_FAST GPIO_SPEED_FREQ_HIGH
|
||||||
#define GPIO_SPEED_HIGH GPIO_SPEED_FREQ_VERY_HIGH
|
#define GPIO_SPEED_HIGH GPIO_SPEED_FREQ_VERY_HIGH
|
||||||
#endif /* STM32L0 || STM32L4 || STM32F4 || STM32F2 || STM32F7 || STM32H7*/
|
#endif /* STM32L0 || STM32L4 || STM32F4 || STM32F2 || STM32F7 || STM32G4 || STM32H7*/
|
||||||
|
|
||||||
#if defined(STM32L1)
|
#if defined(STM32L1)
|
||||||
#define GPIO_SPEED_VERY_LOW GPIO_SPEED_FREQ_LOW
|
#define GPIO_SPEED_VERY_LOW GPIO_SPEED_FREQ_LOW
|
||||||
|
@ -599,6 +637,185 @@
|
||||||
#define __HAL_HRTIM_GetClockPrescaler __HAL_HRTIM_GETCLOCKPRESCALER
|
#define __HAL_HRTIM_GetClockPrescaler __HAL_HRTIM_GETCLOCKPRESCALER
|
||||||
#define __HAL_HRTIM_SetCompare __HAL_HRTIM_SETCOMPARE
|
#define __HAL_HRTIM_SetCompare __HAL_HRTIM_SETCOMPARE
|
||||||
#define __HAL_HRTIM_GetCompare __HAL_HRTIM_GETCOMPARE
|
#define __HAL_HRTIM_GetCompare __HAL_HRTIM_GETCOMPARE
|
||||||
|
|
||||||
|
#if defined(STM32G4)
|
||||||
|
#define HAL_HRTIM_ExternalEventCounterConfig HAL_HRTIM_ExtEventCounterConfig
|
||||||
|
#define HAL_HRTIM_ExternalEventCounterEnable HAL_HRTIM_ExtEventCounterEnable
|
||||||
|
#define HAL_HRTIM_ExternalEventCounterDisable HAL_HRTIM_ExtEventCounterDisable
|
||||||
|
#define HAL_HRTIM_ExternalEventCounterReset HAL_HRTIM_ExtEventCounterReset
|
||||||
|
#endif /* STM32G4 */
|
||||||
|
|
||||||
|
#if defined(STM32H7)
|
||||||
|
#define HRTIM_OUTPUTSET_TIMAEV1_TIMBCMP1 HRTIM_OUTPUTSET_TIMEV_1
|
||||||
|
#define HRTIM_OUTPUTSET_TIMAEV2_TIMBCMP2 HRTIM_OUTPUTSET_TIMEV_2
|
||||||
|
#define HRTIM_OUTPUTSET_TIMAEV3_TIMCCMP2 HRTIM_OUTPUTSET_TIMEV_3
|
||||||
|
#define HRTIM_OUTPUTSET_TIMAEV4_TIMCCMP3 HRTIM_OUTPUTSET_TIMEV_4
|
||||||
|
#define HRTIM_OUTPUTSET_TIMAEV5_TIMDCMP1 HRTIM_OUTPUTSET_TIMEV_5
|
||||||
|
#define HRTIM_OUTPUTSET_TIMAEV6_TIMDCMP2 HRTIM_OUTPUTSET_TIMEV_6
|
||||||
|
#define HRTIM_OUTPUTSET_TIMAEV7_TIMECMP3 HRTIM_OUTPUTSET_TIMEV_7
|
||||||
|
#define HRTIM_OUTPUTSET_TIMAEV8_TIMECMP4 HRTIM_OUTPUTSET_TIMEV_8
|
||||||
|
#define HRTIM_OUTPUTSET_TIMAEV9_TIMFCMP4 HRTIM_OUTPUTSET_TIMEV_9
|
||||||
|
#define HRTIM_OUTPUTSET_TIMBEV1_TIMACMP1 HRTIM_OUTPUTSET_TIMEV_1
|
||||||
|
#define HRTIM_OUTPUTSET_TIMBEV2_TIMACMP2 HRTIM_OUTPUTSET_TIMEV_2
|
||||||
|
#define HRTIM_OUTPUTSET_TIMBEV3_TIMCCMP3 HRTIM_OUTPUTSET_TIMEV_3
|
||||||
|
#define HRTIM_OUTPUTSET_TIMBEV4_TIMCCMP4 HRTIM_OUTPUTSET_TIMEV_4
|
||||||
|
#define HRTIM_OUTPUTSET_TIMBEV5_TIMDCMP3 HRTIM_OUTPUTSET_TIMEV_5
|
||||||
|
#define HRTIM_OUTPUTSET_TIMBEV6_TIMDCMP4 HRTIM_OUTPUTSET_TIMEV_6
|
||||||
|
#define HRTIM_OUTPUTSET_TIMBEV7_TIMECMP1 HRTIM_OUTPUTSET_TIMEV_7
|
||||||
|
#define HRTIM_OUTPUTSET_TIMBEV8_TIMECMP2 HRTIM_OUTPUTSET_TIMEV_8
|
||||||
|
#define HRTIM_OUTPUTSET_TIMBEV9_TIMFCMP3 HRTIM_OUTPUTSET_TIMEV_9
|
||||||
|
#define HRTIM_OUTPUTSET_TIMCEV1_TIMACMP1 HRTIM_OUTPUTSET_TIMEV_1
|
||||||
|
#define HRTIM_OUTPUTSET_TIMCEV2_TIMACMP2 HRTIM_OUTPUTSET_TIMEV_2
|
||||||
|
#define HRTIM_OUTPUTSET_TIMCEV3_TIMBCMP2 HRTIM_OUTPUTSET_TIMEV_3
|
||||||
|
#define HRTIM_OUTPUTSET_TIMCEV4_TIMBCMP3 HRTIM_OUTPUTSET_TIMEV_4
|
||||||
|
#define HRTIM_OUTPUTSET_TIMCEV5_TIMDCMP2 HRTIM_OUTPUTSET_TIMEV_5
|
||||||
|
#define HRTIM_OUTPUTSET_TIMCEV6_TIMDCMP4 HRTIM_OUTPUTSET_TIMEV_6
|
||||||
|
#define HRTIM_OUTPUTSET_TIMCEV7_TIMECMP3 HRTIM_OUTPUTSET_TIMEV_7
|
||||||
|
#define HRTIM_OUTPUTSET_TIMCEV8_TIMECMP4 HRTIM_OUTPUTSET_TIMEV_8
|
||||||
|
#define HRTIM_OUTPUTSET_TIMCEV9_TIMFCMP2 HRTIM_OUTPUTSET_TIMEV_9
|
||||||
|
#define HRTIM_OUTPUTSET_TIMDEV1_TIMACMP1 HRTIM_OUTPUTSET_TIMEV_1
|
||||||
|
#define HRTIM_OUTPUTSET_TIMDEV2_TIMACMP4 HRTIM_OUTPUTSET_TIMEV_2
|
||||||
|
#define HRTIM_OUTPUTSET_TIMDEV3_TIMBCMP2 HRTIM_OUTPUTSET_TIMEV_3
|
||||||
|
#define HRTIM_OUTPUTSET_TIMDEV4_TIMBCMP4 HRTIM_OUTPUTSET_TIMEV_4
|
||||||
|
#define HRTIM_OUTPUTSET_TIMDEV5_TIMCCMP4 HRTIM_OUTPUTSET_TIMEV_5
|
||||||
|
#define HRTIM_OUTPUTSET_TIMDEV6_TIMECMP1 HRTIM_OUTPUTSET_TIMEV_6
|
||||||
|
#define HRTIM_OUTPUTSET_TIMDEV7_TIMECMP4 HRTIM_OUTPUTSET_TIMEV_7
|
||||||
|
#define HRTIM_OUTPUTSET_TIMDEV8_TIMFCMP1 HRTIM_OUTPUTSET_TIMEV_8
|
||||||
|
#define HRTIM_OUTPUTSET_TIMDEV9_TIMFCMP3 HRTIM_OUTPUTSET_TIMEV_9
|
||||||
|
#define HRTIM_OUTPUTSET_TIMEEV1_TIMACMP4 HRTIM_OUTPUTSET_TIMEV_1
|
||||||
|
#define HRTIM_OUTPUTSET_TIMEEV2_TIMBCMP3 HRTIM_OUTPUTSET_TIMEV_2
|
||||||
|
#define HRTIM_OUTPUTSET_TIMEEV3_TIMBCMP4 HRTIM_OUTPUTSET_TIMEV_3
|
||||||
|
#define HRTIM_OUTPUTSET_TIMEEV4_TIMCCMP1 HRTIM_OUTPUTSET_TIMEV_4
|
||||||
|
#define HRTIM_OUTPUTSET_TIMEEV5_TIMDCMP2 HRTIM_OUTPUTSET_TIMEV_5
|
||||||
|
#define HRTIM_OUTPUTSET_TIMEEV6_TIMDCMP1 HRTIM_OUTPUTSET_TIMEV_6
|
||||||
|
#define HRTIM_OUTPUTSET_TIMEEV7_TIMDCMP2 HRTIM_OUTPUTSET_TIMEV_7
|
||||||
|
#define HRTIM_OUTPUTSET_TIMEEV8_TIMFCMP3 HRTIM_OUTPUTSET_TIMEV_8
|
||||||
|
#define HRTIM_OUTPUTSET_TIMEEV9_TIMFCMP4 HRTIM_OUTPUTSET_TIMEV_9
|
||||||
|
#define HRTIM_OUTPUTSET_TIMFEV1_TIMACMP3 HRTIM_OUTPUTSET_TIMEV_1
|
||||||
|
#define HRTIM_OUTPUTSET_TIMFEV2_TIMBCMP1 HRTIM_OUTPUTSET_TIMEV_2
|
||||||
|
#define HRTIM_OUTPUTSET_TIMFEV3_TIMBCMP4 HRTIM_OUTPUTSET_TIMEV_3
|
||||||
|
#define HRTIM_OUTPUTSET_TIMFEV4_TIMCCMP1 HRTIM_OUTPUTSET_TIMEV_4
|
||||||
|
#define HRTIM_OUTPUTSET_TIMFEV5_TIMCCMP4 HRTIM_OUTPUTSET_TIMEV_5
|
||||||
|
#define HRTIM_OUTPUTSET_TIMFEV6_TIMDCMP3 HRTIM_OUTPUTSET_TIMEV_6
|
||||||
|
#define HRTIM_OUTPUTSET_TIMFEV7_TIMDCMP4 HRTIM_OUTPUTSET_TIMEV_7
|
||||||
|
#define HRTIM_OUTPUTSET_TIMFEV8_TIMECMP2 HRTIM_OUTPUTSET_TIMEV_8
|
||||||
|
#define HRTIM_OUTPUTSET_TIMFEV9_TIMECMP3 HRTIM_OUTPUTSET_TIMEV_9
|
||||||
|
|
||||||
|
#define HRTIM_OUTPUTRESET_TIMAEV1_TIMBCMP1 HRTIM_OUTPUTSET_TIMEV_1
|
||||||
|
#define HRTIM_OUTPUTRESET_TIMAEV2_TIMBCMP2 HRTIM_OUTPUTSET_TIMEV_2
|
||||||
|
#define HRTIM_OUTPUTRESET_TIMAEV3_TIMCCMP2 HRTIM_OUTPUTSET_TIMEV_3
|
||||||
|
#define HRTIM_OUTPUTRESET_TIMAEV4_TIMCCMP3 HRTIM_OUTPUTSET_TIMEV_4
|
||||||
|
#define HRTIM_OUTPUTRESET_TIMAEV5_TIMDCMP1 HRTIM_OUTPUTSET_TIMEV_5
|
||||||
|
#define HRTIM_OUTPUTRESET_TIMAEV6_TIMDCMP2 HRTIM_OUTPUTSET_TIMEV_6
|
||||||
|
#define HRTIM_OUTPUTRESET_TIMAEV7_TIMECMP3 HRTIM_OUTPUTSET_TIMEV_7
|
||||||
|
#define HRTIM_OUTPUTRESET_TIMAEV8_TIMECMP4 HRTIM_OUTPUTSET_TIMEV_8
|
||||||
|
#define HRTIM_OUTPUTRESET_TIMAEV9_TIMFCMP4 HRTIM_OUTPUTSET_TIMEV_9
|
||||||
|
#define HRTIM_OUTPUTRESET_TIMBEV1_TIMACMP1 HRTIM_OUTPUTSET_TIMEV_1
|
||||||
|
#define HRTIM_OUTPUTRESET_TIMBEV2_TIMACMP2 HRTIM_OUTPUTSET_TIMEV_2
|
||||||
|
#define HRTIM_OUTPUTRESET_TIMBEV3_TIMCCMP3 HRTIM_OUTPUTSET_TIMEV_3
|
||||||
|
#define HRTIM_OUTPUTRESET_TIMBEV4_TIMCCMP4 HRTIM_OUTPUTSET_TIMEV_4
|
||||||
|
#define HRTIM_OUTPUTRESET_TIMBEV5_TIMDCMP3 HRTIM_OUTPUTSET_TIMEV_5
|
||||||
|
#define HRTIM_OUTPUTRESET_TIMBEV6_TIMDCMP4 HRTIM_OUTPUTSET_TIMEV_6
|
||||||
|
#define HRTIM_OUTPUTRESET_TIMBEV7_TIMECMP1 HRTIM_OUTPUTSET_TIMEV_7
|
||||||
|
#define HRTIM_OUTPUTRESET_TIMBEV8_TIMECMP2 HRTIM_OUTPUTSET_TIMEV_8
|
||||||
|
#define HRTIM_OUTPUTRESET_TIMBEV9_TIMFCMP3 HRTIM_OUTPUTSET_TIMEV_9
|
||||||
|
#define HRTIM_OUTPUTRESET_TIMCEV1_TIMACMP1 HRTIM_OUTPUTSET_TIMEV_1
|
||||||
|
#define HRTIM_OUTPUTRESET_TIMCEV2_TIMACMP2 HRTIM_OUTPUTSET_TIMEV_2
|
||||||
|
#define HRTIM_OUTPUTRESET_TIMCEV3_TIMBCMP2 HRTIM_OUTPUTSET_TIMEV_3
|
||||||
|
#define HRTIM_OUTPUTRESET_TIMCEV4_TIMBCMP3 HRTIM_OUTPUTSET_TIMEV_4
|
||||||
|
#define HRTIM_OUTPUTRESET_TIMCEV5_TIMDCMP2 HRTIM_OUTPUTSET_TIMEV_5
|
||||||
|
#define HRTIM_OUTPUTRESET_TIMCEV6_TIMDCMP4 HRTIM_OUTPUTSET_TIMEV_6
|
||||||
|
#define HRTIM_OUTPUTRESET_TIMCEV7_TIMECMP3 HRTIM_OUTPUTSET_TIMEV_7
|
||||||
|
#define HRTIM_OUTPUTRESET_TIMCEV8_TIMECMP4 HRTIM_OUTPUTSET_TIMEV_8
|
||||||
|
#define HRTIM_OUTPUTRESET_TIMCEV9_TIMFCMP2 HRTIM_OUTPUTSET_TIMEV_9
|
||||||
|
#define HRTIM_OUTPUTRESET_TIMDEV1_TIMACMP1 HRTIM_OUTPUTSET_TIMEV_1
|
||||||
|
#define HRTIM_OUTPUTRESET_TIMDEV2_TIMACMP4 HRTIM_OUTPUTSET_TIMEV_2
|
||||||
|
#define HRTIM_OUTPUTRESET_TIMDEV3_TIMBCMP2 HRTIM_OUTPUTSET_TIMEV_3
|
||||||
|
#define HRTIM_OUTPUTRESET_TIMDEV4_TIMBCMP4 HRTIM_OUTPUTSET_TIMEV_4
|
||||||
|
#define HRTIM_OUTPUTRESET_TIMDEV5_TIMCCMP4 HRTIM_OUTPUTSET_TIMEV_5
|
||||||
|
#define HRTIM_OUTPUTRESET_TIMDEV6_TIMECMP1 HRTIM_OUTPUTSET_TIMEV_6
|
||||||
|
#define HRTIM_OUTPUTRESET_TIMDEV7_TIMECMP4 HRTIM_OUTPUTSET_TIMEV_7
|
||||||
|
#define HRTIM_OUTPUTRESET_TIMDEV8_TIMFCMP1 HRTIM_OUTPUTSET_TIMEV_8
|
||||||
|
#define HRTIM_OUTPUTRESET_TIMDEV9_TIMFCMP3 HRTIM_OUTPUTSET_TIMEV_9
|
||||||
|
#define HRTIM_OUTPUTRESET_TIMEEV1_TIMACMP4 HRTIM_OUTPUTSET_TIMEV_1
|
||||||
|
#define HRTIM_OUTPUTRESET_TIMEEV2_TIMBCMP3 HRTIM_OUTPUTSET_TIMEV_2
|
||||||
|
#define HRTIM_OUTPUTRESET_TIMEEV3_TIMBCMP4 HRTIM_OUTPUTSET_TIMEV_3
|
||||||
|
#define HRTIM_OUTPUTRESET_TIMEEV4_TIMCCMP1 HRTIM_OUTPUTSET_TIMEV_4
|
||||||
|
#define HRTIM_OUTPUTRESET_TIMEEV5_TIMDCMP2 HRTIM_OUTPUTSET_TIMEV_5
|
||||||
|
#define HRTIM_OUTPUTRESET_TIMEEV6_TIMDCMP1 HRTIM_OUTPUTSET_TIMEV_6
|
||||||
|
#define HRTIM_OUTPUTRESET_TIMEEV7_TIMDCMP2 HRTIM_OUTPUTSET_TIMEV_7
|
||||||
|
#define HRTIM_OUTPUTRESET_TIMEEV8_TIMFCMP3 HRTIM_OUTPUTSET_TIMEV_8
|
||||||
|
#define HRTIM_OUTPUTRESET_TIMEEV9_TIMFCMP4 HRTIM_OUTPUTSET_TIMEV_9
|
||||||
|
#define HRTIM_OUTPUTRESET_TIMFEV1_TIMACMP3 HRTIM_OUTPUTSET_TIMEV_1
|
||||||
|
#define HRTIM_OUTPUTRESET_TIMFEV2_TIMBCMP1 HRTIM_OUTPUTSET_TIMEV_2
|
||||||
|
#define HRTIM_OUTPUTRESET_TIMFEV3_TIMBCMP4 HRTIM_OUTPUTSET_TIMEV_3
|
||||||
|
#define HRTIM_OUTPUTRESET_TIMFEV4_TIMCCMP1 HRTIM_OUTPUTSET_TIMEV_4
|
||||||
|
#define HRTIM_OUTPUTRESET_TIMFEV5_TIMCCMP4 HRTIM_OUTPUTSET_TIMEV_5
|
||||||
|
#define HRTIM_OUTPUTRESET_TIMFEV6_TIMDCMP3 HRTIM_OUTPUTSET_TIMEV_6
|
||||||
|
#define HRTIM_OUTPUTRESET_TIMFEV7_TIMDCMP4 HRTIM_OUTPUTSET_TIMEV_7
|
||||||
|
#define HRTIM_OUTPUTRESET_TIMFEV8_TIMECMP2 HRTIM_OUTPUTSET_TIMEV_8
|
||||||
|
#define HRTIM_OUTPUTRESET_TIMFEV9_TIMECMP3 HRTIM_OUTPUTSET_TIMEV_9
|
||||||
|
#endif /* STM32H7 */
|
||||||
|
|
||||||
|
#if defined(STM32F3)
|
||||||
|
/** @brief Constants defining available sources associated to external events.
|
||||||
|
*/
|
||||||
|
#define HRTIM_EVENTSRC_1 (0x00000000U)
|
||||||
|
#define HRTIM_EVENTSRC_2 (HRTIM_EECR1_EE1SRC_0)
|
||||||
|
#define HRTIM_EVENTSRC_3 (HRTIM_EECR1_EE1SRC_1)
|
||||||
|
#define HRTIM_EVENTSRC_4 (HRTIM_EECR1_EE1SRC_1 | HRTIM_EECR1_EE1SRC_0)
|
||||||
|
|
||||||
|
/** @brief Constants defining the events that can be selected to configure the
|
||||||
|
* set/reset crossbar of a timer output
|
||||||
|
*/
|
||||||
|
#define HRTIM_OUTPUTSET_TIMEV_1 (HRTIM_SET1R_TIMEVNT1)
|
||||||
|
#define HRTIM_OUTPUTSET_TIMEV_2 (HRTIM_SET1R_TIMEVNT2)
|
||||||
|
#define HRTIM_OUTPUTSET_TIMEV_3 (HRTIM_SET1R_TIMEVNT3)
|
||||||
|
#define HRTIM_OUTPUTSET_TIMEV_4 (HRTIM_SET1R_TIMEVNT4)
|
||||||
|
#define HRTIM_OUTPUTSET_TIMEV_5 (HRTIM_SET1R_TIMEVNT5)
|
||||||
|
#define HRTIM_OUTPUTSET_TIMEV_6 (HRTIM_SET1R_TIMEVNT6)
|
||||||
|
#define HRTIM_OUTPUTSET_TIMEV_7 (HRTIM_SET1R_TIMEVNT7)
|
||||||
|
#define HRTIM_OUTPUTSET_TIMEV_8 (HRTIM_SET1R_TIMEVNT8)
|
||||||
|
#define HRTIM_OUTPUTSET_TIMEV_9 (HRTIM_SET1R_TIMEVNT9)
|
||||||
|
|
||||||
|
#define HRTIM_OUTPUTRESET_TIMEV_1 (HRTIM_RST1R_TIMEVNT1)
|
||||||
|
#define HRTIM_OUTPUTRESET_TIMEV_2 (HRTIM_RST1R_TIMEVNT2)
|
||||||
|
#define HRTIM_OUTPUTRESET_TIMEV_3 (HRTIM_RST1R_TIMEVNT3)
|
||||||
|
#define HRTIM_OUTPUTRESET_TIMEV_4 (HRTIM_RST1R_TIMEVNT4)
|
||||||
|
#define HRTIM_OUTPUTRESET_TIMEV_5 (HRTIM_RST1R_TIMEVNT5)
|
||||||
|
#define HRTIM_OUTPUTRESET_TIMEV_6 (HRTIM_RST1R_TIMEVNT6)
|
||||||
|
#define HRTIM_OUTPUTRESET_TIMEV_7 (HRTIM_RST1R_TIMEVNT7)
|
||||||
|
#define HRTIM_OUTPUTRESET_TIMEV_8 (HRTIM_RST1R_TIMEVNT8)
|
||||||
|
#define HRTIM_OUTPUTRESET_TIMEV_9 (HRTIM_RST1R_TIMEVNT9)
|
||||||
|
|
||||||
|
/** @brief Constants defining the event filtering applied to external events
|
||||||
|
* by a timer
|
||||||
|
*/
|
||||||
|
#define HRTIM_TIMEVENTFILTER_NONE (0x00000000U)
|
||||||
|
#define HRTIM_TIMEVENTFILTER_BLANKINGCMP1 (HRTIM_EEFR1_EE1FLTR_0)
|
||||||
|
#define HRTIM_TIMEVENTFILTER_BLANKINGCMP2 (HRTIM_EEFR1_EE1FLTR_1)
|
||||||
|
#define HRTIM_TIMEVENTFILTER_BLANKINGCMP3 (HRTIM_EEFR1_EE1FLTR_1 | HRTIM_EEFR1_EE1FLTR_0)
|
||||||
|
#define HRTIM_TIMEVENTFILTER_BLANKINGCMP4 (HRTIM_EEFR1_EE1FLTR_2)
|
||||||
|
#define HRTIM_TIMEVENTFILTER_BLANKINGFLTR1 (HRTIM_EEFR1_EE1FLTR_2 | HRTIM_EEFR1_EE1FLTR_0)
|
||||||
|
#define HRTIM_TIMEVENTFILTER_BLANKINGFLTR2 (HRTIM_EEFR1_EE1FLTR_2 | HRTIM_EEFR1_EE1FLTR_1)
|
||||||
|
#define HRTIM_TIMEVENTFILTER_BLANKINGFLTR3 (HRTIM_EEFR1_EE1FLTR_2 | HRTIM_EEFR1_EE1FLTR_1 | HRTIM_EEFR1_EE1FLTR_0)
|
||||||
|
#define HRTIM_TIMEVENTFILTER_BLANKINGFLTR4 (HRTIM_EEFR1_EE1FLTR_3)
|
||||||
|
#define HRTIM_TIMEVENTFILTER_BLANKINGFLTR5 (HRTIM_EEFR1_EE1FLTR_3 | HRTIM_EEFR1_EE1FLTR_0)
|
||||||
|
#define HRTIM_TIMEVENTFILTER_BLANKINGFLTR6 (HRTIM_EEFR1_EE1FLTR_3 | HRTIM_EEFR1_EE1FLTR_1)
|
||||||
|
#define HRTIM_TIMEVENTFILTER_BLANKINGFLTR7 (HRTIM_EEFR1_EE1FLTR_3 | HRTIM_EEFR1_EE1FLTR_1 | HRTIM_EEFR1_EE1FLTR_0)
|
||||||
|
#define HRTIM_TIMEVENTFILTER_BLANKINGFLTR8 (HRTIM_EEFR1_EE1FLTR_3 | HRTIM_EEFR1_EE1FLTR_2)
|
||||||
|
#define HRTIM_TIMEVENTFILTER_WINDOWINGCMP2 (HRTIM_EEFR1_EE1FLTR_3 | HRTIM_EEFR1_EE1FLTR_2 | HRTIM_EEFR1_EE1FLTR_0)
|
||||||
|
#define HRTIM_TIMEVENTFILTER_WINDOWINGCMP3 (HRTIM_EEFR1_EE1FLTR_3 | HRTIM_EEFR1_EE1FLTR_2 | HRTIM_EEFR1_EE1FLTR_1)
|
||||||
|
#define HRTIM_TIMEVENTFILTER_WINDOWINGTIM (HRTIM_EEFR1_EE1FLTR_3 | HRTIM_EEFR1_EE1FLTR_2 | HRTIM_EEFR1_EE1FLTR_1 | HRTIM_EEFR1_EE1FLTR_0)
|
||||||
|
|
||||||
|
/** @brief Constants defining the DLL calibration periods (in micro seconds)
|
||||||
|
*/
|
||||||
|
#define HRTIM_CALIBRATIONRATE_7300 0x00000000U
|
||||||
|
#define HRTIM_CALIBRATIONRATE_910 (HRTIM_DLLCR_CALRTE_0)
|
||||||
|
#define HRTIM_CALIBRATIONRATE_114 (HRTIM_DLLCR_CALRTE_1)
|
||||||
|
#define HRTIM_CALIBRATIONRATE_14 (HRTIM_DLLCR_CALRTE_1 | HRTIM_DLLCR_CALRTE_0)
|
||||||
|
|
||||||
|
#endif /* STM32F3 */
|
||||||
/**
|
/**
|
||||||
* @}
|
* @}
|
||||||
*/
|
*/
|
||||||
|
@ -738,6 +955,12 @@
|
||||||
#define OPAMP_PGACONNECT_VM0 OPAMP_PGA_CONNECT_INVERTINGINPUT_IO0
|
#define OPAMP_PGACONNECT_VM0 OPAMP_PGA_CONNECT_INVERTINGINPUT_IO0
|
||||||
#define OPAMP_PGACONNECT_VM1 OPAMP_PGA_CONNECT_INVERTINGINPUT_IO1
|
#define OPAMP_PGACONNECT_VM1 OPAMP_PGA_CONNECT_INVERTINGINPUT_IO1
|
||||||
|
|
||||||
|
#if defined(STM32L1) || defined(STM32L4) || defined(STM32L5) || defined(STM32H7)
|
||||||
|
#define HAL_OPAMP_MSP_INIT_CB_ID HAL_OPAMP_MSPINIT_CB_ID
|
||||||
|
#define HAL_OPAMP_MSP_DEINIT_CB_ID HAL_OPAMP_MSPDEINIT_CB_ID
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @}
|
* @}
|
||||||
*/
|
*/
|
||||||
|
@ -753,7 +976,6 @@
|
||||||
|
|
||||||
#define I2S_FLAG_TXE I2S_FLAG_TXP
|
#define I2S_FLAG_TXE I2S_FLAG_TXP
|
||||||
#define I2S_FLAG_RXNE I2S_FLAG_RXP
|
#define I2S_FLAG_RXNE I2S_FLAG_RXP
|
||||||
#define I2S_FLAG_FRE I2S_FLAG_TIFRE
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#if defined(STM32F7)
|
#if defined(STM32F7)
|
||||||
|
@ -824,6 +1046,16 @@
|
||||||
#define RTC_TAMPERPIN_PA0 RTC_TAMPERPIN_POS1
|
#define RTC_TAMPERPIN_PA0 RTC_TAMPERPIN_POS1
|
||||||
#define RTC_TAMPERPIN_PI8 RTC_TAMPERPIN_POS1
|
#define RTC_TAMPERPIN_PI8 RTC_TAMPERPIN_POS1
|
||||||
|
|
||||||
|
#if defined(STM32H7)
|
||||||
|
#define RTC_TAMPCR_TAMPXE RTC_TAMPER_X
|
||||||
|
#define RTC_TAMPCR_TAMPXIE RTC_TAMPER_X_INTERRUPT
|
||||||
|
|
||||||
|
#define RTC_TAMPER1_INTERRUPT RTC_IT_TAMP1
|
||||||
|
#define RTC_TAMPER2_INTERRUPT RTC_IT_TAMP2
|
||||||
|
#define RTC_TAMPER3_INTERRUPT RTC_IT_TAMP3
|
||||||
|
#define RTC_ALL_TAMPER_INTERRUPT RTC_IT_TAMPALL
|
||||||
|
#endif /* STM32H7 */
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @}
|
* @}
|
||||||
*/
|
*/
|
||||||
|
@ -971,6 +1203,24 @@
|
||||||
#define IS_TIM_HALL_INTERFACE_INSTANCE IS_TIM_HALL_SENSOR_INTERFACE_INSTANCE
|
#define IS_TIM_HALL_INTERFACE_INSTANCE IS_TIM_HALL_SENSOR_INTERFACE_INSTANCE
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#if defined(STM32H7)
|
||||||
|
#define TIM_TIM1_ETR_COMP1_OUT TIM_TIM1_ETR_COMP1
|
||||||
|
#define TIM_TIM1_ETR_COMP2_OUT TIM_TIM1_ETR_COMP2
|
||||||
|
#define TIM_TIM8_ETR_COMP1_OUT TIM_TIM8_ETR_COMP1
|
||||||
|
#define TIM_TIM8_ETR_COMP2_OUT TIM_TIM8_ETR_COMP2
|
||||||
|
#define TIM_TIM2_ETR_COMP1_OUT TIM_TIM2_ETR_COMP1
|
||||||
|
#define TIM_TIM2_ETR_COMP2_OUT TIM_TIM2_ETR_COMP2
|
||||||
|
#define TIM_TIM3_ETR_COMP1_OUT TIM_TIM3_ETR_COMP1
|
||||||
|
#define TIM_TIM1_TI1_COMP1_OUT TIM_TIM1_TI1_COMP1
|
||||||
|
#define TIM_TIM8_TI1_COMP2_OUT TIM_TIM8_TI1_COMP2
|
||||||
|
#define TIM_TIM2_TI4_COMP1_OUT TIM_TIM2_TI4_COMP1
|
||||||
|
#define TIM_TIM2_TI4_COMP2_OUT TIM_TIM2_TI4_COMP2
|
||||||
|
#define TIM_TIM2_TI4_COMP1COMP2_OUT TIM_TIM2_TI4_COMP1_COMP2
|
||||||
|
#define TIM_TIM3_TI1_COMP1_OUT TIM_TIM3_TI1_COMP1
|
||||||
|
#define TIM_TIM3_TI1_COMP2_OUT TIM_TIM3_TI1_COMP2
|
||||||
|
#define TIM_TIM3_TI1_COMP1COMP2_OUT TIM_TIM3_TI1_COMP1_COMP2
|
||||||
|
#endif
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @}
|
* @}
|
||||||
*/
|
*/
|
||||||
|
@ -1199,6 +1449,30 @@
|
||||||
|
|
||||||
#define HASH_HMACKeyType_ShortKey HASH_HMAC_KEYTYPE_SHORTKEY
|
#define HASH_HMACKeyType_ShortKey HASH_HMAC_KEYTYPE_SHORTKEY
|
||||||
#define HASH_HMACKeyType_LongKey HASH_HMAC_KEYTYPE_LONGKEY
|
#define HASH_HMACKeyType_LongKey HASH_HMAC_KEYTYPE_LONGKEY
|
||||||
|
|
||||||
|
#if defined(STM32L4) || defined(STM32F4) || defined(STM32F7) || defined(STM32H7)
|
||||||
|
|
||||||
|
#define HAL_HASH_MD5_Accumulate HAL_HASH_MD5_Accmlt
|
||||||
|
#define HAL_HASH_MD5_Accumulate_End HAL_HASH_MD5_Accmlt_End
|
||||||
|
#define HAL_HASH_MD5_Accumulate_IT HAL_HASH_MD5_Accmlt_IT
|
||||||
|
#define HAL_HASH_MD5_Accumulate_End_IT HAL_HASH_MD5_Accmlt_End_IT
|
||||||
|
|
||||||
|
#define HAL_HASH_SHA1_Accumulate HAL_HASH_SHA1_Accmlt
|
||||||
|
#define HAL_HASH_SHA1_Accumulate_End HAL_HASH_SHA1_Accmlt_End
|
||||||
|
#define HAL_HASH_SHA1_Accumulate_IT HAL_HASH_SHA1_Accmlt_IT
|
||||||
|
#define HAL_HASH_SHA1_Accumulate_End_IT HAL_HASH_SHA1_Accmlt_End_IT
|
||||||
|
|
||||||
|
#define HAL_HASHEx_SHA224_Accumulate HAL_HASHEx_SHA224_Accmlt
|
||||||
|
#define HAL_HASHEx_SHA224_Accumulate_End HAL_HASHEx_SHA224_Accmlt_End
|
||||||
|
#define HAL_HASHEx_SHA224_Accumulate_IT HAL_HASHEx_SHA224_Accmlt_IT
|
||||||
|
#define HAL_HASHEx_SHA224_Accumulate_End_IT HAL_HASHEx_SHA224_Accmlt_End_IT
|
||||||
|
|
||||||
|
#define HAL_HASHEx_SHA256_Accumulate HAL_HASHEx_SHA256_Accmlt
|
||||||
|
#define HAL_HASHEx_SHA256_Accumulate_End HAL_HASHEx_SHA256_Accmlt_End
|
||||||
|
#define HAL_HASHEx_SHA256_Accumulate_IT HAL_HASHEx_SHA256_Accmlt_IT
|
||||||
|
#define HAL_HASHEx_SHA256_Accumulate_End_IT HAL_HASHEx_SHA256_Accmlt_End_IT
|
||||||
|
|
||||||
|
#endif /* STM32L4 || STM32F4 || STM32F7 || STM32H7 */
|
||||||
/**
|
/**
|
||||||
* @}
|
* @}
|
||||||
*/
|
*/
|
||||||
|
@ -1221,6 +1495,13 @@
|
||||||
#endif
|
#endif
|
||||||
#define HAL_ADC_EnableBuffer_Cmd(cmd) (((cmd)==ENABLE) ? HAL_ADCEx_EnableVREFINT() : HAL_ADCEx_DisableVREFINT())
|
#define HAL_ADC_EnableBuffer_Cmd(cmd) (((cmd)==ENABLE) ? HAL_ADCEx_EnableVREFINT() : HAL_ADCEx_DisableVREFINT())
|
||||||
#define HAL_ADC_EnableBufferSensor_Cmd(cmd) (((cmd)==ENABLE) ? HAL_ADCEx_EnableVREFINTTempSensor() : HAL_ADCEx_DisableVREFINTTempSensor())
|
#define HAL_ADC_EnableBufferSensor_Cmd(cmd) (((cmd)==ENABLE) ? HAL_ADCEx_EnableVREFINTTempSensor() : HAL_ADCEx_DisableVREFINTTempSensor())
|
||||||
|
#if defined(STM32H7A3xx) || defined(STM32H7B3xx) || defined(STM32H7B0xx) || defined(STM32H7A3xxQ) || defined(STM32H7B3xxQ) || defined(STM32H7B0xxQ)
|
||||||
|
#define HAL_EnableSRDomainDBGStopMode HAL_EnableDomain3DBGStopMode
|
||||||
|
#define HAL_DisableSRDomainDBGStopMode HAL_DisableDomain3DBGStopMode
|
||||||
|
#define HAL_EnableSRDomainDBGStandbyMode HAL_EnableDomain3DBGStandbyMode
|
||||||
|
#define HAL_DisableSRDomainDBGStandbyMode HAL_DisableDomain3DBGStandbyMode
|
||||||
|
#endif /* STM32H7A3xx || STM32H7B3xx || STM32H7B0xx || STM32H7A3xxQ || STM32H7B3xxQ || STM32H7B0xxQ */
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @}
|
* @}
|
||||||
*/
|
*/
|
||||||
|
@ -1250,16 +1531,18 @@
|
||||||
|
|
||||||
#define HAL_I2CFastModePlusConfig(SYSCFG_I2CFastModePlus, cmd) (((cmd)==ENABLE)? HAL_I2CEx_EnableFastModePlus(SYSCFG_I2CFastModePlus): HAL_I2CEx_DisableFastModePlus(SYSCFG_I2CFastModePlus))
|
#define HAL_I2CFastModePlusConfig(SYSCFG_I2CFastModePlus, cmd) (((cmd)==ENABLE)? HAL_I2CEx_EnableFastModePlus(SYSCFG_I2CFastModePlus): HAL_I2CEx_DisableFastModePlus(SYSCFG_I2CFastModePlus))
|
||||||
|
|
||||||
#if defined(STM32H7) || defined(STM32WB) || defined(STM32G0) || defined(STM32F4) || defined(STM32F7)
|
#if defined(STM32H7) || defined(STM32WB) || defined(STM32G0) || defined(STM32F0) || defined(STM32F1) || defined(STM32F2) || defined(STM32F3) || defined(STM32F4) || defined(STM32F7) || defined(STM32L0) || defined(STM32L4) || defined(STM32L5) || defined(STM32G4)
|
||||||
#define HAL_I2C_Master_Sequential_Transmit_IT HAL_I2C_Master_Seq_Transmit_IT
|
#define HAL_I2C_Master_Sequential_Transmit_IT HAL_I2C_Master_Seq_Transmit_IT
|
||||||
#define HAL_I2C_Master_Sequential_Receive_IT HAL_I2C_Master_Seq_Receive_IT
|
#define HAL_I2C_Master_Sequential_Receive_IT HAL_I2C_Master_Seq_Receive_IT
|
||||||
#define HAL_I2C_Slave_Sequential_Transmit_IT HAL_I2C_Slave_Seq_Transmit_IT
|
#define HAL_I2C_Slave_Sequential_Transmit_IT HAL_I2C_Slave_Seq_Transmit_IT
|
||||||
#define HAL_I2C_Slave_Sequential_Receive_IT HAL_I2C_Slave_Seq_Receive_IT
|
#define HAL_I2C_Slave_Sequential_Receive_IT HAL_I2C_Slave_Seq_Receive_IT
|
||||||
|
#endif /* STM32H7 || STM32WB || STM32G0 || STM32F0 || STM32F1 || STM32F2 || STM32F3 || STM32F4 || STM32F7 || STM32L0 || STM32L4 || STM32L5 || STM32G4 */
|
||||||
|
#if defined(STM32H7) || defined(STM32WB) || defined(STM32G0) || defined(STM32F4) || defined(STM32F7) || defined(STM32L0) || defined(STM32L4) || defined(STM32L5) || defined(STM32G4)
|
||||||
#define HAL_I2C_Master_Sequential_Transmit_DMA HAL_I2C_Master_Seq_Transmit_DMA
|
#define HAL_I2C_Master_Sequential_Transmit_DMA HAL_I2C_Master_Seq_Transmit_DMA
|
||||||
#define HAL_I2C_Master_Sequential_Receive_DMA HAL_I2C_Master_Seq_Receive_DMA
|
#define HAL_I2C_Master_Sequential_Receive_DMA HAL_I2C_Master_Seq_Receive_DMA
|
||||||
#define HAL_I2C_Slave_Sequential_Transmit_DMA HAL_I2C_Slave_Seq_Transmit_DMA
|
#define HAL_I2C_Slave_Sequential_Transmit_DMA HAL_I2C_Slave_Seq_Transmit_DMA
|
||||||
#define HAL_I2C_Slave_Sequential_Receive_DMA HAL_I2C_Slave_Seq_Receive_DMA
|
#define HAL_I2C_Slave_Sequential_Receive_DMA HAL_I2C_Slave_Seq_Receive_DMA
|
||||||
#endif /* STM32H7 || STM32WB || STM32G0 || STM32F4 || STM32F7 */
|
#endif /* STM32H7 || STM32WB || STM32G0 || STM32F4 || STM32F7 || STM32L0 || STM32L4 || STM32L5 || STM32G4 */
|
||||||
|
|
||||||
#if defined(STM32F4)
|
#if defined(STM32F4)
|
||||||
#define HAL_FMPI2C_Master_Sequential_Transmit_IT HAL_FMPI2C_Master_Seq_Transmit_IT
|
#define HAL_FMPI2C_Master_Sequential_Transmit_IT HAL_FMPI2C_Master_Seq_Transmit_IT
|
||||||
|
@ -1278,6 +1561,13 @@
|
||||||
/** @defgroup HAL_PWR_Aliased HAL PWR Aliased maintained for legacy purpose
|
/** @defgroup HAL_PWR_Aliased HAL PWR Aliased maintained for legacy purpose
|
||||||
* @{
|
* @{
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
#if defined(STM32G0)
|
||||||
|
#define HAL_PWR_ConfigPVD HAL_PWREx_ConfigPVD
|
||||||
|
#define HAL_PWR_EnablePVD HAL_PWREx_EnablePVD
|
||||||
|
#define HAL_PWR_DisablePVD HAL_PWREx_DisablePVD
|
||||||
|
#define HAL_PWR_PVD_IRQHandler HAL_PWREx_PVD_IRQHandler
|
||||||
|
#endif
|
||||||
#define HAL_PWR_PVDConfig HAL_PWR_ConfigPVD
|
#define HAL_PWR_PVDConfig HAL_PWR_ConfigPVD
|
||||||
#define HAL_PWR_DisableBkUpReg HAL_PWREx_DisableBkUpReg
|
#define HAL_PWR_DisableBkUpReg HAL_PWREx_DisableBkUpReg
|
||||||
#define HAL_PWR_DisableFlashPowerDown HAL_PWREx_DisableFlashPowerDown
|
#define HAL_PWR_DisableFlashPowerDown HAL_PWREx_DisableFlashPowerDown
|
||||||
|
@ -1350,14 +1640,14 @@
|
||||||
#define HAL_TIM_DMAError TIM_DMAError
|
#define HAL_TIM_DMAError TIM_DMAError
|
||||||
#define HAL_TIM_DMACaptureCplt TIM_DMACaptureCplt
|
#define HAL_TIM_DMACaptureCplt TIM_DMACaptureCplt
|
||||||
#define HAL_TIMEx_DMACommutationCplt TIMEx_DMACommutationCplt
|
#define HAL_TIMEx_DMACommutationCplt TIMEx_DMACommutationCplt
|
||||||
#if defined(STM32H7) || defined(STM32G0) || defined(STM32F7) || defined(STM32F4) || defined(STM32L0)
|
#if defined(STM32H7) || defined(STM32G0) || defined(STM32F0) || defined(STM32F1) || defined(STM32F2) || defined(STM32F3) || defined(STM32F4) || defined(STM32F7) || defined(STM32L0) || defined(STM32L4)
|
||||||
#define HAL_TIM_SlaveConfigSynchronization HAL_TIM_SlaveConfigSynchro
|
#define HAL_TIM_SlaveConfigSynchronization HAL_TIM_SlaveConfigSynchro
|
||||||
#define HAL_TIM_SlaveConfigSynchronization_IT HAL_TIM_SlaveConfigSynchro_IT
|
#define HAL_TIM_SlaveConfigSynchronization_IT HAL_TIM_SlaveConfigSynchro_IT
|
||||||
#define HAL_TIMEx_CommutationCallback HAL_TIMEx_CommutCallback
|
#define HAL_TIMEx_CommutationCallback HAL_TIMEx_CommutCallback
|
||||||
#define HAL_TIMEx_ConfigCommutationEvent HAL_TIMEx_ConfigCommutEvent
|
#define HAL_TIMEx_ConfigCommutationEvent HAL_TIMEx_ConfigCommutEvent
|
||||||
#define HAL_TIMEx_ConfigCommutationEvent_IT HAL_TIMEx_ConfigCommutEvent_IT
|
#define HAL_TIMEx_ConfigCommutationEvent_IT HAL_TIMEx_ConfigCommutEvent_IT
|
||||||
#define HAL_TIMEx_ConfigCommutationEvent_DMA HAL_TIMEx_ConfigCommutEvent_DMA
|
#define HAL_TIMEx_ConfigCommutationEvent_DMA HAL_TIMEx_ConfigCommutEvent_DMA
|
||||||
#endif /* STM32H7 || STM32G0 || STM32F7 || STM32F4 || STM32L0 */
|
#endif /* STM32H7 || STM32G0 || STM32F0 || STM32F1 || STM32F2 || STM32F3 || STM32F4 || STM32F7 || STM32L0 */
|
||||||
/**
|
/**
|
||||||
* @}
|
* @}
|
||||||
*/
|
*/
|
||||||
|
@ -2476,12 +2766,28 @@
|
||||||
#define __USB_OTG_FS_CLK_DISABLE __HAL_RCC_USB_OTG_FS_CLK_DISABLE
|
#define __USB_OTG_FS_CLK_DISABLE __HAL_RCC_USB_OTG_FS_CLK_DISABLE
|
||||||
#define __USB_OTG_FS_CLK_ENABLE __HAL_RCC_USB_OTG_FS_CLK_ENABLE
|
#define __USB_OTG_FS_CLK_ENABLE __HAL_RCC_USB_OTG_FS_CLK_ENABLE
|
||||||
#define __USB_RELEASE_RESET __HAL_RCC_USB_RELEASE_RESET
|
#define __USB_RELEASE_RESET __HAL_RCC_USB_RELEASE_RESET
|
||||||
|
|
||||||
|
#if defined(STM32H7)
|
||||||
|
#define __HAL_RCC_WWDG_CLK_DISABLE __HAL_RCC_WWDG1_CLK_DISABLE
|
||||||
|
#define __HAL_RCC_WWDG_CLK_ENABLE __HAL_RCC_WWDG1_CLK_ENABLE
|
||||||
|
#define __HAL_RCC_WWDG_CLK_SLEEP_DISABLE __HAL_RCC_WWDG1_CLK_SLEEP_DISABLE
|
||||||
|
#define __HAL_RCC_WWDG_CLK_SLEEP_ENABLE __HAL_RCC_WWDG1_CLK_SLEEP_ENABLE
|
||||||
|
|
||||||
|
#define __HAL_RCC_WWDG_FORCE_RESET ((void)0U) /* Not available on the STM32H7*/
|
||||||
|
#define __HAL_RCC_WWDG_RELEASE_RESET ((void)0U) /* Not available on the STM32H7*/
|
||||||
|
|
||||||
|
|
||||||
|
#define __HAL_RCC_WWDG_IS_CLK_ENABLED __HAL_RCC_WWDG1_IS_CLK_ENABLED
|
||||||
|
#define __HAL_RCC_WWDG_IS_CLK_DISABLED __HAL_RCC_WWDG1_IS_CLK_DISABLED
|
||||||
|
#endif
|
||||||
|
|
||||||
#define __WWDG_CLK_DISABLE __HAL_RCC_WWDG_CLK_DISABLE
|
#define __WWDG_CLK_DISABLE __HAL_RCC_WWDG_CLK_DISABLE
|
||||||
#define __WWDG_CLK_ENABLE __HAL_RCC_WWDG_CLK_ENABLE
|
#define __WWDG_CLK_ENABLE __HAL_RCC_WWDG_CLK_ENABLE
|
||||||
#define __WWDG_CLK_SLEEP_DISABLE __HAL_RCC_WWDG_CLK_SLEEP_DISABLE
|
#define __WWDG_CLK_SLEEP_DISABLE __HAL_RCC_WWDG_CLK_SLEEP_DISABLE
|
||||||
#define __WWDG_CLK_SLEEP_ENABLE __HAL_RCC_WWDG_CLK_SLEEP_ENABLE
|
#define __WWDG_CLK_SLEEP_ENABLE __HAL_RCC_WWDG_CLK_SLEEP_ENABLE
|
||||||
#define __WWDG_FORCE_RESET __HAL_RCC_WWDG_FORCE_RESET
|
#define __WWDG_FORCE_RESET __HAL_RCC_WWDG_FORCE_RESET
|
||||||
#define __WWDG_RELEASE_RESET __HAL_RCC_WWDG_RELEASE_RESET
|
#define __WWDG_RELEASE_RESET __HAL_RCC_WWDG_RELEASE_RESET
|
||||||
|
|
||||||
#define __TIM21_CLK_ENABLE __HAL_RCC_TIM21_CLK_ENABLE
|
#define __TIM21_CLK_ENABLE __HAL_RCC_TIM21_CLK_ENABLE
|
||||||
#define __TIM21_CLK_DISABLE __HAL_RCC_TIM21_CLK_DISABLE
|
#define __TIM21_CLK_DISABLE __HAL_RCC_TIM21_CLK_DISABLE
|
||||||
#define __TIM21_FORCE_RESET __HAL_RCC_TIM21_FORCE_RESET
|
#define __TIM21_FORCE_RESET __HAL_RCC_TIM21_FORCE_RESET
|
||||||
|
@ -2814,6 +3120,15 @@
|
||||||
#define __WWDG_IS_CLK_ENABLED __HAL_RCC_WWDG_IS_CLK_ENABLED
|
#define __WWDG_IS_CLK_ENABLED __HAL_RCC_WWDG_IS_CLK_ENABLED
|
||||||
#define __WWDG_IS_CLK_DISABLED __HAL_RCC_WWDG_IS_CLK_DISABLED
|
#define __WWDG_IS_CLK_DISABLED __HAL_RCC_WWDG_IS_CLK_DISABLED
|
||||||
|
|
||||||
|
#if defined(STM32L1)
|
||||||
|
#define __HAL_RCC_CRYP_CLK_DISABLE __HAL_RCC_AES_CLK_DISABLE
|
||||||
|
#define __HAL_RCC_CRYP_CLK_ENABLE __HAL_RCC_AES_CLK_ENABLE
|
||||||
|
#define __HAL_RCC_CRYP_CLK_SLEEP_DISABLE __HAL_RCC_AES_CLK_SLEEP_DISABLE
|
||||||
|
#define __HAL_RCC_CRYP_CLK_SLEEP_ENABLE __HAL_RCC_AES_CLK_SLEEP_ENABLE
|
||||||
|
#define __HAL_RCC_CRYP_FORCE_RESET __HAL_RCC_AES_FORCE_RESET
|
||||||
|
#define __HAL_RCC_CRYP_RELEASE_RESET __HAL_RCC_AES_RELEASE_RESET
|
||||||
|
#endif /* STM32L1 */
|
||||||
|
|
||||||
#if defined(STM32F4)
|
#if defined(STM32F4)
|
||||||
#define __HAL_RCC_SDMMC1_FORCE_RESET __HAL_RCC_SDIO_FORCE_RESET
|
#define __HAL_RCC_SDMMC1_FORCE_RESET __HAL_RCC_SDIO_FORCE_RESET
|
||||||
#define __HAL_RCC_SDMMC1_RELEASE_RESET __HAL_RCC_SDIO_RELEASE_RESET
|
#define __HAL_RCC_SDMMC1_RELEASE_RESET __HAL_RCC_SDIO_RELEASE_RESET
|
||||||
|
@ -2930,7 +3245,7 @@
|
||||||
|
|
||||||
#if defined(STM32L4)
|
#if defined(STM32L4)
|
||||||
#define RCC_RTCCLKSOURCE_NO_CLK RCC_RTCCLKSOURCE_NONE
|
#define RCC_RTCCLKSOURCE_NO_CLK RCC_RTCCLKSOURCE_NONE
|
||||||
#elif defined(STM32WB) || defined(STM32G0)
|
#elif defined(STM32WB) || defined(STM32G0) || defined(STM32G4) || defined(STM32L5)
|
||||||
#else
|
#else
|
||||||
#define RCC_RTCCLKSOURCE_NONE RCC_RTCCLKSOURCE_NO_CLK
|
#define RCC_RTCCLKSOURCE_NONE RCC_RTCCLKSOURCE_NO_CLK
|
||||||
#endif
|
#endif
|
||||||
|
@ -3058,7 +3373,7 @@
|
||||||
/** @defgroup HAL_RTC_Aliased_Macros HAL RTC Aliased Macros maintained for legacy purpose
|
/** @defgroup HAL_RTC_Aliased_Macros HAL RTC Aliased Macros maintained for legacy purpose
|
||||||
* @{
|
* @{
|
||||||
*/
|
*/
|
||||||
#if defined (STM32G0) || defined (STM32L412xx) || defined (STM32L422xx) || defined (STM32L4P5xx) || defined (STM32L4Q5xx)
|
#if defined (STM32G0) || defined (STM32L5) || defined (STM32L412xx) || defined (STM32L422xx) || defined (STM32L4P5xx) || defined (STM32L4Q5xx) || defined (STM32G4)
|
||||||
#else
|
#else
|
||||||
#define __HAL_RTC_CLEAR_FLAG __HAL_RTC_EXTI_CLEAR_FLAG
|
#define __HAL_RTC_CLEAR_FLAG __HAL_RTC_EXTI_CLEAR_FLAG
|
||||||
#endif
|
#endif
|
||||||
|
@ -3174,14 +3489,14 @@
|
||||||
#define SDIO_IRQHandler SDMMC1_IRQHandler
|
#define SDIO_IRQHandler SDMMC1_IRQHandler
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#if defined(STM32F7) || defined(STM32F4) || defined(STM32F2)
|
#if defined(STM32F7) || defined(STM32F4) || defined(STM32F2) || defined(STM32L4) || defined(STM32H7)
|
||||||
#define HAL_SD_CardCIDTypedef HAL_SD_CardCIDTypeDef
|
#define HAL_SD_CardCIDTypedef HAL_SD_CardCIDTypeDef
|
||||||
#define HAL_SD_CardCSDTypedef HAL_SD_CardCSDTypeDef
|
#define HAL_SD_CardCSDTypedef HAL_SD_CardCSDTypeDef
|
||||||
#define HAL_SD_CardStatusTypedef HAL_SD_CardStatusTypeDef
|
#define HAL_SD_CardStatusTypedef HAL_SD_CardStatusTypeDef
|
||||||
#define HAL_SD_CardStateTypedef HAL_SD_CardStateTypeDef
|
#define HAL_SD_CardStateTypedef HAL_SD_CardStateTypeDef
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#if defined(STM32H7)
|
#if defined(STM32H7) || defined(STM32L5)
|
||||||
#define HAL_MMCEx_Read_DMADoubleBuffer0CpltCallback HAL_MMCEx_Read_DMADoubleBuf0CpltCallback
|
#define HAL_MMCEx_Read_DMADoubleBuffer0CpltCallback HAL_MMCEx_Read_DMADoubleBuf0CpltCallback
|
||||||
#define HAL_MMCEx_Read_DMADoubleBuffer1CpltCallback HAL_MMCEx_Read_DMADoubleBuf1CpltCallback
|
#define HAL_MMCEx_Read_DMADoubleBuffer1CpltCallback HAL_MMCEx_Read_DMADoubleBuf1CpltCallback
|
||||||
#define HAL_MMCEx_Write_DMADoubleBuffer0CpltCallback HAL_MMCEx_Write_DMADoubleBuf0CpltCallback
|
#define HAL_MMCEx_Write_DMADoubleBuffer0CpltCallback HAL_MMCEx_Write_DMADoubleBuf0CpltCallback
|
||||||
|
@ -3421,18 +3736,28 @@
|
||||||
/** @defgroup HAL_HRTIM_Aliased_Functions HAL HRTIM Aliased Functions maintained for legacy purpose
|
/** @defgroup HAL_HRTIM_Aliased_Functions HAL HRTIM Aliased Functions maintained for legacy purpose
|
||||||
* @{
|
* @{
|
||||||
*/
|
*/
|
||||||
#if defined (STM32H7) || defined (STM32F3)
|
#if defined (STM32H7) || defined (STM32G4) || defined (STM32F3)
|
||||||
#define HAL_HRTIM_WaveformCounterStart_IT HAL_HRTIM_WaveformCountStart_IT
|
#define HAL_HRTIM_WaveformCounterStart_IT HAL_HRTIM_WaveformCountStart_IT
|
||||||
#define HAL_HRTIM_WaveformCounterStart_DMA HAL_HRTIM_WaveformCountStart_DMA
|
#define HAL_HRTIM_WaveformCounterStart_DMA HAL_HRTIM_WaveformCountStart_DMA
|
||||||
#define HAL_HRTIM_WaveformCounterStart HAL_HRTIM_WaveformCountStart
|
#define HAL_HRTIM_WaveformCounterStart HAL_HRTIM_WaveformCountStart
|
||||||
#define HAL_HRTIM_WaveformCounterStop_IT HAL_HRTIM_WaveformCountStop_IT
|
#define HAL_HRTIM_WaveformCounterStop_IT HAL_HRTIM_WaveformCountStop_IT
|
||||||
#define HAL_HRTIM_WaveformCounterStop_DMA HAL_HRTIM_WaveformCountStop_DMA
|
#define HAL_HRTIM_WaveformCounterStop_DMA HAL_HRTIM_WaveformCountStop_DMA
|
||||||
#define HAL_HRTIM_WaveformCounterStop HAL_HRTIM_WaveformCountStop
|
#define HAL_HRTIM_WaveformCounterStop HAL_HRTIM_WaveformCountStop
|
||||||
#endif
|
#endif
|
||||||
/**
|
/**
|
||||||
* @}
|
* @}
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
/** @defgroup HAL_QSPI_Aliased_Macros HAL QSPI Aliased Macros maintained for legacy purpose
|
||||||
|
* @{
|
||||||
|
*/
|
||||||
|
#if defined (STM32L4) || defined (STM32F4) || defined (STM32F7)
|
||||||
|
#define HAL_QPSI_TIMEOUT_DEFAULT_VALUE HAL_QSPI_TIMEOUT_DEFAULT_VALUE
|
||||||
|
#endif /* STM32L4 || STM32F4 || STM32F7 */
|
||||||
|
/**
|
||||||
|
* @}
|
||||||
|
*/
|
||||||
|
|
||||||
/** @defgroup HAL_PPP_Aliased_Macros HAL PPP Aliased Macros maintained for legacy purpose
|
/** @defgroup HAL_PPP_Aliased_Macros HAL PPP Aliased Macros maintained for legacy purpose
|
||||||
* @{
|
* @{
|
||||||
*/
|
*/
|
||||||
|
|
|
@ -18,8 +18,8 @@
|
||||||
*/
|
*/
|
||||||
|
|
||||||
/* Define to prevent recursive inclusion -------------------------------------*/
|
/* Define to prevent recursive inclusion -------------------------------------*/
|
||||||
#ifndef __STM32F7xx_HAL_EXTI_H
|
#ifndef STM32F7xx_HAL_EXTI_H
|
||||||
#define __STM32F7xx_HAL_EXTI_H
|
#define STM32F7xx_HAL_EXTI_H
|
||||||
|
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
extern "C" {
|
extern "C" {
|
||||||
|
@ -38,14 +38,13 @@ extern "C" {
|
||||||
*/
|
*/
|
||||||
|
|
||||||
/* Exported types ------------------------------------------------------------*/
|
/* Exported types ------------------------------------------------------------*/
|
||||||
|
|
||||||
/** @defgroup EXTI_Exported_Types EXTI Exported Types
|
/** @defgroup EXTI_Exported_Types EXTI Exported Types
|
||||||
* @{
|
* @{
|
||||||
*/
|
*/
|
||||||
typedef enum
|
typedef enum
|
||||||
{
|
{
|
||||||
HAL_EXTI_COMMON_CB_ID = 0x00U,
|
HAL_EXTI_COMMON_CB_ID = 0x00U
|
||||||
HAL_EXTI_RISING_CB_ID = 0x01U,
|
|
||||||
HAL_EXTI_FALLING_CB_ID = 0x02U,
|
|
||||||
} EXTI_CallbackIDTypeDef;
|
} EXTI_CallbackIDTypeDef;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -68,6 +67,9 @@ typedef struct
|
||||||
This parameter can be a combination of @ref EXTI_Mode */
|
This parameter can be a combination of @ref EXTI_Mode */
|
||||||
uint32_t Trigger; /*!< The Exti Trigger to be configured. This parameter
|
uint32_t Trigger; /*!< The Exti Trigger to be configured. This parameter
|
||||||
can be a value of @ref EXTI_Trigger */
|
can be a value of @ref EXTI_Trigger */
|
||||||
|
uint32_t GPIOSel; /*!< The Exti GPIO multiplexer selection to be configured.
|
||||||
|
This parameter is only possible for line 0 to 15. It
|
||||||
|
can be a value of @ref EXTI_GPIOSel */
|
||||||
} EXTI_ConfigTypeDef;
|
} EXTI_ConfigTypeDef;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -82,48 +84,36 @@ typedef struct
|
||||||
/** @defgroup EXTI_Line EXTI Line
|
/** @defgroup EXTI_Line EXTI Line
|
||||||
* @{
|
* @{
|
||||||
*/
|
*/
|
||||||
#define EXTI_LINE_0 EXTI_IMR_IM0 /*!< External interrupt line 0 */
|
#define EXTI_LINE_0 (EXTI_GPIO | 0x00u) /*!< External interrupt line 0 */
|
||||||
#define EXTI_LINE_1 EXTI_IMR_IM1 /*!< External interrupt line 1 */
|
#define EXTI_LINE_1 (EXTI_GPIO | 0x01u) /*!< External interrupt line 1 */
|
||||||
#define EXTI_LINE_2 EXTI_IMR_IM2 /*!< External interrupt line 2 */
|
#define EXTI_LINE_2 (EXTI_GPIO | 0x02u) /*!< External interrupt line 2 */
|
||||||
#define EXTI_LINE_3 EXTI_IMR_IM3 /*!< External interrupt line 3 */
|
#define EXTI_LINE_3 (EXTI_GPIO | 0x03u) /*!< External interrupt line 3 */
|
||||||
#define EXTI_LINE_4 EXTI_IMR_IM4 /*!< External interrupt line 4 */
|
#define EXTI_LINE_4 (EXTI_GPIO | 0x04u) /*!< External interrupt line 4 */
|
||||||
#define EXTI_LINE_5 EXTI_IMR_IM5 /*!< External interrupt line 5 */
|
#define EXTI_LINE_5 (EXTI_GPIO | 0x05u) /*!< External interrupt line 5 */
|
||||||
#define EXTI_LINE_6 EXTI_IMR_IM6 /*!< External interrupt line 6 */
|
#define EXTI_LINE_6 (EXTI_GPIO | 0x06u) /*!< External interrupt line 6 */
|
||||||
#define EXTI_LINE_7 EXTI_IMR_IM7 /*!< External interrupt line 7 */
|
#define EXTI_LINE_7 (EXTI_GPIO | 0x07u) /*!< External interrupt line 7 */
|
||||||
#define EXTI_LINE_8 EXTI_IMR_IM8 /*!< External interrupt line 8 */
|
#define EXTI_LINE_8 (EXTI_GPIO | 0x08u) /*!< External interrupt line 8 */
|
||||||
#define EXTI_LINE_9 EXTI_IMR_IM9 /*!< External interrupt line 9 */
|
#define EXTI_LINE_9 (EXTI_GPIO | 0x09u) /*!< External interrupt line 9 */
|
||||||
#define EXTI_LINE_10 EXTI_IMR_IM10 /*!< External interrupt line 10 */
|
#define EXTI_LINE_10 (EXTI_GPIO | 0x0Au) /*!< External interrupt line 10 */
|
||||||
#define EXTI_LINE_11 EXTI_IMR_IM11 /*!< External interrupt line 11 */
|
#define EXTI_LINE_11 (EXTI_GPIO | 0x0Bu) /*!< External interrupt line 11 */
|
||||||
#define EXTI_LINE_12 EXTI_IMR_IM12 /*!< External interrupt line 12 */
|
#define EXTI_LINE_12 (EXTI_GPIO | 0x0Cu) /*!< External interrupt line 12 */
|
||||||
#define EXTI_LINE_13 EXTI_IMR_IM13 /*!< External interrupt line 13 */
|
#define EXTI_LINE_13 (EXTI_GPIO | 0x0Du) /*!< External interrupt line 13 */
|
||||||
#define EXTI_LINE_14 EXTI_IMR_IM14 /*!< External interrupt line 14 */
|
#define EXTI_LINE_14 (EXTI_GPIO | 0x0Eu) /*!< External interrupt line 14 */
|
||||||
#define EXTI_LINE_15 EXTI_IMR_IM15 /*!< External interrupt line 15 */
|
#define EXTI_LINE_15 (EXTI_GPIO | 0x0Fu) /*!< External interrupt line 15 */
|
||||||
#if defined(EXTI_IMR_IM16)
|
#define EXTI_LINE_16 (EXTI_CONFIG | 0x10u) /*!< External interrupt line 16 Connected to the PVD Output */
|
||||||
#define EXTI_LINE_16 EXTI_IMR_IM16 /*!< External interrupt line 16 Connected to the PVD Output */
|
#define EXTI_LINE_17 (EXTI_CONFIG | 0x11u) /*!< External interrupt line 17 Connected to the RTC Alarm event */
|
||||||
#endif /* EXTI_IMR_IM16 */
|
#define EXTI_LINE_18 (EXTI_CONFIG | 0x12u) /*!< External interrupt line 18 Connected to the USB OTG FS Wakeup from suspend event */
|
||||||
#if defined(EXTI_IMR_IM17)
|
#if defined(ETH)
|
||||||
#define EXTI_LINE_17 EXTI_IMR_IM17 /*!< External interrupt line 17 Connected to the RTC Alarm event */
|
#define EXTI_LINE_19 (EXTI_CONFIG | 0x13u) /*!< External interrupt line 19 Connected to the Ethernet Wakeup event */
|
||||||
#endif /* EXTI_IMR_IM17 */
|
#else
|
||||||
#if defined(EXTI_IMR_IM18)
|
#define EXTI_LINE_19 (EXTI_RESERVED | 0x13u) /*!< No interrupt supported in this line */
|
||||||
#define EXTI_LINE_18 EXTI_IMR_IM18 /*!< External interrupt line 18 Connected to the USB OTG FS Wakeup from suspend event */
|
#endif /* ETH */
|
||||||
#endif /* EXTI_IMR_IM18 */
|
#define EXTI_LINE_20 (EXTI_CONFIG | 0x14u) /*!< External interrupt line 20 Connected to the USB OTG HS (configured in FS) Wakeup event */
|
||||||
#if defined(EXTI_IMR_IM19)
|
#define EXTI_LINE_21 (EXTI_CONFIG | 0x15u) /*!< External interrupt line 21 Connected to the RTC Tamper and Time Stamp events */
|
||||||
#define EXTI_LINE_19 EXTI_IMR_IM19 /*!< External interrupt line 19 Connected to the Ethernet Wakeup event */
|
#define EXTI_LINE_22 (EXTI_CONFIG | 0x16u) /*!< External interrupt line 22 Connected to the RTC Wakeup event */
|
||||||
#endif /* EXTI_IMR_IM19 */
|
#define EXTI_LINE_23 (EXTI_CONFIG | 0x17u) /*!< External interrupt line 23 Connected to the LPTIM Wakeup event */
|
||||||
#if defined(EXTI_IMR_IM20)
|
|
||||||
#define EXTI_LINE_20 EXTI_IMR_IM20 /*!< External interrupt line 20 Connected to the USB OTG HS (configured in FS) Wakeup event */
|
|
||||||
#endif /* EXTI_IMR_IM20 */
|
|
||||||
#if defined(EXTI_IMR_IM21)
|
|
||||||
#define EXTI_LINE_21 EXTI_IMR_IM21 /*!< External interrupt line 21 Connected to the RTC Tamper and Time Stamp events */
|
|
||||||
#endif /* EXTI_IMR_IM21 */
|
|
||||||
#if defined(EXTI_IMR_IM22)
|
|
||||||
#define EXTI_LINE_22 EXTI_IMR_IM22 /*!< External interrupt line 22 Connected to the RTC Wakeup event */
|
|
||||||
#endif /* EXTI_IMR_IM22 */
|
|
||||||
#if defined(EXTI_IMR_IM23)
|
|
||||||
#define EXTI_LINE_23 EXTI_IMR_IM23 /*!< External interrupt line 23 Connected to the LPTIM Wakeup event */
|
|
||||||
#endif /* EXTI_IMR_IM23 */
|
|
||||||
#if defined(EXTI_IMR_IM24)
|
#if defined(EXTI_IMR_IM24)
|
||||||
#define EXTI_LINE_24 EXTI_IMR_IM24 /*!< External interrupt line 24 Connected to the MDIO Slave global Interrupt Wakeup event */
|
#define EXTI_LINE_24 (EXTI_CONFIG | 0x18u) /*!< External interrupt line 24 Connected to the MDIO Slave global Interrupt Wakeup event */
|
||||||
#endif /* EXTI_IMR_IM24 */
|
#endif /* EXTI_IMR_IM24 */
|
||||||
/**
|
/**
|
||||||
* @}
|
* @}
|
||||||
|
@ -142,6 +132,7 @@ typedef struct
|
||||||
/** @defgroup EXTI_Trigger EXTI Trigger
|
/** @defgroup EXTI_Trigger EXTI Trigger
|
||||||
* @{
|
* @{
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#define EXTI_TRIGGER_NONE 0x00000000u
|
#define EXTI_TRIGGER_NONE 0x00000000u
|
||||||
#define EXTI_TRIGGER_RISING 0x00000001u
|
#define EXTI_TRIGGER_RISING 0x00000001u
|
||||||
#define EXTI_TRIGGER_FALLING 0x00000002u
|
#define EXTI_TRIGGER_FALLING 0x00000002u
|
||||||
|
@ -150,6 +141,24 @@ typedef struct
|
||||||
* @}
|
* @}
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
/** @defgroup EXTI_GPIOSel EXTI GPIOSel
|
||||||
|
* @brief
|
||||||
|
* @{
|
||||||
|
*/
|
||||||
|
#define EXTI_GPIOA 0x00000000u
|
||||||
|
#define EXTI_GPIOB 0x00000001u
|
||||||
|
#define EXTI_GPIOC 0x00000002u
|
||||||
|
#define EXTI_GPIOD 0x00000003u
|
||||||
|
#define EXTI_GPIOE 0x00000004u
|
||||||
|
#define EXTI_GPIOF 0x00000005u
|
||||||
|
#define EXTI_GPIOG 0x00000006u
|
||||||
|
#define EXTI_GPIOH 0x00000007u
|
||||||
|
#define EXTI_GPIOI 0x00000008u
|
||||||
|
#define EXTI_GPIOJ 0x00000009u
|
||||||
|
#if defined (GPIOK)
|
||||||
|
#define EXTI_GPIOK 0x0000000Au
|
||||||
|
#endif /* GPIOK */
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @}
|
* @}
|
||||||
*/
|
*/
|
||||||
|
@ -167,6 +176,20 @@ typedef struct
|
||||||
/** @defgroup EXTI_Private_Constants EXTI Private Constants
|
/** @defgroup EXTI_Private_Constants EXTI Private Constants
|
||||||
* @{
|
* @{
|
||||||
*/
|
*/
|
||||||
|
/**
|
||||||
|
* @brief EXTI Line property definition
|
||||||
|
*/
|
||||||
|
#define EXTI_PROPERTY_SHIFT 24u
|
||||||
|
#define EXTI_CONFIG (0x02uL << EXTI_PROPERTY_SHIFT)
|
||||||
|
#define EXTI_GPIO ((0x04uL << EXTI_PROPERTY_SHIFT) | EXTI_CONFIG)
|
||||||
|
#define EXTI_RESERVED (0x08uL << EXTI_PROPERTY_SHIFT)
|
||||||
|
#define EXTI_PROPERTY_MASK (EXTI_CONFIG | EXTI_GPIO)
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief EXTI bit usage
|
||||||
|
*/
|
||||||
|
#define EXTI_PIN_MASK 0x0000001Fu
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief EXTI Mask for interrupt & event mode
|
* @brief EXTI Mask for interrupt & event mode
|
||||||
*/
|
*/
|
||||||
|
@ -175,12 +198,17 @@ typedef struct
|
||||||
/**
|
/**
|
||||||
* @brief EXTI Mask for trigger possibilities
|
* @brief EXTI Mask for trigger possibilities
|
||||||
*/
|
*/
|
||||||
#define EXTI_TRIGGER_MASK (EXTI_TRIGGER_RISING | EXTI_TRIGGER_FALLING | EXTI_TRIGGER_RISING_FALLING)
|
#define EXTI_TRIGGER_MASK (EXTI_TRIGGER_RISING | EXTI_TRIGGER_FALLING)
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief EXTI Line number
|
* @brief EXTI Line number
|
||||||
*/
|
*/
|
||||||
|
#if defined(EXTI_IMR_IM24)
|
||||||
#define EXTI_LINE_NB 25u
|
#define EXTI_LINE_NB 25u
|
||||||
|
#else
|
||||||
|
#define EXTI_LINE_NB 24u
|
||||||
|
#endif /* EXTI_IMR_IM24 */
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @}
|
* @}
|
||||||
|
@ -190,16 +218,47 @@ typedef struct
|
||||||
/** @defgroup EXTI_Private_Macros EXTI Private Macros
|
/** @defgroup EXTI_Private_Macros EXTI Private Macros
|
||||||
* @{
|
* @{
|
||||||
*/
|
*/
|
||||||
#define IS_EXTI_LINE(__LINE__) ((((__LINE__) & ~EXTI_IMR_IM) == 0x00U) && (__LINE__))
|
#define IS_EXTI_LINE(__LINE__) ((((__LINE__) & ~(EXTI_PROPERTY_MASK | EXTI_PIN_MASK)) == 0x00u) && \
|
||||||
|
((((__LINE__) & EXTI_PROPERTY_MASK) == EXTI_CONFIG) || \
|
||||||
|
(((__LINE__) & EXTI_PROPERTY_MASK) == EXTI_GPIO)) && \
|
||||||
|
(((__LINE__) & EXTI_PIN_MASK) < EXTI_LINE_NB))
|
||||||
|
|
||||||
#define IS_EXTI_MODE(__LINE__) ((((__LINE__) & ~EXTI_MODE_MASK) == 0x00U))
|
#define IS_EXTI_MODE(__LINE__) ((((__LINE__) & EXTI_MODE_MASK) != 0x00u) && \
|
||||||
|
(((__LINE__) & ~EXTI_MODE_MASK) == 0x00u))
|
||||||
|
|
||||||
#define IS_EXTI_TRIGGER(__LINE__) (((__LINE__) & ~EXTI_TRIGGER_MASK) == 0x00U)
|
#define IS_EXTI_TRIGGER(__LINE__) (((__LINE__) & ~EXTI_TRIGGER_MASK) == 0x00u)
|
||||||
|
|
||||||
#define IS_EXTI_PENDING_EDGE(__LINE__) (((__LINE__) == EXTI_TRIGGER_FALLING) || \
|
#define IS_EXTI_PENDING_EDGE(__LINE__) (((__LINE__) == EXTI_TRIGGER_FALLING) || \
|
||||||
((__LINE__) == EXTI_TRIGGER_RISING) || \
|
((__LINE__) == EXTI_TRIGGER_RISING) || \
|
||||||
((__LINE__) == EXTI_TRIGGER_RISING_FALLING))
|
((__LINE__) == EXTI_TRIGGER_RISING_FALLING))
|
||||||
|
|
||||||
|
#define IS_EXTI_CONFIG_LINE(__LINE__) (((__LINE__) & EXTI_CONFIG) != 0x00u)
|
||||||
|
|
||||||
|
#if defined (GPIOK)
|
||||||
|
#define IS_EXTI_GPIO_PORT(__PORT__) (((__PORT__) == EXTI_GPIOA) || \
|
||||||
|
((__PORT__) == EXTI_GPIOB) || \
|
||||||
|
((__PORT__) == EXTI_GPIOC) || \
|
||||||
|
((__PORT__) == EXTI_GPIOD) || \
|
||||||
|
((__PORT__) == EXTI_GPIOE) || \
|
||||||
|
((__PORT__) == EXTI_GPIOF) || \
|
||||||
|
((__PORT__) == EXTI_GPIOG) || \
|
||||||
|
((__PORT__) == EXTI_GPIOH) || \
|
||||||
|
((__PORT__) == EXTI_GPIOI) || \
|
||||||
|
((__PORT__) == EXTI_GPIOJ) || \
|
||||||
|
((__PORT__) == EXTI_GPIOK))
|
||||||
|
#else
|
||||||
|
#define IS_EXTI_GPIO_PORT(__PORT__) (((__PORT__) == EXTI_GPIOA) || \
|
||||||
|
((__PORT__) == EXTI_GPIOB) || \
|
||||||
|
((__PORT__) == EXTI_GPIOC) || \
|
||||||
|
((__PORT__) == EXTI_GPIOD) || \
|
||||||
|
((__PORT__) == EXTI_GPIOE) || \
|
||||||
|
((__PORT__) == EXTI_GPIOF) || \
|
||||||
|
((__PORT__) == EXTI_GPIOG) || \
|
||||||
|
((__PORT__) == EXTI_GPIOH) || \
|
||||||
|
((__PORT__) == EXTI_GPIOI) || \
|
||||||
|
((__PORT__) == EXTI_GPIOJ))
|
||||||
|
#endif /* GPIOK */
|
||||||
|
|
||||||
#define IS_EXTI_GPIO_PIN(__PIN__) ((__PIN__) < 16U)
|
#define IS_EXTI_GPIO_PIN(__PIN__) ((__PIN__) < 16U)
|
||||||
/**
|
/**
|
||||||
* @}
|
* @}
|
||||||
|
@ -255,6 +314,6 @@ void HAL_EXTI_GenerateSWI(EXTI_HandleTypeDef *hexti);
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#endif /* __STM32F7xx_HAL_EXTI_H */
|
#endif /* STM32F7xx_HAL_EXTI_H */
|
||||||
|
|
||||||
/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
|
/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
|
||||||
|
|
|
@ -262,7 +262,7 @@ void HAL_GPIO_EXTI_Callback(uint16_t GPIO_Pin);
|
||||||
* @{
|
* @{
|
||||||
*/
|
*/
|
||||||
#define IS_GPIO_PIN_ACTION(ACTION) (((ACTION) == GPIO_PIN_RESET) || ((ACTION) == GPIO_PIN_SET))
|
#define IS_GPIO_PIN_ACTION(ACTION) (((ACTION) == GPIO_PIN_RESET) || ((ACTION) == GPIO_PIN_SET))
|
||||||
#define IS_GPIO_PIN(__PIN__) ((((__PIN__) & GPIO_PIN_MASK) != (uint32_t)0x00))
|
#define IS_GPIO_PIN(__PIN__) ((((uint32_t)(__PIN__) & GPIO_PIN_MASK) != 0x00U))
|
||||||
#define IS_GPIO_MODE(MODE) (((MODE) == GPIO_MODE_INPUT) ||\
|
#define IS_GPIO_MODE(MODE) (((MODE) == GPIO_MODE_INPUT) ||\
|
||||||
((MODE) == GPIO_MODE_OUTPUT_PP) ||\
|
((MODE) == GPIO_MODE_OUTPUT_PP) ||\
|
||||||
((MODE) == GPIO_MODE_OUTPUT_OD) ||\
|
((MODE) == GPIO_MODE_OUTPUT_OD) ||\
|
||||||
|
|
|
@ -167,6 +167,9 @@ void HAL_I2CEx_DisableFastModePlus(uint32_t ConfigFastModePlus);
|
||||||
(((__CONFIG__) & I2C_FASTMODEPLUS_PB9) == I2C_FASTMODEPLUS_PB9) || \
|
(((__CONFIG__) & I2C_FASTMODEPLUS_PB9) == I2C_FASTMODEPLUS_PB9) || \
|
||||||
(((__CONFIG__) & I2C_FASTMODEPLUS_I2C1) == I2C_FASTMODEPLUS_I2C1))
|
(((__CONFIG__) & I2C_FASTMODEPLUS_I2C1) == I2C_FASTMODEPLUS_I2C1))
|
||||||
#endif /* SYSCFG_PMC_I2C1_FMP && SYSCFG_PMC_I2C2_FMP && SYSCFG_PMC_I2C3_FMP && SYSCFG_PMC_I2C4_FMP */
|
#endif /* SYSCFG_PMC_I2C1_FMP && SYSCFG_PMC_I2C2_FMP && SYSCFG_PMC_I2C3_FMP && SYSCFG_PMC_I2C4_FMP */
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @}
|
* @}
|
||||||
*/
|
*/
|
||||||
|
|
|
@ -96,16 +96,16 @@ typedef struct __PCD_HandleTypeDef
|
||||||
typedef struct
|
typedef struct
|
||||||
#endif /* USE_HAL_PCD_REGISTER_CALLBACKS */
|
#endif /* USE_HAL_PCD_REGISTER_CALLBACKS */
|
||||||
{
|
{
|
||||||
PCD_TypeDef *Instance; /*!< Register base address */
|
PCD_TypeDef *Instance; /*!< Register base address */
|
||||||
PCD_InitTypeDef Init; /*!< PCD required parameters */
|
PCD_InitTypeDef Init; /*!< PCD required parameters */
|
||||||
__IO uint8_t USB_Address; /*!< USB Address */
|
__IO uint8_t USB_Address; /*!< USB Address */
|
||||||
PCD_EPTypeDef IN_ep[16]; /*!< IN endpoint parameters */
|
PCD_EPTypeDef IN_ep[16]; /*!< IN endpoint parameters */
|
||||||
PCD_EPTypeDef OUT_ep[16]; /*!< OUT endpoint parameters */
|
PCD_EPTypeDef OUT_ep[16]; /*!< OUT endpoint parameters */
|
||||||
HAL_LockTypeDef Lock; /*!< PCD peripheral status */
|
HAL_LockTypeDef Lock; /*!< PCD peripheral status */
|
||||||
__IO PCD_StateTypeDef State; /*!< PCD communication state */
|
__IO PCD_StateTypeDef State; /*!< PCD communication state */
|
||||||
__IO uint32_t ErrorCode; /*!< PCD Error code */
|
__IO uint32_t ErrorCode; /*!< PCD Error code */
|
||||||
uint32_t Setup[12]; /*!< Setup packet buffer */
|
uint32_t Setup[12]; /*!< Setup packet buffer */
|
||||||
PCD_LPM_StateTypeDef LPM_State; /*!< LPM State */
|
PCD_LPM_StateTypeDef LPM_State; /*!< LPM State */
|
||||||
uint32_t BESL;
|
uint32_t BESL;
|
||||||
|
|
||||||
|
|
||||||
|
@ -148,9 +148,9 @@ typedef struct
|
||||||
/** @defgroup PCD_Speed PCD Speed
|
/** @defgroup PCD_Speed PCD Speed
|
||||||
* @{
|
* @{
|
||||||
*/
|
*/
|
||||||
#define PCD_SPEED_HIGH 0U
|
#define PCD_SPEED_HIGH USBD_HS_SPEED
|
||||||
#define PCD_SPEED_HIGH_IN_FULL 1U
|
#define PCD_SPEED_HIGH_IN_FULL USBD_HSINFS_SPEED
|
||||||
#define PCD_SPEED_FULL 2U
|
#define PCD_SPEED_FULL USBD_FS_SPEED
|
||||||
/**
|
/**
|
||||||
* @}
|
* @}
|
||||||
*/
|
*/
|
||||||
|
@ -207,20 +207,20 @@ typedef struct
|
||||||
#define __HAL_USB_OTG_HS_WAKEUP_EXTI_GET_FLAG() EXTI->PR & (USB_OTG_HS_WAKEUP_EXTI_LINE)
|
#define __HAL_USB_OTG_HS_WAKEUP_EXTI_GET_FLAG() EXTI->PR & (USB_OTG_HS_WAKEUP_EXTI_LINE)
|
||||||
#define __HAL_USB_OTG_HS_WAKEUP_EXTI_CLEAR_FLAG() EXTI->PR = (USB_OTG_HS_WAKEUP_EXTI_LINE)
|
#define __HAL_USB_OTG_HS_WAKEUP_EXTI_CLEAR_FLAG() EXTI->PR = (USB_OTG_HS_WAKEUP_EXTI_LINE)
|
||||||
|
|
||||||
#define __HAL_USB_OTG_HS_WAKEUP_EXTI_ENABLE_RISING_EDGE() \
|
#define __HAL_USB_OTG_HS_WAKEUP_EXTI_ENABLE_RISING_EDGE() \
|
||||||
do { \
|
do { \
|
||||||
EXTI->FTSR &= ~(USB_OTG_HS_WAKEUP_EXTI_LINE); \
|
EXTI->FTSR &= ~(USB_OTG_HS_WAKEUP_EXTI_LINE); \
|
||||||
EXTI->RTSR |= USB_OTG_HS_WAKEUP_EXTI_LINE; \
|
EXTI->RTSR |= USB_OTG_HS_WAKEUP_EXTI_LINE; \
|
||||||
} while(0U)
|
} while(0U)
|
||||||
#define __HAL_USB_OTG_FS_WAKEUP_EXTI_ENABLE_IT() EXTI->IMR |= USB_OTG_FS_WAKEUP_EXTI_LINE
|
#define __HAL_USB_OTG_FS_WAKEUP_EXTI_ENABLE_IT() EXTI->IMR |= USB_OTG_FS_WAKEUP_EXTI_LINE
|
||||||
#define __HAL_USB_OTG_FS_WAKEUP_EXTI_DISABLE_IT() EXTI->IMR &= ~(USB_OTG_FS_WAKEUP_EXTI_LINE)
|
#define __HAL_USB_OTG_FS_WAKEUP_EXTI_DISABLE_IT() EXTI->IMR &= ~(USB_OTG_FS_WAKEUP_EXTI_LINE)
|
||||||
#define __HAL_USB_OTG_FS_WAKEUP_EXTI_GET_FLAG() EXTI->PR & (USB_OTG_FS_WAKEUP_EXTI_LINE)
|
#define __HAL_USB_OTG_FS_WAKEUP_EXTI_GET_FLAG() EXTI->PR & (USB_OTG_FS_WAKEUP_EXTI_LINE)
|
||||||
#define __HAL_USB_OTG_FS_WAKEUP_EXTI_CLEAR_FLAG() EXTI->PR = USB_OTG_FS_WAKEUP_EXTI_LINE
|
#define __HAL_USB_OTG_FS_WAKEUP_EXTI_CLEAR_FLAG() EXTI->PR = USB_OTG_FS_WAKEUP_EXTI_LINE
|
||||||
|
|
||||||
#define __HAL_USB_OTG_FS_WAKEUP_EXTI_ENABLE_RISING_EDGE() \
|
#define __HAL_USB_OTG_FS_WAKEUP_EXTI_ENABLE_RISING_EDGE() \
|
||||||
do { \
|
do { \
|
||||||
EXTI->FTSR &= ~(USB_OTG_FS_WAKEUP_EXTI_LINE); \
|
EXTI->FTSR &= ~(USB_OTG_FS_WAKEUP_EXTI_LINE); \
|
||||||
EXTI->RTSR |= USB_OTG_FS_WAKEUP_EXTI_LINE; \
|
EXTI->RTSR |= USB_OTG_FS_WAKEUP_EXTI_LINE; \
|
||||||
} while(0U)
|
} while(0U)
|
||||||
#endif /* defined (USB_OTG_FS) || defined (USB_OTG_HS) */
|
#endif /* defined (USB_OTG_FS) || defined (USB_OTG_HS) */
|
||||||
|
|
||||||
|
@ -256,7 +256,7 @@ typedef enum
|
||||||
HAL_PCD_SUSPEND_CB_ID = 0x04, /*!< USB PCD Suspend callback ID */
|
HAL_PCD_SUSPEND_CB_ID = 0x04, /*!< USB PCD Suspend callback ID */
|
||||||
HAL_PCD_RESUME_CB_ID = 0x05, /*!< USB PCD Resume callback ID */
|
HAL_PCD_RESUME_CB_ID = 0x05, /*!< USB PCD Resume callback ID */
|
||||||
HAL_PCD_CONNECT_CB_ID = 0x06, /*!< USB PCD Connect callback ID */
|
HAL_PCD_CONNECT_CB_ID = 0x06, /*!< USB PCD Connect callback ID */
|
||||||
HAL_PCD_DISCONNECT_CB_ID = 0x07, /*!< USB PCD Disconnect callback ID */
|
HAL_PCD_DISCONNECT_CB_ID = 0x07, /*!< USB PCD Disconnect callback ID */
|
||||||
|
|
||||||
HAL_PCD_MSPINIT_CB_ID = 0x08, /*!< USB PCD MspInit callback ID */
|
HAL_PCD_MSPINIT_CB_ID = 0x08, /*!< USB PCD MspInit callback ID */
|
||||||
HAL_PCD_MSPDEINIT_CB_ID = 0x09 /*!< USB PCD MspDeInit callback ID */
|
HAL_PCD_MSPDEINIT_CB_ID = 0x09 /*!< USB PCD MspDeInit callback ID */
|
||||||
|
@ -371,14 +371,6 @@ PCD_StateTypeDef HAL_PCD_GetState(PCD_HandleTypeDef *hpcd);
|
||||||
* @{
|
* @{
|
||||||
*/
|
*/
|
||||||
#if defined (USB_OTG_FS) || defined (USB_OTG_HS)
|
#if defined (USB_OTG_FS) || defined (USB_OTG_HS)
|
||||||
#define USB_OTG_FS_WAKEUP_EXTI_RISING_EDGE 0x08U
|
|
||||||
#define USB_OTG_FS_WAKEUP_EXTI_FALLING_EDGE 0x0CU
|
|
||||||
#define USB_OTG_FS_WAKEUP_EXTI_RISING_FALLING_EDGE 0x10U
|
|
||||||
|
|
||||||
#define USB_OTG_HS_WAKEUP_EXTI_RISING_EDGE 0x08U
|
|
||||||
#define USB_OTG_HS_WAKEUP_EXTI_FALLING_EDGE 0x0CU
|
|
||||||
#define USB_OTG_HS_WAKEUP_EXTI_RISING_FALLING_EDGE 0x10U
|
|
||||||
|
|
||||||
#define USB_OTG_FS_WAKEUP_EXTI_LINE (0x1U << 18) /*!< USB FS EXTI Line WakeUp Interrupt */
|
#define USB_OTG_FS_WAKEUP_EXTI_LINE (0x1U << 18) /*!< USB FS EXTI Line WakeUp Interrupt */
|
||||||
#define USB_OTG_HS_WAKEUP_EXTI_LINE (0x1U << 20) /*!< USB HS EXTI Line WakeUp Interrupt */
|
#define USB_OTG_HS_WAKEUP_EXTI_LINE (0x1U << 20) /*!< USB HS EXTI Line WakeUp Interrupt */
|
||||||
#endif /* defined (USB_OTG_FS) || defined (USB_OTG_HS) */
|
#endif /* defined (USB_OTG_FS) || defined (USB_OTG_HS) */
|
||||||
|
|
|
@ -167,7 +167,7 @@ typedef struct
|
||||||
This parameter can be a value of @ref TIM_Encoder_Mode */
|
This parameter can be a value of @ref TIM_Encoder_Mode */
|
||||||
|
|
||||||
uint32_t IC1Polarity; /*!< Specifies the active edge of the input signal.
|
uint32_t IC1Polarity; /*!< Specifies the active edge of the input signal.
|
||||||
This parameter can be a value of @ref TIM_Input_Capture_Polarity */
|
This parameter can be a value of @ref TIM_Encoder_Input_Polarity */
|
||||||
|
|
||||||
uint32_t IC1Selection; /*!< Specifies the input.
|
uint32_t IC1Selection; /*!< Specifies the input.
|
||||||
This parameter can be a value of @ref TIM_Input_Capture_Selection */
|
This parameter can be a value of @ref TIM_Input_Capture_Selection */
|
||||||
|
@ -179,7 +179,7 @@ typedef struct
|
||||||
This parameter can be a number between Min_Data = 0x0 and Max_Data = 0xF */
|
This parameter can be a number between Min_Data = 0x0 and Max_Data = 0xF */
|
||||||
|
|
||||||
uint32_t IC2Polarity; /*!< Specifies the active edge of the input signal.
|
uint32_t IC2Polarity; /*!< Specifies the active edge of the input signal.
|
||||||
This parameter can be a value of @ref TIM_Input_Capture_Polarity */
|
This parameter can be a value of @ref TIM_Encoder_Input_Polarity */
|
||||||
|
|
||||||
uint32_t IC2Selection; /*!< Specifies the input.
|
uint32_t IC2Selection; /*!< Specifies the input.
|
||||||
This parameter can be a value of @ref TIM_Input_Capture_Selection */
|
This parameter can be a value of @ref TIM_Input_Capture_Selection */
|
||||||
|
@ -235,7 +235,12 @@ typedef struct
|
||||||
uint32_t MasterOutputTrigger2; /*!< Trigger output2 (TRGO2) selection
|
uint32_t MasterOutputTrigger2; /*!< Trigger output2 (TRGO2) selection
|
||||||
This parameter can be a value of @ref TIM_Master_Mode_Selection_2 */
|
This parameter can be a value of @ref TIM_Master_Mode_Selection_2 */
|
||||||
uint32_t MasterSlaveMode; /*!< Master/slave mode selection
|
uint32_t MasterSlaveMode; /*!< Master/slave mode selection
|
||||||
This parameter can be a value of @ref TIM_Master_Slave_Mode */
|
This parameter can be a value of @ref TIM_Master_Slave_Mode
|
||||||
|
@note When the Master/slave mode is enabled, the effect of
|
||||||
|
an event on the trigger input (TRGI) is delayed to allow a
|
||||||
|
perfect synchronization between the current timer and its
|
||||||
|
slaves (through TRGO). It is not mandatory in case of timer
|
||||||
|
synchronization mode. */
|
||||||
} TIM_MasterConfigTypeDef;
|
} TIM_MasterConfigTypeDef;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -518,6 +523,15 @@ typedef void (*pTIM_CallbackTypeDef)(TIM_HandleTypeDef *htim); /*!< pointer to
|
||||||
* @}
|
* @}
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
/** @defgroup TIM_Update_Interrupt_Flag_Remap TIM Update Interrupt Flag Remap
|
||||||
|
* @{
|
||||||
|
*/
|
||||||
|
#define TIM_UIFREMAP_DISABLE 0x00000000U /*!< Update interrupt flag remap disabled */
|
||||||
|
#define TIM_UIFREMAP_ENABLE TIM_CR1_UIFREMAP /*!< Update interrupt flag remap enabled */
|
||||||
|
/**
|
||||||
|
* @}
|
||||||
|
*/
|
||||||
|
|
||||||
/** @defgroup TIM_ClockDivision TIM Clock Division
|
/** @defgroup TIM_ClockDivision TIM Clock Division
|
||||||
* @{
|
* @{
|
||||||
*/
|
*/
|
||||||
|
@ -611,6 +625,15 @@ typedef void (*pTIM_CallbackTypeDef)(TIM_HandleTypeDef *htim); /*!< pointer to
|
||||||
* @}
|
* @}
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
/** @defgroup TIM_Encoder_Input_Polarity TIM Encoder Input Polarity
|
||||||
|
* @{
|
||||||
|
*/
|
||||||
|
#define TIM_ENCODERINPUTPOLARITY_RISING TIM_INPUTCHANNELPOLARITY_RISING /*!< Encoder input with rising edge polarity */
|
||||||
|
#define TIM_ENCODERINPUTPOLARITY_FALLING TIM_INPUTCHANNELPOLARITY_FALLING /*!< Encoder input with falling edge polarity */
|
||||||
|
/**
|
||||||
|
* @}
|
||||||
|
*/
|
||||||
|
|
||||||
/** @defgroup TIM_Input_Capture_Selection TIM Input Capture Selection
|
/** @defgroup TIM_Input_Capture_Selection TIM Input Capture Selection
|
||||||
* @{
|
* @{
|
||||||
*/
|
*/
|
||||||
|
@ -1119,15 +1142,15 @@ typedef void (*pTIM_CallbackTypeDef)(TIM_HandleTypeDef *htim); /*!< pointer to
|
||||||
* @retval None
|
* @retval None
|
||||||
*/
|
*/
|
||||||
#define __HAL_TIM_DISABLE(__HANDLE__) \
|
#define __HAL_TIM_DISABLE(__HANDLE__) \
|
||||||
do { \
|
do { \
|
||||||
if (((__HANDLE__)->Instance->CCER & TIM_CCER_CCxE_MASK) == 0UL) \
|
if (((__HANDLE__)->Instance->CCER & TIM_CCER_CCxE_MASK) == 0UL) \
|
||||||
{ \
|
{ \
|
||||||
if(((__HANDLE__)->Instance->CCER & TIM_CCER_CCxNE_MASK) == 0UL) \
|
if(((__HANDLE__)->Instance->CCER & TIM_CCER_CCxNE_MASK) == 0UL) \
|
||||||
{ \
|
{ \
|
||||||
(__HANDLE__)->Instance->CR1 &= ~(TIM_CR1_CEN); \
|
(__HANDLE__)->Instance->CR1 &= ~(TIM_CR1_CEN); \
|
||||||
} \
|
} \
|
||||||
} \
|
} \
|
||||||
} while(0)
|
} while(0)
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief Disable the TIM main Output.
|
* @brief Disable the TIM main Output.
|
||||||
|
@ -1136,15 +1159,15 @@ typedef void (*pTIM_CallbackTypeDef)(TIM_HandleTypeDef *htim); /*!< pointer to
|
||||||
* @note The Main Output Enable of a timer instance is disabled only if all the CCx and CCxN channels have been disabled
|
* @note The Main Output Enable of a timer instance is disabled only if all the CCx and CCxN channels have been disabled
|
||||||
*/
|
*/
|
||||||
#define __HAL_TIM_MOE_DISABLE(__HANDLE__) \
|
#define __HAL_TIM_MOE_DISABLE(__HANDLE__) \
|
||||||
do { \
|
do { \
|
||||||
if (((__HANDLE__)->Instance->CCER & TIM_CCER_CCxE_MASK) == 0UL) \
|
if (((__HANDLE__)->Instance->CCER & TIM_CCER_CCxE_MASK) == 0UL) \
|
||||||
{ \
|
{ \
|
||||||
if(((__HANDLE__)->Instance->CCER & TIM_CCER_CCxNE_MASK) == 0UL) \
|
if(((__HANDLE__)->Instance->CCER & TIM_CCER_CCxNE_MASK) == 0UL) \
|
||||||
{ \
|
{ \
|
||||||
(__HANDLE__)->Instance->BDTR &= ~(TIM_BDTR_MOE); \
|
(__HANDLE__)->Instance->BDTR &= ~(TIM_BDTR_MOE); \
|
||||||
} \
|
} \
|
||||||
} \
|
} \
|
||||||
} while(0)
|
} while(0)
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief Disable the TIM main Output.
|
* @brief Disable the TIM main Output.
|
||||||
|
@ -1279,7 +1302,8 @@ typedef void (*pTIM_CallbackTypeDef)(TIM_HandleTypeDef *htim); /*!< pointer to
|
||||||
* @arg TIM_IT_BREAK: Break interrupt
|
* @arg TIM_IT_BREAK: Break interrupt
|
||||||
* @retval The state of TIM_IT (SET or RESET).
|
* @retval The state of TIM_IT (SET or RESET).
|
||||||
*/
|
*/
|
||||||
#define __HAL_TIM_GET_IT_SOURCE(__HANDLE__, __INTERRUPT__) ((((__HANDLE__)->Instance->DIER & (__INTERRUPT__)) == (__INTERRUPT__)) ? SET : RESET)
|
#define __HAL_TIM_GET_IT_SOURCE(__HANDLE__, __INTERRUPT__) ((((__HANDLE__)->Instance->DIER & (__INTERRUPT__)) \
|
||||||
|
== (__INTERRUPT__)) ? SET : RESET)
|
||||||
|
|
||||||
/** @brief Clear the TIM interrupt pending bits.
|
/** @brief Clear the TIM interrupt pending bits.
|
||||||
* @param __HANDLE__ TIM handle
|
* @param __HANDLE__ TIM handle
|
||||||
|
@ -1297,6 +1321,31 @@ typedef void (*pTIM_CallbackTypeDef)(TIM_HandleTypeDef *htim); /*!< pointer to
|
||||||
*/
|
*/
|
||||||
#define __HAL_TIM_CLEAR_IT(__HANDLE__, __INTERRUPT__) ((__HANDLE__)->Instance->SR = ~(__INTERRUPT__))
|
#define __HAL_TIM_CLEAR_IT(__HANDLE__, __INTERRUPT__) ((__HANDLE__)->Instance->SR = ~(__INTERRUPT__))
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Force a continuous copy of the update interrupt flag (UIF) into the timer counter register (bit 31).
|
||||||
|
* @note This allows both the counter value and a potential roll-over condition signalled by the UIFCPY flag to be read in an atomic way.
|
||||||
|
* @param __HANDLE__ TIM handle.
|
||||||
|
* @retval None
|
||||||
|
mode.
|
||||||
|
*/
|
||||||
|
#define __HAL_TIM_UIFREMAP_ENABLE(__HANDLE__) (((__HANDLE__)->Instance->CR1 |= TIM_CR1_UIFREMAP))
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Disable update interrupt flag (UIF) remapping.
|
||||||
|
* @param __HANDLE__ TIM handle.
|
||||||
|
* @retval None
|
||||||
|
mode.
|
||||||
|
*/
|
||||||
|
#define __HAL_TIM_UIFREMAP_DISABLE(__HANDLE__) (((__HANDLE__)->Instance->CR1 &= ~TIM_CR1_UIFREMAP))
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Get update interrupt flag (UIF) copy status.
|
||||||
|
* @param __COUNTER__ Counter value.
|
||||||
|
* @retval The state of UIFCPY (TRUE or FALSE).
|
||||||
|
mode.
|
||||||
|
*/
|
||||||
|
#define __HAL_TIM_GET_UIFCPY(__COUNTER__) (((__COUNTER__) & (TIM_CNT_UIFCPY)) == (TIM_CNT_UIFCPY))
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief Indicates whether or not the TIM Counter is used as downcounter.
|
* @brief Indicates whether or not the TIM Counter is used as downcounter.
|
||||||
* @param __HANDLE__ TIM handle.
|
* @param __HANDLE__ TIM handle.
|
||||||
|
@ -1316,6 +1365,8 @@ mode.
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief Set the TIM Counter Register value on runtime.
|
* @brief Set the TIM Counter Register value on runtime.
|
||||||
|
* Note Please check if the bit 31 of CNT register is used as UIF copy or not, this may affect the counter range in case of 32 bits counter TIM instance.
|
||||||
|
* Bit 31 of CNT can be enabled/disabled using __HAL_TIM_UIFREMAP_ENABLE()/__HAL_TIM_UIFREMAP_DISABLE() macros.
|
||||||
* @param __HANDLE__ TIM handle.
|
* @param __HANDLE__ TIM handle.
|
||||||
* @param __COUNTER__ specifies the Counter register new value.
|
* @param __COUNTER__ specifies the Counter register new value.
|
||||||
* @retval None
|
* @retval None
|
||||||
|
@ -1327,8 +1378,7 @@ mode.
|
||||||
* @param __HANDLE__ TIM handle.
|
* @param __HANDLE__ TIM handle.
|
||||||
* @retval 16-bit or 32-bit value of the timer counter register (TIMx_CNT)
|
* @retval 16-bit or 32-bit value of the timer counter register (TIMx_CNT)
|
||||||
*/
|
*/
|
||||||
#define __HAL_TIM_GET_COUNTER(__HANDLE__) \
|
#define __HAL_TIM_GET_COUNTER(__HANDLE__) ((__HANDLE__)->Instance->CNT)
|
||||||
((__HANDLE__)->Instance->CNT)
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief Set the TIM Autoreload Register value on runtime without calling another time any Init function.
|
* @brief Set the TIM Autoreload Register value on runtime without calling another time any Init function.
|
||||||
|
@ -1337,18 +1387,17 @@ mode.
|
||||||
* @retval None
|
* @retval None
|
||||||
*/
|
*/
|
||||||
#define __HAL_TIM_SET_AUTORELOAD(__HANDLE__, __AUTORELOAD__) \
|
#define __HAL_TIM_SET_AUTORELOAD(__HANDLE__, __AUTORELOAD__) \
|
||||||
do{ \
|
do{ \
|
||||||
(__HANDLE__)->Instance->ARR = (__AUTORELOAD__); \
|
(__HANDLE__)->Instance->ARR = (__AUTORELOAD__); \
|
||||||
(__HANDLE__)->Init.Period = (__AUTORELOAD__); \
|
(__HANDLE__)->Init.Period = (__AUTORELOAD__); \
|
||||||
} while(0)
|
} while(0)
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief Get the TIM Autoreload Register value on runtime.
|
* @brief Get the TIM Autoreload Register value on runtime.
|
||||||
* @param __HANDLE__ TIM handle.
|
* @param __HANDLE__ TIM handle.
|
||||||
* @retval 16-bit or 32-bit value of the timer auto-reload register(TIMx_ARR)
|
* @retval 16-bit or 32-bit value of the timer auto-reload register(TIMx_ARR)
|
||||||
*/
|
*/
|
||||||
#define __HAL_TIM_GET_AUTORELOAD(__HANDLE__) \
|
#define __HAL_TIM_GET_AUTORELOAD(__HANDLE__) ((__HANDLE__)->Instance->ARR)
|
||||||
((__HANDLE__)->Instance->ARR)
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief Set the TIM Clock Division value on runtime without calling another time any Init function.
|
* @brief Set the TIM Clock Division value on runtime without calling another time any Init function.
|
||||||
|
@ -1361,11 +1410,11 @@ mode.
|
||||||
* @retval None
|
* @retval None
|
||||||
*/
|
*/
|
||||||
#define __HAL_TIM_SET_CLOCKDIVISION(__HANDLE__, __CKD__) \
|
#define __HAL_TIM_SET_CLOCKDIVISION(__HANDLE__, __CKD__) \
|
||||||
do{ \
|
do{ \
|
||||||
(__HANDLE__)->Instance->CR1 &= (~TIM_CR1_CKD); \
|
(__HANDLE__)->Instance->CR1 &= (~TIM_CR1_CKD); \
|
||||||
(__HANDLE__)->Instance->CR1 |= (__CKD__); \
|
(__HANDLE__)->Instance->CR1 |= (__CKD__); \
|
||||||
(__HANDLE__)->Init.ClockDivision = (__CKD__); \
|
(__HANDLE__)->Init.ClockDivision = (__CKD__); \
|
||||||
} while(0)
|
} while(0)
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief Get the TIM Clock Division value on runtime.
|
* @brief Get the TIM Clock Division value on runtime.
|
||||||
|
@ -1375,8 +1424,7 @@ mode.
|
||||||
* @arg TIM_CLOCKDIVISION_DIV2: tDTS=2*tCK_INT
|
* @arg TIM_CLOCKDIVISION_DIV2: tDTS=2*tCK_INT
|
||||||
* @arg TIM_CLOCKDIVISION_DIV4: tDTS=4*tCK_INT
|
* @arg TIM_CLOCKDIVISION_DIV4: tDTS=4*tCK_INT
|
||||||
*/
|
*/
|
||||||
#define __HAL_TIM_GET_CLOCKDIVISION(__HANDLE__) \
|
#define __HAL_TIM_GET_CLOCKDIVISION(__HANDLE__) ((__HANDLE__)->Instance->CR1 & TIM_CR1_CKD)
|
||||||
((__HANDLE__)->Instance->CR1 & TIM_CR1_CKD)
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief Set the TIM Input Capture prescaler on runtime without calling another time HAL_TIM_IC_ConfigChannel() function.
|
* @brief Set the TIM Input Capture prescaler on runtime without calling another time HAL_TIM_IC_ConfigChannel() function.
|
||||||
|
@ -1396,10 +1444,10 @@ mode.
|
||||||
* @retval None
|
* @retval None
|
||||||
*/
|
*/
|
||||||
#define __HAL_TIM_SET_ICPRESCALER(__HANDLE__, __CHANNEL__, __ICPSC__) \
|
#define __HAL_TIM_SET_ICPRESCALER(__HANDLE__, __CHANNEL__, __ICPSC__) \
|
||||||
do{ \
|
do{ \
|
||||||
TIM_RESET_ICPRESCALERVALUE((__HANDLE__), (__CHANNEL__)); \
|
TIM_RESET_ICPRESCALERVALUE((__HANDLE__), (__CHANNEL__)); \
|
||||||
TIM_SET_ICPRESCALERVALUE((__HANDLE__), (__CHANNEL__), (__ICPSC__)); \
|
TIM_SET_ICPRESCALERVALUE((__HANDLE__), (__CHANNEL__), (__ICPSC__)); \
|
||||||
} while(0)
|
} while(0)
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief Get the TIM Input Capture prescaler on runtime.
|
* @brief Get the TIM Input Capture prescaler on runtime.
|
||||||
|
@ -1437,12 +1485,12 @@ mode.
|
||||||
* @retval None
|
* @retval None
|
||||||
*/
|
*/
|
||||||
#define __HAL_TIM_SET_COMPARE(__HANDLE__, __CHANNEL__, __COMPARE__) \
|
#define __HAL_TIM_SET_COMPARE(__HANDLE__, __CHANNEL__, __COMPARE__) \
|
||||||
(((__CHANNEL__) == TIM_CHANNEL_1) ? ((__HANDLE__)->Instance->CCR1 = (__COMPARE__)) :\
|
(((__CHANNEL__) == TIM_CHANNEL_1) ? ((__HANDLE__)->Instance->CCR1 = (__COMPARE__)) :\
|
||||||
((__CHANNEL__) == TIM_CHANNEL_2) ? ((__HANDLE__)->Instance->CCR2 = (__COMPARE__)) :\
|
((__CHANNEL__) == TIM_CHANNEL_2) ? ((__HANDLE__)->Instance->CCR2 = (__COMPARE__)) :\
|
||||||
((__CHANNEL__) == TIM_CHANNEL_3) ? ((__HANDLE__)->Instance->CCR3 = (__COMPARE__)) :\
|
((__CHANNEL__) == TIM_CHANNEL_3) ? ((__HANDLE__)->Instance->CCR3 = (__COMPARE__)) :\
|
||||||
((__CHANNEL__) == TIM_CHANNEL_4) ? ((__HANDLE__)->Instance->CCR4 = (__COMPARE__)) :\
|
((__CHANNEL__) == TIM_CHANNEL_4) ? ((__HANDLE__)->Instance->CCR4 = (__COMPARE__)) :\
|
||||||
((__CHANNEL__) == TIM_CHANNEL_5) ? ((__HANDLE__)->Instance->CCR5 = (__COMPARE__)) :\
|
((__CHANNEL__) == TIM_CHANNEL_5) ? ((__HANDLE__)->Instance->CCR5 = (__COMPARE__)) :\
|
||||||
((__HANDLE__)->Instance->CCR6 = (__COMPARE__)))
|
((__HANDLE__)->Instance->CCR6 = (__COMPARE__)))
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief Get the TIM Capture Compare Register value on runtime.
|
* @brief Get the TIM Capture Compare Register value on runtime.
|
||||||
|
@ -1458,12 +1506,12 @@ mode.
|
||||||
* @retval 16-bit or 32-bit value of the capture/compare register (TIMx_CCRy)
|
* @retval 16-bit or 32-bit value of the capture/compare register (TIMx_CCRy)
|
||||||
*/
|
*/
|
||||||
#define __HAL_TIM_GET_COMPARE(__HANDLE__, __CHANNEL__) \
|
#define __HAL_TIM_GET_COMPARE(__HANDLE__, __CHANNEL__) \
|
||||||
(((__CHANNEL__) == TIM_CHANNEL_1) ? ((__HANDLE__)->Instance->CCR1) :\
|
(((__CHANNEL__) == TIM_CHANNEL_1) ? ((__HANDLE__)->Instance->CCR1) :\
|
||||||
((__CHANNEL__) == TIM_CHANNEL_2) ? ((__HANDLE__)->Instance->CCR2) :\
|
((__CHANNEL__) == TIM_CHANNEL_2) ? ((__HANDLE__)->Instance->CCR2) :\
|
||||||
((__CHANNEL__) == TIM_CHANNEL_3) ? ((__HANDLE__)->Instance->CCR3) :\
|
((__CHANNEL__) == TIM_CHANNEL_3) ? ((__HANDLE__)->Instance->CCR3) :\
|
||||||
((__CHANNEL__) == TIM_CHANNEL_4) ? ((__HANDLE__)->Instance->CCR4) :\
|
((__CHANNEL__) == TIM_CHANNEL_4) ? ((__HANDLE__)->Instance->CCR4) :\
|
||||||
((__CHANNEL__) == TIM_CHANNEL_5) ? ((__HANDLE__)->Instance->CCR5) :\
|
((__CHANNEL__) == TIM_CHANNEL_5) ? ((__HANDLE__)->Instance->CCR5) :\
|
||||||
((__HANDLE__)->Instance->CCR6))
|
((__HANDLE__)->Instance->CCR6))
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief Set the TIM Output compare preload.
|
* @brief Set the TIM Output compare preload.
|
||||||
|
@ -1479,12 +1527,12 @@ mode.
|
||||||
* @retval None
|
* @retval None
|
||||||
*/
|
*/
|
||||||
#define __HAL_TIM_ENABLE_OCxPRELOAD(__HANDLE__, __CHANNEL__) \
|
#define __HAL_TIM_ENABLE_OCxPRELOAD(__HANDLE__, __CHANNEL__) \
|
||||||
(((__CHANNEL__) == TIM_CHANNEL_1) ? ((__HANDLE__)->Instance->CCMR1 |= TIM_CCMR1_OC1PE) :\
|
(((__CHANNEL__) == TIM_CHANNEL_1) ? ((__HANDLE__)->Instance->CCMR1 |= TIM_CCMR1_OC1PE) :\
|
||||||
((__CHANNEL__) == TIM_CHANNEL_2) ? ((__HANDLE__)->Instance->CCMR1 |= TIM_CCMR1_OC2PE) :\
|
((__CHANNEL__) == TIM_CHANNEL_2) ? ((__HANDLE__)->Instance->CCMR1 |= TIM_CCMR1_OC2PE) :\
|
||||||
((__CHANNEL__) == TIM_CHANNEL_3) ? ((__HANDLE__)->Instance->CCMR2 |= TIM_CCMR2_OC3PE) :\
|
((__CHANNEL__) == TIM_CHANNEL_3) ? ((__HANDLE__)->Instance->CCMR2 |= TIM_CCMR2_OC3PE) :\
|
||||||
((__CHANNEL__) == TIM_CHANNEL_4) ? ((__HANDLE__)->Instance->CCMR2 |= TIM_CCMR2_OC4PE) :\
|
((__CHANNEL__) == TIM_CHANNEL_4) ? ((__HANDLE__)->Instance->CCMR2 |= TIM_CCMR2_OC4PE) :\
|
||||||
((__CHANNEL__) == TIM_CHANNEL_5) ? ((__HANDLE__)->Instance->CCMR3 |= TIM_CCMR3_OC5PE) :\
|
((__CHANNEL__) == TIM_CHANNEL_5) ? ((__HANDLE__)->Instance->CCMR3 |= TIM_CCMR3_OC5PE) :\
|
||||||
((__HANDLE__)->Instance->CCMR3 |= TIM_CCMR3_OC6PE))
|
((__HANDLE__)->Instance->CCMR3 |= TIM_CCMR3_OC6PE))
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief Reset the TIM Output compare preload.
|
* @brief Reset the TIM Output compare preload.
|
||||||
|
@ -1500,12 +1548,62 @@ mode.
|
||||||
* @retval None
|
* @retval None
|
||||||
*/
|
*/
|
||||||
#define __HAL_TIM_DISABLE_OCxPRELOAD(__HANDLE__, __CHANNEL__) \
|
#define __HAL_TIM_DISABLE_OCxPRELOAD(__HANDLE__, __CHANNEL__) \
|
||||||
(((__CHANNEL__) == TIM_CHANNEL_1) ? ((__HANDLE__)->Instance->CCMR1 &= (uint16_t)~TIM_CCMR1_OC1PE) :\
|
(((__CHANNEL__) == TIM_CHANNEL_1) ? ((__HANDLE__)->Instance->CCMR1 &= ~TIM_CCMR1_OC1PE) :\
|
||||||
((__CHANNEL__) == TIM_CHANNEL_2) ? ((__HANDLE__)->Instance->CCMR1 &= (uint16_t)~TIM_CCMR1_OC2PE) :\
|
((__CHANNEL__) == TIM_CHANNEL_2) ? ((__HANDLE__)->Instance->CCMR1 &= ~TIM_CCMR1_OC2PE) :\
|
||||||
((__CHANNEL__) == TIM_CHANNEL_3) ? ((__HANDLE__)->Instance->CCMR2 &= (uint16_t)~TIM_CCMR2_OC3PE) :\
|
((__CHANNEL__) == TIM_CHANNEL_3) ? ((__HANDLE__)->Instance->CCMR2 &= ~TIM_CCMR2_OC3PE) :\
|
||||||
((__CHANNEL__) == TIM_CHANNEL_4) ? ((__HANDLE__)->Instance->CCMR2 &= (uint16_t)~TIM_CCMR2_OC4PE) :\
|
((__CHANNEL__) == TIM_CHANNEL_4) ? ((__HANDLE__)->Instance->CCMR2 &= ~TIM_CCMR2_OC4PE) :\
|
||||||
((__CHANNEL__) == TIM_CHANNEL_5) ? ((__HANDLE__)->Instance->CCMR3 &= (uint16_t)~TIM_CCMR3_OC5PE) :\
|
((__CHANNEL__) == TIM_CHANNEL_5) ? ((__HANDLE__)->Instance->CCMR3 &= ~TIM_CCMR3_OC5PE) :\
|
||||||
((__HANDLE__)->Instance->CCMR3 &= (uint16_t)~TIM_CCMR3_OC6PE))
|
((__HANDLE__)->Instance->CCMR3 &= ~TIM_CCMR3_OC6PE))
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Enable fast mode for a given channel.
|
||||||
|
* @param __HANDLE__ TIM handle.
|
||||||
|
* @param __CHANNEL__ TIM Channels to be configured.
|
||||||
|
* This parameter can be one of the following values:
|
||||||
|
* @arg TIM_CHANNEL_1: TIM Channel 1 selected
|
||||||
|
* @arg TIM_CHANNEL_2: TIM Channel 2 selected
|
||||||
|
* @arg TIM_CHANNEL_3: TIM Channel 3 selected
|
||||||
|
* @arg TIM_CHANNEL_4: TIM Channel 4 selected
|
||||||
|
* @arg TIM_CHANNEL_5: TIM Channel 5 selected
|
||||||
|
* @arg TIM_CHANNEL_6: TIM Channel 6 selected
|
||||||
|
* @note When fast mode is enabled an active edge on the trigger input acts
|
||||||
|
* like a compare match on CCx output. Delay to sample the trigger
|
||||||
|
* input and to activate CCx output is reduced to 3 clock cycles.
|
||||||
|
* @note Fast mode acts only if the channel is configured in PWM1 or PWM2 mode.
|
||||||
|
* @retval None
|
||||||
|
*/
|
||||||
|
#define __HAL_TIM_ENABLE_OCxFAST(__HANDLE__, __CHANNEL__) \
|
||||||
|
(((__CHANNEL__) == TIM_CHANNEL_1) ? ((__HANDLE__)->Instance->CCMR1 |= TIM_CCMR1_OC1FE) :\
|
||||||
|
((__CHANNEL__) == TIM_CHANNEL_2) ? ((__HANDLE__)->Instance->CCMR1 |= TIM_CCMR1_OC2FE) :\
|
||||||
|
((__CHANNEL__) == TIM_CHANNEL_3) ? ((__HANDLE__)->Instance->CCMR2 |= TIM_CCMR2_OC3FE) :\
|
||||||
|
((__CHANNEL__) == TIM_CHANNEL_4) ? ((__HANDLE__)->Instance->CCMR2 |= TIM_CCMR2_OC4FE) :\
|
||||||
|
((__CHANNEL__) == TIM_CHANNEL_5) ? ((__HANDLE__)->Instance->CCMR3 |= TIM_CCMR3_OC5FE) :\
|
||||||
|
((__HANDLE__)->Instance->CCMR3 |= TIM_CCMR3_OC6FE))
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Disable fast mode for a given channel.
|
||||||
|
* @param __HANDLE__ TIM handle.
|
||||||
|
* @param __CHANNEL__ TIM Channels to be configured.
|
||||||
|
* This parameter can be one of the following values:
|
||||||
|
* @arg TIM_CHANNEL_1: TIM Channel 1 selected
|
||||||
|
* @arg TIM_CHANNEL_2: TIM Channel 2 selected
|
||||||
|
* @arg TIM_CHANNEL_3: TIM Channel 3 selected
|
||||||
|
* @arg TIM_CHANNEL_4: TIM Channel 4 selected
|
||||||
|
* @arg TIM_CHANNEL_5: TIM Channel 5 selected
|
||||||
|
* @arg TIM_CHANNEL_6: TIM Channel 6 selected
|
||||||
|
* @note When fast mode is disabled CCx output behaves normally depending
|
||||||
|
* on counter and CCRx values even when the trigger is ON. The minimum
|
||||||
|
* delay to activate CCx output when an active edge occurs on the
|
||||||
|
* trigger input is 5 clock cycles.
|
||||||
|
* @retval None
|
||||||
|
*/
|
||||||
|
#define __HAL_TIM_DISABLE_OCxFAST(__HANDLE__, __CHANNEL__) \
|
||||||
|
(((__CHANNEL__) == TIM_CHANNEL_1) ? ((__HANDLE__)->Instance->CCMR1 &= ~TIM_CCMR1_OC1FE) :\
|
||||||
|
((__CHANNEL__) == TIM_CHANNEL_2) ? ((__HANDLE__)->Instance->CCMR1 &= ~TIM_CCMR1_OC2FE) :\
|
||||||
|
((__CHANNEL__) == TIM_CHANNEL_3) ? ((__HANDLE__)->Instance->CCMR2 &= ~TIM_CCMR2_OC3FE) :\
|
||||||
|
((__CHANNEL__) == TIM_CHANNEL_4) ? ((__HANDLE__)->Instance->CCMR2 &= ~TIM_CCMR2_OC4FE) :\
|
||||||
|
((__CHANNEL__) == TIM_CHANNEL_5) ? ((__HANDLE__)->Instance->CCMR3 &= ~TIM_CCMR3_OC5FE) :\
|
||||||
|
((__HANDLE__)->Instance->CCMR3 &= ~TIM_CCMR3_OC6FE))
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief Set the Update Request Source (URS) bit of the TIMx_CR1 register.
|
* @brief Set the Update Request Source (URS) bit of the TIMx_CR1 register.
|
||||||
|
@ -1515,8 +1613,7 @@ mode.
|
||||||
* enabled)
|
* enabled)
|
||||||
* @retval None
|
* @retval None
|
||||||
*/
|
*/
|
||||||
#define __HAL_TIM_URS_ENABLE(__HANDLE__) \
|
#define __HAL_TIM_URS_ENABLE(__HANDLE__) ((__HANDLE__)->Instance->CR1|= TIM_CR1_URS)
|
||||||
((__HANDLE__)->Instance->CR1|= TIM_CR1_URS)
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief Reset the Update Request Source (URS) bit of the TIMx_CR1 register.
|
* @brief Reset the Update Request Source (URS) bit of the TIMx_CR1 register.
|
||||||
|
@ -1529,8 +1626,7 @@ mode.
|
||||||
* _ Update generation through the slave mode controller
|
* _ Update generation through the slave mode controller
|
||||||
* @retval None
|
* @retval None
|
||||||
*/
|
*/
|
||||||
#define __HAL_TIM_URS_DISABLE(__HANDLE__) \
|
#define __HAL_TIM_URS_DISABLE(__HANDLE__) ((__HANDLE__)->Instance->CR1&=~TIM_CR1_URS)
|
||||||
((__HANDLE__)->Instance->CR1&=~TIM_CR1_URS)
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief Set the TIM Capture x input polarity on runtime.
|
* @brief Set the TIM Capture x input polarity on runtime.
|
||||||
|
@ -1548,10 +1644,10 @@ mode.
|
||||||
* @retval None
|
* @retval None
|
||||||
*/
|
*/
|
||||||
#define __HAL_TIM_SET_CAPTUREPOLARITY(__HANDLE__, __CHANNEL__, __POLARITY__) \
|
#define __HAL_TIM_SET_CAPTUREPOLARITY(__HANDLE__, __CHANNEL__, __POLARITY__) \
|
||||||
do{ \
|
do{ \
|
||||||
TIM_RESET_CAPTUREPOLARITY((__HANDLE__), (__CHANNEL__)); \
|
TIM_RESET_CAPTUREPOLARITY((__HANDLE__), (__CHANNEL__)); \
|
||||||
TIM_SET_CAPTUREPOLARITY((__HANDLE__), (__CHANNEL__), (__POLARITY__)); \
|
TIM_SET_CAPTUREPOLARITY((__HANDLE__), (__CHANNEL__), (__POLARITY__)); \
|
||||||
}while(0)
|
}while(0)
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @}
|
* @}
|
||||||
|
@ -1579,29 +1675,29 @@ mode.
|
||||||
((__MODE__) == TIM_CLEARINPUTSOURCE_ETR))
|
((__MODE__) == TIM_CLEARINPUTSOURCE_ETR))
|
||||||
|
|
||||||
#if defined(TIM_AF1_BKINE)&&defined(TIM_AF2_BKINE)
|
#if defined(TIM_AF1_BKINE)&&defined(TIM_AF2_BKINE)
|
||||||
#define IS_TIM_DMA_BASE(__BASE__) (((__BASE__) == TIM_DMABASE_CR1) || \
|
#define IS_TIM_DMA_BASE(__BASE__) (((__BASE__) == TIM_DMABASE_CR1) || \
|
||||||
((__BASE__) == TIM_DMABASE_CR2) || \
|
((__BASE__) == TIM_DMABASE_CR2) || \
|
||||||
((__BASE__) == TIM_DMABASE_SMCR) || \
|
((__BASE__) == TIM_DMABASE_SMCR) || \
|
||||||
((__BASE__) == TIM_DMABASE_DIER) || \
|
((__BASE__) == TIM_DMABASE_DIER) || \
|
||||||
((__BASE__) == TIM_DMABASE_SR) || \
|
((__BASE__) == TIM_DMABASE_SR) || \
|
||||||
((__BASE__) == TIM_DMABASE_EGR) || \
|
((__BASE__) == TIM_DMABASE_EGR) || \
|
||||||
((__BASE__) == TIM_DMABASE_CCMR1) || \
|
((__BASE__) == TIM_DMABASE_CCMR1) || \
|
||||||
((__BASE__) == TIM_DMABASE_CCMR2) || \
|
((__BASE__) == TIM_DMABASE_CCMR2) || \
|
||||||
((__BASE__) == TIM_DMABASE_CCER) || \
|
((__BASE__) == TIM_DMABASE_CCER) || \
|
||||||
((__BASE__) == TIM_DMABASE_CNT) || \
|
((__BASE__) == TIM_DMABASE_CNT) || \
|
||||||
((__BASE__) == TIM_DMABASE_PSC) || \
|
((__BASE__) == TIM_DMABASE_PSC) || \
|
||||||
((__BASE__) == TIM_DMABASE_ARR) || \
|
((__BASE__) == TIM_DMABASE_ARR) || \
|
||||||
((__BASE__) == TIM_DMABASE_RCR) || \
|
((__BASE__) == TIM_DMABASE_RCR) || \
|
||||||
((__BASE__) == TIM_DMABASE_CCR1) || \
|
((__BASE__) == TIM_DMABASE_CCR1) || \
|
||||||
((__BASE__) == TIM_DMABASE_CCR2) || \
|
((__BASE__) == TIM_DMABASE_CCR2) || \
|
||||||
((__BASE__) == TIM_DMABASE_CCR3) || \
|
((__BASE__) == TIM_DMABASE_CCR3) || \
|
||||||
((__BASE__) == TIM_DMABASE_CCR4) || \
|
((__BASE__) == TIM_DMABASE_CCR4) || \
|
||||||
((__BASE__) == TIM_DMABASE_BDTR) || \
|
((__BASE__) == TIM_DMABASE_BDTR) || \
|
||||||
((__BASE__) == TIM_DMABASE_OR) || \
|
((__BASE__) == TIM_DMABASE_OR) || \
|
||||||
((__BASE__) == TIM_DMABASE_CCMR3) || \
|
((__BASE__) == TIM_DMABASE_CCMR3) || \
|
||||||
((__BASE__) == TIM_DMABASE_CCR5) || \
|
((__BASE__) == TIM_DMABASE_CCR5) || \
|
||||||
((__BASE__) == TIM_DMABASE_CCR6) || \
|
((__BASE__) == TIM_DMABASE_CCR6) || \
|
||||||
((__BASE__) == TIM_DMABASE_AF1) || \
|
((__BASE__) == TIM_DMABASE_AF1) || \
|
||||||
((__BASE__) == TIM_DMABASE_AF2))
|
((__BASE__) == TIM_DMABASE_AF2))
|
||||||
#else
|
#else
|
||||||
#define IS_TIM_DMA_BASE(__BASE__) (((__BASE__) == TIM_DMABASE_CR1) || \
|
#define IS_TIM_DMA_BASE(__BASE__) (((__BASE__) == TIM_DMABASE_CR1) || \
|
||||||
|
@ -1636,6 +1732,9 @@ mode.
|
||||||
((__MODE__) == TIM_COUNTERMODE_CENTERALIGNED2) || \
|
((__MODE__) == TIM_COUNTERMODE_CENTERALIGNED2) || \
|
||||||
((__MODE__) == TIM_COUNTERMODE_CENTERALIGNED3))
|
((__MODE__) == TIM_COUNTERMODE_CENTERALIGNED3))
|
||||||
|
|
||||||
|
#define IS_TIM_UIFREMAP_MODE(__MODE__) (((__MODE__) == TIM_UIFREMAP_DISABLE) || \
|
||||||
|
((__MODE__) == TIM_UIFREMAP_ENALE))
|
||||||
|
|
||||||
#define IS_TIM_CLOCKDIVISION_DIV(__DIV__) (((__DIV__) == TIM_CLOCKDIVISION_DIV1) || \
|
#define IS_TIM_CLOCKDIVISION_DIV(__DIV__) (((__DIV__) == TIM_CLOCKDIVISION_DIV1) || \
|
||||||
((__DIV__) == TIM_CLOCKDIVISION_DIV2) || \
|
((__DIV__) == TIM_CLOCKDIVISION_DIV2) || \
|
||||||
((__DIV__) == TIM_CLOCKDIVISION_DIV4))
|
((__DIV__) == TIM_CLOCKDIVISION_DIV4))
|
||||||
|
@ -1658,6 +1757,9 @@ mode.
|
||||||
#define IS_TIM_OCNIDLE_STATE(__STATE__) (((__STATE__) == TIM_OCNIDLESTATE_SET) || \
|
#define IS_TIM_OCNIDLE_STATE(__STATE__) (((__STATE__) == TIM_OCNIDLESTATE_SET) || \
|
||||||
((__STATE__) == TIM_OCNIDLESTATE_RESET))
|
((__STATE__) == TIM_OCNIDLESTATE_RESET))
|
||||||
|
|
||||||
|
#define IS_TIM_ENCODERINPUT_POLARITY(__POLARITY__) (((__POLARITY__) == TIM_ENCODERINPUTPOLARITY_RISING) || \
|
||||||
|
((__POLARITY__) == TIM_ENCODERINPUTPOLARITY_FALLING))
|
||||||
|
|
||||||
#define IS_TIM_IC_POLARITY(__POLARITY__) (((__POLARITY__) == TIM_ICPOLARITY_RISING) || \
|
#define IS_TIM_IC_POLARITY(__POLARITY__) (((__POLARITY__) == TIM_ICPOLARITY_RISING) || \
|
||||||
((__POLARITY__) == TIM_ICPOLARITY_FALLING) || \
|
((__POLARITY__) == TIM_ICPOLARITY_FALLING) || \
|
||||||
((__POLARITY__) == TIM_ICPOLARITY_BOTHEDGE))
|
((__POLARITY__) == TIM_ICPOLARITY_BOTHEDGE))
|
||||||
|
@ -1876,28 +1978,28 @@ mode.
|
||||||
((__TRIGGER__) == TIM_SLAVEMODE_COMBINED_RESETTRIGGER))
|
((__TRIGGER__) == TIM_SLAVEMODE_COMBINED_RESETTRIGGER))
|
||||||
|
|
||||||
#define TIM_SET_ICPRESCALERVALUE(__HANDLE__, __CHANNEL__, __ICPSC__) \
|
#define TIM_SET_ICPRESCALERVALUE(__HANDLE__, __CHANNEL__, __ICPSC__) \
|
||||||
(((__CHANNEL__) == TIM_CHANNEL_1) ? ((__HANDLE__)->Instance->CCMR1 |= (__ICPSC__)) :\
|
(((__CHANNEL__) == TIM_CHANNEL_1) ? ((__HANDLE__)->Instance->CCMR1 |= (__ICPSC__)) :\
|
||||||
((__CHANNEL__) == TIM_CHANNEL_2) ? ((__HANDLE__)->Instance->CCMR1 |= ((__ICPSC__) << 8U)) :\
|
((__CHANNEL__) == TIM_CHANNEL_2) ? ((__HANDLE__)->Instance->CCMR1 |= ((__ICPSC__) << 8U)) :\
|
||||||
((__CHANNEL__) == TIM_CHANNEL_3) ? ((__HANDLE__)->Instance->CCMR2 |= (__ICPSC__)) :\
|
((__CHANNEL__) == TIM_CHANNEL_3) ? ((__HANDLE__)->Instance->CCMR2 |= (__ICPSC__)) :\
|
||||||
((__HANDLE__)->Instance->CCMR2 |= ((__ICPSC__) << 8U)))
|
((__HANDLE__)->Instance->CCMR2 |= ((__ICPSC__) << 8U)))
|
||||||
|
|
||||||
#define TIM_RESET_ICPRESCALERVALUE(__HANDLE__, __CHANNEL__) \
|
#define TIM_RESET_ICPRESCALERVALUE(__HANDLE__, __CHANNEL__) \
|
||||||
(((__CHANNEL__) == TIM_CHANNEL_1) ? ((__HANDLE__)->Instance->CCMR1 &= (uint16_t)~TIM_CCMR1_IC1PSC) :\
|
(((__CHANNEL__) == TIM_CHANNEL_1) ? ((__HANDLE__)->Instance->CCMR1 &= ~TIM_CCMR1_IC1PSC) :\
|
||||||
((__CHANNEL__) == TIM_CHANNEL_2) ? ((__HANDLE__)->Instance->CCMR1 &= (uint16_t)~TIM_CCMR1_IC2PSC) :\
|
((__CHANNEL__) == TIM_CHANNEL_2) ? ((__HANDLE__)->Instance->CCMR1 &= ~TIM_CCMR1_IC2PSC) :\
|
||||||
((__CHANNEL__) == TIM_CHANNEL_3) ? ((__HANDLE__)->Instance->CCMR2 &= (uint16_t)~TIM_CCMR2_IC3PSC) :\
|
((__CHANNEL__) == TIM_CHANNEL_3) ? ((__HANDLE__)->Instance->CCMR2 &= ~TIM_CCMR2_IC3PSC) :\
|
||||||
((__HANDLE__)->Instance->CCMR2 &= (uint16_t)~TIM_CCMR2_IC4PSC))
|
((__HANDLE__)->Instance->CCMR2 &= ~TIM_CCMR2_IC4PSC))
|
||||||
|
|
||||||
#define TIM_SET_CAPTUREPOLARITY(__HANDLE__, __CHANNEL__, __POLARITY__) \
|
#define TIM_SET_CAPTUREPOLARITY(__HANDLE__, __CHANNEL__, __POLARITY__) \
|
||||||
(((__CHANNEL__) == TIM_CHANNEL_1) ? ((__HANDLE__)->Instance->CCER |= (__POLARITY__)) :\
|
(((__CHANNEL__) == TIM_CHANNEL_1) ? ((__HANDLE__)->Instance->CCER |= (__POLARITY__)) :\
|
||||||
((__CHANNEL__) == TIM_CHANNEL_2) ? ((__HANDLE__)->Instance->CCER |= ((__POLARITY__) << 4U)) :\
|
((__CHANNEL__) == TIM_CHANNEL_2) ? ((__HANDLE__)->Instance->CCER |= ((__POLARITY__) << 4U)) :\
|
||||||
((__CHANNEL__) == TIM_CHANNEL_3) ? ((__HANDLE__)->Instance->CCER |= ((__POLARITY__) << 8U)) :\
|
((__CHANNEL__) == TIM_CHANNEL_3) ? ((__HANDLE__)->Instance->CCER |= ((__POLARITY__) << 8U)) :\
|
||||||
((__HANDLE__)->Instance->CCER |= (((__POLARITY__) << 12U))))
|
((__HANDLE__)->Instance->CCER |= (((__POLARITY__) << 12U))))
|
||||||
|
|
||||||
#define TIM_RESET_CAPTUREPOLARITY(__HANDLE__, __CHANNEL__) \
|
#define TIM_RESET_CAPTUREPOLARITY(__HANDLE__, __CHANNEL__) \
|
||||||
(((__CHANNEL__) == TIM_CHANNEL_1) ? ((__HANDLE__)->Instance->CCER &= (uint16_t)~(TIM_CCER_CC1P | TIM_CCER_CC1NP)) :\
|
(((__CHANNEL__) == TIM_CHANNEL_1) ? ((__HANDLE__)->Instance->CCER &= ~(TIM_CCER_CC1P | TIM_CCER_CC1NP)) :\
|
||||||
((__CHANNEL__) == TIM_CHANNEL_2) ? ((__HANDLE__)->Instance->CCER &= (uint16_t)~(TIM_CCER_CC2P | TIM_CCER_CC2NP)) :\
|
((__CHANNEL__) == TIM_CHANNEL_2) ? ((__HANDLE__)->Instance->CCER &= ~(TIM_CCER_CC2P | TIM_CCER_CC2NP)) :\
|
||||||
((__CHANNEL__) == TIM_CHANNEL_3) ? ((__HANDLE__)->Instance->CCER &= (uint16_t)~(TIM_CCER_CC3P | TIM_CCER_CC3NP)) :\
|
((__CHANNEL__) == TIM_CHANNEL_3) ? ((__HANDLE__)->Instance->CCER &= ~(TIM_CCER_CC3P | TIM_CCER_CC3NP)) :\
|
||||||
((__HANDLE__)->Instance->CCER &= (uint16_t)~(TIM_CCER_CC4P | TIM_CCER_CC4NP)))
|
((__HANDLE__)->Instance->CCER &= ~(TIM_CCER_CC4P | TIM_CCER_CC4NP)))
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @}
|
* @}
|
||||||
|
@ -2035,7 +2137,8 @@ HAL_StatusTypeDef HAL_TIM_Encoder_Stop(TIM_HandleTypeDef *htim, uint32_t Channel
|
||||||
HAL_StatusTypeDef HAL_TIM_Encoder_Start_IT(TIM_HandleTypeDef *htim, uint32_t Channel);
|
HAL_StatusTypeDef HAL_TIM_Encoder_Start_IT(TIM_HandleTypeDef *htim, uint32_t Channel);
|
||||||
HAL_StatusTypeDef HAL_TIM_Encoder_Stop_IT(TIM_HandleTypeDef *htim, uint32_t Channel);
|
HAL_StatusTypeDef HAL_TIM_Encoder_Stop_IT(TIM_HandleTypeDef *htim, uint32_t Channel);
|
||||||
/* Non-Blocking mode: DMA */
|
/* Non-Blocking mode: DMA */
|
||||||
HAL_StatusTypeDef HAL_TIM_Encoder_Start_DMA(TIM_HandleTypeDef *htim, uint32_t Channel, uint32_t *pData1, uint32_t *pData2, uint16_t Length);
|
HAL_StatusTypeDef HAL_TIM_Encoder_Start_DMA(TIM_HandleTypeDef *htim, uint32_t Channel, uint32_t *pData1,
|
||||||
|
uint32_t *pData2, uint16_t Length);
|
||||||
HAL_StatusTypeDef HAL_TIM_Encoder_Stop_DMA(TIM_HandleTypeDef *htim, uint32_t Channel);
|
HAL_StatusTypeDef HAL_TIM_Encoder_Stop_DMA(TIM_HandleTypeDef *htim, uint32_t Channel);
|
||||||
/**
|
/**
|
||||||
* @}
|
* @}
|
||||||
|
@ -2059,17 +2162,19 @@ void HAL_TIM_IRQHandler(TIM_HandleTypeDef *htim);
|
||||||
HAL_StatusTypeDef HAL_TIM_OC_ConfigChannel(TIM_HandleTypeDef *htim, TIM_OC_InitTypeDef *sConfig, uint32_t Channel);
|
HAL_StatusTypeDef HAL_TIM_OC_ConfigChannel(TIM_HandleTypeDef *htim, TIM_OC_InitTypeDef *sConfig, uint32_t Channel);
|
||||||
HAL_StatusTypeDef HAL_TIM_PWM_ConfigChannel(TIM_HandleTypeDef *htim, TIM_OC_InitTypeDef *sConfig, uint32_t Channel);
|
HAL_StatusTypeDef HAL_TIM_PWM_ConfigChannel(TIM_HandleTypeDef *htim, TIM_OC_InitTypeDef *sConfig, uint32_t Channel);
|
||||||
HAL_StatusTypeDef HAL_TIM_IC_ConfigChannel(TIM_HandleTypeDef *htim, TIM_IC_InitTypeDef *sConfig, uint32_t Channel);
|
HAL_StatusTypeDef HAL_TIM_IC_ConfigChannel(TIM_HandleTypeDef *htim, TIM_IC_InitTypeDef *sConfig, uint32_t Channel);
|
||||||
HAL_StatusTypeDef HAL_TIM_OnePulse_ConfigChannel(TIM_HandleTypeDef *htim, TIM_OnePulse_InitTypeDef *sConfig, uint32_t OutputChannel, uint32_t InputChannel);
|
HAL_StatusTypeDef HAL_TIM_OnePulse_ConfigChannel(TIM_HandleTypeDef *htim, TIM_OnePulse_InitTypeDef *sConfig,
|
||||||
HAL_StatusTypeDef HAL_TIM_ConfigOCrefClear(TIM_HandleTypeDef *htim, TIM_ClearInputConfigTypeDef *sClearInputConfig, uint32_t Channel);
|
uint32_t OutputChannel, uint32_t InputChannel);
|
||||||
|
HAL_StatusTypeDef HAL_TIM_ConfigOCrefClear(TIM_HandleTypeDef *htim, TIM_ClearInputConfigTypeDef *sClearInputConfig,
|
||||||
|
uint32_t Channel);
|
||||||
HAL_StatusTypeDef HAL_TIM_ConfigClockSource(TIM_HandleTypeDef *htim, TIM_ClockConfigTypeDef *sClockSourceConfig);
|
HAL_StatusTypeDef HAL_TIM_ConfigClockSource(TIM_HandleTypeDef *htim, TIM_ClockConfigTypeDef *sClockSourceConfig);
|
||||||
HAL_StatusTypeDef HAL_TIM_ConfigTI1Input(TIM_HandleTypeDef *htim, uint32_t TI1_Selection);
|
HAL_StatusTypeDef HAL_TIM_ConfigTI1Input(TIM_HandleTypeDef *htim, uint32_t TI1_Selection);
|
||||||
HAL_StatusTypeDef HAL_TIM_SlaveConfigSynchro(TIM_HandleTypeDef *htim, TIM_SlaveConfigTypeDef *sSlaveConfig);
|
HAL_StatusTypeDef HAL_TIM_SlaveConfigSynchro(TIM_HandleTypeDef *htim, TIM_SlaveConfigTypeDef *sSlaveConfig);
|
||||||
HAL_StatusTypeDef HAL_TIM_SlaveConfigSynchro_IT(TIM_HandleTypeDef *htim, TIM_SlaveConfigTypeDef *sSlaveConfig);
|
HAL_StatusTypeDef HAL_TIM_SlaveConfigSynchro_IT(TIM_HandleTypeDef *htim, TIM_SlaveConfigTypeDef *sSlaveConfig);
|
||||||
HAL_StatusTypeDef HAL_TIM_DMABurst_WriteStart(TIM_HandleTypeDef *htim, uint32_t BurstBaseAddress, uint32_t BurstRequestSrc, \
|
HAL_StatusTypeDef HAL_TIM_DMABurst_WriteStart(TIM_HandleTypeDef *htim, uint32_t BurstBaseAddress,
|
||||||
uint32_t *BurstBuffer, uint32_t BurstLength);
|
uint32_t BurstRequestSrc, uint32_t *BurstBuffer, uint32_t BurstLength);
|
||||||
HAL_StatusTypeDef HAL_TIM_DMABurst_WriteStop(TIM_HandleTypeDef *htim, uint32_t BurstRequestSrc);
|
HAL_StatusTypeDef HAL_TIM_DMABurst_WriteStop(TIM_HandleTypeDef *htim, uint32_t BurstRequestSrc);
|
||||||
HAL_StatusTypeDef HAL_TIM_DMABurst_ReadStart(TIM_HandleTypeDef *htim, uint32_t BurstBaseAddress, uint32_t BurstRequestSrc, \
|
HAL_StatusTypeDef HAL_TIM_DMABurst_ReadStart(TIM_HandleTypeDef *htim, uint32_t BurstBaseAddress,
|
||||||
uint32_t *BurstBuffer, uint32_t BurstLength);
|
uint32_t BurstRequestSrc, uint32_t *BurstBuffer, uint32_t BurstLength);
|
||||||
HAL_StatusTypeDef HAL_TIM_DMABurst_ReadStop(TIM_HandleTypeDef *htim, uint32_t BurstRequestSrc);
|
HAL_StatusTypeDef HAL_TIM_DMABurst_ReadStop(TIM_HandleTypeDef *htim, uint32_t BurstRequestSrc);
|
||||||
HAL_StatusTypeDef HAL_TIM_GenerateEvent(TIM_HandleTypeDef *htim, uint32_t EventSource);
|
HAL_StatusTypeDef HAL_TIM_GenerateEvent(TIM_HandleTypeDef *htim, uint32_t EventSource);
|
||||||
uint32_t HAL_TIM_ReadCapturedValue(TIM_HandleTypeDef *htim, uint32_t Channel);
|
uint32_t HAL_TIM_ReadCapturedValue(TIM_HandleTypeDef *htim, uint32_t Channel);
|
||||||
|
@ -2095,7 +2200,8 @@ void HAL_TIM_ErrorCallback(TIM_HandleTypeDef *htim);
|
||||||
|
|
||||||
/* Callbacks Register/UnRegister functions ***********************************/
|
/* Callbacks Register/UnRegister functions ***********************************/
|
||||||
#if (USE_HAL_TIM_REGISTER_CALLBACKS == 1)
|
#if (USE_HAL_TIM_REGISTER_CALLBACKS == 1)
|
||||||
HAL_StatusTypeDef HAL_TIM_RegisterCallback(TIM_HandleTypeDef *htim, HAL_TIM_CallbackIDTypeDef CallbackID, pTIM_CallbackTypeDef pCallback);
|
HAL_StatusTypeDef HAL_TIM_RegisterCallback(TIM_HandleTypeDef *htim, HAL_TIM_CallbackIDTypeDef CallbackID,
|
||||||
|
pTIM_CallbackTypeDef pCallback);
|
||||||
HAL_StatusTypeDef HAL_TIM_UnRegisterCallback(TIM_HandleTypeDef *htim, HAL_TIM_CallbackIDTypeDef CallbackID);
|
HAL_StatusTypeDef HAL_TIM_UnRegisterCallback(TIM_HandleTypeDef *htim, HAL_TIM_CallbackIDTypeDef CallbackID);
|
||||||
#endif /* USE_HAL_TIM_REGISTER_CALLBACKS */
|
#endif /* USE_HAL_TIM_REGISTER_CALLBACKS */
|
||||||
|
|
||||||
|
@ -2125,8 +2231,8 @@ HAL_TIM_StateTypeDef HAL_TIM_Encoder_GetState(TIM_HandleTypeDef *htim);
|
||||||
|
|
||||||
/* Private functions----------------------------------------------------------*/
|
/* Private functions----------------------------------------------------------*/
|
||||||
/** @defgroup TIM_Private_Functions TIM Private Functions
|
/** @defgroup TIM_Private_Functions TIM Private Functions
|
||||||
* @{
|
* @{
|
||||||
*/
|
*/
|
||||||
void TIM_Base_SetConfig(TIM_TypeDef *TIMx, TIM_Base_InitTypeDef *Structure);
|
void TIM_Base_SetConfig(TIM_TypeDef *TIMx, TIM_Base_InitTypeDef *Structure);
|
||||||
void TIM_TI1_SetConfig(TIM_TypeDef *TIMx, uint32_t TIM_ICPolarity, uint32_t TIM_ICSelection, uint32_t TIM_ICFilter);
|
void TIM_TI1_SetConfig(TIM_TypeDef *TIMx, uint32_t TIM_ICPolarity, uint32_t TIM_ICSelection, uint32_t TIM_ICFilter);
|
||||||
void TIM_OC2_SetConfig(TIM_TypeDef *TIMx, TIM_OC_InitTypeDef *OC_Config);
|
void TIM_OC2_SetConfig(TIM_TypeDef *TIMx, TIM_OC_InitTypeDef *OC_Config);
|
||||||
|
@ -2145,8 +2251,8 @@ void TIM_ResetCallback(TIM_HandleTypeDef *htim);
|
||||||
#endif /* USE_HAL_TIM_REGISTER_CALLBACKS */
|
#endif /* USE_HAL_TIM_REGISTER_CALLBACKS */
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @}
|
* @}
|
||||||
*/
|
*/
|
||||||
/* End of private functions --------------------------------------------------*/
|
/* End of private functions --------------------------------------------------*/
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
|
@ -201,9 +201,9 @@ TIMEx_BreakInputConfigTypeDef;
|
||||||
*/
|
*/
|
||||||
|
|
||||||
/** @addtogroup TIMEx_Exported_Functions_Group1 Extended Timer Hall Sensor functions
|
/** @addtogroup TIMEx_Exported_Functions_Group1 Extended Timer Hall Sensor functions
|
||||||
* @brief Timer Hall Sensor functions
|
* @brief Timer Hall Sensor functions
|
||||||
* @{
|
* @{
|
||||||
*/
|
*/
|
||||||
/* Timer Hall Sensor functions **********************************************/
|
/* Timer Hall Sensor functions **********************************************/
|
||||||
HAL_StatusTypeDef HAL_TIMEx_HallSensor_Init(TIM_HandleTypeDef *htim, TIM_HallSensor_InitTypeDef *sConfig);
|
HAL_StatusTypeDef HAL_TIMEx_HallSensor_Init(TIM_HandleTypeDef *htim, TIM_HallSensor_InitTypeDef *sConfig);
|
||||||
HAL_StatusTypeDef HAL_TIMEx_HallSensor_DeInit(TIM_HandleTypeDef *htim);
|
HAL_StatusTypeDef HAL_TIMEx_HallSensor_DeInit(TIM_HandleTypeDef *htim);
|
||||||
|
@ -225,9 +225,9 @@ HAL_StatusTypeDef HAL_TIMEx_HallSensor_Stop_DMA(TIM_HandleTypeDef *htim);
|
||||||
*/
|
*/
|
||||||
|
|
||||||
/** @addtogroup TIMEx_Exported_Functions_Group2 Extended Timer Complementary Output Compare functions
|
/** @addtogroup TIMEx_Exported_Functions_Group2 Extended Timer Complementary Output Compare functions
|
||||||
* @brief Timer Complementary Output Compare functions
|
* @brief Timer Complementary Output Compare functions
|
||||||
* @{
|
* @{
|
||||||
*/
|
*/
|
||||||
/* Timer Complementary Output Compare functions *****************************/
|
/* Timer Complementary Output Compare functions *****************************/
|
||||||
/* Blocking mode: Polling */
|
/* Blocking mode: Polling */
|
||||||
HAL_StatusTypeDef HAL_TIMEx_OCN_Start(TIM_HandleTypeDef *htim, uint32_t Channel);
|
HAL_StatusTypeDef HAL_TIMEx_OCN_Start(TIM_HandleTypeDef *htim, uint32_t Channel);
|
||||||
|
@ -245,9 +245,9 @@ HAL_StatusTypeDef HAL_TIMEx_OCN_Stop_DMA(TIM_HandleTypeDef *htim, uint32_t Chann
|
||||||
*/
|
*/
|
||||||
|
|
||||||
/** @addtogroup TIMEx_Exported_Functions_Group3 Extended Timer Complementary PWM functions
|
/** @addtogroup TIMEx_Exported_Functions_Group3 Extended Timer Complementary PWM functions
|
||||||
* @brief Timer Complementary PWM functions
|
* @brief Timer Complementary PWM functions
|
||||||
* @{
|
* @{
|
||||||
*/
|
*/
|
||||||
/* Timer Complementary PWM functions ****************************************/
|
/* Timer Complementary PWM functions ****************************************/
|
||||||
/* Blocking mode: Polling */
|
/* Blocking mode: Polling */
|
||||||
HAL_StatusTypeDef HAL_TIMEx_PWMN_Start(TIM_HandleTypeDef *htim, uint32_t Channel);
|
HAL_StatusTypeDef HAL_TIMEx_PWMN_Start(TIM_HandleTypeDef *htim, uint32_t Channel);
|
||||||
|
@ -264,9 +264,9 @@ HAL_StatusTypeDef HAL_TIMEx_PWMN_Stop_DMA(TIM_HandleTypeDef *htim, uint32_t Chan
|
||||||
*/
|
*/
|
||||||
|
|
||||||
/** @addtogroup TIMEx_Exported_Functions_Group4 Extended Timer Complementary One Pulse functions
|
/** @addtogroup TIMEx_Exported_Functions_Group4 Extended Timer Complementary One Pulse functions
|
||||||
* @brief Timer Complementary One Pulse functions
|
* @brief Timer Complementary One Pulse functions
|
||||||
* @{
|
* @{
|
||||||
*/
|
*/
|
||||||
/* Timer Complementary One Pulse functions **********************************/
|
/* Timer Complementary One Pulse functions **********************************/
|
||||||
/* Blocking mode: Polling */
|
/* Blocking mode: Polling */
|
||||||
HAL_StatusTypeDef HAL_TIMEx_OnePulseN_Start(TIM_HandleTypeDef *htim, uint32_t OutputChannel);
|
HAL_StatusTypeDef HAL_TIMEx_OnePulseN_Start(TIM_HandleTypeDef *htim, uint32_t OutputChannel);
|
||||||
|
@ -280,17 +280,23 @@ HAL_StatusTypeDef HAL_TIMEx_OnePulseN_Stop_IT(TIM_HandleTypeDef *htim, uint32_t
|
||||||
*/
|
*/
|
||||||
|
|
||||||
/** @addtogroup TIMEx_Exported_Functions_Group5 Extended Peripheral Control functions
|
/** @addtogroup TIMEx_Exported_Functions_Group5 Extended Peripheral Control functions
|
||||||
* @brief Peripheral Control functions
|
* @brief Peripheral Control functions
|
||||||
* @{
|
* @{
|
||||||
*/
|
*/
|
||||||
/* Extended Control functions ************************************************/
|
/* Extended Control functions ************************************************/
|
||||||
HAL_StatusTypeDef HAL_TIMEx_ConfigCommutEvent(TIM_HandleTypeDef *htim, uint32_t InputTrigger, uint32_t CommutationSource);
|
HAL_StatusTypeDef HAL_TIMEx_ConfigCommutEvent(TIM_HandleTypeDef *htim, uint32_t InputTrigger,
|
||||||
HAL_StatusTypeDef HAL_TIMEx_ConfigCommutEvent_IT(TIM_HandleTypeDef *htim, uint32_t InputTrigger, uint32_t CommutationSource);
|
uint32_t CommutationSource);
|
||||||
HAL_StatusTypeDef HAL_TIMEx_ConfigCommutEvent_DMA(TIM_HandleTypeDef *htim, uint32_t InputTrigger, uint32_t CommutationSource);
|
HAL_StatusTypeDef HAL_TIMEx_ConfigCommutEvent_IT(TIM_HandleTypeDef *htim, uint32_t InputTrigger,
|
||||||
HAL_StatusTypeDef HAL_TIMEx_MasterConfigSynchronization(TIM_HandleTypeDef *htim, TIM_MasterConfigTypeDef *sMasterConfig);
|
uint32_t CommutationSource);
|
||||||
HAL_StatusTypeDef HAL_TIMEx_ConfigBreakDeadTime(TIM_HandleTypeDef *htim, TIM_BreakDeadTimeConfigTypeDef *sBreakDeadTimeConfig);
|
HAL_StatusTypeDef HAL_TIMEx_ConfigCommutEvent_DMA(TIM_HandleTypeDef *htim, uint32_t InputTrigger,
|
||||||
|
uint32_t CommutationSource);
|
||||||
|
HAL_StatusTypeDef HAL_TIMEx_MasterConfigSynchronization(TIM_HandleTypeDef *htim,
|
||||||
|
TIM_MasterConfigTypeDef *sMasterConfig);
|
||||||
|
HAL_StatusTypeDef HAL_TIMEx_ConfigBreakDeadTime(TIM_HandleTypeDef *htim,
|
||||||
|
TIM_BreakDeadTimeConfigTypeDef *sBreakDeadTimeConfig);
|
||||||
#if defined(TIM_BREAK_INPUT_SUPPORT)
|
#if defined(TIM_BREAK_INPUT_SUPPORT)
|
||||||
HAL_StatusTypeDef HAL_TIMEx_ConfigBreakInput(TIM_HandleTypeDef *htim, uint32_t BreakInput, TIMEx_BreakInputConfigTypeDef *sBreakInputConfig);
|
HAL_StatusTypeDef HAL_TIMEx_ConfigBreakInput(TIM_HandleTypeDef *htim, uint32_t BreakInput,
|
||||||
|
TIMEx_BreakInputConfigTypeDef *sBreakInputConfig);
|
||||||
#endif /* TIM_BREAK_INPUT_SUPPORT */
|
#endif /* TIM_BREAK_INPUT_SUPPORT */
|
||||||
HAL_StatusTypeDef HAL_TIMEx_GroupChannel5(TIM_HandleTypeDef *htim, uint32_t Channels);
|
HAL_StatusTypeDef HAL_TIMEx_GroupChannel5(TIM_HandleTypeDef *htim, uint32_t Channels);
|
||||||
HAL_StatusTypeDef HAL_TIMEx_RemapConfig(TIM_HandleTypeDef *htim, uint32_t Remap);
|
HAL_StatusTypeDef HAL_TIMEx_RemapConfig(TIM_HandleTypeDef *htim, uint32_t Remap);
|
||||||
|
@ -327,7 +333,7 @@ HAL_TIM_StateTypeDef HAL_TIMEx_HallSensor_GetState(TIM_HandleTypeDef *htim);
|
||||||
/* End of exported functions -------------------------------------------------*/
|
/* End of exported functions -------------------------------------------------*/
|
||||||
|
|
||||||
/* Private functions----------------------------------------------------------*/
|
/* Private functions----------------------------------------------------------*/
|
||||||
/** @defgroup TIMEx_Private_Functions TIM Extended Private Functions
|
/** @addtogroup TIMEx_Private_Functions TIMEx Private Functions
|
||||||
* @{
|
* @{
|
||||||
*/
|
*/
|
||||||
void TIMEx_DMACommutationCplt(DMA_HandleTypeDef *hdma);
|
void TIMEx_DMACommutationCplt(DMA_HandleTypeDef *hdma);
|
||||||
|
|
|
@ -42,13 +42,6 @@ extern "C" {
|
||||||
/* Private variables ---------------------------------------------------------*/
|
/* Private variables ---------------------------------------------------------*/
|
||||||
|
|
||||||
/* Private constants ---------------------------------------------------------*/
|
/* Private constants ---------------------------------------------------------*/
|
||||||
/** @defgroup USART_LL_Private_Constants USART Private Constants
|
|
||||||
* @{
|
|
||||||
*/
|
|
||||||
/**
|
|
||||||
* @}
|
|
||||||
*/
|
|
||||||
|
|
||||||
/* Private macros ------------------------------------------------------------*/
|
/* Private macros ------------------------------------------------------------*/
|
||||||
#if defined(USE_FULL_LL_DRIVER)
|
#if defined(USE_FULL_LL_DRIVER)
|
||||||
/** @defgroup USART_LL_Private_Macros USART Private Macros
|
/** @defgroup USART_LL_Private_Macros USART Private Macros
|
||||||
|
@ -156,18 +149,21 @@ typedef struct
|
||||||
*/
|
*/
|
||||||
#define LL_USART_ICR_PECF USART_ICR_PECF /*!< Parity error flag */
|
#define LL_USART_ICR_PECF USART_ICR_PECF /*!< Parity error flag */
|
||||||
#define LL_USART_ICR_FECF USART_ICR_FECF /*!< Framing error flag */
|
#define LL_USART_ICR_FECF USART_ICR_FECF /*!< Framing error flag */
|
||||||
#define LL_USART_ICR_NCF USART_ICR_NCF /*!< Noise error detected flag */
|
#define LL_USART_ICR_NCF USART_ICR_NCF /*!< Noise error detected flag */
|
||||||
#define LL_USART_ICR_ORECF USART_ICR_ORECF /*!< Overrun error flag */
|
#define LL_USART_ICR_ORECF USART_ICR_ORECF /*!< Overrun error flag */
|
||||||
#define LL_USART_ICR_IDLECF USART_ICR_IDLECF /*!< Idle line detected flag */
|
#define LL_USART_ICR_IDLECF USART_ICR_IDLECF /*!< Idle line detected flag */
|
||||||
#define LL_USART_ICR_TCCF USART_ICR_TCCF /*!< Transmission complete flag */
|
#define LL_USART_ICR_TCCF USART_ICR_TCCF /*!< Transmission complete flag */
|
||||||
#if defined(USART_TCBGT_SUPPORT)
|
#if defined(USART_TCBGT_SUPPORT)
|
||||||
#define LL_USART_ICR_TCBGTCF USART_ICR_TCBGTCF /*!< Transmission completed before guard time flag */
|
#define LL_USART_ICR_TCBGTCF USART_ICR_TCBGTCF /*!< Transmission completed before guard time flag */
|
||||||
#endif
|
#endif /* USART_TCBGT_SUPPORT */
|
||||||
#define LL_USART_ICR_LBDCF USART_ICR_LBDCF /*!< LIN break detection flag */
|
#define LL_USART_ICR_LBDCF USART_ICR_LBDCF /*!< LIN break detection flag */
|
||||||
#define LL_USART_ICR_CTSCF USART_ICR_CTSCF /*!< CTS flag */
|
#define LL_USART_ICR_CTSCF USART_ICR_CTSCF /*!< CTS flag */
|
||||||
#define LL_USART_ICR_RTOCF USART_ICR_RTOCF /*!< Receiver timeout flag */
|
#define LL_USART_ICR_RTOCF USART_ICR_RTOCF /*!< Receiver timeout flag */
|
||||||
#define LL_USART_ICR_EOBCF USART_ICR_EOBCF /*!< End of block flag */
|
#define LL_USART_ICR_EOBCF USART_ICR_EOBCF /*!< End of block flag */
|
||||||
#define LL_USART_ICR_CMCF USART_ICR_CMCF /*!< Character match flag */
|
#define LL_USART_ICR_CMCF USART_ICR_CMCF /*!< Character match flag */
|
||||||
|
#if defined(USART_CR1_UESM)
|
||||||
|
#define LL_USART_ICR_WUCF USART_ICR_WUCF /*!< Wakeup from Stop mode flag */
|
||||||
|
#endif /* USART_CR1_UESM */
|
||||||
/**
|
/**
|
||||||
* @}
|
* @}
|
||||||
*/
|
*/
|
||||||
|
@ -195,10 +191,16 @@ typedef struct
|
||||||
#define LL_USART_ISR_CMF USART_ISR_CMF /*!< Character match flag */
|
#define LL_USART_ISR_CMF USART_ISR_CMF /*!< Character match flag */
|
||||||
#define LL_USART_ISR_SBKF USART_ISR_SBKF /*!< Send break flag */
|
#define LL_USART_ISR_SBKF USART_ISR_SBKF /*!< Send break flag */
|
||||||
#define LL_USART_ISR_RWU USART_ISR_RWU /*!< Receiver wakeup from Mute mode flag */
|
#define LL_USART_ISR_RWU USART_ISR_RWU /*!< Receiver wakeup from Mute mode flag */
|
||||||
|
#if defined(USART_CR1_UESM)
|
||||||
|
#define LL_USART_ISR_WUF USART_ISR_WUF /*!< Wakeup from Stop mode flag */
|
||||||
|
#endif /* USART_CR1_UESM */
|
||||||
#define LL_USART_ISR_TEACK USART_ISR_TEACK /*!< Transmit enable acknowledge flag */
|
#define LL_USART_ISR_TEACK USART_ISR_TEACK /*!< Transmit enable acknowledge flag */
|
||||||
|
#if defined(USART_ISR_REACK)
|
||||||
|
#define LL_USART_ISR_REACK USART_ISR_REACK /*!< Receive enable acknowledge flag */
|
||||||
|
#endif /* USART_ISR_REACK */
|
||||||
#if defined(USART_TCBGT_SUPPORT)
|
#if defined(USART_TCBGT_SUPPORT)
|
||||||
#define LL_USART_ISR_TCBGT USART_ISR_TCBGT /*!< Transmission complete before guard time completion flag */
|
#define LL_USART_ISR_TCBGT USART_ISR_TCBGT /*!< Transmission complete before guard time completion flag */
|
||||||
#endif
|
#endif /* USART_TCBGT_SUPPORT */
|
||||||
/**
|
/**
|
||||||
* @}
|
* @}
|
||||||
*/
|
*/
|
||||||
|
@ -218,9 +220,12 @@ typedef struct
|
||||||
#define LL_USART_CR2_LBDIE USART_CR2_LBDIE /*!< LIN break detection interrupt enable */
|
#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_EIE USART_CR3_EIE /*!< Error interrupt enable */
|
||||||
#define LL_USART_CR3_CTSIE USART_CR3_CTSIE /*!< CTS interrupt enable */
|
#define LL_USART_CR3_CTSIE USART_CR3_CTSIE /*!< CTS interrupt enable */
|
||||||
|
#if defined(USART_CR1_UESM)
|
||||||
|
#define LL_USART_CR3_WUFIE USART_CR3_WUFIE /*!< Wakeup from Stop mode interrupt enable */
|
||||||
|
#endif /* USART_CR1_UESM */
|
||||||
#if defined(USART_TCBGT_SUPPORT)
|
#if defined(USART_TCBGT_SUPPORT)
|
||||||
#define LL_USART_CR3_TCBGTIE USART_CR3_TCBGTIE /*!< Transmission complete before guard time interrupt enable */
|
#define LL_USART_CR3_TCBGTIE USART_CR3_TCBGTIE /*!< Transmission complete before guard time interrupt enable */
|
||||||
#endif
|
#endif /* USART_TCBGT_SUPPORT */
|
||||||
/**
|
/**
|
||||||
* @}
|
* @}
|
||||||
*/
|
*/
|
||||||
|
@ -400,6 +405,18 @@ typedef struct
|
||||||
* @}
|
* @}
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
#if defined(USART_CR1_UESM)
|
||||||
|
/** @defgroup USART_LL_EC_WAKEUP_ON Wakeup Activation
|
||||||
|
* @{
|
||||||
|
*/
|
||||||
|
#define LL_USART_WAKEUP_ON_ADDRESS 0x00000000U /*!< Wake up active on address match */
|
||||||
|
#define LL_USART_WAKEUP_ON_STARTBIT USART_CR3_WUS_1 /*!< Wake up active on Start bit detection */
|
||||||
|
#define LL_USART_WAKEUP_ON_RXNE (USART_CR3_WUS_0 | USART_CR3_WUS_1) /*!< Wake up active on RXNE */
|
||||||
|
/**
|
||||||
|
* @}
|
||||||
|
*/
|
||||||
|
|
||||||
|
#endif /* USART_CR1_UESM */
|
||||||
/** @defgroup USART_LL_EC_IRDA_POWER IrDA Power
|
/** @defgroup USART_LL_EC_IRDA_POWER IrDA Power
|
||||||
* @{
|
* @{
|
||||||
*/
|
*/
|
||||||
|
@ -480,7 +497,8 @@ typedef struct
|
||||||
* @param __BAUDRATE__ Baud rate value to achieve
|
* @param __BAUDRATE__ Baud rate value to achieve
|
||||||
* @retval USARTDIV value to be used for BRR register filling in OverSampling_8 case
|
* @retval USARTDIV value to be used for BRR register filling in OverSampling_8 case
|
||||||
*/
|
*/
|
||||||
#define __LL_USART_DIV_SAMPLING8(__PERIPHCLK__, __BAUDRATE__) ((((__PERIPHCLK__)*2U) + ((__BAUDRATE__)/2U))/(__BAUDRATE__))
|
#define __LL_USART_DIV_SAMPLING8(__PERIPHCLK__, __BAUDRATE__) ((((__PERIPHCLK__)*2U)\
|
||||||
|
+ ((__BAUDRATE__)/2U))/(__BAUDRATE__))
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief Compute USARTDIV value according to Peripheral Clock and
|
* @brief Compute USARTDIV value according to Peripheral Clock and
|
||||||
|
@ -545,6 +563,87 @@ __STATIC_INLINE uint32_t LL_USART_IsEnabled(USART_TypeDef *USARTx)
|
||||||
return ((READ_BIT(USARTx->CR1, USART_CR1_UE) == (USART_CR1_UE)) ? 1UL : 0UL);
|
return ((READ_BIT(USARTx->CR1, USART_CR1_UE) == (USART_CR1_UE)) ? 1UL : 0UL);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#if defined(USART_CR1_UESM)
|
||||||
|
/**
|
||||||
|
* @brief USART enabled in STOP Mode.
|
||||||
|
* @note When this function is enabled, USART is able to wake up the MCU from Stop mode, provided that
|
||||||
|
* USART clock selection is HSI or LSE in RCC.
|
||||||
|
* @note Macro @ref IS_UART_WAKEUP_FROMSTOP_INSTANCE(USARTx) can be used to check whether or not
|
||||||
|
* Wake-up from Stop mode feature is supported by the USARTx instance.
|
||||||
|
* @rmtoll CR1 UESM LL_USART_EnableInStopMode
|
||||||
|
* @param USARTx USART Instance
|
||||||
|
* @retval None
|
||||||
|
*/
|
||||||
|
__STATIC_INLINE void LL_USART_EnableInStopMode(USART_TypeDef *USARTx)
|
||||||
|
{
|
||||||
|
SET_BIT(USARTx->CR1, USART_CR1_UESM);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief USART disabled in STOP Mode.
|
||||||
|
* @note When this function is disabled, USART is not able to wake up the MCU from Stop mode
|
||||||
|
* @note Macro @ref IS_UART_WAKEUP_FROMSTOP_INSTANCE(USARTx) can be used to check whether or not
|
||||||
|
* Wake-up from Stop mode feature is supported by the USARTx instance.
|
||||||
|
* @rmtoll CR1 UESM LL_USART_DisableInStopMode
|
||||||
|
* @param USARTx USART Instance
|
||||||
|
* @retval None
|
||||||
|
*/
|
||||||
|
__STATIC_INLINE void LL_USART_DisableInStopMode(USART_TypeDef *USARTx)
|
||||||
|
{
|
||||||
|
CLEAR_BIT(USARTx->CR1, USART_CR1_UESM);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Indicate if USART is enabled in STOP Mode (able to wake up MCU from Stop mode or not)
|
||||||
|
* @note Macro @ref IS_UART_WAKEUP_FROMSTOP_INSTANCE(USARTx) can be used to check whether or not
|
||||||
|
* Wake-up from Stop mode feature is supported by the USARTx instance.
|
||||||
|
* @rmtoll CR1 UESM LL_USART_IsEnabledInStopMode
|
||||||
|
* @param USARTx USART Instance
|
||||||
|
* @retval State of bit (1 or 0).
|
||||||
|
*/
|
||||||
|
__STATIC_INLINE uint32_t LL_USART_IsEnabledInStopMode(USART_TypeDef *USARTx)
|
||||||
|
{
|
||||||
|
return ((READ_BIT(USARTx->CR1, USART_CR1_UESM) == (USART_CR1_UESM)) ? 1UL : 0UL);
|
||||||
|
}
|
||||||
|
|
||||||
|
#if defined(USART_CR3_UCESM)
|
||||||
|
/**
|
||||||
|
* @brief USART Clock enabled in STOP Mode
|
||||||
|
* @note When this function is called, USART Clock is enabled while in STOP mode
|
||||||
|
* @rmtoll CR3 UCESM LL_USART_EnableClockInStopMode
|
||||||
|
* @param USARTx USART Instance
|
||||||
|
* @retval None
|
||||||
|
*/
|
||||||
|
__STATIC_INLINE void LL_USART_EnableClockInStopMode(USART_TypeDef *USARTx)
|
||||||
|
{
|
||||||
|
SET_BIT(USARTx->CR3, USART_CR3_UCESM);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief USART clock disabled in STOP Mode
|
||||||
|
* @note When this function is called, USART Clock is disabled while in STOP mode
|
||||||
|
* @rmtoll CR3 UCESM LL_USART_DisableClockInStopMode
|
||||||
|
* @param USARTx USART Instance
|
||||||
|
* @retval None
|
||||||
|
*/
|
||||||
|
__STATIC_INLINE void LL_USART_DisableClockInStopMode(USART_TypeDef *USARTx)
|
||||||
|
{
|
||||||
|
CLEAR_BIT(USARTx->CR3, USART_CR3_UCESM);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Indicate if USART clock is enabled in STOP Mode
|
||||||
|
* @rmtoll CR3 UCESM LL_USART_IsClockEnabledInStopMode
|
||||||
|
* @param USARTx USART Instance
|
||||||
|
* @retval State of bit (1 or 0).
|
||||||
|
*/
|
||||||
|
__STATIC_INLINE uint32_t LL_USART_IsClockEnabledInStopMode(USART_TypeDef *USARTx)
|
||||||
|
{
|
||||||
|
return (READ_BIT(USARTx->CR3, USART_CR3_UCESM) == (USART_CR3_UCESM));
|
||||||
|
}
|
||||||
|
|
||||||
|
#endif /* USART_CR3_UCESM */
|
||||||
|
#endif /* USART_CR1_UESM*/
|
||||||
/**
|
/**
|
||||||
* @brief Receiver Enable (Receiver is enabled and begins searching for a start bit)
|
* @brief Receiver Enable (Receiver is enabled and begins searching for a start bit)
|
||||||
* @rmtoll CR1 RE LL_USART_EnableDirectionRx
|
* @rmtoll CR1 RE LL_USART_EnableDirectionRx
|
||||||
|
@ -1461,6 +1560,41 @@ __STATIC_INLINE uint32_t LL_USART_IsEnabledOverrunDetect(USART_TypeDef *USARTx)
|
||||||
return ((READ_BIT(USARTx->CR3, USART_CR3_OVRDIS) != USART_CR3_OVRDIS) ? 1UL : 0UL);
|
return ((READ_BIT(USARTx->CR3, USART_CR3_OVRDIS) != USART_CR3_OVRDIS) ? 1UL : 0UL);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#if defined(USART_CR1_UESM)
|
||||||
|
/**
|
||||||
|
* @brief Select event type for Wake UP Interrupt Flag (WUS[1:0] bits)
|
||||||
|
* @note Macro @ref IS_UART_WAKEUP_FROMSTOP_INSTANCE(USARTx) can be used to check whether or not
|
||||||
|
* Wake-up from Stop mode feature is supported by the USARTx instance.
|
||||||
|
* @rmtoll CR3 WUS LL_USART_SetWKUPType
|
||||||
|
* @param USARTx USART Instance
|
||||||
|
* @param Type This parameter can be one of the following values:
|
||||||
|
* @arg @ref LL_USART_WAKEUP_ON_ADDRESS
|
||||||
|
* @arg @ref LL_USART_WAKEUP_ON_STARTBIT
|
||||||
|
* @arg @ref LL_USART_WAKEUP_ON_RXNE
|
||||||
|
* @retval None
|
||||||
|
*/
|
||||||
|
__STATIC_INLINE void LL_USART_SetWKUPType(USART_TypeDef *USARTx, uint32_t Type)
|
||||||
|
{
|
||||||
|
MODIFY_REG(USARTx->CR3, USART_CR3_WUS, Type);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Return event type for Wake UP Interrupt Flag (WUS[1:0] bits)
|
||||||
|
* @note Macro @ref IS_UART_WAKEUP_FROMSTOP_INSTANCE(USARTx) can be used to check whether or not
|
||||||
|
* Wake-up from Stop mode feature is supported by the USARTx instance.
|
||||||
|
* @rmtoll CR3 WUS LL_USART_GetWKUPType
|
||||||
|
* @param USARTx USART Instance
|
||||||
|
* @retval Returned value can be one of the following values:
|
||||||
|
* @arg @ref LL_USART_WAKEUP_ON_ADDRESS
|
||||||
|
* @arg @ref LL_USART_WAKEUP_ON_STARTBIT
|
||||||
|
* @arg @ref LL_USART_WAKEUP_ON_RXNE
|
||||||
|
*/
|
||||||
|
__STATIC_INLINE uint32_t LL_USART_GetWKUPType(USART_TypeDef *USARTx)
|
||||||
|
{
|
||||||
|
return (uint32_t)(READ_BIT(USARTx->CR3, USART_CR3_WUS));
|
||||||
|
}
|
||||||
|
|
||||||
|
#endif /* USART_CR1_UESM */
|
||||||
/**
|
/**
|
||||||
* @brief Configure USART BRR register for achieving expected Baud Rate value.
|
* @brief Configure USART BRR register for achieving expected Baud Rate value.
|
||||||
* @note Compute and set USARTDIV value in BRR Register (full BRR content)
|
* @note Compute and set USARTDIV value in BRR Register (full BRR content)
|
||||||
|
@ -1480,7 +1614,7 @@ __STATIC_INLINE uint32_t LL_USART_IsEnabledOverrunDetect(USART_TypeDef *USARTx)
|
||||||
__STATIC_INLINE void LL_USART_SetBaudRate(USART_TypeDef *USARTx, uint32_t PeriphClk, uint32_t OverSampling,
|
__STATIC_INLINE void LL_USART_SetBaudRate(USART_TypeDef *USARTx, uint32_t PeriphClk, uint32_t OverSampling,
|
||||||
uint32_t BaudRate)
|
uint32_t BaudRate)
|
||||||
{
|
{
|
||||||
register uint32_t usartdiv;
|
uint32_t usartdiv;
|
||||||
register uint32_t brrtemp;
|
register uint32_t brrtemp;
|
||||||
|
|
||||||
if (OverSampling == LL_USART_OVERSAMPLING_8)
|
if (OverSampling == LL_USART_OVERSAMPLING_8)
|
||||||
|
@ -2161,7 +2295,8 @@ __STATIC_INLINE void LL_USART_ConfigAsyncMode(USART_TypeDef *USARTx)
|
||||||
{
|
{
|
||||||
/* In Asynchronous mode, the following bits must be kept cleared:
|
/* In Asynchronous mode, the following bits must be kept cleared:
|
||||||
- LINEN, CLKEN bits in the USART_CR2 register,
|
- LINEN, CLKEN bits in the USART_CR2 register,
|
||||||
- SCEN, IREN and HDSEL bits in the USART_CR3 register.*/
|
- SCEN, IREN and HDSEL bits in the USART_CR3 register.
|
||||||
|
*/
|
||||||
CLEAR_BIT(USARTx->CR2, (USART_CR2_LINEN | USART_CR2_CLKEN));
|
CLEAR_BIT(USARTx->CR2, (USART_CR2_LINEN | USART_CR2_CLKEN));
|
||||||
CLEAR_BIT(USARTx->CR3, (USART_CR3_SCEN | USART_CR3_IREN | USART_CR3_HDSEL));
|
CLEAR_BIT(USARTx->CR3, (USART_CR3_SCEN | USART_CR3_IREN | USART_CR3_HDSEL));
|
||||||
}
|
}
|
||||||
|
@ -2197,7 +2332,8 @@ __STATIC_INLINE void LL_USART_ConfigSyncMode(USART_TypeDef *USARTx)
|
||||||
{
|
{
|
||||||
/* In Synchronous mode, the following bits must be kept cleared:
|
/* In Synchronous mode, the following bits must be kept cleared:
|
||||||
- LINEN bit in the USART_CR2 register,
|
- LINEN bit in the USART_CR2 register,
|
||||||
- SCEN, IREN and HDSEL bits in the USART_CR3 register.*/
|
- SCEN, IREN and HDSEL bits in the USART_CR3 register.
|
||||||
|
*/
|
||||||
CLEAR_BIT(USARTx->CR2, (USART_CR2_LINEN));
|
CLEAR_BIT(USARTx->CR2, (USART_CR2_LINEN));
|
||||||
CLEAR_BIT(USARTx->CR3, (USART_CR3_SCEN | USART_CR3_IREN | USART_CR3_HDSEL));
|
CLEAR_BIT(USARTx->CR3, (USART_CR3_SCEN | USART_CR3_IREN | USART_CR3_HDSEL));
|
||||||
/* set the UART/USART in Synchronous mode */
|
/* set the UART/USART in Synchronous mode */
|
||||||
|
@ -2237,7 +2373,8 @@ __STATIC_INLINE void LL_USART_ConfigLINMode(USART_TypeDef *USARTx)
|
||||||
{
|
{
|
||||||
/* In LIN mode, the following bits must be kept cleared:
|
/* In LIN mode, the following bits must be kept cleared:
|
||||||
- STOP and CLKEN bits in the USART_CR2 register,
|
- STOP and CLKEN bits in the USART_CR2 register,
|
||||||
- IREN, SCEN and HDSEL bits in the USART_CR3 register.*/
|
- IREN, SCEN and HDSEL bits in the USART_CR3 register.
|
||||||
|
*/
|
||||||
CLEAR_BIT(USARTx->CR2, (USART_CR2_CLKEN | USART_CR2_STOP));
|
CLEAR_BIT(USARTx->CR2, (USART_CR2_CLKEN | USART_CR2_STOP));
|
||||||
CLEAR_BIT(USARTx->CR3, (USART_CR3_IREN | USART_CR3_SCEN | USART_CR3_HDSEL));
|
CLEAR_BIT(USARTx->CR3, (USART_CR3_IREN | USART_CR3_SCEN | USART_CR3_HDSEL));
|
||||||
/* Set the UART/USART in LIN mode */
|
/* Set the UART/USART in LIN mode */
|
||||||
|
@ -2275,7 +2412,8 @@ __STATIC_INLINE void LL_USART_ConfigHalfDuplexMode(USART_TypeDef *USARTx)
|
||||||
{
|
{
|
||||||
/* In Half Duplex mode, the following bits must be kept cleared:
|
/* In Half Duplex mode, the following bits must be kept cleared:
|
||||||
- LINEN and CLKEN bits in the USART_CR2 register,
|
- LINEN and CLKEN bits in the USART_CR2 register,
|
||||||
- SCEN and IREN bits in the USART_CR3 register.*/
|
- SCEN and IREN bits in the USART_CR3 register.
|
||||||
|
*/
|
||||||
CLEAR_BIT(USARTx->CR2, (USART_CR2_LINEN | USART_CR2_CLKEN));
|
CLEAR_BIT(USARTx->CR2, (USART_CR2_LINEN | USART_CR2_CLKEN));
|
||||||
CLEAR_BIT(USARTx->CR3, (USART_CR3_SCEN | USART_CR3_IREN));
|
CLEAR_BIT(USARTx->CR3, (USART_CR3_SCEN | USART_CR3_IREN));
|
||||||
/* set the UART/USART in Half Duplex mode */
|
/* set the UART/USART in Half Duplex mode */
|
||||||
|
@ -2315,7 +2453,8 @@ __STATIC_INLINE void LL_USART_ConfigSmartcardMode(USART_TypeDef *USARTx)
|
||||||
{
|
{
|
||||||
/* In Smartcard mode, the following bits must be kept cleared:
|
/* In Smartcard mode, the following bits must be kept cleared:
|
||||||
- LINEN bit in the USART_CR2 register,
|
- LINEN bit in the USART_CR2 register,
|
||||||
- IREN and HDSEL bits in the USART_CR3 register.*/
|
- IREN and HDSEL bits in the USART_CR3 register.
|
||||||
|
*/
|
||||||
CLEAR_BIT(USARTx->CR2, (USART_CR2_LINEN));
|
CLEAR_BIT(USARTx->CR2, (USART_CR2_LINEN));
|
||||||
CLEAR_BIT(USARTx->CR3, (USART_CR3_IREN | USART_CR3_HDSEL));
|
CLEAR_BIT(USARTx->CR3, (USART_CR3_IREN | USART_CR3_HDSEL));
|
||||||
/* Configure Stop bits to 1.5 bits */
|
/* Configure Stop bits to 1.5 bits */
|
||||||
|
@ -2358,7 +2497,8 @@ __STATIC_INLINE void LL_USART_ConfigIrdaMode(USART_TypeDef *USARTx)
|
||||||
{
|
{
|
||||||
/* In IRDA mode, the following bits must be kept cleared:
|
/* In IRDA mode, the following bits must be kept cleared:
|
||||||
- LINEN, STOP and CLKEN bits in the USART_CR2 register,
|
- LINEN, STOP and CLKEN bits in the USART_CR2 register,
|
||||||
- SCEN and HDSEL bits in the USART_CR3 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->CR2, (USART_CR2_LINEN | USART_CR2_CLKEN | USART_CR2_STOP));
|
||||||
CLEAR_BIT(USARTx->CR3, (USART_CR3_SCEN | USART_CR3_HDSEL));
|
CLEAR_BIT(USARTx->CR3, (USART_CR3_SCEN | USART_CR3_HDSEL));
|
||||||
/* set the UART/USART in IRDA mode */
|
/* set the UART/USART in IRDA mode */
|
||||||
|
@ -2396,7 +2536,8 @@ __STATIC_INLINE void LL_USART_ConfigMultiProcessMode(USART_TypeDef *USARTx)
|
||||||
{
|
{
|
||||||
/* In Multi Processor mode, the following bits must be kept cleared:
|
/* In Multi Processor mode, the following bits must be kept cleared:
|
||||||
- LINEN and CLKEN bits in the USART_CR2 register,
|
- LINEN and CLKEN bits in the USART_CR2 register,
|
||||||
- IREN, SCEN and HDSEL bits in the USART_CR3 register.*/
|
- IREN, SCEN and HDSEL bits in the USART_CR3 register.
|
||||||
|
*/
|
||||||
CLEAR_BIT(USARTx->CR2, (USART_CR2_LINEN | USART_CR2_CLKEN));
|
CLEAR_BIT(USARTx->CR2, (USART_CR2_LINEN | USART_CR2_CLKEN));
|
||||||
CLEAR_BIT(USARTx->CR3, (USART_CR3_SCEN | USART_CR3_HDSEL | USART_CR3_IREN));
|
CLEAR_BIT(USARTx->CR3, (USART_CR3_SCEN | USART_CR3_HDSEL | USART_CR3_IREN));
|
||||||
}
|
}
|
||||||
|
@ -2630,6 +2771,21 @@ __STATIC_INLINE uint32_t LL_USART_IsActiveFlag_RWU(USART_TypeDef *USARTx)
|
||||||
return ((READ_BIT(USARTx->ISR, USART_ISR_RWU) == (USART_ISR_RWU)) ? 1UL : 0UL);
|
return ((READ_BIT(USARTx->ISR, USART_ISR_RWU) == (USART_ISR_RWU)) ? 1UL : 0UL);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#if defined(USART_CR1_UESM)
|
||||||
|
/**
|
||||||
|
* @brief Check if the USART Wake Up from stop mode Flag is set or not
|
||||||
|
* @note Macro @ref IS_UART_WAKEUP_FROMSTOP_INSTANCE(USARTx) can be used to check whether or not
|
||||||
|
* Wake-up from Stop mode feature is supported by the USARTx instance.
|
||||||
|
* @rmtoll ISR WUF LL_USART_IsActiveFlag_WKUP
|
||||||
|
* @param USARTx USART Instance
|
||||||
|
* @retval State of bit (1 or 0).
|
||||||
|
*/
|
||||||
|
__STATIC_INLINE uint32_t LL_USART_IsActiveFlag_WKUP(USART_TypeDef *USARTx)
|
||||||
|
{
|
||||||
|
return ((READ_BIT(USARTx->ISR, USART_ISR_WUF) == (USART_ISR_WUF)) ? 1UL : 0UL);
|
||||||
|
}
|
||||||
|
|
||||||
|
#endif /* USART_CR1_UESM */
|
||||||
/**
|
/**
|
||||||
* @brief Check if the USART Transmit Enable Acknowledge Flag is set or not
|
* @brief Check if the USART Transmit Enable Acknowledge Flag is set or not
|
||||||
* @rmtoll ISR TEACK LL_USART_IsActiveFlag_TEACK
|
* @rmtoll ISR TEACK LL_USART_IsActiveFlag_TEACK
|
||||||
|
@ -2641,6 +2797,19 @@ __STATIC_INLINE uint32_t LL_USART_IsActiveFlag_TEACK(USART_TypeDef *USARTx)
|
||||||
return ((READ_BIT(USARTx->ISR, USART_ISR_TEACK) == (USART_ISR_TEACK)) ? 1UL : 0UL);
|
return ((READ_BIT(USARTx->ISR, USART_ISR_TEACK) == (USART_ISR_TEACK)) ? 1UL : 0UL);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#if defined(USART_ISR_REACK)
|
||||||
|
/**
|
||||||
|
* @brief Check if the USART Receive Enable Acknowledge Flag is set or not
|
||||||
|
* @rmtoll ISR REACK LL_USART_IsActiveFlag_REACK
|
||||||
|
* @param USARTx USART Instance
|
||||||
|
* @retval State of bit (1 or 0).
|
||||||
|
*/
|
||||||
|
__STATIC_INLINE uint32_t LL_USART_IsActiveFlag_REACK(USART_TypeDef *USARTx)
|
||||||
|
{
|
||||||
|
return ((READ_BIT(USARTx->ISR, USART_ISR_REACK) == (USART_ISR_REACK)) ? 1UL : 0UL);
|
||||||
|
}
|
||||||
|
|
||||||
|
#endif/* USART_ISR_REACK */
|
||||||
#if defined(USART_TCBGT_SUPPORT)
|
#if defined(USART_TCBGT_SUPPORT)
|
||||||
/* Function available only on devices supporting Transmit Complete before Guard Time feature */
|
/* Function available only on devices supporting Transmit Complete before Guard Time feature */
|
||||||
/**
|
/**
|
||||||
|
@ -2653,8 +2822,8 @@ __STATIC_INLINE uint32_t LL_USART_IsActiveFlag_TCBGT(USART_TypeDef *USARTx)
|
||||||
{
|
{
|
||||||
return ((READ_BIT(USARTx->ISR, USART_ISR_TCBGT) == (USART_ISR_TCBGT)) ? 1UL : 0UL);
|
return ((READ_BIT(USARTx->ISR, USART_ISR_TCBGT) == (USART_ISR_TCBGT)) ? 1UL : 0UL);
|
||||||
}
|
}
|
||||||
#endif
|
|
||||||
|
|
||||||
|
#endif /* USART_TCBGT_SUPPORT */
|
||||||
/**
|
/**
|
||||||
* @brief Clear Parity Error Flag
|
* @brief Clear Parity Error Flag
|
||||||
* @rmtoll ICR PECF LL_USART_ClearFlag_PE
|
* @rmtoll ICR PECF LL_USART_ClearFlag_PE
|
||||||
|
@ -2733,7 +2902,7 @@ __STATIC_INLINE void LL_USART_ClearFlag_TCBGT(USART_TypeDef *USARTx)
|
||||||
{
|
{
|
||||||
WRITE_REG(USARTx->ICR, USART_ICR_TCBGTCF);
|
WRITE_REG(USARTx->ICR, USART_ICR_TCBGTCF);
|
||||||
}
|
}
|
||||||
#endif
|
#endif /* USART_TCBGT_SUPPORT */
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief Clear LIN Break Detection Flag
|
* @brief Clear LIN Break Detection Flag
|
||||||
|
@ -2796,6 +2965,21 @@ __STATIC_INLINE void LL_USART_ClearFlag_CM(USART_TypeDef *USARTx)
|
||||||
WRITE_REG(USARTx->ICR, USART_ICR_CMCF);
|
WRITE_REG(USARTx->ICR, USART_ICR_CMCF);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#if defined(USART_CR1_UESM)
|
||||||
|
/**
|
||||||
|
* @brief Clear Wake Up from stop mode Flag
|
||||||
|
* @note Macro @ref IS_UART_WAKEUP_FROMSTOP_INSTANCE(USARTx) can be used to check whether or not
|
||||||
|
* Wake-up from Stop mode feature is supported by the USARTx instance.
|
||||||
|
* @rmtoll ICR WUCF LL_USART_ClearFlag_WKUP
|
||||||
|
* @param USARTx USART Instance
|
||||||
|
* @retval None
|
||||||
|
*/
|
||||||
|
__STATIC_INLINE void LL_USART_ClearFlag_WKUP(USART_TypeDef *USARTx)
|
||||||
|
{
|
||||||
|
WRITE_REG(USARTx->ICR, USART_ICR_WUCF);
|
||||||
|
}
|
||||||
|
|
||||||
|
#endif /* USART_CR1_UESM */
|
||||||
/**
|
/**
|
||||||
* @}
|
* @}
|
||||||
*/
|
*/
|
||||||
|
@ -2935,6 +3119,21 @@ __STATIC_INLINE void LL_USART_EnableIT_CTS(USART_TypeDef *USARTx)
|
||||||
SET_BIT(USARTx->CR3, USART_CR3_CTSIE);
|
SET_BIT(USARTx->CR3, USART_CR3_CTSIE);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#if defined(USART_CR1_UESM)
|
||||||
|
/**
|
||||||
|
* @brief Enable Wake Up from Stop Mode Interrupt
|
||||||
|
* @note Macro @ref IS_UART_WAKEUP_FROMSTOP_INSTANCE(USARTx) can be used to check whether or not
|
||||||
|
* Wake-up from Stop mode feature is supported by the USARTx instance.
|
||||||
|
* @rmtoll CR3 WUFIE LL_USART_EnableIT_WKUP
|
||||||
|
* @param USARTx USART Instance
|
||||||
|
* @retval None
|
||||||
|
*/
|
||||||
|
__STATIC_INLINE void LL_USART_EnableIT_WKUP(USART_TypeDef *USARTx)
|
||||||
|
{
|
||||||
|
SET_BIT(USARTx->CR3, USART_CR3_WUFIE);
|
||||||
|
}
|
||||||
|
|
||||||
|
#endif /* USART_CR1_UESM */
|
||||||
#if defined(USART_TCBGT_SUPPORT)
|
#if defined(USART_TCBGT_SUPPORT)
|
||||||
/* Function available only on devices supporting Transmit Complete before Guard Time feature */
|
/* Function available only on devices supporting Transmit Complete before Guard Time feature */
|
||||||
/**
|
/**
|
||||||
|
@ -2949,7 +3148,7 @@ __STATIC_INLINE void LL_USART_EnableIT_TCBGT(USART_TypeDef *USARTx)
|
||||||
{
|
{
|
||||||
SET_BIT(USARTx->CR3, USART_CR3_TCBGTIE);
|
SET_BIT(USARTx->CR3, USART_CR3_TCBGTIE);
|
||||||
}
|
}
|
||||||
#endif
|
#endif /* USART_TCBGT_SUPPORT */
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief Disable IDLE Interrupt
|
* @brief Disable IDLE Interrupt
|
||||||
|
@ -3082,6 +3281,21 @@ __STATIC_INLINE void LL_USART_DisableIT_CTS(USART_TypeDef *USARTx)
|
||||||
CLEAR_BIT(USARTx->CR3, USART_CR3_CTSIE);
|
CLEAR_BIT(USARTx->CR3, USART_CR3_CTSIE);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#if defined(USART_CR1_UESM)
|
||||||
|
/**
|
||||||
|
* @brief Disable Wake Up from Stop Mode Interrupt
|
||||||
|
* @note Macro @ref IS_UART_WAKEUP_FROMSTOP_INSTANCE(USARTx) can be used to check whether or not
|
||||||
|
* Wake-up from Stop mode feature is supported by the USARTx instance.
|
||||||
|
* @rmtoll CR3 WUFIE LL_USART_DisableIT_WKUP
|
||||||
|
* @param USARTx USART Instance
|
||||||
|
* @retval None
|
||||||
|
*/
|
||||||
|
__STATIC_INLINE void LL_USART_DisableIT_WKUP(USART_TypeDef *USARTx)
|
||||||
|
{
|
||||||
|
CLEAR_BIT(USARTx->CR3, USART_CR3_WUFIE);
|
||||||
|
}
|
||||||
|
|
||||||
|
#endif /* USART_CR1_UESM */
|
||||||
#if defined(USART_TCBGT_SUPPORT)
|
#if defined(USART_TCBGT_SUPPORT)
|
||||||
/* Function available only on devices supporting Transmit Complete before Guard Time feature */
|
/* Function available only on devices supporting Transmit Complete before Guard Time feature */
|
||||||
/**
|
/**
|
||||||
|
@ -3096,7 +3310,7 @@ __STATIC_INLINE void LL_USART_DisableIT_TCBGT(USART_TypeDef *USARTx)
|
||||||
{
|
{
|
||||||
CLEAR_BIT(USARTx->CR3, USART_CR3_TCBGTIE);
|
CLEAR_BIT(USARTx->CR3, USART_CR3_TCBGTIE);
|
||||||
}
|
}
|
||||||
#endif
|
#endif /* USART_TCBGT_SUPPORT */
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief Check if the USART IDLE Interrupt source is enabled or disabled.
|
* @brief Check if the USART IDLE Interrupt source is enabled or disabled.
|
||||||
|
@ -3225,6 +3439,21 @@ __STATIC_INLINE uint32_t LL_USART_IsEnabledIT_CTS(USART_TypeDef *USARTx)
|
||||||
return ((READ_BIT(USARTx->CR3, USART_CR3_CTSIE) == (USART_CR3_CTSIE)) ? 1UL : 0UL);
|
return ((READ_BIT(USARTx->CR3, USART_CR3_CTSIE) == (USART_CR3_CTSIE)) ? 1UL : 0UL);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#if defined(USART_CR1_UESM)
|
||||||
|
/**
|
||||||
|
* @brief Check if the USART Wake Up from Stop Mode Interrupt is enabled or disabled.
|
||||||
|
* @note Macro @ref IS_UART_WAKEUP_FROMSTOP_INSTANCE(USARTx) can be used to check whether or not
|
||||||
|
* Wake-up from Stop mode feature is supported by the USARTx instance.
|
||||||
|
* @rmtoll CR3 WUFIE LL_USART_IsEnabledIT_WKUP
|
||||||
|
* @param USARTx USART Instance
|
||||||
|
* @retval State of bit (1 or 0).
|
||||||
|
*/
|
||||||
|
__STATIC_INLINE uint32_t LL_USART_IsEnabledIT_WKUP(USART_TypeDef *USARTx)
|
||||||
|
{
|
||||||
|
return ((READ_BIT(USARTx->CR3, USART_CR3_WUFIE) == (USART_CR3_WUFIE)) ? 1UL : 0UL);
|
||||||
|
}
|
||||||
|
|
||||||
|
#endif /* USART_CR1_UESM */
|
||||||
#if defined(USART_TCBGT_SUPPORT)
|
#if defined(USART_TCBGT_SUPPORT)
|
||||||
/* Function available only on devices supporting Transmit Complete before Guard Time feature */
|
/* Function available only on devices supporting Transmit Complete before Guard Time feature */
|
||||||
/**
|
/**
|
||||||
|
@ -3239,7 +3468,7 @@ __STATIC_INLINE uint32_t LL_USART_IsEnabledIT_TCBGT(USART_TypeDef *USARTx)
|
||||||
{
|
{
|
||||||
return ((READ_BIT(USARTx->CR3, USART_CR3_TCBGTIE) == (USART_CR3_TCBGTIE)) ? 1UL : 0UL);
|
return ((READ_BIT(USARTx->CR3, USART_CR3_TCBGTIE) == (USART_CR3_TCBGTIE)) ? 1UL : 0UL);
|
||||||
}
|
}
|
||||||
#endif
|
#endif /* USART_TCBGT_SUPPORT */
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @}
|
* @}
|
||||||
|
@ -3365,12 +3594,12 @@ __STATIC_INLINE uint32_t LL_USART_DMA_GetRegAddr(USART_TypeDef *USARTx, uint32_t
|
||||||
if (Direction == LL_USART_DMA_REG_DATA_TRANSMIT)
|
if (Direction == LL_USART_DMA_REG_DATA_TRANSMIT)
|
||||||
{
|
{
|
||||||
/* return address of TDR register */
|
/* return address of TDR register */
|
||||||
data_reg_addr = (uint32_t) & (USARTx->TDR);
|
data_reg_addr = (uint32_t) &(USARTx->TDR);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
/* return address of RDR register */
|
/* return address of RDR register */
|
||||||
data_reg_addr = (uint32_t) & (USARTx->RDR);
|
data_reg_addr = (uint32_t) &(USARTx->RDR);
|
||||||
}
|
}
|
||||||
|
|
||||||
return data_reg_addr;
|
return data_reg_addr;
|
||||||
|
@ -3392,7 +3621,7 @@ __STATIC_INLINE uint32_t LL_USART_DMA_GetRegAddr(USART_TypeDef *USARTx, uint32_t
|
||||||
*/
|
*/
|
||||||
__STATIC_INLINE uint8_t LL_USART_ReceiveData8(USART_TypeDef *USARTx)
|
__STATIC_INLINE uint8_t LL_USART_ReceiveData8(USART_TypeDef *USARTx)
|
||||||
{
|
{
|
||||||
return (uint8_t)(READ_BIT(USARTx->RDR, USART_RDR_RDR));
|
return (uint8_t)(READ_BIT(USARTx->RDR, USART_RDR_RDR) & 0xFFU);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
|
@ -155,7 +155,7 @@ typedef struct
|
||||||
|
|
||||||
typedef struct
|
typedef struct
|
||||||
{
|
{
|
||||||
uint8_t dev_addr ; /*!< USB device address.
|
uint8_t dev_addr; /*!< USB device address.
|
||||||
This parameter must be a number between Min_Data = 1 and Max_Data = 255 */
|
This parameter must be a number between Min_Data = 1 and Max_Data = 255 */
|
||||||
|
|
||||||
uint8_t ch_num; /*!< Host channel number.
|
uint8_t ch_num; /*!< Host channel number.
|
||||||
|
@ -199,10 +199,10 @@ typedef struct
|
||||||
|
|
||||||
uint32_t ErrCnt; /*!< Host channel error count.*/
|
uint32_t ErrCnt; /*!< Host channel error count.*/
|
||||||
|
|
||||||
USB_OTG_URBStateTypeDef urb_state; /*!< URB state.
|
USB_OTG_URBStateTypeDef urb_state; /*!< URB state.
|
||||||
This parameter can be any value of @ref USB_OTG_URBStateTypeDef */
|
This parameter can be any value of @ref USB_OTG_URBStateTypeDef */
|
||||||
|
|
||||||
USB_OTG_HCStateTypeDef state; /*!< Host Channel state.
|
USB_OTG_HCStateTypeDef state; /*!< Host Channel state.
|
||||||
This parameter can be any value of @ref USB_OTG_HCStateTypeDef */
|
This parameter can be any value of @ref USB_OTG_HCStateTypeDef */
|
||||||
} USB_OTG_HCTypeDef;
|
} USB_OTG_HCTypeDef;
|
||||||
#endif /* defined (USB_OTG_FS) || defined (USB_OTG_HS) */
|
#endif /* defined (USB_OTG_FS) || defined (USB_OTG_HS) */
|
||||||
|
@ -234,6 +234,18 @@ typedef struct
|
||||||
* @}
|
* @}
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
/** @defgroup USB_LL Device Speed
|
||||||
|
* @{
|
||||||
|
*/
|
||||||
|
#define USBD_HS_SPEED 0U
|
||||||
|
#define USBD_HSINFS_SPEED 1U
|
||||||
|
#define USBH_HS_SPEED 0U
|
||||||
|
#define USBD_FS_SPEED 2U
|
||||||
|
#define USBH_FSLS_SPEED 1U
|
||||||
|
/**
|
||||||
|
* @}
|
||||||
|
*/
|
||||||
|
|
||||||
/** @defgroup USB_LL_Core_Speed USB Low Layer Core Speed
|
/** @defgroup USB_LL_Core_Speed USB Low Layer Core Speed
|
||||||
* @{
|
* @{
|
||||||
*/
|
*/
|
||||||
|
@ -252,7 +264,7 @@ typedef struct
|
||||||
#define USB_OTG_HS_EMBEDDED_PHY 3U
|
#define USB_OTG_HS_EMBEDDED_PHY 3U
|
||||||
|
|
||||||
#if !defined (USB_HS_PHYC_TUNE_VALUE)
|
#if !defined (USB_HS_PHYC_TUNE_VALUE)
|
||||||
#define USB_HS_PHYC_TUNE_VALUE 0x00000F13U /*!< Value of USB HS PHY Tune */
|
#define USB_HS_PHYC_TUNE_VALUE 0x00000F13U /*!< Value of USB HS PHY Tune */
|
||||||
#endif /* USB_HS_PHYC_TUNE_VALUE */
|
#endif /* USB_HS_PHYC_TUNE_VALUE */
|
||||||
/**
|
/**
|
||||||
* @}
|
* @}
|
||||||
|
@ -262,11 +274,11 @@ typedef struct
|
||||||
* @{
|
* @{
|
||||||
*/
|
*/
|
||||||
#ifndef USBD_HS_TRDT_VALUE
|
#ifndef USBD_HS_TRDT_VALUE
|
||||||
#define USBD_HS_TRDT_VALUE 9U
|
#define USBD_HS_TRDT_VALUE 9U
|
||||||
#endif /* USBD_HS_TRDT_VALUE */
|
#endif /* USBD_HS_TRDT_VALUE */
|
||||||
#ifndef USBD_FS_TRDT_VALUE
|
#ifndef USBD_FS_TRDT_VALUE
|
||||||
#define USBD_FS_TRDT_VALUE 5U
|
#define USBD_FS_TRDT_VALUE 5U
|
||||||
#define USBD_DEFAULT_TRDT_VALUE 9U
|
#define USBD_DEFAULT_TRDT_VALUE 9U
|
||||||
#endif /* USBD_HS_TRDT_VALUE */
|
#endif /* USBD_HS_TRDT_VALUE */
|
||||||
/**
|
/**
|
||||||
* @}
|
* @}
|
||||||
|
@ -275,9 +287,9 @@ typedef struct
|
||||||
/** @defgroup USB_LL_Core_MPS USB Low Layer Core MPS
|
/** @defgroup USB_LL_Core_MPS USB Low Layer Core MPS
|
||||||
* @{
|
* @{
|
||||||
*/
|
*/
|
||||||
#define USB_OTG_HS_MAX_PACKET_SIZE 512U
|
#define USB_OTG_HS_MAX_PACKET_SIZE 512U
|
||||||
#define USB_OTG_FS_MAX_PACKET_SIZE 64U
|
#define USB_OTG_FS_MAX_PACKET_SIZE 64U
|
||||||
#define USB_OTG_MAX_EP0_SIZE 64U
|
#define USB_OTG_MAX_EP0_SIZE 64U
|
||||||
/**
|
/**
|
||||||
* @}
|
* @}
|
||||||
*/
|
*/
|
||||||
|
@ -287,7 +299,6 @@ typedef struct
|
||||||
*/
|
*/
|
||||||
#define DSTS_ENUMSPD_HS_PHY_30MHZ_OR_60MHZ (0U << 1)
|
#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_30MHZ_OR_60MHZ (1U << 1)
|
||||||
#define DSTS_ENUMSPD_LS_PHY_6MHZ (2U << 1)
|
|
||||||
#define DSTS_ENUMSPD_FS_PHY_48MHZ (3U << 1)
|
#define DSTS_ENUMSPD_FS_PHY_48MHZ (3U << 1)
|
||||||
/**
|
/**
|
||||||
* @}
|
* @}
|
||||||
|
@ -397,7 +408,7 @@ typedef struct
|
||||||
#define USBPHYC ((USBPHYC_GlobalTypeDef *)((uint32_t )USB_PHY_HS_CONTROLLER_BASE))
|
#define USBPHYC ((USBPHYC_GlobalTypeDef *)((uint32_t )USB_PHY_HS_CONTROLLER_BASE))
|
||||||
#endif /* defined (USB_OTG_FS) || defined (USB_OTG_HS) */
|
#endif /* defined (USB_OTG_FS) || defined (USB_OTG_HS) */
|
||||||
|
|
||||||
#define EP_ADDR_MSK 0xFU
|
#define EP_ADDR_MSK 0xFU
|
||||||
/**
|
/**
|
||||||
* @}
|
* @}
|
||||||
*/
|
*/
|
||||||
|
@ -462,13 +473,9 @@ HAL_StatusTypeDef USB_ResetPort(USB_OTG_GlobalTypeDef *USBx);
|
||||||
HAL_StatusTypeDef USB_DriveVbus(USB_OTG_GlobalTypeDef *USBx, uint8_t state);
|
HAL_StatusTypeDef USB_DriveVbus(USB_OTG_GlobalTypeDef *USBx, uint8_t state);
|
||||||
uint32_t USB_GetHostSpeed(USB_OTG_GlobalTypeDef *USBx);
|
uint32_t USB_GetHostSpeed(USB_OTG_GlobalTypeDef *USBx);
|
||||||
uint32_t USB_GetCurrentFrame(USB_OTG_GlobalTypeDef *USBx);
|
uint32_t USB_GetCurrentFrame(USB_OTG_GlobalTypeDef *USBx);
|
||||||
HAL_StatusTypeDef USB_HC_Init(USB_OTG_GlobalTypeDef *USBx,
|
HAL_StatusTypeDef USB_HC_Init(USB_OTG_GlobalTypeDef *USBx, uint8_t ch_num,
|
||||||
uint8_t ch_num,
|
uint8_t epnum, uint8_t dev_address, uint8_t speed,
|
||||||
uint8_t epnum,
|
uint8_t ep_type, uint16_t mps);
|
||||||
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, uint8_t dma);
|
HAL_StatusTypeDef USB_HC_StartXfer(USB_OTG_GlobalTypeDef *USBx, USB_OTG_HCTypeDef *hc, uint8_t dma);
|
||||||
uint32_t USB_HC_ReadInterrupt(USB_OTG_GlobalTypeDef *USBx);
|
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_HC_Halt(USB_OTG_GlobalTypeDef *USBx, uint8_t hc_num);
|
||||||
|
|
|
@ -50,11 +50,11 @@
|
||||||
* @{
|
* @{
|
||||||
*/
|
*/
|
||||||
/**
|
/**
|
||||||
* @brief STM32F7xx HAL Driver version number V1.2.7
|
* @brief STM32F7xx HAL Driver version number V1.2.8
|
||||||
*/
|
*/
|
||||||
#define __STM32F7xx_HAL_VERSION_MAIN (0x01) /*!< [31:24] main version */
|
#define __STM32F7xx_HAL_VERSION_MAIN (0x01) /*!< [31:24] main version */
|
||||||
#define __STM32F7xx_HAL_VERSION_SUB1 (0x02) /*!< [23:16] sub1 version */
|
#define __STM32F7xx_HAL_VERSION_SUB1 (0x02) /*!< [23:16] sub1 version */
|
||||||
#define __STM32F7xx_HAL_VERSION_SUB2 (0x07) /*!< [15:8] sub2 version */
|
#define __STM32F7xx_HAL_VERSION_SUB2 (0x08) /*!< [15:8] sub2 version */
|
||||||
#define __STM32F7xx_HAL_VERSION_RC (0x00) /*!< [7:0] release candidate */
|
#define __STM32F7xx_HAL_VERSION_RC (0x00) /*!< [7:0] release candidate */
|
||||||
#define __STM32F7xx_HAL_VERSION ((__STM32F7xx_HAL_VERSION_MAIN << 24)\
|
#define __STM32F7xx_HAL_VERSION ((__STM32F7xx_HAL_VERSION_MAIN << 24)\
|
||||||
|(__STM32F7xx_HAL_VERSION_SUB1 << 16)\
|
|(__STM32F7xx_HAL_VERSION_SUB1 << 16)\
|
||||||
|
@ -319,14 +319,26 @@ uint32_t HAL_GetTickPrio(void)
|
||||||
HAL_StatusTypeDef HAL_SetTickFreq(HAL_TickFreqTypeDef Freq)
|
HAL_StatusTypeDef HAL_SetTickFreq(HAL_TickFreqTypeDef Freq)
|
||||||
{
|
{
|
||||||
HAL_StatusTypeDef status = HAL_OK;
|
HAL_StatusTypeDef status = HAL_OK;
|
||||||
|
HAL_TickFreqTypeDef prevTickFreq;
|
||||||
|
|
||||||
assert_param(IS_TICKFREQ(Freq));
|
assert_param(IS_TICKFREQ(Freq));
|
||||||
|
|
||||||
if (uwTickFreq != Freq)
|
if (uwTickFreq != Freq)
|
||||||
{
|
{
|
||||||
|
/* Back up uwTickFreq frequency */
|
||||||
|
prevTickFreq = uwTickFreq;
|
||||||
|
|
||||||
|
/* Update uwTickFreq global variable used by HAL_InitTick() */
|
||||||
uwTickFreq = Freq;
|
uwTickFreq = Freq;
|
||||||
|
|
||||||
/* Apply the new tick Freq */
|
/* Apply the new tick Freq */
|
||||||
status = HAL_InitTick(uwTickPrio);
|
status = HAL_InitTick(uwTickPrio);
|
||||||
|
|
||||||
|
if (status != HAL_OK)
|
||||||
|
{
|
||||||
|
/* Restore previous tick frequency */
|
||||||
|
uwTickFreq = prevTickFreq;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return status;
|
return status;
|
||||||
|
|
|
@ -1556,7 +1556,7 @@ HAL_StatusTypeDef HAL_CAN_GetRxMessage(CAN_HandleTypeDef *hcan, uint32_t RxFifo,
|
||||||
{
|
{
|
||||||
pHeader->ExtId = ((CAN_RI0R_EXID | CAN_RI0R_STID) & hcan->Instance->sFIFOMailBox[RxFifo].RIR) >> CAN_RI0R_EXID_Pos;
|
pHeader->ExtId = ((CAN_RI0R_EXID | CAN_RI0R_STID) & hcan->Instance->sFIFOMailBox[RxFifo].RIR) >> CAN_RI0R_EXID_Pos;
|
||||||
}
|
}
|
||||||
pHeader->RTR = (CAN_RI0R_RTR & hcan->Instance->sFIFOMailBox[RxFifo].RIR) >> CAN_RI0R_RTR_Pos;
|
pHeader->RTR = (CAN_RI0R_RTR & hcan->Instance->sFIFOMailBox[RxFifo].RIR);
|
||||||
pHeader->DLC = (CAN_RDT0R_DLC & hcan->Instance->sFIFOMailBox[RxFifo].RDTR) >> CAN_RDT0R_DLC_Pos;
|
pHeader->DLC = (CAN_RDT0R_DLC & hcan->Instance->sFIFOMailBox[RxFifo].RDTR) >> CAN_RDT0R_DLC_Pos;
|
||||||
pHeader->FilterMatchIndex = (CAN_RDT0R_FMI & hcan->Instance->sFIFOMailBox[RxFifo].RDTR) >> CAN_RDT0R_FMI_Pos;
|
pHeader->FilterMatchIndex = (CAN_RDT0R_FMI & hcan->Instance->sFIFOMailBox[RxFifo].RDTR) >> CAN_RDT0R_FMI_Pos;
|
||||||
pHeader->Timestamp = (CAN_RDT0R_TIME & hcan->Instance->sFIFOMailBox[RxFifo].RDTR) >> CAN_RDT0R_TIME_Pos;
|
pHeader->Timestamp = (CAN_RDT0R_TIME & hcan->Instance->sFIFOMailBox[RxFifo].RDTR) >> CAN_RDT0R_TIME_Pos;
|
||||||
|
|
|
@ -85,7 +85,6 @@
|
||||||
|
|
||||||
/* Includes ------------------------------------------------------------------*/
|
/* Includes ------------------------------------------------------------------*/
|
||||||
#include "stm32f7xx_hal.h"
|
#include "stm32f7xx_hal.h"
|
||||||
#include "stm32f7xx_hal_exti.h"
|
|
||||||
|
|
||||||
/** @addtogroup STM32F7xx_HAL_Driver
|
/** @addtogroup STM32F7xx_HAL_Driver
|
||||||
* @{
|
* @{
|
||||||
|
@ -105,7 +104,7 @@
|
||||||
#ifdef HAL_EXTI_MODULE_ENABLED
|
#ifdef HAL_EXTI_MODULE_ENABLED
|
||||||
|
|
||||||
/* Private typedef -----------------------------------------------------------*/
|
/* Private typedef -----------------------------------------------------------*/
|
||||||
/* Private defines ------------------------------------------------------------*/
|
/* Private defines -----------------------------------------------------------*/
|
||||||
/** @defgroup EXTI_Private_Constants EXTI Private Constants
|
/** @defgroup EXTI_Private_Constants EXTI Private Constants
|
||||||
* @{
|
* @{
|
||||||
*/
|
*/
|
||||||
|
@ -144,6 +143,8 @@
|
||||||
HAL_StatusTypeDef HAL_EXTI_SetConfigLine(EXTI_HandleTypeDef *hexti, EXTI_ConfigTypeDef *pExtiConfig)
|
HAL_StatusTypeDef HAL_EXTI_SetConfigLine(EXTI_HandleTypeDef *hexti, EXTI_ConfigTypeDef *pExtiConfig)
|
||||||
{
|
{
|
||||||
uint32_t regval;
|
uint32_t regval;
|
||||||
|
uint32_t linepos;
|
||||||
|
uint32_t maskline;
|
||||||
|
|
||||||
/* Check null pointer */
|
/* Check null pointer */
|
||||||
if ((hexti == NULL) || (pExtiConfig == NULL))
|
if ((hexti == NULL) || (pExtiConfig == NULL))
|
||||||
|
@ -154,37 +155,77 @@ HAL_StatusTypeDef HAL_EXTI_SetConfigLine(EXTI_HandleTypeDef *hexti, EXTI_ConfigT
|
||||||
/* Check parameters */
|
/* Check parameters */
|
||||||
assert_param(IS_EXTI_LINE(pExtiConfig->Line));
|
assert_param(IS_EXTI_LINE(pExtiConfig->Line));
|
||||||
assert_param(IS_EXTI_MODE(pExtiConfig->Mode));
|
assert_param(IS_EXTI_MODE(pExtiConfig->Mode));
|
||||||
assert_param(IS_EXTI_TRIGGER(pExtiConfig->Trigger));
|
|
||||||
|
|
||||||
/* Assign line number to handle */
|
/* Assign line number to handle */
|
||||||
hexti->Line = pExtiConfig->Line;
|
hexti->Line = pExtiConfig->Line;
|
||||||
|
|
||||||
/* Clear EXTI line configuration */
|
/* Compute line mask */
|
||||||
EXTI->IMR &= ~pExtiConfig->Line;
|
linepos = (pExtiConfig->Line & EXTI_PIN_MASK);
|
||||||
EXTI->EMR &= ~pExtiConfig->Line;
|
maskline = (1uL << linepos);
|
||||||
|
|
||||||
/* Select the Mode for the selected external interrupts */
|
/* Configure triggers for configurable lines */
|
||||||
regval = (uint32_t)EXTI_BASE;
|
if ((pExtiConfig->Line & EXTI_CONFIG) != 0x00u)
|
||||||
regval += pExtiConfig->Mode;
|
|
||||||
*(__IO uint32_t *) regval |= pExtiConfig->Line;
|
|
||||||
|
|
||||||
/* Clear Rising Falling edge configuration */
|
|
||||||
EXTI->RTSR &= ~pExtiConfig->Line;
|
|
||||||
EXTI->FTSR &= ~pExtiConfig->Line;
|
|
||||||
|
|
||||||
/* Select the trigger for the selected external interrupts */
|
|
||||||
if (pExtiConfig->Trigger == EXTI_TRIGGER_RISING_FALLING)
|
|
||||||
{
|
{
|
||||||
/* Rising Falling edge */
|
assert_param(IS_EXTI_TRIGGER(pExtiConfig->Trigger));
|
||||||
EXTI->RTSR |= pExtiConfig->Line;
|
|
||||||
EXTI->FTSR |= pExtiConfig->Line;
|
/* Configure rising trigger */
|
||||||
|
/* Mask or set line */
|
||||||
|
if ((pExtiConfig->Trigger & EXTI_TRIGGER_RISING) != 0x00u)
|
||||||
|
{
|
||||||
|
EXTI->RTSR |= maskline;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
EXTI->RTSR &= ~maskline;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Configure falling trigger */
|
||||||
|
/* Mask or set line */
|
||||||
|
if ((pExtiConfig->Trigger & EXTI_TRIGGER_FALLING) != 0x00u)
|
||||||
|
{
|
||||||
|
EXTI->FTSR |= maskline;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
EXTI->FTSR &= ~maskline;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/* Configure gpio port selection in case of gpio exti line */
|
||||||
|
if ((pExtiConfig->Line & EXTI_GPIO) == EXTI_GPIO)
|
||||||
|
{
|
||||||
|
assert_param(IS_EXTI_GPIO_PORT(pExtiConfig->GPIOSel));
|
||||||
|
assert_param(IS_EXTI_GPIO_PIN(linepos));
|
||||||
|
|
||||||
|
regval = SYSCFG->EXTICR[linepos >> 2u];
|
||||||
|
regval &= ~(SYSCFG_EXTICR1_EXTI0 << (SYSCFG_EXTICR1_EXTI1_Pos * (linepos & 0x03u)));
|
||||||
|
regval |= (pExtiConfig->GPIOSel << (SYSCFG_EXTICR1_EXTI1_Pos * (linepos & 0x03u)));
|
||||||
|
SYSCFG->EXTICR[linepos >> 2u] = regval;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Configure interrupt mode : read current mode */
|
||||||
|
/* Mask or set line */
|
||||||
|
if ((pExtiConfig->Mode & EXTI_MODE_INTERRUPT) != 0x00u)
|
||||||
|
{
|
||||||
|
EXTI->IMR |= maskline;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
regval = (uint32_t)EXTI_BASE;
|
EXTI->IMR &= ~maskline;
|
||||||
regval += pExtiConfig->Trigger;
|
|
||||||
*(__IO uint32_t *) regval |= pExtiConfig->Line;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* Configure event mode : read current mode */
|
||||||
|
/* Mask or set line */
|
||||||
|
if ((pExtiConfig->Mode & EXTI_MODE_EVENT) != 0x00u)
|
||||||
|
{
|
||||||
|
EXTI->EMR |= maskline;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
EXTI->EMR &= ~maskline;
|
||||||
|
}
|
||||||
|
|
||||||
return HAL_OK;
|
return HAL_OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -196,6 +237,10 @@ HAL_StatusTypeDef HAL_EXTI_SetConfigLine(EXTI_HandleTypeDef *hexti, EXTI_ConfigT
|
||||||
*/
|
*/
|
||||||
HAL_StatusTypeDef HAL_EXTI_GetConfigLine(EXTI_HandleTypeDef *hexti, EXTI_ConfigTypeDef *pExtiConfig)
|
HAL_StatusTypeDef HAL_EXTI_GetConfigLine(EXTI_HandleTypeDef *hexti, EXTI_ConfigTypeDef *pExtiConfig)
|
||||||
{
|
{
|
||||||
|
uint32_t regval;
|
||||||
|
uint32_t linepos;
|
||||||
|
uint32_t maskline;
|
||||||
|
|
||||||
/* Check null pointer */
|
/* Check null pointer */
|
||||||
if ((hexti == NULL) || (pExtiConfig == NULL))
|
if ((hexti == NULL) || (pExtiConfig == NULL))
|
||||||
{
|
{
|
||||||
|
@ -208,41 +253,67 @@ HAL_StatusTypeDef HAL_EXTI_GetConfigLine(EXTI_HandleTypeDef *hexti, EXTI_ConfigT
|
||||||
/* Store handle line number to configuration structure */
|
/* Store handle line number to configuration structure */
|
||||||
pExtiConfig->Line = hexti->Line;
|
pExtiConfig->Line = hexti->Line;
|
||||||
|
|
||||||
/* Get EXTI mode to configiguration structure */
|
/* Compute line mask */
|
||||||
if ((EXTI->IMR & hexti->Line) == hexti->Line)
|
linepos = (pExtiConfig->Line & EXTI_PIN_MASK);
|
||||||
|
maskline = (1uL << linepos);
|
||||||
|
|
||||||
|
/* 1] Get core mode : interrupt */
|
||||||
|
|
||||||
|
/* Check if selected line is enable */
|
||||||
|
if ((EXTI->IMR & maskline) != 0x00u)
|
||||||
{
|
{
|
||||||
pExtiConfig->Mode = EXTI_MODE_INTERRUPT;
|
pExtiConfig->Mode = EXTI_MODE_INTERRUPT;
|
||||||
}
|
}
|
||||||
else if ((EXTI->EMR & hexti->Line) == hexti->Line)
|
|
||||||
{
|
|
||||||
pExtiConfig->Mode = EXTI_MODE_EVENT;
|
|
||||||
}
|
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
/* No MODE selected */
|
pExtiConfig->Mode = EXTI_MODE_NONE;
|
||||||
pExtiConfig->Mode = 0x0Bu;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Get EXTI Trigger to configiguration structure */
|
/* Get event mode */
|
||||||
if ((EXTI->RTSR & hexti->Line) == hexti->Line)
|
/* Check if selected line is enable */
|
||||||
|
if ((EXTI->EMR & maskline) != 0x00u)
|
||||||
{
|
{
|
||||||
if ((EXTI->FTSR & hexti->Line) == hexti->Line)
|
pExtiConfig->Mode |= EXTI_MODE_EVENT;
|
||||||
{
|
}
|
||||||
pExtiConfig->Trigger = EXTI_TRIGGER_RISING_FALLING;
|
|
||||||
}
|
/* 2] Get trigger for configurable lines : rising */
|
||||||
else
|
if ((pExtiConfig->Line & EXTI_CONFIG) != 0x00u)
|
||||||
|
{
|
||||||
|
/* Check if configuration of selected line is enable */
|
||||||
|
if ((EXTI->RTSR & maskline) != 0x00u)
|
||||||
{
|
{
|
||||||
pExtiConfig->Trigger = EXTI_TRIGGER_RISING;
|
pExtiConfig->Trigger = EXTI_TRIGGER_RISING;
|
||||||
}
|
}
|
||||||
}
|
else
|
||||||
else if ((EXTI->FTSR & hexti->Line) == hexti->Line)
|
{
|
||||||
{
|
pExtiConfig->Trigger = EXTI_TRIGGER_NONE;
|
||||||
pExtiConfig->Trigger = EXTI_TRIGGER_FALLING;
|
}
|
||||||
|
|
||||||
|
/* Get falling configuration */
|
||||||
|
/* Check if configuration of selected line is enable */
|
||||||
|
if ((EXTI->FTSR & maskline) != 0x00u)
|
||||||
|
{
|
||||||
|
pExtiConfig->Trigger |= EXTI_TRIGGER_FALLING;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Get Gpio port selection for gpio lines */
|
||||||
|
if ((pExtiConfig->Line & EXTI_GPIO) == EXTI_GPIO)
|
||||||
|
{
|
||||||
|
assert_param(IS_EXTI_GPIO_PIN(linepos));
|
||||||
|
|
||||||
|
regval = SYSCFG->EXTICR[linepos >> 2u];
|
||||||
|
pExtiConfig->GPIOSel = ((regval << (SYSCFG_EXTICR1_EXTI1_Pos * (3uL - (linepos & 0x03u)))) >> 24);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
pExtiConfig->GPIOSel = 0x00u;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
/* No Trigger selected */
|
/* No Trigger selected */
|
||||||
pExtiConfig->Trigger = 0x00u;
|
pExtiConfig->Trigger = EXTI_TRIGGER_NONE;
|
||||||
|
pExtiConfig->GPIOSel = 0x00u;
|
||||||
}
|
}
|
||||||
|
|
||||||
return HAL_OK;
|
return HAL_OK;
|
||||||
|
@ -255,6 +326,10 @@ HAL_StatusTypeDef HAL_EXTI_GetConfigLine(EXTI_HandleTypeDef *hexti, EXTI_ConfigT
|
||||||
*/
|
*/
|
||||||
HAL_StatusTypeDef HAL_EXTI_ClearConfigLine(EXTI_HandleTypeDef *hexti)
|
HAL_StatusTypeDef HAL_EXTI_ClearConfigLine(EXTI_HandleTypeDef *hexti)
|
||||||
{
|
{
|
||||||
|
uint32_t regval;
|
||||||
|
uint32_t linepos;
|
||||||
|
uint32_t maskline;
|
||||||
|
|
||||||
/* Check null pointer */
|
/* Check null pointer */
|
||||||
if (hexti == NULL)
|
if (hexti == NULL)
|
||||||
{
|
{
|
||||||
|
@ -264,15 +339,32 @@ HAL_StatusTypeDef HAL_EXTI_ClearConfigLine(EXTI_HandleTypeDef *hexti)
|
||||||
/* Check the parameter */
|
/* Check the parameter */
|
||||||
assert_param(IS_EXTI_LINE(hexti->Line));
|
assert_param(IS_EXTI_LINE(hexti->Line));
|
||||||
|
|
||||||
|
/* compute line mask */
|
||||||
|
linepos = (hexti->Line & EXTI_PIN_MASK);
|
||||||
|
maskline = (1uL << linepos);
|
||||||
|
|
||||||
/* 1] Clear interrupt mode */
|
/* 1] Clear interrupt mode */
|
||||||
EXTI->IMR = (EXTI->IMR & ~hexti->Line);
|
EXTI->IMR = (EXTI->IMR & ~maskline);
|
||||||
|
|
||||||
/* 2] Clear event mode */
|
/* 2] Clear event mode */
|
||||||
EXTI->EMR = (EXTI->EMR & ~hexti->Line);
|
EXTI->EMR = (EXTI->EMR & ~maskline);
|
||||||
|
|
||||||
/* 3] Clear triggers */
|
/* 3] Clear triggers in case of configurable lines */
|
||||||
EXTI->RTSR = (EXTI->RTSR & ~hexti->Line);
|
if ((hexti->Line & EXTI_CONFIG) != 0x00u)
|
||||||
EXTI->FTSR = (EXTI->FTSR & ~hexti->Line);
|
{
|
||||||
|
EXTI->RTSR = (EXTI->RTSR & ~maskline);
|
||||||
|
EXTI->FTSR = (EXTI->FTSR & ~maskline);
|
||||||
|
|
||||||
|
/* Get Gpio port selection for gpio lines */
|
||||||
|
if ((hexti->Line & EXTI_GPIO) == EXTI_GPIO)
|
||||||
|
{
|
||||||
|
assert_param(IS_EXTI_GPIO_PIN(linepos));
|
||||||
|
|
||||||
|
regval = SYSCFG->EXTICR[linepos >> 2u];
|
||||||
|
regval &= ~(SYSCFG_EXTICR1_EXTI0 << (SYSCFG_EXTICR1_EXTI1_Pos * (linepos & 0x03u)));
|
||||||
|
SYSCFG->EXTICR[linepos >> 2u] = regval;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
return HAL_OK;
|
return HAL_OK;
|
||||||
}
|
}
|
||||||
|
@ -352,17 +444,18 @@ HAL_StatusTypeDef HAL_EXTI_GetHandle(EXTI_HandleTypeDef *hexti, uint32_t ExtiLin
|
||||||
*/
|
*/
|
||||||
void HAL_EXTI_IRQHandler(EXTI_HandleTypeDef *hexti)
|
void HAL_EXTI_IRQHandler(EXTI_HandleTypeDef *hexti)
|
||||||
{
|
{
|
||||||
__IO uint32_t *regaddr;
|
|
||||||
uint32_t regval;
|
uint32_t regval;
|
||||||
|
uint32_t maskline;
|
||||||
|
|
||||||
|
/* Compute line mask */
|
||||||
|
maskline = (1uL << (hexti->Line & EXTI_PIN_MASK));
|
||||||
|
|
||||||
/* Get pending bit */
|
/* Get pending bit */
|
||||||
regaddr = (&EXTI->PR);
|
regval = (EXTI->PR & maskline);
|
||||||
regval = (*regaddr & hexti->Line);
|
|
||||||
|
|
||||||
if (regval != 0x00u)
|
if (regval != 0x00u)
|
||||||
{
|
{
|
||||||
/* Clear pending bit */
|
/* Clear pending bit */
|
||||||
*regaddr = hexti->Line;
|
EXTI->PR = maskline;
|
||||||
|
|
||||||
/* Call callback */
|
/* Call callback */
|
||||||
if (hexti->PendingCallback != NULL)
|
if (hexti->PendingCallback != NULL)
|
||||||
|
@ -383,19 +476,21 @@ void HAL_EXTI_IRQHandler(EXTI_HandleTypeDef *hexti)
|
||||||
*/
|
*/
|
||||||
uint32_t HAL_EXTI_GetPending(EXTI_HandleTypeDef *hexti, uint32_t Edge)
|
uint32_t HAL_EXTI_GetPending(EXTI_HandleTypeDef *hexti, uint32_t Edge)
|
||||||
{
|
{
|
||||||
__IO uint32_t *regaddr;
|
|
||||||
uint32_t regval;
|
uint32_t regval;
|
||||||
|
uint32_t linepos;
|
||||||
|
uint32_t maskline;
|
||||||
|
|
||||||
/* Check parameters */
|
/* Check parameters */
|
||||||
assert_param(IS_EXTI_LINE(hexti->Line));
|
assert_param(IS_EXTI_LINE(hexti->Line));
|
||||||
|
assert_param(IS_EXTI_CONFIG_LINE(hexti->Line));
|
||||||
assert_param(IS_EXTI_PENDING_EDGE(Edge));
|
assert_param(IS_EXTI_PENDING_EDGE(Edge));
|
||||||
|
|
||||||
/* Get pending bit */
|
/* Compute line mask */
|
||||||
regaddr = &EXTI->PR;
|
linepos = (hexti->Line & EXTI_PIN_MASK);
|
||||||
|
maskline = (1uL << linepos);
|
||||||
|
|
||||||
/* return 1 if bit is set else 0 */
|
/* return 1 if bit is set else 0 */
|
||||||
regval = ((*regaddr & hexti->Line) >> POSITION_VAL(hexti->Line));
|
regval = ((EXTI->PR & maskline) >> linepos);
|
||||||
|
|
||||||
return regval;
|
return regval;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -410,12 +505,18 @@ uint32_t HAL_EXTI_GetPending(EXTI_HandleTypeDef *hexti, uint32_t Edge)
|
||||||
*/
|
*/
|
||||||
void HAL_EXTI_ClearPending(EXTI_HandleTypeDef *hexti, uint32_t Edge)
|
void HAL_EXTI_ClearPending(EXTI_HandleTypeDef *hexti, uint32_t Edge)
|
||||||
{
|
{
|
||||||
|
uint32_t maskline;
|
||||||
|
|
||||||
/* Check parameters */
|
/* Check parameters */
|
||||||
assert_param(IS_EXTI_LINE(hexti->Line));
|
assert_param(IS_EXTI_LINE(hexti->Line));
|
||||||
|
assert_param(IS_EXTI_CONFIG_LINE(hexti->Line));
|
||||||
assert_param(IS_EXTI_PENDING_EDGE(Edge));
|
assert_param(IS_EXTI_PENDING_EDGE(Edge));
|
||||||
|
|
||||||
|
/* Compute line mask */
|
||||||
|
maskline = (1uL << (hexti->Line & EXTI_PIN_MASK));
|
||||||
|
|
||||||
/* Clear Pending bit */
|
/* Clear Pending bit */
|
||||||
EXTI->PR = hexti->Line;
|
EXTI->PR = maskline;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -425,10 +526,17 @@ void HAL_EXTI_ClearPending(EXTI_HandleTypeDef *hexti, uint32_t Edge)
|
||||||
*/
|
*/
|
||||||
void HAL_EXTI_GenerateSWI(EXTI_HandleTypeDef *hexti)
|
void HAL_EXTI_GenerateSWI(EXTI_HandleTypeDef *hexti)
|
||||||
{
|
{
|
||||||
|
uint32_t maskline;
|
||||||
|
|
||||||
/* Check parameters */
|
/* Check parameters */
|
||||||
assert_param(IS_EXTI_LINE(hexti->Line));
|
assert_param(IS_EXTI_LINE(hexti->Line));
|
||||||
|
assert_param(IS_EXTI_CONFIG_LINE(hexti->Line));
|
||||||
|
|
||||||
EXTI->SWIER = hexti->Line;
|
/* Compute line mask */
|
||||||
|
maskline = (1uL << (hexti->Line & EXTI_PIN_MASK));
|
||||||
|
|
||||||
|
/* Generate Software interrupt */
|
||||||
|
EXTI->SWIER = maskline;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
|
@ -190,25 +190,6 @@ void HAL_GPIO_Init(GPIO_TypeDef *GPIOx, GPIO_InitTypeDef *GPIO_Init)
|
||||||
if(iocurrent == ioposition)
|
if(iocurrent == ioposition)
|
||||||
{
|
{
|
||||||
/*--------------------- GPIO Mode Configuration ------------------------*/
|
/*--------------------- GPIO Mode Configuration ------------------------*/
|
||||||
/* In case of Alternate function mode selection */
|
|
||||||
if((GPIO_Init->Mode == GPIO_MODE_AF_PP) || (GPIO_Init->Mode == GPIO_MODE_AF_OD))
|
|
||||||
{
|
|
||||||
/* Check the Alternate function parameter */
|
|
||||||
assert_param(IS_GPIO_AF(GPIO_Init->Alternate));
|
|
||||||
|
|
||||||
/* Configure Alternate function mapped with the current IO */
|
|
||||||
temp = GPIOx->AFR[position >> 3];
|
|
||||||
temp &= ~((uint32_t)0xF << ((uint32_t)(position & (uint32_t)0x07) * 4)) ;
|
|
||||||
temp |= ((uint32_t)(GPIO_Init->Alternate) << (((uint32_t)position & (uint32_t)0x07) * 4));
|
|
||||||
GPIOx->AFR[position >> 3] = temp;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Configure IO Direction mode (Input, Output, Alternate or Analog) */
|
|
||||||
temp = GPIOx->MODER;
|
|
||||||
temp &= ~(GPIO_MODER_MODER0 << (position * 2));
|
|
||||||
temp |= ((GPIO_Init->Mode & GPIO_MODE) << (position * 2));
|
|
||||||
GPIOx->MODER = temp;
|
|
||||||
|
|
||||||
/* In case of Output or Alternate function mode selection */
|
/* In case of Output or Alternate function mode selection */
|
||||||
if((GPIO_Init->Mode == GPIO_MODE_OUTPUT_PP) || (GPIO_Init->Mode == GPIO_MODE_AF_PP) ||
|
if((GPIO_Init->Mode == GPIO_MODE_OUTPUT_PP) || (GPIO_Init->Mode == GPIO_MODE_AF_PP) ||
|
||||||
(GPIO_Init->Mode == GPIO_MODE_OUTPUT_OD) || (GPIO_Init->Mode == GPIO_MODE_AF_OD))
|
(GPIO_Init->Mode == GPIO_MODE_OUTPUT_OD) || (GPIO_Init->Mode == GPIO_MODE_AF_OD))
|
||||||
|
@ -234,6 +215,25 @@ void HAL_GPIO_Init(GPIO_TypeDef *GPIOx, GPIO_InitTypeDef *GPIO_Init)
|
||||||
temp |= ((GPIO_Init->Pull) << (position * 2));
|
temp |= ((GPIO_Init->Pull) << (position * 2));
|
||||||
GPIOx->PUPDR = temp;
|
GPIOx->PUPDR = temp;
|
||||||
|
|
||||||
|
/* In case of Alternate function mode selection */
|
||||||
|
if((GPIO_Init->Mode == GPIO_MODE_AF_PP) || (GPIO_Init->Mode == GPIO_MODE_AF_OD))
|
||||||
|
{
|
||||||
|
/* Check the Alternate function parameter */
|
||||||
|
assert_param(IS_GPIO_AF(GPIO_Init->Alternate));
|
||||||
|
|
||||||
|
/* Configure Alternate function mapped with the current IO */
|
||||||
|
temp = GPIOx->AFR[position >> 3];
|
||||||
|
temp &= ~((uint32_t)0xF << ((uint32_t)(position & (uint32_t)0x07) * 4)) ;
|
||||||
|
temp |= ((uint32_t)(GPIO_Init->Alternate) << (((uint32_t)position & (uint32_t)0x07) * 4));
|
||||||
|
GPIOx->AFR[position >> 3] = temp;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Configure IO Direction mode (Input, Output, Alternate or Analog) */
|
||||||
|
temp = GPIOx->MODER;
|
||||||
|
temp &= ~(GPIO_MODER_MODER0 << (position * 2));
|
||||||
|
temp |= ((GPIO_Init->Mode & GPIO_MODE) << (position * 2));
|
||||||
|
GPIOx->MODER = temp;
|
||||||
|
|
||||||
/*--------------------- EXTI Mode Configuration ------------------------*/
|
/*--------------------- EXTI Mode Configuration ------------------------*/
|
||||||
/* Configure the External Interrupt or event for the current IO */
|
/* Configure the External Interrupt or event for the current IO */
|
||||||
if((GPIO_Init->Mode & EXTI_MODE) == EXTI_MODE)
|
if((GPIO_Init->Mode & EXTI_MODE) == EXTI_MODE)
|
||||||
|
@ -300,7 +300,7 @@ void HAL_GPIO_DeInit(GPIO_TypeDef *GPIOx, uint32_t GPIO_Pin)
|
||||||
|
|
||||||
/* Check the parameters */
|
/* Check the parameters */
|
||||||
assert_param(IS_GPIO_ALL_INSTANCE(GPIOx));
|
assert_param(IS_GPIO_ALL_INSTANCE(GPIOx));
|
||||||
|
|
||||||
/* Configure the port pins */
|
/* Configure the port pins */
|
||||||
for(position = 0; position < GPIO_NUMBER; position++)
|
for(position = 0; position < GPIO_NUMBER; position++)
|
||||||
{
|
{
|
||||||
|
@ -316,10 +316,6 @@ void HAL_GPIO_DeInit(GPIO_TypeDef *GPIOx, uint32_t GPIO_Pin)
|
||||||
tmp &= (((uint32_t)0x0F) << (4 * (position & 0x03)));
|
tmp &= (((uint32_t)0x0F) << (4 * (position & 0x03)));
|
||||||
if(tmp == ((uint32_t)(GPIO_GET_INDEX(GPIOx)) << (4 * (position & 0x03))))
|
if(tmp == ((uint32_t)(GPIO_GET_INDEX(GPIOx)) << (4 * (position & 0x03))))
|
||||||
{
|
{
|
||||||
/* Configure the External Interrupt or event for the current IO */
|
|
||||||
tmp = ((uint32_t)0x0F) << (4 * (position & 0x03));
|
|
||||||
SYSCFG->EXTICR[position >> 2] &= ~tmp;
|
|
||||||
|
|
||||||
/* Clear EXTI line configuration */
|
/* Clear EXTI line configuration */
|
||||||
EXTI->IMR &= ~((uint32_t)iocurrent);
|
EXTI->IMR &= ~((uint32_t)iocurrent);
|
||||||
EXTI->EMR &= ~((uint32_t)iocurrent);
|
EXTI->EMR &= ~((uint32_t)iocurrent);
|
||||||
|
@ -327,6 +323,10 @@ void HAL_GPIO_DeInit(GPIO_TypeDef *GPIOx, uint32_t GPIO_Pin)
|
||||||
/* Clear Rising Falling edge configuration */
|
/* Clear Rising Falling edge configuration */
|
||||||
EXTI->RTSR &= ~((uint32_t)iocurrent);
|
EXTI->RTSR &= ~((uint32_t)iocurrent);
|
||||||
EXTI->FTSR &= ~((uint32_t)iocurrent);
|
EXTI->FTSR &= ~((uint32_t)iocurrent);
|
||||||
|
|
||||||
|
/* Configure the External Interrupt or event for the current IO */
|
||||||
|
tmp = ((uint32_t)0x0F) << (4 * (position & 0x03));
|
||||||
|
SYSCFG->EXTICR[position >> 2] &= ~tmp;
|
||||||
}
|
}
|
||||||
/*------------------------- GPIO Mode Configuration --------------------*/
|
/*------------------------- GPIO Mode Configuration --------------------*/
|
||||||
/* Configure IO Direction in Input Floating Mode */
|
/* Configure IO Direction in Input Floating Mode */
|
||||||
|
@ -335,14 +335,14 @@ void HAL_GPIO_DeInit(GPIO_TypeDef *GPIOx, uint32_t GPIO_Pin)
|
||||||
/* Configure the default Alternate Function in current IO */
|
/* Configure the default Alternate Function in current IO */
|
||||||
GPIOx->AFR[position >> 3] &= ~((uint32_t)0xF << ((uint32_t)(position & (uint32_t)0x07) * 4)) ;
|
GPIOx->AFR[position >> 3] &= ~((uint32_t)0xF << ((uint32_t)(position & (uint32_t)0x07) * 4)) ;
|
||||||
|
|
||||||
/* Configure the default value for IO Speed */
|
/* Deactivate the Pull-up and Pull-down resistor for the current IO */
|
||||||
GPIOx->OSPEEDR &= ~(GPIO_OSPEEDER_OSPEEDR0 << (position * 2));
|
GPIOx->PUPDR &= ~(GPIO_PUPDR_PUPDR0 << (position * 2));
|
||||||
|
|
||||||
/* Configure the default value IO Output Type */
|
/* Configure the default value IO Output Type */
|
||||||
GPIOx->OTYPER &= ~(GPIO_OTYPER_OT_0 << position) ;
|
GPIOx->OTYPER &= ~(GPIO_OTYPER_OT_0 << position) ;
|
||||||
|
|
||||||
/* Deactivate the Pull-up and Pull-down resistor for the current IO */
|
/* Configure the default value for IO Speed */
|
||||||
GPIOx->PUPDR &= ~(GPIO_PUPDR_PUPDR0 << (position * 2));
|
GPIOx->OSPEEDR &= ~(GPIO_OSPEEDER_OSPEEDR0 << (position * 2));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -431,13 +431,13 @@ void HAL_GPIO_TogglePin(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin)
|
||||||
/* Check the parameters */
|
/* Check the parameters */
|
||||||
assert_param(IS_GPIO_PIN(GPIO_Pin));
|
assert_param(IS_GPIO_PIN(GPIO_Pin));
|
||||||
|
|
||||||
if ((GPIOx->ODR & GPIO_Pin) == GPIO_Pin)
|
if ((GPIOx->ODR & GPIO_Pin) != 0X00u)
|
||||||
{
|
{
|
||||||
GPIOx->BSRR = (uint32_t)GPIO_Pin << GPIO_NUMBER;
|
GPIOx->BSRR = (uint32_t)GPIO_Pin << GPIO_NUMBER;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
GPIOx->BSRR = GPIO_Pin;
|
GPIOx->BSRR = (uint32_t)GPIO_Pin;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -467,10 +467,11 @@ HAL_StatusTypeDef HAL_GPIO_LockPin(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin)
|
||||||
GPIOx->LCKR = GPIO_Pin;
|
GPIOx->LCKR = GPIO_Pin;
|
||||||
/* Set LCKx bit(s): LCKK='1' + LCK[15-0] */
|
/* Set LCKx bit(s): LCKK='1' + LCK[15-0] */
|
||||||
GPIOx->LCKR = tmp;
|
GPIOx->LCKR = tmp;
|
||||||
/* Read LCKK bit*/
|
/* Read LCKR register. This read is mandatory to complete key lock sequence */
|
||||||
tmp = GPIOx->LCKR;
|
tmp = GPIOx->LCKR;
|
||||||
|
|
||||||
if((GPIOx->LCKR & GPIO_LCKR_LCKK) != RESET)
|
/* Read again in order to confirm lock is active */
|
||||||
|
if((GPIOx->LCKR & GPIO_LCKR_LCKK) != RESET)
|
||||||
{
|
{
|
||||||
return HAL_OK;
|
return HAL_OK;
|
||||||
}
|
}
|
||||||
|
|
|
@ -223,12 +223,12 @@
|
||||||
|
|
||||||
*** Callback registration ***
|
*** Callback registration ***
|
||||||
=============================================
|
=============================================
|
||||||
|
[..]
|
||||||
The compilation flag USE_HAL_I2C_REGISTER_CALLBACKS when set to 1
|
The compilation flag USE_HAL_I2C_REGISTER_CALLBACKS when set to 1
|
||||||
allows the user to configure dynamically the driver callbacks.
|
allows the user to configure dynamically the driver callbacks.
|
||||||
Use Functions @ref HAL_I2C_RegisterCallback() or @ref HAL_I2C_RegisterAddrCallback()
|
Use Functions @ref HAL_I2C_RegisterCallback() or @ref HAL_I2C_RegisterAddrCallback()
|
||||||
to register an interrupt callback.
|
to register an interrupt callback.
|
||||||
|
[..]
|
||||||
Function @ref HAL_I2C_RegisterCallback() allows to register following callbacks:
|
Function @ref HAL_I2C_RegisterCallback() allows to register following callbacks:
|
||||||
(+) MasterTxCpltCallback : callback for Master transmission end of transfer.
|
(+) MasterTxCpltCallback : callback for Master transmission end of transfer.
|
||||||
(+) MasterRxCpltCallback : callback for Master reception end of transfer.
|
(+) MasterRxCpltCallback : callback for Master reception end of transfer.
|
||||||
|
@ -243,9 +243,9 @@
|
||||||
(+) MspDeInitCallback : callback for Msp DeInit.
|
(+) MspDeInitCallback : callback for Msp DeInit.
|
||||||
This function takes as parameters the HAL peripheral handle, the Callback ID
|
This function takes as parameters the HAL peripheral handle, the Callback ID
|
||||||
and a pointer to the user callback function.
|
and a pointer to the user callback function.
|
||||||
|
[..]
|
||||||
For specific callback AddrCallback use dedicated register callbacks : @ref HAL_I2C_RegisterAddrCallback().
|
For specific callback AddrCallback use dedicated register callbacks : @ref HAL_I2C_RegisterAddrCallback().
|
||||||
|
[..]
|
||||||
Use function @ref HAL_I2C_UnRegisterCallback to reset a callback to the default
|
Use function @ref HAL_I2C_UnRegisterCallback to reset a callback to the default
|
||||||
weak function.
|
weak function.
|
||||||
@ref HAL_I2C_UnRegisterCallback takes as parameters the HAL peripheral handle,
|
@ref HAL_I2C_UnRegisterCallback takes as parameters the HAL peripheral handle,
|
||||||
|
@ -262,9 +262,9 @@
|
||||||
(+) AbortCpltCallback : callback for abort completion process.
|
(+) AbortCpltCallback : callback for abort completion process.
|
||||||
(+) MspInitCallback : callback for Msp Init.
|
(+) MspInitCallback : callback for Msp Init.
|
||||||
(+) MspDeInitCallback : callback for Msp DeInit.
|
(+) MspDeInitCallback : callback for Msp DeInit.
|
||||||
|
[..]
|
||||||
For callback AddrCallback use dedicated register callbacks : @ref HAL_I2C_UnRegisterAddrCallback().
|
For callback AddrCallback use dedicated register callbacks : @ref HAL_I2C_UnRegisterAddrCallback().
|
||||||
|
[..]
|
||||||
By default, after the @ref HAL_I2C_Init() and when the state is @ref HAL_I2C_STATE_RESET
|
By default, after the @ref HAL_I2C_Init() and when the state is @ref HAL_I2C_STATE_RESET
|
||||||
all callbacks are set to the corresponding weak functions:
|
all callbacks are set to the corresponding weak functions:
|
||||||
examples @ref HAL_I2C_MasterTxCpltCallback(), @ref HAL_I2C_MasterRxCpltCallback().
|
examples @ref HAL_I2C_MasterTxCpltCallback(), @ref HAL_I2C_MasterRxCpltCallback().
|
||||||
|
@ -273,7 +273,7 @@
|
||||||
these callbacks are null (not registered beforehand).
|
these callbacks are null (not registered beforehand).
|
||||||
If MspInit or MspDeInit are not null, the @ref HAL_I2C_Init()/ @ref HAL_I2C_DeInit()
|
If MspInit or MspDeInit are not null, the @ref HAL_I2C_Init()/ @ref HAL_I2C_DeInit()
|
||||||
keep and use the user MspInit/MspDeInit callbacks (registered beforehand) whatever the state.
|
keep and use the user MspInit/MspDeInit callbacks (registered beforehand) whatever the state.
|
||||||
|
[..]
|
||||||
Callbacks can be registered/unregistered in @ref HAL_I2C_STATE_READY state only.
|
Callbacks can be registered/unregistered in @ref HAL_I2C_STATE_READY state only.
|
||||||
Exception done MspInit/MspDeInit functions that can be registered/unregistered
|
Exception done MspInit/MspDeInit functions that can be registered/unregistered
|
||||||
in @ref HAL_I2C_STATE_READY or @ref HAL_I2C_STATE_RESET state,
|
in @ref HAL_I2C_STATE_READY or @ref HAL_I2C_STATE_RESET state,
|
||||||
|
@ -281,7 +281,7 @@
|
||||||
Then, the user first registers the MspInit/MspDeInit user callbacks
|
Then, the user first registers the MspInit/MspDeInit user callbacks
|
||||||
using @ref HAL_I2C_RegisterCallback() before calling @ref HAL_I2C_DeInit()
|
using @ref HAL_I2C_RegisterCallback() before calling @ref HAL_I2C_DeInit()
|
||||||
or @ref HAL_I2C_Init() function.
|
or @ref HAL_I2C_Init() function.
|
||||||
|
[..]
|
||||||
When the compilation flag USE_HAL_I2C_REGISTER_CALLBACKS is set to 0 or
|
When the compilation flag USE_HAL_I2C_REGISTER_CALLBACKS is set to 0 or
|
||||||
not defined, the callback registration feature is not available and all callbacks
|
not defined, the callback registration feature is not available and all callbacks
|
||||||
are set to the corresponding weak functions.
|
are set to the corresponding weak functions.
|
||||||
|
@ -4737,6 +4737,13 @@ static HAL_StatusTypeDef I2C_Slave_ISR_IT(struct __I2C_HandleTypeDef *hi2c, uint
|
||||||
/* Process locked */
|
/* Process locked */
|
||||||
__HAL_LOCK(hi2c);
|
__HAL_LOCK(hi2c);
|
||||||
|
|
||||||
|
/* Check if STOPF is set */
|
||||||
|
if ((I2C_CHECK_FLAG(tmpITFlags, I2C_FLAG_STOPF) != RESET) && (I2C_CHECK_IT_SOURCE(ITSources, I2C_IT_STOPI) != RESET))
|
||||||
|
{
|
||||||
|
/* Call I2C Slave complete process */
|
||||||
|
I2C_ITSlaveCplt(hi2c, tmpITFlags);
|
||||||
|
}
|
||||||
|
|
||||||
if ((I2C_CHECK_FLAG(tmpITFlags, I2C_FLAG_AF) != RESET) && (I2C_CHECK_IT_SOURCE(ITSources, I2C_IT_NACKI) != RESET))
|
if ((I2C_CHECK_FLAG(tmpITFlags, I2C_FLAG_AF) != RESET) && (I2C_CHECK_IT_SOURCE(ITSources, I2C_IT_NACKI) != RESET))
|
||||||
{
|
{
|
||||||
/* Check that I2C transfer finished */
|
/* Check that I2C transfer finished */
|
||||||
|
@ -4788,9 +4795,6 @@ static HAL_StatusTypeDef I2C_Slave_ISR_IT(struct __I2C_HandleTypeDef *hi2c, uint
|
||||||
{
|
{
|
||||||
if (hi2c->XferCount > 0U)
|
if (hi2c->XferCount > 0U)
|
||||||
{
|
{
|
||||||
/* Remove RXNE flag on temporary variable as read done */
|
|
||||||
tmpITFlags &= ~I2C_FLAG_RXNE;
|
|
||||||
|
|
||||||
/* Read data from RXDR */
|
/* Read data from RXDR */
|
||||||
*hi2c->pBuffPtr = (uint8_t)hi2c->Instance->RXDR;
|
*hi2c->pBuffPtr = (uint8_t)hi2c->Instance->RXDR;
|
||||||
|
|
||||||
|
@ -4844,13 +4848,6 @@ static HAL_StatusTypeDef I2C_Slave_ISR_IT(struct __I2C_HandleTypeDef *hi2c, uint
|
||||||
/* Nothing to do */
|
/* Nothing to do */
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Check if STOPF is set */
|
|
||||||
if ((I2C_CHECK_FLAG(tmpITFlags, I2C_FLAG_STOPF) != RESET) && (I2C_CHECK_IT_SOURCE(ITSources, I2C_IT_STOPI) != RESET))
|
|
||||||
{
|
|
||||||
/* Call I2C Slave complete process */
|
|
||||||
I2C_ITSlaveCplt(hi2c, tmpITFlags);
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Process Unlocked */
|
/* Process Unlocked */
|
||||||
__HAL_UNLOCK(hi2c);
|
__HAL_UNLOCK(hi2c);
|
||||||
|
|
||||||
|
@ -5008,6 +5005,13 @@ static HAL_StatusTypeDef I2C_Slave_ISR_DMA(struct __I2C_HandleTypeDef *hi2c, uin
|
||||||
/* Process locked */
|
/* Process locked */
|
||||||
__HAL_LOCK(hi2c);
|
__HAL_LOCK(hi2c);
|
||||||
|
|
||||||
|
/* Check if STOPF is set */
|
||||||
|
if ((I2C_CHECK_FLAG(ITFlags, I2C_FLAG_STOPF) != RESET) && (I2C_CHECK_IT_SOURCE(ITSources, I2C_IT_STOPI) != RESET))
|
||||||
|
{
|
||||||
|
/* Call I2C Slave complete process */
|
||||||
|
I2C_ITSlaveCplt(hi2c, ITFlags);
|
||||||
|
}
|
||||||
|
|
||||||
if ((I2C_CHECK_FLAG(ITFlags, I2C_FLAG_AF) != RESET) && (I2C_CHECK_IT_SOURCE(ITSources, I2C_IT_NACKI) != RESET))
|
if ((I2C_CHECK_FLAG(ITFlags, I2C_FLAG_AF) != RESET) && (I2C_CHECK_IT_SOURCE(ITSources, I2C_IT_NACKI) != RESET))
|
||||||
{
|
{
|
||||||
/* Check that I2C transfer finished */
|
/* Check that I2C transfer finished */
|
||||||
|
@ -5092,11 +5096,6 @@ static HAL_StatusTypeDef I2C_Slave_ISR_DMA(struct __I2C_HandleTypeDef *hi2c, uin
|
||||||
{
|
{
|
||||||
I2C_ITAddrCplt(hi2c, ITFlags);
|
I2C_ITAddrCplt(hi2c, ITFlags);
|
||||||
}
|
}
|
||||||
else if ((I2C_CHECK_FLAG(ITFlags, I2C_FLAG_STOPF) != RESET) && (I2C_CHECK_IT_SOURCE(ITSources, I2C_IT_STOPI) != RESET))
|
|
||||||
{
|
|
||||||
/* Call I2C Slave complete process */
|
|
||||||
I2C_ITSlaveCplt(hi2c, ITFlags);
|
|
||||||
}
|
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
/* Nothing to do */
|
/* Nothing to do */
|
||||||
|
|
|
@ -122,6 +122,7 @@ static HAL_StatusTypeDef PCD_EP_OutSetupPacket_int(PCD_HandleTypeDef *hpcd, uint
|
||||||
*/
|
*/
|
||||||
HAL_StatusTypeDef HAL_PCD_Init(PCD_HandleTypeDef *hpcd)
|
HAL_StatusTypeDef HAL_PCD_Init(PCD_HandleTypeDef *hpcd)
|
||||||
{
|
{
|
||||||
|
USB_OTG_GlobalTypeDef *USBx;
|
||||||
uint8_t i;
|
uint8_t i;
|
||||||
|
|
||||||
/* Check the PCD handle allocation */
|
/* Check the PCD handle allocation */
|
||||||
|
@ -133,6 +134,8 @@ HAL_StatusTypeDef HAL_PCD_Init(PCD_HandleTypeDef *hpcd)
|
||||||
/* Check the parameters */
|
/* Check the parameters */
|
||||||
assert_param(IS_PCD_ALL_INSTANCE(hpcd->Instance));
|
assert_param(IS_PCD_ALL_INSTANCE(hpcd->Instance));
|
||||||
|
|
||||||
|
USBx = hpcd->Instance;
|
||||||
|
|
||||||
if (hpcd->State == HAL_PCD_STATE_RESET)
|
if (hpcd->State == HAL_PCD_STATE_RESET)
|
||||||
{
|
{
|
||||||
/* Allocate lock resource and initialize it */
|
/* Allocate lock resource and initialize it */
|
||||||
|
@ -166,6 +169,12 @@ HAL_StatusTypeDef HAL_PCD_Init(PCD_HandleTypeDef *hpcd)
|
||||||
|
|
||||||
hpcd->State = HAL_PCD_STATE_BUSY;
|
hpcd->State = HAL_PCD_STATE_BUSY;
|
||||||
|
|
||||||
|
/* Disable DMA mode for FS instance */
|
||||||
|
if ((USBx->CID & (0x1U << 8)) == 0U)
|
||||||
|
{
|
||||||
|
hpcd->Init.dma_enable = 0U;
|
||||||
|
}
|
||||||
|
|
||||||
/* Disable the Interrupts */
|
/* Disable the Interrupts */
|
||||||
__HAL_PCD_DISABLE(hpcd);
|
__HAL_PCD_DISABLE(hpcd);
|
||||||
|
|
||||||
|
@ -943,7 +952,7 @@ void HAL_PCD_IRQHandler(PCD_HandleTypeDef *hpcd)
|
||||||
{
|
{
|
||||||
USB_OTG_GlobalTypeDef *USBx = hpcd->Instance;
|
USB_OTG_GlobalTypeDef *USBx = hpcd->Instance;
|
||||||
uint32_t USBx_BASE = (uint32_t)USBx;
|
uint32_t USBx_BASE = (uint32_t)USBx;
|
||||||
uint32_t i, ep_intr, epint, epnum = 0U;
|
uint32_t i, ep_intr, epint, epnum;
|
||||||
uint32_t fifoemptymsk, temp;
|
uint32_t fifoemptymsk, temp;
|
||||||
USB_OTG_EPTypeDef *ep;
|
USB_OTG_EPTypeDef *ep;
|
||||||
|
|
||||||
|
@ -962,6 +971,38 @@ void HAL_PCD_IRQHandler(PCD_HandleTypeDef *hpcd)
|
||||||
__HAL_PCD_CLEAR_FLAG(hpcd, USB_OTG_GINTSTS_MMIS);
|
__HAL_PCD_CLEAR_FLAG(hpcd, USB_OTG_GINTSTS_MMIS);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* Handle RxQLevel Interrupt */
|
||||||
|
if (__HAL_PCD_GET_FLAG(hpcd, USB_OTG_GINTSTS_RXFLVL))
|
||||||
|
{
|
||||||
|
USB_MASK_INTERRUPT(hpcd->Instance, USB_OTG_GINTSTS_RXFLVL);
|
||||||
|
|
||||||
|
temp = USBx->GRXSTSP;
|
||||||
|
|
||||||
|
ep = &hpcd->OUT_ep[temp & USB_OTG_GRXSTSP_EPNUM];
|
||||||
|
|
||||||
|
if (((temp & USB_OTG_GRXSTSP_PKTSTS) >> 17) == STS_DATA_UPDT)
|
||||||
|
{
|
||||||
|
if ((temp & USB_OTG_GRXSTSP_BCNT) != 0U)
|
||||||
|
{
|
||||||
|
(void)USB_ReadPacket(USBx, ep->xfer_buff,
|
||||||
|
(uint16_t)((temp & USB_OTG_GRXSTSP_BCNT) >> 4));
|
||||||
|
|
||||||
|
ep->xfer_buff += (temp & USB_OTG_GRXSTSP_BCNT) >> 4;
|
||||||
|
ep->xfer_count += (temp & USB_OTG_GRXSTSP_BCNT) >> 4;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else if (((temp & USB_OTG_GRXSTSP_PKTSTS) >> 17) == STS_SETUP_UPDT)
|
||||||
|
{
|
||||||
|
(void)USB_ReadPacket(USBx, (uint8_t *)hpcd->Setup, 8U);
|
||||||
|
ep->xfer_count += (temp & USB_OTG_GRXSTSP_BCNT) >> 4;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
/* ... */
|
||||||
|
}
|
||||||
|
USB_UNMASK_INTERRUPT(hpcd->Instance, USB_OTG_GINTSTS_RXFLVL);
|
||||||
|
}
|
||||||
|
|
||||||
if (__HAL_PCD_GET_FLAG(hpcd, USB_OTG_GINTSTS_OEPINT))
|
if (__HAL_PCD_GET_FLAG(hpcd, USB_OTG_GINTSTS_OEPINT))
|
||||||
{
|
{
|
||||||
epnum = 0U;
|
epnum = 0U;
|
||||||
|
@ -983,9 +1024,9 @@ void HAL_PCD_IRQHandler(PCD_HandleTypeDef *hpcd)
|
||||||
|
|
||||||
if ((epint & USB_OTG_DOEPINT_STUP) == USB_OTG_DOEPINT_STUP)
|
if ((epint & USB_OTG_DOEPINT_STUP) == USB_OTG_DOEPINT_STUP)
|
||||||
{
|
{
|
||||||
|
CLEAR_OUT_EP_INTR(epnum, USB_OTG_DOEPINT_STUP);
|
||||||
/* Class B setup phase done for previous decoded setup */
|
/* Class B setup phase done for previous decoded setup */
|
||||||
(void)PCD_EP_OutSetupPacket_int(hpcd, epnum);
|
(void)PCD_EP_OutSetupPacket_int(hpcd, epnum);
|
||||||
CLEAR_OUT_EP_INTR(epnum, USB_OTG_DOEPINT_STUP);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if ((epint & USB_OTG_DOEPINT_OTEPDIS) == USB_OTG_DOEPINT_OTEPDIS)
|
if ((epint & USB_OTG_DOEPINT_OTEPDIS) == USB_OTG_DOEPINT_OTEPDIS)
|
||||||
|
@ -996,10 +1037,6 @@ void HAL_PCD_IRQHandler(PCD_HandleTypeDef *hpcd)
|
||||||
/* Clear Status Phase Received interrupt */
|
/* Clear Status Phase Received interrupt */
|
||||||
if ((epint & USB_OTG_DOEPINT_OTEPSPR) == USB_OTG_DOEPINT_OTEPSPR)
|
if ((epint & USB_OTG_DOEPINT_OTEPSPR) == USB_OTG_DOEPINT_OTEPSPR)
|
||||||
{
|
{
|
||||||
if (hpcd->Init.dma_enable == 1U)
|
|
||||||
{
|
|
||||||
(void)USB_EP0_OutStart(hpcd->Instance, 1U, (uint8_t *)hpcd->Setup);
|
|
||||||
}
|
|
||||||
CLEAR_OUT_EP_INTR(epnum, USB_OTG_DOEPINT_OTEPSPR);
|
CLEAR_OUT_EP_INTR(epnum, USB_OTG_DOEPINT_OTEPSPR);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1037,16 +1074,7 @@ void HAL_PCD_IRQHandler(PCD_HandleTypeDef *hpcd)
|
||||||
if (hpcd->Init.dma_enable == 1U)
|
if (hpcd->Init.dma_enable == 1U)
|
||||||
{
|
{
|
||||||
hpcd->IN_ep[epnum].xfer_buff += hpcd->IN_ep[epnum].maxpacket;
|
hpcd->IN_ep[epnum].xfer_buff += hpcd->IN_ep[epnum].maxpacket;
|
||||||
}
|
|
||||||
|
|
||||||
#if (USE_HAL_PCD_REGISTER_CALLBACKS == 1U)
|
|
||||||
hpcd->DataInStageCallback(hpcd, (uint8_t)epnum);
|
|
||||||
#else
|
|
||||||
HAL_PCD_DataInStageCallback(hpcd, (uint8_t)epnum);
|
|
||||||
#endif /* USE_HAL_PCD_REGISTER_CALLBACKS */
|
|
||||||
|
|
||||||
if (hpcd->Init.dma_enable == 1U)
|
|
||||||
{
|
|
||||||
/* this is ZLP, so prepare EP0 for next setup */
|
/* this is ZLP, so prepare EP0 for next setup */
|
||||||
if ((epnum == 0U) && (hpcd->IN_ep[epnum].xfer_len == 0U))
|
if ((epnum == 0U) && (hpcd->IN_ep[epnum].xfer_len == 0U))
|
||||||
{
|
{
|
||||||
|
@ -1054,6 +1082,12 @@ void HAL_PCD_IRQHandler(PCD_HandleTypeDef *hpcd)
|
||||||
(void)USB_EP0_OutStart(hpcd->Instance, 1U, (uint8_t *)hpcd->Setup);
|
(void)USB_EP0_OutStart(hpcd->Instance, 1U, (uint8_t *)hpcd->Setup);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#if (USE_HAL_PCD_REGISTER_CALLBACKS == 1U)
|
||||||
|
hpcd->DataInStageCallback(hpcd, (uint8_t)epnum);
|
||||||
|
#else
|
||||||
|
HAL_PCD_DataInStageCallback(hpcd, (uint8_t)epnum);
|
||||||
|
#endif /* USE_HAL_PCD_REGISTER_CALLBACKS */
|
||||||
}
|
}
|
||||||
if ((epint & USB_OTG_DIEPINT_TOC) == USB_OTG_DIEPINT_TOC)
|
if ((epint & USB_OTG_DIEPINT_TOC) == USB_OTG_DIEPINT_TOC)
|
||||||
{
|
{
|
||||||
|
@ -1159,8 +1193,10 @@ void HAL_PCD_IRQHandler(PCD_HandleTypeDef *hpcd)
|
||||||
{
|
{
|
||||||
USBx_INEP(i)->DIEPINT = 0xFB7FU;
|
USBx_INEP(i)->DIEPINT = 0xFB7FU;
|
||||||
USBx_INEP(i)->DIEPCTL &= ~USB_OTG_DIEPCTL_STALL;
|
USBx_INEP(i)->DIEPCTL &= ~USB_OTG_DIEPCTL_STALL;
|
||||||
|
USBx_INEP(i)->DIEPCTL |= USB_OTG_DIEPCTL_SNAK;
|
||||||
USBx_OUTEP(i)->DOEPINT = 0xFB7FU;
|
USBx_OUTEP(i)->DOEPINT = 0xFB7FU;
|
||||||
USBx_OUTEP(i)->DOEPCTL &= ~USB_OTG_DOEPCTL_STALL;
|
USBx_OUTEP(i)->DOEPCTL &= ~USB_OTG_DOEPCTL_STALL;
|
||||||
|
USBx_OUTEP(i)->DOEPCTL |= USB_OTG_DOEPCTL_SNAK;
|
||||||
}
|
}
|
||||||
USBx_DEVICE->DAINTMSK |= 0x10001U;
|
USBx_DEVICE->DAINTMSK |= 0x10001U;
|
||||||
|
|
||||||
|
@ -1217,38 +1253,6 @@ void HAL_PCD_IRQHandler(PCD_HandleTypeDef *hpcd)
|
||||||
__HAL_PCD_CLEAR_FLAG(hpcd, USB_OTG_GINTSTS_ENUMDNE);
|
__HAL_PCD_CLEAR_FLAG(hpcd, USB_OTG_GINTSTS_ENUMDNE);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Handle RxQLevel Interrupt */
|
|
||||||
if (__HAL_PCD_GET_FLAG(hpcd, USB_OTG_GINTSTS_RXFLVL))
|
|
||||||
{
|
|
||||||
USB_MASK_INTERRUPT(hpcd->Instance, USB_OTG_GINTSTS_RXFLVL);
|
|
||||||
|
|
||||||
temp = USBx->GRXSTSP;
|
|
||||||
|
|
||||||
ep = &hpcd->OUT_ep[temp & USB_OTG_GRXSTSP_EPNUM];
|
|
||||||
|
|
||||||
if (((temp & USB_OTG_GRXSTSP_PKTSTS) >> 17) == STS_DATA_UPDT)
|
|
||||||
{
|
|
||||||
if ((temp & USB_OTG_GRXSTSP_BCNT) != 0U)
|
|
||||||
{
|
|
||||||
(void)USB_ReadPacket(USBx, ep->xfer_buff,
|
|
||||||
(uint16_t)((temp & USB_OTG_GRXSTSP_BCNT) >> 4));
|
|
||||||
|
|
||||||
ep->xfer_buff += (temp & USB_OTG_GRXSTSP_BCNT) >> 4;
|
|
||||||
ep->xfer_count += (temp & USB_OTG_GRXSTSP_BCNT) >> 4;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else if (((temp & USB_OTG_GRXSTSP_PKTSTS) >> 17) == STS_SETUP_UPDT)
|
|
||||||
{
|
|
||||||
(void)USB_ReadPacket(USBx, (uint8_t *)hpcd->Setup, 8U);
|
|
||||||
ep->xfer_count += (temp & USB_OTG_GRXSTSP_BCNT) >> 4;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
/* ... */
|
|
||||||
}
|
|
||||||
USB_UNMASK_INTERRUPT(hpcd->Instance, USB_OTG_GINTSTS_RXFLVL);
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Handle SOF Interrupt */
|
/* Handle SOF Interrupt */
|
||||||
if (__HAL_PCD_GET_FLAG(hpcd, USB_OTG_GINTSTS_SOF))
|
if (__HAL_PCD_GET_FLAG(hpcd, USB_OTG_GINTSTS_SOF))
|
||||||
{
|
{
|
||||||
|
@ -1264,6 +1268,10 @@ void HAL_PCD_IRQHandler(PCD_HandleTypeDef *hpcd)
|
||||||
/* Handle Incomplete ISO IN Interrupt */
|
/* Handle Incomplete ISO IN Interrupt */
|
||||||
if (__HAL_PCD_GET_FLAG(hpcd, USB_OTG_GINTSTS_IISOIXFR))
|
if (__HAL_PCD_GET_FLAG(hpcd, USB_OTG_GINTSTS_IISOIXFR))
|
||||||
{
|
{
|
||||||
|
/* Keep application checking the corresponding Iso IN endpoint
|
||||||
|
causing the incomplete Interrupt */
|
||||||
|
epnum = 0U;
|
||||||
|
|
||||||
#if (USE_HAL_PCD_REGISTER_CALLBACKS == 1U)
|
#if (USE_HAL_PCD_REGISTER_CALLBACKS == 1U)
|
||||||
hpcd->ISOINIncompleteCallback(hpcd, (uint8_t)epnum);
|
hpcd->ISOINIncompleteCallback(hpcd, (uint8_t)epnum);
|
||||||
#else
|
#else
|
||||||
|
@ -1276,6 +1284,10 @@ void HAL_PCD_IRQHandler(PCD_HandleTypeDef *hpcd)
|
||||||
/* Handle Incomplete ISO OUT Interrupt */
|
/* Handle Incomplete ISO OUT Interrupt */
|
||||||
if (__HAL_PCD_GET_FLAG(hpcd, USB_OTG_GINTSTS_PXFR_INCOMPISOOUT))
|
if (__HAL_PCD_GET_FLAG(hpcd, USB_OTG_GINTSTS_PXFR_INCOMPISOOUT))
|
||||||
{
|
{
|
||||||
|
/* Keep application checking the corresponding Iso OUT endpoint
|
||||||
|
causing the incomplete Interrupt */
|
||||||
|
epnum = 0U;
|
||||||
|
|
||||||
#if (USE_HAL_PCD_REGISTER_CALLBACKS == 1U)
|
#if (USE_HAL_PCD_REGISTER_CALLBACKS == 1U)
|
||||||
hpcd->ISOOUTIncompleteCallback(hpcd, (uint8_t)epnum);
|
hpcd->ISOOUTIncompleteCallback(hpcd, (uint8_t)epnum);
|
||||||
#else
|
#else
|
||||||
|
@ -1955,16 +1967,6 @@ static HAL_StatusTypeDef PCD_EP_OutXfrComplete_int(PCD_HandleTypeDef *hpcd, uint
|
||||||
{
|
{
|
||||||
CLEAR_OUT_EP_INTR(epnum, USB_OTG_DOEPINT_STPKTRX);
|
CLEAR_OUT_EP_INTR(epnum, USB_OTG_DOEPINT_STPKTRX);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Inform the upper layer that a setup packet is available */
|
|
||||||
#if (USE_HAL_PCD_REGISTER_CALLBACKS == 1U)
|
|
||||||
hpcd->SetupStageCallback(hpcd);
|
|
||||||
#else
|
|
||||||
HAL_PCD_SetupStageCallback(hpcd);
|
|
||||||
#endif /* USE_HAL_PCD_REGISTER_CALLBACKS */
|
|
||||||
|
|
||||||
(void)USB_EP0_OutStart(hpcd->Instance, 1U, (uint8_t *)hpcd->Setup);
|
|
||||||
CLEAR_OUT_EP_INTR(epnum, USB_OTG_DOEPINT_STUP);
|
|
||||||
}
|
}
|
||||||
else if ((DoepintReg & USB_OTG_DOEPINT_OTEPSPR) == USB_OTG_DOEPINT_OTEPSPR) /* Class E */
|
else if ((DoepintReg & USB_OTG_DOEPINT_OTEPSPR) == USB_OTG_DOEPINT_OTEPSPR) /* Class E */
|
||||||
{
|
{
|
||||||
|
@ -1987,17 +1989,16 @@ static HAL_StatusTypeDef PCD_EP_OutXfrComplete_int(PCD_HandleTypeDef *hpcd, uint
|
||||||
|
|
||||||
hpcd->OUT_ep[epnum].xfer_buff += hpcd->OUT_ep[epnum].maxpacket;
|
hpcd->OUT_ep[epnum].xfer_buff += hpcd->OUT_ep[epnum].maxpacket;
|
||||||
|
|
||||||
#if (USE_HAL_PCD_REGISTER_CALLBACKS == 1U)
|
|
||||||
hpcd->DataOutStageCallback(hpcd, (uint8_t)epnum);
|
|
||||||
#else
|
|
||||||
HAL_PCD_DataOutStageCallback(hpcd, (uint8_t)epnum);
|
|
||||||
#endif /* USE_HAL_PCD_REGISTER_CALLBACKS */
|
|
||||||
|
|
||||||
if ((epnum == 0U) && (hpcd->OUT_ep[epnum].xfer_len == 0U))
|
if ((epnum == 0U) && (hpcd->OUT_ep[epnum].xfer_len == 0U))
|
||||||
{
|
{
|
||||||
/* this is ZLP, so prepare EP0 for next setup */
|
/* this is ZLP, so prepare EP0 for next setup */
|
||||||
(void)USB_EP0_OutStart(hpcd->Instance, 1U, (uint8_t *)hpcd->Setup);
|
(void)USB_EP0_OutStart(hpcd->Instance, 1U, (uint8_t *)hpcd->Setup);
|
||||||
}
|
}
|
||||||
|
#if (USE_HAL_PCD_REGISTER_CALLBACKS == 1U)
|
||||||
|
hpcd->DataOutStageCallback(hpcd, (uint8_t)epnum);
|
||||||
|
#else
|
||||||
|
HAL_PCD_DataOutStageCallback(hpcd, (uint8_t)epnum);
|
||||||
|
#endif /* USE_HAL_PCD_REGISTER_CALLBACKS */
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
@ -2030,6 +2031,12 @@ static HAL_StatusTypeDef PCD_EP_OutXfrComplete_int(PCD_HandleTypeDef *hpcd, uint
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
if ((epnum == 0U) && (hpcd->OUT_ep[epnum].xfer_len == 0U))
|
||||||
|
{
|
||||||
|
/* this is ZLP, so prepare EP0 for next setup */
|
||||||
|
(void)USB_EP0_OutStart(hpcd->Instance, 0U, (uint8_t *)hpcd->Setup);
|
||||||
|
}
|
||||||
|
|
||||||
#if (USE_HAL_PCD_REGISTER_CALLBACKS == 1U)
|
#if (USE_HAL_PCD_REGISTER_CALLBACKS == 1U)
|
||||||
hpcd->DataOutStageCallback(hpcd, (uint8_t)epnum);
|
hpcd->DataOutStageCallback(hpcd, (uint8_t)epnum);
|
||||||
#else
|
#else
|
||||||
|
@ -2055,22 +2062,10 @@ static HAL_StatusTypeDef PCD_EP_OutSetupPacket_int(PCD_HandleTypeDef *hpcd, uint
|
||||||
uint32_t gSNPSiD = *(__IO uint32_t *)(&USBx->CID + 0x1U);
|
uint32_t gSNPSiD = *(__IO uint32_t *)(&USBx->CID + 0x1U);
|
||||||
uint32_t DoepintReg = USBx_OUTEP(epnum)->DOEPINT;
|
uint32_t DoepintReg = USBx_OUTEP(epnum)->DOEPINT;
|
||||||
|
|
||||||
if (hpcd->Init.dma_enable == 1U)
|
if ((gSNPSiD > USB_OTG_CORE_ID_300A) &&
|
||||||
|
((DoepintReg & USB_OTG_DOEPINT_STPKTRX) == USB_OTG_DOEPINT_STPKTRX))
|
||||||
{
|
{
|
||||||
/* StupPktRcvd = 1 pending setup packet int */
|
CLEAR_OUT_EP_INTR(epnum, USB_OTG_DOEPINT_STPKTRX);
|
||||||
if ((gSNPSiD > USB_OTG_CORE_ID_300A) &&
|
|
||||||
((DoepintReg & USB_OTG_DOEPINT_STPKTRX) == USB_OTG_DOEPINT_STPKTRX))
|
|
||||||
{
|
|
||||||
CLEAR_OUT_EP_INTR(epnum, USB_OTG_DOEPINT_STPKTRX);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
if ((gSNPSiD == USB_OTG_CORE_ID_310A) &&
|
|
||||||
((DoepintReg & USB_OTG_DOEPINT_STPKTRX) == USB_OTG_DOEPINT_STPKTRX))
|
|
||||||
{
|
|
||||||
CLEAR_OUT_EP_INTR(epnum, USB_OTG_DOEPINT_STPKTRX);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Inform the upper layer that a setup packet is available */
|
/* Inform the upper layer that a setup packet is available */
|
||||||
|
|
|
@ -317,7 +317,7 @@ HAL_StatusTypeDef HAL_RCC_DeInit(void)
|
||||||
SystemCoreClock = HSI_VALUE;
|
SystemCoreClock = HSI_VALUE;
|
||||||
|
|
||||||
/* Adapt Systick interrupt period */
|
/* Adapt Systick interrupt period */
|
||||||
if(HAL_InitTick(TICK_INT_PRIORITY) != HAL_OK)
|
if (HAL_InitTick(uwTickPrio) != HAL_OK)
|
||||||
{
|
{
|
||||||
return HAL_ERROR;
|
return HAL_ERROR;
|
||||||
}
|
}
|
||||||
|
@ -344,10 +344,11 @@ HAL_StatusTypeDef HAL_RCC_DeInit(void)
|
||||||
HAL_StatusTypeDef HAL_RCC_OscConfig(RCC_OscInitTypeDef *RCC_OscInitStruct)
|
HAL_StatusTypeDef HAL_RCC_OscConfig(RCC_OscInitTypeDef *RCC_OscInitStruct)
|
||||||
{
|
{
|
||||||
uint32_t tickstart;
|
uint32_t tickstart;
|
||||||
|
uint32_t pll_config;
|
||||||
FlagStatus pwrclkchanged = RESET;
|
FlagStatus pwrclkchanged = RESET;
|
||||||
|
|
||||||
/* Check Null pointer */
|
/* Check Null pointer */
|
||||||
if(RCC_OscInitStruct == NULL)
|
if (RCC_OscInitStruct == NULL)
|
||||||
{
|
{
|
||||||
return HAL_ERROR;
|
return HAL_ERROR;
|
||||||
}
|
}
|
||||||
|
@ -356,15 +357,15 @@ HAL_StatusTypeDef HAL_RCC_OscConfig(RCC_OscInitTypeDef *RCC_OscInitStruct)
|
||||||
assert_param(IS_RCC_OSCILLATORTYPE(RCC_OscInitStruct->OscillatorType));
|
assert_param(IS_RCC_OSCILLATORTYPE(RCC_OscInitStruct->OscillatorType));
|
||||||
|
|
||||||
/*------------------------------- HSE Configuration ------------------------*/
|
/*------------------------------- HSE Configuration ------------------------*/
|
||||||
if(((RCC_OscInitStruct->OscillatorType) & RCC_OSCILLATORTYPE_HSE) == RCC_OSCILLATORTYPE_HSE)
|
if (((RCC_OscInitStruct->OscillatorType) & RCC_OSCILLATORTYPE_HSE) == RCC_OSCILLATORTYPE_HSE)
|
||||||
{
|
{
|
||||||
/* Check the parameters */
|
/* Check the parameters */
|
||||||
assert_param(IS_RCC_HSE(RCC_OscInitStruct->HSEState));
|
assert_param(IS_RCC_HSE(RCC_OscInitStruct->HSEState));
|
||||||
/* When the HSE is used as system clock or clock source for PLL, It can not be disabled */
|
/* When the HSE is used as system clock or clock source for PLL, It can not be disabled */
|
||||||
if((__HAL_RCC_GET_SYSCLK_SOURCE() == RCC_SYSCLKSOURCE_STATUS_HSE)
|
if ((__HAL_RCC_GET_SYSCLK_SOURCE() == RCC_SYSCLKSOURCE_STATUS_HSE)
|
||||||
|| ((__HAL_RCC_GET_SYSCLK_SOURCE() == RCC_SYSCLKSOURCE_STATUS_PLLCLK) && ((RCC->PLLCFGR & RCC_PLLCFGR_PLLSRC) == RCC_PLLCFGR_PLLSRC_HSE)))
|
|| ((__HAL_RCC_GET_SYSCLK_SOURCE() == RCC_SYSCLKSOURCE_STATUS_PLLCLK) && ((RCC->PLLCFGR & RCC_PLLCFGR_PLLSRC) == RCC_PLLCFGR_PLLSRC_HSE)))
|
||||||
{
|
{
|
||||||
if((__HAL_RCC_GET_FLAG(RCC_FLAG_HSERDY) != RESET) && (RCC_OscInitStruct->HSEState == RCC_HSE_OFF))
|
if ((__HAL_RCC_GET_FLAG(RCC_FLAG_HSERDY) != RESET) && (RCC_OscInitStruct->HSEState == RCC_HSE_OFF))
|
||||||
{
|
{
|
||||||
return HAL_ERROR;
|
return HAL_ERROR;
|
||||||
}
|
}
|
||||||
|
@ -375,15 +376,15 @@ HAL_StatusTypeDef HAL_RCC_OscConfig(RCC_OscInitTypeDef *RCC_OscInitStruct)
|
||||||
__HAL_RCC_HSE_CONFIG(RCC_OscInitStruct->HSEState);
|
__HAL_RCC_HSE_CONFIG(RCC_OscInitStruct->HSEState);
|
||||||
|
|
||||||
/* Check the HSE State */
|
/* Check the HSE State */
|
||||||
if(RCC_OscInitStruct->HSEState != RCC_HSE_OFF)
|
if (RCC_OscInitStruct->HSEState != RCC_HSE_OFF)
|
||||||
{
|
{
|
||||||
/* Get Start Tick*/
|
/* Get Start Tick*/
|
||||||
tickstart = HAL_GetTick();
|
tickstart = HAL_GetTick();
|
||||||
|
|
||||||
/* Wait till HSE is ready */
|
/* Wait till HSE is ready */
|
||||||
while(__HAL_RCC_GET_FLAG(RCC_FLAG_HSERDY) == RESET)
|
while (__HAL_RCC_GET_FLAG(RCC_FLAG_HSERDY) == RESET)
|
||||||
{
|
{
|
||||||
if((HAL_GetTick() - tickstart ) > HSE_TIMEOUT_VALUE)
|
if ((HAL_GetTick() - tickstart) > HSE_TIMEOUT_VALUE)
|
||||||
{
|
{
|
||||||
return HAL_TIMEOUT;
|
return HAL_TIMEOUT;
|
||||||
}
|
}
|
||||||
|
@ -395,9 +396,9 @@ HAL_StatusTypeDef HAL_RCC_OscConfig(RCC_OscInitTypeDef *RCC_OscInitStruct)
|
||||||
tickstart = HAL_GetTick();
|
tickstart = HAL_GetTick();
|
||||||
|
|
||||||
/* Wait till HSE is bypassed or disabled */
|
/* Wait till HSE is bypassed or disabled */
|
||||||
while(__HAL_RCC_GET_FLAG(RCC_FLAG_HSERDY) != RESET)
|
while (__HAL_RCC_GET_FLAG(RCC_FLAG_HSERDY) != RESET)
|
||||||
{
|
{
|
||||||
if((HAL_GetTick() - tickstart ) > HSE_TIMEOUT_VALUE)
|
if ((HAL_GetTick() - tickstart) > HSE_TIMEOUT_VALUE)
|
||||||
{
|
{
|
||||||
return HAL_TIMEOUT;
|
return HAL_TIMEOUT;
|
||||||
}
|
}
|
||||||
|
@ -406,18 +407,18 @@ HAL_StatusTypeDef HAL_RCC_OscConfig(RCC_OscInitTypeDef *RCC_OscInitStruct)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
/*----------------------------- HSI Configuration --------------------------*/
|
/*----------------------------- HSI Configuration --------------------------*/
|
||||||
if(((RCC_OscInitStruct->OscillatorType) & RCC_OSCILLATORTYPE_HSI) == RCC_OSCILLATORTYPE_HSI)
|
if (((RCC_OscInitStruct->OscillatorType) & RCC_OSCILLATORTYPE_HSI) == RCC_OSCILLATORTYPE_HSI)
|
||||||
{
|
{
|
||||||
/* Check the parameters */
|
/* Check the parameters */
|
||||||
assert_param(IS_RCC_HSI(RCC_OscInitStruct->HSIState));
|
assert_param(IS_RCC_HSI(RCC_OscInitStruct->HSIState));
|
||||||
assert_param(IS_RCC_CALIBRATION_VALUE(RCC_OscInitStruct->HSICalibrationValue));
|
assert_param(IS_RCC_CALIBRATION_VALUE(RCC_OscInitStruct->HSICalibrationValue));
|
||||||
|
|
||||||
/* Check if HSI is used as system clock or as PLL source when PLL is selected as system clock */
|
/* Check if HSI is used as system clock or as PLL source when PLL is selected as system clock */
|
||||||
if((__HAL_RCC_GET_SYSCLK_SOURCE() == RCC_SYSCLKSOURCE_STATUS_HSI)
|
if ((__HAL_RCC_GET_SYSCLK_SOURCE() == RCC_SYSCLKSOURCE_STATUS_HSI)
|
||||||
|| ((__HAL_RCC_GET_SYSCLK_SOURCE() == RCC_SYSCLKSOURCE_STATUS_PLLCLK) && ((RCC->PLLCFGR & RCC_PLLCFGR_PLLSRC) == RCC_PLLCFGR_PLLSRC_HSI)))
|
|| ((__HAL_RCC_GET_SYSCLK_SOURCE() == RCC_SYSCLKSOURCE_STATUS_PLLCLK) && ((RCC->PLLCFGR & RCC_PLLCFGR_PLLSRC) == RCC_PLLCFGR_PLLSRC_HSI)))
|
||||||
{
|
{
|
||||||
/* When HSI is used as system clock it will not disabled */
|
/* When HSI is used as system clock it will not disabled */
|
||||||
if((__HAL_RCC_GET_FLAG(RCC_FLAG_HSIRDY) != RESET) && (RCC_OscInitStruct->HSIState != RCC_HSI_ON))
|
if ((__HAL_RCC_GET_FLAG(RCC_FLAG_HSIRDY) != RESET) && (RCC_OscInitStruct->HSIState != RCC_HSI_ON))
|
||||||
{
|
{
|
||||||
return HAL_ERROR;
|
return HAL_ERROR;
|
||||||
}
|
}
|
||||||
|
@ -431,7 +432,7 @@ HAL_StatusTypeDef HAL_RCC_OscConfig(RCC_OscInitTypeDef *RCC_OscInitStruct)
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
/* Check the HSI State */
|
/* Check the HSI State */
|
||||||
if((RCC_OscInitStruct->HSIState)!= RCC_HSI_OFF)
|
if ((RCC_OscInitStruct->HSIState) != RCC_HSI_OFF)
|
||||||
{
|
{
|
||||||
/* Enable the Internal High Speed oscillator (HSI). */
|
/* Enable the Internal High Speed oscillator (HSI). */
|
||||||
__HAL_RCC_HSI_ENABLE();
|
__HAL_RCC_HSI_ENABLE();
|
||||||
|
@ -440,9 +441,9 @@ HAL_StatusTypeDef HAL_RCC_OscConfig(RCC_OscInitTypeDef *RCC_OscInitStruct)
|
||||||
tickstart = HAL_GetTick();
|
tickstart = HAL_GetTick();
|
||||||
|
|
||||||
/* Wait till HSI is ready */
|
/* Wait till HSI is ready */
|
||||||
while(__HAL_RCC_GET_FLAG(RCC_FLAG_HSIRDY) == RESET)
|
while (__HAL_RCC_GET_FLAG(RCC_FLAG_HSIRDY) == RESET)
|
||||||
{
|
{
|
||||||
if((HAL_GetTick() - tickstart ) > HSI_TIMEOUT_VALUE)
|
if ((HAL_GetTick() - tickstart) > HSI_TIMEOUT_VALUE)
|
||||||
{
|
{
|
||||||
return HAL_TIMEOUT;
|
return HAL_TIMEOUT;
|
||||||
}
|
}
|
||||||
|
@ -460,9 +461,9 @@ HAL_StatusTypeDef HAL_RCC_OscConfig(RCC_OscInitTypeDef *RCC_OscInitStruct)
|
||||||
tickstart = HAL_GetTick();
|
tickstart = HAL_GetTick();
|
||||||
|
|
||||||
/* Wait till HSI is ready */
|
/* Wait till HSI is ready */
|
||||||
while(__HAL_RCC_GET_FLAG(RCC_FLAG_HSIRDY) != RESET)
|
while (__HAL_RCC_GET_FLAG(RCC_FLAG_HSIRDY) != RESET)
|
||||||
{
|
{
|
||||||
if((HAL_GetTick() - tickstart ) > HSI_TIMEOUT_VALUE)
|
if ((HAL_GetTick() - tickstart) > HSI_TIMEOUT_VALUE)
|
||||||
{
|
{
|
||||||
return HAL_TIMEOUT;
|
return HAL_TIMEOUT;
|
||||||
}
|
}
|
||||||
|
@ -471,13 +472,13 @@ HAL_StatusTypeDef HAL_RCC_OscConfig(RCC_OscInitTypeDef *RCC_OscInitStruct)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
/*------------------------------ LSI Configuration -------------------------*/
|
/*------------------------------ LSI Configuration -------------------------*/
|
||||||
if(((RCC_OscInitStruct->OscillatorType) & RCC_OSCILLATORTYPE_LSI) == RCC_OSCILLATORTYPE_LSI)
|
if (((RCC_OscInitStruct->OscillatorType) & RCC_OSCILLATORTYPE_LSI) == RCC_OSCILLATORTYPE_LSI)
|
||||||
{
|
{
|
||||||
/* Check the parameters */
|
/* Check the parameters */
|
||||||
assert_param(IS_RCC_LSI(RCC_OscInitStruct->LSIState));
|
assert_param(IS_RCC_LSI(RCC_OscInitStruct->LSIState));
|
||||||
|
|
||||||
/* Check the LSI State */
|
/* Check the LSI State */
|
||||||
if((RCC_OscInitStruct->LSIState)!= RCC_LSI_OFF)
|
if ((RCC_OscInitStruct->LSIState) != RCC_LSI_OFF)
|
||||||
{
|
{
|
||||||
/* Enable the Internal Low Speed oscillator (LSI). */
|
/* Enable the Internal Low Speed oscillator (LSI). */
|
||||||
__HAL_RCC_LSI_ENABLE();
|
__HAL_RCC_LSI_ENABLE();
|
||||||
|
@ -486,9 +487,9 @@ HAL_StatusTypeDef HAL_RCC_OscConfig(RCC_OscInitTypeDef *RCC_OscInitStruct)
|
||||||
tickstart = HAL_GetTick();
|
tickstart = HAL_GetTick();
|
||||||
|
|
||||||
/* Wait till LSI is ready */
|
/* Wait till LSI is ready */
|
||||||
while(__HAL_RCC_GET_FLAG(RCC_FLAG_LSIRDY) == RESET)
|
while (__HAL_RCC_GET_FLAG(RCC_FLAG_LSIRDY) == RESET)
|
||||||
{
|
{
|
||||||
if((HAL_GetTick() - tickstart ) > LSI_TIMEOUT_VALUE)
|
if ((HAL_GetTick() - tickstart) > LSI_TIMEOUT_VALUE)
|
||||||
{
|
{
|
||||||
return HAL_TIMEOUT;
|
return HAL_TIMEOUT;
|
||||||
}
|
}
|
||||||
|
@ -503,9 +504,9 @@ HAL_StatusTypeDef HAL_RCC_OscConfig(RCC_OscInitTypeDef *RCC_OscInitStruct)
|
||||||
tickstart = HAL_GetTick();
|
tickstart = HAL_GetTick();
|
||||||
|
|
||||||
/* Wait till LSI is ready */
|
/* Wait till LSI is ready */
|
||||||
while(__HAL_RCC_GET_FLAG(RCC_FLAG_LSIRDY) != RESET)
|
while (__HAL_RCC_GET_FLAG(RCC_FLAG_LSIRDY) != RESET)
|
||||||
{
|
{
|
||||||
if((HAL_GetTick() - tickstart ) > LSI_TIMEOUT_VALUE)
|
if ((HAL_GetTick() - tickstart) > LSI_TIMEOUT_VALUE)
|
||||||
{
|
{
|
||||||
return HAL_TIMEOUT;
|
return HAL_TIMEOUT;
|
||||||
}
|
}
|
||||||
|
@ -513,21 +514,21 @@ HAL_StatusTypeDef HAL_RCC_OscConfig(RCC_OscInitTypeDef *RCC_OscInitStruct)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
/*------------------------------ LSE Configuration -------------------------*/
|
/*------------------------------ LSE Configuration -------------------------*/
|
||||||
if(((RCC_OscInitStruct->OscillatorType) & RCC_OSCILLATORTYPE_LSE) == RCC_OSCILLATORTYPE_LSE)
|
if (((RCC_OscInitStruct->OscillatorType) & RCC_OSCILLATORTYPE_LSE) == RCC_OSCILLATORTYPE_LSE)
|
||||||
{
|
{
|
||||||
/* Check the parameters */
|
/* Check the parameters */
|
||||||
assert_param(IS_RCC_LSE(RCC_OscInitStruct->LSEState));
|
assert_param(IS_RCC_LSE(RCC_OscInitStruct->LSEState));
|
||||||
|
|
||||||
/* Update LSE configuration in Backup Domain control register */
|
/* Update LSE configuration in Backup Domain control register */
|
||||||
/* Requires to enable write access to Backup Domain of necessary */
|
/* Requires to enable write access to Backup Domain of necessary */
|
||||||
if(__HAL_RCC_PWR_IS_CLK_DISABLED())
|
if (__HAL_RCC_PWR_IS_CLK_DISABLED())
|
||||||
{
|
{
|
||||||
/* Enable Power Clock*/
|
/* Enable Power Clock*/
|
||||||
__HAL_RCC_PWR_CLK_ENABLE();
|
__HAL_RCC_PWR_CLK_ENABLE();
|
||||||
pwrclkchanged = SET;
|
pwrclkchanged = SET;
|
||||||
}
|
}
|
||||||
|
|
||||||
if(HAL_IS_BIT_CLR(PWR->CR1, PWR_CR1_DBP))
|
if (HAL_IS_BIT_CLR(PWR->CR1, PWR_CR1_DBP))
|
||||||
{
|
{
|
||||||
/* Enable write access to Backup domain */
|
/* Enable write access to Backup domain */
|
||||||
PWR->CR1 |= PWR_CR1_DBP;
|
PWR->CR1 |= PWR_CR1_DBP;
|
||||||
|
@ -535,9 +536,9 @@ HAL_StatusTypeDef HAL_RCC_OscConfig(RCC_OscInitTypeDef *RCC_OscInitStruct)
|
||||||
/* Wait for Backup domain Write protection disable */
|
/* Wait for Backup domain Write protection disable */
|
||||||
tickstart = HAL_GetTick();
|
tickstart = HAL_GetTick();
|
||||||
|
|
||||||
while(HAL_IS_BIT_CLR(PWR->CR1, PWR_CR1_DBP))
|
while (HAL_IS_BIT_CLR(PWR->CR1, PWR_CR1_DBP))
|
||||||
{
|
{
|
||||||
if((HAL_GetTick() - tickstart ) > RCC_DBP_TIMEOUT_VALUE)
|
if ((HAL_GetTick() - tickstart) > RCC_DBP_TIMEOUT_VALUE)
|
||||||
{
|
{
|
||||||
return HAL_TIMEOUT;
|
return HAL_TIMEOUT;
|
||||||
}
|
}
|
||||||
|
@ -547,15 +548,15 @@ HAL_StatusTypeDef HAL_RCC_OscConfig(RCC_OscInitTypeDef *RCC_OscInitStruct)
|
||||||
/* Set the new LSE configuration -----------------------------------------*/
|
/* Set the new LSE configuration -----------------------------------------*/
|
||||||
__HAL_RCC_LSE_CONFIG(RCC_OscInitStruct->LSEState);
|
__HAL_RCC_LSE_CONFIG(RCC_OscInitStruct->LSEState);
|
||||||
/* Check the LSE State */
|
/* Check the LSE State */
|
||||||
if((RCC_OscInitStruct->LSEState) != RCC_LSE_OFF)
|
if ((RCC_OscInitStruct->LSEState) != RCC_LSE_OFF)
|
||||||
{
|
{
|
||||||
/* Get Start Tick*/
|
/* Get Start Tick*/
|
||||||
tickstart = HAL_GetTick();
|
tickstart = HAL_GetTick();
|
||||||
|
|
||||||
/* Wait till LSE is ready */
|
/* Wait till LSE is ready */
|
||||||
while(__HAL_RCC_GET_FLAG(RCC_FLAG_LSERDY) == RESET)
|
while (__HAL_RCC_GET_FLAG(RCC_FLAG_LSERDY) == RESET)
|
||||||
{
|
{
|
||||||
if((HAL_GetTick() - tickstart ) > RCC_LSE_TIMEOUT_VALUE)
|
if ((HAL_GetTick() - tickstart) > RCC_LSE_TIMEOUT_VALUE)
|
||||||
{
|
{
|
||||||
return HAL_TIMEOUT;
|
return HAL_TIMEOUT;
|
||||||
}
|
}
|
||||||
|
@ -567,9 +568,9 @@ HAL_StatusTypeDef HAL_RCC_OscConfig(RCC_OscInitTypeDef *RCC_OscInitStruct)
|
||||||
tickstart = HAL_GetTick();
|
tickstart = HAL_GetTick();
|
||||||
|
|
||||||
/* Wait till LSE is ready */
|
/* Wait till LSE is ready */
|
||||||
while(__HAL_RCC_GET_FLAG(RCC_FLAG_LSERDY) != RESET)
|
while (__HAL_RCC_GET_FLAG(RCC_FLAG_LSERDY) != RESET)
|
||||||
{
|
{
|
||||||
if((HAL_GetTick() - tickstart ) > RCC_LSE_TIMEOUT_VALUE)
|
if ((HAL_GetTick() - tickstart) > RCC_LSE_TIMEOUT_VALUE)
|
||||||
{
|
{
|
||||||
return HAL_TIMEOUT;
|
return HAL_TIMEOUT;
|
||||||
}
|
}
|
||||||
|
@ -577,7 +578,7 @@ HAL_StatusTypeDef HAL_RCC_OscConfig(RCC_OscInitTypeDef *RCC_OscInitStruct)
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Restore clock configuration if changed */
|
/* Restore clock configuration if changed */
|
||||||
if(pwrclkchanged == SET)
|
if (pwrclkchanged == SET)
|
||||||
{
|
{
|
||||||
__HAL_RCC_PWR_CLK_DISABLE();
|
__HAL_RCC_PWR_CLK_DISABLE();
|
||||||
}
|
}
|
||||||
|
@ -588,9 +589,9 @@ HAL_StatusTypeDef HAL_RCC_OscConfig(RCC_OscInitTypeDef *RCC_OscInitStruct)
|
||||||
if ((RCC_OscInitStruct->PLL.PLLState) != RCC_PLL_NONE)
|
if ((RCC_OscInitStruct->PLL.PLLState) != RCC_PLL_NONE)
|
||||||
{
|
{
|
||||||
/* Check if the PLL is used as system clock or not */
|
/* Check if the PLL is used as system clock or not */
|
||||||
if(__HAL_RCC_GET_SYSCLK_SOURCE() != RCC_SYSCLKSOURCE_STATUS_PLLCLK)
|
if (__HAL_RCC_GET_SYSCLK_SOURCE() != RCC_SYSCLKSOURCE_STATUS_PLLCLK)
|
||||||
{
|
{
|
||||||
if((RCC_OscInitStruct->PLL.PLLState) == RCC_PLL_ON)
|
if ((RCC_OscInitStruct->PLL.PLLState) == RCC_PLL_ON)
|
||||||
{
|
{
|
||||||
/* Check the parameters */
|
/* Check the parameters */
|
||||||
assert_param(IS_RCC_PLLSOURCE(RCC_OscInitStruct->PLL.PLLSource));
|
assert_param(IS_RCC_PLLSOURCE(RCC_OscInitStruct->PLL.PLLSource));
|
||||||
|
@ -609,9 +610,9 @@ HAL_StatusTypeDef HAL_RCC_OscConfig(RCC_OscInitTypeDef *RCC_OscInitStruct)
|
||||||
tickstart = HAL_GetTick();
|
tickstart = HAL_GetTick();
|
||||||
|
|
||||||
/* Wait till PLL is ready */
|
/* Wait till PLL is ready */
|
||||||
while(__HAL_RCC_GET_FLAG(RCC_FLAG_PLLRDY) != RESET)
|
while (__HAL_RCC_GET_FLAG(RCC_FLAG_PLLRDY) != RESET)
|
||||||
{
|
{
|
||||||
if((HAL_GetTick() - tickstart ) > PLL_TIMEOUT_VALUE)
|
if ((HAL_GetTick() - tickstart) > PLL_TIMEOUT_VALUE)
|
||||||
{
|
{
|
||||||
return HAL_TIMEOUT;
|
return HAL_TIMEOUT;
|
||||||
}
|
}
|
||||||
|
@ -640,9 +641,9 @@ HAL_StatusTypeDef HAL_RCC_OscConfig(RCC_OscInitTypeDef *RCC_OscInitStruct)
|
||||||
tickstart = HAL_GetTick();
|
tickstart = HAL_GetTick();
|
||||||
|
|
||||||
/* Wait till PLL is ready */
|
/* Wait till PLL is ready */
|
||||||
while(__HAL_RCC_GET_FLAG(RCC_FLAG_PLLRDY) == RESET)
|
while (__HAL_RCC_GET_FLAG(RCC_FLAG_PLLRDY) == RESET)
|
||||||
{
|
{
|
||||||
if((HAL_GetTick() - tickstart ) > PLL_TIMEOUT_VALUE)
|
if ((HAL_GetTick() - tickstart) > PLL_TIMEOUT_VALUE)
|
||||||
{
|
{
|
||||||
return HAL_TIMEOUT;
|
return HAL_TIMEOUT;
|
||||||
}
|
}
|
||||||
|
@ -657,9 +658,9 @@ HAL_StatusTypeDef HAL_RCC_OscConfig(RCC_OscInitTypeDef *RCC_OscInitStruct)
|
||||||
tickstart = HAL_GetTick();
|
tickstart = HAL_GetTick();
|
||||||
|
|
||||||
/* Wait till PLL is ready */
|
/* Wait till PLL is ready */
|
||||||
while(__HAL_RCC_GET_FLAG(RCC_FLAG_PLLRDY) != RESET)
|
while (__HAL_RCC_GET_FLAG(RCC_FLAG_PLLRDY) != RESET)
|
||||||
{
|
{
|
||||||
if((HAL_GetTick() - tickstart ) > PLL_TIMEOUT_VALUE)
|
if ((HAL_GetTick() - tickstart) > PLL_TIMEOUT_VALUE)
|
||||||
{
|
{
|
||||||
return HAL_TIMEOUT;
|
return HAL_TIMEOUT;
|
||||||
}
|
}
|
||||||
|
@ -668,7 +669,27 @@ HAL_StatusTypeDef HAL_RCC_OscConfig(RCC_OscInitTypeDef *RCC_OscInitStruct)
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
return HAL_ERROR;
|
/* Do not return HAL_ERROR if request repeats the current configuration */
|
||||||
|
pll_config = RCC->PLLCFGR;
|
||||||
|
#if defined (RCC_PLLCFGR_PLLR)
|
||||||
|
if (((RCC_OscInitStruct->PLL.PLLState) == RCC_PLL_OFF) ||
|
||||||
|
(READ_BIT(pll_config, RCC_PLLCFGR_PLLSRC) != RCC_OscInitStruct->PLL.PLLSource) ||
|
||||||
|
(READ_BIT(pll_config, RCC_PLLCFGR_PLLM) != RCC_OscInitStruct->PLL.PLLM) ||
|
||||||
|
(READ_BIT(pll_config, RCC_PLLCFGR_PLLN) != (RCC_OscInitStruct->PLL.PLLN << RCC_PLLCFGR_PLLN_Pos)) ||
|
||||||
|
(READ_BIT(pll_config, RCC_PLLCFGR_PLLP) != ((((RCC_OscInitStruct->PLL.PLLP) >> 1U) - 1U) << RCC_PLLCFGR_PLLP_Pos)) ||
|
||||||
|
(READ_BIT(pll_config, RCC_PLLCFGR_PLLQ) != (RCC_OscInitStruct->PLL.PLLQ << RCC_PLLCFGR_PLLQ_Pos)) ||
|
||||||
|
(READ_BIT(pll_config, RCC_PLLCFGR_PLLR) != (RCC_OscInitStruct->PLL.PLLR << RCC_PLLCFGR_PLLR_Pos)))
|
||||||
|
#else
|
||||||
|
if (((RCC_OscInitStruct->PLL.PLLState) == RCC_PLL_OFF) ||
|
||||||
|
(READ_BIT(pll_config, RCC_PLLCFGR_PLLSRC) != RCC_OscInitStruct->PLL.PLLSource) ||
|
||||||
|
(READ_BIT(pll_config, RCC_PLLCFGR_PLLM) != RCC_OscInitStruct->PLL.PLLM) ||
|
||||||
|
(READ_BIT(pll_config, RCC_PLLCFGR_PLLN) != (RCC_OscInitStruct->PLL.PLLN << RCC_PLLCFGR_PLLN_Pos)) ||
|
||||||
|
(READ_BIT(pll_config, RCC_PLLCFGR_PLLP) != ((((RCC_OscInitStruct->PLL.PLLP) >> 1U) - 1U) << RCC_PLLCFGR_PLLP_Pos)) ||
|
||||||
|
(READ_BIT(pll_config, RCC_PLLCFGR_PLLQ) != (RCC_OscInitStruct->PLL.PLLQ << RCC_PLLCFGR_PLLQ_Pos)))
|
||||||
|
#endif
|
||||||
|
{
|
||||||
|
return HAL_ERROR;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return HAL_OK;
|
return HAL_OK;
|
||||||
|
@ -705,7 +726,7 @@ HAL_StatusTypeDef HAL_RCC_ClockConfig(RCC_ClkInitTypeDef *RCC_ClkInitStruct, ui
|
||||||
uint32_t tickstart = 0;
|
uint32_t tickstart = 0;
|
||||||
|
|
||||||
/* Check Null pointer */
|
/* Check Null pointer */
|
||||||
if(RCC_ClkInitStruct == NULL)
|
if (RCC_ClkInitStruct == NULL)
|
||||||
{
|
{
|
||||||
return HAL_ERROR;
|
return HAL_ERROR;
|
||||||
}
|
}
|
||||||
|
@ -719,30 +740,30 @@ HAL_StatusTypeDef HAL_RCC_ClockConfig(RCC_ClkInitTypeDef *RCC_ClkInitStruct, ui
|
||||||
(HCLK) and the supply voltage of the device. */
|
(HCLK) and the supply voltage of the device. */
|
||||||
|
|
||||||
/* Increasing the CPU frequency */
|
/* Increasing the CPU frequency */
|
||||||
if(FLatency > __HAL_FLASH_GET_LATENCY())
|
if (FLatency > __HAL_FLASH_GET_LATENCY())
|
||||||
{
|
{
|
||||||
/* Program the new number of wait states to the LATENCY bits in the FLASH_ACR register */
|
/* Program the new number of wait states to the LATENCY bits in the FLASH_ACR register */
|
||||||
__HAL_FLASH_SET_LATENCY(FLatency);
|
__HAL_FLASH_SET_LATENCY(FLatency);
|
||||||
|
|
||||||
/* Check that the new number of wait states is taken into account to access the Flash
|
/* Check that the new number of wait states is taken into account to access the Flash
|
||||||
memory by reading the FLASH_ACR register */
|
memory by reading the FLASH_ACR register */
|
||||||
if(__HAL_FLASH_GET_LATENCY() != FLatency)
|
if (__HAL_FLASH_GET_LATENCY() != FLatency)
|
||||||
{
|
{
|
||||||
return HAL_ERROR;
|
return HAL_ERROR;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/*-------------------------- HCLK Configuration --------------------------*/
|
/*-------------------------- HCLK Configuration --------------------------*/
|
||||||
if(((RCC_ClkInitStruct->ClockType) & RCC_CLOCKTYPE_HCLK) == RCC_CLOCKTYPE_HCLK)
|
if (((RCC_ClkInitStruct->ClockType) & RCC_CLOCKTYPE_HCLK) == RCC_CLOCKTYPE_HCLK)
|
||||||
{
|
{
|
||||||
/* Set the highest APBx dividers in order to ensure that we do not go through
|
/* Set the highest APBx dividers in order to ensure that we do not go through
|
||||||
a non-spec phase whatever we decrease or increase HCLK. */
|
a non-spec phase whatever we decrease or increase HCLK. */
|
||||||
if(((RCC_ClkInitStruct->ClockType) & RCC_CLOCKTYPE_PCLK1) == RCC_CLOCKTYPE_PCLK1)
|
if (((RCC_ClkInitStruct->ClockType) & RCC_CLOCKTYPE_PCLK1) == RCC_CLOCKTYPE_PCLK1)
|
||||||
{
|
{
|
||||||
MODIFY_REG(RCC->CFGR, RCC_CFGR_PPRE1, RCC_HCLK_DIV16);
|
MODIFY_REG(RCC->CFGR, RCC_CFGR_PPRE1, RCC_HCLK_DIV16);
|
||||||
}
|
}
|
||||||
|
|
||||||
if(((RCC_ClkInitStruct->ClockType) & RCC_CLOCKTYPE_PCLK2) == RCC_CLOCKTYPE_PCLK2)
|
if (((RCC_ClkInitStruct->ClockType) & RCC_CLOCKTYPE_PCLK2) == RCC_CLOCKTYPE_PCLK2)
|
||||||
{
|
{
|
||||||
MODIFY_REG(RCC->CFGR, RCC_CFGR_PPRE2, (RCC_HCLK_DIV16 << 3));
|
MODIFY_REG(RCC->CFGR, RCC_CFGR_PPRE2, (RCC_HCLK_DIV16 << 3));
|
||||||
}
|
}
|
||||||
|
@ -753,24 +774,24 @@ HAL_StatusTypeDef HAL_RCC_ClockConfig(RCC_ClkInitTypeDef *RCC_ClkInitStruct, ui
|
||||||
}
|
}
|
||||||
|
|
||||||
/*------------------------- SYSCLK Configuration ---------------------------*/
|
/*------------------------- SYSCLK Configuration ---------------------------*/
|
||||||
if(((RCC_ClkInitStruct->ClockType) & RCC_CLOCKTYPE_SYSCLK) == RCC_CLOCKTYPE_SYSCLK)
|
if (((RCC_ClkInitStruct->ClockType) & RCC_CLOCKTYPE_SYSCLK) == RCC_CLOCKTYPE_SYSCLK)
|
||||||
{
|
{
|
||||||
assert_param(IS_RCC_SYSCLKSOURCE(RCC_ClkInitStruct->SYSCLKSource));
|
assert_param(IS_RCC_SYSCLKSOURCE(RCC_ClkInitStruct->SYSCLKSource));
|
||||||
|
|
||||||
/* HSE is selected as System Clock Source */
|
/* HSE is selected as System Clock Source */
|
||||||
if(RCC_ClkInitStruct->SYSCLKSource == RCC_SYSCLKSOURCE_HSE)
|
if (RCC_ClkInitStruct->SYSCLKSource == RCC_SYSCLKSOURCE_HSE)
|
||||||
{
|
{
|
||||||
/* Check the HSE ready flag */
|
/* Check the HSE ready flag */
|
||||||
if(__HAL_RCC_GET_FLAG(RCC_FLAG_HSERDY) == RESET)
|
if (__HAL_RCC_GET_FLAG(RCC_FLAG_HSERDY) == RESET)
|
||||||
{
|
{
|
||||||
return HAL_ERROR;
|
return HAL_ERROR;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
/* PLL is selected as System Clock Source */
|
/* PLL is selected as System Clock Source */
|
||||||
else if(RCC_ClkInitStruct->SYSCLKSource == RCC_SYSCLKSOURCE_PLLCLK)
|
else if (RCC_ClkInitStruct->SYSCLKSource == RCC_SYSCLKSOURCE_PLLCLK)
|
||||||
{
|
{
|
||||||
/* Check the PLL ready flag */
|
/* Check the PLL ready flag */
|
||||||
if(__HAL_RCC_GET_FLAG(RCC_FLAG_PLLRDY) == RESET)
|
if (__HAL_RCC_GET_FLAG(RCC_FLAG_PLLRDY) == RESET)
|
||||||
{
|
{
|
||||||
return HAL_ERROR;
|
return HAL_ERROR;
|
||||||
}
|
}
|
||||||
|
@ -779,7 +800,7 @@ HAL_StatusTypeDef HAL_RCC_ClockConfig(RCC_ClkInitTypeDef *RCC_ClkInitStruct, ui
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
/* Check the HSI ready flag */
|
/* Check the HSI ready flag */
|
||||||
if(__HAL_RCC_GET_FLAG(RCC_FLAG_HSIRDY) == RESET)
|
if (__HAL_RCC_GET_FLAG(RCC_FLAG_HSIRDY) == RESET)
|
||||||
{
|
{
|
||||||
return HAL_ERROR;
|
return HAL_ERROR;
|
||||||
}
|
}
|
||||||
|
@ -800,38 +821,38 @@ HAL_StatusTypeDef HAL_RCC_ClockConfig(RCC_ClkInitTypeDef *RCC_ClkInitStruct, ui
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Decreasing the number of wait states because of lower CPU frequency */
|
/* Decreasing the number of wait states because of lower CPU frequency */
|
||||||
if(FLatency < __HAL_FLASH_GET_LATENCY())
|
if (FLatency < __HAL_FLASH_GET_LATENCY())
|
||||||
{
|
{
|
||||||
/* Program the new number of wait states to the LATENCY bits in the FLASH_ACR register */
|
/* Program the new number of wait states to the LATENCY bits in the FLASH_ACR register */
|
||||||
__HAL_FLASH_SET_LATENCY(FLatency);
|
__HAL_FLASH_SET_LATENCY(FLatency);
|
||||||
|
|
||||||
/* Check that the new number of wait states is taken into account to access the Flash
|
/* Check that the new number of wait states is taken into account to access the Flash
|
||||||
memory by reading the FLASH_ACR register */
|
memory by reading the FLASH_ACR register */
|
||||||
if(__HAL_FLASH_GET_LATENCY() != FLatency)
|
if (__HAL_FLASH_GET_LATENCY() != FLatency)
|
||||||
{
|
{
|
||||||
return HAL_ERROR;
|
return HAL_ERROR;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/*-------------------------- PCLK1 Configuration ---------------------------*/
|
/*-------------------------- PCLK1 Configuration ---------------------------*/
|
||||||
if(((RCC_ClkInitStruct->ClockType) & RCC_CLOCKTYPE_PCLK1) == RCC_CLOCKTYPE_PCLK1)
|
if (((RCC_ClkInitStruct->ClockType) & RCC_CLOCKTYPE_PCLK1) == RCC_CLOCKTYPE_PCLK1)
|
||||||
{
|
{
|
||||||
assert_param(IS_RCC_PCLK(RCC_ClkInitStruct->APB1CLKDivider));
|
assert_param(IS_RCC_PCLK(RCC_ClkInitStruct->APB1CLKDivider));
|
||||||
MODIFY_REG(RCC->CFGR, RCC_CFGR_PPRE1, RCC_ClkInitStruct->APB1CLKDivider);
|
MODIFY_REG(RCC->CFGR, RCC_CFGR_PPRE1, RCC_ClkInitStruct->APB1CLKDivider);
|
||||||
}
|
}
|
||||||
|
|
||||||
/*-------------------------- PCLK2 Configuration ---------------------------*/
|
/*-------------------------- PCLK2 Configuration ---------------------------*/
|
||||||
if(((RCC_ClkInitStruct->ClockType) & RCC_CLOCKTYPE_PCLK2) == RCC_CLOCKTYPE_PCLK2)
|
if (((RCC_ClkInitStruct->ClockType) & RCC_CLOCKTYPE_PCLK2) == RCC_CLOCKTYPE_PCLK2)
|
||||||
{
|
{
|
||||||
assert_param(IS_RCC_PCLK(RCC_ClkInitStruct->APB2CLKDivider));
|
assert_param(IS_RCC_PCLK(RCC_ClkInitStruct->APB2CLKDivider));
|
||||||
MODIFY_REG(RCC->CFGR, RCC_CFGR_PPRE2, ((RCC_ClkInitStruct->APB2CLKDivider) << 3));
|
MODIFY_REG(RCC->CFGR, RCC_CFGR_PPRE2, ((RCC_ClkInitStruct->APB2CLKDivider) << 3));
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Update the SystemCoreClock global variable */
|
/* Update the SystemCoreClock global variable */
|
||||||
SystemCoreClock = HAL_RCC_GetSysClockFreq() >> AHBPrescTable[(RCC->CFGR & RCC_CFGR_HPRE)>> RCC_CFGR_HPRE_Pos];
|
SystemCoreClock = HAL_RCC_GetSysClockFreq() >> AHBPrescTable[(RCC->CFGR & RCC_CFGR_HPRE) >> RCC_CFGR_HPRE_Pos];
|
||||||
|
|
||||||
/* Configure the source of time base considering new system clocks settings*/
|
/* Configure the source of time base considering new system clocks settings*/
|
||||||
HAL_InitTick (TICK_INT_PRIORITY);
|
HAL_InitTick(uwTickPrio);
|
||||||
|
|
||||||
return HAL_OK;
|
return HAL_OK;
|
||||||
}
|
}
|
||||||
|
@ -888,7 +909,7 @@ void HAL_RCC_MCOConfig(uint32_t RCC_MCOx, uint32_t RCC_MCOSource, uint32_t RCC_M
|
||||||
assert_param(IS_RCC_MCO(RCC_MCOx));
|
assert_param(IS_RCC_MCO(RCC_MCOx));
|
||||||
assert_param(IS_RCC_MCODIV(RCC_MCODiv));
|
assert_param(IS_RCC_MCODIV(RCC_MCODiv));
|
||||||
/* RCC_MCO1 */
|
/* RCC_MCO1 */
|
||||||
if(RCC_MCOx == RCC_MCO1)
|
if (RCC_MCOx == RCC_MCO1)
|
||||||
{
|
{
|
||||||
assert_param(IS_RCC_MCO1SOURCE(RCC_MCOSource));
|
assert_param(IS_RCC_MCO1SOURCE(RCC_MCOSource));
|
||||||
|
|
||||||
|
@ -990,7 +1011,7 @@ uint32_t HAL_RCC_GetSysClockFreq(void)
|
||||||
case RCC_SYSCLKSOURCE_STATUS_HSI: /* HSI used as system clock source */
|
case RCC_SYSCLKSOURCE_STATUS_HSI: /* HSI used as system clock source */
|
||||||
{
|
{
|
||||||
sysclockfreq = HSI_VALUE;
|
sysclockfreq = HSI_VALUE;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case RCC_SYSCLKSOURCE_STATUS_HSE: /* HSE used as system clock source */
|
case RCC_SYSCLKSOURCE_STATUS_HSE: /* HSE used as system clock source */
|
||||||
{
|
{
|
||||||
|
@ -1005,16 +1026,16 @@ uint32_t HAL_RCC_GetSysClockFreq(void)
|
||||||
if (__HAL_RCC_GET_PLL_OSCSOURCE() != RCC_PLLCFGR_PLLSRC_HSI)
|
if (__HAL_RCC_GET_PLL_OSCSOURCE() != RCC_PLLCFGR_PLLSRC_HSI)
|
||||||
{
|
{
|
||||||
/* HSE used as PLL clock source */
|
/* HSE used as PLL clock source */
|
||||||
pllvco = (uint32_t) ((((uint64_t) HSE_VALUE * ((uint64_t) ((RCC->PLLCFGR & RCC_PLLCFGR_PLLN) >> RCC_PLLCFGR_PLLN_Pos)))) / (uint64_t)pllm);
|
pllvco = (uint32_t)((((uint64_t) HSE_VALUE * ((uint64_t)((RCC->PLLCFGR & RCC_PLLCFGR_PLLN) >> RCC_PLLCFGR_PLLN_Pos)))) / (uint64_t)pllm);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
/* HSI used as PLL clock source */
|
/* HSI used as PLL clock source */
|
||||||
pllvco = (uint32_t) ((((uint64_t) HSI_VALUE * ((uint64_t) ((RCC->PLLCFGR & RCC_PLLCFGR_PLLN) >> RCC_PLLCFGR_PLLN_Pos)))) / (uint64_t)pllm);
|
pllvco = (uint32_t)((((uint64_t) HSI_VALUE * ((uint64_t)((RCC->PLLCFGR & RCC_PLLCFGR_PLLN) >> RCC_PLLCFGR_PLLN_Pos)))) / (uint64_t)pllm);
|
||||||
}
|
}
|
||||||
pllp = ((((RCC->PLLCFGR & RCC_PLLCFGR_PLLP) >> RCC_PLLCFGR_PLLP_Pos) + 1 ) *2);
|
pllp = ((((RCC->PLLCFGR & RCC_PLLCFGR_PLLP) >> RCC_PLLCFGR_PLLP_Pos) + 1) * 2);
|
||||||
|
|
||||||
sysclockfreq = pllvco/pllp;
|
sysclockfreq = pllvco / pllp;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
default:
|
default:
|
||||||
|
@ -1047,7 +1068,7 @@ uint32_t HAL_RCC_GetHCLKFreq(void)
|
||||||
uint32_t HAL_RCC_GetPCLK1Freq(void)
|
uint32_t HAL_RCC_GetPCLK1Freq(void)
|
||||||
{
|
{
|
||||||
/* Get HCLK source and Compute PCLK1 frequency ---------------------------*/
|
/* Get HCLK source and Compute PCLK1 frequency ---------------------------*/
|
||||||
return (HAL_RCC_GetHCLKFreq() >> APBPrescTable[(RCC->CFGR & RCC_CFGR_PPRE1)>> RCC_CFGR_PPRE1_Pos]);
|
return (HAL_RCC_GetHCLKFreq() >> APBPrescTable[(RCC->CFGR & RCC_CFGR_PPRE1) >> RCC_CFGR_PPRE1_Pos]);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -1059,7 +1080,7 @@ uint32_t HAL_RCC_GetPCLK1Freq(void)
|
||||||
uint32_t HAL_RCC_GetPCLK2Freq(void)
|
uint32_t HAL_RCC_GetPCLK2Freq(void)
|
||||||
{
|
{
|
||||||
/* Get HCLK source and Compute PCLK2 frequency ---------------------------*/
|
/* Get HCLK source and Compute PCLK2 frequency ---------------------------*/
|
||||||
return (HAL_RCC_GetHCLKFreq()>> APBPrescTable[(RCC->CFGR & RCC_CFGR_PPRE2)>> RCC_CFGR_PPRE2_Pos]);
|
return (HAL_RCC_GetHCLKFreq() >> APBPrescTable[(RCC->CFGR & RCC_CFGR_PPRE2) >> RCC_CFGR_PPRE2_Pos]);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -1075,11 +1096,11 @@ void HAL_RCC_GetOscConfig(RCC_OscInitTypeDef *RCC_OscInitStruct)
|
||||||
RCC_OscInitStruct->OscillatorType = RCC_OSCILLATORTYPE_HSE | RCC_OSCILLATORTYPE_HSI | RCC_OSCILLATORTYPE_LSE | RCC_OSCILLATORTYPE_LSI;
|
RCC_OscInitStruct->OscillatorType = RCC_OSCILLATORTYPE_HSE | RCC_OSCILLATORTYPE_HSI | RCC_OSCILLATORTYPE_LSE | RCC_OSCILLATORTYPE_LSI;
|
||||||
|
|
||||||
/* Get the HSE configuration -----------------------------------------------*/
|
/* Get the HSE configuration -----------------------------------------------*/
|
||||||
if((RCC->CR &RCC_CR_HSEBYP) == RCC_CR_HSEBYP)
|
if ((RCC->CR & RCC_CR_HSEBYP) == RCC_CR_HSEBYP)
|
||||||
{
|
{
|
||||||
RCC_OscInitStruct->HSEState = RCC_HSE_BYPASS;
|
RCC_OscInitStruct->HSEState = RCC_HSE_BYPASS;
|
||||||
}
|
}
|
||||||
else if((RCC->CR &RCC_CR_HSEON) == RCC_CR_HSEON)
|
else if ((RCC->CR & RCC_CR_HSEON) == RCC_CR_HSEON)
|
||||||
{
|
{
|
||||||
RCC_OscInitStruct->HSEState = RCC_HSE_ON;
|
RCC_OscInitStruct->HSEState = RCC_HSE_ON;
|
||||||
}
|
}
|
||||||
|
@ -1089,7 +1110,7 @@ void HAL_RCC_GetOscConfig(RCC_OscInitTypeDef *RCC_OscInitStruct)
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Get the HSI configuration -----------------------------------------------*/
|
/* Get the HSI configuration -----------------------------------------------*/
|
||||||
if((RCC->CR &RCC_CR_HSION) == RCC_CR_HSION)
|
if ((RCC->CR & RCC_CR_HSION) == RCC_CR_HSION)
|
||||||
{
|
{
|
||||||
RCC_OscInitStruct->HSIState = RCC_HSI_ON;
|
RCC_OscInitStruct->HSIState = RCC_HSI_ON;
|
||||||
}
|
}
|
||||||
|
@ -1098,14 +1119,14 @@ void HAL_RCC_GetOscConfig(RCC_OscInitTypeDef *RCC_OscInitStruct)
|
||||||
RCC_OscInitStruct->HSIState = RCC_HSI_OFF;
|
RCC_OscInitStruct->HSIState = RCC_HSI_OFF;
|
||||||
}
|
}
|
||||||
|
|
||||||
RCC_OscInitStruct->HSICalibrationValue = (uint32_t)((RCC->CR &RCC_CR_HSITRIM) >> RCC_CR_HSITRIM_Pos);
|
RCC_OscInitStruct->HSICalibrationValue = (uint32_t)((RCC->CR & RCC_CR_HSITRIM) >> RCC_CR_HSITRIM_Pos);
|
||||||
|
|
||||||
/* Get the LSE configuration -----------------------------------------------*/
|
/* Get the LSE configuration -----------------------------------------------*/
|
||||||
if((RCC->BDCR &RCC_BDCR_LSEBYP) == RCC_BDCR_LSEBYP)
|
if ((RCC->BDCR & RCC_BDCR_LSEBYP) == RCC_BDCR_LSEBYP)
|
||||||
{
|
{
|
||||||
RCC_OscInitStruct->LSEState = RCC_LSE_BYPASS;
|
RCC_OscInitStruct->LSEState = RCC_LSE_BYPASS;
|
||||||
}
|
}
|
||||||
else if((RCC->BDCR &RCC_BDCR_LSEON) == RCC_BDCR_LSEON)
|
else if ((RCC->BDCR & RCC_BDCR_LSEON) == RCC_BDCR_LSEON)
|
||||||
{
|
{
|
||||||
RCC_OscInitStruct->LSEState = RCC_LSE_ON;
|
RCC_OscInitStruct->LSEState = RCC_LSE_ON;
|
||||||
}
|
}
|
||||||
|
@ -1115,7 +1136,7 @@ void HAL_RCC_GetOscConfig(RCC_OscInitTypeDef *RCC_OscInitStruct)
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Get the LSI configuration -----------------------------------------------*/
|
/* Get the LSI configuration -----------------------------------------------*/
|
||||||
if((RCC->CSR &RCC_CSR_LSION) == RCC_CSR_LSION)
|
if ((RCC->CSR & RCC_CSR_LSION) == RCC_CSR_LSION)
|
||||||
{
|
{
|
||||||
RCC_OscInitStruct->LSIState = RCC_LSI_ON;
|
RCC_OscInitStruct->LSIState = RCC_LSI_ON;
|
||||||
}
|
}
|
||||||
|
@ -1125,7 +1146,7 @@ void HAL_RCC_GetOscConfig(RCC_OscInitTypeDef *RCC_OscInitStruct)
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Get the PLL configuration -----------------------------------------------*/
|
/* Get the PLL configuration -----------------------------------------------*/
|
||||||
if((RCC->CR &RCC_CR_PLLON) == RCC_CR_PLLON)
|
if ((RCC->CR & RCC_CR_PLLON) == RCC_CR_PLLON)
|
||||||
{
|
{
|
||||||
RCC_OscInitStruct->PLL.PLLState = RCC_PLL_ON;
|
RCC_OscInitStruct->PLL.PLLState = RCC_PLL_ON;
|
||||||
}
|
}
|
||||||
|
@ -1180,7 +1201,7 @@ void HAL_RCC_GetClockConfig(RCC_ClkInitTypeDef *RCC_ClkInitStruct, uint32_t *pF
|
||||||
void HAL_RCC_NMI_IRQHandler(void)
|
void HAL_RCC_NMI_IRQHandler(void)
|
||||||
{
|
{
|
||||||
/* Check RCC CSSF flag */
|
/* Check RCC CSSF flag */
|
||||||
if(__HAL_RCC_GET_IT(RCC_IT_CSS))
|
if (__HAL_RCC_GET_IT(RCC_IT_CSS))
|
||||||
{
|
{
|
||||||
/* RCC Clock Security System interrupt user callback */
|
/* RCC Clock Security System interrupt user callback */
|
||||||
HAL_RCC_CSSCallback();
|
HAL_RCC_CSSCallback();
|
||||||
|
|
|
@ -98,18 +98,22 @@
|
||||||
*** Callback registration ***
|
*** Callback registration ***
|
||||||
=============================================
|
=============================================
|
||||||
|
|
||||||
|
[..]
|
||||||
The compilation define USE_HAL_TIM_REGISTER_CALLBACKS when set to 1
|
The compilation define USE_HAL_TIM_REGISTER_CALLBACKS when set to 1
|
||||||
allows the user to configure dynamically the driver callbacks.
|
allows the user to configure dynamically the driver callbacks.
|
||||||
|
|
||||||
|
[..]
|
||||||
Use Function @ref HAL_TIM_RegisterCallback() to register a callback.
|
Use Function @ref HAL_TIM_RegisterCallback() to register a callback.
|
||||||
@ref HAL_TIM_RegisterCallback() takes as parameters the HAL peripheral handle,
|
@ref HAL_TIM_RegisterCallback() takes as parameters the HAL peripheral handle,
|
||||||
the Callback ID and a pointer to the user callback function.
|
the Callback ID and a pointer to the user callback function.
|
||||||
|
|
||||||
|
[..]
|
||||||
Use function @ref HAL_TIM_UnRegisterCallback() to reset a callback to the default
|
Use function @ref HAL_TIM_UnRegisterCallback() to reset a callback to the default
|
||||||
weak function.
|
weak function.
|
||||||
@ref HAL_TIM_UnRegisterCallback takes as parameters the HAL peripheral handle,
|
@ref HAL_TIM_UnRegisterCallback takes as parameters the HAL peripheral handle,
|
||||||
and the Callback ID.
|
and the Callback ID.
|
||||||
|
|
||||||
|
[..]
|
||||||
These functions allow to register/unregister following callbacks:
|
These functions allow to register/unregister following callbacks:
|
||||||
(+) Base_MspInitCallback : TIM Base Msp Init Callback.
|
(+) Base_MspInitCallback : TIM Base Msp Init Callback.
|
||||||
(+) Base_MspDeInitCallback : TIM Base Msp DeInit Callback.
|
(+) Base_MspDeInitCallback : TIM Base Msp DeInit Callback.
|
||||||
|
@ -140,15 +144,18 @@
|
||||||
(+) BreakCallback : TIM Break Callback.
|
(+) BreakCallback : TIM Break Callback.
|
||||||
(+) Break2Callback : TIM Break2 Callback.
|
(+) Break2Callback : TIM Break2 Callback.
|
||||||
|
|
||||||
|
[..]
|
||||||
By default, after the Init and when the state is HAL_TIM_STATE_RESET
|
By default, after the Init and when the state is HAL_TIM_STATE_RESET
|
||||||
all interrupt callbacks are set to the corresponding weak functions:
|
all interrupt callbacks are set to the corresponding weak functions:
|
||||||
examples @ref HAL_TIM_TriggerCallback(), @ref HAL_TIM_ErrorCallback().
|
examples @ref HAL_TIM_TriggerCallback(), @ref HAL_TIM_ErrorCallback().
|
||||||
|
|
||||||
|
[..]
|
||||||
Exception done for MspInit and MspDeInit functions that are reset to the legacy weak
|
Exception done for MspInit and MspDeInit functions that are reset to the legacy weak
|
||||||
functionalities in the Init / DeInit only when these callbacks are null
|
functionalities in the Init / DeInit only when these callbacks are null
|
||||||
(not registered beforehand). If not, MspInit or MspDeInit are not null, the Init / DeInit
|
(not registered beforehand). If not, MspInit or MspDeInit are not null, the Init / DeInit
|
||||||
keep and use the user MspInit / MspDeInit callbacks(registered beforehand)
|
keep and use the user MspInit / MspDeInit callbacks(registered beforehand)
|
||||||
|
|
||||||
|
[..]
|
||||||
Callbacks can be registered / unregistered in HAL_TIM_STATE_READY state only.
|
Callbacks can be registered / unregistered in HAL_TIM_STATE_READY state only.
|
||||||
Exception done MspInit / MspDeInit that can be registered / unregistered
|
Exception done MspInit / MspDeInit that can be registered / unregistered
|
||||||
in HAL_TIM_STATE_READY or HAL_TIM_STATE_RESET state,
|
in HAL_TIM_STATE_READY or HAL_TIM_STATE_RESET state,
|
||||||
|
@ -156,6 +163,7 @@ all interrupt callbacks are set to the corresponding weak functions:
|
||||||
In that case first register the MspInit/MspDeInit user callbacks
|
In that case first register the MspInit/MspDeInit user callbacks
|
||||||
using @ref HAL_TIM_RegisterCallback() before calling DeInit or Init function.
|
using @ref HAL_TIM_RegisterCallback() before calling DeInit or Init function.
|
||||||
|
|
||||||
|
[..]
|
||||||
When The compilation define USE_HAL_TIM_REGISTER_CALLBACKS is set to 0 or
|
When The compilation define USE_HAL_TIM_REGISTER_CALLBACKS is set to 0 or
|
||||||
not defined, the callback registration feature is not available and all callbacks
|
not defined, the callback registration feature is not available and all callbacks
|
||||||
are set to the corresponding weak functions.
|
are set to the corresponding weak functions.
|
||||||
|
@ -216,7 +224,7 @@ static void TIM_DMAPeriodElapsedHalfCplt(DMA_HandleTypeDef *hdma);
|
||||||
static void TIM_DMATriggerCplt(DMA_HandleTypeDef *hdma);
|
static void TIM_DMATriggerCplt(DMA_HandleTypeDef *hdma);
|
||||||
static void TIM_DMATriggerHalfCplt(DMA_HandleTypeDef *hdma);
|
static void TIM_DMATriggerHalfCplt(DMA_HandleTypeDef *hdma);
|
||||||
static HAL_StatusTypeDef TIM_SlaveTimer_SetConfig(TIM_HandleTypeDef *htim,
|
static HAL_StatusTypeDef TIM_SlaveTimer_SetConfig(TIM_HandleTypeDef *htim,
|
||||||
TIM_SlaveConfigTypeDef *sSlaveConfig);
|
TIM_SlaveConfigTypeDef *sSlaveConfig);
|
||||||
/**
|
/**
|
||||||
* @}
|
* @}
|
||||||
*/
|
*/
|
||||||
|
@ -227,8 +235,8 @@ static HAL_StatusTypeDef TIM_SlaveTimer_SetConfig(TIM_HandleTypeDef *htim,
|
||||||
*/
|
*/
|
||||||
|
|
||||||
/** @defgroup TIM_Exported_Functions_Group1 TIM Time Base functions
|
/** @defgroup TIM_Exported_Functions_Group1 TIM Time Base functions
|
||||||
* @brief Time Base functions
|
* @brief Time Base functions
|
||||||
*
|
*
|
||||||
@verbatim
|
@verbatim
|
||||||
==============================================================================
|
==============================================================================
|
||||||
##### Time Base functions #####
|
##### Time Base functions #####
|
||||||
|
@ -482,11 +490,11 @@ HAL_StatusTypeDef HAL_TIM_Base_Start_DMA(TIM_HandleTypeDef *htim, uint32_t *pDat
|
||||||
/* Check the parameters */
|
/* Check the parameters */
|
||||||
assert_param(IS_TIM_DMA_INSTANCE(htim->Instance));
|
assert_param(IS_TIM_DMA_INSTANCE(htim->Instance));
|
||||||
|
|
||||||
if ((htim->State == HAL_TIM_STATE_BUSY))
|
if (htim->State == HAL_TIM_STATE_BUSY)
|
||||||
{
|
{
|
||||||
return HAL_BUSY;
|
return HAL_BUSY;
|
||||||
}
|
}
|
||||||
else if ((htim->State == HAL_TIM_STATE_READY))
|
else if (htim->State == HAL_TIM_STATE_READY)
|
||||||
{
|
{
|
||||||
if ((pData == NULL) && (Length > 0U))
|
if ((pData == NULL) && (Length > 0U))
|
||||||
{
|
{
|
||||||
|
@ -559,8 +567,8 @@ HAL_StatusTypeDef HAL_TIM_Base_Stop_DMA(TIM_HandleTypeDef *htim)
|
||||||
*/
|
*/
|
||||||
|
|
||||||
/** @defgroup TIM_Exported_Functions_Group2 TIM Output Compare functions
|
/** @defgroup TIM_Exported_Functions_Group2 TIM Output Compare functions
|
||||||
* @brief TIM Output Compare functions
|
* @brief TIM Output Compare functions
|
||||||
*
|
*
|
||||||
@verbatim
|
@verbatim
|
||||||
==============================================================================
|
==============================================================================
|
||||||
##### TIM Output Compare functions #####
|
##### TIM Output Compare functions #####
|
||||||
|
@ -929,16 +937,16 @@ HAL_StatusTypeDef HAL_TIM_OC_Stop_IT(TIM_HandleTypeDef *htim, uint32_t Channel)
|
||||||
*/
|
*/
|
||||||
HAL_StatusTypeDef HAL_TIM_OC_Start_DMA(TIM_HandleTypeDef *htim, uint32_t Channel, uint32_t *pData, uint16_t Length)
|
HAL_StatusTypeDef HAL_TIM_OC_Start_DMA(TIM_HandleTypeDef *htim, uint32_t Channel, uint32_t *pData, uint16_t Length)
|
||||||
{
|
{
|
||||||
uint32_t tmpsmcr;
|
uint32_t tmpsmcr;
|
||||||
|
|
||||||
/* Check the parameters */
|
/* Check the parameters */
|
||||||
assert_param(IS_TIM_CCX_INSTANCE(htim->Instance, Channel));
|
assert_param(IS_TIM_CCX_INSTANCE(htim->Instance, Channel));
|
||||||
|
|
||||||
if ((htim->State == HAL_TIM_STATE_BUSY))
|
if (htim->State == HAL_TIM_STATE_BUSY)
|
||||||
{
|
{
|
||||||
return HAL_BUSY;
|
return HAL_BUSY;
|
||||||
}
|
}
|
||||||
else if ((htim->State == HAL_TIM_STATE_READY))
|
else if (htim->State == HAL_TIM_STATE_READY)
|
||||||
{
|
{
|
||||||
if ((pData == NULL) && (Length > 0U))
|
if ((pData == NULL) && (Length > 0U))
|
||||||
{
|
{
|
||||||
|
@ -1136,8 +1144,8 @@ HAL_StatusTypeDef HAL_TIM_OC_Stop_DMA(TIM_HandleTypeDef *htim, uint32_t Channel)
|
||||||
*/
|
*/
|
||||||
|
|
||||||
/** @defgroup TIM_Exported_Functions_Group3 TIM PWM functions
|
/** @defgroup TIM_Exported_Functions_Group3 TIM PWM functions
|
||||||
* @brief TIM PWM functions
|
* @brief TIM PWM functions
|
||||||
*
|
*
|
||||||
@verbatim
|
@verbatim
|
||||||
==============================================================================
|
==============================================================================
|
||||||
##### TIM PWM functions #####
|
##### TIM PWM functions #####
|
||||||
|
@ -1513,11 +1521,11 @@ HAL_StatusTypeDef HAL_TIM_PWM_Start_DMA(TIM_HandleTypeDef *htim, uint32_t Channe
|
||||||
/* Check the parameters */
|
/* Check the parameters */
|
||||||
assert_param(IS_TIM_CCX_INSTANCE(htim->Instance, Channel));
|
assert_param(IS_TIM_CCX_INSTANCE(htim->Instance, Channel));
|
||||||
|
|
||||||
if ((htim->State == HAL_TIM_STATE_BUSY))
|
if (htim->State == HAL_TIM_STATE_BUSY)
|
||||||
{
|
{
|
||||||
return HAL_BUSY;
|
return HAL_BUSY;
|
||||||
}
|
}
|
||||||
else if ((htim->State == HAL_TIM_STATE_READY))
|
else if (htim->State == HAL_TIM_STATE_READY)
|
||||||
{
|
{
|
||||||
if ((pData == NULL) && (Length > 0U))
|
if ((pData == NULL) && (Length > 0U))
|
||||||
{
|
{
|
||||||
|
@ -1714,8 +1722,8 @@ HAL_StatusTypeDef HAL_TIM_PWM_Stop_DMA(TIM_HandleTypeDef *htim, uint32_t Channel
|
||||||
*/
|
*/
|
||||||
|
|
||||||
/** @defgroup TIM_Exported_Functions_Group4 TIM Input Capture functions
|
/** @defgroup TIM_Exported_Functions_Group4 TIM Input Capture functions
|
||||||
* @brief TIM Input Capture functions
|
* @brief TIM Input Capture functions
|
||||||
*
|
*
|
||||||
@verbatim
|
@verbatim
|
||||||
==============================================================================
|
==============================================================================
|
||||||
##### TIM Input Capture functions #####
|
##### TIM Input Capture functions #####
|
||||||
|
@ -2061,11 +2069,11 @@ HAL_StatusTypeDef HAL_TIM_IC_Start_DMA(TIM_HandleTypeDef *htim, uint32_t Channel
|
||||||
assert_param(IS_TIM_CCX_INSTANCE(htim->Instance, Channel));
|
assert_param(IS_TIM_CCX_INSTANCE(htim->Instance, Channel));
|
||||||
assert_param(IS_TIM_DMA_CC_INSTANCE(htim->Instance));
|
assert_param(IS_TIM_DMA_CC_INSTANCE(htim->Instance));
|
||||||
|
|
||||||
if ((htim->State == HAL_TIM_STATE_BUSY))
|
if (htim->State == HAL_TIM_STATE_BUSY)
|
||||||
{
|
{
|
||||||
return HAL_BUSY;
|
return HAL_BUSY;
|
||||||
}
|
}
|
||||||
else if ((htim->State == HAL_TIM_STATE_READY))
|
else if (htim->State == HAL_TIM_STATE_READY)
|
||||||
{
|
{
|
||||||
if ((pData == NULL) && (Length > 0U))
|
if ((pData == NULL) && (Length > 0U))
|
||||||
{
|
{
|
||||||
|
@ -2249,8 +2257,8 @@ HAL_StatusTypeDef HAL_TIM_IC_Stop_DMA(TIM_HandleTypeDef *htim, uint32_t Channel)
|
||||||
*/
|
*/
|
||||||
|
|
||||||
/** @defgroup TIM_Exported_Functions_Group5 TIM One Pulse functions
|
/** @defgroup TIM_Exported_Functions_Group5 TIM One Pulse functions
|
||||||
* @brief TIM One Pulse functions
|
* @brief TIM One Pulse functions
|
||||||
*
|
*
|
||||||
@verbatim
|
@verbatim
|
||||||
==============================================================================
|
==============================================================================
|
||||||
##### TIM One Pulse functions #####
|
##### TIM One Pulse functions #####
|
||||||
|
@ -2563,8 +2571,8 @@ HAL_StatusTypeDef HAL_TIM_OnePulse_Stop_IT(TIM_HandleTypeDef *htim, uint32_t Out
|
||||||
*/
|
*/
|
||||||
|
|
||||||
/** @defgroup TIM_Exported_Functions_Group6 TIM Encoder functions
|
/** @defgroup TIM_Exported_Functions_Group6 TIM Encoder functions
|
||||||
* @brief TIM Encoder functions
|
* @brief TIM Encoder functions
|
||||||
*
|
*
|
||||||
@verbatim
|
@verbatim
|
||||||
==============================================================================
|
==============================================================================
|
||||||
##### TIM Encoder functions #####
|
##### TIM Encoder functions #####
|
||||||
|
@ -2609,15 +2617,15 @@ HAL_StatusTypeDef HAL_TIM_Encoder_Init(TIM_HandleTypeDef *htim, TIM_Encoder_Ini
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Check the parameters */
|
/* Check the parameters */
|
||||||
|
assert_param(IS_TIM_ENCODER_INTERFACE_INSTANCE(htim->Instance));
|
||||||
assert_param(IS_TIM_COUNTER_MODE(htim->Init.CounterMode));
|
assert_param(IS_TIM_COUNTER_MODE(htim->Init.CounterMode));
|
||||||
assert_param(IS_TIM_CLOCKDIVISION_DIV(htim->Init.ClockDivision));
|
assert_param(IS_TIM_CLOCKDIVISION_DIV(htim->Init.ClockDivision));
|
||||||
assert_param(IS_TIM_AUTORELOAD_PRELOAD(htim->Init.AutoReloadPreload));
|
assert_param(IS_TIM_AUTORELOAD_PRELOAD(htim->Init.AutoReloadPreload));
|
||||||
assert_param(IS_TIM_CC2_INSTANCE(htim->Instance));
|
|
||||||
assert_param(IS_TIM_ENCODER_MODE(sConfig->EncoderMode));
|
assert_param(IS_TIM_ENCODER_MODE(sConfig->EncoderMode));
|
||||||
assert_param(IS_TIM_IC_SELECTION(sConfig->IC1Selection));
|
assert_param(IS_TIM_IC_SELECTION(sConfig->IC1Selection));
|
||||||
assert_param(IS_TIM_IC_SELECTION(sConfig->IC2Selection));
|
assert_param(IS_TIM_IC_SELECTION(sConfig->IC2Selection));
|
||||||
assert_param(IS_TIM_IC_POLARITY(sConfig->IC1Polarity));
|
assert_param(IS_TIM_ENCODERINPUT_POLARITY(sConfig->IC1Polarity));
|
||||||
assert_param(IS_TIM_IC_POLARITY(sConfig->IC2Polarity));
|
assert_param(IS_TIM_ENCODERINPUT_POLARITY(sConfig->IC2Polarity));
|
||||||
assert_param(IS_TIM_IC_PRESCALER(sConfig->IC1Prescaler));
|
assert_param(IS_TIM_IC_PRESCALER(sConfig->IC1Prescaler));
|
||||||
assert_param(IS_TIM_IC_PRESCALER(sConfig->IC2Prescaler));
|
assert_param(IS_TIM_IC_PRESCALER(sConfig->IC2Prescaler));
|
||||||
assert_param(IS_TIM_IC_FILTER(sConfig->IC1Filter));
|
assert_param(IS_TIM_IC_FILTER(sConfig->IC1Filter));
|
||||||
|
@ -2775,7 +2783,7 @@ __weak void HAL_TIM_Encoder_MspDeInit(TIM_HandleTypeDef *htim)
|
||||||
HAL_StatusTypeDef HAL_TIM_Encoder_Start(TIM_HandleTypeDef *htim, uint32_t Channel)
|
HAL_StatusTypeDef HAL_TIM_Encoder_Start(TIM_HandleTypeDef *htim, uint32_t Channel)
|
||||||
{
|
{
|
||||||
/* Check the parameters */
|
/* Check the parameters */
|
||||||
assert_param(IS_TIM_CC2_INSTANCE(htim->Instance));
|
assert_param(IS_TIM_ENCODER_INTERFACE_INSTANCE(htim->Instance));
|
||||||
|
|
||||||
/* Enable the encoder interface channels */
|
/* Enable the encoder interface channels */
|
||||||
switch (Channel)
|
switch (Channel)
|
||||||
|
@ -2819,7 +2827,7 @@ HAL_StatusTypeDef HAL_TIM_Encoder_Start(TIM_HandleTypeDef *htim, uint32_t Channe
|
||||||
HAL_StatusTypeDef HAL_TIM_Encoder_Stop(TIM_HandleTypeDef *htim, uint32_t Channel)
|
HAL_StatusTypeDef HAL_TIM_Encoder_Stop(TIM_HandleTypeDef *htim, uint32_t Channel)
|
||||||
{
|
{
|
||||||
/* Check the parameters */
|
/* Check the parameters */
|
||||||
assert_param(IS_TIM_CC2_INSTANCE(htim->Instance));
|
assert_param(IS_TIM_ENCODER_INTERFACE_INSTANCE(htim->Instance));
|
||||||
|
|
||||||
/* Disable the Input Capture channels 1 and 2
|
/* Disable the Input Capture channels 1 and 2
|
||||||
(in the EncoderInterface the two possible channels that can be used are TIM_CHANNEL_1 and TIM_CHANNEL_2) */
|
(in the EncoderInterface the two possible channels that can be used are TIM_CHANNEL_1 and TIM_CHANNEL_2) */
|
||||||
|
@ -2865,7 +2873,7 @@ HAL_StatusTypeDef HAL_TIM_Encoder_Stop(TIM_HandleTypeDef *htim, uint32_t Channel
|
||||||
HAL_StatusTypeDef HAL_TIM_Encoder_Start_IT(TIM_HandleTypeDef *htim, uint32_t Channel)
|
HAL_StatusTypeDef HAL_TIM_Encoder_Start_IT(TIM_HandleTypeDef *htim, uint32_t Channel)
|
||||||
{
|
{
|
||||||
/* Check the parameters */
|
/* Check the parameters */
|
||||||
assert_param(IS_TIM_CC2_INSTANCE(htim->Instance));
|
assert_param(IS_TIM_ENCODER_INTERFACE_INSTANCE(htim->Instance));
|
||||||
|
|
||||||
/* Enable the encoder interface channels */
|
/* Enable the encoder interface channels */
|
||||||
/* Enable the capture compare Interrupts 1 and/or 2 */
|
/* Enable the capture compare Interrupts 1 and/or 2 */
|
||||||
|
@ -2915,7 +2923,7 @@ HAL_StatusTypeDef HAL_TIM_Encoder_Start_IT(TIM_HandleTypeDef *htim, uint32_t Cha
|
||||||
HAL_StatusTypeDef HAL_TIM_Encoder_Stop_IT(TIM_HandleTypeDef *htim, uint32_t Channel)
|
HAL_StatusTypeDef HAL_TIM_Encoder_Stop_IT(TIM_HandleTypeDef *htim, uint32_t Channel)
|
||||||
{
|
{
|
||||||
/* Check the parameters */
|
/* Check the parameters */
|
||||||
assert_param(IS_TIM_CC2_INSTANCE(htim->Instance));
|
assert_param(IS_TIM_ENCODER_INTERFACE_INSTANCE(htim->Instance));
|
||||||
|
|
||||||
/* Disable the Input Capture channels 1 and 2
|
/* Disable the Input Capture channels 1 and 2
|
||||||
(in the EncoderInterface the two possible channels that can be used are TIM_CHANNEL_1 and TIM_CHANNEL_2) */
|
(in the EncoderInterface the two possible channels that can be used are TIM_CHANNEL_1 and TIM_CHANNEL_2) */
|
||||||
|
@ -2966,16 +2974,17 @@ HAL_StatusTypeDef HAL_TIM_Encoder_Stop_IT(TIM_HandleTypeDef *htim, uint32_t Chan
|
||||||
* @param Length The length of data to be transferred from TIM peripheral to memory.
|
* @param Length The length of data to be transferred from TIM peripheral to memory.
|
||||||
* @retval HAL status
|
* @retval HAL status
|
||||||
*/
|
*/
|
||||||
HAL_StatusTypeDef HAL_TIM_Encoder_Start_DMA(TIM_HandleTypeDef *htim, uint32_t Channel, uint32_t *pData1, uint32_t *pData2, uint16_t Length)
|
HAL_StatusTypeDef HAL_TIM_Encoder_Start_DMA(TIM_HandleTypeDef *htim, uint32_t Channel, uint32_t *pData1,
|
||||||
|
uint32_t *pData2, uint16_t Length)
|
||||||
{
|
{
|
||||||
/* Check the parameters */
|
/* Check the parameters */
|
||||||
assert_param(IS_TIM_DMA_CC_INSTANCE(htim->Instance));
|
assert_param(IS_TIM_ENCODER_INTERFACE_INSTANCE(htim->Instance));
|
||||||
|
|
||||||
if ((htim->State == HAL_TIM_STATE_BUSY))
|
if (htim->State == HAL_TIM_STATE_BUSY)
|
||||||
{
|
{
|
||||||
return HAL_BUSY;
|
return HAL_BUSY;
|
||||||
}
|
}
|
||||||
else if ((htim->State == HAL_TIM_STATE_READY))
|
else if (htim->State == HAL_TIM_STATE_READY)
|
||||||
{
|
{
|
||||||
if ((((pData1 == NULL) || (pData2 == NULL))) && (Length > 0U))
|
if ((((pData1 == NULL) || (pData2 == NULL))) && (Length > 0U))
|
||||||
{
|
{
|
||||||
|
@ -3103,7 +3112,7 @@ HAL_StatusTypeDef HAL_TIM_Encoder_Start_DMA(TIM_HandleTypeDef *htim, uint32_t Ch
|
||||||
HAL_StatusTypeDef HAL_TIM_Encoder_Stop_DMA(TIM_HandleTypeDef *htim, uint32_t Channel)
|
HAL_StatusTypeDef HAL_TIM_Encoder_Stop_DMA(TIM_HandleTypeDef *htim, uint32_t Channel)
|
||||||
{
|
{
|
||||||
/* Check the parameters */
|
/* Check the parameters */
|
||||||
assert_param(IS_TIM_DMA_CC_INSTANCE(htim->Instance));
|
assert_param(IS_TIM_ENCODER_INTERFACE_INSTANCE(htim->Instance));
|
||||||
|
|
||||||
/* Disable the Input Capture channels 1 and 2
|
/* Disable the Input Capture channels 1 and 2
|
||||||
(in the EncoderInterface the two possible channels that can be used are TIM_CHANNEL_1 and TIM_CHANNEL_2) */
|
(in the EncoderInterface the two possible channels that can be used are TIM_CHANNEL_1 and TIM_CHANNEL_2) */
|
||||||
|
@ -3149,8 +3158,8 @@ HAL_StatusTypeDef HAL_TIM_Encoder_Stop_DMA(TIM_HandleTypeDef *htim, uint32_t Cha
|
||||||
* @}
|
* @}
|
||||||
*/
|
*/
|
||||||
/** @defgroup TIM_Exported_Functions_Group7 TIM IRQ handler management
|
/** @defgroup TIM_Exported_Functions_Group7 TIM IRQ handler management
|
||||||
* @brief TIM IRQ handler management
|
* @brief TIM IRQ handler management
|
||||||
*
|
*
|
||||||
@verbatim
|
@verbatim
|
||||||
==============================================================================
|
==============================================================================
|
||||||
##### IRQ handler management #####
|
##### IRQ handler management #####
|
||||||
|
@ -3363,8 +3372,8 @@ void HAL_TIM_IRQHandler(TIM_HandleTypeDef *htim)
|
||||||
*/
|
*/
|
||||||
|
|
||||||
/** @defgroup TIM_Exported_Functions_Group8 TIM Peripheral Control functions
|
/** @defgroup TIM_Exported_Functions_Group8 TIM Peripheral Control functions
|
||||||
* @brief TIM Peripheral Control functions
|
* @brief TIM Peripheral Control functions
|
||||||
*
|
*
|
||||||
@verbatim
|
@verbatim
|
||||||
==============================================================================
|
==============================================================================
|
||||||
##### Peripheral Control functions #####
|
##### Peripheral Control functions #####
|
||||||
|
@ -3738,9 +3747,14 @@ HAL_StatusTypeDef HAL_TIM_PWM_ConfigChannel(TIM_HandleTypeDef *htim,
|
||||||
* This parameter can be one of the following values:
|
* This parameter can be one of the following values:
|
||||||
* @arg TIM_CHANNEL_1: TIM Channel 1 selected
|
* @arg TIM_CHANNEL_1: TIM Channel 1 selected
|
||||||
* @arg TIM_CHANNEL_2: TIM Channel 2 selected
|
* @arg TIM_CHANNEL_2: TIM Channel 2 selected
|
||||||
|
* @note To output a waveform with a minimum delay user can enable the fast
|
||||||
|
* mode by calling the @ref __HAL_TIM_ENABLE_OCxFAST macro. Then CCx
|
||||||
|
* output is forced in response to the edge detection on TIx input,
|
||||||
|
* without taking in account the comparison.
|
||||||
* @retval HAL status
|
* @retval HAL status
|
||||||
*/
|
*/
|
||||||
HAL_StatusTypeDef HAL_TIM_OnePulse_ConfigChannel(TIM_HandleTypeDef *htim, TIM_OnePulse_InitTypeDef *sConfig, uint32_t OutputChannel, uint32_t InputChannel)
|
HAL_StatusTypeDef HAL_TIM_OnePulse_ConfigChannel(TIM_HandleTypeDef *htim, TIM_OnePulse_InitTypeDef *sConfig,
|
||||||
|
uint32_t OutputChannel, uint32_t InputChannel)
|
||||||
{
|
{
|
||||||
TIM_OC_InitTypeDef temp1;
|
TIM_OC_InitTypeDef temp1;
|
||||||
|
|
||||||
|
@ -3894,11 +3908,11 @@ HAL_StatusTypeDef HAL_TIM_DMABurst_WriteStart(TIM_HandleTypeDef *htim, uint32_t
|
||||||
assert_param(IS_TIM_DMA_SOURCE(BurstRequestSrc));
|
assert_param(IS_TIM_DMA_SOURCE(BurstRequestSrc));
|
||||||
assert_param(IS_TIM_DMA_LENGTH(BurstLength));
|
assert_param(IS_TIM_DMA_LENGTH(BurstLength));
|
||||||
|
|
||||||
if ((htim->State == HAL_TIM_STATE_BUSY))
|
if (htim->State == HAL_TIM_STATE_BUSY)
|
||||||
{
|
{
|
||||||
return HAL_BUSY;
|
return HAL_BUSY;
|
||||||
}
|
}
|
||||||
else if ((htim->State == HAL_TIM_STATE_READY))
|
else if (htim->State == HAL_TIM_STATE_READY)
|
||||||
{
|
{
|
||||||
if ((BurstBuffer == NULL) && (BurstLength > 0U))
|
if ((BurstBuffer == NULL) && (BurstLength > 0U))
|
||||||
{
|
{
|
||||||
|
@ -3941,7 +3955,8 @@ HAL_StatusTypeDef HAL_TIM_DMABurst_WriteStart(TIM_HandleTypeDef *htim, uint32_t
|
||||||
htim->hdma[TIM_DMA_ID_CC1]->XferErrorCallback = TIM_DMAError ;
|
htim->hdma[TIM_DMA_ID_CC1]->XferErrorCallback = TIM_DMAError ;
|
||||||
|
|
||||||
/* Enable the DMA stream */
|
/* Enable the DMA stream */
|
||||||
if (HAL_DMA_Start_IT(htim->hdma[TIM_DMA_ID_CC1], (uint32_t)BurstBuffer, (uint32_t)&htim->Instance->DMAR, ((BurstLength) >> 8U) + 1U) != HAL_OK)
|
if (HAL_DMA_Start_IT(htim->hdma[TIM_DMA_ID_CC1], (uint32_t)BurstBuffer,
|
||||||
|
(uint32_t)&htim->Instance->DMAR, ((BurstLength) >> 8U) + 1U) != HAL_OK)
|
||||||
{
|
{
|
||||||
return HAL_ERROR;
|
return HAL_ERROR;
|
||||||
}
|
}
|
||||||
|
@ -3957,7 +3972,8 @@ HAL_StatusTypeDef HAL_TIM_DMABurst_WriteStart(TIM_HandleTypeDef *htim, uint32_t
|
||||||
htim->hdma[TIM_DMA_ID_CC2]->XferErrorCallback = TIM_DMAError ;
|
htim->hdma[TIM_DMA_ID_CC2]->XferErrorCallback = TIM_DMAError ;
|
||||||
|
|
||||||
/* Enable the DMA stream */
|
/* Enable the DMA stream */
|
||||||
if (HAL_DMA_Start_IT(htim->hdma[TIM_DMA_ID_CC2], (uint32_t)BurstBuffer, (uint32_t)&htim->Instance->DMAR, ((BurstLength) >> 8U) + 1U) != HAL_OK)
|
if (HAL_DMA_Start_IT(htim->hdma[TIM_DMA_ID_CC2], (uint32_t)BurstBuffer,
|
||||||
|
(uint32_t)&htim->Instance->DMAR, ((BurstLength) >> 8U) + 1U) != HAL_OK)
|
||||||
{
|
{
|
||||||
return HAL_ERROR;
|
return HAL_ERROR;
|
||||||
}
|
}
|
||||||
|
@ -3973,7 +3989,8 @@ HAL_StatusTypeDef HAL_TIM_DMABurst_WriteStart(TIM_HandleTypeDef *htim, uint32_t
|
||||||
htim->hdma[TIM_DMA_ID_CC3]->XferErrorCallback = TIM_DMAError ;
|
htim->hdma[TIM_DMA_ID_CC3]->XferErrorCallback = TIM_DMAError ;
|
||||||
|
|
||||||
/* Enable the DMA stream */
|
/* Enable the DMA stream */
|
||||||
if (HAL_DMA_Start_IT(htim->hdma[TIM_DMA_ID_CC3], (uint32_t)BurstBuffer, (uint32_t)&htim->Instance->DMAR, ((BurstLength) >> 8U) + 1U) != HAL_OK)
|
if (HAL_DMA_Start_IT(htim->hdma[TIM_DMA_ID_CC3], (uint32_t)BurstBuffer,
|
||||||
|
(uint32_t)&htim->Instance->DMAR, ((BurstLength) >> 8U) + 1U) != HAL_OK)
|
||||||
{
|
{
|
||||||
return HAL_ERROR;
|
return HAL_ERROR;
|
||||||
}
|
}
|
||||||
|
@ -3989,7 +4006,8 @@ HAL_StatusTypeDef HAL_TIM_DMABurst_WriteStart(TIM_HandleTypeDef *htim, uint32_t
|
||||||
htim->hdma[TIM_DMA_ID_CC4]->XferErrorCallback = TIM_DMAError ;
|
htim->hdma[TIM_DMA_ID_CC4]->XferErrorCallback = TIM_DMAError ;
|
||||||
|
|
||||||
/* Enable the DMA stream */
|
/* Enable the DMA stream */
|
||||||
if (HAL_DMA_Start_IT(htim->hdma[TIM_DMA_ID_CC4], (uint32_t)BurstBuffer, (uint32_t)&htim->Instance->DMAR, ((BurstLength) >> 8U) + 1U) != HAL_OK)
|
if (HAL_DMA_Start_IT(htim->hdma[TIM_DMA_ID_CC4], (uint32_t)BurstBuffer,
|
||||||
|
(uint32_t)&htim->Instance->DMAR, ((BurstLength) >> 8U) + 1U) != HAL_OK)
|
||||||
{
|
{
|
||||||
return HAL_ERROR;
|
return HAL_ERROR;
|
||||||
}
|
}
|
||||||
|
@ -4005,7 +4023,8 @@ HAL_StatusTypeDef HAL_TIM_DMABurst_WriteStart(TIM_HandleTypeDef *htim, uint32_t
|
||||||
htim->hdma[TIM_DMA_ID_COMMUTATION]->XferErrorCallback = TIM_DMAError ;
|
htim->hdma[TIM_DMA_ID_COMMUTATION]->XferErrorCallback = TIM_DMAError ;
|
||||||
|
|
||||||
/* Enable the DMA stream */
|
/* Enable the DMA stream */
|
||||||
if (HAL_DMA_Start_IT(htim->hdma[TIM_DMA_ID_COMMUTATION], (uint32_t)BurstBuffer, (uint32_t)&htim->Instance->DMAR, ((BurstLength) >> 8U) + 1U) != HAL_OK)
|
if (HAL_DMA_Start_IT(htim->hdma[TIM_DMA_ID_COMMUTATION], (uint32_t)BurstBuffer,
|
||||||
|
(uint32_t)&htim->Instance->DMAR, ((BurstLength) >> 8U) + 1U) != HAL_OK)
|
||||||
{
|
{
|
||||||
return HAL_ERROR;
|
return HAL_ERROR;
|
||||||
}
|
}
|
||||||
|
@ -4021,7 +4040,8 @@ HAL_StatusTypeDef HAL_TIM_DMABurst_WriteStart(TIM_HandleTypeDef *htim, uint32_t
|
||||||
htim->hdma[TIM_DMA_ID_TRIGGER]->XferErrorCallback = TIM_DMAError ;
|
htim->hdma[TIM_DMA_ID_TRIGGER]->XferErrorCallback = TIM_DMAError ;
|
||||||
|
|
||||||
/* Enable the DMA stream */
|
/* Enable the DMA stream */
|
||||||
if (HAL_DMA_Start_IT(htim->hdma[TIM_DMA_ID_TRIGGER], (uint32_t)BurstBuffer, (uint32_t)&htim->Instance->DMAR, ((BurstLength) >> 8U) + 1U) != HAL_OK)
|
if (HAL_DMA_Start_IT(htim->hdma[TIM_DMA_ID_TRIGGER], (uint32_t)BurstBuffer,
|
||||||
|
(uint32_t)&htim->Instance->DMAR, ((BurstLength) >> 8U) + 1U) != HAL_OK)
|
||||||
{
|
{
|
||||||
return HAL_ERROR;
|
return HAL_ERROR;
|
||||||
}
|
}
|
||||||
|
@ -4151,8 +4171,8 @@ HAL_StatusTypeDef HAL_TIM_DMABurst_WriteStop(TIM_HandleTypeDef *htim, uint32_t B
|
||||||
* @note This function should be used only when BurstLength is equal to DMA data transfer length.
|
* @note This function should be used only when BurstLength is equal to DMA data transfer length.
|
||||||
* @retval HAL status
|
* @retval HAL status
|
||||||
*/
|
*/
|
||||||
HAL_StatusTypeDef HAL_TIM_DMABurst_ReadStart(TIM_HandleTypeDef *htim, uint32_t BurstBaseAddress, uint32_t BurstRequestSrc,
|
HAL_StatusTypeDef HAL_TIM_DMABurst_ReadStart(TIM_HandleTypeDef *htim, uint32_t BurstBaseAddress,
|
||||||
uint32_t *BurstBuffer, uint32_t BurstLength)
|
uint32_t BurstRequestSrc, uint32_t *BurstBuffer, uint32_t BurstLength)
|
||||||
{
|
{
|
||||||
/* Check the parameters */
|
/* Check the parameters */
|
||||||
assert_param(IS_TIM_DMABURST_INSTANCE(htim->Instance));
|
assert_param(IS_TIM_DMABURST_INSTANCE(htim->Instance));
|
||||||
|
@ -4160,11 +4180,11 @@ HAL_StatusTypeDef HAL_TIM_DMABurst_ReadStart(TIM_HandleTypeDef *htim, uint32_t B
|
||||||
assert_param(IS_TIM_DMA_SOURCE(BurstRequestSrc));
|
assert_param(IS_TIM_DMA_SOURCE(BurstRequestSrc));
|
||||||
assert_param(IS_TIM_DMA_LENGTH(BurstLength));
|
assert_param(IS_TIM_DMA_LENGTH(BurstLength));
|
||||||
|
|
||||||
if ((htim->State == HAL_TIM_STATE_BUSY))
|
if (htim->State == HAL_TIM_STATE_BUSY)
|
||||||
{
|
{
|
||||||
return HAL_BUSY;
|
return HAL_BUSY;
|
||||||
}
|
}
|
||||||
else if ((htim->State == HAL_TIM_STATE_READY))
|
else if (htim->State == HAL_TIM_STATE_READY)
|
||||||
{
|
{
|
||||||
if ((BurstBuffer == NULL) && (BurstLength > 0U))
|
if ((BurstBuffer == NULL) && (BurstLength > 0U))
|
||||||
{
|
{
|
||||||
|
@ -4465,7 +4485,7 @@ HAL_StatusTypeDef HAL_TIM_ConfigOCrefClear(TIM_HandleTypeDef *htim,
|
||||||
/* When OCRef clear feature is used with ETR source, ETR prescaler must be off */
|
/* When OCRef clear feature is used with ETR source, ETR prescaler must be off */
|
||||||
if (sClearInputConfig->ClearInputPrescaler != TIM_CLEARINPUTPRESCALER_DIV1)
|
if (sClearInputConfig->ClearInputPrescaler != TIM_CLEARINPUTPRESCALER_DIV1)
|
||||||
{
|
{
|
||||||
htim->State = HAL_TIM_STATE_READY;
|
htim->State = HAL_TIM_STATE_READY;
|
||||||
__HAL_UNLOCK(htim);
|
__HAL_UNLOCK(htim);
|
||||||
return HAL_ERROR;
|
return HAL_ERROR;
|
||||||
}
|
}
|
||||||
|
@ -4780,9 +4800,9 @@ HAL_StatusTypeDef HAL_TIM_SlaveConfigSynchro(TIM_HandleTypeDef *htim, TIM_SlaveC
|
||||||
|
|
||||||
htim->State = HAL_TIM_STATE_BUSY;
|
htim->State = HAL_TIM_STATE_BUSY;
|
||||||
|
|
||||||
if(TIM_SlaveTimer_SetConfig(htim, sSlaveConfig) != HAL_OK)
|
if (TIM_SlaveTimer_SetConfig(htim, sSlaveConfig) != HAL_OK)
|
||||||
{
|
{
|
||||||
htim->State = HAL_TIM_STATE_READY;
|
htim->State = HAL_TIM_STATE_READY;
|
||||||
__HAL_UNLOCK(htim);
|
__HAL_UNLOCK(htim);
|
||||||
return HAL_ERROR;
|
return HAL_ERROR;
|
||||||
}
|
}
|
||||||
|
@ -4810,7 +4830,7 @@ HAL_StatusTypeDef HAL_TIM_SlaveConfigSynchro(TIM_HandleTypeDef *htim, TIM_SlaveC
|
||||||
* @retval HAL status
|
* @retval HAL status
|
||||||
*/
|
*/
|
||||||
HAL_StatusTypeDef HAL_TIM_SlaveConfigSynchro_IT(TIM_HandleTypeDef *htim,
|
HAL_StatusTypeDef HAL_TIM_SlaveConfigSynchro_IT(TIM_HandleTypeDef *htim,
|
||||||
TIM_SlaveConfigTypeDef *sSlaveConfig)
|
TIM_SlaveConfigTypeDef *sSlaveConfig)
|
||||||
{
|
{
|
||||||
/* Check the parameters */
|
/* Check the parameters */
|
||||||
assert_param(IS_TIM_SLAVE_INSTANCE(htim->Instance));
|
assert_param(IS_TIM_SLAVE_INSTANCE(htim->Instance));
|
||||||
|
@ -4821,9 +4841,9 @@ HAL_StatusTypeDef HAL_TIM_SlaveConfigSynchro_IT(TIM_HandleTypeDef *htim,
|
||||||
|
|
||||||
htim->State = HAL_TIM_STATE_BUSY;
|
htim->State = HAL_TIM_STATE_BUSY;
|
||||||
|
|
||||||
if(TIM_SlaveTimer_SetConfig(htim, sSlaveConfig) != HAL_OK)
|
if (TIM_SlaveTimer_SetConfig(htim, sSlaveConfig) != HAL_OK)
|
||||||
{
|
{
|
||||||
htim->State = HAL_TIM_STATE_READY;
|
htim->State = HAL_TIM_STATE_READY;
|
||||||
__HAL_UNLOCK(htim);
|
__HAL_UNLOCK(htim);
|
||||||
return HAL_ERROR;
|
return HAL_ERROR;
|
||||||
}
|
}
|
||||||
|
@ -4913,8 +4933,8 @@ uint32_t HAL_TIM_ReadCapturedValue(TIM_HandleTypeDef *htim, uint32_t Channel)
|
||||||
*/
|
*/
|
||||||
|
|
||||||
/** @defgroup TIM_Exported_Functions_Group9 TIM Callbacks functions
|
/** @defgroup TIM_Exported_Functions_Group9 TIM Callbacks functions
|
||||||
* @brief TIM Callbacks functions
|
* @brief TIM Callbacks functions
|
||||||
*
|
*
|
||||||
@verbatim
|
@verbatim
|
||||||
==============================================================================
|
==============================================================================
|
||||||
##### TIM Callbacks functions #####
|
##### TIM Callbacks functions #####
|
||||||
|
@ -5118,7 +5138,8 @@ __weak void HAL_TIM_ErrorCallback(TIM_HandleTypeDef *htim)
|
||||||
* @param pCallback pointer to the callback function
|
* @param pCallback pointer to the callback function
|
||||||
* @retval status
|
* @retval status
|
||||||
*/
|
*/
|
||||||
HAL_StatusTypeDef HAL_TIM_RegisterCallback(TIM_HandleTypeDef *htim, HAL_TIM_CallbackIDTypeDef CallbackID, pTIM_CallbackTypeDef pCallback)
|
HAL_StatusTypeDef HAL_TIM_RegisterCallback(TIM_HandleTypeDef *htim, HAL_TIM_CallbackIDTypeDef CallbackID,
|
||||||
|
pTIM_CallbackTypeDef pCallback)
|
||||||
{
|
{
|
||||||
HAL_StatusTypeDef status = HAL_OK;
|
HAL_StatusTypeDef status = HAL_OK;
|
||||||
|
|
||||||
|
@ -5578,8 +5599,8 @@ HAL_StatusTypeDef HAL_TIM_UnRegisterCallback(TIM_HandleTypeDef *htim, HAL_TIM_Ca
|
||||||
*/
|
*/
|
||||||
|
|
||||||
/** @defgroup TIM_Exported_Functions_Group10 TIM Peripheral State functions
|
/** @defgroup TIM_Exported_Functions_Group10 TIM Peripheral State functions
|
||||||
* @brief TIM Peripheral State functions
|
* @brief TIM Peripheral State functions
|
||||||
*
|
*
|
||||||
@verbatim
|
@verbatim
|
||||||
==============================================================================
|
==============================================================================
|
||||||
##### Peripheral State functions #####
|
##### Peripheral State functions #####
|
||||||
|
@ -6365,7 +6386,7 @@ static void TIM_OC6_SetConfig(TIM_TypeDef *TIMx,
|
||||||
* @retval None
|
* @retval None
|
||||||
*/
|
*/
|
||||||
static HAL_StatusTypeDef TIM_SlaveTimer_SetConfig(TIM_HandleTypeDef *htim,
|
static HAL_StatusTypeDef TIM_SlaveTimer_SetConfig(TIM_HandleTypeDef *htim,
|
||||||
TIM_SlaveConfigTypeDef *sSlaveConfig)
|
TIM_SlaveConfigTypeDef *sSlaveConfig)
|
||||||
{
|
{
|
||||||
uint32_t tmpsmcr;
|
uint32_t tmpsmcr;
|
||||||
uint32_t tmpccmr1;
|
uint32_t tmpccmr1;
|
||||||
|
|
|
@ -73,7 +73,7 @@
|
||||||
* opensource.org/licenses/BSD-3-Clause
|
* opensource.org/licenses/BSD-3-Clause
|
||||||
*
|
*
|
||||||
******************************************************************************
|
******************************************************************************
|
||||||
*/
|
*/
|
||||||
|
|
||||||
/* Includes ------------------------------------------------------------------*/
|
/* Includes ------------------------------------------------------------------*/
|
||||||
#include "stm32f7xx_hal.h"
|
#include "stm32f7xx_hal.h"
|
||||||
|
@ -397,11 +397,11 @@ HAL_StatusTypeDef HAL_TIMEx_HallSensor_Start_DMA(TIM_HandleTypeDef *htim, uint32
|
||||||
/* Check the parameters */
|
/* Check the parameters */
|
||||||
assert_param(IS_TIM_HALL_SENSOR_INTERFACE_INSTANCE(htim->Instance));
|
assert_param(IS_TIM_HALL_SENSOR_INTERFACE_INSTANCE(htim->Instance));
|
||||||
|
|
||||||
if ((htim->State == HAL_TIM_STATE_BUSY))
|
if (htim->State == HAL_TIM_STATE_BUSY)
|
||||||
{
|
{
|
||||||
return HAL_BUSY;
|
return HAL_BUSY;
|
||||||
}
|
}
|
||||||
else if ((htim->State == HAL_TIM_STATE_READY))
|
else if (htim->State == HAL_TIM_STATE_READY)
|
||||||
{
|
{
|
||||||
if (((uint32_t)pData == 0U) && (Length > 0U))
|
if (((uint32_t)pData == 0U) && (Length > 0U))
|
||||||
{
|
{
|
||||||
|
@ -709,11 +709,11 @@ HAL_StatusTypeDef HAL_TIMEx_OCN_Start_DMA(TIM_HandleTypeDef *htim, uint32_t Chan
|
||||||
/* Check the parameters */
|
/* Check the parameters */
|
||||||
assert_param(IS_TIM_CCXN_INSTANCE(htim->Instance, Channel));
|
assert_param(IS_TIM_CCXN_INSTANCE(htim->Instance, Channel));
|
||||||
|
|
||||||
if ((htim->State == HAL_TIM_STATE_BUSY))
|
if (htim->State == HAL_TIM_STATE_BUSY)
|
||||||
{
|
{
|
||||||
return HAL_BUSY;
|
return HAL_BUSY;
|
||||||
}
|
}
|
||||||
else if ((htim->State == HAL_TIM_STATE_READY))
|
else if (htim->State == HAL_TIM_STATE_READY)
|
||||||
{
|
{
|
||||||
if (((uint32_t)pData == 0U) && (Length > 0U))
|
if (((uint32_t)pData == 0U) && (Length > 0U))
|
||||||
{
|
{
|
||||||
|
@ -1117,11 +1117,11 @@ HAL_StatusTypeDef HAL_TIMEx_PWMN_Start_DMA(TIM_HandleTypeDef *htim, uint32_t Cha
|
||||||
/* Check the parameters */
|
/* Check the parameters */
|
||||||
assert_param(IS_TIM_CCXN_INSTANCE(htim->Instance, Channel));
|
assert_param(IS_TIM_CCXN_INSTANCE(htim->Instance, Channel));
|
||||||
|
|
||||||
if ((htim->State == HAL_TIM_STATE_BUSY))
|
if (htim->State == HAL_TIM_STATE_BUSY)
|
||||||
{
|
{
|
||||||
return HAL_BUSY;
|
return HAL_BUSY;
|
||||||
}
|
}
|
||||||
else if ((htim->State == HAL_TIM_STATE_READY))
|
else if (htim->State == HAL_TIM_STATE_READY)
|
||||||
{
|
{
|
||||||
if (((uint32_t)pData == 0U) && (Length > 0U))
|
if (((uint32_t)pData == 0U) && (Length > 0U))
|
||||||
{
|
{
|
||||||
|
@ -1466,7 +1466,8 @@ HAL_StatusTypeDef HAL_TIMEx_OnePulseN_Stop_IT(TIM_HandleTypeDef *htim, uint32_t
|
||||||
* @arg TIM_COMMUTATION_SOFTWARE: Commutation source is set by software using the COMG bit
|
* @arg TIM_COMMUTATION_SOFTWARE: Commutation source is set by software using the COMG bit
|
||||||
* @retval HAL status
|
* @retval HAL status
|
||||||
*/
|
*/
|
||||||
HAL_StatusTypeDef HAL_TIMEx_ConfigCommutEvent(TIM_HandleTypeDef *htim, uint32_t InputTrigger, uint32_t CommutationSource)
|
HAL_StatusTypeDef HAL_TIMEx_ConfigCommutEvent(TIM_HandleTypeDef *htim, uint32_t InputTrigger,
|
||||||
|
uint32_t CommutationSource)
|
||||||
{
|
{
|
||||||
/* Check the parameters */
|
/* Check the parameters */
|
||||||
assert_param(IS_TIM_COMMUTATION_EVENT_INSTANCE(htim->Instance));
|
assert_param(IS_TIM_COMMUTATION_EVENT_INSTANCE(htim->Instance));
|
||||||
|
@ -1521,7 +1522,8 @@ HAL_StatusTypeDef HAL_TIMEx_ConfigCommutEvent(TIM_HandleTypeDef *htim, uint32_t
|
||||||
* @arg TIM_COMMUTATION_SOFTWARE: Commutation source is set by software using the COMG bit
|
* @arg TIM_COMMUTATION_SOFTWARE: Commutation source is set by software using the COMG bit
|
||||||
* @retval HAL status
|
* @retval HAL status
|
||||||
*/
|
*/
|
||||||
HAL_StatusTypeDef HAL_TIMEx_ConfigCommutEvent_IT(TIM_HandleTypeDef *htim, uint32_t InputTrigger, uint32_t CommutationSource)
|
HAL_StatusTypeDef HAL_TIMEx_ConfigCommutEvent_IT(TIM_HandleTypeDef *htim, uint32_t InputTrigger,
|
||||||
|
uint32_t CommutationSource)
|
||||||
{
|
{
|
||||||
/* Check the parameters */
|
/* Check the parameters */
|
||||||
assert_param(IS_TIM_COMMUTATION_EVENT_INSTANCE(htim->Instance));
|
assert_param(IS_TIM_COMMUTATION_EVENT_INSTANCE(htim->Instance));
|
||||||
|
@ -1577,7 +1579,8 @@ HAL_StatusTypeDef HAL_TIMEx_ConfigCommutEvent_IT(TIM_HandleTypeDef *htim, uint32
|
||||||
* @arg TIM_COMMUTATION_SOFTWARE: Commutation source is set by software using the COMG bit
|
* @arg TIM_COMMUTATION_SOFTWARE: Commutation source is set by software using the COMG bit
|
||||||
* @retval HAL status
|
* @retval HAL status
|
||||||
*/
|
*/
|
||||||
HAL_StatusTypeDef HAL_TIMEx_ConfigCommutEvent_DMA(TIM_HandleTypeDef *htim, uint32_t InputTrigger, uint32_t CommutationSource)
|
HAL_StatusTypeDef HAL_TIMEx_ConfigCommutEvent_DMA(TIM_HandleTypeDef *htim, uint32_t InputTrigger,
|
||||||
|
uint32_t CommutationSource)
|
||||||
{
|
{
|
||||||
/* Check the parameters */
|
/* Check the parameters */
|
||||||
assert_param(IS_TIM_COMMUTATION_EVENT_INSTANCE(htim->Instance));
|
assert_param(IS_TIM_COMMUTATION_EVENT_INSTANCE(htim->Instance));
|
||||||
|
@ -1632,7 +1635,7 @@ HAL_StatusTypeDef HAL_TIMEx_MasterConfigSynchronization(TIM_HandleTypeDef *htim,
|
||||||
uint32_t tmpsmcr;
|
uint32_t tmpsmcr;
|
||||||
|
|
||||||
/* Check the parameters */
|
/* Check the parameters */
|
||||||
assert_param(IS_TIM_SYNCHRO_INSTANCE(htim->Instance));
|
assert_param(IS_TIM_MASTER_INSTANCE(htim->Instance));
|
||||||
assert_param(IS_TIM_TRGO_SOURCE(sMasterConfig->MasterOutputTrigger));
|
assert_param(IS_TIM_TRGO_SOURCE(sMasterConfig->MasterOutputTrigger));
|
||||||
assert_param(IS_TIM_MSM_STATE(sMasterConfig->MasterSlaveMode));
|
assert_param(IS_TIM_MSM_STATE(sMasterConfig->MasterSlaveMode));
|
||||||
|
|
||||||
|
@ -1665,16 +1668,19 @@ HAL_StatusTypeDef HAL_TIMEx_MasterConfigSynchronization(TIM_HandleTypeDef *htim,
|
||||||
/* Select the TRGO source */
|
/* Select the TRGO source */
|
||||||
tmpcr2 |= sMasterConfig->MasterOutputTrigger;
|
tmpcr2 |= sMasterConfig->MasterOutputTrigger;
|
||||||
|
|
||||||
/* Reset the MSM Bit */
|
|
||||||
tmpsmcr &= ~TIM_SMCR_MSM;
|
|
||||||
/* Set master mode */
|
|
||||||
tmpsmcr |= sMasterConfig->MasterSlaveMode;
|
|
||||||
|
|
||||||
/* Update TIMx CR2 */
|
/* Update TIMx CR2 */
|
||||||
htim->Instance->CR2 = tmpcr2;
|
htim->Instance->CR2 = tmpcr2;
|
||||||
|
|
||||||
/* Update TIMx SMCR */
|
if (IS_TIM_SLAVE_INSTANCE(htim->Instance))
|
||||||
htim->Instance->SMCR = tmpsmcr;
|
{
|
||||||
|
/* Reset the MSM Bit */
|
||||||
|
tmpsmcr &= ~TIM_SMCR_MSM;
|
||||||
|
/* Set master mode */
|
||||||
|
tmpsmcr |= sMasterConfig->MasterSlaveMode;
|
||||||
|
|
||||||
|
/* Update TIMx SMCR */
|
||||||
|
htim->Instance->SMCR = tmpsmcr;
|
||||||
|
}
|
||||||
|
|
||||||
/* Change the htim state */
|
/* Change the htim state */
|
||||||
htim->State = HAL_TIM_STATE_READY;
|
htim->State = HAL_TIM_STATE_READY;
|
||||||
|
@ -1690,6 +1696,9 @@ HAL_StatusTypeDef HAL_TIMEx_MasterConfigSynchronization(TIM_HandleTypeDef *htim,
|
||||||
* @param htim TIM handle
|
* @param htim TIM handle
|
||||||
* @param sBreakDeadTimeConfig pointer to a TIM_ConfigBreakDeadConfigTypeDef structure that
|
* @param sBreakDeadTimeConfig pointer to a TIM_ConfigBreakDeadConfigTypeDef structure that
|
||||||
* contains the BDTR Register configuration information for the TIM peripheral.
|
* contains the BDTR Register configuration information for the TIM peripheral.
|
||||||
|
* @note Interrupts can be generated when an active level is detected on the
|
||||||
|
* break input, the break 2 input or the system break input. Break
|
||||||
|
* interrupt can be enabled by calling the @ref __HAL_TIM_ENABLE_IT macro.
|
||||||
* @retval HAL status
|
* @retval HAL status
|
||||||
*/
|
*/
|
||||||
HAL_StatusTypeDef HAL_TIMEx_ConfigBreakDeadTime(TIM_HandleTypeDef *htim,
|
HAL_StatusTypeDef HAL_TIMEx_ConfigBreakDeadTime(TIM_HandleTypeDef *htim,
|
||||||
|
@ -1763,10 +1772,10 @@ HAL_StatusTypeDef HAL_TIMEx_ConfigBreakInput(TIM_HandleTypeDef *htim,
|
||||||
|
|
||||||
{
|
{
|
||||||
uint32_t tmporx;
|
uint32_t tmporx;
|
||||||
uint32_t bkin_enable_mask = 0U;
|
uint32_t bkin_enable_mask;
|
||||||
uint32_t bkin_polarity_mask = 0U;
|
uint32_t bkin_polarity_mask;
|
||||||
uint32_t bkin_enable_bitpos = 0U;
|
uint32_t bkin_enable_bitpos;
|
||||||
uint32_t bkin_polarity_bitpos = 0U;
|
uint32_t bkin_polarity_bitpos;
|
||||||
|
|
||||||
/* Check the parameters */
|
/* Check the parameters */
|
||||||
assert_param(IS_TIM_BREAK_INSTANCE(htim->Instance));
|
assert_param(IS_TIM_BREAK_INSTANCE(htim->Instance));
|
||||||
|
@ -1800,11 +1809,19 @@ HAL_StatusTypeDef HAL_TIMEx_ConfigBreakInput(TIM_HandleTypeDef *htim,
|
||||||
{
|
{
|
||||||
bkin_enable_mask = TIM1_AF1_BKDF1BKE;
|
bkin_enable_mask = TIM1_AF1_BKDF1BKE;
|
||||||
bkin_enable_bitpos = 8;
|
bkin_enable_bitpos = 8;
|
||||||
|
bkin_polarity_mask = 0U;
|
||||||
|
bkin_polarity_bitpos = 0U;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
default:
|
default:
|
||||||
|
{
|
||||||
|
bkin_enable_mask = 0U;
|
||||||
|
bkin_polarity_mask = 0U;
|
||||||
|
bkin_enable_bitpos = 0U;
|
||||||
|
bkin_polarity_bitpos = 0U;
|
||||||
break;
|
break;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
switch (BreakInput)
|
switch (BreakInput)
|
||||||
|
@ -2054,7 +2071,7 @@ HAL_TIM_StateTypeDef HAL_TIMEx_HallSensor_GetState(TIM_HandleTypeDef *htim)
|
||||||
*/
|
*/
|
||||||
|
|
||||||
/* Private functions ---------------------------------------------------------*/
|
/* Private functions ---------------------------------------------------------*/
|
||||||
/** @defgroup TIMEx_Private_Functions TIM Extended Private Functions
|
/** @defgroup TIMEx_Private_Functions TIMEx Private Functions
|
||||||
* @{
|
* @{
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
|
|
@ -220,9 +220,6 @@ ErrorStatus LL_GPIO_Init(GPIO_TypeDef *GPIOx, LL_GPIO_InitTypeDef *GPIO_InitStru
|
||||||
|
|
||||||
if (currentpin)
|
if (currentpin)
|
||||||
{
|
{
|
||||||
/* Pin Mode configuration */
|
|
||||||
LL_GPIO_SetPinMode(GPIOx, currentpin, GPIO_InitStruct->Mode);
|
|
||||||
|
|
||||||
if ((GPIO_InitStruct->Mode == LL_GPIO_MODE_OUTPUT) || (GPIO_InitStruct->Mode == LL_GPIO_MODE_ALTERNATE))
|
if ((GPIO_InitStruct->Mode == LL_GPIO_MODE_OUTPUT) || (GPIO_InitStruct->Mode == LL_GPIO_MODE_ALTERNATE))
|
||||||
{
|
{
|
||||||
/* Check Speed mode parameters */
|
/* Check Speed mode parameters */
|
||||||
|
@ -230,6 +227,12 @@ ErrorStatus LL_GPIO_Init(GPIO_TypeDef *GPIOx, LL_GPIO_InitTypeDef *GPIO_InitStru
|
||||||
|
|
||||||
/* Speed mode configuration */
|
/* Speed mode configuration */
|
||||||
LL_GPIO_SetPinSpeed(GPIOx, currentpin, GPIO_InitStruct->Speed);
|
LL_GPIO_SetPinSpeed(GPIOx, currentpin, GPIO_InitStruct->Speed);
|
||||||
|
|
||||||
|
/* Check Output mode parameters */
|
||||||
|
assert_param(IS_LL_GPIO_OUTPUT_TYPE(GPIO_InitStruct->OutputType));
|
||||||
|
|
||||||
|
/* Output mode configuration*/
|
||||||
|
LL_GPIO_SetPinOutputType(GPIOx, GPIO_InitStruct->Pin, GPIO_InitStruct->OutputType);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Pull-up Pull down resistor configuration*/
|
/* Pull-up Pull down resistor configuration*/
|
||||||
|
@ -250,19 +253,11 @@ ErrorStatus LL_GPIO_Init(GPIO_TypeDef *GPIOx, LL_GPIO_InitTypeDef *GPIO_InitStru
|
||||||
LL_GPIO_SetAFPin_8_15(GPIOx, currentpin, GPIO_InitStruct->Alternate);
|
LL_GPIO_SetAFPin_8_15(GPIOx, currentpin, GPIO_InitStruct->Alternate);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
/* Pin Mode configuration */
|
||||||
|
LL_GPIO_SetPinMode(GPIOx, currentpin, GPIO_InitStruct->Mode);
|
||||||
}
|
}
|
||||||
pinpos++;
|
pinpos++;
|
||||||
}
|
}
|
||||||
|
|
||||||
if ((GPIO_InitStruct->Mode == LL_GPIO_MODE_OUTPUT) || (GPIO_InitStruct->Mode == LL_GPIO_MODE_ALTERNATE))
|
|
||||||
{
|
|
||||||
/* Check Output mode parameters */
|
|
||||||
assert_param(IS_LL_GPIO_OUTPUT_TYPE(GPIO_InitStruct->OutputType));
|
|
||||||
|
|
||||||
/* Output mode configuration*/
|
|
||||||
LL_GPIO_SetPinOutputType(GPIOx, GPIO_InitStruct->Pin, GPIO_InitStruct->OutputType);
|
|
||||||
|
|
||||||
}
|
|
||||||
return (SUCCESS);
|
return (SUCCESS);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -163,7 +163,7 @@ uint32_t RCC_PLLI2S_GetFreqDomain_SPDIFRX(void);
|
||||||
*/
|
*/
|
||||||
ErrorStatus LL_RCC_DeInit(void)
|
ErrorStatus LL_RCC_DeInit(void)
|
||||||
{
|
{
|
||||||
uint32_t vl_mask = 0xFFFFFFFFU;
|
__IO uint32_t vl_mask;
|
||||||
|
|
||||||
/* Set HSION bit */
|
/* Set HSION bit */
|
||||||
LL_RCC_HSI_Enable();
|
LL_RCC_HSI_Enable();
|
||||||
|
@ -175,10 +175,13 @@ ErrorStatus LL_RCC_DeInit(void)
|
||||||
/* Reset CFGR register */
|
/* Reset CFGR register */
|
||||||
LL_RCC_WriteReg(CFGR, 0x00000000U);
|
LL_RCC_WriteReg(CFGR, 0x00000000U);
|
||||||
|
|
||||||
|
/* Read CR register */
|
||||||
|
vl_mask = LL_RCC_ReadReg(CR);
|
||||||
|
|
||||||
/* Reset HSEON, HSEBYP, PLLON, CSSON, PLLI2SON and PLLSAION bits */
|
/* Reset HSEON, HSEBYP, PLLON, CSSON, PLLI2SON and PLLSAION bits */
|
||||||
CLEAR_BIT(vl_mask, (RCC_CR_HSEON | RCC_CR_HSEBYP | RCC_CR_PLLON | RCC_CR_CSSON | RCC_CR_PLLSAION | RCC_CR_PLLI2SON));
|
CLEAR_BIT(vl_mask, (RCC_CR_HSEON | RCC_CR_HSEBYP | RCC_CR_PLLON | RCC_CR_CSSON | RCC_CR_PLLSAION | RCC_CR_PLLI2SON));
|
||||||
|
|
||||||
/* Write new mask in CR register */
|
/* Write new value in CR register */
|
||||||
LL_RCC_WriteReg(CR, vl_mask);
|
LL_RCC_WriteReg(CR, vl_mask);
|
||||||
|
|
||||||
/* Set HSITRIM bits to the reset value*/
|
/* Set HSITRIM bits to the reset value*/
|
||||||
|
|
|
@ -22,11 +22,11 @@
|
||||||
#include "stm32f7xx_ll_usart.h"
|
#include "stm32f7xx_ll_usart.h"
|
||||||
#include "stm32f7xx_ll_rcc.h"
|
#include "stm32f7xx_ll_rcc.h"
|
||||||
#include "stm32f7xx_ll_bus.h"
|
#include "stm32f7xx_ll_bus.h"
|
||||||
#ifdef USE_FULL_ASSERT
|
#ifdef USE_FULL_ASSERT
|
||||||
#include "stm32_assert.h"
|
#include "stm32_assert.h"
|
||||||
#else
|
#else
|
||||||
#define assert_param(expr) ((void)0U)
|
#define assert_param(expr) ((void)0U)
|
||||||
#endif
|
#endif /* USE_FULL_ASSERT */
|
||||||
|
|
||||||
/** @addtogroup STM32F7xx_LL_Driver
|
/** @addtogroup STM32F7xx_LL_Driver
|
||||||
* @{
|
* @{
|
||||||
|
@ -41,14 +41,6 @@
|
||||||
/* Private types -------------------------------------------------------------*/
|
/* Private types -------------------------------------------------------------*/
|
||||||
/* Private variables ---------------------------------------------------------*/
|
/* Private variables ---------------------------------------------------------*/
|
||||||
/* Private constants ---------------------------------------------------------*/
|
/* Private constants ---------------------------------------------------------*/
|
||||||
/** @addtogroup USART_LL_Private_Constants
|
|
||||||
* @{
|
|
||||||
*/
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @}
|
|
||||||
*/
|
|
||||||
|
|
||||||
/* Private macros ------------------------------------------------------------*/
|
/* Private macros ------------------------------------------------------------*/
|
||||||
/** @addtogroup USART_LL_Private_Macros
|
/** @addtogroup USART_LL_Private_Macros
|
||||||
* @{
|
* @{
|
||||||
|
@ -65,42 +57,42 @@
|
||||||
#define IS_LL_USART_BRR_MAX(__VALUE__) ((__VALUE__) <= 0x0000FFFFU)
|
#define IS_LL_USART_BRR_MAX(__VALUE__) ((__VALUE__) <= 0x0000FFFFU)
|
||||||
|
|
||||||
#define IS_LL_USART_DIRECTION(__VALUE__) (((__VALUE__) == LL_USART_DIRECTION_NONE) \
|
#define IS_LL_USART_DIRECTION(__VALUE__) (((__VALUE__) == LL_USART_DIRECTION_NONE) \
|
||||||
|| ((__VALUE__) == LL_USART_DIRECTION_RX) \
|
|| ((__VALUE__) == LL_USART_DIRECTION_RX) \
|
||||||
|| ((__VALUE__) == LL_USART_DIRECTION_TX) \
|
|| ((__VALUE__) == LL_USART_DIRECTION_TX) \
|
||||||
|| ((__VALUE__) == LL_USART_DIRECTION_TX_RX))
|
|| ((__VALUE__) == LL_USART_DIRECTION_TX_RX))
|
||||||
|
|
||||||
#define IS_LL_USART_PARITY(__VALUE__) (((__VALUE__) == LL_USART_PARITY_NONE) \
|
#define IS_LL_USART_PARITY(__VALUE__) (((__VALUE__) == LL_USART_PARITY_NONE) \
|
||||||
|| ((__VALUE__) == LL_USART_PARITY_EVEN) \
|
|| ((__VALUE__) == LL_USART_PARITY_EVEN) \
|
||||||
|| ((__VALUE__) == LL_USART_PARITY_ODD))
|
|| ((__VALUE__) == LL_USART_PARITY_ODD))
|
||||||
|
|
||||||
#define IS_LL_USART_DATAWIDTH(__VALUE__) (((__VALUE__) == LL_USART_DATAWIDTH_7B) \
|
#define IS_LL_USART_DATAWIDTH(__VALUE__) (((__VALUE__) == LL_USART_DATAWIDTH_7B) \
|
||||||
|| ((__VALUE__) == LL_USART_DATAWIDTH_8B) \
|
|| ((__VALUE__) == LL_USART_DATAWIDTH_8B) \
|
||||||
|| ((__VALUE__) == LL_USART_DATAWIDTH_9B))
|
|| ((__VALUE__) == LL_USART_DATAWIDTH_9B))
|
||||||
|
|
||||||
#define IS_LL_USART_OVERSAMPLING(__VALUE__) (((__VALUE__) == LL_USART_OVERSAMPLING_16) \
|
#define IS_LL_USART_OVERSAMPLING(__VALUE__) (((__VALUE__) == LL_USART_OVERSAMPLING_16) \
|
||||||
|| ((__VALUE__) == LL_USART_OVERSAMPLING_8))
|
|| ((__VALUE__) == LL_USART_OVERSAMPLING_8))
|
||||||
|
|
||||||
#define IS_LL_USART_LASTBITCLKOUTPUT(__VALUE__) (((__VALUE__) == LL_USART_LASTCLKPULSE_NO_OUTPUT) \
|
#define IS_LL_USART_LASTBITCLKOUTPUT(__VALUE__) (((__VALUE__) == LL_USART_LASTCLKPULSE_NO_OUTPUT) \
|
||||||
|| ((__VALUE__) == LL_USART_LASTCLKPULSE_OUTPUT))
|
|| ((__VALUE__) == LL_USART_LASTCLKPULSE_OUTPUT))
|
||||||
|
|
||||||
#define IS_LL_USART_CLOCKPHASE(__VALUE__) (((__VALUE__) == LL_USART_PHASE_1EDGE) \
|
#define IS_LL_USART_CLOCKPHASE(__VALUE__) (((__VALUE__) == LL_USART_PHASE_1EDGE) \
|
||||||
|| ((__VALUE__) == LL_USART_PHASE_2EDGE))
|
|| ((__VALUE__) == LL_USART_PHASE_2EDGE))
|
||||||
|
|
||||||
#define IS_LL_USART_CLOCKPOLARITY(__VALUE__) (((__VALUE__) == LL_USART_POLARITY_LOW) \
|
#define IS_LL_USART_CLOCKPOLARITY(__VALUE__) (((__VALUE__) == LL_USART_POLARITY_LOW) \
|
||||||
|| ((__VALUE__) == LL_USART_POLARITY_HIGH))
|
|| ((__VALUE__) == LL_USART_POLARITY_HIGH))
|
||||||
|
|
||||||
#define IS_LL_USART_CLOCKOUTPUT(__VALUE__) (((__VALUE__) == LL_USART_CLOCK_DISABLE) \
|
#define IS_LL_USART_CLOCKOUTPUT(__VALUE__) (((__VALUE__) == LL_USART_CLOCK_DISABLE) \
|
||||||
|| ((__VALUE__) == LL_USART_CLOCK_ENABLE))
|
|| ((__VALUE__) == LL_USART_CLOCK_ENABLE))
|
||||||
|
|
||||||
#define IS_LL_USART_STOPBITS(__VALUE__) (((__VALUE__) == LL_USART_STOPBITS_0_5) \
|
#define IS_LL_USART_STOPBITS(__VALUE__) (((__VALUE__) == LL_USART_STOPBITS_0_5) \
|
||||||
|| ((__VALUE__) == LL_USART_STOPBITS_1) \
|
|| ((__VALUE__) == LL_USART_STOPBITS_1) \
|
||||||
|| ((__VALUE__) == LL_USART_STOPBITS_1_5) \
|
|| ((__VALUE__) == LL_USART_STOPBITS_1_5) \
|
||||||
|| ((__VALUE__) == LL_USART_STOPBITS_2))
|
|| ((__VALUE__) == LL_USART_STOPBITS_2))
|
||||||
|
|
||||||
#define IS_LL_USART_HWCONTROL(__VALUE__) (((__VALUE__) == LL_USART_HWCONTROL_NONE) \
|
#define IS_LL_USART_HWCONTROL(__VALUE__) (((__VALUE__) == LL_USART_HWCONTROL_NONE) \
|
||||||
|| ((__VALUE__) == LL_USART_HWCONTROL_RTS) \
|
|| ((__VALUE__) == LL_USART_HWCONTROL_RTS) \
|
||||||
|| ((__VALUE__) == LL_USART_HWCONTROL_CTS) \
|
|| ((__VALUE__) == LL_USART_HWCONTROL_CTS) \
|
||||||
|| ((__VALUE__) == LL_USART_HWCONTROL_RTS_CTS))
|
|| ((__VALUE__) == LL_USART_HWCONTROL_RTS_CTS))
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @}
|
* @}
|
||||||
|
|
|
@ -94,6 +94,11 @@ HAL_StatusTypeDef USB_CoreInit(USB_OTG_GlobalTypeDef *USBx, USB_OTG_CfgTypeDef c
|
||||||
/* Init The ULPI Interface */
|
/* Init The ULPI Interface */
|
||||||
USBx->GUSBCFG &= ~(USB_OTG_GUSBCFG_TSDPS | USB_OTG_GUSBCFG_ULPIFSLS | USB_OTG_GUSBCFG_PHYSEL);
|
USBx->GUSBCFG &= ~(USB_OTG_GUSBCFG_TSDPS | USB_OTG_GUSBCFG_ULPIFSLS | USB_OTG_GUSBCFG_PHYSEL);
|
||||||
|
|
||||||
|
#if defined(STM32F722xx) || defined(STM32F723xx) || defined(STM32F730xx) || defined(STM32F732xx) || defined(STM32F733xx)
|
||||||
|
/* Select ULPI Interface */
|
||||||
|
USBx->GUSBCFG |= USB_OTG_GUSBCFG_ULPI_UTMI_SEL;
|
||||||
|
#endif /* defined(STM32F722xx) || defined(STM32F723xx) || defined(STM32F730xx) || defined(STM32F732xx) || defined(STM32F733xx) */
|
||||||
|
|
||||||
/* Select vbus source */
|
/* Select vbus source */
|
||||||
USBx->GUSBCFG &= ~(USB_OTG_GUSBCFG_ULPIEVBUSD | USB_OTG_GUSBCFG_ULPIEVBUSI);
|
USBx->GUSBCFG &= ~(USB_OTG_GUSBCFG_ULPIEVBUSD | USB_OTG_GUSBCFG_ULPIEVBUSI);
|
||||||
if (cfg.use_external_vbus == 1U)
|
if (cfg.use_external_vbus == 1U)
|
||||||
|
@ -115,7 +120,7 @@ HAL_StatusTypeDef USB_CoreInit(USB_OTG_GlobalTypeDef *USBx, USB_OTG_CfgTypeDef c
|
||||||
USBx->GUSBCFG &= ~(USB_OTG_GUSBCFG_ULPIEVBUSD | USB_OTG_GUSBCFG_ULPIEVBUSI);
|
USBx->GUSBCFG &= ~(USB_OTG_GUSBCFG_ULPIEVBUSD | USB_OTG_GUSBCFG_ULPIEVBUSI);
|
||||||
|
|
||||||
/* Select UTMI Interace */
|
/* Select UTMI Interace */
|
||||||
USBx->GUSBCFG &= ~ USB_OTG_GUSBCFG_ULPI_UTMI_SEL;
|
USBx->GUSBCFG &= ~USB_OTG_GUSBCFG_ULPI_UTMI_SEL;
|
||||||
USBx->GCCFG |= USB_OTG_GCCFG_PHYHSEN;
|
USBx->GCCFG |= USB_OTG_GCCFG_PHYHSEN;
|
||||||
|
|
||||||
/* Enables control of a High Speed USB PHY */
|
/* Enables control of a High Speed USB PHY */
|
||||||
|
@ -158,10 +163,6 @@ HAL_StatusTypeDef USB_CoreInit(USB_OTG_GlobalTypeDef *USBx, USB_OTG_CfgTypeDef c
|
||||||
* @brief Set the USB turnaround time
|
* @brief Set the USB turnaround time
|
||||||
* @param USBx USB Instance
|
* @param USBx USB Instance
|
||||||
* @param hclk: AHB clock frequency
|
* @param hclk: AHB clock frequency
|
||||||
* @param speed device speed
|
|
||||||
* This parameter can be one of these values:
|
|
||||||
* @arg PCD_SPEED_HIGH: High speed mode
|
|
||||||
* @arg PCD_SPEED_FULL: Full speed mode
|
|
||||||
* @retval USB turnaround time In PHY Clocks number
|
* @retval USB turnaround time In PHY Clocks number
|
||||||
*/
|
*/
|
||||||
HAL_StatusTypeDef USB_SetTurnaroundTime(USB_OTG_GlobalTypeDef *USBx,
|
HAL_StatusTypeDef USB_SetTurnaroundTime(USB_OTG_GlobalTypeDef *USBx,
|
||||||
|
@ -173,7 +174,7 @@ HAL_StatusTypeDef USB_SetTurnaroundTime(USB_OTG_GlobalTypeDef *USBx,
|
||||||
used by application. In the low AHB frequency range it is used to stretch enough the USB response
|
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
|
time to IN tokens, the USB turnaround time, so to compensate for the longer AHB read access
|
||||||
latency to the Data FIFO */
|
latency to the Data FIFO */
|
||||||
if (speed == PCD_SPEED_FULL)
|
if (speed == USBD_FS_SPEED)
|
||||||
{
|
{
|
||||||
if ((hclk >= 14200000U) && (hclk < 15000000U))
|
if ((hclk >= 14200000U) && (hclk < 15000000U))
|
||||||
{
|
{
|
||||||
|
@ -226,7 +227,7 @@ HAL_StatusTypeDef USB_SetTurnaroundTime(USB_OTG_GlobalTypeDef *USBx,
|
||||||
UsbTrd = 0x6U;
|
UsbTrd = 0x6U;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else if (speed == PCD_SPEED_HIGH)
|
else if (speed == USBD_HS_SPEED)
|
||||||
{
|
{
|
||||||
UsbTrd = USBD_HS_TRDT_VALUE;
|
UsbTrd = USBD_HS_TRDT_VALUE;
|
||||||
}
|
}
|
||||||
|
@ -318,6 +319,8 @@ HAL_StatusTypeDef USB_DevInit(USB_OTG_GlobalTypeDef *USBx, USB_OTG_CfgTypeDef cf
|
||||||
/* VBUS Sensing setup */
|
/* VBUS Sensing setup */
|
||||||
if (cfg.vbus_sensing_enable == 0U)
|
if (cfg.vbus_sensing_enable == 0U)
|
||||||
{
|
{
|
||||||
|
USBx_DEVICE->DCTL |= USB_OTG_DCTL_SDIS;
|
||||||
|
|
||||||
/* Deactivate VBUS Sensing B */
|
/* Deactivate VBUS Sensing B */
|
||||||
USBx->GCCFG &= ~USB_OTG_GCCFG_VBDEN;
|
USBx->GCCFG &= ~USB_OTG_GCCFG_VBDEN;
|
||||||
|
|
||||||
|
@ -339,33 +342,33 @@ HAL_StatusTypeDef USB_DevInit(USB_OTG_GlobalTypeDef *USBx, USB_OTG_CfgTypeDef cf
|
||||||
|
|
||||||
if (cfg.phy_itface == USB_OTG_ULPI_PHY)
|
if (cfg.phy_itface == USB_OTG_ULPI_PHY)
|
||||||
{
|
{
|
||||||
if (cfg.speed == USB_OTG_SPEED_HIGH)
|
if (cfg.speed == USBD_HS_SPEED)
|
||||||
{
|
{
|
||||||
/* Set High speed phy */
|
/* Set Core speed to High speed mode */
|
||||||
(void)USB_SetDevSpeed(USBx, USB_OTG_SPEED_HIGH);
|
(void)USB_SetDevSpeed(USBx, USB_OTG_SPEED_HIGH);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
/* set High speed phy in Full speed mode */
|
/* Set Core speed to Full speed mode */
|
||||||
(void)USB_SetDevSpeed(USBx, USB_OTG_SPEED_HIGH_IN_FULL);
|
(void)USB_SetDevSpeed(USBx, USB_OTG_SPEED_HIGH_IN_FULL);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else if (cfg.phy_itface == USB_OTG_HS_EMBEDDED_PHY)
|
else if (cfg.phy_itface == USB_OTG_HS_EMBEDDED_PHY)
|
||||||
{
|
{
|
||||||
if (cfg.speed == USB_OTG_SPEED_HIGH)
|
if (cfg.speed == USBD_HS_SPEED)
|
||||||
{
|
{
|
||||||
/* Set High speed phy */
|
/* Set Core speed to High speed mode */
|
||||||
(void)USB_SetDevSpeed(USBx, USB_OTG_SPEED_HIGH);
|
(void)USB_SetDevSpeed(USBx, USB_OTG_SPEED_HIGH);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
/* set High speed phy in Full speed mode */
|
/* Set Core speed to Full speed mode */
|
||||||
(void)USB_SetDevSpeed(USBx, USB_OTG_SPEED_HIGH_IN_FULL);
|
(void)USB_SetDevSpeed(USBx, USB_OTG_SPEED_HIGH_IN_FULL);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
/* Set Full speed phy */
|
/* Set Core speed to Full speed mode */
|
||||||
(void)USB_SetDevSpeed(USBx, USB_OTG_SPEED_FULL);
|
(void)USB_SetDevSpeed(USBx, USB_OTG_SPEED_FULL);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -431,17 +434,6 @@ HAL_StatusTypeDef USB_DevInit(USB_OTG_GlobalTypeDef *USBx, USB_OTG_CfgTypeDef cf
|
||||||
|
|
||||||
USBx_DEVICE->DIEPMSK &= ~(USB_OTG_DIEPMSK_TXFURM);
|
USBx_DEVICE->DIEPMSK &= ~(USB_OTG_DIEPMSK_TXFURM);
|
||||||
|
|
||||||
if (cfg.dma_enable == 1U)
|
|
||||||
{
|
|
||||||
/*Set threshold parameters */
|
|
||||||
USBx_DEVICE->DTHRCTL = USB_OTG_DTHRCTL_TXTHRLEN_6 |
|
|
||||||
USB_OTG_DTHRCTL_RXTHRLEN_6;
|
|
||||||
|
|
||||||
USBx_DEVICE->DTHRCTL |= USB_OTG_DTHRCTL_RXTHREN |
|
|
||||||
USB_OTG_DTHRCTL_ISOTHREN |
|
|
||||||
USB_OTG_DTHRCTL_NONISOTHREN;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Disable all interrupts. */
|
/* Disable all interrupts. */
|
||||||
USBx->GINTMSK = 0U;
|
USBx->GINTMSK = 0U;
|
||||||
|
|
||||||
|
@ -557,16 +549,16 @@ uint8_t USB_GetDevSpeed(USB_OTG_GlobalTypeDef *USBx)
|
||||||
|
|
||||||
if (DevEnumSpeed == DSTS_ENUMSPD_HS_PHY_30MHZ_OR_60MHZ)
|
if (DevEnumSpeed == DSTS_ENUMSPD_HS_PHY_30MHZ_OR_60MHZ)
|
||||||
{
|
{
|
||||||
speed = PCD_SPEED_HIGH;
|
speed = USBD_HS_SPEED;
|
||||||
}
|
}
|
||||||
else if ((DevEnumSpeed == DSTS_ENUMSPD_FS_PHY_30MHZ_OR_60MHZ) ||
|
else if ((DevEnumSpeed == DSTS_ENUMSPD_FS_PHY_30MHZ_OR_60MHZ) ||
|
||||||
(DevEnumSpeed == DSTS_ENUMSPD_FS_PHY_48MHZ))
|
(DevEnumSpeed == DSTS_ENUMSPD_FS_PHY_48MHZ))
|
||||||
{
|
{
|
||||||
speed = PCD_SPEED_FULL;
|
speed = USBD_FS_SPEED;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
speed = 0U;
|
speed = 0xFU;
|
||||||
}
|
}
|
||||||
|
|
||||||
return speed;
|
return speed;
|
||||||
|
@ -663,6 +655,12 @@ HAL_StatusTypeDef USB_DeactivateEndpoint(USB_OTG_GlobalTypeDef *USBx, USB_OTG_EP
|
||||||
/* Read DEPCTLn register */
|
/* Read DEPCTLn register */
|
||||||
if (ep->is_in == 1U)
|
if (ep->is_in == 1U)
|
||||||
{
|
{
|
||||||
|
if ((USBx_INEP(epnum)->DIEPCTL & USB_OTG_DIEPCTL_EPENA) == USB_OTG_DIEPCTL_EPENA)
|
||||||
|
{
|
||||||
|
USBx_INEP(epnum)->DIEPCTL |= USB_OTG_DIEPCTL_SNAK;
|
||||||
|
USBx_INEP(epnum)->DIEPCTL |= USB_OTG_DIEPCTL_EPDIS;
|
||||||
|
}
|
||||||
|
|
||||||
USBx_DEVICE->DEACHMSK &= ~(USB_OTG_DAINTMSK_IEPM & (uint32_t)(1UL << (ep->num & EP_ADDR_MSK)));
|
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_DEVICE->DAINTMSK &= ~(USB_OTG_DAINTMSK_IEPM & (uint32_t)(1UL << (ep->num & EP_ADDR_MSK)));
|
||||||
USBx_INEP(epnum)->DIEPCTL &= ~(USB_OTG_DIEPCTL_USBAEP |
|
USBx_INEP(epnum)->DIEPCTL &= ~(USB_OTG_DIEPCTL_USBAEP |
|
||||||
|
@ -673,6 +671,12 @@ HAL_StatusTypeDef USB_DeactivateEndpoint(USB_OTG_GlobalTypeDef *USBx, USB_OTG_EP
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
if ((USBx_OUTEP(epnum)->DOEPCTL & USB_OTG_DOEPCTL_EPENA) == USB_OTG_DOEPCTL_EPENA)
|
||||||
|
{
|
||||||
|
USBx_OUTEP(epnum)->DOEPCTL |= USB_OTG_DOEPCTL_SNAK;
|
||||||
|
USBx_OUTEP(epnum)->DOEPCTL |= USB_OTG_DOEPCTL_EPDIS;
|
||||||
|
}
|
||||||
|
|
||||||
USBx_DEVICE->DEACHMSK &= ~(USB_OTG_DAINTMSK_OEPM & ((uint32_t)(1UL << (ep->num & EP_ADDR_MSK)) << 16));
|
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_DEVICE->DAINTMSK &= ~(USB_OTG_DAINTMSK_OEPM & ((uint32_t)(1UL << (ep->num & EP_ADDR_MSK)) << 16));
|
||||||
USBx_OUTEP(epnum)->DOEPCTL &= ~(USB_OTG_DOEPCTL_USBAEP |
|
USBx_OUTEP(epnum)->DOEPCTL &= ~(USB_OTG_DOEPCTL_USBAEP |
|
||||||
|
@ -698,11 +702,23 @@ HAL_StatusTypeDef USB_DeactivateDedicatedEndpoint(USB_OTG_GlobalTypeDef *USBx, U
|
||||||
/* Read DEPCTLn register */
|
/* Read DEPCTLn register */
|
||||||
if (ep->is_in == 1U)
|
if (ep->is_in == 1U)
|
||||||
{
|
{
|
||||||
|
if ((USBx_INEP(epnum)->DIEPCTL & USB_OTG_DIEPCTL_EPENA) == USB_OTG_DIEPCTL_EPENA)
|
||||||
|
{
|
||||||
|
USBx_INEP(epnum)->DIEPCTL |= USB_OTG_DIEPCTL_SNAK;
|
||||||
|
USBx_INEP(epnum)->DIEPCTL |= USB_OTG_DIEPCTL_EPDIS;
|
||||||
|
}
|
||||||
|
|
||||||
USBx_INEP(epnum)->DIEPCTL &= ~ USB_OTG_DIEPCTL_USBAEP;
|
USBx_INEP(epnum)->DIEPCTL &= ~ USB_OTG_DIEPCTL_USBAEP;
|
||||||
USBx_DEVICE->DAINTMSK &= ~(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)));
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
if ((USBx_OUTEP(epnum)->DOEPCTL & USB_OTG_DOEPCTL_EPENA) == USB_OTG_DOEPCTL_EPENA)
|
||||||
|
{
|
||||||
|
USBx_OUTEP(epnum)->DOEPCTL |= USB_OTG_DOEPCTL_SNAK;
|
||||||
|
USBx_OUTEP(epnum)->DOEPCTL |= USB_OTG_DOEPCTL_EPDIS;
|
||||||
|
}
|
||||||
|
|
||||||
USBx_OUTEP(epnum)->DOEPCTL &= ~USB_OTG_DOEPCTL_USBAEP;
|
USBx_OUTEP(epnum)->DOEPCTL &= ~USB_OTG_DOEPCTL_USBAEP;
|
||||||
USBx_DEVICE->DAINTMSK &= ~(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));
|
||||||
}
|
}
|
||||||
|
@ -761,9 +777,27 @@ HAL_StatusTypeDef USB_EPStartXfer(USB_OTG_GlobalTypeDef *USBx, USB_OTG_EPTypeDef
|
||||||
{
|
{
|
||||||
USBx_INEP(epnum)->DIEPDMA = (uint32_t)(ep->dma_addr);
|
USBx_INEP(epnum)->DIEPDMA = (uint32_t)(ep->dma_addr);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (ep->type == EP_TYPE_ISOC)
|
||||||
|
{
|
||||||
|
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;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/* EP enable, IN data in FIFO */
|
||||||
|
USBx_INEP(epnum)->DIEPCTL |= (USB_OTG_DIEPCTL_CNAK | USB_OTG_DIEPCTL_EPENA);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
/* EP enable, IN data in FIFO */
|
||||||
|
USBx_INEP(epnum)->DIEPCTL |= (USB_OTG_DIEPCTL_CNAK | USB_OTG_DIEPCTL_EPENA);
|
||||||
|
|
||||||
if (ep->type != EP_TYPE_ISOC)
|
if (ep->type != EP_TYPE_ISOC)
|
||||||
{
|
{
|
||||||
/* Enable the Tx FIFO Empty Interrupt for this EP */
|
/* Enable the Tx FIFO Empty Interrupt for this EP */
|
||||||
|
@ -772,27 +806,20 @@ HAL_StatusTypeDef USB_EPStartXfer(USB_OTG_GlobalTypeDef *USBx, USB_OTG_EPTypeDef
|
||||||
USBx_DEVICE->DIEPEMPMSK |= 1UL << (ep->num & EP_ADDR_MSK);
|
USBx_DEVICE->DIEPEMPMSK |= 1UL << (ep->num & EP_ADDR_MSK);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
if (ep->type == EP_TYPE_ISOC)
|
|
||||||
{
|
|
||||||
if ((USBx_DEVICE->DSTS & (1U << 8)) == 0U)
|
|
||||||
{
|
|
||||||
USBx_INEP(epnum)->DIEPCTL |= USB_OTG_DIEPCTL_SODDFRM;
|
|
||||||
}
|
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
USBx_INEP(epnum)->DIEPCTL |= USB_OTG_DIEPCTL_SD0PID_SEVNFRM;
|
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, dma);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/* EP enable, IN data in FIFO */
|
|
||||||
USBx_INEP(epnum)->DIEPCTL |= (USB_OTG_DIEPCTL_CNAK | USB_OTG_DIEPCTL_EPENA);
|
|
||||||
|
|
||||||
if (ep->type == EP_TYPE_ISOC)
|
|
||||||
{
|
|
||||||
(void)USB_WritePacket(USBx, ep->xfer_buff, ep->num, (uint16_t)ep->xfer_len, dma);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
else /* OUT endpoint */
|
else /* OUT endpoint */
|
||||||
{
|
{
|
||||||
|
@ -890,18 +917,21 @@ HAL_StatusTypeDef USB_EP0StartXfer(USB_OTG_GlobalTypeDef *USBx, USB_OTG_EPTypeDe
|
||||||
{
|
{
|
||||||
USBx_INEP(epnum)->DIEPDMA = (uint32_t)(ep->dma_addr);
|
USBx_INEP(epnum)->DIEPDMA = (uint32_t)(ep->dma_addr);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* EP enable, IN data in FIFO */
|
||||||
|
USBx_INEP(epnum)->DIEPCTL |= (USB_OTG_DIEPCTL_CNAK | USB_OTG_DIEPCTL_EPENA);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
/* 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 */
|
/* Enable the Tx FIFO Empty Interrupt for this EP */
|
||||||
if (ep->xfer_len > 0U)
|
if (ep->xfer_len > 0U)
|
||||||
{
|
{
|
||||||
USBx_DEVICE->DIEPEMPMSK |= 1UL << (ep->num & EP_ADDR_MSK);
|
USBx_DEVICE->DIEPEMPMSK |= 1UL << (ep->num & EP_ADDR_MSK);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/* EP enable, IN data in FIFO */
|
|
||||||
USBx_INEP(epnum)->DIEPCTL |= (USB_OTG_DIEPCTL_CNAK | USB_OTG_DIEPCTL_EPENA);
|
|
||||||
}
|
}
|
||||||
else /* OUT endpoint */
|
else /* OUT endpoint */
|
||||||
{
|
{
|
||||||
|
@ -959,7 +989,7 @@ HAL_StatusTypeDef USB_WritePacket(USB_OTG_GlobalTypeDef *USBx, uint8_t *src, uin
|
||||||
count32b = ((uint32_t)len + 3U) / 4U;
|
count32b = ((uint32_t)len + 3U) / 4U;
|
||||||
for (i = 0U; i < count32b; i++)
|
for (i = 0U; i < count32b; i++)
|
||||||
{
|
{
|
||||||
USBx_DFIFO((uint32_t)ch_ep_num) = *((__packed uint32_t *)pSrc);
|
USBx_DFIFO((uint32_t)ch_ep_num) = __UNALIGNED_UINT32_READ(pSrc);
|
||||||
pSrc++;
|
pSrc++;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -968,15 +998,10 @@ HAL_StatusTypeDef USB_WritePacket(USB_OTG_GlobalTypeDef *USBx, uint8_t *src, uin
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief USB_ReadPacket : read a packet from the Tx FIFO associated
|
* @brief USB_ReadPacket : read a packet from the RX FIFO
|
||||||
* with the EP/channel
|
|
||||||
* @param USBx Selected device
|
* @param USBx Selected device
|
||||||
* @param dest source pointer
|
* @param dest source pointer
|
||||||
* @param len Number of bytes to read
|
* @param len Number of bytes to read
|
||||||
* @param dma USB dma enabled or disabled
|
|
||||||
* This parameter can be one of these values:
|
|
||||||
* 0 : DMA feature not used
|
|
||||||
* 1 : DMA feature used
|
|
||||||
* @retval pointer to destination buffer
|
* @retval pointer to destination buffer
|
||||||
*/
|
*/
|
||||||
void *USB_ReadPacket(USB_OTG_GlobalTypeDef *USBx, uint8_t *dest, uint16_t len)
|
void *USB_ReadPacket(USB_OTG_GlobalTypeDef *USBx, uint8_t *dest, uint16_t len)
|
||||||
|
@ -988,7 +1013,7 @@ void *USB_ReadPacket(USB_OTG_GlobalTypeDef *USBx, uint8_t *dest, uint16_t len)
|
||||||
|
|
||||||
for (i = 0U; i < count32b; i++)
|
for (i = 0U; i < count32b; i++)
|
||||||
{
|
{
|
||||||
*(__packed uint32_t *)pDest = USBx_DFIFO(0U);
|
__UNALIGNED_UINT32_WRITE(pDest, USBx_DFIFO(0U));
|
||||||
pDest++;
|
pDest++;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1260,13 +1285,9 @@ HAL_StatusTypeDef USB_ActivateSetup(USB_OTG_GlobalTypeDef *USBx)
|
||||||
{
|
{
|
||||||
uint32_t USBx_BASE = (uint32_t)USBx;
|
uint32_t USBx_BASE = (uint32_t)USBx;
|
||||||
|
|
||||||
/* Set the MPS of the IN EP based on the enumeration speed */
|
/* Set the MPS of the IN EP0 to 64 bytes */
|
||||||
USBx_INEP(0U)->DIEPCTL &= ~USB_OTG_DIEPCTL_MPSIZ;
|
USBx_INEP(0U)->DIEPCTL &= ~USB_OTG_DIEPCTL_MPSIZ;
|
||||||
|
|
||||||
if ((USBx_DEVICE->DSTS & USB_OTG_DSTS_ENUMSPD) == DSTS_ENUMSPD_LS_PHY_6MHZ)
|
|
||||||
{
|
|
||||||
USBx_INEP(0U)->DIEPCTL |= 3U;
|
|
||||||
}
|
|
||||||
USBx_DEVICE->DCTL |= USB_OTG_DCTL_CGINAK;
|
USBx_DEVICE->DCTL |= USB_OTG_DCTL_CGINAK;
|
||||||
|
|
||||||
return HAL_OK;
|
return HAL_OK;
|
||||||
|
@ -1433,7 +1454,7 @@ HAL_StatusTypeDef USB_HostInit(USB_OTG_GlobalTypeDef *USBx, USB_OTG_CfgTypeDef c
|
||||||
|
|
||||||
if ((USBx->CID & (0x1U << 8)) != 0U)
|
if ((USBx->CID & (0x1U << 8)) != 0U)
|
||||||
{
|
{
|
||||||
if (cfg.speed == USB_OTG_SPEED_FULL)
|
if (cfg.speed == USBH_FSLS_SPEED)
|
||||||
{
|
{
|
||||||
/* Force Device Enumeration to FS/LS mode only */
|
/* Force Device Enumeration to FS/LS mode only */
|
||||||
USBx_HOST->HCFG |= USB_OTG_HCFG_FSLSS;
|
USBx_HOST->HCFG |= USB_OTG_HCFG_FSLSS;
|
||||||
|
@ -1594,9 +1615,9 @@ HAL_StatusTypeDef USB_DriveVbus(USB_OTG_GlobalTypeDef *USBx, uint8_t state)
|
||||||
* @param USBx Selected device
|
* @param USBx Selected device
|
||||||
* @retval speed : Host speed
|
* @retval speed : Host speed
|
||||||
* This parameter can be one of these values:
|
* This parameter can be one of these values:
|
||||||
* @arg USB_OTG_SPEED_HIGH: High speed mode
|
* @arg HCD_SPEED_HIGH: High speed mode
|
||||||
* @arg USB_OTG_SPEED_FULL: Full speed mode
|
* @arg HCD_SPEED_FULL: Full speed mode
|
||||||
* @arg USB_OTG_SPEED_LOW: Low speed mode
|
* @arg HCD_SPEED_LOW: Low speed mode
|
||||||
*/
|
*/
|
||||||
uint32_t USB_GetHostSpeed(USB_OTG_GlobalTypeDef *USBx)
|
uint32_t USB_GetHostSpeed(USB_OTG_GlobalTypeDef *USBx)
|
||||||
{
|
{
|
||||||
|
@ -1774,7 +1795,7 @@ HAL_StatusTypeDef USB_HC_StartXfer(USB_OTG_GlobalTypeDef *USBx, USB_OTG_HCTypeDe
|
||||||
uint16_t num_packets;
|
uint16_t num_packets;
|
||||||
uint16_t max_hc_pkt_count = 256U;
|
uint16_t max_hc_pkt_count = 256U;
|
||||||
|
|
||||||
if (((USBx->CID & (0x1U << 8)) != 0U) && (hc->speed == USB_OTG_SPEED_HIGH))
|
if (((USBx->CID & (0x1U << 8)) != 0U) && (hc->speed == USBH_HS_SPEED))
|
||||||
{
|
{
|
||||||
if ((dma == 0U) && (hc->do_ping == 1U))
|
if ((dma == 0U) && (hc->do_ping == 1U))
|
||||||
{
|
{
|
||||||
|
@ -2002,7 +2023,6 @@ HAL_StatusTypeDef USB_StopHost(USB_OTG_GlobalTypeDef *USBx)
|
||||||
uint32_t value;
|
uint32_t value;
|
||||||
uint32_t i;
|
uint32_t i;
|
||||||
|
|
||||||
|
|
||||||
(void)USB_DisableGlobalInt(USBx);
|
(void)USB_DisableGlobalInt(USBx);
|
||||||
|
|
||||||
/* Flush FIFO */
|
/* Flush FIFO */
|
||||||
|
@ -2041,6 +2061,7 @@ HAL_StatusTypeDef USB_StopHost(USB_OTG_GlobalTypeDef *USBx)
|
||||||
/* Clear any pending Host interrupts */
|
/* Clear any pending Host interrupts */
|
||||||
USBx_HOST->HAINT = 0xFFFFFFFFU;
|
USBx_HOST->HAINT = 0xFFFFFFFFU;
|
||||||
USBx->GINTSTS = 0xFFFFFFFFU;
|
USBx->GINTSTS = 0xFFFFFFFFU;
|
||||||
|
|
||||||
(void)USB_EnableGlobalInt(USBx);
|
(void)USB_EnableGlobalInt(USBx);
|
||||||
|
|
||||||
return HAL_OK;
|
return HAL_OK;
|
||||||
|
|
|
@ -12,7 +12,7 @@
|
||||||
* This software component is licensed by ST under Ultimate Liberty license
|
* This software component is licensed by ST under Ultimate Liberty license
|
||||||
* SLA0044, the "License"; You may not use this file except in compliance with
|
* SLA0044, the "License"; You may not use this file except in compliance with
|
||||||
* the License. You may obtain a copy of the License at:
|
* the License. You may obtain a copy of the License at:
|
||||||
* http://www.st.com/SLA0044
|
* www.st.com/SLA0044
|
||||||
*
|
*
|
||||||
******************************************************************************
|
******************************************************************************
|
||||||
*/
|
*/
|
||||||
|
@ -22,7 +22,7 @@
|
||||||
#define __USBD_CORE_H
|
#define __USBD_CORE_H
|
||||||
|
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
extern "C" {
|
extern "C" {
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
/* Includes ------------------------------------------------------------------*/
|
/* Includes ------------------------------------------------------------------*/
|
||||||
|
@ -84,58 +84,55 @@
|
||||||
*/
|
*/
|
||||||
USBD_StatusTypeDef USBD_Init(USBD_HandleTypeDef *pdev, USBD_DescriptorsTypeDef *pdesc, uint8_t id);
|
USBD_StatusTypeDef USBD_Init(USBD_HandleTypeDef *pdev, USBD_DescriptorsTypeDef *pdesc, uint8_t id);
|
||||||
USBD_StatusTypeDef USBD_DeInit(USBD_HandleTypeDef *pdev);
|
USBD_StatusTypeDef USBD_DeInit(USBD_HandleTypeDef *pdev);
|
||||||
USBD_StatusTypeDef USBD_Start (USBD_HandleTypeDef *pdev);
|
USBD_StatusTypeDef USBD_Start(USBD_HandleTypeDef *pdev);
|
||||||
USBD_StatusTypeDef USBD_Stop (USBD_HandleTypeDef *pdev);
|
USBD_StatusTypeDef USBD_Stop(USBD_HandleTypeDef *pdev);
|
||||||
USBD_StatusTypeDef USBD_RegisterClass(USBD_HandleTypeDef *pdev, USBD_ClassTypeDef *pclass);
|
USBD_StatusTypeDef USBD_RegisterClass(USBD_HandleTypeDef *pdev, USBD_ClassTypeDef *pclass);
|
||||||
|
|
||||||
USBD_StatusTypeDef USBD_RunTestMode (USBD_HandleTypeDef *pdev);
|
USBD_StatusTypeDef USBD_RunTestMode(USBD_HandleTypeDef *pdev);
|
||||||
USBD_StatusTypeDef USBD_SetClassConfig(USBD_HandleTypeDef *pdev, uint8_t cfgidx);
|
USBD_StatusTypeDef USBD_SetClassConfig(USBD_HandleTypeDef *pdev, uint8_t cfgidx);
|
||||||
USBD_StatusTypeDef USBD_ClrClassConfig(USBD_HandleTypeDef *pdev, uint8_t cfgidx);
|
USBD_StatusTypeDef USBD_ClrClassConfig(USBD_HandleTypeDef *pdev, uint8_t cfgidx);
|
||||||
|
|
||||||
USBD_StatusTypeDef USBD_LL_SetupStage(USBD_HandleTypeDef *pdev, uint8_t *psetup);
|
USBD_StatusTypeDef USBD_LL_SetupStage(USBD_HandleTypeDef *pdev, uint8_t *psetup);
|
||||||
USBD_StatusTypeDef USBD_LL_DataOutStage(USBD_HandleTypeDef *pdev , uint8_t epnum, uint8_t *pdata);
|
USBD_StatusTypeDef USBD_LL_DataOutStage(USBD_HandleTypeDef *pdev, uint8_t epnum, uint8_t *pdata);
|
||||||
USBD_StatusTypeDef USBD_LL_DataInStage(USBD_HandleTypeDef *pdev , uint8_t epnum, uint8_t *pdata);
|
USBD_StatusTypeDef USBD_LL_DataInStage(USBD_HandleTypeDef *pdev, uint8_t epnum, uint8_t *pdata);
|
||||||
|
|
||||||
USBD_StatusTypeDef USBD_LL_Reset(USBD_HandleTypeDef *pdev);
|
USBD_StatusTypeDef USBD_LL_Reset(USBD_HandleTypeDef *pdev);
|
||||||
USBD_StatusTypeDef USBD_LL_SetSpeed(USBD_HandleTypeDef *pdev, USBD_SpeedTypeDef speed);
|
USBD_StatusTypeDef USBD_LL_SetSpeed(USBD_HandleTypeDef *pdev, USBD_SpeedTypeDef speed);
|
||||||
USBD_StatusTypeDef USBD_LL_Suspend(USBD_HandleTypeDef *pdev);
|
USBD_StatusTypeDef USBD_LL_Suspend(USBD_HandleTypeDef *pdev);
|
||||||
USBD_StatusTypeDef USBD_LL_Resume(USBD_HandleTypeDef *pdev);
|
USBD_StatusTypeDef USBD_LL_Resume(USBD_HandleTypeDef *pdev);
|
||||||
|
|
||||||
USBD_StatusTypeDef USBD_LL_SOF(USBD_HandleTypeDef *pdev);
|
USBD_StatusTypeDef USBD_LL_SOF(USBD_HandleTypeDef *pdev);
|
||||||
USBD_StatusTypeDef USBD_LL_IsoINIncomplete(USBD_HandleTypeDef *pdev, uint8_t epnum);
|
USBD_StatusTypeDef USBD_LL_IsoINIncomplete(USBD_HandleTypeDef *pdev, uint8_t epnum);
|
||||||
USBD_StatusTypeDef USBD_LL_IsoOUTIncomplete(USBD_HandleTypeDef *pdev, uint8_t epnum);
|
USBD_StatusTypeDef USBD_LL_IsoOUTIncomplete(USBD_HandleTypeDef *pdev, uint8_t epnum);
|
||||||
|
|
||||||
USBD_StatusTypeDef USBD_LL_DevConnected(USBD_HandleTypeDef *pdev);
|
USBD_StatusTypeDef USBD_LL_DevConnected(USBD_HandleTypeDef *pdev);
|
||||||
USBD_StatusTypeDef USBD_LL_DevDisconnected(USBD_HandleTypeDef *pdev);
|
USBD_StatusTypeDef USBD_LL_DevDisconnected(USBD_HandleTypeDef *pdev);
|
||||||
|
|
||||||
/* USBD Low Level Driver */
|
/* USBD Low Level Driver */
|
||||||
USBD_StatusTypeDef USBD_LL_Init (USBD_HandleTypeDef *pdev);
|
USBD_StatusTypeDef USBD_LL_Init(USBD_HandleTypeDef *pdev);
|
||||||
USBD_StatusTypeDef USBD_LL_DeInit (USBD_HandleTypeDef *pdev);
|
USBD_StatusTypeDef USBD_LL_DeInit(USBD_HandleTypeDef *pdev);
|
||||||
USBD_StatusTypeDef USBD_LL_Start(USBD_HandleTypeDef *pdev);
|
USBD_StatusTypeDef USBD_LL_Start(USBD_HandleTypeDef *pdev);
|
||||||
USBD_StatusTypeDef USBD_LL_Stop (USBD_HandleTypeDef *pdev);
|
USBD_StatusTypeDef USBD_LL_Stop(USBD_HandleTypeDef *pdev);
|
||||||
USBD_StatusTypeDef USBD_LL_OpenEP (USBD_HandleTypeDef *pdev,
|
|
||||||
uint8_t ep_addr,
|
|
||||||
uint8_t ep_type,
|
|
||||||
uint16_t ep_mps);
|
|
||||||
|
|
||||||
USBD_StatusTypeDef USBD_LL_CloseEP (USBD_HandleTypeDef *pdev, uint8_t ep_addr);
|
USBD_StatusTypeDef USBD_LL_OpenEP(USBD_HandleTypeDef *pdev, uint8_t ep_addr,
|
||||||
USBD_StatusTypeDef USBD_LL_FlushEP (USBD_HandleTypeDef *pdev, uint8_t ep_addr);
|
uint8_t ep_type, uint16_t ep_mps);
|
||||||
USBD_StatusTypeDef USBD_LL_StallEP (USBD_HandleTypeDef *pdev, uint8_t ep_addr);
|
|
||||||
USBD_StatusTypeDef USBD_LL_ClearStallEP (USBD_HandleTypeDef *pdev, uint8_t ep_addr);
|
|
||||||
uint8_t USBD_LL_IsStallEP (USBD_HandleTypeDef *pdev, uint8_t ep_addr);
|
|
||||||
USBD_StatusTypeDef USBD_LL_SetUSBAddress (USBD_HandleTypeDef *pdev, uint8_t dev_addr);
|
|
||||||
USBD_StatusTypeDef USBD_LL_Transmit (USBD_HandleTypeDef *pdev,
|
|
||||||
uint8_t ep_addr,
|
|
||||||
uint8_t *pbuf,
|
|
||||||
uint16_t size);
|
|
||||||
|
|
||||||
USBD_StatusTypeDef USBD_LL_PrepareReceive(USBD_HandleTypeDef *pdev,
|
USBD_StatusTypeDef USBD_LL_CloseEP(USBD_HandleTypeDef *pdev, uint8_t ep_addr);
|
||||||
uint8_t ep_addr,
|
USBD_StatusTypeDef USBD_LL_FlushEP(USBD_HandleTypeDef *pdev, uint8_t ep_addr);
|
||||||
uint8_t *pbuf,
|
USBD_StatusTypeDef USBD_LL_StallEP(USBD_HandleTypeDef *pdev, uint8_t ep_addr);
|
||||||
uint16_t size);
|
USBD_StatusTypeDef USBD_LL_ClearStallEP(USBD_HandleTypeDef *pdev, uint8_t ep_addr);
|
||||||
|
USBD_StatusTypeDef USBD_LL_SetUSBAddress(USBD_HandleTypeDef *pdev, uint8_t dev_addr);
|
||||||
|
|
||||||
uint32_t USBD_LL_GetRxDataSize (USBD_HandleTypeDef *pdev, uint8_t ep_addr);
|
USBD_StatusTypeDef USBD_LL_Transmit(USBD_HandleTypeDef *pdev, uint8_t ep_addr,
|
||||||
void USBD_LL_Delay (uint32_t Delay);
|
uint8_t *pbuf, uint32_t size);
|
||||||
|
|
||||||
|
USBD_StatusTypeDef USBD_LL_PrepareReceive(USBD_HandleTypeDef *pdev, uint8_t ep_addr,
|
||||||
|
uint8_t *pbuf, uint32_t size);
|
||||||
|
|
||||||
|
uint8_t USBD_LL_IsStallEP(USBD_HandleTypeDef *pdev, uint8_t ep_addr);
|
||||||
|
uint32_t USBD_LL_GetRxDataSize(USBD_HandleTypeDef *pdev, uint8_t ep_addr);
|
||||||
|
|
||||||
|
void USBD_LL_Delay(uint32_t Delay);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @}
|
* @}
|
||||||
|
|
|
@ -12,7 +12,7 @@
|
||||||
* This software component is licensed by ST under Ultimate Liberty license
|
* This software component is licensed by ST under Ultimate Liberty license
|
||||||
* SLA0044, the "License"; You may not use this file except in compliance with
|
* SLA0044, the "License"; You may not use this file except in compliance with
|
||||||
* the License. You may obtain a copy of the License at:
|
* the License. You may obtain a copy of the License at:
|
||||||
* http://www.st.com/SLA0044
|
* www.st.com/SLA0044
|
||||||
*
|
*
|
||||||
******************************************************************************
|
******************************************************************************
|
||||||
*/
|
*/
|
||||||
|
@ -22,7 +22,7 @@
|
||||||
#define __USB_REQUEST_H
|
#define __USB_REQUEST_H
|
||||||
|
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
extern "C" {
|
extern "C" {
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
/* Includes ------------------------------------------------------------------*/
|
/* Includes ------------------------------------------------------------------*/
|
||||||
|
@ -73,16 +73,14 @@
|
||||||
* @{
|
* @{
|
||||||
*/
|
*/
|
||||||
|
|
||||||
USBD_StatusTypeDef USBD_StdDevReq (USBD_HandleTypeDef *pdev, USBD_SetupReqTypedef *req);
|
USBD_StatusTypeDef USBD_StdDevReq(USBD_HandleTypeDef *pdev, USBD_SetupReqTypedef *req);
|
||||||
USBD_StatusTypeDef USBD_StdItfReq (USBD_HandleTypeDef *pdev, USBD_SetupReqTypedef *req);
|
USBD_StatusTypeDef USBD_StdItfReq(USBD_HandleTypeDef *pdev, USBD_SetupReqTypedef *req);
|
||||||
USBD_StatusTypeDef USBD_StdEPReq (USBD_HandleTypeDef *pdev, USBD_SetupReqTypedef *req);
|
USBD_StatusTypeDef USBD_StdEPReq(USBD_HandleTypeDef *pdev, USBD_SetupReqTypedef *req);
|
||||||
|
|
||||||
|
void USBD_CtlError(USBD_HandleTypeDef *pdev, USBD_SetupReqTypedef *req);
|
||||||
|
void USBD_ParseSetupRequest(USBD_SetupReqTypedef *req, uint8_t *pdata);
|
||||||
|
void USBD_GetString(uint8_t *desc, uint8_t *unicode, uint16_t *len);
|
||||||
|
|
||||||
void USBD_CtlError (USBD_HandleTypeDef *pdev, USBD_SetupReqTypedef *req);
|
|
||||||
|
|
||||||
void USBD_ParseSetupRequest (USBD_SetupReqTypedef *req, uint8_t *pdata);
|
|
||||||
|
|
||||||
void USBD_GetString (uint8_t *desc, uint8_t *unicode, uint16_t *len);
|
|
||||||
/**
|
/**
|
||||||
* @}
|
* @}
|
||||||
*/
|
*/
|
||||||
|
|
|
@ -12,7 +12,7 @@
|
||||||
* This software component is licensed by ST under Ultimate Liberty license
|
* This software component is licensed by ST under Ultimate Liberty license
|
||||||
* SLA0044, the "License"; You may not use this file except in compliance with
|
* SLA0044, the "License"; You may not use this file except in compliance with
|
||||||
* the License. You may obtain a copy of the License at:
|
* the License. You may obtain a copy of the License at:
|
||||||
* http://www.st.com/SLA0044
|
* www.st.com/SLA0044
|
||||||
*
|
*
|
||||||
******************************************************************************
|
******************************************************************************
|
||||||
*/
|
*/
|
||||||
|
@ -22,7 +22,7 @@
|
||||||
#define __USBD_DEF_H
|
#define __USBD_DEF_H
|
||||||
|
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
extern "C" {
|
extern "C" {
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
/* Includes ------------------------------------------------------------------*/
|
/* Includes ------------------------------------------------------------------*/
|
||||||
|
@ -61,9 +61,13 @@
|
||||||
#define USBD_SELF_POWERED 1U
|
#define USBD_SELF_POWERED 1U
|
||||||
#endif /*USBD_SELF_POWERED */
|
#endif /*USBD_SELF_POWERED */
|
||||||
|
|
||||||
#ifndef USBD_SUPPORT_USER_STRING
|
#ifndef USBD_SUPPORT_USER_STRING_DESC
|
||||||
#define USBD_SUPPORT_USER_STRING 0U
|
#define USBD_SUPPORT_USER_STRING_DESC 0U
|
||||||
#endif /* USBD_SUPPORT_USER_STRING */
|
#endif /* USBD_SUPPORT_USER_STRING_DESC */
|
||||||
|
|
||||||
|
#ifndef USBD_CLASS_USER_STRING_DESC
|
||||||
|
#define USBD_CLASS_USER_STRING_DESC 0U
|
||||||
|
#endif /* USBD_CLASS_USER_STRING_DESC */
|
||||||
|
|
||||||
#define USB_LEN_DEV_QUALIFIER_DESC 0x0AU
|
#define USB_LEN_DEV_QUALIFIER_DESC 0x0AU
|
||||||
#define USB_LEN_DEV_DESC 0x12U
|
#define USB_LEN_DEV_DESC 0x12U
|
||||||
|
@ -158,37 +162,58 @@
|
||||||
|
|
||||||
typedef struct usb_setup_req
|
typedef struct usb_setup_req
|
||||||
{
|
{
|
||||||
|
uint8_t bmRequest;
|
||||||
|
uint8_t bRequest;
|
||||||
|
uint16_t wValue;
|
||||||
|
uint16_t wIndex;
|
||||||
|
uint16_t wLength;
|
||||||
|
} USBD_SetupReqTypedef;
|
||||||
|
|
||||||
|
typedef struct
|
||||||
|
{
|
||||||
|
uint8_t bLength;
|
||||||
|
uint8_t bDescriptorType;
|
||||||
|
uint8_t wDescriptorLengthLow;
|
||||||
|
uint8_t wDescriptorLengthHigh;
|
||||||
|
uint8_t bNumInterfaces;
|
||||||
|
uint8_t bConfigurationValue;
|
||||||
|
uint8_t iConfiguration;
|
||||||
|
uint8_t bmAttributes;
|
||||||
|
uint8_t bMaxPower;
|
||||||
|
} USBD_ConfigDescTypedef;
|
||||||
|
|
||||||
|
typedef struct
|
||||||
|
{
|
||||||
|
uint8_t bLength;
|
||||||
|
uint8_t bDescriptorType;
|
||||||
|
uint16_t wTotalLength;
|
||||||
|
uint8_t bNumDeviceCaps;
|
||||||
|
} USBD_BosDescTypedef;
|
||||||
|
|
||||||
uint8_t bmRequest;
|
|
||||||
uint8_t bRequest;
|
|
||||||
uint16_t wValue;
|
|
||||||
uint16_t wIndex;
|
|
||||||
uint16_t wLength;
|
|
||||||
}USBD_SetupReqTypedef;
|
|
||||||
|
|
||||||
struct _USBD_HandleTypeDef;
|
struct _USBD_HandleTypeDef;
|
||||||
|
|
||||||
typedef struct _Device_cb
|
typedef struct _Device_cb
|
||||||
{
|
{
|
||||||
uint8_t (*Init) (struct _USBD_HandleTypeDef *pdev , uint8_t cfgidx);
|
uint8_t (*Init)(struct _USBD_HandleTypeDef *pdev, uint8_t cfgidx);
|
||||||
uint8_t (*DeInit) (struct _USBD_HandleTypeDef *pdev , uint8_t cfgidx);
|
uint8_t (*DeInit)(struct _USBD_HandleTypeDef *pdev, uint8_t cfgidx);
|
||||||
/* Control Endpoints*/
|
/* Control Endpoints*/
|
||||||
uint8_t (*Setup) (struct _USBD_HandleTypeDef *pdev , USBD_SetupReqTypedef *req);
|
uint8_t (*Setup)(struct _USBD_HandleTypeDef *pdev, USBD_SetupReqTypedef *req);
|
||||||
uint8_t (*EP0_TxSent) (struct _USBD_HandleTypeDef *pdev );
|
uint8_t (*EP0_TxSent)(struct _USBD_HandleTypeDef *pdev);
|
||||||
uint8_t (*EP0_RxReady) (struct _USBD_HandleTypeDef *pdev );
|
uint8_t (*EP0_RxReady)(struct _USBD_HandleTypeDef *pdev);
|
||||||
/* Class Specific Endpoints*/
|
/* Class Specific Endpoints*/
|
||||||
uint8_t (*DataIn) (struct _USBD_HandleTypeDef *pdev , uint8_t epnum);
|
uint8_t (*DataIn)(struct _USBD_HandleTypeDef *pdev, uint8_t epnum);
|
||||||
uint8_t (*DataOut) (struct _USBD_HandleTypeDef *pdev , uint8_t epnum);
|
uint8_t (*DataOut)(struct _USBD_HandleTypeDef *pdev, uint8_t epnum);
|
||||||
uint8_t (*SOF) (struct _USBD_HandleTypeDef *pdev);
|
uint8_t (*SOF)(struct _USBD_HandleTypeDef *pdev);
|
||||||
uint8_t (*IsoINIncomplete) (struct _USBD_HandleTypeDef *pdev , uint8_t epnum);
|
uint8_t (*IsoINIncomplete)(struct _USBD_HandleTypeDef *pdev, uint8_t epnum);
|
||||||
uint8_t (*IsoOUTIncomplete) (struct _USBD_HandleTypeDef *pdev , uint8_t epnum);
|
uint8_t (*IsoOUTIncomplete)(struct _USBD_HandleTypeDef *pdev, uint8_t epnum);
|
||||||
|
|
||||||
uint8_t *(*GetHSConfigDescriptor)(uint16_t *length);
|
uint8_t *(*GetHSConfigDescriptor)(uint16_t *length);
|
||||||
uint8_t *(*GetFSConfigDescriptor)(uint16_t *length);
|
uint8_t *(*GetFSConfigDescriptor)(uint16_t *length);
|
||||||
uint8_t *(*GetOtherSpeedConfigDescriptor)(uint16_t *length);
|
uint8_t *(*GetOtherSpeedConfigDescriptor)(uint16_t *length);
|
||||||
uint8_t *(*GetDeviceQualifierDescriptor)(uint16_t *length);
|
uint8_t *(*GetDeviceQualifierDescriptor)(uint16_t *length);
|
||||||
#if (USBD_SUPPORT_USER_STRING == 1U)
|
#if (USBD_SUPPORT_USER_STRING_DESC == 1U)
|
||||||
uint8_t *(*GetUsrStrDescriptor)(struct _USBD_HandleTypeDef *pdev ,uint8_t index, uint16_t *length);
|
uint8_t *(*GetUsrStrDescriptor)(struct _USBD_HandleTypeDef *pdev, uint8_t index, uint16_t *length);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
} USBD_ClassTypeDef;
|
} USBD_ClassTypeDef;
|
||||||
|
@ -199,38 +224,44 @@ typedef enum
|
||||||
USBD_SPEED_HIGH = 0U,
|
USBD_SPEED_HIGH = 0U,
|
||||||
USBD_SPEED_FULL = 1U,
|
USBD_SPEED_FULL = 1U,
|
||||||
USBD_SPEED_LOW = 2U,
|
USBD_SPEED_LOW = 2U,
|
||||||
}USBD_SpeedTypeDef;
|
} USBD_SpeedTypeDef;
|
||||||
|
|
||||||
/* Following USB Device status */
|
/* Following USB Device status */
|
||||||
typedef enum {
|
typedef enum
|
||||||
USBD_OK = 0U,
|
{
|
||||||
|
USBD_OK = 0U,
|
||||||
USBD_BUSY,
|
USBD_BUSY,
|
||||||
|
USBD_EMEM,
|
||||||
USBD_FAIL,
|
USBD_FAIL,
|
||||||
}USBD_StatusTypeDef;
|
} USBD_StatusTypeDef;
|
||||||
|
|
||||||
/* USB Device descriptors structure */
|
/* USB Device descriptors structure */
|
||||||
typedef struct
|
typedef struct
|
||||||
{
|
{
|
||||||
uint8_t *(*GetDeviceDescriptor)( USBD_SpeedTypeDef speed , uint16_t *length);
|
uint8_t *(*GetDeviceDescriptor)(USBD_SpeedTypeDef speed, uint16_t *length);
|
||||||
uint8_t *(*GetLangIDStrDescriptor)( USBD_SpeedTypeDef speed , uint16_t *length);
|
uint8_t *(*GetLangIDStrDescriptor)(USBD_SpeedTypeDef speed, uint16_t *length);
|
||||||
uint8_t *(*GetManufacturerStrDescriptor)( USBD_SpeedTypeDef speed , uint16_t *length);
|
uint8_t *(*GetManufacturerStrDescriptor)(USBD_SpeedTypeDef speed, uint16_t *length);
|
||||||
uint8_t *(*GetProductStrDescriptor)( USBD_SpeedTypeDef speed , uint16_t *length);
|
uint8_t *(*GetProductStrDescriptor)(USBD_SpeedTypeDef speed, uint16_t *length);
|
||||||
uint8_t *(*GetSerialStrDescriptor)( USBD_SpeedTypeDef speed , uint16_t *length);
|
uint8_t *(*GetSerialStrDescriptor)(USBD_SpeedTypeDef speed, uint16_t *length);
|
||||||
uint8_t *(*GetConfigurationStrDescriptor)( USBD_SpeedTypeDef speed , uint16_t *length);
|
uint8_t *(*GetConfigurationStrDescriptor)(USBD_SpeedTypeDef speed, uint16_t *length);
|
||||||
uint8_t *(*GetInterfaceStrDescriptor)( USBD_SpeedTypeDef speed , uint16_t *length);
|
uint8_t *(*GetInterfaceStrDescriptor)(USBD_SpeedTypeDef speed, uint16_t *length);
|
||||||
#if (USBD_LPM_ENABLED == 1U)
|
#if (USBD_CLASS_USER_STRING_DESC == 1)
|
||||||
uint8_t *(*GetBOSDescriptor)( USBD_SpeedTypeDef speed , uint16_t *length);
|
uint8_t *(*GetUserStrDescriptor)(USBD_SpeedTypeDef speed, uint8_t idx, uint16_t *length);
|
||||||
|
#endif
|
||||||
|
#if ((USBD_LPM_ENABLED == 1U) || (USBD_CLASS_BOS_ENABLED == 1))
|
||||||
|
uint8_t *(*GetBOSDescriptor)(USBD_SpeedTypeDef speed, uint16_t *length);
|
||||||
#endif
|
#endif
|
||||||
} USBD_DescriptorsTypeDef;
|
} USBD_DescriptorsTypeDef;
|
||||||
|
|
||||||
/* USB Device handle structure */
|
/* USB Device handle structure */
|
||||||
typedef struct
|
typedef struct
|
||||||
{
|
{
|
||||||
uint32_t status;
|
uint32_t status;
|
||||||
uint32_t is_used;
|
uint32_t total_length;
|
||||||
uint32_t total_length;
|
uint32_t rem_length;
|
||||||
uint32_t rem_length;
|
uint32_t maxpacket;
|
||||||
uint32_t maxpacket;
|
uint16_t is_used;
|
||||||
|
uint16_t bInterval;
|
||||||
} USBD_EndpointTypeDef;
|
} USBD_EndpointTypeDef;
|
||||||
|
|
||||||
/* USB Device handle structure */
|
/* USB Device handle structure */
|
||||||
|
@ -241,8 +272,8 @@ typedef struct _USBD_HandleTypeDef
|
||||||
uint32_t dev_default_config;
|
uint32_t dev_default_config;
|
||||||
uint32_t dev_config_status;
|
uint32_t dev_config_status;
|
||||||
USBD_SpeedTypeDef dev_speed;
|
USBD_SpeedTypeDef dev_speed;
|
||||||
USBD_EndpointTypeDef ep_in[15];
|
USBD_EndpointTypeDef ep_in[16];
|
||||||
USBD_EndpointTypeDef ep_out[15];
|
USBD_EndpointTypeDef ep_out[16];
|
||||||
uint32_t ep0_state;
|
uint32_t ep0_state;
|
||||||
uint32_t ep0_data_len;
|
uint32_t ep0_data_len;
|
||||||
uint8_t dev_state;
|
uint8_t dev_state;
|
||||||
|
@ -251,6 +282,7 @@ typedef struct _USBD_HandleTypeDef
|
||||||
uint8_t dev_connection_status;
|
uint8_t dev_connection_status;
|
||||||
uint8_t dev_test_mode;
|
uint8_t dev_test_mode;
|
||||||
uint32_t dev_remote_wakeup;
|
uint32_t dev_remote_wakeup;
|
||||||
|
uint8_t ConfIdx;
|
||||||
|
|
||||||
USBD_SetupReqTypedef request;
|
USBD_SetupReqTypedef request;
|
||||||
USBD_DescriptorsTypeDef *pDesc;
|
USBD_DescriptorsTypeDef *pDesc;
|
||||||
|
@ -258,6 +290,8 @@ typedef struct _USBD_HandleTypeDef
|
||||||
void *pClassData;
|
void *pClassData;
|
||||||
void *pUserData;
|
void *pUserData;
|
||||||
void *pData;
|
void *pData;
|
||||||
|
void *pBosDesc;
|
||||||
|
void *pConfDesc;
|
||||||
} USBD_HandleTypeDef;
|
} USBD_HandleTypeDef;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -269,40 +303,57 @@ typedef struct _USBD_HandleTypeDef
|
||||||
/** @defgroup USBD_DEF_Exported_Macros
|
/** @defgroup USBD_DEF_Exported_Macros
|
||||||
* @{
|
* @{
|
||||||
*/
|
*/
|
||||||
#define SWAPBYTE(addr) (((uint16_t)(*((uint8_t *)(addr)))) + \
|
__STATIC_INLINE uint16_t SWAPBYTE(uint8_t *addr)
|
||||||
(((uint16_t)(*(((uint8_t *)(addr)) + 1U))) << 8U))
|
{
|
||||||
|
uint16_t _SwapVal, _Byte1, _Byte2;
|
||||||
|
uint8_t *_pbuff = addr;
|
||||||
|
|
||||||
#define LOBYTE(x) ((uint8_t)(x & 0x00FFU))
|
_Byte1 = *(uint8_t *)_pbuff;
|
||||||
#define HIBYTE(x) ((uint8_t)((x & 0xFF00U) >> 8U))
|
_pbuff++;
|
||||||
|
_Byte2 = *(uint8_t *)_pbuff;
|
||||||
|
|
||||||
|
_SwapVal = (_Byte2 << 8) | _Byte1;
|
||||||
|
|
||||||
|
return _SwapVal;
|
||||||
|
}
|
||||||
|
|
||||||
|
#define LOBYTE(x) ((uint8_t)((x) & 0x00FFU))
|
||||||
|
#define HIBYTE(x) ((uint8_t)(((x) & 0xFF00U) >> 8U))
|
||||||
#define MIN(a, b) (((a) < (b)) ? (a) : (b))
|
#define MIN(a, b) (((a) < (b)) ? (a) : (b))
|
||||||
#define MAX(a, b) (((a) > (b)) ? (a) : (b))
|
#define MAX(a, b) (((a) > (b)) ? (a) : (b))
|
||||||
|
|
||||||
|
|
||||||
#if defined ( __GNUC__ )
|
#if defined ( __GNUC__ )
|
||||||
#ifndef __weak
|
#ifndef __weak
|
||||||
#define __weak __attribute__((weak))
|
#define __weak __attribute__((weak))
|
||||||
#endif /* __weak */
|
#endif /* __weak */
|
||||||
#ifndef __packed
|
#ifndef __packed
|
||||||
#define __packed __attribute__((__packed__))
|
#define __packed __attribute__((__packed__))
|
||||||
#endif /* __packed */
|
#endif /* __packed */
|
||||||
#endif /* __GNUC__ */
|
#endif /* __GNUC__ */
|
||||||
|
|
||||||
|
|
||||||
/* In HS mode and when the DMA is used, all variables and data structures dealing
|
/* In HS mode and when the DMA is used, all variables and data structures dealing
|
||||||
with the DMA during the transaction process should be 4-bytes aligned */
|
with the DMA during the transaction process should be 4-bytes aligned */
|
||||||
|
|
||||||
#if defined (__GNUC__) /* GNU Compiler */
|
#if defined ( __GNUC__ ) && !defined (__CC_ARM) /* GNU Compiler */
|
||||||
#define __ALIGN_END __attribute__ ((aligned (4)))
|
#ifndef __ALIGN_END
|
||||||
#define __ALIGN_BEGIN
|
#define __ALIGN_END __attribute__ ((aligned (4U)))
|
||||||
|
#endif /* __ALIGN_END */
|
||||||
|
#ifndef __ALIGN_BEGIN
|
||||||
|
#define __ALIGN_BEGIN
|
||||||
|
#endif /* __ALIGN_BEGIN */
|
||||||
#else
|
#else
|
||||||
#define __ALIGN_END
|
#ifndef __ALIGN_END
|
||||||
#if defined (__CC_ARM) /* ARM Compiler */
|
#define __ALIGN_END
|
||||||
#define __ALIGN_BEGIN __align(4)
|
#endif /* __ALIGN_END */
|
||||||
#elif defined (__ICCARM__) /* IAR Compiler */
|
#ifndef __ALIGN_BEGIN
|
||||||
#define __ALIGN_BEGIN
|
#if defined (__CC_ARM) /* ARM Compiler */
|
||||||
#elif defined (__TASKING__) /* TASKING Compiler */
|
#define __ALIGN_BEGIN __align(4U)
|
||||||
#define __ALIGN_BEGIN __align(4)
|
#elif defined (__ICCARM__) /* IAR Compiler */
|
||||||
#endif /* __CC_ARM */
|
#define __ALIGN_BEGIN
|
||||||
|
#endif /* __CC_ARM */
|
||||||
|
#endif /* __ALIGN_BEGIN */
|
||||||
#endif /* __GNUC__ */
|
#endif /* __GNUC__ */
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -12,7 +12,7 @@
|
||||||
* This software component is licensed by ST under Ultimate Liberty license
|
* This software component is licensed by ST under Ultimate Liberty license
|
||||||
* SLA0044, the "License"; You may not use this file except in compliance with
|
* SLA0044, the "License"; You may not use this file except in compliance with
|
||||||
* the License. You may obtain a copy of the License at:
|
* the License. You may obtain a copy of the License at:
|
||||||
* http://www.st.com/SLA0044
|
* www.st.com/SLA0044
|
||||||
*
|
*
|
||||||
******************************************************************************
|
******************************************************************************
|
||||||
*/
|
*/
|
||||||
|
@ -22,7 +22,7 @@
|
||||||
#define __USBD_IOREQ_H
|
#define __USBD_IOREQ_H
|
||||||
|
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
extern "C" {
|
extern "C" {
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
/* Includes ------------------------------------------------------------------*/
|
/* Includes ------------------------------------------------------------------*/
|
||||||
|
@ -77,27 +77,22 @@
|
||||||
* @{
|
* @{
|
||||||
*/
|
*/
|
||||||
|
|
||||||
USBD_StatusTypeDef USBD_CtlSendData (USBD_HandleTypeDef *pdev,
|
USBD_StatusTypeDef USBD_CtlSendData(USBD_HandleTypeDef *pdev,
|
||||||
uint8_t *pbuf,
|
uint8_t *pbuf, uint32_t len);
|
||||||
uint16_t len);
|
|
||||||
|
|
||||||
USBD_StatusTypeDef USBD_CtlContinueSendData (USBD_HandleTypeDef *pdev,
|
USBD_StatusTypeDef USBD_CtlContinueSendData(USBD_HandleTypeDef *pdev,
|
||||||
uint8_t *pbuf,
|
uint8_t *pbuf, uint32_t len);
|
||||||
uint16_t len);
|
|
||||||
|
|
||||||
USBD_StatusTypeDef USBD_CtlPrepareRx (USBD_HandleTypeDef *pdev,
|
USBD_StatusTypeDef USBD_CtlPrepareRx(USBD_HandleTypeDef *pdev,
|
||||||
uint8_t *pbuf,
|
uint8_t *pbuf, uint32_t len);
|
||||||
uint16_t len);
|
|
||||||
|
|
||||||
USBD_StatusTypeDef USBD_CtlContinueRx (USBD_HandleTypeDef *pdev,
|
USBD_StatusTypeDef USBD_CtlContinueRx(USBD_HandleTypeDef *pdev,
|
||||||
uint8_t *pbuf,
|
uint8_t *pbuf, uint32_t len);
|
||||||
uint16_t len);
|
|
||||||
|
|
||||||
USBD_StatusTypeDef USBD_CtlSendStatus (USBD_HandleTypeDef *pdev);
|
USBD_StatusTypeDef USBD_CtlSendStatus(USBD_HandleTypeDef *pdev);
|
||||||
|
USBD_StatusTypeDef USBD_CtlReceiveStatus(USBD_HandleTypeDef *pdev);
|
||||||
|
|
||||||
USBD_StatusTypeDef USBD_CtlReceiveStatus (USBD_HandleTypeDef *pdev);
|
uint32_t USBD_GetRxCount(USBD_HandleTypeDef *pdev, uint8_t ep_addr);
|
||||||
|
|
||||||
uint32_t USBD_GetRxCount (USBD_HandleTypeDef *pdev, uint8_t ep_addr);
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @}
|
* @}
|
||||||
|
|
|
@ -12,7 +12,7 @@
|
||||||
* This software component is licensed by ST under Ultimate Liberty license
|
* This software component is licensed by ST under Ultimate Liberty license
|
||||||
* SLA0044, the "License"; You may not use this file except in compliance with
|
* SLA0044, the "License"; You may not use this file except in compliance with
|
||||||
* the License. You may obtain a copy of the License at:
|
* the License. You may obtain a copy of the License at:
|
||||||
* http://www.st.com/SLA0044
|
* www.st.com/SLA0044
|
||||||
*
|
*
|
||||||
******************************************************************************
|
******************************************************************************
|
||||||
*/
|
*/
|
||||||
|
@ -33,6 +33,7 @@
|
||||||
/** @defgroup USBD_CORE_Private_TypesDefinitions
|
/** @defgroup USBD_CORE_Private_TypesDefinitions
|
||||||
* @{
|
* @{
|
||||||
*/
|
*/
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @}
|
* @}
|
||||||
*/
|
*/
|
||||||
|
@ -50,13 +51,12 @@
|
||||||
/** @defgroup USBD_CORE_Private_Macros
|
/** @defgroup USBD_CORE_Private_Macros
|
||||||
* @{
|
* @{
|
||||||
*/
|
*/
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @}
|
* @}
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/** @defgroup USBD_CORE_Private_FunctionPrototypes
|
/** @defgroup USBD_CORE_Private_FunctionPrototypes
|
||||||
* @{
|
* @{
|
||||||
*/
|
*/
|
||||||
|
@ -73,6 +73,7 @@
|
||||||
* @}
|
* @}
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
|
||||||
/** @defgroup USBD_CORE_Private_Functions
|
/** @defgroup USBD_CORE_Private_Functions
|
||||||
* @{
|
* @{
|
||||||
*/
|
*/
|
||||||
|
@ -85,10 +86,13 @@
|
||||||
* @param id: Low level core index
|
* @param id: Low level core index
|
||||||
* @retval None
|
* @retval None
|
||||||
*/
|
*/
|
||||||
USBD_StatusTypeDef USBD_Init(USBD_HandleTypeDef *pdev, USBD_DescriptorsTypeDef *pdesc, uint8_t id)
|
USBD_StatusTypeDef USBD_Init(USBD_HandleTypeDef *pdev,
|
||||||
|
USBD_DescriptorsTypeDef *pdesc, uint8_t id)
|
||||||
{
|
{
|
||||||
|
USBD_StatusTypeDef ret;
|
||||||
|
|
||||||
/* Check whether the USB Host handle is valid */
|
/* Check whether the USB Host handle is valid */
|
||||||
if(pdev == NULL)
|
if (pdev == NULL)
|
||||||
{
|
{
|
||||||
#if (USBD_DEBUG_LEVEL > 1U)
|
#if (USBD_DEBUG_LEVEL > 1U)
|
||||||
USBD_ErrLog("Invalid Device handle");
|
USBD_ErrLog("Invalid Device handle");
|
||||||
|
@ -96,25 +100,31 @@ USBD_StatusTypeDef USBD_Init(USBD_HandleTypeDef *pdev, USBD_DescriptorsTypeDef *
|
||||||
return USBD_FAIL;
|
return USBD_FAIL;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Unlink previous class*/
|
/* Unlink previous class */
|
||||||
if(pdev->pClass != NULL)
|
if (pdev->pClass != NULL)
|
||||||
{
|
{
|
||||||
pdev->pClass = NULL;
|
pdev->pClass = NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (pdev->pConfDesc != NULL)
|
||||||
|
{
|
||||||
|
pdev->pConfDesc = NULL;
|
||||||
|
}
|
||||||
|
|
||||||
/* Assign USBD Descriptors */
|
/* Assign USBD Descriptors */
|
||||||
if(pdesc != NULL)
|
if (pdesc != NULL)
|
||||||
{
|
{
|
||||||
pdev->pDesc = pdesc;
|
pdev->pDesc = pdesc;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Set Device initial State */
|
/* Set Device initial State */
|
||||||
pdev->dev_state = USBD_STATE_DEFAULT;
|
pdev->dev_state = USBD_STATE_DEFAULT;
|
||||||
pdev->id = id;
|
pdev->id = id;
|
||||||
/* Initialize low level driver */
|
|
||||||
USBD_LL_Init(pdev);
|
|
||||||
|
|
||||||
return USBD_OK;
|
/* Initialize low level driver */
|
||||||
|
ret = USBD_LL_Init(pdev);
|
||||||
|
|
||||||
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -125,19 +135,34 @@ USBD_StatusTypeDef USBD_Init(USBD_HandleTypeDef *pdev, USBD_DescriptorsTypeDef *
|
||||||
*/
|
*/
|
||||||
USBD_StatusTypeDef USBD_DeInit(USBD_HandleTypeDef *pdev)
|
USBD_StatusTypeDef USBD_DeInit(USBD_HandleTypeDef *pdev)
|
||||||
{
|
{
|
||||||
|
USBD_StatusTypeDef ret;
|
||||||
|
|
||||||
/* Set Default State */
|
/* Set Default State */
|
||||||
pdev->dev_state = USBD_STATE_DEFAULT;
|
pdev->dev_state = USBD_STATE_DEFAULT;
|
||||||
|
|
||||||
/* Free Class Resources */
|
/* Free Class Resources */
|
||||||
pdev->pClass->DeInit(pdev, (uint8_t)pdev->dev_config);
|
if (pdev->pClass != NULL)
|
||||||
|
{
|
||||||
|
pdev->pClass->DeInit(pdev, (uint8_t)pdev->dev_config);
|
||||||
|
}
|
||||||
|
|
||||||
/* Stop the low level driver */
|
if (pdev->pConfDesc != NULL)
|
||||||
USBD_LL_Stop(pdev);
|
{
|
||||||
|
pdev->pConfDesc = NULL;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Stop the low level driver */
|
||||||
|
ret = USBD_LL_Stop(pdev);
|
||||||
|
|
||||||
|
if (ret != USBD_OK)
|
||||||
|
{
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
|
||||||
/* Initialize low level driver */
|
/* Initialize low level driver */
|
||||||
USBD_LL_DeInit(pdev);
|
ret = USBD_LL_DeInit(pdev);
|
||||||
|
|
||||||
return USBD_OK;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -147,24 +172,30 @@ USBD_StatusTypeDef USBD_DeInit(USBD_HandleTypeDef *pdev)
|
||||||
* @param pclass: Class handle
|
* @param pclass: Class handle
|
||||||
* @retval USBD Status
|
* @retval USBD Status
|
||||||
*/
|
*/
|
||||||
USBD_StatusTypeDef USBD_RegisterClass(USBD_HandleTypeDef *pdev, USBD_ClassTypeDef *pclass)
|
USBD_StatusTypeDef USBD_RegisterClass(USBD_HandleTypeDef *pdev, USBD_ClassTypeDef *pclass)
|
||||||
{
|
{
|
||||||
USBD_StatusTypeDef status = USBD_OK;
|
uint16_t len = 0U;
|
||||||
if(pclass != 0)
|
|
||||||
{
|
if (pclass == NULL)
|
||||||
/* link the class to the USB Device handle */
|
|
||||||
pdev->pClass = pclass;
|
|
||||||
status = USBD_OK;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
{
|
||||||
#if (USBD_DEBUG_LEVEL > 1U)
|
#if (USBD_DEBUG_LEVEL > 1U)
|
||||||
USBD_ErrLog("Invalid Class handle");
|
USBD_ErrLog("Invalid Class handle");
|
||||||
#endif
|
#endif
|
||||||
status = USBD_FAIL;
|
return USBD_FAIL;
|
||||||
}
|
}
|
||||||
|
|
||||||
return status;
|
/* link the class to the USB Device handle */
|
||||||
|
pdev->pClass = pclass;
|
||||||
|
|
||||||
|
/* Get Device Configuration Descriptor */
|
||||||
|
#ifdef USE_USB_FS
|
||||||
|
pdev->pConfDesc = (void *)pdev->pClass->GetFSConfigDescriptor(&len);
|
||||||
|
#else /* USE_USB_HS */
|
||||||
|
pdev->pConfDesc = (void *)pdev->pClass->GetHSConfigDescriptor(&len);
|
||||||
|
#endif /* USE_USB_FS */
|
||||||
|
|
||||||
|
|
||||||
|
return USBD_OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -173,13 +204,10 @@ USBD_StatusTypeDef USBD_RegisterClass(USBD_HandleTypeDef *pdev, USBD_ClassTypeD
|
||||||
* @param pdev: Device Handle
|
* @param pdev: Device Handle
|
||||||
* @retval USBD Status
|
* @retval USBD Status
|
||||||
*/
|
*/
|
||||||
USBD_StatusTypeDef USBD_Start (USBD_HandleTypeDef *pdev)
|
USBD_StatusTypeDef USBD_Start(USBD_HandleTypeDef *pdev)
|
||||||
{
|
{
|
||||||
|
|
||||||
/* Start the low level driver */
|
/* Start the low level driver */
|
||||||
USBD_LL_Start(pdev);
|
return USBD_LL_Start(pdev);
|
||||||
|
|
||||||
return USBD_OK;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -188,15 +216,25 @@ USBD_StatusTypeDef USBD_Start (USBD_HandleTypeDef *pdev)
|
||||||
* @param pdev: Device Handle
|
* @param pdev: Device Handle
|
||||||
* @retval USBD Status
|
* @retval USBD Status
|
||||||
*/
|
*/
|
||||||
USBD_StatusTypeDef USBD_Stop (USBD_HandleTypeDef *pdev)
|
USBD_StatusTypeDef USBD_Stop(USBD_HandleTypeDef *pdev)
|
||||||
{
|
{
|
||||||
|
USBD_StatusTypeDef ret;
|
||||||
|
|
||||||
/* Free Class Resources */
|
/* Free Class Resources */
|
||||||
pdev->pClass->DeInit(pdev, (uint8_t)pdev->dev_config);
|
if (pdev->pClass != NULL)
|
||||||
|
{
|
||||||
|
pdev->pClass->DeInit(pdev, (uint8_t)pdev->dev_config);
|
||||||
|
}
|
||||||
|
|
||||||
/* Stop the low level driver */
|
if (pdev->pConfDesc != NULL)
|
||||||
USBD_LL_Stop(pdev);
|
{
|
||||||
|
pdev->pConfDesc = NULL;
|
||||||
|
}
|
||||||
|
|
||||||
return USBD_OK;
|
/* Stop the low level driver */
|
||||||
|
ret = USBD_LL_Stop(pdev);
|
||||||
|
|
||||||
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -205,7 +243,7 @@ USBD_StatusTypeDef USBD_Stop (USBD_HandleTypeDef *pdev)
|
||||||
* @param pdev: device instance
|
* @param pdev: device instance
|
||||||
* @retval status
|
* @retval status
|
||||||
*/
|
*/
|
||||||
USBD_StatusTypeDef USBD_RunTestMode (USBD_HandleTypeDef *pdev)
|
USBD_StatusTypeDef USBD_RunTestMode(USBD_HandleTypeDef *pdev)
|
||||||
{
|
{
|
||||||
/* Prevent unused argument compilation warning */
|
/* Prevent unused argument compilation warning */
|
||||||
UNUSED(pdev);
|
UNUSED(pdev);
|
||||||
|
@ -221,17 +259,14 @@ USBD_StatusTypeDef USBD_RunTestMode (USBD_HandleTypeDef *pdev)
|
||||||
* @retval status
|
* @retval status
|
||||||
*/
|
*/
|
||||||
|
|
||||||
USBD_StatusTypeDef USBD_SetClassConfig(USBD_HandleTypeDef *pdev, uint8_t cfgidx)
|
USBD_StatusTypeDef USBD_SetClassConfig(USBD_HandleTypeDef *pdev, uint8_t cfgidx)
|
||||||
{
|
{
|
||||||
USBD_StatusTypeDef ret = USBD_FAIL;
|
USBD_StatusTypeDef ret = USBD_FAIL;
|
||||||
|
|
||||||
if(pdev->pClass != NULL)
|
if (pdev->pClass != NULL)
|
||||||
{
|
{
|
||||||
/* Set configuration and Start the Class*/
|
/* Set configuration and Start the Class */
|
||||||
if(pdev->pClass->Init(pdev, cfgidx) == 0U)
|
ret = (USBD_StatusTypeDef)pdev->pClass->Init(pdev, cfgidx);
|
||||||
{
|
|
||||||
ret = USBD_OK;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return ret;
|
return ret;
|
||||||
|
@ -244,10 +279,14 @@ USBD_StatusTypeDef USBD_SetClassConfig(USBD_HandleTypeDef *pdev, uint8_t cfgidx
|
||||||
* @param cfgidx: configuration index
|
* @param cfgidx: configuration index
|
||||||
* @retval status: USBD_StatusTypeDef
|
* @retval status: USBD_StatusTypeDef
|
||||||
*/
|
*/
|
||||||
USBD_StatusTypeDef USBD_ClrClassConfig(USBD_HandleTypeDef *pdev, uint8_t cfgidx)
|
USBD_StatusTypeDef USBD_ClrClassConfig(USBD_HandleTypeDef *pdev, uint8_t cfgidx)
|
||||||
{
|
{
|
||||||
/* Clear configuration and De-initialize the Class process*/
|
/* Clear configuration and De-initialize the Class process */
|
||||||
pdev->pClass->DeInit(pdev, cfgidx);
|
if (pdev->pClass != NULL)
|
||||||
|
{
|
||||||
|
pdev->pClass->DeInit(pdev, cfgidx);
|
||||||
|
}
|
||||||
|
|
||||||
return USBD_OK;
|
return USBD_OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -260,6 +299,8 @@ USBD_StatusTypeDef USBD_ClrClassConfig(USBD_HandleTypeDef *pdev, uint8_t cfgidx
|
||||||
*/
|
*/
|
||||||
USBD_StatusTypeDef USBD_LL_SetupStage(USBD_HandleTypeDef *pdev, uint8_t *psetup)
|
USBD_StatusTypeDef USBD_LL_SetupStage(USBD_HandleTypeDef *pdev, uint8_t *psetup)
|
||||||
{
|
{
|
||||||
|
USBD_StatusTypeDef ret;
|
||||||
|
|
||||||
USBD_ParseSetupRequest(&pdev->request, psetup);
|
USBD_ParseSetupRequest(&pdev->request, psetup);
|
||||||
|
|
||||||
pdev->ep0_state = USBD_EP0_SETUP;
|
pdev->ep0_state = USBD_EP0_SETUP;
|
||||||
|
@ -268,24 +309,24 @@ USBD_StatusTypeDef USBD_LL_SetupStage(USBD_HandleTypeDef *pdev, uint8_t *psetup)
|
||||||
|
|
||||||
switch (pdev->request.bmRequest & 0x1FU)
|
switch (pdev->request.bmRequest & 0x1FU)
|
||||||
{
|
{
|
||||||
case USB_REQ_RECIPIENT_DEVICE:
|
case USB_REQ_RECIPIENT_DEVICE:
|
||||||
USBD_StdDevReq (pdev, &pdev->request);
|
ret = USBD_StdDevReq(pdev, &pdev->request);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case USB_REQ_RECIPIENT_INTERFACE:
|
case USB_REQ_RECIPIENT_INTERFACE:
|
||||||
USBD_StdItfReq(pdev, &pdev->request);
|
ret = USBD_StdItfReq(pdev, &pdev->request);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case USB_REQ_RECIPIENT_ENDPOINT:
|
case USB_REQ_RECIPIENT_ENDPOINT:
|
||||||
USBD_StdEPReq(pdev, &pdev->request);
|
ret = USBD_StdEPReq(pdev, &pdev->request);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
default:
|
default:
|
||||||
USBD_LL_StallEP(pdev, (pdev->request.bmRequest & 0x80U));
|
ret = USBD_LL_StallEP(pdev, (pdev->request.bmRequest & 0x80U));
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
return USBD_OK;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -298,48 +339,54 @@ USBD_StatusTypeDef USBD_LL_SetupStage(USBD_HandleTypeDef *pdev, uint8_t *psetup)
|
||||||
USBD_StatusTypeDef USBD_LL_DataOutStage(USBD_HandleTypeDef *pdev,
|
USBD_StatusTypeDef USBD_LL_DataOutStage(USBD_HandleTypeDef *pdev,
|
||||||
uint8_t epnum, uint8_t *pdata)
|
uint8_t epnum, uint8_t *pdata)
|
||||||
{
|
{
|
||||||
USBD_EndpointTypeDef *pep;
|
USBD_EndpointTypeDef *pep;
|
||||||
|
USBD_StatusTypeDef ret;
|
||||||
|
|
||||||
if(epnum == 0U)
|
if (epnum == 0U)
|
||||||
{
|
{
|
||||||
pep = &pdev->ep_out[0];
|
pep = &pdev->ep_out[0];
|
||||||
|
|
||||||
if ( pdev->ep0_state == USBD_EP0_DATA_OUT)
|
if (pdev->ep0_state == USBD_EP0_DATA_OUT)
|
||||||
{
|
{
|
||||||
if(pep->rem_length > pep->maxpacket)
|
if (pep->rem_length > pep->maxpacket)
|
||||||
{
|
{
|
||||||
pep->rem_length -= pep->maxpacket;
|
pep->rem_length -= pep->maxpacket;
|
||||||
|
|
||||||
USBD_CtlContinueRx (pdev,
|
(void)USBD_CtlContinueRx(pdev, pdata, MIN(pep->rem_length, pep->maxpacket));
|
||||||
pdata,
|
|
||||||
(uint16_t)MIN(pep->rem_length, pep->maxpacket));
|
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
if((pdev->pClass->EP0_RxReady != NULL)&&
|
if ((pdev->pClass->EP0_RxReady != NULL) &&
|
||||||
(pdev->dev_state == USBD_STATE_CONFIGURED))
|
(pdev->dev_state == USBD_STATE_CONFIGURED))
|
||||||
{
|
{
|
||||||
pdev->pClass->EP0_RxReady(pdev);
|
pdev->pClass->EP0_RxReady(pdev);
|
||||||
}
|
}
|
||||||
USBD_CtlSendStatus(pdev);
|
(void)USBD_CtlSendStatus(pdev);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
#if 0
|
||||||
if (pdev->ep0_state == USBD_EP0_STATUS_OUT)
|
if (pdev->ep0_state == USBD_EP0_STATUS_OUT)
|
||||||
{
|
{
|
||||||
/*
|
/*
|
||||||
* STATUS PHASE completed, update ep0_state to idle
|
* STATUS PHASE completed, update ep0_state to idle
|
||||||
*/
|
*/
|
||||||
pdev->ep0_state = USBD_EP0_IDLE;
|
pdev->ep0_state = USBD_EP0_IDLE;
|
||||||
USBD_LL_StallEP(pdev, 0U);
|
(void)USBD_LL_StallEP(pdev, 0U);
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else if((pdev->pClass->DataOut != NULL) &&
|
else if ((pdev->pClass->DataOut != NULL) &&
|
||||||
(pdev->dev_state == USBD_STATE_CONFIGURED))
|
(pdev->dev_state == USBD_STATE_CONFIGURED))
|
||||||
{
|
{
|
||||||
pdev->pClass->DataOut(pdev, epnum);
|
ret = (USBD_StatusTypeDef)pdev->pClass->DataOut(pdev, epnum);
|
||||||
|
|
||||||
|
if (ret != USBD_OK)
|
||||||
|
{
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
@ -357,69 +404,78 @@ USBD_StatusTypeDef USBD_LL_DataOutStage(USBD_HandleTypeDef *pdev,
|
||||||
* @param epnum: endpoint index
|
* @param epnum: endpoint index
|
||||||
* @retval status
|
* @retval status
|
||||||
*/
|
*/
|
||||||
USBD_StatusTypeDef USBD_LL_DataInStage(USBD_HandleTypeDef *pdev, uint8_t epnum,
|
USBD_StatusTypeDef USBD_LL_DataInStage(USBD_HandleTypeDef *pdev,
|
||||||
uint8_t *pdata)
|
uint8_t epnum, uint8_t *pdata)
|
||||||
{
|
{
|
||||||
USBD_EndpointTypeDef *pep;
|
USBD_EndpointTypeDef *pep;
|
||||||
|
USBD_StatusTypeDef ret;
|
||||||
|
|
||||||
if(epnum == 0U)
|
if (epnum == 0U)
|
||||||
{
|
{
|
||||||
pep = &pdev->ep_in[0];
|
pep = &pdev->ep_in[0];
|
||||||
|
|
||||||
if ( pdev->ep0_state == USBD_EP0_DATA_IN)
|
if (pdev->ep0_state == USBD_EP0_DATA_IN)
|
||||||
{
|
{
|
||||||
if(pep->rem_length > pep->maxpacket)
|
if (pep->rem_length > pep->maxpacket)
|
||||||
{
|
{
|
||||||
pep->rem_length -= pep->maxpacket;
|
pep->rem_length -= pep->maxpacket;
|
||||||
|
|
||||||
USBD_CtlContinueSendData (pdev, pdata, (uint16_t)pep->rem_length);
|
(void)USBD_CtlContinueSendData(pdev, pdata, pep->rem_length);
|
||||||
|
|
||||||
/* Prepare endpoint for premature end of transfer */
|
/* Prepare endpoint for premature end of transfer */
|
||||||
USBD_LL_PrepareReceive (pdev, 0U, NULL, 0U);
|
(void)USBD_LL_PrepareReceive(pdev, 0U, NULL, 0U);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{ /* last packet is MPS multiple, so send ZLP packet */
|
{
|
||||||
if((pep->total_length % pep->maxpacket == 0U) &&
|
/* last packet is MPS multiple, so send ZLP packet */
|
||||||
(pep->total_length >= pep->maxpacket) &&
|
if ((pep->maxpacket == pep->rem_length) &&
|
||||||
(pep->total_length < pdev->ep0_data_len))
|
(pep->total_length >= pep->maxpacket) &&
|
||||||
|
(pep->total_length < pdev->ep0_data_len))
|
||||||
{
|
{
|
||||||
USBD_CtlContinueSendData(pdev, NULL, 0U);
|
(void)USBD_CtlContinueSendData(pdev, NULL, 0U);
|
||||||
pdev->ep0_data_len = 0U;
|
pdev->ep0_data_len = 0U;
|
||||||
|
|
||||||
/* Prepare endpoint for premature end of transfer */
|
/* Prepare endpoint for premature end of transfer */
|
||||||
USBD_LL_PrepareReceive (pdev, 0U, NULL, 0U);
|
(void)USBD_LL_PrepareReceive(pdev, 0U, NULL, 0U);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
if((pdev->pClass->EP0_TxSent != NULL)&&
|
if ((pdev->pClass->EP0_TxSent != NULL) &&
|
||||||
(pdev->dev_state == USBD_STATE_CONFIGURED))
|
(pdev->dev_state == USBD_STATE_CONFIGURED))
|
||||||
{
|
{
|
||||||
pdev->pClass->EP0_TxSent(pdev);
|
pdev->pClass->EP0_TxSent(pdev);
|
||||||
}
|
}
|
||||||
USBD_LL_StallEP(pdev, 0x80U);
|
(void)USBD_LL_StallEP(pdev, 0x80U);
|
||||||
USBD_CtlReceiveStatus(pdev);
|
(void)USBD_CtlReceiveStatus(pdev);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
#if 0
|
||||||
if ((pdev->ep0_state == USBD_EP0_STATUS_IN) ||
|
if ((pdev->ep0_state == USBD_EP0_STATUS_IN) ||
|
||||||
(pdev->ep0_state == USBD_EP0_IDLE))
|
(pdev->ep0_state == USBD_EP0_IDLE))
|
||||||
{
|
{
|
||||||
USBD_LL_StallEP(pdev, 0x80U);
|
(void)USBD_LL_StallEP(pdev, 0x80U);
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
if (pdev->dev_test_mode == 1U)
|
if (pdev->dev_test_mode == 1U)
|
||||||
{
|
{
|
||||||
USBD_RunTestMode(pdev);
|
(void)USBD_RunTestMode(pdev);
|
||||||
pdev->dev_test_mode = 0U;
|
pdev->dev_test_mode = 0U;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else if((pdev->pClass->DataIn != NULL) &&
|
else if ((pdev->pClass->DataIn != NULL) &&
|
||||||
(pdev->dev_state == USBD_STATE_CONFIGURED))
|
(pdev->dev_state == USBD_STATE_CONFIGURED))
|
||||||
{
|
{
|
||||||
pdev->pClass->DataIn(pdev, epnum);
|
ret = (USBD_StatusTypeDef)pdev->pClass->DataIn(pdev, epnum);
|
||||||
|
|
||||||
|
if (ret != USBD_OK)
|
||||||
|
{
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
@ -437,29 +493,30 @@ USBD_StatusTypeDef USBD_LL_DataInStage(USBD_HandleTypeDef *pdev, uint8_t epnum,
|
||||||
* @retval status
|
* @retval status
|
||||||
*/
|
*/
|
||||||
|
|
||||||
USBD_StatusTypeDef USBD_LL_Reset(USBD_HandleTypeDef *pdev)
|
USBD_StatusTypeDef USBD_LL_Reset(USBD_HandleTypeDef *pdev)
|
||||||
{
|
{
|
||||||
/* Open EP0 OUT */
|
/* Upon Reset call user call back */
|
||||||
USBD_LL_OpenEP(pdev, 0x00U, USBD_EP_TYPE_CTRL, USB_MAX_EP0_SIZE);
|
pdev->dev_state = USBD_STATE_DEFAULT;
|
||||||
|
pdev->ep0_state = USBD_EP0_IDLE;
|
||||||
|
pdev->dev_config = 0U;
|
||||||
|
pdev->dev_remote_wakeup = 0U;
|
||||||
|
|
||||||
|
if (pdev->pClassData != NULL)
|
||||||
|
{
|
||||||
|
pdev->pClass->DeInit(pdev, (uint8_t)pdev->dev_config);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Open EP0 OUT */
|
||||||
|
(void)USBD_LL_OpenEP(pdev, 0x00U, USBD_EP_TYPE_CTRL, USB_MAX_EP0_SIZE);
|
||||||
pdev->ep_out[0x00U & 0xFU].is_used = 1U;
|
pdev->ep_out[0x00U & 0xFU].is_used = 1U;
|
||||||
|
|
||||||
pdev->ep_out[0].maxpacket = USB_MAX_EP0_SIZE;
|
pdev->ep_out[0].maxpacket = USB_MAX_EP0_SIZE;
|
||||||
|
|
||||||
/* Open EP0 IN */
|
/* Open EP0 IN */
|
||||||
USBD_LL_OpenEP(pdev, 0x80U, USBD_EP_TYPE_CTRL, USB_MAX_EP0_SIZE);
|
(void)USBD_LL_OpenEP(pdev, 0x80U, USBD_EP_TYPE_CTRL, USB_MAX_EP0_SIZE);
|
||||||
pdev->ep_in[0x80U & 0xFU].is_used = 1U;
|
pdev->ep_in[0x80U & 0xFU].is_used = 1U;
|
||||||
|
|
||||||
pdev->ep_in[0].maxpacket = USB_MAX_EP0_SIZE;
|
pdev->ep_in[0].maxpacket = USB_MAX_EP0_SIZE;
|
||||||
/* Upon Reset call user call back */
|
|
||||||
pdev->dev_state = USBD_STATE_DEFAULT;
|
|
||||||
pdev->ep0_state = USBD_EP0_IDLE;
|
|
||||||
pdev->dev_config= 0U;
|
|
||||||
pdev->dev_remote_wakeup = 0U;
|
|
||||||
|
|
||||||
if (pdev->pClassData)
|
|
||||||
{
|
|
||||||
pdev->pClass->DeInit(pdev, (uint8_t)pdev->dev_config);
|
|
||||||
}
|
|
||||||
|
|
||||||
return USBD_OK;
|
return USBD_OK;
|
||||||
}
|
}
|
||||||
|
@ -470,9 +527,11 @@ USBD_StatusTypeDef USBD_LL_Reset(USBD_HandleTypeDef *pdev)
|
||||||
* @param pdev: device instance
|
* @param pdev: device instance
|
||||||
* @retval status
|
* @retval status
|
||||||
*/
|
*/
|
||||||
USBD_StatusTypeDef USBD_LL_SetSpeed(USBD_HandleTypeDef *pdev, USBD_SpeedTypeDef speed)
|
USBD_StatusTypeDef USBD_LL_SetSpeed(USBD_HandleTypeDef *pdev,
|
||||||
|
USBD_SpeedTypeDef speed)
|
||||||
{
|
{
|
||||||
pdev->dev_speed = speed;
|
pdev->dev_speed = speed;
|
||||||
|
|
||||||
return USBD_OK;
|
return USBD_OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -483,10 +542,11 @@ USBD_StatusTypeDef USBD_LL_SetSpeed(USBD_HandleTypeDef *pdev, USBD_SpeedTypeDef
|
||||||
* @retval status
|
* @retval status
|
||||||
*/
|
*/
|
||||||
|
|
||||||
USBD_StatusTypeDef USBD_LL_Suspend(USBD_HandleTypeDef *pdev)
|
USBD_StatusTypeDef USBD_LL_Suspend(USBD_HandleTypeDef *pdev)
|
||||||
{
|
{
|
||||||
pdev->dev_old_state = pdev->dev_state;
|
pdev->dev_old_state = pdev->dev_state;
|
||||||
pdev->dev_state = USBD_STATE_SUSPENDED;
|
pdev->dev_state = USBD_STATE_SUSPENDED;
|
||||||
|
|
||||||
return USBD_OK;
|
return USBD_OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -497,9 +557,13 @@ USBD_StatusTypeDef USBD_LL_Suspend(USBD_HandleTypeDef *pdev)
|
||||||
* @retval status
|
* @retval status
|
||||||
*/
|
*/
|
||||||
|
|
||||||
USBD_StatusTypeDef USBD_LL_Resume(USBD_HandleTypeDef *pdev)
|
USBD_StatusTypeDef USBD_LL_Resume(USBD_HandleTypeDef *pdev)
|
||||||
{
|
{
|
||||||
pdev->dev_state = pdev->dev_old_state;
|
if (pdev->dev_state == USBD_STATE_SUSPENDED)
|
||||||
|
{
|
||||||
|
pdev->dev_state = pdev->dev_old_state;
|
||||||
|
}
|
||||||
|
|
||||||
return USBD_OK;
|
return USBD_OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -510,15 +574,16 @@ USBD_StatusTypeDef USBD_LL_Resume(USBD_HandleTypeDef *pdev)
|
||||||
* @retval status
|
* @retval status
|
||||||
*/
|
*/
|
||||||
|
|
||||||
USBD_StatusTypeDef USBD_LL_SOF(USBD_HandleTypeDef *pdev)
|
USBD_StatusTypeDef USBD_LL_SOF(USBD_HandleTypeDef *pdev)
|
||||||
{
|
{
|
||||||
if(pdev->dev_state == USBD_STATE_CONFIGURED)
|
if (pdev->dev_state == USBD_STATE_CONFIGURED)
|
||||||
{
|
{
|
||||||
if(pdev->pClass->SOF != NULL)
|
if (pdev->pClass->SOF != NULL)
|
||||||
{
|
{
|
||||||
pdev->pClass->SOF(pdev);
|
pdev->pClass->SOF(pdev);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return USBD_OK;
|
return USBD_OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -528,7 +593,8 @@ USBD_StatusTypeDef USBD_LL_SOF(USBD_HandleTypeDef *pdev)
|
||||||
* @param pdev: device instance
|
* @param pdev: device instance
|
||||||
* @retval status
|
* @retval status
|
||||||
*/
|
*/
|
||||||
USBD_StatusTypeDef USBD_LL_IsoINIncomplete(USBD_HandleTypeDef *pdev, uint8_t epnum)
|
USBD_StatusTypeDef USBD_LL_IsoINIncomplete(USBD_HandleTypeDef *pdev,
|
||||||
|
uint8_t epnum)
|
||||||
{
|
{
|
||||||
/* Prevent unused arguments compilation warning */
|
/* Prevent unused arguments compilation warning */
|
||||||
UNUSED(pdev);
|
UNUSED(pdev);
|
||||||
|
@ -543,7 +609,8 @@ USBD_StatusTypeDef USBD_LL_IsoINIncomplete(USBD_HandleTypeDef *pdev, uint8_t ep
|
||||||
* @param pdev: device instance
|
* @param pdev: device instance
|
||||||
* @retval status
|
* @retval status
|
||||||
*/
|
*/
|
||||||
USBD_StatusTypeDef USBD_LL_IsoOUTIncomplete(USBD_HandleTypeDef *pdev, uint8_t epnum)
|
USBD_StatusTypeDef USBD_LL_IsoOUTIncomplete(USBD_HandleTypeDef *pdev,
|
||||||
|
uint8_t epnum)
|
||||||
{
|
{
|
||||||
/* Prevent unused arguments compilation warning */
|
/* Prevent unused arguments compilation warning */
|
||||||
UNUSED(pdev);
|
UNUSED(pdev);
|
||||||
|
@ -558,7 +625,7 @@ USBD_StatusTypeDef USBD_LL_IsoOUTIncomplete(USBD_HandleTypeDef *pdev, uint8_t e
|
||||||
* @param pdev: device instance
|
* @param pdev: device instance
|
||||||
* @retval status
|
* @retval status
|
||||||
*/
|
*/
|
||||||
USBD_StatusTypeDef USBD_LL_DevConnected(USBD_HandleTypeDef *pdev)
|
USBD_StatusTypeDef USBD_LL_DevConnected(USBD_HandleTypeDef *pdev)
|
||||||
{
|
{
|
||||||
/* Prevent unused argument compilation warning */
|
/* Prevent unused argument compilation warning */
|
||||||
UNUSED(pdev);
|
UNUSED(pdev);
|
||||||
|
@ -572,11 +639,15 @@ USBD_StatusTypeDef USBD_LL_DevConnected(USBD_HandleTypeDef *pdev)
|
||||||
* @param pdev: device instance
|
* @param pdev: device instance
|
||||||
* @retval status
|
* @retval status
|
||||||
*/
|
*/
|
||||||
USBD_StatusTypeDef USBD_LL_DevDisconnected(USBD_HandleTypeDef *pdev)
|
USBD_StatusTypeDef USBD_LL_DevDisconnected(USBD_HandleTypeDef *pdev)
|
||||||
{
|
{
|
||||||
/* Free Class Resources */
|
/* Free Class Resources */
|
||||||
pdev->dev_state = USBD_STATE_DEFAULT;
|
pdev->dev_state = USBD_STATE_DEFAULT;
|
||||||
pdev->pClass->DeInit(pdev, (uint8_t)pdev->dev_config);
|
|
||||||
|
if (pdev->pClass != NULL)
|
||||||
|
{
|
||||||
|
pdev->pClass->DeInit(pdev, (uint8_t)pdev->dev_config);
|
||||||
|
}
|
||||||
|
|
||||||
return USBD_OK;
|
return USBD_OK;
|
||||||
}
|
}
|
||||||
|
|
|
@ -12,7 +12,7 @@
|
||||||
* This software component is licensed by ST under Ultimate Liberty license
|
* This software component is licensed by ST under Ultimate Liberty license
|
||||||
* SLA0044, the "License"; You may not use this file except in compliance with
|
* SLA0044, the "License"; You may not use this file except in compliance with
|
||||||
* the License. You may obtain a copy of the License at:
|
* the License. You may obtain a copy of the License at:
|
||||||
* http://www.st.com/SLA0044
|
* www.st.com/SLA0044
|
||||||
*
|
*
|
||||||
******************************************************************************
|
******************************************************************************
|
||||||
*/
|
*/
|
||||||
|
@ -35,6 +35,7 @@
|
||||||
/** @defgroup USBD_REQ_Private_TypesDefinitions
|
/** @defgroup USBD_REQ_Private_TypesDefinitions
|
||||||
* @{
|
* @{
|
||||||
*/
|
*/
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @}
|
* @}
|
||||||
*/
|
*/
|
||||||
|
@ -52,6 +53,7 @@
|
||||||
/** @defgroup USBD_REQ_Private_Macros
|
/** @defgroup USBD_REQ_Private_Macros
|
||||||
* @{
|
* @{
|
||||||
*/
|
*/
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @}
|
* @}
|
||||||
*/
|
*/
|
||||||
|
@ -60,6 +62,7 @@
|
||||||
/** @defgroup USBD_REQ_Private_Variables
|
/** @defgroup USBD_REQ_Private_Variables
|
||||||
* @{
|
* @{
|
||||||
*/
|
*/
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @}
|
* @}
|
||||||
*/
|
*/
|
||||||
|
@ -68,27 +71,13 @@
|
||||||
/** @defgroup USBD_REQ_Private_FunctionPrototypes
|
/** @defgroup USBD_REQ_Private_FunctionPrototypes
|
||||||
* @{
|
* @{
|
||||||
*/
|
*/
|
||||||
static void USBD_GetDescriptor(USBD_HandleTypeDef *pdev ,
|
static void USBD_GetDescriptor(USBD_HandleTypeDef *pdev, USBD_SetupReqTypedef *req);
|
||||||
USBD_SetupReqTypedef *req);
|
static void USBD_SetAddress(USBD_HandleTypeDef *pdev, USBD_SetupReqTypedef *req);
|
||||||
|
static USBD_StatusTypeDef USBD_SetConfig(USBD_HandleTypeDef *pdev, USBD_SetupReqTypedef *req);
|
||||||
static void USBD_SetAddress(USBD_HandleTypeDef *pdev ,
|
static void USBD_GetConfig(USBD_HandleTypeDef *pdev, USBD_SetupReqTypedef *req);
|
||||||
USBD_SetupReqTypedef *req);
|
static void USBD_GetStatus(USBD_HandleTypeDef *pdev, USBD_SetupReqTypedef *req);
|
||||||
|
static void USBD_SetFeature(USBD_HandleTypeDef *pdev, USBD_SetupReqTypedef *req);
|
||||||
static void USBD_SetConfig(USBD_HandleTypeDef *pdev ,
|
static void USBD_ClrFeature(USBD_HandleTypeDef *pdev, USBD_SetupReqTypedef *req);
|
||||||
USBD_SetupReqTypedef *req);
|
|
||||||
|
|
||||||
static void USBD_GetConfig(USBD_HandleTypeDef *pdev ,
|
|
||||||
USBD_SetupReqTypedef *req);
|
|
||||||
|
|
||||||
static void USBD_GetStatus(USBD_HandleTypeDef *pdev ,
|
|
||||||
USBD_SetupReqTypedef *req);
|
|
||||||
|
|
||||||
static void USBD_SetFeature(USBD_HandleTypeDef *pdev ,
|
|
||||||
USBD_SetupReqTypedef *req);
|
|
||||||
|
|
||||||
static void USBD_ClrFeature(USBD_HandleTypeDef *pdev ,
|
|
||||||
USBD_SetupReqTypedef *req);
|
|
||||||
|
|
||||||
static uint8_t USBD_GetLen(uint8_t *buf);
|
static uint8_t USBD_GetLen(uint8_t *buf);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -108,7 +97,7 @@ static uint8_t USBD_GetLen(uint8_t *buf);
|
||||||
* @param req: usb request
|
* @param req: usb request
|
||||||
* @retval status
|
* @retval status
|
||||||
*/
|
*/
|
||||||
USBD_StatusTypeDef USBD_StdDevReq (USBD_HandleTypeDef *pdev , USBD_SetupReqTypedef *req)
|
USBD_StatusTypeDef USBD_StdDevReq(USBD_HandleTypeDef *pdev, USBD_SetupReqTypedef *req)
|
||||||
{
|
{
|
||||||
USBD_StatusTypeDef ret = USBD_OK;
|
USBD_StatusTypeDef ret = USBD_OK;
|
||||||
|
|
||||||
|
@ -116,41 +105,38 @@ USBD_StatusTypeDef USBD_StdDevReq (USBD_HandleTypeDef *pdev , USBD_SetupReqType
|
||||||
{
|
{
|
||||||
case USB_REQ_TYPE_CLASS:
|
case USB_REQ_TYPE_CLASS:
|
||||||
case USB_REQ_TYPE_VENDOR:
|
case USB_REQ_TYPE_VENDOR:
|
||||||
pdev->pClass->Setup(pdev, req);
|
ret = (USBD_StatusTypeDef)pdev->pClass->Setup(pdev, req);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case USB_REQ_TYPE_STANDARD:
|
case USB_REQ_TYPE_STANDARD:
|
||||||
|
|
||||||
switch (req->bRequest)
|
switch (req->bRequest)
|
||||||
{
|
{
|
||||||
case USB_REQ_GET_DESCRIPTOR:
|
case USB_REQ_GET_DESCRIPTOR:
|
||||||
|
USBD_GetDescriptor(pdev, req);
|
||||||
USBD_GetDescriptor (pdev, req);
|
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case USB_REQ_SET_ADDRESS:
|
case USB_REQ_SET_ADDRESS:
|
||||||
USBD_SetAddress (pdev, req);
|
USBD_SetAddress(pdev, req);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case USB_REQ_SET_CONFIGURATION:
|
case USB_REQ_SET_CONFIGURATION:
|
||||||
USBD_SetConfig (pdev, req);
|
ret = USBD_SetConfig(pdev, req);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case USB_REQ_GET_CONFIGURATION:
|
case USB_REQ_GET_CONFIGURATION:
|
||||||
USBD_GetConfig (pdev, req);
|
USBD_GetConfig(pdev, req);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case USB_REQ_GET_STATUS:
|
case USB_REQ_GET_STATUS:
|
||||||
USBD_GetStatus (pdev, req);
|
USBD_GetStatus(pdev, req);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
|
||||||
case USB_REQ_SET_FEATURE:
|
case USB_REQ_SET_FEATURE:
|
||||||
USBD_SetFeature (pdev, req);
|
USBD_SetFeature(pdev, req);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case USB_REQ_CLEAR_FEATURE:
|
case USB_REQ_CLEAR_FEATURE:
|
||||||
USBD_ClrFeature (pdev, req);
|
USBD_ClrFeature(pdev, req);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
default:
|
default:
|
||||||
|
@ -174,7 +160,7 @@ USBD_StatusTypeDef USBD_StdDevReq (USBD_HandleTypeDef *pdev , USBD_SetupReqType
|
||||||
* @param req: usb request
|
* @param req: usb request
|
||||||
* @retval status
|
* @retval status
|
||||||
*/
|
*/
|
||||||
USBD_StatusTypeDef USBD_StdItfReq (USBD_HandleTypeDef *pdev , USBD_SetupReqTypedef *req)
|
USBD_StatusTypeDef USBD_StdItfReq(USBD_HandleTypeDef *pdev, USBD_SetupReqTypedef *req)
|
||||||
{
|
{
|
||||||
USBD_StatusTypeDef ret = USBD_OK;
|
USBD_StatusTypeDef ret = USBD_OK;
|
||||||
|
|
||||||
|
@ -191,11 +177,11 @@ USBD_StatusTypeDef USBD_StdItfReq (USBD_HandleTypeDef *pdev , USBD_SetupReqType
|
||||||
|
|
||||||
if (LOBYTE(req->wIndex) <= USBD_MAX_NUM_INTERFACES)
|
if (LOBYTE(req->wIndex) <= USBD_MAX_NUM_INTERFACES)
|
||||||
{
|
{
|
||||||
ret = (USBD_StatusTypeDef)pdev->pClass->Setup (pdev, req);
|
ret = (USBD_StatusTypeDef)pdev->pClass->Setup(pdev, req);
|
||||||
|
|
||||||
if ((req->wLength == 0U) && (ret == USBD_OK))
|
if ((req->wLength == 0U) && (ret == USBD_OK))
|
||||||
{
|
{
|
||||||
USBD_CtlSendStatus(pdev);
|
(void)USBD_CtlSendStatus(pdev);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
@ -215,7 +201,7 @@ USBD_StatusTypeDef USBD_StdItfReq (USBD_HandleTypeDef *pdev , USBD_SetupReqType
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
return USBD_OK;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -225,43 +211,31 @@ USBD_StatusTypeDef USBD_StdItfReq (USBD_HandleTypeDef *pdev , USBD_SetupReqType
|
||||||
* @param req: usb request
|
* @param req: usb request
|
||||||
* @retval status
|
* @retval status
|
||||||
*/
|
*/
|
||||||
USBD_StatusTypeDef USBD_StdEPReq (USBD_HandleTypeDef *pdev , USBD_SetupReqTypedef *req)
|
USBD_StatusTypeDef USBD_StdEPReq(USBD_HandleTypeDef *pdev, USBD_SetupReqTypedef *req)
|
||||||
{
|
{
|
||||||
|
USBD_EndpointTypeDef *pep;
|
||||||
uint8_t ep_addr;
|
uint8_t ep_addr;
|
||||||
USBD_StatusTypeDef ret = USBD_OK;
|
USBD_StatusTypeDef ret = USBD_OK;
|
||||||
USBD_EndpointTypeDef *pep;
|
ep_addr = LOBYTE(req->wIndex);
|
||||||
ep_addr = LOBYTE(req->wIndex);
|
|
||||||
|
|
||||||
switch (req->bmRequest & USB_REQ_TYPE_MASK)
|
switch (req->bmRequest & USB_REQ_TYPE_MASK)
|
||||||
{
|
{
|
||||||
|
|
||||||
case USB_REQ_TYPE_CLASS:
|
case USB_REQ_TYPE_CLASS:
|
||||||
case USB_REQ_TYPE_VENDOR:
|
case USB_REQ_TYPE_VENDOR:
|
||||||
pdev->pClass->Setup (pdev, req);
|
ret = (USBD_StatusTypeDef)pdev->pClass->Setup(pdev, req);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case USB_REQ_TYPE_STANDARD:
|
case USB_REQ_TYPE_STANDARD:
|
||||||
/* Check if it is a class request */
|
|
||||||
if ((req->bmRequest & 0x60U) == 0x20U)
|
|
||||||
{
|
|
||||||
ret = (USBD_StatusTypeDef)pdev->pClass->Setup (pdev, req);
|
|
||||||
|
|
||||||
return ret;
|
|
||||||
}
|
|
||||||
|
|
||||||
switch (req->bRequest)
|
switch (req->bRequest)
|
||||||
{
|
{
|
||||||
|
case USB_REQ_SET_FEATURE:
|
||||||
case USB_REQ_SET_FEATURE :
|
|
||||||
|
|
||||||
switch (pdev->dev_state)
|
switch (pdev->dev_state)
|
||||||
{
|
{
|
||||||
case USBD_STATE_ADDRESSED:
|
case USBD_STATE_ADDRESSED:
|
||||||
if ((ep_addr != 0x00U) && (ep_addr != 0x80U))
|
if ((ep_addr != 0x00U) && (ep_addr != 0x80U))
|
||||||
{
|
{
|
||||||
USBD_LL_StallEP(pdev, ep_addr);
|
(void)USBD_LL_StallEP(pdev, ep_addr);
|
||||||
USBD_LL_StallEP(pdev, 0x80U);
|
(void)USBD_LL_StallEP(pdev, 0x80U);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
@ -274,10 +248,10 @@ USBD_StatusTypeDef USBD_StdEPReq (USBD_HandleTypeDef *pdev , USBD_SetupReqTyped
|
||||||
{
|
{
|
||||||
if ((ep_addr != 0x00U) && (ep_addr != 0x80U) && (req->wLength == 0x00U))
|
if ((ep_addr != 0x00U) && (ep_addr != 0x80U) && (req->wLength == 0x00U))
|
||||||
{
|
{
|
||||||
USBD_LL_StallEP(pdev, ep_addr);
|
(void)USBD_LL_StallEP(pdev, ep_addr);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
USBD_CtlSendStatus(pdev);
|
(void)USBD_CtlSendStatus(pdev);
|
||||||
|
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
@ -287,15 +261,15 @@ USBD_StatusTypeDef USBD_StdEPReq (USBD_HandleTypeDef *pdev , USBD_SetupReqTyped
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case USB_REQ_CLEAR_FEATURE :
|
case USB_REQ_CLEAR_FEATURE:
|
||||||
|
|
||||||
switch (pdev->dev_state)
|
switch (pdev->dev_state)
|
||||||
{
|
{
|
||||||
case USBD_STATE_ADDRESSED:
|
case USBD_STATE_ADDRESSED:
|
||||||
if ((ep_addr != 0x00U) && (ep_addr != 0x80U))
|
if ((ep_addr != 0x00U) && (ep_addr != 0x80U))
|
||||||
{
|
{
|
||||||
USBD_LL_StallEP(pdev, ep_addr);
|
(void)USBD_LL_StallEP(pdev, ep_addr);
|
||||||
USBD_LL_StallEP(pdev, 0x80U);
|
(void)USBD_LL_StallEP(pdev, 0x80U);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
@ -308,9 +282,10 @@ USBD_StatusTypeDef USBD_StdEPReq (USBD_HandleTypeDef *pdev , USBD_SetupReqTyped
|
||||||
{
|
{
|
||||||
if ((ep_addr & 0x7FU) != 0x00U)
|
if ((ep_addr & 0x7FU) != 0x00U)
|
||||||
{
|
{
|
||||||
USBD_LL_ClearStallEP(pdev, ep_addr);
|
(void)USBD_LL_ClearStallEP(pdev, ep_addr);
|
||||||
}
|
}
|
||||||
USBD_CtlSendStatus(pdev);
|
(void)USBD_CtlSendStatus(pdev);
|
||||||
|
(USBD_StatusTypeDef)pdev->pClass->Setup(pdev, req);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
@ -329,16 +304,16 @@ USBD_StatusTypeDef USBD_StdEPReq (USBD_HandleTypeDef *pdev , USBD_SetupReqTyped
|
||||||
USBD_CtlError(pdev, req);
|
USBD_CtlError(pdev, req);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
pep = ((ep_addr & 0x80U) == 0x80U) ? &pdev->ep_in[ep_addr & 0x7FU]:\
|
pep = ((ep_addr & 0x80U) == 0x80U) ? &pdev->ep_in[ep_addr & 0x7FU] : \
|
||||||
&pdev->ep_out[ep_addr & 0x7FU];
|
&pdev->ep_out[ep_addr & 0x7FU];
|
||||||
|
|
||||||
pep->status = 0x0000U;
|
pep->status = 0x0000U;
|
||||||
|
|
||||||
USBD_CtlSendData (pdev, (uint8_t *)(void *)&pep->status, 2U);
|
(void)USBD_CtlSendData(pdev, (uint8_t *)&pep->status, 2U);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case USBD_STATE_CONFIGURED:
|
case USBD_STATE_CONFIGURED:
|
||||||
if((ep_addr & 0x80U) == 0x80U)
|
if ((ep_addr & 0x80U) == 0x80U)
|
||||||
{
|
{
|
||||||
if (pdev->ep_in[ep_addr & 0xFU].is_used == 0U)
|
if (pdev->ep_in[ep_addr & 0xFU].is_used == 0U)
|
||||||
{
|
{
|
||||||
|
@ -355,14 +330,14 @@ USBD_StatusTypeDef USBD_StdEPReq (USBD_HandleTypeDef *pdev , USBD_SetupReqTyped
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
pep = ((ep_addr & 0x80U) == 0x80U) ? &pdev->ep_in[ep_addr & 0x7FU]:\
|
pep = ((ep_addr & 0x80U) == 0x80U) ? &pdev->ep_in[ep_addr & 0x7FU] : \
|
||||||
&pdev->ep_out[ep_addr & 0x7FU];
|
&pdev->ep_out[ep_addr & 0x7FU];
|
||||||
|
|
||||||
if ((ep_addr == 0x00U) || (ep_addr == 0x80U))
|
if ((ep_addr == 0x00U) || (ep_addr == 0x80U))
|
||||||
{
|
{
|
||||||
pep->status = 0x0000U;
|
pep->status = 0x0000U;
|
||||||
}
|
}
|
||||||
else if(USBD_LL_IsStallEP(pdev, ep_addr))
|
else if (USBD_LL_IsStallEP(pdev, ep_addr) != 0U)
|
||||||
{
|
{
|
||||||
pep->status = 0x0001U;
|
pep->status = 0x0001U;
|
||||||
}
|
}
|
||||||
|
@ -371,7 +346,7 @@ USBD_StatusTypeDef USBD_StdEPReq (USBD_HandleTypeDef *pdev , USBD_SetupReqTyped
|
||||||
pep->status = 0x0000U;
|
pep->status = 0x0000U;
|
||||||
}
|
}
|
||||||
|
|
||||||
USBD_CtlSendData (pdev, (uint8_t *)(void *)&pep->status, 2U);
|
(void)USBD_CtlSendData(pdev, (uint8_t *)&pep->status, 2U);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
default:
|
default:
|
||||||
|
@ -393,6 +368,8 @@ USBD_StatusTypeDef USBD_StdEPReq (USBD_HandleTypeDef *pdev , USBD_SetupReqTyped
|
||||||
|
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief USBD_GetDescriptor
|
* @brief USBD_GetDescriptor
|
||||||
* Handle Get Descriptor requests
|
* Handle Get Descriptor requests
|
||||||
|
@ -400,18 +377,25 @@ USBD_StatusTypeDef USBD_StdEPReq (USBD_HandleTypeDef *pdev , USBD_SetupReqTyped
|
||||||
* @param req: usb request
|
* @param req: usb request
|
||||||
* @retval status
|
* @retval status
|
||||||
*/
|
*/
|
||||||
static void USBD_GetDescriptor(USBD_HandleTypeDef *pdev ,
|
static void USBD_GetDescriptor(USBD_HandleTypeDef *pdev, USBD_SetupReqTypedef *req)
|
||||||
USBD_SetupReqTypedef *req)
|
|
||||||
{
|
{
|
||||||
uint16_t len;
|
uint16_t len = 0U;
|
||||||
uint8_t *pbuf;
|
uint8_t *pbuf = NULL;
|
||||||
|
uint8_t err = 0U;
|
||||||
|
|
||||||
switch (req->wValue >> 8)
|
switch (req->wValue >> 8)
|
||||||
{
|
{
|
||||||
#if (USBD_LPM_ENABLED == 1U)
|
#if ((USBD_LPM_ENABLED == 1U) || (USBD_CLASS_BOS_ENABLED == 1U))
|
||||||
case USB_DESC_TYPE_BOS:
|
case USB_DESC_TYPE_BOS:
|
||||||
pbuf = pdev->pDesc->GetBOSDescriptor(pdev->dev_speed, &len);
|
if (pdev->pDesc->GetBOSDescriptor != NULL)
|
||||||
|
{
|
||||||
|
pbuf = pdev->pDesc->GetBOSDescriptor(pdev->dev_speed, &len);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
USBD_CtlError(pdev, req);
|
||||||
|
err++;
|
||||||
|
}
|
||||||
break;
|
break;
|
||||||
#endif
|
#endif
|
||||||
case USB_DESC_TYPE_DEVICE:
|
case USB_DESC_TYPE_DEVICE:
|
||||||
|
@ -419,14 +403,14 @@ static void USBD_GetDescriptor(USBD_HandleTypeDef *pdev ,
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case USB_DESC_TYPE_CONFIGURATION:
|
case USB_DESC_TYPE_CONFIGURATION:
|
||||||
if(pdev->dev_speed == USBD_SPEED_HIGH )
|
if (pdev->dev_speed == USBD_SPEED_HIGH)
|
||||||
{
|
{
|
||||||
pbuf = (uint8_t *)pdev->pClass->GetHSConfigDescriptor(&len);
|
pbuf = pdev->pClass->GetHSConfigDescriptor(&len);
|
||||||
pbuf[1] = USB_DESC_TYPE_CONFIGURATION;
|
pbuf[1] = USB_DESC_TYPE_CONFIGURATION;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
pbuf = (uint8_t *)pdev->pClass->GetFSConfigDescriptor(&len);
|
pbuf = pdev->pClass->GetFSConfigDescriptor(&len);
|
||||||
pbuf[1] = USB_DESC_TYPE_CONFIGURATION;
|
pbuf[1] = USB_DESC_TYPE_CONFIGURATION;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
@ -435,81 +419,159 @@ static void USBD_GetDescriptor(USBD_HandleTypeDef *pdev ,
|
||||||
switch ((uint8_t)(req->wValue))
|
switch ((uint8_t)(req->wValue))
|
||||||
{
|
{
|
||||||
case USBD_IDX_LANGID_STR:
|
case USBD_IDX_LANGID_STR:
|
||||||
pbuf = pdev->pDesc->GetLangIDStrDescriptor(pdev->dev_speed, &len);
|
if (pdev->pDesc->GetLangIDStrDescriptor != NULL)
|
||||||
|
{
|
||||||
|
pbuf = pdev->pDesc->GetLangIDStrDescriptor(pdev->dev_speed, &len);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
USBD_CtlError(pdev, req);
|
||||||
|
err++;
|
||||||
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case USBD_IDX_MFC_STR:
|
case USBD_IDX_MFC_STR:
|
||||||
pbuf = pdev->pDesc->GetManufacturerStrDescriptor(pdev->dev_speed, &len);
|
if (pdev->pDesc->GetManufacturerStrDescriptor != NULL)
|
||||||
|
{
|
||||||
|
pbuf = pdev->pDesc->GetManufacturerStrDescriptor(pdev->dev_speed, &len);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
USBD_CtlError(pdev, req);
|
||||||
|
err++;
|
||||||
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case USBD_IDX_PRODUCT_STR:
|
case USBD_IDX_PRODUCT_STR:
|
||||||
pbuf = pdev->pDesc->GetProductStrDescriptor(pdev->dev_speed, &len);
|
if (pdev->pDesc->GetProductStrDescriptor != NULL)
|
||||||
|
{
|
||||||
|
pbuf = pdev->pDesc->GetProductStrDescriptor(pdev->dev_speed, &len);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
USBD_CtlError(pdev, req);
|
||||||
|
err++;
|
||||||
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case USBD_IDX_SERIAL_STR:
|
case USBD_IDX_SERIAL_STR:
|
||||||
pbuf = pdev->pDesc->GetSerialStrDescriptor(pdev->dev_speed, &len);
|
if (pdev->pDesc->GetSerialStrDescriptor != NULL)
|
||||||
|
{
|
||||||
|
pbuf = pdev->pDesc->GetSerialStrDescriptor(pdev->dev_speed, &len);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
USBD_CtlError(pdev, req);
|
||||||
|
err++;
|
||||||
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case USBD_IDX_CONFIG_STR:
|
case USBD_IDX_CONFIG_STR:
|
||||||
pbuf = pdev->pDesc->GetConfigurationStrDescriptor(pdev->dev_speed, &len);
|
if (pdev->pDesc->GetConfigurationStrDescriptor != NULL)
|
||||||
|
{
|
||||||
|
pbuf = pdev->pDesc->GetConfigurationStrDescriptor(pdev->dev_speed, &len);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
USBD_CtlError(pdev, req);
|
||||||
|
err++;
|
||||||
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case USBD_IDX_INTERFACE_STR:
|
case USBD_IDX_INTERFACE_STR:
|
||||||
pbuf = pdev->pDesc->GetInterfaceStrDescriptor(pdev->dev_speed, &len);
|
if (pdev->pDesc->GetInterfaceStrDescriptor != NULL)
|
||||||
|
{
|
||||||
|
pbuf = pdev->pDesc->GetInterfaceStrDescriptor(pdev->dev_speed, &len);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
USBD_CtlError(pdev, req);
|
||||||
|
err++;
|
||||||
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
default:
|
default:
|
||||||
#if (USBD_SUPPORT_USER_STRING == 1U)
|
#if (USBD_SUPPORT_USER_STRING_DESC == 1U)
|
||||||
pbuf = pdev->pClass->GetUsrStrDescriptor(pdev, (req->wValue) , &len);
|
if (pdev->pClass->GetUsrStrDescriptor != NULL)
|
||||||
break;
|
{
|
||||||
|
pbuf = pdev->pClass->GetUsrStrDescriptor(pdev, (req->wValue), &len);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
USBD_CtlError(pdev, req);
|
||||||
|
err++;
|
||||||
|
}
|
||||||
|
#elif (USBD_CLASS_USER_STRING_DESC == 1U)
|
||||||
|
if (pdev->pDesc->GetUserStrDescriptor != NULL)
|
||||||
|
{
|
||||||
|
pbuf = pdev->pDesc->GetUserStrDescriptor(pdev->dev_speed, (req->wValue), &len);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
USBD_CtlError(pdev, req);
|
||||||
|
err++;
|
||||||
|
}
|
||||||
#else
|
#else
|
||||||
USBD_CtlError(pdev , req);
|
USBD_CtlError(pdev, req);
|
||||||
return;
|
err++;
|
||||||
#endif
|
#endif
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case USB_DESC_TYPE_DEVICE_QUALIFIER:
|
|
||||||
|
|
||||||
if(pdev->dev_speed == USBD_SPEED_HIGH)
|
case USB_DESC_TYPE_DEVICE_QUALIFIER:
|
||||||
|
if (pdev->dev_speed == USBD_SPEED_HIGH)
|
||||||
{
|
{
|
||||||
pbuf = (uint8_t *)pdev->pClass->GetDeviceQualifierDescriptor(&len);
|
pbuf = pdev->pClass->GetDeviceQualifierDescriptor(&len);
|
||||||
break;
|
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
USBD_CtlError(pdev , req);
|
USBD_CtlError(pdev, req);
|
||||||
return;
|
err++;
|
||||||
}
|
}
|
||||||
|
break;
|
||||||
|
|
||||||
case USB_DESC_TYPE_OTHER_SPEED_CONFIGURATION:
|
case USB_DESC_TYPE_OTHER_SPEED_CONFIGURATION:
|
||||||
if(pdev->dev_speed == USBD_SPEED_HIGH )
|
if (pdev->dev_speed == USBD_SPEED_HIGH)
|
||||||
{
|
{
|
||||||
pbuf = (uint8_t *)pdev->pClass->GetOtherSpeedConfigDescriptor(&len);
|
pbuf = pdev->pClass->GetOtherSpeedConfigDescriptor(&len);
|
||||||
pbuf[1] = USB_DESC_TYPE_OTHER_SPEED_CONFIGURATION;
|
pbuf[1] = USB_DESC_TYPE_OTHER_SPEED_CONFIGURATION;
|
||||||
break;
|
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
USBD_CtlError(pdev , req);
|
USBD_CtlError(pdev, req);
|
||||||
return;
|
err++;
|
||||||
}
|
}
|
||||||
|
break;
|
||||||
|
|
||||||
default:
|
default:
|
||||||
USBD_CtlError(pdev , req);
|
USBD_CtlError(pdev, req);
|
||||||
|
err++;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (err != 0U)
|
||||||
|
{
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
else
|
||||||
if((len != 0U) && (req->wLength != 0U))
|
|
||||||
{
|
{
|
||||||
|
if (req->wLength != 0U)
|
||||||
len = MIN(len, req->wLength);
|
{
|
||||||
|
if (len != 0U)
|
||||||
USBD_CtlSendData (pdev, pbuf, len);
|
{
|
||||||
}
|
len = MIN(len, req->wLength);
|
||||||
|
(void)USBD_CtlSendData(pdev, pbuf, len);
|
||||||
if(req->wLength == 0U)
|
}
|
||||||
{
|
else
|
||||||
USBD_CtlSendStatus(pdev);
|
{
|
||||||
|
USBD_CtlError(pdev, req);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
(void)USBD_CtlSendStatus(pdev);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -520,8 +582,7 @@ static void USBD_GetDescriptor(USBD_HandleTypeDef *pdev ,
|
||||||
* @param req: usb request
|
* @param req: usb request
|
||||||
* @retval status
|
* @retval status
|
||||||
*/
|
*/
|
||||||
static void USBD_SetAddress(USBD_HandleTypeDef *pdev ,
|
static void USBD_SetAddress(USBD_HandleTypeDef *pdev, USBD_SetupReqTypedef *req)
|
||||||
USBD_SetupReqTypedef *req)
|
|
||||||
{
|
{
|
||||||
uint8_t dev_addr;
|
uint8_t dev_addr;
|
||||||
|
|
||||||
|
@ -531,13 +592,13 @@ static void USBD_SetAddress(USBD_HandleTypeDef *pdev ,
|
||||||
|
|
||||||
if (pdev->dev_state == USBD_STATE_CONFIGURED)
|
if (pdev->dev_state == USBD_STATE_CONFIGURED)
|
||||||
{
|
{
|
||||||
USBD_CtlError(pdev , req);
|
USBD_CtlError(pdev, req);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
pdev->dev_address = dev_addr;
|
pdev->dev_address = dev_addr;
|
||||||
USBD_LL_SetUSBAddress(pdev, dev_addr);
|
(void)USBD_LL_SetUSBAddress(pdev, dev_addr);
|
||||||
USBD_CtlSendStatus(pdev);
|
(void)USBD_CtlSendStatus(pdev);
|
||||||
|
|
||||||
if (dev_addr != 0U)
|
if (dev_addr != 0U)
|
||||||
{
|
{
|
||||||
|
@ -562,8 +623,9 @@ static void USBD_SetAddress(USBD_HandleTypeDef *pdev ,
|
||||||
* @param req: usb request
|
* @param req: usb request
|
||||||
* @retval status
|
* @retval status
|
||||||
*/
|
*/
|
||||||
static void USBD_SetConfig(USBD_HandleTypeDef *pdev, USBD_SetupReqTypedef *req)
|
static USBD_StatusTypeDef USBD_SetConfig(USBD_HandleTypeDef *pdev, USBD_SetupReqTypedef *req)
|
||||||
{
|
{
|
||||||
|
USBD_StatusTypeDef ret = USBD_OK;
|
||||||
static uint8_t cfgidx;
|
static uint8_t cfgidx;
|
||||||
|
|
||||||
cfgidx = (uint8_t)(req->wValue);
|
cfgidx = (uint8_t)(req->wValue);
|
||||||
|
@ -571,63 +633,77 @@ static void USBD_SetConfig(USBD_HandleTypeDef *pdev, USBD_SetupReqTypedef *req)
|
||||||
if (cfgidx > USBD_MAX_NUM_CONFIGURATION)
|
if (cfgidx > USBD_MAX_NUM_CONFIGURATION)
|
||||||
{
|
{
|
||||||
USBD_CtlError(pdev, req);
|
USBD_CtlError(pdev, req);
|
||||||
|
return USBD_FAIL;
|
||||||
}
|
}
|
||||||
else
|
|
||||||
|
switch (pdev->dev_state)
|
||||||
{
|
{
|
||||||
switch (pdev->dev_state)
|
case USBD_STATE_ADDRESSED:
|
||||||
|
if (cfgidx != 0U)
|
||||||
{
|
{
|
||||||
case USBD_STATE_ADDRESSED:
|
pdev->dev_config = cfgidx;
|
||||||
if (cfgidx)
|
|
||||||
|
ret = USBD_SetClassConfig(pdev, cfgidx);
|
||||||
|
|
||||||
|
if (ret != USBD_OK)
|
||||||
{
|
{
|
||||||
pdev->dev_config = cfgidx;
|
USBD_CtlError(pdev, req);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
(void)USBD_CtlSendStatus(pdev);
|
||||||
pdev->dev_state = USBD_STATE_CONFIGURED;
|
pdev->dev_state = USBD_STATE_CONFIGURED;
|
||||||
if(USBD_SetClassConfig(pdev, cfgidx) == USBD_FAIL)
|
|
||||||
{
|
|
||||||
USBD_CtlError(pdev, req);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
USBD_CtlSendStatus(pdev);
|
|
||||||
}
|
}
|
||||||
else
|
|
||||||
{
|
|
||||||
USBD_CtlSendStatus(pdev);
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
|
|
||||||
case USBD_STATE_CONFIGURED:
|
|
||||||
if (cfgidx == 0U)
|
|
||||||
{
|
|
||||||
pdev->dev_state = USBD_STATE_ADDRESSED;
|
|
||||||
pdev->dev_config = cfgidx;
|
|
||||||
USBD_ClrClassConfig(pdev, cfgidx);
|
|
||||||
USBD_CtlSendStatus(pdev);
|
|
||||||
}
|
|
||||||
else if (cfgidx != pdev->dev_config)
|
|
||||||
{
|
|
||||||
/* Clear old configuration */
|
|
||||||
USBD_ClrClassConfig(pdev, (uint8_t)pdev->dev_config);
|
|
||||||
|
|
||||||
/* set new configuration */
|
|
||||||
pdev->dev_config = cfgidx;
|
|
||||||
if(USBD_SetClassConfig(pdev, cfgidx) == USBD_FAIL)
|
|
||||||
{
|
|
||||||
USBD_CtlError(pdev, req);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
USBD_CtlSendStatus(pdev);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
USBD_CtlSendStatus(pdev);
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
|
|
||||||
default:
|
|
||||||
USBD_CtlError(pdev, req);
|
|
||||||
USBD_ClrClassConfig(pdev, cfgidx);
|
|
||||||
break;
|
|
||||||
}
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
(void)USBD_CtlSendStatus(pdev);
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
|
||||||
|
case USBD_STATE_CONFIGURED:
|
||||||
|
if (cfgidx == 0U)
|
||||||
|
{
|
||||||
|
pdev->dev_state = USBD_STATE_ADDRESSED;
|
||||||
|
pdev->dev_config = cfgidx;
|
||||||
|
(void)USBD_ClrClassConfig(pdev, cfgidx);
|
||||||
|
(void)USBD_CtlSendStatus(pdev);
|
||||||
|
}
|
||||||
|
else if (cfgidx != pdev->dev_config)
|
||||||
|
{
|
||||||
|
/* Clear old configuration */
|
||||||
|
(void)USBD_ClrClassConfig(pdev, (uint8_t)pdev->dev_config);
|
||||||
|
|
||||||
|
/* set new configuration */
|
||||||
|
pdev->dev_config = cfgidx;
|
||||||
|
|
||||||
|
ret = USBD_SetClassConfig(pdev, cfgidx);
|
||||||
|
|
||||||
|
if (ret != USBD_OK)
|
||||||
|
{
|
||||||
|
USBD_CtlError(pdev, req);
|
||||||
|
(void)USBD_ClrClassConfig(pdev, (uint8_t)pdev->dev_config);
|
||||||
|
pdev->dev_state = USBD_STATE_ADDRESSED;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
(void)USBD_CtlSendStatus(pdev);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
(void)USBD_CtlSendStatus(pdev);
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
|
||||||
|
default:
|
||||||
|
USBD_CtlError(pdev, req);
|
||||||
|
(void)USBD_ClrClassConfig(pdev, cfgidx);
|
||||||
|
ret = USBD_FAIL;
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -641,7 +717,7 @@ static void USBD_GetConfig(USBD_HandleTypeDef *pdev, USBD_SetupReqTypedef *req)
|
||||||
{
|
{
|
||||||
if (req->wLength != 1U)
|
if (req->wLength != 1U)
|
||||||
{
|
{
|
||||||
USBD_CtlError(pdev , req);
|
USBD_CtlError(pdev, req);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
@ -650,15 +726,15 @@ static void USBD_GetConfig(USBD_HandleTypeDef *pdev, USBD_SetupReqTypedef *req)
|
||||||
case USBD_STATE_DEFAULT:
|
case USBD_STATE_DEFAULT:
|
||||||
case USBD_STATE_ADDRESSED:
|
case USBD_STATE_ADDRESSED:
|
||||||
pdev->dev_default_config = 0U;
|
pdev->dev_default_config = 0U;
|
||||||
USBD_CtlSendData (pdev, (uint8_t *)(void *)&pdev->dev_default_config, 1U);
|
(void)USBD_CtlSendData(pdev, (uint8_t *)&pdev->dev_default_config, 1U);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case USBD_STATE_CONFIGURED:
|
case USBD_STATE_CONFIGURED:
|
||||||
USBD_CtlSendData (pdev, (uint8_t *)(void *)&pdev->dev_config, 1U);
|
(void)USBD_CtlSendData(pdev, (uint8_t *)&pdev->dev_config, 1U);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
default:
|
default:
|
||||||
USBD_CtlError(pdev , req);
|
USBD_CtlError(pdev, req);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -678,28 +754,28 @@ static void USBD_GetStatus(USBD_HandleTypeDef *pdev, USBD_SetupReqTypedef *req)
|
||||||
case USBD_STATE_DEFAULT:
|
case USBD_STATE_DEFAULT:
|
||||||
case USBD_STATE_ADDRESSED:
|
case USBD_STATE_ADDRESSED:
|
||||||
case USBD_STATE_CONFIGURED:
|
case USBD_STATE_CONFIGURED:
|
||||||
if(req->wLength != 0x2U)
|
if (req->wLength != 0x2U)
|
||||||
{
|
{
|
||||||
USBD_CtlError(pdev, req);
|
USBD_CtlError(pdev, req);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
#if ( USBD_SELF_POWERED == 1U)
|
#if (USBD_SELF_POWERED == 1U)
|
||||||
pdev->dev_config_status = USB_CONFIG_SELF_POWERED;
|
pdev->dev_config_status = USB_CONFIG_SELF_POWERED;
|
||||||
#else
|
#else
|
||||||
pdev->dev_config_status = 0U;
|
pdev->dev_config_status = 0U;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
if (pdev->dev_remote_wakeup)
|
if (pdev->dev_remote_wakeup != 0U)
|
||||||
{
|
{
|
||||||
pdev->dev_config_status |= USB_CONFIG_REMOTE_WAKEUP;
|
pdev->dev_config_status |= USB_CONFIG_REMOTE_WAKEUP;
|
||||||
}
|
}
|
||||||
|
|
||||||
USBD_CtlSendData (pdev, (uint8_t *)(void *)&pdev->dev_config_status, 2U);
|
(void)USBD_CtlSendData(pdev, (uint8_t *)&pdev->dev_config_status, 2U);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
default :
|
default:
|
||||||
USBD_CtlError(pdev , req);
|
USBD_CtlError(pdev, req);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -712,16 +788,13 @@ static void USBD_GetStatus(USBD_HandleTypeDef *pdev, USBD_SetupReqTypedef *req)
|
||||||
* @param req: usb request
|
* @param req: usb request
|
||||||
* @retval status
|
* @retval status
|
||||||
*/
|
*/
|
||||||
static void USBD_SetFeature(USBD_HandleTypeDef *pdev ,
|
static void USBD_SetFeature(USBD_HandleTypeDef *pdev, USBD_SetupReqTypedef *req)
|
||||||
USBD_SetupReqTypedef *req)
|
|
||||||
{
|
{
|
||||||
|
|
||||||
if (req->wValue == USB_FEATURE_REMOTE_WAKEUP)
|
if (req->wValue == USB_FEATURE_REMOTE_WAKEUP)
|
||||||
{
|
{
|
||||||
pdev->dev_remote_wakeup = 1U;
|
pdev->dev_remote_wakeup = 1U;
|
||||||
USBD_CtlSendStatus(pdev);
|
(void)USBD_CtlSendStatus(pdev);
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -732,24 +805,23 @@ static void USBD_SetFeature(USBD_HandleTypeDef *pdev ,
|
||||||
* @param req: usb request
|
* @param req: usb request
|
||||||
* @retval status
|
* @retval status
|
||||||
*/
|
*/
|
||||||
static void USBD_ClrFeature(USBD_HandleTypeDef *pdev ,
|
static void USBD_ClrFeature(USBD_HandleTypeDef *pdev, USBD_SetupReqTypedef *req)
|
||||||
USBD_SetupReqTypedef *req)
|
|
||||||
{
|
{
|
||||||
switch (pdev->dev_state)
|
switch (pdev->dev_state)
|
||||||
{
|
{
|
||||||
case USBD_STATE_DEFAULT:
|
case USBD_STATE_DEFAULT:
|
||||||
case USBD_STATE_ADDRESSED:
|
case USBD_STATE_ADDRESSED:
|
||||||
case USBD_STATE_CONFIGURED:
|
case USBD_STATE_CONFIGURED:
|
||||||
if (req->wValue == USB_FEATURE_REMOTE_WAKEUP)
|
if (req->wValue == USB_FEATURE_REMOTE_WAKEUP)
|
||||||
{
|
{
|
||||||
pdev->dev_remote_wakeup = 0U;
|
pdev->dev_remote_wakeup = 0U;
|
||||||
USBD_CtlSendStatus(pdev);
|
(void)USBD_CtlSendStatus(pdev);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
default :
|
default:
|
||||||
USBD_CtlError(pdev , req);
|
USBD_CtlError(pdev, req);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -763,12 +835,23 @@ static void USBD_ClrFeature(USBD_HandleTypeDef *pdev ,
|
||||||
|
|
||||||
void USBD_ParseSetupRequest(USBD_SetupReqTypedef *req, uint8_t *pdata)
|
void USBD_ParseSetupRequest(USBD_SetupReqTypedef *req, uint8_t *pdata)
|
||||||
{
|
{
|
||||||
req->bmRequest = *(uint8_t *) (pdata);
|
uint8_t *pbuff = pdata;
|
||||||
req->bRequest = *(uint8_t *) (pdata + 1);
|
|
||||||
req->wValue = SWAPBYTE (pdata + 2);
|
|
||||||
req->wIndex = SWAPBYTE (pdata + 4);
|
|
||||||
req->wLength = SWAPBYTE (pdata + 6);
|
|
||||||
|
|
||||||
|
req->bmRequest = *(uint8_t *)(pbuff);
|
||||||
|
|
||||||
|
pbuff++;
|
||||||
|
req->bRequest = *(uint8_t *)(pbuff);
|
||||||
|
|
||||||
|
pbuff++;
|
||||||
|
req->wValue = SWAPBYTE(pbuff);
|
||||||
|
|
||||||
|
pbuff++;
|
||||||
|
pbuff++;
|
||||||
|
req->wIndex = SWAPBYTE(pbuff);
|
||||||
|
|
||||||
|
pbuff++;
|
||||||
|
pbuff++;
|
||||||
|
req->wLength = SWAPBYTE(pbuff);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -779,11 +862,12 @@ void USBD_ParseSetupRequest(USBD_SetupReqTypedef *req, uint8_t *pdata)
|
||||||
* @retval None
|
* @retval None
|
||||||
*/
|
*/
|
||||||
|
|
||||||
void USBD_CtlError( USBD_HandleTypeDef *pdev ,
|
void USBD_CtlError(USBD_HandleTypeDef *pdev, USBD_SetupReqTypedef *req)
|
||||||
USBD_SetupReqTypedef *req)
|
|
||||||
{
|
{
|
||||||
USBD_LL_StallEP(pdev , 0x80U);
|
UNUSED(req);
|
||||||
USBD_LL_StallEP(pdev , 0U);
|
|
||||||
|
(void)USBD_LL_StallEP(pdev, 0x80U);
|
||||||
|
(void)USBD_LL_StallEP(pdev, 0U);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -798,18 +882,29 @@ void USBD_CtlError( USBD_HandleTypeDef *pdev ,
|
||||||
void USBD_GetString(uint8_t *desc, uint8_t *unicode, uint16_t *len)
|
void USBD_GetString(uint8_t *desc, uint8_t *unicode, uint16_t *len)
|
||||||
{
|
{
|
||||||
uint8_t idx = 0U;
|
uint8_t idx = 0U;
|
||||||
|
uint8_t *pdesc;
|
||||||
|
|
||||||
if (desc != NULL)
|
if (desc == NULL)
|
||||||
{
|
{
|
||||||
*len = (uint16_t)USBD_GetLen(desc) * 2U + 2U;
|
return;
|
||||||
unicode[idx++] = *(uint8_t *)(void *)len;
|
}
|
||||||
unicode[idx++] = USB_DESC_TYPE_STRING;
|
|
||||||
|
|
||||||
while (*desc != '\0')
|
pdesc = desc;
|
||||||
{
|
*len = ((uint16_t)USBD_GetLen(pdesc) * 2U) + 2U;
|
||||||
unicode[idx++] = *desc++;
|
|
||||||
unicode[idx++] = 0U;
|
unicode[idx] = *(uint8_t *)len;
|
||||||
}
|
idx++;
|
||||||
|
unicode[idx] = USB_DESC_TYPE_STRING;
|
||||||
|
idx++;
|
||||||
|
|
||||||
|
while (*pdesc != (uint8_t)'\0')
|
||||||
|
{
|
||||||
|
unicode[idx] = *pdesc;
|
||||||
|
pdesc++;
|
||||||
|
idx++;
|
||||||
|
|
||||||
|
unicode[idx] = 0U;
|
||||||
|
idx++;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -821,15 +916,16 @@ void USBD_GetString(uint8_t *desc, uint8_t *unicode, uint16_t *len)
|
||||||
*/
|
*/
|
||||||
static uint8_t USBD_GetLen(uint8_t *buf)
|
static uint8_t USBD_GetLen(uint8_t *buf)
|
||||||
{
|
{
|
||||||
uint8_t len = 0U;
|
uint8_t len = 0U;
|
||||||
|
uint8_t *pbuff = buf;
|
||||||
|
|
||||||
while (*buf != '\0')
|
while (*pbuff != (uint8_t)'\0')
|
||||||
{
|
{
|
||||||
len++;
|
len++;
|
||||||
buf++;
|
pbuff++;
|
||||||
}
|
}
|
||||||
|
|
||||||
return len;
|
return len;
|
||||||
}
|
}
|
||||||
/**
|
/**
|
||||||
* @}
|
* @}
|
||||||
|
|
|
@ -12,7 +12,7 @@
|
||||||
* This software component is licensed by ST under Ultimate Liberty license
|
* This software component is licensed by ST under Ultimate Liberty license
|
||||||
* SLA0044, the "License"; You may not use this file except in compliance with
|
* SLA0044, the "License"; You may not use this file except in compliance with
|
||||||
* the License. You may obtain a copy of the License at:
|
* the License. You may obtain a copy of the License at:
|
||||||
* http://www.st.com/SLA0044
|
* www.st.com/SLA0044
|
||||||
*
|
*
|
||||||
******************************************************************************
|
******************************************************************************
|
||||||
*/
|
*/
|
||||||
|
@ -84,16 +84,16 @@
|
||||||
* @param len: length of data to be sent
|
* @param len: length of data to be sent
|
||||||
* @retval status
|
* @retval status
|
||||||
*/
|
*/
|
||||||
USBD_StatusTypeDef USBD_CtlSendData (USBD_HandleTypeDef *pdev, uint8_t *pbuf,
|
USBD_StatusTypeDef USBD_CtlSendData(USBD_HandleTypeDef *pdev,
|
||||||
uint16_t len)
|
uint8_t *pbuf, uint32_t len)
|
||||||
{
|
{
|
||||||
/* Set EP0 State */
|
/* Set EP0 State */
|
||||||
pdev->ep0_state = USBD_EP0_DATA_IN;
|
pdev->ep0_state = USBD_EP0_DATA_IN;
|
||||||
pdev->ep_in[0].total_length = len;
|
pdev->ep_in[0].total_length = len;
|
||||||
pdev->ep_in[0].rem_length = len;
|
pdev->ep_in[0].rem_length = len;
|
||||||
|
|
||||||
/* Start the transfer */
|
/* Start the transfer */
|
||||||
USBD_LL_Transmit (pdev, 0x00U, pbuf, len);
|
(void)USBD_LL_Transmit(pdev, 0x00U, pbuf, len);
|
||||||
|
|
||||||
return USBD_OK;
|
return USBD_OK;
|
||||||
}
|
}
|
||||||
|
@ -106,11 +106,11 @@ USBD_StatusTypeDef USBD_CtlSendData (USBD_HandleTypeDef *pdev, uint8_t *pbuf,
|
||||||
* @param len: length of data to be sent
|
* @param len: length of data to be sent
|
||||||
* @retval status
|
* @retval status
|
||||||
*/
|
*/
|
||||||
USBD_StatusTypeDef USBD_CtlContinueSendData (USBD_HandleTypeDef *pdev,
|
USBD_StatusTypeDef USBD_CtlContinueSendData(USBD_HandleTypeDef *pdev,
|
||||||
uint8_t *pbuf, uint16_t len)
|
uint8_t *pbuf, uint32_t len)
|
||||||
{
|
{
|
||||||
/* Start the next transfer */
|
/* Start the next transfer */
|
||||||
USBD_LL_Transmit (pdev, 0x00U, pbuf, len);
|
(void)USBD_LL_Transmit(pdev, 0x00U, pbuf, len);
|
||||||
|
|
||||||
return USBD_OK;
|
return USBD_OK;
|
||||||
}
|
}
|
||||||
|
@ -123,16 +123,16 @@ USBD_StatusTypeDef USBD_CtlContinueSendData (USBD_HandleTypeDef *pdev,
|
||||||
* @param len: length of data to be received
|
* @param len: length of data to be received
|
||||||
* @retval status
|
* @retval status
|
||||||
*/
|
*/
|
||||||
USBD_StatusTypeDef USBD_CtlPrepareRx (USBD_HandleTypeDef *pdev, uint8_t *pbuf,
|
USBD_StatusTypeDef USBD_CtlPrepareRx(USBD_HandleTypeDef *pdev,
|
||||||
uint16_t len)
|
uint8_t *pbuf, uint32_t len)
|
||||||
{
|
{
|
||||||
/* Set EP0 State */
|
/* Set EP0 State */
|
||||||
pdev->ep0_state = USBD_EP0_DATA_OUT;
|
pdev->ep0_state = USBD_EP0_DATA_OUT;
|
||||||
pdev->ep_out[0].total_length = len;
|
pdev->ep_out[0].total_length = len;
|
||||||
pdev->ep_out[0].rem_length = len;
|
pdev->ep_out[0].rem_length = len;
|
||||||
|
|
||||||
/* Start the transfer */
|
/* Start the transfer */
|
||||||
USBD_LL_PrepareReceive (pdev, 0U, pbuf, len);
|
(void)USBD_LL_PrepareReceive(pdev, 0U, pbuf, len);
|
||||||
|
|
||||||
return USBD_OK;
|
return USBD_OK;
|
||||||
}
|
}
|
||||||
|
@ -145,10 +145,10 @@ USBD_StatusTypeDef USBD_CtlPrepareRx (USBD_HandleTypeDef *pdev, uint8_t *pbuf,
|
||||||
* @param len: length of data to be received
|
* @param len: length of data to be received
|
||||||
* @retval status
|
* @retval status
|
||||||
*/
|
*/
|
||||||
USBD_StatusTypeDef USBD_CtlContinueRx (USBD_HandleTypeDef *pdev, uint8_t *pbuf,
|
USBD_StatusTypeDef USBD_CtlContinueRx(USBD_HandleTypeDef *pdev,
|
||||||
uint16_t len)
|
uint8_t *pbuf, uint32_t len)
|
||||||
{
|
{
|
||||||
USBD_LL_PrepareReceive(pdev, 0U, pbuf, len);
|
(void)USBD_LL_PrepareReceive(pdev, 0U, pbuf, len);
|
||||||
|
|
||||||
return USBD_OK;
|
return USBD_OK;
|
||||||
}
|
}
|
||||||
|
@ -159,13 +159,13 @@ USBD_StatusTypeDef USBD_CtlContinueRx (USBD_HandleTypeDef *pdev, uint8_t *pbuf,
|
||||||
* @param pdev: device instance
|
* @param pdev: device instance
|
||||||
* @retval status
|
* @retval status
|
||||||
*/
|
*/
|
||||||
USBD_StatusTypeDef USBD_CtlSendStatus (USBD_HandleTypeDef *pdev)
|
USBD_StatusTypeDef USBD_CtlSendStatus(USBD_HandleTypeDef *pdev)
|
||||||
{
|
{
|
||||||
/* Set EP0 State */
|
/* Set EP0 State */
|
||||||
pdev->ep0_state = USBD_EP0_STATUS_IN;
|
pdev->ep0_state = USBD_EP0_STATUS_IN;
|
||||||
|
|
||||||
/* Start the transfer */
|
/* Start the transfer */
|
||||||
USBD_LL_Transmit(pdev, 0x00U, NULL, 0U);
|
(void)USBD_LL_Transmit(pdev, 0x00U, NULL, 0U);
|
||||||
|
|
||||||
return USBD_OK;
|
return USBD_OK;
|
||||||
}
|
}
|
||||||
|
@ -176,13 +176,13 @@ USBD_StatusTypeDef USBD_CtlSendStatus (USBD_HandleTypeDef *pdev)
|
||||||
* @param pdev: device instance
|
* @param pdev: device instance
|
||||||
* @retval status
|
* @retval status
|
||||||
*/
|
*/
|
||||||
USBD_StatusTypeDef USBD_CtlReceiveStatus (USBD_HandleTypeDef *pdev)
|
USBD_StatusTypeDef USBD_CtlReceiveStatus(USBD_HandleTypeDef *pdev)
|
||||||
{
|
{
|
||||||
/* Set EP0 State */
|
/* Set EP0 State */
|
||||||
pdev->ep0_state = USBD_EP0_STATUS_OUT;
|
pdev->ep0_state = USBD_EP0_STATUS_OUT;
|
||||||
|
|
||||||
/* Start the transfer */
|
/* Start the transfer */
|
||||||
USBD_LL_PrepareReceive (pdev, 0U, NULL, 0U);
|
(void)USBD_LL_PrepareReceive(pdev, 0U, NULL, 0U);
|
||||||
|
|
||||||
return USBD_OK;
|
return USBD_OK;
|
||||||
}
|
}
|
||||||
|
@ -194,7 +194,7 @@ USBD_StatusTypeDef USBD_CtlReceiveStatus (USBD_HandleTypeDef *pdev)
|
||||||
* @param ep_addr: endpoint address
|
* @param ep_addr: endpoint address
|
||||||
* @retval Rx Data blength
|
* @retval Rx Data blength
|
||||||
*/
|
*/
|
||||||
uint32_t USBD_GetRxCount (USBD_HandleTypeDef *pdev, uint8_t ep_addr)
|
uint32_t USBD_GetRxCount(USBD_HandleTypeDef *pdev, uint8_t ep_addr)
|
||||||
{
|
{
|
||||||
return USBD_LL_GetRxDataSize(pdev, ep_addr);
|
return USBD_LL_GetRxDataSize(pdev, ep_addr);
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,278 +1,244 @@
|
||||||
/**
|
/**
|
||||||
******************************************************************************
|
******************************************************************************
|
||||||
* @file system_stm32f7xx.c
|
* @file system_stm32f7xx.c
|
||||||
* @author MCD Application Team
|
* @author MCD Application Team
|
||||||
* @brief CMSIS Cortex-M7 Device Peripheral Access Layer System Source File.
|
* @brief CMSIS Cortex-M7 Device Peripheral Access Layer System Source File.
|
||||||
*
|
*
|
||||||
* This file provides two functions and one global variable to be called from
|
* This file provides two functions and one global variable to be called from
|
||||||
* user application:
|
* user application:
|
||||||
* - SystemInit(): This function is called at startup just after reset and
|
* - SystemInit(): This function is called at startup just after reset and
|
||||||
* before branch to main program. This call is made inside
|
* before branch to main program. This call is made inside
|
||||||
* the "startup_stm32f7xx.s" file.
|
* the "startup_stm32f7xx.s" file.
|
||||||
*
|
*
|
||||||
* - SystemCoreClock variable: Contains the core clock (HCLK), it can be used
|
* - SystemCoreClock variable: Contains the core clock (HCLK), it can be used
|
||||||
* by the user application to setup the SysTick
|
* by the user application to setup the SysTick
|
||||||
* timer or configure other parameters.
|
* timer or configure other parameters.
|
||||||
*
|
*
|
||||||
* - SystemCoreClockUpdate(): Updates the variable SystemCoreClock and must
|
* - SystemCoreClockUpdate(): Updates the variable SystemCoreClock and must
|
||||||
* be called whenever the core clock is changed
|
* be called whenever the core clock is changed
|
||||||
* during program execution.
|
* during program execution.
|
||||||
*
|
*
|
||||||
*
|
*
|
||||||
******************************************************************************
|
******************************************************************************
|
||||||
* @attention
|
* @attention
|
||||||
*
|
*
|
||||||
* <h2><center>© COPYRIGHT 2016 STMicroelectronics</center></h2>
|
* <h2><center>© Copyright (c) 2016 STMicroelectronics.
|
||||||
*
|
* All rights reserved.</center></h2>
|
||||||
* Redistribution and use in source and binary forms, with or without modification,
|
*
|
||||||
* are permitted provided that the following conditions are met:
|
* This software component is licensed by ST under BSD 3-Clause license,
|
||||||
* 1. Redistributions of source code must retain the above copyright notice,
|
* the "License"; You may not use this file except in compliance with the
|
||||||
* this list of conditions and the following disclaimer.
|
* License. You may obtain a copy of the License at:
|
||||||
* 2. Redistributions in binary form must reproduce the above copyright notice,
|
* opensource.org/licenses/BSD-3-Clause
|
||||||
* this list of conditions and the following disclaimer in the documentation
|
*
|
||||||
* and/or other materials provided with the distribution.
|
******************************************************************************
|
||||||
* 3. Neither the name of STMicroelectronics nor the names of its contributors
|
*/
|
||||||
* may be used to endorse or promote products derived from this software
|
|
||||||
* without specific prior written permission.
|
/** @addtogroup CMSIS
|
||||||
*
|
* @{
|
||||||
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
|
*/
|
||||||
* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
|
||||||
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
/** @addtogroup stm32f7xx_system
|
||||||
* DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
|
* @{
|
||||||
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
|
*/
|
||||||
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
|
|
||||||
* SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
|
/** @addtogroup STM32F7xx_System_Private_Includes
|
||||||
* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
|
* @{
|
||||||
* OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
*/
|
||||||
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
|
||||||
*
|
#include "stm32f7xx.h"
|
||||||
******************************************************************************
|
|
||||||
*/
|
#if !defined (HSE_VALUE)
|
||||||
|
#define HSE_VALUE ((uint32_t)25000000) /*!< Default value of the External oscillator in Hz */
|
||||||
/** @addtogroup CMSIS
|
#endif /* HSE_VALUE */
|
||||||
* @{
|
|
||||||
*/
|
#if !defined (HSI_VALUE)
|
||||||
|
#define HSI_VALUE ((uint32_t)16000000) /*!< Value of the Internal oscillator in Hz*/
|
||||||
/** @addtogroup stm32f7xx_system
|
#endif /* HSI_VALUE */
|
||||||
* @{
|
|
||||||
*/
|
/**
|
||||||
|
* @}
|
||||||
/** @addtogroup STM32F7xx_System_Private_Includes
|
*/
|
||||||
* @{
|
|
||||||
*/
|
/** @addtogroup STM32F7xx_System_Private_TypesDefinitions
|
||||||
|
* @{
|
||||||
#include "stm32f7xx.h"
|
*/
|
||||||
|
|
||||||
#if !defined (HSE_VALUE)
|
/**
|
||||||
#define HSE_VALUE ((uint32_t)25000000) /*!< Default value of the External oscillator in Hz */
|
* @}
|
||||||
#endif /* HSE_VALUE */
|
*/
|
||||||
|
|
||||||
#if !defined (HSI_VALUE)
|
/** @addtogroup STM32F7xx_System_Private_Defines
|
||||||
#define HSI_VALUE ((uint32_t)16000000) /*!< Value of the Internal oscillator in Hz*/
|
* @{
|
||||||
#endif /* HSI_VALUE */
|
*/
|
||||||
|
|
||||||
/**
|
/************************* Miscellaneous Configuration ************************/
|
||||||
* @}
|
|
||||||
*/
|
/*!< Uncomment the following line if you need to relocate your vector Table in
|
||||||
|
Internal SRAM. */
|
||||||
/** @addtogroup STM32F7xx_System_Private_TypesDefinitions
|
/* #define VECT_TAB_SRAM */
|
||||||
* @{
|
#define VECT_TAB_OFFSET 0x00 /*!< Vector Table base offset field.
|
||||||
*/
|
This value must be a multiple of 0x200. */
|
||||||
|
/******************************************************************************/
|
||||||
/**
|
|
||||||
* @}
|
/**
|
||||||
*/
|
* @}
|
||||||
|
*/
|
||||||
/** @addtogroup STM32F7xx_System_Private_Defines
|
|
||||||
* @{
|
/** @addtogroup STM32F7xx_System_Private_Macros
|
||||||
*/
|
* @{
|
||||||
|
*/
|
||||||
/************************* Miscellaneous Configuration ************************/
|
|
||||||
|
/**
|
||||||
/*!< Uncomment the following line if you need to relocate your vector Table in
|
* @}
|
||||||
Internal SRAM. */
|
*/
|
||||||
/* #define VECT_TAB_SRAM */
|
|
||||||
#define VECT_TAB_OFFSET 0x00 /*!< Vector Table base offset field.
|
/** @addtogroup STM32F7xx_System_Private_Variables
|
||||||
This value must be a multiple of 0x200. */
|
* @{
|
||||||
/******************************************************************************/
|
*/
|
||||||
|
|
||||||
/**
|
/* This variable is updated in three ways:
|
||||||
* @}
|
1) by calling CMSIS function SystemCoreClockUpdate()
|
||||||
*/
|
2) by calling HAL API function HAL_RCC_GetHCLKFreq()
|
||||||
|
3) each time HAL_RCC_ClockConfig() is called to configure the system clock frequency
|
||||||
/** @addtogroup STM32F7xx_System_Private_Macros
|
Note: If you use this function to configure the system clock; then there
|
||||||
* @{
|
is no need to call the 2 first functions listed above, since SystemCoreClock
|
||||||
*/
|
variable is updated automatically.
|
||||||
|
*/
|
||||||
/**
|
uint32_t SystemCoreClock = 16000000;
|
||||||
* @}
|
const uint8_t AHBPrescTable[16] = {0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 4, 6, 7, 8, 9};
|
||||||
*/
|
const uint8_t APBPrescTable[8] = {0, 0, 0, 0, 1, 2, 3, 4};
|
||||||
|
|
||||||
/** @addtogroup STM32F7xx_System_Private_Variables
|
/**
|
||||||
* @{
|
* @}
|
||||||
*/
|
*/
|
||||||
|
|
||||||
/* This variable is updated in three ways:
|
/** @addtogroup STM32F7xx_System_Private_FunctionPrototypes
|
||||||
1) by calling CMSIS function SystemCoreClockUpdate()
|
* @{
|
||||||
2) by calling HAL API function HAL_RCC_GetHCLKFreq()
|
*/
|
||||||
3) each time HAL_RCC_ClockConfig() is called to configure the system clock frequency
|
|
||||||
Note: If you use this function to configure the system clock; then there
|
/**
|
||||||
is no need to call the 2 first functions listed above, since SystemCoreClock
|
* @}
|
||||||
variable is updated automatically.
|
*/
|
||||||
*/
|
|
||||||
uint32_t SystemCoreClock = 16000000;
|
/** @addtogroup STM32F7xx_System_Private_Functions
|
||||||
const uint8_t AHBPrescTable[16] = {0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 4, 6, 7, 8, 9};
|
* @{
|
||||||
const uint8_t APBPrescTable[8] = {0, 0, 0, 0, 1, 2, 3, 4};
|
*/
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @}
|
* @brief Setup the microcontroller system
|
||||||
*/
|
* Initialize the Embedded Flash Interface, the PLL and update the
|
||||||
|
* SystemFrequency variable.
|
||||||
/** @addtogroup STM32F7xx_System_Private_FunctionPrototypes
|
* @param None
|
||||||
* @{
|
* @retval None
|
||||||
*/
|
*/
|
||||||
|
void SystemInit(void)
|
||||||
/**
|
{
|
||||||
* @}
|
/* FPU settings ------------------------------------------------------------*/
|
||||||
*/
|
#if (__FPU_PRESENT == 1) && (__FPU_USED == 1)
|
||||||
|
SCB->CPACR |= ((3UL << 10*2)|(3UL << 11*2)); /* set CP10 and CP11 Full Access */
|
||||||
/** @addtogroup STM32F7xx_System_Private_Functions
|
#endif
|
||||||
* @{
|
|
||||||
*/
|
/* Configure the Vector Table location add offset address ------------------*/
|
||||||
|
#ifdef VECT_TAB_SRAM
|
||||||
/**
|
SCB->VTOR = RAMDTCM_BASE | VECT_TAB_OFFSET; /* Vector Table Relocation in Internal SRAM */
|
||||||
* @brief Setup the microcontroller system
|
#else
|
||||||
* Initialize the Embedded Flash Interface, the PLL and update the
|
SCB->VTOR = FLASH_BASE | VECT_TAB_OFFSET; /* Vector Table Relocation in Internal FLASH */
|
||||||
* SystemFrequency variable.
|
#endif
|
||||||
* @param None
|
}
|
||||||
* @retval None
|
|
||||||
*/
|
/**
|
||||||
void SystemInit(void)
|
* @brief Update SystemCoreClock variable according to Clock Register Values.
|
||||||
{
|
* The SystemCoreClock variable contains the core clock (HCLK), it can
|
||||||
/* FPU settings ------------------------------------------------------------*/
|
* be used by the user application to setup the SysTick timer or configure
|
||||||
#if (__FPU_PRESENT == 1) && (__FPU_USED == 1)
|
* other parameters.
|
||||||
SCB->CPACR |= ((3UL << 10*2)|(3UL << 11*2)); /* set CP10 and CP11 Full Access */
|
*
|
||||||
#endif
|
* @note Each time the core clock (HCLK) changes, this function must be called
|
||||||
/* Reset the RCC clock configuration to the default reset state ------------*/
|
* to update SystemCoreClock variable value. Otherwise, any configuration
|
||||||
/* Set HSION bit */
|
* based on this variable will be incorrect.
|
||||||
RCC->CR |= (uint32_t)0x00000001;
|
*
|
||||||
|
* @note - The system frequency computed by this function is not the real
|
||||||
/* Reset CFGR register */
|
* frequency in the chip. It is calculated based on the predefined
|
||||||
RCC->CFGR = 0x00000000;
|
* constant and the selected clock source:
|
||||||
|
*
|
||||||
/* Reset HSEON, CSSON and PLLON bits */
|
* - If SYSCLK source is HSI, SystemCoreClock will contain the HSI_VALUE(*)
|
||||||
RCC->CR &= (uint32_t)0xFEF6FFFF;
|
*
|
||||||
|
* - If SYSCLK source is HSE, SystemCoreClock will contain the HSE_VALUE(**)
|
||||||
/* Reset PLLCFGR register */
|
*
|
||||||
RCC->PLLCFGR = 0x24003010;
|
* - If SYSCLK source is PLL, SystemCoreClock will contain the HSE_VALUE(**)
|
||||||
|
* or HSI_VALUE(*) multiplied/divided by the PLL factors.
|
||||||
/* Reset HSEBYP bit */
|
*
|
||||||
RCC->CR &= (uint32_t)0xFFFBFFFF;
|
* (*) HSI_VALUE is a constant defined in stm32f7xx_hal_conf.h file (default value
|
||||||
|
* 16 MHz) but the real value may vary depending on the variations
|
||||||
/* Disable all interrupts */
|
* in voltage and temperature.
|
||||||
RCC->CIR = 0x00000000;
|
*
|
||||||
|
* (**) HSE_VALUE is a constant defined in stm32f7xx_hal_conf.h file (default value
|
||||||
/* Configure the Vector Table location add offset address ------------------*/
|
* 25 MHz), user has to ensure that HSE_VALUE is same as the real
|
||||||
#ifdef VECT_TAB_SRAM
|
* frequency of the crystal used. Otherwise, this function may
|
||||||
SCB->VTOR = RAMDTCM_BASE | VECT_TAB_OFFSET; /* Vector Table Relocation in Internal SRAM */
|
* have wrong result.
|
||||||
#else
|
*
|
||||||
SCB->VTOR = FLASH_BASE | VECT_TAB_OFFSET; /* Vector Table Relocation in Internal FLASH */
|
* - The result of this function could be not correct when using fractional
|
||||||
#endif
|
* value for HSE crystal.
|
||||||
}
|
*
|
||||||
|
* @param None
|
||||||
/**
|
* @retval None
|
||||||
* @brief Update SystemCoreClock variable according to Clock Register Values.
|
*/
|
||||||
* The SystemCoreClock variable contains the core clock (HCLK), it can
|
void SystemCoreClockUpdate(void)
|
||||||
* be used by the user application to setup the SysTick timer or configure
|
{
|
||||||
* other parameters.
|
uint32_t tmp = 0, pllvco = 0, pllp = 2, pllsource = 0, pllm = 2;
|
||||||
*
|
|
||||||
* @note Each time the core clock (HCLK) changes, this function must be called
|
/* Get SYSCLK source -------------------------------------------------------*/
|
||||||
* to update SystemCoreClock variable value. Otherwise, any configuration
|
tmp = RCC->CFGR & RCC_CFGR_SWS;
|
||||||
* based on this variable will be incorrect.
|
|
||||||
*
|
switch (tmp)
|
||||||
* @note - The system frequency computed by this function is not the real
|
{
|
||||||
* frequency in the chip. It is calculated based on the predefined
|
case 0x00: /* HSI used as system clock source */
|
||||||
* constant and the selected clock source:
|
SystemCoreClock = HSI_VALUE;
|
||||||
*
|
break;
|
||||||
* - If SYSCLK source is HSI, SystemCoreClock will contain the HSI_VALUE(*)
|
case 0x04: /* HSE used as system clock source */
|
||||||
*
|
SystemCoreClock = HSE_VALUE;
|
||||||
* - If SYSCLK source is HSE, SystemCoreClock will contain the HSE_VALUE(**)
|
break;
|
||||||
*
|
case 0x08: /* PLL used as system clock source */
|
||||||
* - If SYSCLK source is PLL, SystemCoreClock will contain the HSE_VALUE(**)
|
|
||||||
* or HSI_VALUE(*) multiplied/divided by the PLL factors.
|
/* PLL_VCO = (HSE_VALUE or HSI_VALUE / PLL_M) * PLL_N
|
||||||
*
|
SYSCLK = PLL_VCO / PLL_P
|
||||||
* (*) HSI_VALUE is a constant defined in stm32f7xx_hal_conf.h file (default value
|
*/
|
||||||
* 16 MHz) but the real value may vary depending on the variations
|
pllsource = (RCC->PLLCFGR & RCC_PLLCFGR_PLLSRC) >> 22;
|
||||||
* in voltage and temperature.
|
pllm = RCC->PLLCFGR & RCC_PLLCFGR_PLLM;
|
||||||
*
|
|
||||||
* (**) HSE_VALUE is a constant defined in stm32f7xx_hal_conf.h file (default value
|
if (pllsource != 0)
|
||||||
* 25 MHz), user has to ensure that HSE_VALUE is same as the real
|
{
|
||||||
* frequency of the crystal used. Otherwise, this function may
|
/* HSE used as PLL clock source */
|
||||||
* have wrong result.
|
pllvco = (HSE_VALUE / pllm) * ((RCC->PLLCFGR & RCC_PLLCFGR_PLLN) >> 6);
|
||||||
*
|
}
|
||||||
* - The result of this function could be not correct when using fractional
|
else
|
||||||
* value for HSE crystal.
|
{
|
||||||
*
|
/* HSI used as PLL clock source */
|
||||||
* @param None
|
pllvco = (HSI_VALUE / pllm) * ((RCC->PLLCFGR & RCC_PLLCFGR_PLLN) >> 6);
|
||||||
* @retval None
|
}
|
||||||
*/
|
|
||||||
void SystemCoreClockUpdate(void)
|
pllp = (((RCC->PLLCFGR & RCC_PLLCFGR_PLLP) >>16) + 1 ) *2;
|
||||||
{
|
SystemCoreClock = pllvco/pllp;
|
||||||
uint32_t tmp = 0, pllvco = 0, pllp = 2, pllsource = 0, pllm = 2;
|
break;
|
||||||
|
default:
|
||||||
/* Get SYSCLK source -------------------------------------------------------*/
|
SystemCoreClock = HSI_VALUE;
|
||||||
tmp = RCC->CFGR & RCC_CFGR_SWS;
|
break;
|
||||||
|
}
|
||||||
switch (tmp)
|
/* Compute HCLK frequency --------------------------------------------------*/
|
||||||
{
|
/* Get HCLK prescaler */
|
||||||
case 0x00: /* HSI used as system clock source */
|
tmp = AHBPrescTable[((RCC->CFGR & RCC_CFGR_HPRE) >> 4)];
|
||||||
SystemCoreClock = HSI_VALUE;
|
/* HCLK frequency */
|
||||||
break;
|
SystemCoreClock >>= tmp;
|
||||||
case 0x04: /* HSE used as system clock source */
|
}
|
||||||
SystemCoreClock = HSE_VALUE;
|
|
||||||
break;
|
/**
|
||||||
case 0x08: /* PLL used as system clock source */
|
* @}
|
||||||
|
*/
|
||||||
/* PLL_VCO = (HSE_VALUE or HSI_VALUE / PLL_M) * PLL_N
|
|
||||||
SYSCLK = PLL_VCO / PLL_P
|
/**
|
||||||
*/
|
* @}
|
||||||
pllsource = (RCC->PLLCFGR & RCC_PLLCFGR_PLLSRC) >> 22;
|
*/
|
||||||
pllm = RCC->PLLCFGR & RCC_PLLCFGR_PLLM;
|
|
||||||
|
/**
|
||||||
if (pllsource != 0)
|
* @}
|
||||||
{
|
*/
|
||||||
/* HSE used as PLL clock source */
|
/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
|
||||||
pllvco = (HSE_VALUE / pllm) * ((RCC->PLLCFGR & RCC_PLLCFGR_PLLN) >> 6);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
/* HSI used as PLL clock source */
|
|
||||||
pllvco = (HSI_VALUE / pllm) * ((RCC->PLLCFGR & RCC_PLLCFGR_PLLN) >> 6);
|
|
||||||
}
|
|
||||||
|
|
||||||
pllp = (((RCC->PLLCFGR & RCC_PLLCFGR_PLLP) >>16) + 1 ) *2;
|
|
||||||
SystemCoreClock = pllvco/pllp;
|
|
||||||
break;
|
|
||||||
default:
|
|
||||||
SystemCoreClock = HSI_VALUE;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
/* Compute HCLK frequency --------------------------------------------------*/
|
|
||||||
/* Get HCLK prescaler */
|
|
||||||
tmp = AHBPrescTable[((RCC->CFGR & RCC_CFGR_HPRE) >> 4)];
|
|
||||||
/* HCLK frequency */
|
|
||||||
SystemCoreClock >>= tmp;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @}
|
|
||||||
*/
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @}
|
|
||||||
*/
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @}
|
|
||||||
*/
|
|
||||||
/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
|
|
||||||
|
|
|
@ -504,7 +504,7 @@ USBD_StatusTypeDef USBD_LL_SetUSBAddress(USBD_HandleTypeDef *pdev, uint8_t dev_a
|
||||||
* @param size: Data size
|
* @param size: Data size
|
||||||
* @retval USBD status
|
* @retval USBD status
|
||||||
*/
|
*/
|
||||||
USBD_StatusTypeDef USBD_LL_Transmit(USBD_HandleTypeDef *pdev, uint8_t ep_addr, uint8_t *pbuf, uint16_t size)
|
USBD_StatusTypeDef USBD_LL_Transmit(USBD_HandleTypeDef *pdev, uint8_t ep_addr, uint8_t *pbuf, uint32_t size)
|
||||||
{
|
{
|
||||||
HAL_StatusTypeDef hal_status = HAL_OK;
|
HAL_StatusTypeDef hal_status = HAL_OK;
|
||||||
USBD_StatusTypeDef usb_status = USBD_OK;
|
USBD_StatusTypeDef usb_status = USBD_OK;
|
||||||
|
@ -524,7 +524,7 @@ USBD_StatusTypeDef USBD_LL_Transmit(USBD_HandleTypeDef *pdev, uint8_t ep_addr, u
|
||||||
* @param size: Data size
|
* @param size: Data size
|
||||||
* @retval USBD status
|
* @retval USBD status
|
||||||
*/
|
*/
|
||||||
USBD_StatusTypeDef USBD_LL_PrepareReceive(USBD_HandleTypeDef *pdev, uint8_t ep_addr, uint8_t *pbuf, uint16_t size)
|
USBD_StatusTypeDef USBD_LL_PrepareReceive(USBD_HandleTypeDef *pdev, uint8_t ep_addr, uint8_t *pbuf, uint32_t size)
|
||||||
{
|
{
|
||||||
HAL_StatusTypeDef hal_status = HAL_OK;
|
HAL_StatusTypeDef hal_status = HAL_OK;
|
||||||
USBD_StatusTypeDef usb_status = USBD_OK;
|
USBD_StatusTypeDef usb_status = USBD_OK;
|
||||||
|
|
|
@ -68,8 +68,6 @@
|
||||||
/*---------- -----------*/
|
/*---------- -----------*/
|
||||||
#define USBD_MAX_STR_DESC_SIZ 512U
|
#define USBD_MAX_STR_DESC_SIZ 512U
|
||||||
/*---------- -----------*/
|
/*---------- -----------*/
|
||||||
#define USBD_SUPPORT_USER_STRING 0U
|
|
||||||
/*---------- -----------*/
|
|
||||||
#define USBD_DEBUG_LEVEL 0U
|
#define USBD_DEBUG_LEVEL 0U
|
||||||
/*---------- -----------*/
|
/*---------- -----------*/
|
||||||
#define USBD_LPM_ENABLED 0U
|
#define USBD_LPM_ENABLED 0U
|
||||||
|
@ -81,6 +79,9 @@
|
||||||
#define DEVICE_FS 0
|
#define DEVICE_FS 0
|
||||||
#define DEVICE_HS 1
|
#define DEVICE_HS 1
|
||||||
|
|
||||||
|
/* Inform USB core that a full speed device is used. */
|
||||||
|
#define USE_USB_FS
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @}
|
* @}
|
||||||
*/
|
*/
|
||||||
|
|
|
@ -123,11 +123,6 @@ uint8_t * USBD_FS_ProductStrDescriptor(USBD_SpeedTypeDef speed, uint16_t *length
|
||||||
uint8_t * USBD_FS_SerialStrDescriptor(USBD_SpeedTypeDef speed, uint16_t *length);
|
uint8_t * USBD_FS_SerialStrDescriptor(USBD_SpeedTypeDef speed, uint16_t *length);
|
||||||
uint8_t * USBD_FS_ConfigStrDescriptor(USBD_SpeedTypeDef speed, uint16_t *length);
|
uint8_t * USBD_FS_ConfigStrDescriptor(USBD_SpeedTypeDef speed, uint16_t *length);
|
||||||
uint8_t * USBD_FS_InterfaceStrDescriptor(USBD_SpeedTypeDef speed, uint16_t *length);
|
uint8_t * USBD_FS_InterfaceStrDescriptor(USBD_SpeedTypeDef speed, uint16_t *length);
|
||||||
|
|
||||||
#ifdef USBD_SUPPORT_USER_STRING_DESC
|
|
||||||
uint8_t * USBD_FS_USRStringDesc(USBD_SpeedTypeDef speed, uint8_t idx, uint16_t *length);
|
|
||||||
#endif /* USBD_SUPPORT_USER_STRING_DESC */
|
|
||||||
|
|
||||||
#if (USBD_LPM_ENABLED == 1)
|
#if (USBD_LPM_ENABLED == 1)
|
||||||
uint8_t * USBD_FS_USR_BOSDescriptor(USBD_SpeedTypeDef speed, uint16_t *length);
|
uint8_t * USBD_FS_USR_BOSDescriptor(USBD_SpeedTypeDef speed, uint16_t *length);
|
||||||
#endif /* (USBD_LPM_ENABLED == 1) */
|
#endif /* (USBD_LPM_ENABLED == 1) */
|
||||||
|
@ -328,7 +323,9 @@ uint8_t * USBD_FS_SerialStrDescriptor(USBD_SpeedTypeDef speed, uint16_t *length)
|
||||||
/* Update the serial number string descriptor with the data from the unique
|
/* Update the serial number string descriptor with the data from the unique
|
||||||
* ID */
|
* ID */
|
||||||
Get_SerialNum();
|
Get_SerialNum();
|
||||||
|
/* USER CODE BEGIN USBD_FS_SerialStrDescriptor */
|
||||||
|
|
||||||
|
/* USER CODE END USBD_FS_SerialStrDescriptor */
|
||||||
return (uint8_t *) USBD_StringSerial;
|
return (uint8_t *) USBD_StringSerial;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Binary file not shown.
|
@ -2,7 +2,7 @@ S01E000062696E2F64656D6F70726F675F73746D3332663734362E7372656322
|
||||||
S3150800800000000520DD8600082D8700082D8700085A
|
S3150800800000000520DD8600082D8700082D8700085A
|
||||||
S315080080102D8700082D8700082D870008000000001E
|
S315080080102D8700082D8700082D870008000000001E
|
||||||
S315080080200000000000000000000000002D87000886
|
S315080080200000000000000000000000002D87000886
|
||||||
S315080080302D870008000000002D870008759C0008A1
|
S315080080302D870008000000002D870008E59C000831
|
||||||
S315080080402D8700082D8700082D8700082D87000832
|
S315080080402D8700082D8700082D8700082D87000832
|
||||||
S315080080502D8700082D8700082D8700082D87000822
|
S315080080502D8700082D8700082D8700082D87000822
|
||||||
S315080080602D8700082D8700082D8700082D87000812
|
S315080080602D8700082D8700082D8700082D87000812
|
||||||
|
@ -30,8 +30,8 @@ S315080081B02D8700082D8700082D8700082D870008C1
|
||||||
S311080081C02D8700082D870008EE11AA552F
|
S311080081C02D8700082D870008EE11AA552F
|
||||||
S315080081CC10B5054C237833B9044B13B10448AFF3F7
|
S315080081CC10B5054C237833B9044B13B10448AFF3F7
|
||||||
S315080081DC00800123237010BD380400200000000025
|
S315080081DC00800123237010BD380400200000000025
|
||||||
S315080081EC58A1000808B5034B1BB103490348AFF364
|
S315080081ECC8A1000808B5034B1BB103490348AFF3F4
|
||||||
S315080081FC008008BD000000003C04002058A10008BF
|
S315080081FC008008BD000000003C040020C8A100084F
|
||||||
S3150800820C53B94AB9002908BF00281CBF4FF0FF31E3
|
S3150800820C53B94AB9002908BF00281CBF4FF0FF31E3
|
||||||
S3150800821C4FF0FF3000F074B9ADF1080C6DE904CEDF
|
S3150800821C4FF0FF3000F074B9ADF1080C6DE904CEDF
|
||||||
S3150800822C00F006F8DDF804E0DDE9022304B0704737
|
S3150800822C00F006F8DDF804E0DDE9022304B0704737
|
||||||
|
@ -82,9 +82,9 @@ S315080084EC95E76746D8E781467BE7384645E7ACF11A
|
||||||
S315080084FC020C2B4410E702382C4421E73746E8E6F1
|
S315080084FC020C2B4410E702382C4421E73746E8E6F1
|
||||||
S3150800850C704700BF70B50D4E0D4D761BB61006D0D4
|
S3150800850C704700BF70B50D4E0D4D761BB61006D0D4
|
||||||
S3150800851C0024013455F8043B9847A642F9D1094E74
|
S3150800851C0024013455F8043B9847A642F9D1094E74
|
||||||
S3150800852C094D761B01F012FEB61006D00024013454
|
S3150800852C094D761B01F04AFEB61006D0002401341C
|
||||||
S3150800853C55F8043B9847A642F9D170BDB8A1000876
|
S3150800853C55F8043B9847A642F9D170BD28A2000805
|
||||||
S3150800854CB8A10008C0A10008B8A10008F0B48607B5
|
S3150800854C28A2000830A2000828A20008F0B4860762
|
||||||
S3150800855C46D0541E002A3CD0CAB2034602E014F197
|
S3150800855C46D0541E002A3CD0CAB2034602E014F197
|
||||||
S3150800856CFF3436D303F8012B9D07F8D1032C29D9F0
|
S3150800856CFF3436D303F8012B9D07F8D1032C29D9F0
|
||||||
S3150800857CCDB245EA05250F2C45EA054533D9A4F1B4
|
S3150800857CCDB245EA05250F2C45EA054533D9A4F1B4
|
||||||
|
@ -99,7 +99,7 @@ S315080085FC024800F005B8704700000000198600080C
|
||||||
S3150800860C002301461A46184600F01EB838B50A4C1F
|
S3150800860C002301461A46184600F01EB838B50A4C1F
|
||||||
S3150800861C0A4D641BA4100AD004F18043013B05EBF8
|
S3150800861C0A4D641BA4100AD004F18043013B05EBF8
|
||||||
S3150800862C8305013C55F804399847002CF9D1BDE867
|
S3150800862C8305013C55F804399847002CF9D1BDE867
|
||||||
S3150800863C384001F091BD00BFC4A10008C0A10008D4
|
S3150800863C384001F0C9BD00BF34A2000830A20008BA
|
||||||
S3150800864C704700BF704700BF2DE9F0411E4C054628
|
S3150800864C704700BF704700BF2DE9F0411E4C054628
|
||||||
S3150800865C206890461F460E46FFF7F2FF1B4B1A681A
|
S3150800865C206890461F460E46FFF7F2FF1B4B1A681A
|
||||||
S3150800866CD2F8483133B35A6820681F2A27DC4DB92B
|
S3150800866CD2F8483133B35A6820681F2A27DC4DB92B
|
||||||
|
@ -108,459 +108,459 @@ S3150800868CBDE8F08103EB82010124C1F8888004FA65
|
||||||
S3150800869C02FED3F88841022D44EA0E0CC3F888C1B1
|
S3150800869C02FED3F88841022D44EA0E0CC3F888C1B1
|
||||||
S315080086ACC1F80871E4D1D3F88C114EEA0104C3F869
|
S315080086ACC1F80871E4D1D3F88C114EEA0104C3F869
|
||||||
S315080086BC8C41DDE702F5A673C2F84831D3E7FFF71C
|
S315080086BC8C41DDE702F5A673C2F84831D3E7FFF71C
|
||||||
S315080086CCC1FF4FF0FF30DBE72804002070A100083B
|
S315080086CCC1FF4FF0FF30DBE728040020E0A10008CB
|
||||||
S315080086DCDFF834D0002103E00C4B5B5843500431CF
|
S315080086DCDFF834D0002103E00C4B5B5843500431CF
|
||||||
S315080086EC0B480C4B42189A42F6D30B4A02E000236D
|
S315080086EC0B480C4B42189A42F6D30B4A02E000236D
|
||||||
S315080086FC42F8043B094B9A42F9D300F013F8FFF7FA
|
S315080086FC42F8043B094B9A42F9D300F013F8FFF7FA
|
||||||
S3150800870C01FF01F04FFB704700000520C4A10008CB
|
S3150800870C01FF01F087FB70470000052034A2000822
|
||||||
S3150800871C00000020380400203804002074050020CE
|
S3150800871C00000020380400203804002074050020CE
|
||||||
S3150800872CFEE7000010B40F4AD2F8883043F4700301
|
S3150800872CFEE70000054BD3F8882042F47002C3F824
|
||||||
S3150800873CC2F888300C4B196841F001011960002009
|
S3150800873C88204FF000629A60704700BF00ED00E099
|
||||||
S3150800874C98601C68094921401960094959601968DB
|
S3150800874C10B504460E4B18784FF47A73B3FBF0F356
|
||||||
S3150800875C21F480211960D8604FF0006393605DF8AE
|
S3150800875C0C4A1068B0FBF3F000F01EFE68B90F2C3B
|
||||||
S3150800876C044B704700ED00E000380240FFFFF6FEB0
|
S3150800876C01D901200AE0002221464FF0FF3000F023
|
||||||
S3150800877C1030002410B504460E4B18784FF47A7353
|
S3150800877CE1FD054B1C60002000E0012010BD00BF88
|
||||||
S3150800878CB3FBF0F30C4A1068B0FBF3F000F0EAFD0B
|
S3150800878C300400202C0400203404002008B50320F3
|
||||||
S3150800879C68B90F2C01D901200AE0002221464FF0B6
|
S3150800879C00F0BEFD0020FFF7D3FF01F045FB0020DB
|
||||||
S315080087ACFF3000F0ADFD054B1C60002000E00120F9
|
S315080087AC08BD0000034A1168034B1B780B44136081
|
||||||
S315080087BC10BD00BF300400202C0400203404002017
|
S315080087BC704700BF7005002030040020014B186874
|
||||||
S315080087CC08B5032000F08AFD0020FFF7D3FF01F05F
|
S315080087CC704700BF7005002010B582B01B4B1A6CA1
|
||||||
S315080087DCF3FA002008BD0000034A1168034B1B7806
|
S315080087DC42F080521A641B6C03F080530193019B80
|
||||||
S315080087EC0B441360704700BF70050020300400204E
|
S315080087EC174A136843F480331360FFF7E7FF044610
|
||||||
S315080087FC014B1868704700BF7005002010B582B091
|
S315080087FC134B5B6813F4803F08D1FFF7DFFF001BB0
|
||||||
S3150800880C1B4B1A6C42F080521A641B6C03F0805393
|
S3150800880CB0F57A7FF4D9032002B010BD0C4A136870
|
||||||
S3150800881C0193019B174A136843F480331360FFF7DF
|
S3150800881C43F400331360FFF7D1FF0446084B5B683B
|
||||||
S3150800882CE7FF0446134B5B6813F4803F08D1FFF748
|
S3150800882C13F4003F07D1FFF7C9FF001BB0F57A7F99
|
||||||
S3150800883CDFFF001BB0F57A7FF4D9032002B010BD18
|
S3150800883CF4D90320E8E70020E6E700BF0038024039
|
||||||
S3150800884C0C4A136843F400331360FFF7D1FF044650
|
S3150800884C00700040002800F0FF8170B582B0044625
|
||||||
S3150800885C084B5B6813F4003F07D1FFF7C9FF001BF1
|
S3150800885C036813F0010F29D0A74B9B6803F00C0390
|
||||||
S3150800886CB0F57A7FF4D90320E8E70020E6E700BFE5
|
S3150800886C042B1AD0A44B9B6803F00C03082B0FD0CF
|
||||||
S3150800887C0038024000700040002800F0D98170B51D
|
S3150800887C6368B3F5803F40D0002B54D19E4B1A68E1
|
||||||
S3150800888C82B00446036813F0010F29D0A74B9B68E6
|
S3150800888C22F480321A601A6822F480221A6039E0BF
|
||||||
S3150800889C03F00C03042B1AD0A44B9B6803F00C03AF
|
S3150800889C994B5B6813F4800FEAD0974B1B6813F45B
|
||||||
S315080088AC082B0FD06368B3F5803F40D0002B54D10A
|
S315080088AC003F03D06368002B00F0D081236813F0D7
|
||||||
S315080088BC9E4B1A6822F480321A601A6822F48022B7
|
S315080088BC020F74D0904B9B6813F00C0F5ED08E4B46
|
||||||
S315080088CC1A6039E0994B5B6813F4800FEAD0974B22
|
S315080088CC9B6803F00C03082B53D0E368002B00F0CD
|
||||||
S315080088DC1B6813F4003F03D06368002B00F0AA81D1
|
S315080088DC8980894A136843F001031360FFF76EFF1A
|
||||||
S315080088EC236813F0020F74D0904B9B6813F00C0F8F
|
S315080088EC0546854B1B6813F0020F72D1FFF766FF1E
|
||||||
S315080088FC5ED08E4B9B6803F00C03082B53D0E368B1
|
S315080088FC401B0228F5D90320ADE17F4A136843F4DF
|
||||||
S3150800890C002B00F08980894A136843F00103136031
|
S3150800890C8033136063682BB3FFF758FF05467A4B21
|
||||||
S3150800891CFFF76EFF0546854B1B6813F0020F72D1E5
|
S3150800891C1B6813F4003FC9D1FFF750FF401B6428AE
|
||||||
S3150800892CFFF766FF401B0228F5D9032087E17F4A2B
|
S3150800892CF5D9032097E1B3F5A02F09D0724B1A6835
|
||||||
S3150800893C136843F48033136063682BB3FFF758FF4F
|
S3150800893C22F480321A601A6822F480221A60E1E75F
|
||||||
S3150800894C05467A4B1B6813F4003FC9D1FFF750FF55
|
S3150800894C6D4B1A6842F480221A601A6842F4803217
|
||||||
S3150800895C401B6428F5D9032071E1B3F5A02F09D083
|
S3150800895C1A60D7E7FFF732FF0546674B1B6813F417
|
||||||
S3150800896C724B1A6822F480321A601A6822F4802232
|
S3150800896C003FA3D0FFF72AFF401B6428F5D9032044
|
||||||
S3150800897C1A60E1E76D4B1A6842F480221A601A688D
|
S3150800897C71E1614B5B6813F4800FA6D15E4B1B68E3
|
||||||
S3150800898C42F480321A60D7E7FFF732FF0546674B89
|
S3150800898C13F0020F03D0E368012B40F061815A4AB9
|
||||||
S3150800899C1B6813F4003FA3D0FFF72AFF401B64287B
|
S3150800899C136823F0F803216943EAC10313602368BB
|
||||||
S315080089ACF5D903204BE1614B5B6813F4800FA6D114
|
S315080089AC13F0080F46D0636983B3534A536F43F0E9
|
||||||
S315080089BC5E4B1B6813F0020F03D0E368012B40F0E3
|
S315080089BC01035367FFF702FF05464F4B5B6F13F036
|
||||||
S315080089CC3B815A4A136823F0F803216943EAC10329
|
S315080089CC020F37D1FFF7FAFE401B0228F5D9032010
|
||||||
S315080089DC1360236813F0080F46D0636983B3534AB0
|
S315080089DC41E1494A136823F0F803216943EAC103C4
|
||||||
S315080089EC536F43F001035367FFF702FF05464F4BDE
|
S315080089EC1360DCE7444A136823F001031360FFF7AE
|
||||||
S315080089FC5B6F13F0020F37D1FFF7FAFE401B022804
|
S315080089FCE5FE0546404B1B6813F0020FCFD0FFF778
|
||||||
S31508008A0CF5D903201BE1494A136823F0F8032169B9
|
S31508008A0CDDFE401B0228F5D9032024E13A4A536FB0
|
||||||
S31508008A1C43EAC1031360DCE7444A136823F00103F5
|
S31508008A1C23F001035367FFF7D1FE0546364B5B6F10
|
||||||
S31508008A2C1360FFF7E5FE0546404B1B6813F0020F73
|
S31508008A2C13F0020F06D0FFF7C9FE401B0228F5D932
|
||||||
S31508008A3CCFD0FFF7DDFE401B0228F5D90320FEE058
|
S31508008A3C032010E1236813F0040F7DD02E4B1B6C1A
|
||||||
S31508008A4C3A4A536F23F001035367FFF7D1FE0546E5
|
S31508008A4C13F0805F1ED12C4B1A6C42F080521A64BC
|
||||||
S31508008A5C364B5B6F13F0020F06D0FFF7C9FE401BAF
|
S31508008A5C1B6C03F080530193019B0125274B1B6864
|
||||||
S31508008A6C0228F5D90320EAE0236813F0040F7DD019
|
S31508008A6C13F4807F10D0A368012B21D0002B37D1AB
|
||||||
S31508008A7C2E4B1B6C13F0805F1ED12C4B1A6C42F0DC
|
S31508008A7C214B1A6F22F001021A671A6F22F00402B0
|
||||||
S31508008A8C80521A641B6C03F080530193019B0125D9
|
S31508008A8C1A671AE00025E9E71C4A136843F4807351
|
||||||
S31508008A9C274B1B6813F4807F10D0A368012B21D0B9
|
S31508008A9C1360FFF793FE0646184B1B6813F4807F8A
|
||||||
S31508008AAC002B37D1214B1A6F22F001021A671A6F65
|
S31508008AACE1D1FFF78BFE801B6428F5D90320D2E0B1
|
||||||
S31508008ABC22F004021A671AE00025E9E71C4A136833
|
S31508008ABC114A136F43F001031367A36853B3FFF707
|
||||||
S31508008ACC43F480731360FFF793FE0646184B1B6836
|
S31508008ACC7DFE06460C4B1B6F13F0020F33D1FFF7D6
|
||||||
S31508008ADC13F4807FE1D1FFF78BFE801B6428F5D950
|
S31508008ADC75FE801B41F288339842F3D90320BAE01D
|
||||||
S31508008AEC0320ACE0114A136F43F001031367A36824
|
S31508008AEC052B0DD0044B1A6F22F001021A671A6F68
|
||||||
S31508008AFC53B3FFF77DFE06460C4B1B6F13F0020FA4
|
S31508008AFC22F004021A67E0E70038024000700040D2
|
||||||
S31508008B0C33D1FFF775FE801B41F288339842F3D9AF
|
S31508008B0C5C4B1A6F42F004021A671A6F42F00102A4
|
||||||
S31508008B1C032094E0052B0DD0044B1A6F22F00102AA
|
S31508008B1C1A67D2E7FFF752FE0646564B1B6F13F041
|
||||||
S31508008B2C1A671A6F22F004021A67E0E70038024047
|
S31508008B2C020F08D0FFF74AFE801B41F288339842A1
|
||||||
S31508008B3C00700040444B1A6F42F004021A671A6F11
|
S31508008B3CF3D903208FE0FDB9A369002B00F08A80D6
|
||||||
S31508008B4C42F001021A67D2E7FFF752FE06463E4B81
|
S31508008B4C4C4A926802F00C02082A58D0022B19D00B
|
||||||
S31508008B5C1B6F13F0020F08D0FFF74AFE801B41F279
|
S31508008B5C484A136823F080731360FFF72FFE044608
|
||||||
S31508008B6C88339842F3D9032069E0F5B9A369002B39
|
S31508008B6C444B1B6813F0007F47D0FFF727FE001B0A
|
||||||
S31508008B7C64D0354A926802F00C02082A61D0022B9E
|
S31508008B7C0228F5D903206EE03E4A136C23F0805385
|
||||||
S31508008B8C19D0314A136823F080731360FFF730FE4F
|
S31508008B8C1364D9E73B4A136823F080731360FFF725
|
||||||
S31508008B9C04462D4B1B6813F0007F47D0FFF728FEC1
|
S31508008B9C15FE0546374B1B6813F0007F06D0FFF70A
|
||||||
S31508008BAC001B0228F5D9032049E0274A136C23F049
|
S31508008BAC0DFE401B0228F5D9032054E0E369226A1E
|
||||||
S31508008BBC80531364DAE7244A136823F0807313602E
|
S31508008BBC1343626A43EA8213A26A5208013A43EAE9
|
||||||
S31508008BCCFFF716FE0546204B1B6813F0007F06D0F0
|
S31508008BCC0243E26A43EA026343F00053294A5360BC
|
||||||
S31508008BDCFFF70EFE401B0228F5D903202FE0E369A8
|
S31508008BDC136843F080731360FFF7F0FD0446254BCA
|
||||||
S31508008BEC226A1343626A43EA8213A26A5208013A5A
|
S31508008BEC1B6813F0007F06D1FFF7E8FD001B02286F
|
||||||
S31508008BFC43EA0243E26A43EA026343F00053124A29
|
S31508008BFCF5D903202FE000202DE000202BE01D4A9C
|
||||||
S31508008C0C5360136843F080731360FFF7F1FD044655
|
S31508008C0C5268012B29D002F48003E1698B4226D1E4
|
||||||
S31508008C1C0D4B1B6813F0007F06D1FFF7E9FD001B0F
|
S31508008C1C02F03F03216A8B4223D1616A47F6C0737F
|
||||||
S31508008C2C0228F5D903200AE0002008E0002006E017
|
S31508008C2C1340B3EB811F1ED102F44031A36A5B08D3
|
||||||
S31508008C3C01207047012002E0012000E0002002B06C
|
S31508008C3C013BB1EB034F18D102F07062E36AB2EB59
|
||||||
S31508008C4C70BD0120FBE700BF00380240314B9B6822
|
S31508008C4C036F14D1002006E001207047012002E0D2
|
||||||
S31508008C5C03F00C03042B58D0082B58D170B52D4BA8
|
S31508008C5C012000E0002002B070BD0120FBE70120D6
|
||||||
S31508008C6C5A6802F03F025B6813F4800F2AD0294B2E
|
S31508008C6CF9E70120F7E70120F5E70120F3E70120F2
|
||||||
S31508008C7C5868C0F388100546002643011B1A66EB94
|
S31508008C7CF1E700BF00380240314B9B6803F00C0348
|
||||||
S31508008C8C0604A10141EA93619801C01A61EB04013B
|
S31508008C8C042B58D0082B58D170B52D4B5A6802F0C6
|
||||||
S31508008C9CCB0043EA5073C4001946601946EB010130
|
S31508008C9C3F025B6813F4800F2AD0294B5868C0F33F
|
||||||
S31508008CAC4B0243EAD0534402204619463346FFF793
|
S31508008CAC88100546002643011B1A66EB0604A1012B
|
||||||
S31508008CBCA7FA184B5B68C3F3014301335B00B0FB9F
|
S31508008CBC41EA93619801C01A61EB0401CB0043EABF
|
||||||
S31508008CCCF3F070BD134B5868C0F3881005460026A0
|
S31508008CCC5073C4001946601946EB01014B0243EA7E
|
||||||
S31508008CDC43011B1A66EB0604A10141EA936198014C
|
S31508008CDCD0534402204619463346FFF791FA184BEF
|
||||||
S31508008CECC01A61EB0401CB0043EA5073C400194661
|
S31508008CEC5B68C3F3014301335B00B0FBF3F070BD63
|
||||||
S31508008CFC601946EB01018B0243EA90538402204625
|
S31508008CFC134B5868C0F388100546002643011B1A07
|
||||||
S31508008D0C19463346FFF77CFAD3E7034870470348FE
|
S31508008D0C66EB0604A10141EA93619801C01A61EB6E
|
||||||
S31508008D1C704700BF0038024000127A000024F400A5
|
S31508008D1C0401CB0043EA5073C4001946601946EBAC
|
||||||
S31508008D2C002800F09F8070B50446524B1B6803F070
|
S31508008D2C01018B0243EA90538402204619463346C6
|
||||||
S31508008D3C0F038B420BD24F4A136823F00F030B43D6
|
S31508008D3CFFF766FAD3E7034870470348704700BF46
|
||||||
S31508008D4C1360136803F00F038B4240F08D80236881
|
S31508008D4C0038024000127A000024F400002800F0D3
|
||||||
S31508008D5C13F0020F17D013F0040F04D0464A936889
|
S31508008D5CA08070B50446534B1B6803F00F038B4277
|
||||||
S31508008D6C43F4E0539360236813F0080F04D0424A87
|
S31508008D6C0BD2504A136823F00F030B431360136896
|
||||||
S31508008D7C936843F4604393603F4A936823F0F00387
|
S31508008D7C03F00F038B4240F08E80236813F0020F2A
|
||||||
S31508008D8CA068034393600D46236813F0010F31D096
|
S31508008D8C17D013F0040F04D0474A936843F4E05302
|
||||||
S31508008D9C6368012B20D0022B25D0374A126812F0B3
|
S31508008D9C9360236813F0080F04D0434A936843F48E
|
||||||
S31508008DAC020F63D034498A6822F0030213438B609E
|
S31508008DAC60439360404A936823F0F003A06803433A
|
||||||
S31508008DBCFFF71EFD0646304B9B6803F00C036268F2
|
S31508008DBC93600D46236813F0010F31D06368012BBD
|
||||||
S31508008DCCB3EB820F16D0FFF713FD801B41F28833E5
|
S31508008DCC20D0022B25D0384A126812F0020F64D034
|
||||||
S31508008DDC9842F0D9032044E0274A126812F4003F5F
|
S31508008DDC35498A6822F0030213438B60FFF7EEFCD1
|
||||||
S31508008DECE0D101203DE0244A126812F0007FD9D167
|
S31508008DEC0646314B9B6803F00C036268B3EB820FA3
|
||||||
S31508008DFC012036E01F4B1B6803F00F03AB420AD960
|
S31508008DFC16D0FFF7E3FC801B41F288339842F0D972
|
||||||
S31508008E0C1C4A136823F00F032B431360136803F0F3
|
S31508008E0C032045E0284A126812F4003FE0D10120FD
|
||||||
S31508008E1C0F03AB422CD1236813F0040F06D0164A65
|
S31508008E1C3EE0254A126812F0007FD9D1012037E0CE
|
||||||
S31508008E2C936823F4E053E1680B439360236813F0CB
|
S31508008E2C204B1B6803F00F03AB420AD91D4A136883
|
||||||
S31508008E3C080F07D0104A936823F46043216943EA64
|
S31508008E3C23F00F032B431360136803F00F03AB42A5
|
||||||
S31508008E4CC1039360FFF702FF0B4B9B68C3F3031335
|
S31508008E4C2DD1236813F0040F06D0174A936823F420
|
||||||
S31508008E5C0A4AD35CD8400A4B18600020FFF78AFCF4
|
S31508008E5CE053E1680B439360236813F0080F07D0BF
|
||||||
S31508008E6C002070BD012070470120FAE70120F8E7C1
|
S31508008E6C114A936823F46043216943EAC10393606A
|
||||||
S31508008E7C0120F6E7003C02400038024074A10008C5
|
S31508008E7CFFF702FF0C4B9B68C3F303130B4AD35C37
|
||||||
S31508008E8C2C040020014B1868704700BF2C040020E6
|
S31508008E8CD8400B4B18600B4B1868FFF759FC0020A1
|
||||||
S31508008E9C08B5FFF7F7FF044B9B68C3F38223034A15
|
S31508008E9C70BD012070470120FAE70120F8E7012090
|
||||||
S31508008EACD35CD84008BD00BF0038024084A1000836
|
S31508008EACF6E700BF003C024000380240E4A1000887
|
||||||
S31508008EBC08B5FFF7E7FF044B9B68C3F34233034A35
|
S31508008EBC2C04002034040020014B1868704700BFAE
|
||||||
S31508008ECCD35CD84008BD00BF0038024084A1000816
|
S31508008ECC2C04002008B5FFF7F7FF044B9B68C3F387
|
||||||
S31508008EDC7047002800F0A18038B5044690F8203079
|
S31508008EDC8223034AD35CD84008BD00BF0038024041
|
||||||
S31508008EECD3B12268136823F002031360FFF780FCE2
|
S31508008EECF4A1000808B5FFF7E7FF044B9B68C3F32A
|
||||||
S31508008EFC054623685A6812F0020F10D0FFF778FC63
|
S31508008EFC4233034AD35CD84008BD00BF0038024051
|
||||||
S31508008F0C401B0A28F5D9636A43F4003363620523C8
|
S31508008F0CF4A100087047002800F0A18038B5044683
|
||||||
S31508008F1C84F82030012038BDFFF7DAFFE1E71A683C
|
S31508008F1C90F82030D3B12268136823F0020313604B
|
||||||
S31508008F2C42F001021A60FFF763FC054623685A688B
|
S31508008F2CFFF74CFC054623685A6812F0020F10D05E
|
||||||
S31508008F3C12F0010F0DD1FFF75BFC401B0A28F5D97F
|
S31508008F3CFFF744FC401B0A28F5D9636A43F400334F
|
||||||
S31508008F4C636A43F400336362052384F820300120F6
|
S31508008F4C6362052384F82030012038BDFFF7DAFF69
|
||||||
S31508008F5CE1E7227E012A3DD01A6822F080021A60C7
|
S31508008F5CE1E71A6842F001021A60FFF72FFC054692
|
||||||
S31508008F6C637E012B3BD02268136823F04003136001
|
S31508008F6C23685A6812F0010F0DD1FFF727FC401B36
|
||||||
S31508008F7CA37E012B39D02268136823F020031360D3
|
S31508008F7C0A28F5D9636A43F400336362052384F837
|
||||||
S31508008F8CE37E012B37D02268136843F01003136075
|
S31508008F8C20300120E1E7227E012A3DD01A6822F022
|
||||||
S31508008F9C237F012B35D02268136823F0080313604E
|
S31508008F9C80021A60637E012B3BD02268136823F08B
|
||||||
S31508008FAC637F012B33D02268136823F00403136004
|
S31508008FAC40031360A37E012B39D02268136823F083
|
||||||
S31508008FBCA368E26813432269134362691343626820
|
S31508008FBC20031360E37E012B37D02268136843F035
|
||||||
S31508008FCC013A21681343CB6100206062012384F8BF
|
S31508008FCC10031360237F012B35D02268136823F016
|
||||||
S31508008FDC2030A0E71A6842F080021A60C0E72268BF
|
S31508008FDC08031360637F012B33D02268136823F0D0
|
||||||
S31508008FEC136843F040031360C2E72268136843F022
|
S31508008FEC04031360A368E268134322691343626996
|
||||||
S31508008FFC20031360C4E72268136823F01003136078
|
S31508008FFC13436268013A21681343CB61002060620F
|
||||||
S3150800900CC6E72268136843F008031360C8E72268AA
|
S3150800900C012384F82030A0E71A6842F080021A601F
|
||||||
S3150800901C136843F004031360CAE701207047000085
|
S3150800901CC0E72268136843F040031360C2E722686E
|
||||||
S3150800902C90F82030013BDBB2012B05D9436A43F497
|
S3150800902C136843F020031360C4E72268136823F01F
|
||||||
S3150800903C802343620120704770B4434BD3F8002257
|
S3150800903C10031360C6E72268136843F0080313602D
|
||||||
S3150800904C42F00102C3F80022D3F8002222F47C5223
|
S3150800904CC8E72268136843F004031360CAE70120D3
|
||||||
S3150800905CC3F80022D3F80022486A42EA0022C3F871
|
S3150800905C7047000090F82030013BDBB2012B05D994
|
||||||
S3150800906C00224A6902F01F02012000FA02F2D3F824
|
S3150800906C436A43F4802343620120704770B4434B30
|
||||||
S3150800907C1C42D0430440C3F81C42CB69B3B9324BEB
|
S3150800907CD3F8002242F00102C3F80022D3F80022EA
|
||||||
S3150800908CD3F80C420440C3F80C42CE688D884C6960
|
S3150800908C22F47C52C3F80022D3F80022486A42EA3A
|
||||||
S3150800909C45EA0645483443F834508E680C884D69C1
|
S3150800909C0022C3F800224A6902F01F02012000FAD6
|
||||||
S315080090AC44EA0644483503EBC5035C60CB69012BDF
|
S315080090AC02F2D3F81C42D0430440C3F81C42CB69E5
|
||||||
S315080090BC1DD08B69002B32D1234CD4F804320340D3
|
S315080090BCB3B9324BD3F80C420440C3F80C42CE6811
|
||||||
S315080090CCC4F804320B698BBB1F4BD3F814422040EF
|
S315080090CC8D884C6945EA0645483443F834508E6811
|
||||||
S315080090DCC3F814020B6A012B2FD01B4AD2F80032A4
|
S315080090DC0C884D6944EA0644483503EBC5035C60C5
|
||||||
S315080090EC23F00103C2F80032002070BC7047164BFF
|
S315080090ECCB69012B1DD08B69002B32D1234CD4F8BC
|
||||||
S315080090FCD3F80C421443C3F80C420E688D884C699D
|
S315080090FC04320340C4F804320B698BBB1F4BD3F8FC
|
||||||
S3150800910C45EA0645483443F834508E688C894D69CF
|
S3150800910C14422040C3F814020B6A012B2FD01B4AB9
|
||||||
S3150800911C44EA0644483503EBC5035C60C9E70A4CC8
|
S3150800911CD2F8003223F00103C2F80032002070BCEA
|
||||||
S3150800912CD4F804321343C4F80432CBE70648D0F813
|
S3150800912C7047164BD3F80C421443C3F80C420E681E
|
||||||
S3150800913C14321343C0F81432CCE70349D1F81C3265
|
S3150800913C8D884C6945EA0645483443F834508E68A0
|
||||||
S3150800914C1A43C1F81C22C8E70064004038B590F8E9
|
S3150800914C8C894D6944EA0644483503EBC5035C60D3
|
||||||
S3150800915C2030DBB2012B05D0436A43F4002343626B
|
S3150800915CC9E70A4CD4F804321343C4F80432CBE7F3
|
||||||
S3150800916C012038BD0446022380F8203002681368B3
|
S3150800916C0648D0F814321343C0F81432CCE7034936
|
||||||
S3150800917C23F001031360FFF73BFB054623685B6886
|
S3150800917CD1F81C321A43C1F81C22C8E70064004017
|
||||||
S3150800918C13F0010F0DD0FFF733FB401B0A28F5D956
|
S3150800918C38B590F82030DBB2012B05D0436A43F48E
|
||||||
S3150800919C636A43F400336362052384F820300120A4
|
S3150800919C00234362012038BD0446022380F82030A0
|
||||||
S315080091ACDFE700206062DCE730B490F82040013C31
|
S315080091AC0268136823F001031360FFF707FB0546F3
|
||||||
S315080091BCE4B2012C00F28A8051B90468E46814F010
|
S315080091BC23685B6813F0010F0DD0FFF7FFFA401B0D
|
||||||
S315080091CC030F10D1436A43F400134362012082E073
|
S315080091CC0A28F5D9636A43F400336362052384F8E5
|
||||||
S315080091DC0468246914F0030F05D1436A43F4001399
|
S315080091DC20300120DFE700206062DCE730B490F82D
|
||||||
S315080091EC4362012077E0056801F11B0424012C5920
|
S315080091EC2040013CE4B2012C00F28A8051B9046893
|
||||||
S315080091FC04F004049460002C5AD1056801F11B0490
|
S315080091FCE46814F0030F10D1436A43F40013436276
|
||||||
S3150800920C24012C59640D1460056801F11B04240112
|
S3150800920C012082E00468246914F0030F05D1436A2F
|
||||||
S3150800921C2D59C5F34005D560056825446D6805F0DC
|
S3150800921C43F400134362012077E0056801F11B044F
|
||||||
S3150800922C0F051561056825446D68C5F30725956115
|
S3150800922C24012C5904F004049460002C5AD10568C6
|
||||||
S3150800923C05682C446468240C546104680A011444B7
|
S3150800923C01F11B0424012C59640D1460056801F115
|
||||||
S3150800924CD4F8B8411C7004681444D4F8B841C4F373
|
S3150800924C1B0424012D5905F00205D5600568254433
|
||||||
S3150800925C07245C7004681444D4F8B841C4F3074472
|
S3150800925C6D6805F00F051561056825446D68C5F33D
|
||||||
S3150800926C9C7004681444D4F8B841240EDC70046865
|
S3150800926C0725956105682C446468240C54610468C8
|
||||||
S3150800927C1444D4F8BC411C7104681444D4F8BC4199
|
S3150800927C0A011444D4F8B8411C7004681444D4F890
|
||||||
S3150800928CC4F307245C7104681444D4F8BC41C4F3D1
|
S3150800928CB841C4F307245C7004681444D4F8B84194
|
||||||
S3150800929C07449C7104682244D2F8BC21120EDA7178
|
S3150800929CC4F307449C7004681444D4F8B841240EEB
|
||||||
S315080092AC71B90268D36843F02003D360002012E03A
|
S315080092ACDC7004681444D4F8BC411C71046814447A
|
||||||
S315080092BC056801F11B0424012C59E4085460A3E742
|
S315080092BCD4F8BC41C4F307245C7104681444D4F88C
|
||||||
S315080092CC0268136943F020031361EFE7436A43F41A
|
S315080092CCBC41C4F307449C7104682244D2F8BC21FF
|
||||||
S315080092DC80234362012030BC704700000649CB68E6
|
S315080092DC120EDA7171B90268D36843F02003D360B1
|
||||||
S315080092EC23F4E0631B041B0C000200F4E060034348
|
S315080092EC002012E0056801F11B0424012C59E4083E
|
||||||
S315080092FC024A1A43CA60704700ED00E00000FA05FE
|
S315080092FC5460A3E70268136943F020031361EFE790
|
||||||
S3150800930C30B4154BDB68C3F30223C3F10704042CF2
|
S3150800930C436A43F480234362012030BC7047000053
|
||||||
S3150800931C28BF04241D1D062D01D9033B00E000239C
|
S3150800931C0649CB6823F4E0631B041B0C000200F41B
|
||||||
S3150800932C4FF0FF3505FA04F421EA0401994005FAD1
|
S3150800932CE0600343024A1A43CA60704700ED00E046
|
||||||
S3150800933C03F322EA03031943002805DB0901C9B222
|
S3150800933C0000FA0530B4154BDB68C3F30223C3F1FE
|
||||||
S3150800934C064B195430BC704700F00F000901C9B21E
|
S3150800934C0704042C28BF04241D1D062D01D9033B34
|
||||||
S3150800935C034B1954F6E700BF00ED00E000E400E00B
|
S3150800935C00E000234FF0FF3505FA04F421EA040176
|
||||||
S3150800936C14ED00E00138B0F1807F0AD2064B586044
|
S3150800936C994005FA03F322EA03031943002805DB9F
|
||||||
S3150800937C064AF02182F823100020986007221A600A
|
S3150800937C0901C9B2064B195430BC704700F00F00EE
|
||||||
S3150800938C70470120704700BF10E000E000ED00E0D8
|
S3150800938C0901C9B2034B1954F6E700BF00ED00E01A
|
||||||
S3150800939C042805D0054A136823F0040313607047A4
|
S3150800939C00E400E014ED00E00138B0F1807F0AD259
|
||||||
S315080093AC024A136843F004031360704710E000E0A8
|
S315080093AC064B5860064AF02182F823100020986074
|
||||||
S315080093BC704708B5FFF7FCFF08BD000000230F2B0C
|
S315080093BC07221A6070470120704700BF10E000E0D2
|
||||||
S315080093CC00F2E280F0B482B039E0092200E0002213
|
S315080093CC00ED00E0042805D0054A136823F00403D1
|
||||||
S315080093DCB2403A4302346D4E46F824206C4A14685F
|
S315080093DC13607047024A136843F00403136070471E
|
||||||
S315080093ECEA4302EA04064F6817F4803F01D045EABF
|
S315080093EC10E000E0704708B5FFF7FCFF08BD000069
|
||||||
S315080093FC0406674C2660646802EA04064F6817F48C
|
S315080093FC00230F2B00F2E180F0B583B039E0092287
|
||||||
S3150800940C003F01D045EA0406614C6660A46802EA8E
|
S3150800940C00E00022B2403A4302346C4E46F824205F
|
||||||
S3150800941C04064F6817F4801F01D045EA04065C4C15
|
S3150800941C6B4A1468EA4302EA04064F6817F4803F5D
|
||||||
S3150800942CA660E46822404E6816F4001F01D045EA8F
|
S3150800942C01D045EA0406664C2660646802EA04061E
|
||||||
S3150800943C0402574CE26001330F2B00F2A280012282
|
S3150800943C4F6817F4003F01D045EA0406604C666095
|
||||||
S3150800944C9A400C6804EA0205AA42F4D14C68122C1C
|
S3150800944CA46802EA04064F6817F4801F01D045EA9F
|
||||||
S3150800945C18BF022C10D1DE08083650F826C003F0C7
|
S3150800945C04065B4CA660E46822404E6816F4001FAE
|
||||||
S3150800946C0704A7000F24BC402CEA040C0C69BC406A
|
S3150800946C01D045EA0402564CE26001330F2B00F298
|
||||||
S3150800947C44EA0C0440F8264004685F000326BE4004
|
S3150800947CA28001229A400C6804EA0205AA42F4D199
|
||||||
S3150800948CF64306EA040C4C6804F00304BC4044EAB0
|
S3150800948C4C68661E112C18BF012E01D9122C12D14C
|
||||||
S3150800949C0C0404604C6804F1FF3C112C18BFBCF199
|
S3150800949C86685F000324BC4026EA0406CC68BC40F8
|
||||||
S315080094AC010F01D9122C11D1846806EA040CCC6878
|
S315080094AC34438460466826EA02064C68C4F3001204
|
||||||
S315080094BCBC4044EA0C048460446824EA020C4C68F8
|
S315080094BC9A4032434260C2685F000326BE40F643B8
|
||||||
S315080094CCC4F300129A4042EA0C024260C268164083
|
S315080094CC32408C68BC401443C4604A68122A18BFE0
|
||||||
S315080094DC8A68BA403243C2604A6812F0805FAAD0E2
|
S315080094DC022A13D1DC08083450F824E003F00702FA
|
||||||
S315080094EC2C4A546C44F480445464526C02F4804202
|
S315080094EC4FEA820C0F2202FA0CF22EEA020E0A69D5
|
||||||
S315080094FC0192019A9C08A61C244A52F8267003F07D
|
S315080094FC02FA0CF242EA0E0240F8242002681640E0
|
||||||
S3150800950C030296000F22B24027EA0207224A90422B
|
S3150800950C4A6802F00302BA40324302604A6812F013
|
||||||
S3150800951C3FF45DAF02F58062904222D002F580627C
|
S3150800951C805FAAD02B4A546C44F480445464526C31
|
||||||
S3150800952C904220D002F5806290421ED002F58062ED
|
S3150800952C02F480420192019A9C08A61C234A52F81E
|
||||||
S3150800953C90421CD002F5806290421AD002F58062E5
|
S3150800953C267003F0030296000F22B24027EA0207B0
|
||||||
S3150800954C904218D002F58062904216D002F58062DD
|
S3150800954C214A90423FF45DAF02F58062904222D0E8
|
||||||
S3150800955C904214D002F5806290423FF436AF0A224C
|
S3150800955C02F58062904220D002F5806290421ED0BD
|
||||||
S3150800956C36E7012234E7022232E7032230E70422E7
|
S3150800956C02F5806290421CD002F5806290421AD0B5
|
||||||
S3150800957C2EE705222CE706222AE7072228E70822E7
|
S3150800957C02F58062904218D002F58062904216D0AD
|
||||||
S3150800958C26E702B0F0BC7047704700BF00380140B0
|
S3150800958C02F58062904214D002F5806290423FF454
|
||||||
S3150800959C003C014000380240000002400AB18161DB
|
S3150800959C36AF0A2236E7012234E7022232E70322E3
|
||||||
S315080095AC70470904816170477047000010B504467E
|
S315080095AC30E704222EE705222CE706222AE70722B3
|
||||||
S315080095BC83680269134342691343C26913430168FA
|
S315080095BC28E7082226E703B0F0BD704700380140BB
|
||||||
S315080095CC08689D4A024013430B602268536823F4CB
|
S315080095CC003C014000380240000002400AB18161AB
|
||||||
S315080095DC4053E1680B435360A269236A1A43216816
|
S315080095DC70470904816170477047000010B504464E
|
||||||
S315080095EC8B6823F4306313438B602368934A934246
|
S315080095EC83680269134342691343C26913430168CA
|
||||||
S315080095FC19D0934A934229D0924A93423ED0924A22
|
S315080095FC08689D4A024013430B602268536823F49B
|
||||||
S3150800960C934264D0914A934276D0914A934200F0A1
|
S3150800960C4053E1680B435360A269236A1A432168E5
|
||||||
S3150800961C8B80904A934200F09F808F4A934200F0C9
|
S3150800961C8B6823F4306313438B602368934A934215
|
||||||
S3150800962CB38010233EE08D4BD3F8903003F0030340
|
S3150800962C19D0934A934229D0924A93423ED0924AF1
|
||||||
S3150800963C032B09D8DFE803F00204C006012331E046
|
S3150800963C934264D0914A934276D0914A934200F071
|
||||||
S3150800964C04232FE008232DE010232BE0834BD3F8BB
|
S3150800964C8B80904A934200F09F808F4A934200F099
|
||||||
S3150800965C903003F00C030C2B0ED8DFE803F0070D43
|
S3150800965CB38010233EE08D4BD3F8903003F0030310
|
||||||
S3150800966C0D0D090D0D0DAF0D0D0D0B00002319E099
|
S3150800966C032B09D8DFE803F00204C006012331E016
|
||||||
S3150800967C042317E0082315E0102313E0774BD3F8DF
|
S3150800967C04232FE008232DE010232BE0834BD3F88B
|
||||||
S3150800968C903003F03003102B00F09A8006D9202B6B
|
S3150800968C903003F00C030C2B0ED8DFE803F0070D13
|
||||||
S3150800969C00F09880302B18D1082303E00BB900236F
|
S3150800969C0D0D090D0D0DAF0D0D0D0B00002319E069
|
||||||
S315080096AC00E01023E269B2F5004F00F0A180082B08
|
S315080096AC042317E0082315E0102313E0774BD3F8AF
|
||||||
S315080096BC00F23C81DFE813F0FF0014011E013A01A9
|
S315080096BC903003F03003102B00F09A8006D9202B3B
|
||||||
S315080096CC27013A013A013A0131011023EAE7634BC3
|
S315080096CC00F09880302B18D1082303E00BB900233F
|
||||||
S315080096DCD3F8903003F0C003402B75D005D9802BF6
|
S315080096DC00E01023E269B2F5004F00F0A180082BD8
|
||||||
S315080096EC74D0C02B06D10823DCE70BB90023D9E7C5
|
S315080096EC00F23C81DFE813F0FF0014011E013A0179
|
||||||
S315080096FC1023D7E71023D5E7584BD3F8903003F44B
|
S315080096FC27013A013A013A0131011023EAE7634B93
|
||||||
S3150800970C4073B3F5807F63D007D9B3F5007F61D07A
|
S3150800970CD3F8903003F0C003402B75D005D9802BC5
|
||||||
S3150800971CB3F5407F06D10823C4E70BB90023C1E78C
|
S3150800971C74D0C02B06D10823DCE70BB90023D9E794
|
||||||
S3150800972C1023BFE71023BDE74C4BD3F8903003F456
|
S3150800972C1023D7E71023D5E7584BD3F8903003F41A
|
||||||
S3150800973C4063B3F5806F4FD007D9B3F5006F4DD0A2
|
S3150800973C4073B3F5807F63D007D9B3F5007F61D04A
|
||||||
S3150800974CB3F5406F06D10823ACE70BB90123A9E79B
|
S3150800974CB3F5407F06D10823C4E70BB90023C1E75C
|
||||||
S3150800975C1023A7E71023A5E7404BD3F8903003F462
|
S3150800975C1023BFE71023BDE74C4BD3F8903003F426
|
||||||
S3150800976C4053B3F5805F3BD007D9B3F5005F39D0CA
|
S3150800976C4063B3F5806F4FD007D9B3F5006F4DD072
|
||||||
S3150800977CB3F5405F06D1082394E70BB9002391E7AC
|
S3150800977CB3F5406F06D10823ACE70BB90123A9E76B
|
||||||
S3150800978C10238FE710238DE7344BD3F8903003F46E
|
S3150800978C1023A7E71023A5E7404BD3F8903003F432
|
||||||
S3150800979C4043B3F5804F27D007D9B3F5004F25D0F2
|
S3150800979C4053B3F5805F3BD007D9B3F5005F39D09A
|
||||||
S315080097ACB3F5404F06D108237CE70BB9002379E7BC
|
S315080097ACB3F5405F06D1082394E70BB9002391E77C
|
||||||
S315080097BC102377E7102375E7022373E7022371E773
|
S315080097BC10238FE710238DE7344BD3F8903003F43E
|
||||||
S315080097CC04236FE702236DE704236BE7022369E79B
|
S315080097CC4043B3F5804F27D007D9B3F5004F25D0C2
|
||||||
S315080097DC042367E7022365E7042363E7022361E7AB
|
S315080097DCB3F5404F06D108237CE70BB9002379E78C
|
||||||
S315080097EC04235FE702235DE704235BE7022359E7BB
|
S315080097EC102377E7102375E7022373E7022371E743
|
||||||
S315080097FC082B5DD8DFE803F005343F5C485C5C5CFD
|
S315080097FC04236FE702236DE704236BE7022369E76B
|
||||||
S3150800980C5300FFF745FB6268530803EB4003B3FBB1
|
S3150800980C042367E7022365E7042363E7022361E77A
|
||||||
S3150800981CF2F39BB20020A3F110014FF6EF729142BE
|
S3150800981C04235FE702235DE704235BE7022359E78A
|
||||||
S3150800982C00F287809AB222F00F02C3F34203134365
|
S3150800982C082B5DD8DFE803F005343F5C485C5C5CCC
|
||||||
S3150800983C2268D36050E000BFF369FFEF00100140C7
|
S3150800983C5300FFF747FB6268530803EB4003B3FB7F
|
||||||
S3150800984C0044004000480040004C004000500040D6
|
S3150800984CF2F39BB20020A3F110014FF6EF7291428E
|
||||||
S3150800985C0014014000780040007C004000380240AB
|
S3150800985C00F287809AB222F00F02C3F34203134335
|
||||||
S3150800986CFFF726FB6268530803EB4003B3FBF2F3DE
|
S3150800986C2268D36050E000BFF369FFEF0010014097
|
||||||
S3150800987C9BB20020CFE76268304B03EB5203B3FB75
|
S3150800987C0044004000480040004C004000500040A6
|
||||||
S3150800988CF2F39BB20020C6E7FFF7E0F962685308CB
|
S3150800988C0014014000780040007C0040003802407B
|
||||||
S3150800989C03EB4003B3FBF2F39BB20020BBE7626811
|
S3150800989CFFF728FB6268530803EB4003B3FBF2F3AC
|
||||||
S315080098AC530803F58033B3FBF2F39BB20020B2E7FF
|
S315080098AC9BB20020CFE76268304B03EB5203B3FB45
|
||||||
S315080098BC01200023AFE7FFF7EBFA626800EB5203CF
|
S315080098BCF2F39BB20020C6E7FFF7DEF9626853089D
|
||||||
S315080098CCB3FBF2F39BB20020A3F110014FF6EF7233
|
S315080098CC03EB4003B3FBF2F39BB20020BBE76268E1
|
||||||
S315080098DC914230D82268D36000232366636610BD94
|
S315080098DC530803F58033B3FBF2F39BB20020B2E7CF
|
||||||
S315080098ECFFF7E6FA626800EB5203B3FBF2F39BB29E
|
S315080098EC01200023AFE7FFF7EDFA626800EB52039D
|
||||||
S315080098FC0020E9E76268124B03EB5203B3FBF2F361
|
S315080098FCB3FBF2F39BB20020A3F110014FF6EF7203
|
||||||
S3150800990C9BB20020E0E7FFF7A1F9626800EB52036F
|
S3150800990C914230D82268D36000232366636610BD63
|
||||||
S3150800991CB3FBF2F39BB20020D6E76268530803F553
|
S3150800991CFFF7E8FA626800EB5203B3FBF2F39BB26B
|
||||||
S3150800992C0043B3FBF2F39BB20020CDE701200023E2
|
S3150800992C0020E9E76268124B03EB5203B3FBF2F330
|
||||||
S3150800993CCAE70120D0E70120CEE700BF0048E801BE
|
S3150800993C9BB20020E0E7FFF79FF9626800EB520341
|
||||||
S3150800994C0024F400436A13F0010F06D0026853682A
|
S3150800994CB3FBF2F39BB20020D6E76268530803F523
|
||||||
S3150800995C23F40033816A0B435360436A13F0020FF6
|
S3150800995C0043B3FBF2F39BB20020CDE701200023B2
|
||||||
S3150800996C06D00268536823F48033C16A0B435360EC
|
S3150800996CCAE70120D0E70120CEE700BF0048E8018E
|
||||||
S3150800997C436A13F0040F06D00268536823F4802355
|
S3150800997C0024F400436A13F0010F06D002685368FA
|
||||||
S3150800998C016B0B435360436A13F0080F06D0026849
|
S3150800998C23F40033816A0B435360436A13F0020FC6
|
||||||
S3150800999C536823F40043416B0B435360436A13F03B
|
S3150800999C06D00268536823F48033C16A0B435360BC
|
||||||
S315080099AC100F06D00268936823F48053816B0B431F
|
S315080099AC436A13F0040F06D00268536823F4802325
|
||||||
S315080099BC9360436A13F0200F06D00268936823F469
|
S315080099BC016B0B435360436A13F0080F06D0026819
|
||||||
S315080099CC0053C16B0B439360436A13F0400F0AD0E4
|
S315080099CC536823F40043416B0B435360436A13F00B
|
||||||
S315080099DC0268536823F48013016C0B435360036CC1
|
S315080099DC100F06D00268936823F48053816B0B43EF
|
||||||
S315080099ECB3F5801F0BD0436A13F0800F06D00268BC
|
S315080099EC9360436A13F0200F06D00268936823F439
|
||||||
S315080099FC536823F40023816C0B4353607047026849
|
S315080099FC0053C16B0B439360436A13F0400F0AD0B4
|
||||||
S31508009A0C536823F4C003416C0B435360EBE72DE911
|
S31508009A0C0268536823F48013016C0B435360036C90
|
||||||
S31508009A1CF04105460F4616469846069C2B68DB69A8
|
S31508009A1CB3F5801F0BD0436A13F0800F06D002688B
|
||||||
S31508009A2C37EA03030CBF01230023B3421CD1B4F15C
|
S31508009A2C536823F40023816C0B4353607047026818
|
||||||
S31508009A3CFF3FF3D0FEF7DCFEA0EB0800A04201D8EE
|
S31508009A3C536823F4C003416C0B435360EBE72DE9E1
|
||||||
S31508009A4C002CEBD12A68136823F4D07313602A68A8
|
S31508009A4CF04104460F4616469846069D2368DB6980
|
||||||
S31508009A5C936823F00103936020236B67AB6700239D
|
S31508009A5C37EA03030CBF01230023B3423AD1B5F10D
|
||||||
S31508009A6C85F87030032000E00020BDE8F0812DE970
|
S31508009A6CFF3FF3D0FEF7AAFEA0EB0800A8421FD8CA
|
||||||
S31508009A7CF04383B01E46836F202B7ED104460D46D9
|
S31508009A7CF5B123681A6812F0040FE7D0DA6912F404
|
||||||
S31508009A8C9046B2FA82F35B09002908BF0123002B22
|
S31508009A8C006FE3D04FF400621A622268136823F45D
|
||||||
S31508009A9C77D190F87030012B75D0012380F870308F
|
S31508009A9CD07313602268936823F001039360202324
|
||||||
S31508009AAC0023C36722238367FEF7A2FE0746A4F8A2
|
S31508009AAC6367A367E367002384F87030032012E02A
|
||||||
S31508009ABC5880A4F85A80A368B3F5805F06D0A3B97A
|
S31508009ABC2268136823F4D07313602268936823F022
|
||||||
S31508009ACC226972B9FF22A4F85C2014E0226922B933
|
S31508009ACC0103936020236367A367002384F870302F
|
||||||
S31508009ADC40F2FF12A4F85C200DE0FF22A4F85C20EB
|
S31508009ADC032000E00020BDE8F0812DE9F04383B0B7
|
||||||
S31508009AEC09E07F22A4F85C2005E0B3F1805F0AD078
|
S31508009AEC1E46836F202B7FD104460D469046B2FA4C
|
||||||
S31508009AFC0022A4F85C20B4F85C80B3F5805F0CD027
|
S31508009AFC82F35B09002908BF0123002B78D190F863
|
||||||
S31508009B0C4FF000091DE022691AB97F22A4F85C20DF
|
S31508009B0C7030012B76D0012380F870300023C367A0
|
||||||
S31508009B1CF1E73F22A4F85C20EDE7236913B14FF077
|
S31508009B1C22238367FEF752FE0746A4F85880A4F85A
|
||||||
S31508009B2C00090EE0A94600250BE023685B6A08EAE3
|
S31508009B2C5A80A368B3F5805F06D0A3B9226972B9C7
|
||||||
S31508009B3C030329F8023BB4F85A30013B9BB2A4F84C
|
S31508009B3CFF22A4F85C2014E0226922B940F2FF1235
|
||||||
S31508009B4C5A30B4F85A309BB28BB100963B46002279
|
S31508009B4CA4F85C200DE0FF22A4F85C2009E07F2233
|
||||||
S31508009B5C20212046FFF75BFFB8B9002DE5D0236816
|
S31508009B5CA4F85C2005E0B3F1805F0DD00022A4F8D0
|
||||||
S31508009B6C5A6A5FFA88F3134005F8013BE3E72023AA
|
S31508009B6C5C20B4F85C80B3F5805F0FD04FF0000929
|
||||||
S31508009B7CA367002084F8700000E0022003B0BDE85B
|
S31508009B7C002384F870301DE022691AB97F22A4F8F4
|
||||||
S31508009B8CF0830120FAE70220F8E70320F6E710B580
|
S31508009B8C5C20EEE73F22A4F85C20EAE7236913B1D0
|
||||||
S31508009B9C82B004460023C367FEF72AFE22681268C1
|
S31508009B9C4FF00009ECE7A9460025E9E723685B6A5C
|
||||||
S31508009BAC12F0080F07D120236367A367002084F8F7
|
S31508009BAC08EA030329F8023BB4F85A30013B9BB286
|
||||||
S31508009BBC700002B010BD6FF07E430093034600227E
|
S31508009BBCA4F85A30B4F85A309BB28BB100963B468F
|
||||||
S31508009BCC4FF400112046FFF722FF0028EBD00320A4
|
S31508009BCC002220212046FFF73AFFA8B9002DE5D040
|
||||||
S31508009BDCEFE768B310B50446436F03B324236367F2
|
S31508009BDC23685A6A5FFA88F3134005F8013BE3E7F2
|
||||||
S31508009BEC2268136823F0010313602046FFF7DEFC96
|
S31508009BEC2023A367002000E0022003B0BDE8F08321
|
||||||
S31508009BFC012813D0636ABBB92268536823F49043CF
|
S31508009BFC0120FAE70220F8E70320F6E710B582B051
|
||||||
S31508009C0C53602268936823F02A03936022681368CA
|
S31508009C0C04460023C367FEF7D9FD2268126812F0D2
|
||||||
S31508009C1C43F0010313602046FFF7B9FF10BD80F827
|
S31508009C1C080F07D120236367A367002084F8700018
|
||||||
S31508009C2C7030FFF7C1FCD9E72046FFF78BFEE3E758
|
S31508009C2C02B010BD6FF07E430093034600224FF43A
|
||||||
S31508009C3C0120704708B5FFF725F9084BA3FB003040
|
S31508009C3C00112046FFF703FF0028EBD00320EFE7BF
|
||||||
S31508009C4C8009FFF78FFB0420FFF7A2FB00221146C1
|
S31508009C4C68B310B50446436F03B3242363672268CD
|
||||||
S31508009C5C4FF0FF30FFF754FB08BD00BFD34D621021
|
S31508009C5C136823F0010313602046FFF7BFFC0128A5
|
||||||
S31508009C6C08B5FEF7C5FD08BD08B5FEF7B5FDFFF747
|
S31508009C6C13D0636ABBB92268536823F490435360D4
|
||||||
S31508009C7CA0FB08BD08B5002280210248FFF78EFC20
|
S31508009C7C2268936823F02A0393602268136843F0DA
|
||||||
S31508009C8C08BD00BF0004024010B5FFF7E9FF0E4BF4
|
S31508009C8C010313602046FFF7B9FF10BD80F870304A
|
||||||
S31508009C9C1B68C31AB3F5FA7F0CD304460B4B1B7817
|
S31508009C9CFFF7A2FCD9E72046FFF76CFEE3E70120A5
|
||||||
S31508009CAC4BB90122094B1A7080210948FFF776FC3B
|
S31508009CAC7047000008B5FFF707F9084BA3FB00300F
|
||||||
S31508009CBC054B1C6010BD0022044B1A708021044809
|
S31508009CBC8009FFF771FB0420FFF784FB002211468D
|
||||||
S31508009CCCFFF76CFCF4E700BF58040020540400208E
|
S31508009CCC4FF0FF30FFF736FB08BD00BFD34D6210CF
|
||||||
S31508009CDC00040240014A024B9A6070470080000853
|
S31508009CDC08B5FEF773FD08BD08B5FEF763FDFFF77B
|
||||||
S31508009CEC00ED00E000B595B03022002108A8FEF77B
|
S31508009CEC82FB08BD08B5002280210248FFF76EFCEE
|
||||||
S31508009CFC2DFC002303930493059306930793214B9A
|
S31508009CFC08BD00BF0004024010B5FFF7E9FF0E4B84
|
||||||
S31508009D0C1A6C42F080521A641B6C03F08053019350
|
S31508009D0C1B68C31AB3F5FA7F0CD304460B4B1B78A6
|
||||||
S31508009D1C019B1D4B1A6842F440421A601B6803F4F7
|
S31508009D1C4BB90122094B1A7080210948FFF756FCEA
|
||||||
S31508009D2C40430293029B012308934FF4A023099303
|
S31508009D2C054B1C6010BD0022044B1A708021044898
|
||||||
S31508009D3C02230E934FF480020F92082210924FF4CE
|
S31508009D3CFFF74CFCF4E700BF58040020540400203D
|
||||||
S31508009D4CD87211921293139308A8FEF795FD00B1D9
|
S31508009D4C00040240014A024B9A60704700800008E2
|
||||||
S31508009D5CFEE7FEF753FD00B1FEE70F23039302233C
|
S31508009D5C00ED00E000B595B03022002108A8FEF70A
|
||||||
S31508009D6C0493002305934FF4A05306934FF48053A2
|
S31508009D6CF5FB002303930493059306930793214B62
|
||||||
S31508009D7C0793072103A8FEF7D3FF00B1FEE715B03A
|
S31508009D7C1A6C42F080521A641B6C03F080530193E0
|
||||||
S31508009D8C5DF804FB003802400070004008B5FFF788
|
S31508009D8C019B1D4B1A6842F440421A601B6803F487
|
||||||
S31508009D9CA1FFFEF715FDFFF7A5FFFFF74BFFFFF732
|
S31508009D9C40430293029B012308934FF4A023099393
|
||||||
S31508009DAC69FF08BD08B5FFF7F1FF00F045F9FFF7A5
|
S31508009DAC02230E934FF480020F92082210924FF45E
|
||||||
S31508009DBC6BFF00F0C5F9FAE72DE9F0418CB0464B7C
|
S31508009DBCD87211921293139308A8FEF743FD00B1BB
|
||||||
S31508009DCC1A6C42F080521A641A6C02F08052019294
|
S31508009DCCFEE7FEF701FD00B1FEE70F23039302231E
|
||||||
S31508009DDC019A5A6C42F480425A645A6C02F48042D4
|
S31508009DDC0493002305934FF4A05306934FF4805332
|
||||||
S31508009DEC0292029A1A6B42F002021A631A6B02F07A
|
S31508009DEC0793072103A8FEF7B1FF00B1FEE715B0EC
|
||||||
S31508009DFC02020392039A1A6B42F008021A631A6B50
|
S31508009DFC5DF804FB003802400070004008B5FFF718
|
||||||
S31508009E0C02F008020492049A1A6C42F480221A642C
|
S31508009E0CA1FFFEF7C3FCFFF7A5FFFFF74BFFFFF714
|
||||||
S31508009E1C1A6C02F480220592059A1A6C42F00072AA
|
S31508009E1C69FF08BD08B5FFF7F1FF00F045F9FFF734
|
||||||
S31508009E2C1A641B6C03F000730693069B0320FFF75A
|
S31508009E2C6BFF00F0C5F9FAE72DE9F0418CB0464B0B
|
||||||
S31508009E3C55FA002211466FF00B00FFF761FA002263
|
S31508009E3C1A6C42F080521A641A6C02F08052019223
|
||||||
S31508009E4C11466FF00A00FFF75BFA002211466FF015
|
S31508009E4C019A5A6C42F480425A645A6C02F4804263
|
||||||
S31508009E5C0900FFF755FA002211466FF00400FFF7C8
|
S31508009E5C0292029A1A6B42F002021A631A6B02F009
|
||||||
S31508009E6C4FFA002211466FF00300FFF749FA002259
|
S31508009E6C02020392039A1A6B42F008021A631A6BDF
|
||||||
S31508009E7C11466FF00100FFF743FA002211464FF026
|
S31508009E7C02F008020492049A1A6C42F480221A64BC
|
||||||
S31508009E8CFF30FFF73DFA802307930123089300243C
|
S31508009E8C1A6C02F480220592059A1A6C42F000723A
|
||||||
S31508009E9C09940A94114D07A92846FFF78FFA4FF42F
|
S31508009E9C1A641B6C03F000730693069B0320FFF7EA
|
||||||
S31508009EAC4078CDF81C8002270897099403260A9651
|
S31508009EAC37FA002211466FF00B00FFF743FA00222F
|
||||||
S31508009EBC07230B9307A90A48FFF780FACDF81C80ED
|
S31508009EBC11466FF00A00FFF73DFA002211466FF0C3
|
||||||
S31508009ECC089709940A9609230B9307A92846FFF7BE
|
S31508009ECC0900FFF737FA002211466FF00400FFF776
|
||||||
S31508009EDC75FA0CB0BDE8F081003802400004024067
|
S31508009EDC31FA002211466FF00300FFF72BFA002225
|
||||||
S31508009EEC000C024008B50948094B03604FF461435E
|
S31508009EEC11466FF00100FFF725FA002211464FF0D4
|
||||||
S31508009EFC436000238360C36003610C224261836163
|
S31508009EFCFF30FFF71FFA80230793012308930024EA
|
||||||
S31508009F0CC36103624362FFF764FE08BD8404002044
|
S31508009F0C09940A94114D07A92846FFF771FA4FF4DC
|
||||||
S31508009F1C004800402DE9F04104460D461746984680
|
S31508009F1C4078CDF81C8002270897099403260A96E0
|
||||||
S31508009F2CFEF7B6FF154BA3FB00308009002201E0B3
|
S31508009F2C07230B9307A90A48FFF762FACDF81C809A
|
||||||
S31508009F3C0132D2B2112A1DD8114B13F8121003EBA9
|
S31508009F3C089709940A9609230B9307A92846FFF74D
|
||||||
S31508009F4C420393F801C001EB0C0303FB0443B0FB7B
|
S31508009F4C57FA0CB0BDE8F081003802400004024014
|
||||||
S31508009F5CF3FE03FB1E06002EEAD11FFA8EF32B80A6
|
S31508009F5C000C024008B50948094B03604FF46143ED
|
||||||
S31508009F6C013B9BB2B3F5806FE2D2397088F800C01A
|
S31508009F6C436000238360C36003610C2242618361F2
|
||||||
S31508009F7C012000E00020BDE8F08100BFD34D62103F
|
S31508009F7CC36103624362FFF763FE08BD84040020D5
|
||||||
S31508009F8C8CA1000870B58CB00025ADF82E508DF854
|
S31508009F8C004800402DE9F04104460D461746984610
|
||||||
S31508009F9C2D508DF82C500BAB0DF12D020DF12E0119
|
S31508009F9CFEF798FF154BA3FB00308009002201E061
|
||||||
S31508009FAC4FF4FA70FFF7B6FF1A4C1B4B2360257655
|
S31508009FAC0132D2B2112A1DD8114B13F8121003EB39
|
||||||
S31508009FBC6576A5760126E67625776577A560E5604C
|
S31508009FBC420393F801C001EB0C0303FB0443B0FB0B
|
||||||
S31508009FCC9DF82D30013B1B0423619DF82C30013B79
|
S31508009FCCF3FE03FB1E06002EEAD11FFA8EF32B8036
|
||||||
S31508009FDC1B056361BDF82E3063602046FEF779FFDA
|
S31508009FDC013B9BB2B3F5806FE2D2397088F800C0AA
|
||||||
S31508009FEC0695079508964CF6E043019302954FF6AD
|
S31508009FEC012000E00020BDE8F08100BFD34D6210CF
|
||||||
S31508009FFCE073039304230493059509960E230A9399
|
S31508009FFCFCA1000870B58CB00025ADF82E508DF874
|
||||||
S3150800A00C01A92046FFF70CF82046FFF79FF80CB07D
|
S3150800A00C2D508DF82C500BAB0DF12D020DF12E01A8
|
||||||
S3150800A01C70BD00BF5C0400200064004008B5002336
|
S3150800A01C4FF4FA70FFF7B6FF1A4C1B4B23602576E4
|
||||||
S3150800A02C012201460348FFF722FD08B1002008BDAE
|
S3150800A02C6576A5760126E67625776577A560E560DB
|
||||||
S3150800A03C0120FCE78404002008B5FFF753FFFFF75F
|
S3150800A03C9DF82D30013B1B0423619DF82C30013B08
|
||||||
S3150800A04CA1FF08BDBFF34F8F0549CA6802F4E06249
|
S3150800A04C1B056361BDF82E3063602046FEF75BFF87
|
||||||
S3150800A05C044B1343CB60BFF34F8F00BFFDE700BF24
|
S3150800A05C0695079508964CF6E043019302954FF63C
|
||||||
S3150800A06C00ED00E00400FA0508B5214B1B78B3B9DE
|
S3150800A06CE073039304230493059509960E230A9328
|
||||||
S3150800A07C2048FFF7D3FF012800D008BD1D4B1B78DD
|
S3150800A07C01A92046FEF7EEFF2046FFF781F80CB043
|
||||||
S3150800A08C013BDBB23F2BF8D8FFF7EAFD1A4B1860F9
|
S3150800A08C70BD00BF5C0400200064004008B50023C6
|
||||||
S3150800A09C174B01221A70194B00221A70EDE7174B51
|
S3150800A09C012201460348FFF720FD08B1002008BD40
|
||||||
S3150800A0AC1B78013313481844FFF7B8FF012813D15E
|
S3150800A0AC0120FCE78404002008B5FFF753FFFFF7EF
|
||||||
S3150800A0BC124A13780133DBB213700E4A12789342A4
|
S3150800A0BCA1FF08BDBFF34F8F0549CA6802F4E062D9
|
||||||
S3150800A0CCDBD10B4A002111700A4A5278FF2AD4D1E7
|
S3150800A0CC044B1343CB60BFF34F8F00BFFDE700BFB4
|
||||||
S3150800A0DC022BD2D1FFF7B6FFFFF7C2FD064B1B6862
|
S3150800A0DC00ED00E00400FA0508B5214B1B78B3B96E
|
||||||
S3150800A0EC64339842C9D9024B00221A70C5E700BFDF
|
S3150800A0EC2048FFF7D3FF012800D008BD1D4B1B786D
|
||||||
S3150800A0FC45050020040500204805002046050020DB
|
S3150800A0FC013BDBB23F2BF8D8FFF7EAFD1A4B186089
|
||||||
S3150800A10C00B58BB001AB03AA00210C48FFF74CF83D
|
S3150800A10C174B01221A70194B00221A70EDE7174BE0
|
||||||
S3150800A11C20B9039A40F267639A4202D00BB05DF8F5
|
S3150800A11C1B78013313481844FFF7B8FF012813D1ED
|
||||||
S3150800A12C04FB059B002BF9D19DF80430FF2BF5D1C8
|
S3150800A12C124A13780133DBB213700E4A1278934233
|
||||||
S3150800A13C079B022BF2D1FFF785FF00BF5C040020BA
|
S3150800A13CDBD10B4A002111700A4A5278FF2AD4D176
|
||||||
S3150800A14C08B5FFF791FFFFF7DBFF08BDF8B500BFB1
|
S3150800A14C022BD2D1FFF7B6FFFFF7C2FD064B1B68F1
|
||||||
S3150800A15CF8BC08BC9E467047F8B500BFF8BC08BCEE
|
S3150800A15C64339842C9D9024B00221A70C5E700BF6E
|
||||||
S3090800A16C9E46704746
|
S3150800A16C450500200405002048050020460500206A
|
||||||
S3150800A17000000020000000000000000001020304A7
|
S3150800A17C00B58BB001AB03AA00210C48FFF72EF8EB
|
||||||
S3150800A180060708090000000001020304050206028A
|
S3150800A18C20B9039A40F267639A4202D00BB05DF885
|
||||||
S3150800A190060307030803090309040A040B040C044D
|
S3150800A19C04FB059B002BF9D19DF80430FF2BF5D158
|
||||||
S3150800A1A00C050D050E050F050F06100610071008FD
|
S3150800A1AC079B022BF2D1FFF785FF00BF5C0400204A
|
||||||
S30D0800A1B08CE0FF7F01000000AE
|
S3150800A1BC08B5FFF791FFFFF7DBFF08BDF8B500BF41
|
||||||
S30D0800A1B8F9850008F181000891
|
S3150800A1CCF8BC08BC9E467047F8B500BFF8BC08BC7E
|
||||||
S3090800A1C0CD81000837
|
S3090800A1DC9E467047D6
|
||||||
S3150800A1C400000000EC02002054030020BC03002019
|
S3150800A1E00000002000000000000000000102030437
|
||||||
S3150800A1D4000000000000000000000000000000006D
|
S3150800A1F0060708090000000001020304050206021A
|
||||||
S3150800A1E4000000000000000000000000000000005D
|
S3150800A200060307030803090309040A040B040C04DC
|
||||||
S3150800A1F4000000000000000000000000000000004D
|
S3150800A2100C050D050E050F050F061006100710088C
|
||||||
S3150800A204000000000000000000000000000000003C
|
S30D0800A2201CE0FF7F01000000AD
|
||||||
S3150800A214000000000000000000000000000000002C
|
S30D0800A228F9850008F181000820
|
||||||
S3150800A224000000000000000000000000000000001C
|
S3090800A230CD810008C6
|
||||||
S3150800A234000000000000000000000000000000000C
|
S3150800A23400000000EC02002054030020BC030020A8
|
||||||
S3150800A24400000000000000000000000000000000FC
|
S3150800A24400000000000000000000000000000000FC
|
||||||
S3150800A25400000000000000000000000000000000EC
|
S3150800A25400000000000000000000000000000000EC
|
||||||
S3150800A26400000000000000000100000000000000DB
|
S3150800A26400000000000000000000000000000000DC
|
||||||
S3150800A2740E33CDAB34126DE6ECDE05000B000000A0
|
S3150800A27400000000000000000000000000000000CC
|
||||||
S3150800A28400000000000000000000000000000000BC
|
S3150800A28400000000000000000000000000000000BC
|
||||||
S3150800A29400000000000000000000000000000000AC
|
S3150800A29400000000000000000000000000000000AC
|
||||||
S3150800A2A4000000000000000000000000000000009C
|
S3150800A2A4000000000000000000000000000000009C
|
||||||
S3150800A2B4000000000000000000000000000000008C
|
S3150800A2B4000000000000000000000000000000008C
|
||||||
S3150800A2C4000000000000000000000000000000007C
|
S3150800A2C4000000000000000000000000000000007C
|
||||||
S3150800A2D4000000000000000000000000000000006C
|
S3150800A2D4000000000000000001000000000000006B
|
||||||
S3150800A2E4000000000000000000000000000000005C
|
S3150800A2E40E33CDAB34126DE6ECDE05000B00000030
|
||||||
S3150800A2F4000000000000000000000000000000004C
|
S3150800A2F4000000000000000000000000000000004C
|
||||||
S3150800A304000000000000000000000000000000003B
|
S3150800A304000000000000000000000000000000003B
|
||||||
S3150800A314000000000000000000000000000000002B
|
S3150800A314000000000000000000000000000000002B
|
||||||
|
@ -608,6 +608,13 @@ S3150800A5A40000000000000000000000000000000099
|
||||||
S3150800A5B40000000000000000000000000000000089
|
S3150800A5B40000000000000000000000000000000089
|
||||||
S3150800A5C40000000000000000000000000000000079
|
S3150800A5C40000000000000000000000000000000079
|
||||||
S3150800A5D40000000000000000000000000000000069
|
S3150800A5D40000000000000000000000000000000069
|
||||||
S3150800A5E400000000000000004C0500200024F400D0
|
S3150800A5E40000000000000000000000000000000059
|
||||||
S30D0800A5F4010000001000000040
|
S3150800A5F40000000000000000000000000000000049
|
||||||
|
S3150800A6040000000000000000000000000000000038
|
||||||
|
S3150800A6140000000000000000000000000000000028
|
||||||
|
S3150800A6240000000000000000000000000000000018
|
||||||
|
S3150800A6340000000000000000000000000000000008
|
||||||
|
S3150800A64400000000000000000000000000000000F8
|
||||||
|
S3150800A65400000000000000004C0500200024F4005F
|
||||||
|
S30D0800A6640100000010000000CF
|
||||||
S705080086DD8F
|
S705080086DD8F
|
||||||
|
|
File diff suppressed because it is too large
Load Diff
|
@ -16,29 +16,13 @@
|
||||||
******************************************************************************
|
******************************************************************************
|
||||||
* @attention
|
* @attention
|
||||||
*
|
*
|
||||||
* <h2><center>© COPYRIGHT(c) 2016 STMicroelectronics</center></h2>
|
* <h2><center>© Copyright (c) 2016 STMicroelectronics.
|
||||||
|
* All rights reserved.</center></h2>
|
||||||
*
|
*
|
||||||
* Redistribution and use in source and binary forms, with or without modification,
|
* This software component is licensed by ST under BSD 3-Clause license,
|
||||||
* are permitted provided that the following conditions are met:
|
* the "License"; You may not use this file except in compliance with the
|
||||||
* 1. Redistributions of source code must retain the above copyright notice,
|
* License. You may obtain a copy of the License at:
|
||||||
* this list of conditions and the following disclaimer.
|
* opensource.org/licenses/BSD-3-Clause
|
||||||
* 2. Redistributions in binary form must reproduce the above copyright notice,
|
|
||||||
* this list of conditions and the following disclaimer in the documentation
|
|
||||||
* and/or other materials provided with the distribution.
|
|
||||||
* 3. Neither the name of STMicroelectronics nor the names of its contributors
|
|
||||||
* may be used to endorse or promote products derived from this software
|
|
||||||
* without specific prior written permission.
|
|
||||||
*
|
|
||||||
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
|
|
||||||
* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
|
||||||
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
|
||||||
* DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
|
|
||||||
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
|
|
||||||
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
|
|
||||||
* SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
|
|
||||||
* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
|
|
||||||
* OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
|
||||||
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
|
||||||
*
|
*
|
||||||
******************************************************************************
|
******************************************************************************
|
||||||
*/
|
*/
|
||||||
|
@ -72,10 +56,10 @@
|
||||||
/* Uncomment the line below according to the target STM32 device used in your
|
/* Uncomment the line below according to the target STM32 device used in your
|
||||||
application
|
application
|
||||||
*/
|
*/
|
||||||
#if !defined (STM32F756xx) && !defined (STM32F746xx) && !defined (STM32F745xx) && !defined (STM32F767xx) && \
|
#if !defined (STM32F756xx) && !defined (STM32F746xx) && !defined (STM32F745xx) && !defined (STM32F765xx) && \
|
||||||
!defined (STM32F769xx) && !defined (STM32F777xx) && !defined (STM32F779xx) && !defined (STM32F722xx) && \
|
!defined (STM32F767xx) && !defined (STM32F769xx) && !defined (STM32F777xx) && !defined (STM32F779xx) && \
|
||||||
!defined (STM32F723xx) && !defined (STM32F732xx) && !defined (STM32F733xx) && !defined (STM32F730xx) && \
|
!defined (STM32F722xx) && !defined (STM32F723xx) && !defined (STM32F732xx) && !defined (STM32F733xx) && \
|
||||||
!defined (STM32F750xx)
|
!defined (STM32F730xx) && !defined (STM32F750xx)
|
||||||
|
|
||||||
/* #define STM32F756xx */ /*!< STM32F756VG, STM32F756ZG, STM32F756ZG, STM32F756IG, STM32F756BG,
|
/* #define STM32F756xx */ /*!< STM32F756VG, STM32F756ZG, STM32F756ZG, STM32F756IG, STM32F756BG,
|
||||||
STM32F756NG Devices */
|
STM32F756NG Devices */
|
||||||
|
@ -113,11 +97,11 @@
|
||||||
#endif /* USE_HAL_DRIVER */
|
#endif /* USE_HAL_DRIVER */
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief CMSIS Device version number V1.2.4
|
* @brief CMSIS Device version number V1.2.5
|
||||||
*/
|
*/
|
||||||
#define __STM32F7_CMSIS_VERSION_MAIN (0x01) /*!< [31:24] main version */
|
#define __STM32F7_CMSIS_VERSION_MAIN (0x01) /*!< [31:24] main version */
|
||||||
#define __STM32F7_CMSIS_VERSION_SUB1 (0x02) /*!< [23:16] sub1 version */
|
#define __STM32F7_CMSIS_VERSION_SUB1 (0x02) /*!< [23:16] sub1 version */
|
||||||
#define __STM32F7_CMSIS_VERSION_SUB2 (0x04) /*!< [15:8] sub2 version */
|
#define __STM32F7_CMSIS_VERSION_SUB2 (0x05) /*!< [15:8] sub2 version */
|
||||||
#define __STM32F7_CMSIS_VERSION_RC (0x00) /*!< [7:0] release candidate */
|
#define __STM32F7_CMSIS_VERSION_RC (0x00) /*!< [7:0] release candidate */
|
||||||
#define __STM32F7_CMSIS_VERSION ((__STM32F7_CMSIS_VERSION_MAIN << 24)\
|
#define __STM32F7_CMSIS_VERSION ((__STM32F7_CMSIS_VERSION_MAIN << 24)\
|
||||||
|(__STM32F7_CMSIS_VERSION_SUB1 << 16)\
|
|(__STM32F7_CMSIS_VERSION_SUB1 << 16)\
|
||||||
|
|
|
@ -7,7 +7,7 @@
|
||||||
******************************************************************************
|
******************************************************************************
|
||||||
* @attention
|
* @attention
|
||||||
*
|
*
|
||||||
* <h2><center>© Copyright (c) 2018 STMicroelectronics.
|
* <h2><center>© Copyright (c) 2019 STMicroelectronics.
|
||||||
* All rights reserved.</center></h2>
|
* All rights reserved.</center></h2>
|
||||||
*
|
*
|
||||||
* This software component is licensed by ST under BSD 3-Clause license,
|
* This software component is licensed by ST under BSD 3-Clause license,
|
||||||
|
@ -236,6 +236,16 @@
|
||||||
#define DAC_WAVEGENERATION_NOISE DAC_WAVE_NOISE
|
#define DAC_WAVEGENERATION_NOISE DAC_WAVE_NOISE
|
||||||
#define DAC_WAVEGENERATION_TRIANGLE DAC_WAVE_TRIANGLE
|
#define DAC_WAVEGENERATION_TRIANGLE DAC_WAVE_TRIANGLE
|
||||||
|
|
||||||
|
#if defined(STM32G4) || defined(STM32H7)
|
||||||
|
#define DAC_CHIPCONNECT_DISABLE DAC_CHIPCONNECT_EXTERNAL
|
||||||
|
#define DAC_CHIPCONNECT_ENABLE DAC_CHIPCONNECT_INTERNAL
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if defined(STM32L1) || defined(STM32L4) || defined(STM32G0) || defined(STM32L5) || defined(STM32H7) || defined(STM32F4)
|
||||||
|
#define HAL_DAC_MSP_INIT_CB_ID HAL_DAC_MSPINIT_CB_ID
|
||||||
|
#define HAL_DAC_MSP_DEINIT_CB_ID HAL_DAC_MSPDEINIT_CB_ID
|
||||||
|
#endif
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @}
|
* @}
|
||||||
*/
|
*/
|
||||||
|
@ -296,8 +306,17 @@
|
||||||
#define HAL_DMAMUX_REQUEST_GEN_FALLING HAL_DMAMUX_REQ_GEN_FALLING
|
#define HAL_DMAMUX_REQUEST_GEN_FALLING HAL_DMAMUX_REQ_GEN_FALLING
|
||||||
#define HAL_DMAMUX_REQUEST_GEN_RISING_FALLING HAL_DMAMUX_REQ_GEN_RISING_FALLING
|
#define HAL_DMAMUX_REQUEST_GEN_RISING_FALLING HAL_DMAMUX_REQ_GEN_RISING_FALLING
|
||||||
|
|
||||||
|
#if defined(STM32L4R5xx) || defined(STM32L4R9xx) || defined(STM32L4R9xx) || defined(STM32L4S5xx) || defined(STM32L4S7xx) || defined(STM32L4S9xx)
|
||||||
|
#define DMA_REQUEST_DCMI_PSSI DMA_REQUEST_DCMI
|
||||||
|
#endif
|
||||||
|
|
||||||
#endif /* STM32L4 */
|
#endif /* STM32L4 */
|
||||||
|
|
||||||
|
#if defined(STM32G0)
|
||||||
|
#define DMA_REQUEST_DAC1_CHANNEL1 DMA_REQUEST_DAC1_CH1
|
||||||
|
#define DMA_REQUEST_DAC1_CHANNEL2 DMA_REQUEST_DAC1_CH2
|
||||||
|
#endif
|
||||||
|
|
||||||
#if defined(STM32H7)
|
#if defined(STM32H7)
|
||||||
|
|
||||||
#define DMA_REQUEST_DAC1 DMA_REQUEST_DAC1_CH1
|
#define DMA_REQUEST_DAC1 DMA_REQUEST_DAC1_CH1
|
||||||
|
@ -355,6 +374,9 @@
|
||||||
#define DFSDM_FILTER_EXT_TRIG_LPTIM2 DFSDM_FILTER_EXT_TRIG_LPTIM2_OUT
|
#define DFSDM_FILTER_EXT_TRIG_LPTIM2 DFSDM_FILTER_EXT_TRIG_LPTIM2_OUT
|
||||||
#define DFSDM_FILTER_EXT_TRIG_LPTIM3 DFSDM_FILTER_EXT_TRIG_LPTIM3_OUT
|
#define DFSDM_FILTER_EXT_TRIG_LPTIM3 DFSDM_FILTER_EXT_TRIG_LPTIM3_OUT
|
||||||
|
|
||||||
|
#define DAC_TRIGGER_LP1_OUT DAC_TRIGGER_LPTIM1_OUT
|
||||||
|
#define DAC_TRIGGER_LP2_OUT DAC_TRIGGER_LPTIM2_OUT
|
||||||
|
|
||||||
#endif /* STM32H7 */
|
#endif /* STM32H7 */
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -450,7 +472,9 @@
|
||||||
#define FLASH_FLAG_SNECCE_BANK2RR FLASH_FLAG_SNECCERR_BANK2
|
#define FLASH_FLAG_SNECCE_BANK2RR FLASH_FLAG_SNECCERR_BANK2
|
||||||
#define FLASH_FLAG_DBECCE_BANK2RR FLASH_FLAG_DBECCERR_BANK2
|
#define FLASH_FLAG_DBECCE_BANK2RR FLASH_FLAG_DBECCERR_BANK2
|
||||||
#define FLASH_FLAG_STRBER_BANK2R FLASH_FLAG_STRBERR_BANK2
|
#define FLASH_FLAG_STRBER_BANK2R FLASH_FLAG_STRBERR_BANK2
|
||||||
#endif
|
#define FLASH_FLAG_WDW FLASH_FLAG_WBNE
|
||||||
|
#define OB_WRP_SECTOR_All OB_WRP_SECTOR_ALL
|
||||||
|
#endif /* STM32H7 */
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @}
|
* @}
|
||||||
|
@ -486,6 +510,13 @@
|
||||||
#define HAL_SYSCFG_FASTMODEPLUS_I2C1 I2C_FASTMODEPLUS_I2C1
|
#define HAL_SYSCFG_FASTMODEPLUS_I2C1 I2C_FASTMODEPLUS_I2C1
|
||||||
#define HAL_SYSCFG_FASTMODEPLUS_I2C2 I2C_FASTMODEPLUS_I2C2
|
#define HAL_SYSCFG_FASTMODEPLUS_I2C2 I2C_FASTMODEPLUS_I2C2
|
||||||
#define HAL_SYSCFG_FASTMODEPLUS_I2C3 I2C_FASTMODEPLUS_I2C3
|
#define HAL_SYSCFG_FASTMODEPLUS_I2C3 I2C_FASTMODEPLUS_I2C3
|
||||||
|
#if defined(STM32G4)
|
||||||
|
|
||||||
|
#define HAL_SYSCFG_EnableIOAnalogSwitchBooster HAL_SYSCFG_EnableIOSwitchBooster
|
||||||
|
#define HAL_SYSCFG_DisableIOAnalogSwitchBooster HAL_SYSCFG_DisableIOSwitchBooster
|
||||||
|
#define HAL_SYSCFG_EnableIOAnalogSwitchVDD HAL_SYSCFG_EnableIOSwitchVDD
|
||||||
|
#define HAL_SYSCFG_DisableIOAnalogSwitchVDD HAL_SYSCFG_DisableIOSwitchVDD
|
||||||
|
#endif /* STM32G4 */
|
||||||
/**
|
/**
|
||||||
* @}
|
* @}
|
||||||
*/
|
*/
|
||||||
|
@ -494,7 +525,7 @@
|
||||||
/** @defgroup LL_FMC_Aliased_Defines LL FMC Aliased Defines maintained for compatibility purpose
|
/** @defgroup LL_FMC_Aliased_Defines LL FMC Aliased Defines maintained for compatibility purpose
|
||||||
* @{
|
* @{
|
||||||
*/
|
*/
|
||||||
#if defined(STM32L4) || defined(STM32F7) || defined(STM32H7)
|
#if defined(STM32L4) || defined(STM32F7) || defined(STM32H7) || defined(STM32G4)
|
||||||
#define FMC_NAND_PCC_WAIT_FEATURE_DISABLE FMC_NAND_WAIT_FEATURE_DISABLE
|
#define FMC_NAND_PCC_WAIT_FEATURE_DISABLE FMC_NAND_WAIT_FEATURE_DISABLE
|
||||||
#define FMC_NAND_PCC_WAIT_FEATURE_ENABLE FMC_NAND_WAIT_FEATURE_ENABLE
|
#define FMC_NAND_PCC_WAIT_FEATURE_ENABLE FMC_NAND_WAIT_FEATURE_ENABLE
|
||||||
#define FMC_NAND_PCC_MEM_BUS_WIDTH_8 FMC_NAND_MEM_BUS_WIDTH_8
|
#define FMC_NAND_PCC_MEM_BUS_WIDTH_8 FMC_NAND_MEM_BUS_WIDTH_8
|
||||||
|
@ -547,18 +578,25 @@
|
||||||
#define GPIO_AF9_SDIO2 GPIO_AF9_SDMMC2
|
#define GPIO_AF9_SDIO2 GPIO_AF9_SDMMC2
|
||||||
#define GPIO_AF10_SDIO2 GPIO_AF10_SDMMC2
|
#define GPIO_AF10_SDIO2 GPIO_AF10_SDMMC2
|
||||||
#define GPIO_AF11_SDIO2 GPIO_AF11_SDMMC2
|
#define GPIO_AF11_SDIO2 GPIO_AF11_SDMMC2
|
||||||
#endif
|
|
||||||
|
#if defined (STM32H743xx) || defined (STM32H753xx) || defined (STM32H750xx) || defined (STM32H742xx) || \
|
||||||
|
defined (STM32H745xx) || defined (STM32H755xx) || defined (STM32H747xx) || defined (STM32H757xx)
|
||||||
|
#define GPIO_AF10_OTG2_HS GPIO_AF10_OTG2_FS
|
||||||
|
#define GPIO_AF10_OTG1_FS GPIO_AF10_OTG1_HS
|
||||||
|
#define GPIO_AF12_OTG2_FS GPIO_AF12_OTG1_FS
|
||||||
|
#endif /*STM32H743xx || STM32H753xx || STM32H750xx || STM32H742xx || STM32H745xx || STM32H755xx || STM32H747xx || STM32H757xx */
|
||||||
|
#endif /* STM32H7 */
|
||||||
|
|
||||||
#define GPIO_AF0_LPTIM GPIO_AF0_LPTIM1
|
#define GPIO_AF0_LPTIM GPIO_AF0_LPTIM1
|
||||||
#define GPIO_AF1_LPTIM GPIO_AF1_LPTIM1
|
#define GPIO_AF1_LPTIM GPIO_AF1_LPTIM1
|
||||||
#define GPIO_AF2_LPTIM GPIO_AF2_LPTIM1
|
#define GPIO_AF2_LPTIM GPIO_AF2_LPTIM1
|
||||||
|
|
||||||
#if defined(STM32L0) || defined(STM32L4) || defined(STM32F4) || defined(STM32F2) || defined(STM32F7) || defined(STM32H7)
|
#if defined(STM32L0) || defined(STM32L4) || defined(STM32F4) || defined(STM32F2) || defined(STM32F7) || defined(STM32G4) || defined(STM32H7)
|
||||||
#define GPIO_SPEED_LOW GPIO_SPEED_FREQ_LOW
|
#define GPIO_SPEED_LOW GPIO_SPEED_FREQ_LOW
|
||||||
#define GPIO_SPEED_MEDIUM GPIO_SPEED_FREQ_MEDIUM
|
#define GPIO_SPEED_MEDIUM GPIO_SPEED_FREQ_MEDIUM
|
||||||
#define GPIO_SPEED_FAST GPIO_SPEED_FREQ_HIGH
|
#define GPIO_SPEED_FAST GPIO_SPEED_FREQ_HIGH
|
||||||
#define GPIO_SPEED_HIGH GPIO_SPEED_FREQ_VERY_HIGH
|
#define GPIO_SPEED_HIGH GPIO_SPEED_FREQ_VERY_HIGH
|
||||||
#endif /* STM32L0 || STM32L4 || STM32F4 || STM32F2 || STM32F7 || STM32H7*/
|
#endif /* STM32L0 || STM32L4 || STM32F4 || STM32F2 || STM32F7 || STM32G4 || STM32H7*/
|
||||||
|
|
||||||
#if defined(STM32L1)
|
#if defined(STM32L1)
|
||||||
#define GPIO_SPEED_VERY_LOW GPIO_SPEED_FREQ_LOW
|
#define GPIO_SPEED_VERY_LOW GPIO_SPEED_FREQ_LOW
|
||||||
|
@ -599,6 +637,185 @@
|
||||||
#define __HAL_HRTIM_GetClockPrescaler __HAL_HRTIM_GETCLOCKPRESCALER
|
#define __HAL_HRTIM_GetClockPrescaler __HAL_HRTIM_GETCLOCKPRESCALER
|
||||||
#define __HAL_HRTIM_SetCompare __HAL_HRTIM_SETCOMPARE
|
#define __HAL_HRTIM_SetCompare __HAL_HRTIM_SETCOMPARE
|
||||||
#define __HAL_HRTIM_GetCompare __HAL_HRTIM_GETCOMPARE
|
#define __HAL_HRTIM_GetCompare __HAL_HRTIM_GETCOMPARE
|
||||||
|
|
||||||
|
#if defined(STM32G4)
|
||||||
|
#define HAL_HRTIM_ExternalEventCounterConfig HAL_HRTIM_ExtEventCounterConfig
|
||||||
|
#define HAL_HRTIM_ExternalEventCounterEnable HAL_HRTIM_ExtEventCounterEnable
|
||||||
|
#define HAL_HRTIM_ExternalEventCounterDisable HAL_HRTIM_ExtEventCounterDisable
|
||||||
|
#define HAL_HRTIM_ExternalEventCounterReset HAL_HRTIM_ExtEventCounterReset
|
||||||
|
#endif /* STM32G4 */
|
||||||
|
|
||||||
|
#if defined(STM32H7)
|
||||||
|
#define HRTIM_OUTPUTSET_TIMAEV1_TIMBCMP1 HRTIM_OUTPUTSET_TIMEV_1
|
||||||
|
#define HRTIM_OUTPUTSET_TIMAEV2_TIMBCMP2 HRTIM_OUTPUTSET_TIMEV_2
|
||||||
|
#define HRTIM_OUTPUTSET_TIMAEV3_TIMCCMP2 HRTIM_OUTPUTSET_TIMEV_3
|
||||||
|
#define HRTIM_OUTPUTSET_TIMAEV4_TIMCCMP3 HRTIM_OUTPUTSET_TIMEV_4
|
||||||
|
#define HRTIM_OUTPUTSET_TIMAEV5_TIMDCMP1 HRTIM_OUTPUTSET_TIMEV_5
|
||||||
|
#define HRTIM_OUTPUTSET_TIMAEV6_TIMDCMP2 HRTIM_OUTPUTSET_TIMEV_6
|
||||||
|
#define HRTIM_OUTPUTSET_TIMAEV7_TIMECMP3 HRTIM_OUTPUTSET_TIMEV_7
|
||||||
|
#define HRTIM_OUTPUTSET_TIMAEV8_TIMECMP4 HRTIM_OUTPUTSET_TIMEV_8
|
||||||
|
#define HRTIM_OUTPUTSET_TIMAEV9_TIMFCMP4 HRTIM_OUTPUTSET_TIMEV_9
|
||||||
|
#define HRTIM_OUTPUTSET_TIMBEV1_TIMACMP1 HRTIM_OUTPUTSET_TIMEV_1
|
||||||
|
#define HRTIM_OUTPUTSET_TIMBEV2_TIMACMP2 HRTIM_OUTPUTSET_TIMEV_2
|
||||||
|
#define HRTIM_OUTPUTSET_TIMBEV3_TIMCCMP3 HRTIM_OUTPUTSET_TIMEV_3
|
||||||
|
#define HRTIM_OUTPUTSET_TIMBEV4_TIMCCMP4 HRTIM_OUTPUTSET_TIMEV_4
|
||||||
|
#define HRTIM_OUTPUTSET_TIMBEV5_TIMDCMP3 HRTIM_OUTPUTSET_TIMEV_5
|
||||||
|
#define HRTIM_OUTPUTSET_TIMBEV6_TIMDCMP4 HRTIM_OUTPUTSET_TIMEV_6
|
||||||
|
#define HRTIM_OUTPUTSET_TIMBEV7_TIMECMP1 HRTIM_OUTPUTSET_TIMEV_7
|
||||||
|
#define HRTIM_OUTPUTSET_TIMBEV8_TIMECMP2 HRTIM_OUTPUTSET_TIMEV_8
|
||||||
|
#define HRTIM_OUTPUTSET_TIMBEV9_TIMFCMP3 HRTIM_OUTPUTSET_TIMEV_9
|
||||||
|
#define HRTIM_OUTPUTSET_TIMCEV1_TIMACMP1 HRTIM_OUTPUTSET_TIMEV_1
|
||||||
|
#define HRTIM_OUTPUTSET_TIMCEV2_TIMACMP2 HRTIM_OUTPUTSET_TIMEV_2
|
||||||
|
#define HRTIM_OUTPUTSET_TIMCEV3_TIMBCMP2 HRTIM_OUTPUTSET_TIMEV_3
|
||||||
|
#define HRTIM_OUTPUTSET_TIMCEV4_TIMBCMP3 HRTIM_OUTPUTSET_TIMEV_4
|
||||||
|
#define HRTIM_OUTPUTSET_TIMCEV5_TIMDCMP2 HRTIM_OUTPUTSET_TIMEV_5
|
||||||
|
#define HRTIM_OUTPUTSET_TIMCEV6_TIMDCMP4 HRTIM_OUTPUTSET_TIMEV_6
|
||||||
|
#define HRTIM_OUTPUTSET_TIMCEV7_TIMECMP3 HRTIM_OUTPUTSET_TIMEV_7
|
||||||
|
#define HRTIM_OUTPUTSET_TIMCEV8_TIMECMP4 HRTIM_OUTPUTSET_TIMEV_8
|
||||||
|
#define HRTIM_OUTPUTSET_TIMCEV9_TIMFCMP2 HRTIM_OUTPUTSET_TIMEV_9
|
||||||
|
#define HRTIM_OUTPUTSET_TIMDEV1_TIMACMP1 HRTIM_OUTPUTSET_TIMEV_1
|
||||||
|
#define HRTIM_OUTPUTSET_TIMDEV2_TIMACMP4 HRTIM_OUTPUTSET_TIMEV_2
|
||||||
|
#define HRTIM_OUTPUTSET_TIMDEV3_TIMBCMP2 HRTIM_OUTPUTSET_TIMEV_3
|
||||||
|
#define HRTIM_OUTPUTSET_TIMDEV4_TIMBCMP4 HRTIM_OUTPUTSET_TIMEV_4
|
||||||
|
#define HRTIM_OUTPUTSET_TIMDEV5_TIMCCMP4 HRTIM_OUTPUTSET_TIMEV_5
|
||||||
|
#define HRTIM_OUTPUTSET_TIMDEV6_TIMECMP1 HRTIM_OUTPUTSET_TIMEV_6
|
||||||
|
#define HRTIM_OUTPUTSET_TIMDEV7_TIMECMP4 HRTIM_OUTPUTSET_TIMEV_7
|
||||||
|
#define HRTIM_OUTPUTSET_TIMDEV8_TIMFCMP1 HRTIM_OUTPUTSET_TIMEV_8
|
||||||
|
#define HRTIM_OUTPUTSET_TIMDEV9_TIMFCMP3 HRTIM_OUTPUTSET_TIMEV_9
|
||||||
|
#define HRTIM_OUTPUTSET_TIMEEV1_TIMACMP4 HRTIM_OUTPUTSET_TIMEV_1
|
||||||
|
#define HRTIM_OUTPUTSET_TIMEEV2_TIMBCMP3 HRTIM_OUTPUTSET_TIMEV_2
|
||||||
|
#define HRTIM_OUTPUTSET_TIMEEV3_TIMBCMP4 HRTIM_OUTPUTSET_TIMEV_3
|
||||||
|
#define HRTIM_OUTPUTSET_TIMEEV4_TIMCCMP1 HRTIM_OUTPUTSET_TIMEV_4
|
||||||
|
#define HRTIM_OUTPUTSET_TIMEEV5_TIMDCMP2 HRTIM_OUTPUTSET_TIMEV_5
|
||||||
|
#define HRTIM_OUTPUTSET_TIMEEV6_TIMDCMP1 HRTIM_OUTPUTSET_TIMEV_6
|
||||||
|
#define HRTIM_OUTPUTSET_TIMEEV7_TIMDCMP2 HRTIM_OUTPUTSET_TIMEV_7
|
||||||
|
#define HRTIM_OUTPUTSET_TIMEEV8_TIMFCMP3 HRTIM_OUTPUTSET_TIMEV_8
|
||||||
|
#define HRTIM_OUTPUTSET_TIMEEV9_TIMFCMP4 HRTIM_OUTPUTSET_TIMEV_9
|
||||||
|
#define HRTIM_OUTPUTSET_TIMFEV1_TIMACMP3 HRTIM_OUTPUTSET_TIMEV_1
|
||||||
|
#define HRTIM_OUTPUTSET_TIMFEV2_TIMBCMP1 HRTIM_OUTPUTSET_TIMEV_2
|
||||||
|
#define HRTIM_OUTPUTSET_TIMFEV3_TIMBCMP4 HRTIM_OUTPUTSET_TIMEV_3
|
||||||
|
#define HRTIM_OUTPUTSET_TIMFEV4_TIMCCMP1 HRTIM_OUTPUTSET_TIMEV_4
|
||||||
|
#define HRTIM_OUTPUTSET_TIMFEV5_TIMCCMP4 HRTIM_OUTPUTSET_TIMEV_5
|
||||||
|
#define HRTIM_OUTPUTSET_TIMFEV6_TIMDCMP3 HRTIM_OUTPUTSET_TIMEV_6
|
||||||
|
#define HRTIM_OUTPUTSET_TIMFEV7_TIMDCMP4 HRTIM_OUTPUTSET_TIMEV_7
|
||||||
|
#define HRTIM_OUTPUTSET_TIMFEV8_TIMECMP2 HRTIM_OUTPUTSET_TIMEV_8
|
||||||
|
#define HRTIM_OUTPUTSET_TIMFEV9_TIMECMP3 HRTIM_OUTPUTSET_TIMEV_9
|
||||||
|
|
||||||
|
#define HRTIM_OUTPUTRESET_TIMAEV1_TIMBCMP1 HRTIM_OUTPUTSET_TIMEV_1
|
||||||
|
#define HRTIM_OUTPUTRESET_TIMAEV2_TIMBCMP2 HRTIM_OUTPUTSET_TIMEV_2
|
||||||
|
#define HRTIM_OUTPUTRESET_TIMAEV3_TIMCCMP2 HRTIM_OUTPUTSET_TIMEV_3
|
||||||
|
#define HRTIM_OUTPUTRESET_TIMAEV4_TIMCCMP3 HRTIM_OUTPUTSET_TIMEV_4
|
||||||
|
#define HRTIM_OUTPUTRESET_TIMAEV5_TIMDCMP1 HRTIM_OUTPUTSET_TIMEV_5
|
||||||
|
#define HRTIM_OUTPUTRESET_TIMAEV6_TIMDCMP2 HRTIM_OUTPUTSET_TIMEV_6
|
||||||
|
#define HRTIM_OUTPUTRESET_TIMAEV7_TIMECMP3 HRTIM_OUTPUTSET_TIMEV_7
|
||||||
|
#define HRTIM_OUTPUTRESET_TIMAEV8_TIMECMP4 HRTIM_OUTPUTSET_TIMEV_8
|
||||||
|
#define HRTIM_OUTPUTRESET_TIMAEV9_TIMFCMP4 HRTIM_OUTPUTSET_TIMEV_9
|
||||||
|
#define HRTIM_OUTPUTRESET_TIMBEV1_TIMACMP1 HRTIM_OUTPUTSET_TIMEV_1
|
||||||
|
#define HRTIM_OUTPUTRESET_TIMBEV2_TIMACMP2 HRTIM_OUTPUTSET_TIMEV_2
|
||||||
|
#define HRTIM_OUTPUTRESET_TIMBEV3_TIMCCMP3 HRTIM_OUTPUTSET_TIMEV_3
|
||||||
|
#define HRTIM_OUTPUTRESET_TIMBEV4_TIMCCMP4 HRTIM_OUTPUTSET_TIMEV_4
|
||||||
|
#define HRTIM_OUTPUTRESET_TIMBEV5_TIMDCMP3 HRTIM_OUTPUTSET_TIMEV_5
|
||||||
|
#define HRTIM_OUTPUTRESET_TIMBEV6_TIMDCMP4 HRTIM_OUTPUTSET_TIMEV_6
|
||||||
|
#define HRTIM_OUTPUTRESET_TIMBEV7_TIMECMP1 HRTIM_OUTPUTSET_TIMEV_7
|
||||||
|
#define HRTIM_OUTPUTRESET_TIMBEV8_TIMECMP2 HRTIM_OUTPUTSET_TIMEV_8
|
||||||
|
#define HRTIM_OUTPUTRESET_TIMBEV9_TIMFCMP3 HRTIM_OUTPUTSET_TIMEV_9
|
||||||
|
#define HRTIM_OUTPUTRESET_TIMCEV1_TIMACMP1 HRTIM_OUTPUTSET_TIMEV_1
|
||||||
|
#define HRTIM_OUTPUTRESET_TIMCEV2_TIMACMP2 HRTIM_OUTPUTSET_TIMEV_2
|
||||||
|
#define HRTIM_OUTPUTRESET_TIMCEV3_TIMBCMP2 HRTIM_OUTPUTSET_TIMEV_3
|
||||||
|
#define HRTIM_OUTPUTRESET_TIMCEV4_TIMBCMP3 HRTIM_OUTPUTSET_TIMEV_4
|
||||||
|
#define HRTIM_OUTPUTRESET_TIMCEV5_TIMDCMP2 HRTIM_OUTPUTSET_TIMEV_5
|
||||||
|
#define HRTIM_OUTPUTRESET_TIMCEV6_TIMDCMP4 HRTIM_OUTPUTSET_TIMEV_6
|
||||||
|
#define HRTIM_OUTPUTRESET_TIMCEV7_TIMECMP3 HRTIM_OUTPUTSET_TIMEV_7
|
||||||
|
#define HRTIM_OUTPUTRESET_TIMCEV8_TIMECMP4 HRTIM_OUTPUTSET_TIMEV_8
|
||||||
|
#define HRTIM_OUTPUTRESET_TIMCEV9_TIMFCMP2 HRTIM_OUTPUTSET_TIMEV_9
|
||||||
|
#define HRTIM_OUTPUTRESET_TIMDEV1_TIMACMP1 HRTIM_OUTPUTSET_TIMEV_1
|
||||||
|
#define HRTIM_OUTPUTRESET_TIMDEV2_TIMACMP4 HRTIM_OUTPUTSET_TIMEV_2
|
||||||
|
#define HRTIM_OUTPUTRESET_TIMDEV3_TIMBCMP2 HRTIM_OUTPUTSET_TIMEV_3
|
||||||
|
#define HRTIM_OUTPUTRESET_TIMDEV4_TIMBCMP4 HRTIM_OUTPUTSET_TIMEV_4
|
||||||
|
#define HRTIM_OUTPUTRESET_TIMDEV5_TIMCCMP4 HRTIM_OUTPUTSET_TIMEV_5
|
||||||
|
#define HRTIM_OUTPUTRESET_TIMDEV6_TIMECMP1 HRTIM_OUTPUTSET_TIMEV_6
|
||||||
|
#define HRTIM_OUTPUTRESET_TIMDEV7_TIMECMP4 HRTIM_OUTPUTSET_TIMEV_7
|
||||||
|
#define HRTIM_OUTPUTRESET_TIMDEV8_TIMFCMP1 HRTIM_OUTPUTSET_TIMEV_8
|
||||||
|
#define HRTIM_OUTPUTRESET_TIMDEV9_TIMFCMP3 HRTIM_OUTPUTSET_TIMEV_9
|
||||||
|
#define HRTIM_OUTPUTRESET_TIMEEV1_TIMACMP4 HRTIM_OUTPUTSET_TIMEV_1
|
||||||
|
#define HRTIM_OUTPUTRESET_TIMEEV2_TIMBCMP3 HRTIM_OUTPUTSET_TIMEV_2
|
||||||
|
#define HRTIM_OUTPUTRESET_TIMEEV3_TIMBCMP4 HRTIM_OUTPUTSET_TIMEV_3
|
||||||
|
#define HRTIM_OUTPUTRESET_TIMEEV4_TIMCCMP1 HRTIM_OUTPUTSET_TIMEV_4
|
||||||
|
#define HRTIM_OUTPUTRESET_TIMEEV5_TIMDCMP2 HRTIM_OUTPUTSET_TIMEV_5
|
||||||
|
#define HRTIM_OUTPUTRESET_TIMEEV6_TIMDCMP1 HRTIM_OUTPUTSET_TIMEV_6
|
||||||
|
#define HRTIM_OUTPUTRESET_TIMEEV7_TIMDCMP2 HRTIM_OUTPUTSET_TIMEV_7
|
||||||
|
#define HRTIM_OUTPUTRESET_TIMEEV8_TIMFCMP3 HRTIM_OUTPUTSET_TIMEV_8
|
||||||
|
#define HRTIM_OUTPUTRESET_TIMEEV9_TIMFCMP4 HRTIM_OUTPUTSET_TIMEV_9
|
||||||
|
#define HRTIM_OUTPUTRESET_TIMFEV1_TIMACMP3 HRTIM_OUTPUTSET_TIMEV_1
|
||||||
|
#define HRTIM_OUTPUTRESET_TIMFEV2_TIMBCMP1 HRTIM_OUTPUTSET_TIMEV_2
|
||||||
|
#define HRTIM_OUTPUTRESET_TIMFEV3_TIMBCMP4 HRTIM_OUTPUTSET_TIMEV_3
|
||||||
|
#define HRTIM_OUTPUTRESET_TIMFEV4_TIMCCMP1 HRTIM_OUTPUTSET_TIMEV_4
|
||||||
|
#define HRTIM_OUTPUTRESET_TIMFEV5_TIMCCMP4 HRTIM_OUTPUTSET_TIMEV_5
|
||||||
|
#define HRTIM_OUTPUTRESET_TIMFEV6_TIMDCMP3 HRTIM_OUTPUTSET_TIMEV_6
|
||||||
|
#define HRTIM_OUTPUTRESET_TIMFEV7_TIMDCMP4 HRTIM_OUTPUTSET_TIMEV_7
|
||||||
|
#define HRTIM_OUTPUTRESET_TIMFEV8_TIMECMP2 HRTIM_OUTPUTSET_TIMEV_8
|
||||||
|
#define HRTIM_OUTPUTRESET_TIMFEV9_TIMECMP3 HRTIM_OUTPUTSET_TIMEV_9
|
||||||
|
#endif /* STM32H7 */
|
||||||
|
|
||||||
|
#if defined(STM32F3)
|
||||||
|
/** @brief Constants defining available sources associated to external events.
|
||||||
|
*/
|
||||||
|
#define HRTIM_EVENTSRC_1 (0x00000000U)
|
||||||
|
#define HRTIM_EVENTSRC_2 (HRTIM_EECR1_EE1SRC_0)
|
||||||
|
#define HRTIM_EVENTSRC_3 (HRTIM_EECR1_EE1SRC_1)
|
||||||
|
#define HRTIM_EVENTSRC_4 (HRTIM_EECR1_EE1SRC_1 | HRTIM_EECR1_EE1SRC_0)
|
||||||
|
|
||||||
|
/** @brief Constants defining the events that can be selected to configure the
|
||||||
|
* set/reset crossbar of a timer output
|
||||||
|
*/
|
||||||
|
#define HRTIM_OUTPUTSET_TIMEV_1 (HRTIM_SET1R_TIMEVNT1)
|
||||||
|
#define HRTIM_OUTPUTSET_TIMEV_2 (HRTIM_SET1R_TIMEVNT2)
|
||||||
|
#define HRTIM_OUTPUTSET_TIMEV_3 (HRTIM_SET1R_TIMEVNT3)
|
||||||
|
#define HRTIM_OUTPUTSET_TIMEV_4 (HRTIM_SET1R_TIMEVNT4)
|
||||||
|
#define HRTIM_OUTPUTSET_TIMEV_5 (HRTIM_SET1R_TIMEVNT5)
|
||||||
|
#define HRTIM_OUTPUTSET_TIMEV_6 (HRTIM_SET1R_TIMEVNT6)
|
||||||
|
#define HRTIM_OUTPUTSET_TIMEV_7 (HRTIM_SET1R_TIMEVNT7)
|
||||||
|
#define HRTIM_OUTPUTSET_TIMEV_8 (HRTIM_SET1R_TIMEVNT8)
|
||||||
|
#define HRTIM_OUTPUTSET_TIMEV_9 (HRTIM_SET1R_TIMEVNT9)
|
||||||
|
|
||||||
|
#define HRTIM_OUTPUTRESET_TIMEV_1 (HRTIM_RST1R_TIMEVNT1)
|
||||||
|
#define HRTIM_OUTPUTRESET_TIMEV_2 (HRTIM_RST1R_TIMEVNT2)
|
||||||
|
#define HRTIM_OUTPUTRESET_TIMEV_3 (HRTIM_RST1R_TIMEVNT3)
|
||||||
|
#define HRTIM_OUTPUTRESET_TIMEV_4 (HRTIM_RST1R_TIMEVNT4)
|
||||||
|
#define HRTIM_OUTPUTRESET_TIMEV_5 (HRTIM_RST1R_TIMEVNT5)
|
||||||
|
#define HRTIM_OUTPUTRESET_TIMEV_6 (HRTIM_RST1R_TIMEVNT6)
|
||||||
|
#define HRTIM_OUTPUTRESET_TIMEV_7 (HRTIM_RST1R_TIMEVNT7)
|
||||||
|
#define HRTIM_OUTPUTRESET_TIMEV_8 (HRTIM_RST1R_TIMEVNT8)
|
||||||
|
#define HRTIM_OUTPUTRESET_TIMEV_9 (HRTIM_RST1R_TIMEVNT9)
|
||||||
|
|
||||||
|
/** @brief Constants defining the event filtering applied to external events
|
||||||
|
* by a timer
|
||||||
|
*/
|
||||||
|
#define HRTIM_TIMEVENTFILTER_NONE (0x00000000U)
|
||||||
|
#define HRTIM_TIMEVENTFILTER_BLANKINGCMP1 (HRTIM_EEFR1_EE1FLTR_0)
|
||||||
|
#define HRTIM_TIMEVENTFILTER_BLANKINGCMP2 (HRTIM_EEFR1_EE1FLTR_1)
|
||||||
|
#define HRTIM_TIMEVENTFILTER_BLANKINGCMP3 (HRTIM_EEFR1_EE1FLTR_1 | HRTIM_EEFR1_EE1FLTR_0)
|
||||||
|
#define HRTIM_TIMEVENTFILTER_BLANKINGCMP4 (HRTIM_EEFR1_EE1FLTR_2)
|
||||||
|
#define HRTIM_TIMEVENTFILTER_BLANKINGFLTR1 (HRTIM_EEFR1_EE1FLTR_2 | HRTIM_EEFR1_EE1FLTR_0)
|
||||||
|
#define HRTIM_TIMEVENTFILTER_BLANKINGFLTR2 (HRTIM_EEFR1_EE1FLTR_2 | HRTIM_EEFR1_EE1FLTR_1)
|
||||||
|
#define HRTIM_TIMEVENTFILTER_BLANKINGFLTR3 (HRTIM_EEFR1_EE1FLTR_2 | HRTIM_EEFR1_EE1FLTR_1 | HRTIM_EEFR1_EE1FLTR_0)
|
||||||
|
#define HRTIM_TIMEVENTFILTER_BLANKINGFLTR4 (HRTIM_EEFR1_EE1FLTR_3)
|
||||||
|
#define HRTIM_TIMEVENTFILTER_BLANKINGFLTR5 (HRTIM_EEFR1_EE1FLTR_3 | HRTIM_EEFR1_EE1FLTR_0)
|
||||||
|
#define HRTIM_TIMEVENTFILTER_BLANKINGFLTR6 (HRTIM_EEFR1_EE1FLTR_3 | HRTIM_EEFR1_EE1FLTR_1)
|
||||||
|
#define HRTIM_TIMEVENTFILTER_BLANKINGFLTR7 (HRTIM_EEFR1_EE1FLTR_3 | HRTIM_EEFR1_EE1FLTR_1 | HRTIM_EEFR1_EE1FLTR_0)
|
||||||
|
#define HRTIM_TIMEVENTFILTER_BLANKINGFLTR8 (HRTIM_EEFR1_EE1FLTR_3 | HRTIM_EEFR1_EE1FLTR_2)
|
||||||
|
#define HRTIM_TIMEVENTFILTER_WINDOWINGCMP2 (HRTIM_EEFR1_EE1FLTR_3 | HRTIM_EEFR1_EE1FLTR_2 | HRTIM_EEFR1_EE1FLTR_0)
|
||||||
|
#define HRTIM_TIMEVENTFILTER_WINDOWINGCMP3 (HRTIM_EEFR1_EE1FLTR_3 | HRTIM_EEFR1_EE1FLTR_2 | HRTIM_EEFR1_EE1FLTR_1)
|
||||||
|
#define HRTIM_TIMEVENTFILTER_WINDOWINGTIM (HRTIM_EEFR1_EE1FLTR_3 | HRTIM_EEFR1_EE1FLTR_2 | HRTIM_EEFR1_EE1FLTR_1 | HRTIM_EEFR1_EE1FLTR_0)
|
||||||
|
|
||||||
|
/** @brief Constants defining the DLL calibration periods (in micro seconds)
|
||||||
|
*/
|
||||||
|
#define HRTIM_CALIBRATIONRATE_7300 0x00000000U
|
||||||
|
#define HRTIM_CALIBRATIONRATE_910 (HRTIM_DLLCR_CALRTE_0)
|
||||||
|
#define HRTIM_CALIBRATIONRATE_114 (HRTIM_DLLCR_CALRTE_1)
|
||||||
|
#define HRTIM_CALIBRATIONRATE_14 (HRTIM_DLLCR_CALRTE_1 | HRTIM_DLLCR_CALRTE_0)
|
||||||
|
|
||||||
|
#endif /* STM32F3 */
|
||||||
/**
|
/**
|
||||||
* @}
|
* @}
|
||||||
*/
|
*/
|
||||||
|
@ -738,6 +955,12 @@
|
||||||
#define OPAMP_PGACONNECT_VM0 OPAMP_PGA_CONNECT_INVERTINGINPUT_IO0
|
#define OPAMP_PGACONNECT_VM0 OPAMP_PGA_CONNECT_INVERTINGINPUT_IO0
|
||||||
#define OPAMP_PGACONNECT_VM1 OPAMP_PGA_CONNECT_INVERTINGINPUT_IO1
|
#define OPAMP_PGACONNECT_VM1 OPAMP_PGA_CONNECT_INVERTINGINPUT_IO1
|
||||||
|
|
||||||
|
#if defined(STM32L1) || defined(STM32L4) || defined(STM32L5) || defined(STM32H7)
|
||||||
|
#define HAL_OPAMP_MSP_INIT_CB_ID HAL_OPAMP_MSPINIT_CB_ID
|
||||||
|
#define HAL_OPAMP_MSP_DEINIT_CB_ID HAL_OPAMP_MSPDEINIT_CB_ID
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @}
|
* @}
|
||||||
*/
|
*/
|
||||||
|
@ -753,7 +976,6 @@
|
||||||
|
|
||||||
#define I2S_FLAG_TXE I2S_FLAG_TXP
|
#define I2S_FLAG_TXE I2S_FLAG_TXP
|
||||||
#define I2S_FLAG_RXNE I2S_FLAG_RXP
|
#define I2S_FLAG_RXNE I2S_FLAG_RXP
|
||||||
#define I2S_FLAG_FRE I2S_FLAG_TIFRE
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#if defined(STM32F7)
|
#if defined(STM32F7)
|
||||||
|
@ -824,6 +1046,16 @@
|
||||||
#define RTC_TAMPERPIN_PA0 RTC_TAMPERPIN_POS1
|
#define RTC_TAMPERPIN_PA0 RTC_TAMPERPIN_POS1
|
||||||
#define RTC_TAMPERPIN_PI8 RTC_TAMPERPIN_POS1
|
#define RTC_TAMPERPIN_PI8 RTC_TAMPERPIN_POS1
|
||||||
|
|
||||||
|
#if defined(STM32H7)
|
||||||
|
#define RTC_TAMPCR_TAMPXE RTC_TAMPER_X
|
||||||
|
#define RTC_TAMPCR_TAMPXIE RTC_TAMPER_X_INTERRUPT
|
||||||
|
|
||||||
|
#define RTC_TAMPER1_INTERRUPT RTC_IT_TAMP1
|
||||||
|
#define RTC_TAMPER2_INTERRUPT RTC_IT_TAMP2
|
||||||
|
#define RTC_TAMPER3_INTERRUPT RTC_IT_TAMP3
|
||||||
|
#define RTC_ALL_TAMPER_INTERRUPT RTC_IT_TAMPALL
|
||||||
|
#endif /* STM32H7 */
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @}
|
* @}
|
||||||
*/
|
*/
|
||||||
|
@ -971,6 +1203,24 @@
|
||||||
#define IS_TIM_HALL_INTERFACE_INSTANCE IS_TIM_HALL_SENSOR_INTERFACE_INSTANCE
|
#define IS_TIM_HALL_INTERFACE_INSTANCE IS_TIM_HALL_SENSOR_INTERFACE_INSTANCE
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#if defined(STM32H7)
|
||||||
|
#define TIM_TIM1_ETR_COMP1_OUT TIM_TIM1_ETR_COMP1
|
||||||
|
#define TIM_TIM1_ETR_COMP2_OUT TIM_TIM1_ETR_COMP2
|
||||||
|
#define TIM_TIM8_ETR_COMP1_OUT TIM_TIM8_ETR_COMP1
|
||||||
|
#define TIM_TIM8_ETR_COMP2_OUT TIM_TIM8_ETR_COMP2
|
||||||
|
#define TIM_TIM2_ETR_COMP1_OUT TIM_TIM2_ETR_COMP1
|
||||||
|
#define TIM_TIM2_ETR_COMP2_OUT TIM_TIM2_ETR_COMP2
|
||||||
|
#define TIM_TIM3_ETR_COMP1_OUT TIM_TIM3_ETR_COMP1
|
||||||
|
#define TIM_TIM1_TI1_COMP1_OUT TIM_TIM1_TI1_COMP1
|
||||||
|
#define TIM_TIM8_TI1_COMP2_OUT TIM_TIM8_TI1_COMP2
|
||||||
|
#define TIM_TIM2_TI4_COMP1_OUT TIM_TIM2_TI4_COMP1
|
||||||
|
#define TIM_TIM2_TI4_COMP2_OUT TIM_TIM2_TI4_COMP2
|
||||||
|
#define TIM_TIM2_TI4_COMP1COMP2_OUT TIM_TIM2_TI4_COMP1_COMP2
|
||||||
|
#define TIM_TIM3_TI1_COMP1_OUT TIM_TIM3_TI1_COMP1
|
||||||
|
#define TIM_TIM3_TI1_COMP2_OUT TIM_TIM3_TI1_COMP2
|
||||||
|
#define TIM_TIM3_TI1_COMP1COMP2_OUT TIM_TIM3_TI1_COMP1_COMP2
|
||||||
|
#endif
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @}
|
* @}
|
||||||
*/
|
*/
|
||||||
|
@ -1199,6 +1449,30 @@
|
||||||
|
|
||||||
#define HASH_HMACKeyType_ShortKey HASH_HMAC_KEYTYPE_SHORTKEY
|
#define HASH_HMACKeyType_ShortKey HASH_HMAC_KEYTYPE_SHORTKEY
|
||||||
#define HASH_HMACKeyType_LongKey HASH_HMAC_KEYTYPE_LONGKEY
|
#define HASH_HMACKeyType_LongKey HASH_HMAC_KEYTYPE_LONGKEY
|
||||||
|
|
||||||
|
#if defined(STM32L4) || defined(STM32F4) || defined(STM32F7) || defined(STM32H7)
|
||||||
|
|
||||||
|
#define HAL_HASH_MD5_Accumulate HAL_HASH_MD5_Accmlt
|
||||||
|
#define HAL_HASH_MD5_Accumulate_End HAL_HASH_MD5_Accmlt_End
|
||||||
|
#define HAL_HASH_MD5_Accumulate_IT HAL_HASH_MD5_Accmlt_IT
|
||||||
|
#define HAL_HASH_MD5_Accumulate_End_IT HAL_HASH_MD5_Accmlt_End_IT
|
||||||
|
|
||||||
|
#define HAL_HASH_SHA1_Accumulate HAL_HASH_SHA1_Accmlt
|
||||||
|
#define HAL_HASH_SHA1_Accumulate_End HAL_HASH_SHA1_Accmlt_End
|
||||||
|
#define HAL_HASH_SHA1_Accumulate_IT HAL_HASH_SHA1_Accmlt_IT
|
||||||
|
#define HAL_HASH_SHA1_Accumulate_End_IT HAL_HASH_SHA1_Accmlt_End_IT
|
||||||
|
|
||||||
|
#define HAL_HASHEx_SHA224_Accumulate HAL_HASHEx_SHA224_Accmlt
|
||||||
|
#define HAL_HASHEx_SHA224_Accumulate_End HAL_HASHEx_SHA224_Accmlt_End
|
||||||
|
#define HAL_HASHEx_SHA224_Accumulate_IT HAL_HASHEx_SHA224_Accmlt_IT
|
||||||
|
#define HAL_HASHEx_SHA224_Accumulate_End_IT HAL_HASHEx_SHA224_Accmlt_End_IT
|
||||||
|
|
||||||
|
#define HAL_HASHEx_SHA256_Accumulate HAL_HASHEx_SHA256_Accmlt
|
||||||
|
#define HAL_HASHEx_SHA256_Accumulate_End HAL_HASHEx_SHA256_Accmlt_End
|
||||||
|
#define HAL_HASHEx_SHA256_Accumulate_IT HAL_HASHEx_SHA256_Accmlt_IT
|
||||||
|
#define HAL_HASHEx_SHA256_Accumulate_End_IT HAL_HASHEx_SHA256_Accmlt_End_IT
|
||||||
|
|
||||||
|
#endif /* STM32L4 || STM32F4 || STM32F7 || STM32H7 */
|
||||||
/**
|
/**
|
||||||
* @}
|
* @}
|
||||||
*/
|
*/
|
||||||
|
@ -1221,6 +1495,13 @@
|
||||||
#endif
|
#endif
|
||||||
#define HAL_ADC_EnableBuffer_Cmd(cmd) (((cmd)==ENABLE) ? HAL_ADCEx_EnableVREFINT() : HAL_ADCEx_DisableVREFINT())
|
#define HAL_ADC_EnableBuffer_Cmd(cmd) (((cmd)==ENABLE) ? HAL_ADCEx_EnableVREFINT() : HAL_ADCEx_DisableVREFINT())
|
||||||
#define HAL_ADC_EnableBufferSensor_Cmd(cmd) (((cmd)==ENABLE) ? HAL_ADCEx_EnableVREFINTTempSensor() : HAL_ADCEx_DisableVREFINTTempSensor())
|
#define HAL_ADC_EnableBufferSensor_Cmd(cmd) (((cmd)==ENABLE) ? HAL_ADCEx_EnableVREFINTTempSensor() : HAL_ADCEx_DisableVREFINTTempSensor())
|
||||||
|
#if defined(STM32H7A3xx) || defined(STM32H7B3xx) || defined(STM32H7B0xx) || defined(STM32H7A3xxQ) || defined(STM32H7B3xxQ) || defined(STM32H7B0xxQ)
|
||||||
|
#define HAL_EnableSRDomainDBGStopMode HAL_EnableDomain3DBGStopMode
|
||||||
|
#define HAL_DisableSRDomainDBGStopMode HAL_DisableDomain3DBGStopMode
|
||||||
|
#define HAL_EnableSRDomainDBGStandbyMode HAL_EnableDomain3DBGStandbyMode
|
||||||
|
#define HAL_DisableSRDomainDBGStandbyMode HAL_DisableDomain3DBGStandbyMode
|
||||||
|
#endif /* STM32H7A3xx || STM32H7B3xx || STM32H7B0xx || STM32H7A3xxQ || STM32H7B3xxQ || STM32H7B0xxQ */
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @}
|
* @}
|
||||||
*/
|
*/
|
||||||
|
@ -1250,16 +1531,18 @@
|
||||||
|
|
||||||
#define HAL_I2CFastModePlusConfig(SYSCFG_I2CFastModePlus, cmd) (((cmd)==ENABLE)? HAL_I2CEx_EnableFastModePlus(SYSCFG_I2CFastModePlus): HAL_I2CEx_DisableFastModePlus(SYSCFG_I2CFastModePlus))
|
#define HAL_I2CFastModePlusConfig(SYSCFG_I2CFastModePlus, cmd) (((cmd)==ENABLE)? HAL_I2CEx_EnableFastModePlus(SYSCFG_I2CFastModePlus): HAL_I2CEx_DisableFastModePlus(SYSCFG_I2CFastModePlus))
|
||||||
|
|
||||||
#if defined(STM32H7) || defined(STM32WB) || defined(STM32G0) || defined(STM32F4) || defined(STM32F7)
|
#if defined(STM32H7) || defined(STM32WB) || defined(STM32G0) || defined(STM32F0) || defined(STM32F1) || defined(STM32F2) || defined(STM32F3) || defined(STM32F4) || defined(STM32F7) || defined(STM32L0) || defined(STM32L4) || defined(STM32L5) || defined(STM32G4)
|
||||||
#define HAL_I2C_Master_Sequential_Transmit_IT HAL_I2C_Master_Seq_Transmit_IT
|
#define HAL_I2C_Master_Sequential_Transmit_IT HAL_I2C_Master_Seq_Transmit_IT
|
||||||
#define HAL_I2C_Master_Sequential_Receive_IT HAL_I2C_Master_Seq_Receive_IT
|
#define HAL_I2C_Master_Sequential_Receive_IT HAL_I2C_Master_Seq_Receive_IT
|
||||||
#define HAL_I2C_Slave_Sequential_Transmit_IT HAL_I2C_Slave_Seq_Transmit_IT
|
#define HAL_I2C_Slave_Sequential_Transmit_IT HAL_I2C_Slave_Seq_Transmit_IT
|
||||||
#define HAL_I2C_Slave_Sequential_Receive_IT HAL_I2C_Slave_Seq_Receive_IT
|
#define HAL_I2C_Slave_Sequential_Receive_IT HAL_I2C_Slave_Seq_Receive_IT
|
||||||
|
#endif /* STM32H7 || STM32WB || STM32G0 || STM32F0 || STM32F1 || STM32F2 || STM32F3 || STM32F4 || STM32F7 || STM32L0 || STM32L4 || STM32L5 || STM32G4 */
|
||||||
|
#if defined(STM32H7) || defined(STM32WB) || defined(STM32G0) || defined(STM32F4) || defined(STM32F7) || defined(STM32L0) || defined(STM32L4) || defined(STM32L5) || defined(STM32G4)
|
||||||
#define HAL_I2C_Master_Sequential_Transmit_DMA HAL_I2C_Master_Seq_Transmit_DMA
|
#define HAL_I2C_Master_Sequential_Transmit_DMA HAL_I2C_Master_Seq_Transmit_DMA
|
||||||
#define HAL_I2C_Master_Sequential_Receive_DMA HAL_I2C_Master_Seq_Receive_DMA
|
#define HAL_I2C_Master_Sequential_Receive_DMA HAL_I2C_Master_Seq_Receive_DMA
|
||||||
#define HAL_I2C_Slave_Sequential_Transmit_DMA HAL_I2C_Slave_Seq_Transmit_DMA
|
#define HAL_I2C_Slave_Sequential_Transmit_DMA HAL_I2C_Slave_Seq_Transmit_DMA
|
||||||
#define HAL_I2C_Slave_Sequential_Receive_DMA HAL_I2C_Slave_Seq_Receive_DMA
|
#define HAL_I2C_Slave_Sequential_Receive_DMA HAL_I2C_Slave_Seq_Receive_DMA
|
||||||
#endif /* STM32H7 || STM32WB || STM32G0 || STM32F4 || STM32F7 */
|
#endif /* STM32H7 || STM32WB || STM32G0 || STM32F4 || STM32F7 || STM32L0 || STM32L4 || STM32L5 || STM32G4 */
|
||||||
|
|
||||||
#if defined(STM32F4)
|
#if defined(STM32F4)
|
||||||
#define HAL_FMPI2C_Master_Sequential_Transmit_IT HAL_FMPI2C_Master_Seq_Transmit_IT
|
#define HAL_FMPI2C_Master_Sequential_Transmit_IT HAL_FMPI2C_Master_Seq_Transmit_IT
|
||||||
|
@ -1278,6 +1561,13 @@
|
||||||
/** @defgroup HAL_PWR_Aliased HAL PWR Aliased maintained for legacy purpose
|
/** @defgroup HAL_PWR_Aliased HAL PWR Aliased maintained for legacy purpose
|
||||||
* @{
|
* @{
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
#if defined(STM32G0)
|
||||||
|
#define HAL_PWR_ConfigPVD HAL_PWREx_ConfigPVD
|
||||||
|
#define HAL_PWR_EnablePVD HAL_PWREx_EnablePVD
|
||||||
|
#define HAL_PWR_DisablePVD HAL_PWREx_DisablePVD
|
||||||
|
#define HAL_PWR_PVD_IRQHandler HAL_PWREx_PVD_IRQHandler
|
||||||
|
#endif
|
||||||
#define HAL_PWR_PVDConfig HAL_PWR_ConfigPVD
|
#define HAL_PWR_PVDConfig HAL_PWR_ConfigPVD
|
||||||
#define HAL_PWR_DisableBkUpReg HAL_PWREx_DisableBkUpReg
|
#define HAL_PWR_DisableBkUpReg HAL_PWREx_DisableBkUpReg
|
||||||
#define HAL_PWR_DisableFlashPowerDown HAL_PWREx_DisableFlashPowerDown
|
#define HAL_PWR_DisableFlashPowerDown HAL_PWREx_DisableFlashPowerDown
|
||||||
|
@ -1350,14 +1640,14 @@
|
||||||
#define HAL_TIM_DMAError TIM_DMAError
|
#define HAL_TIM_DMAError TIM_DMAError
|
||||||
#define HAL_TIM_DMACaptureCplt TIM_DMACaptureCplt
|
#define HAL_TIM_DMACaptureCplt TIM_DMACaptureCplt
|
||||||
#define HAL_TIMEx_DMACommutationCplt TIMEx_DMACommutationCplt
|
#define HAL_TIMEx_DMACommutationCplt TIMEx_DMACommutationCplt
|
||||||
#if defined(STM32H7) || defined(STM32G0) || defined(STM32F7) || defined(STM32F4) || defined(STM32L0)
|
#if defined(STM32H7) || defined(STM32G0) || defined(STM32F0) || defined(STM32F1) || defined(STM32F2) || defined(STM32F3) || defined(STM32F4) || defined(STM32F7) || defined(STM32L0) || defined(STM32L4)
|
||||||
#define HAL_TIM_SlaveConfigSynchronization HAL_TIM_SlaveConfigSynchro
|
#define HAL_TIM_SlaveConfigSynchronization HAL_TIM_SlaveConfigSynchro
|
||||||
#define HAL_TIM_SlaveConfigSynchronization_IT HAL_TIM_SlaveConfigSynchro_IT
|
#define HAL_TIM_SlaveConfigSynchronization_IT HAL_TIM_SlaveConfigSynchro_IT
|
||||||
#define HAL_TIMEx_CommutationCallback HAL_TIMEx_CommutCallback
|
#define HAL_TIMEx_CommutationCallback HAL_TIMEx_CommutCallback
|
||||||
#define HAL_TIMEx_ConfigCommutationEvent HAL_TIMEx_ConfigCommutEvent
|
#define HAL_TIMEx_ConfigCommutationEvent HAL_TIMEx_ConfigCommutEvent
|
||||||
#define HAL_TIMEx_ConfigCommutationEvent_IT HAL_TIMEx_ConfigCommutEvent_IT
|
#define HAL_TIMEx_ConfigCommutationEvent_IT HAL_TIMEx_ConfigCommutEvent_IT
|
||||||
#define HAL_TIMEx_ConfigCommutationEvent_DMA HAL_TIMEx_ConfigCommutEvent_DMA
|
#define HAL_TIMEx_ConfigCommutationEvent_DMA HAL_TIMEx_ConfigCommutEvent_DMA
|
||||||
#endif /* STM32H7 || STM32G0 || STM32F7 || STM32F4 || STM32L0 */
|
#endif /* STM32H7 || STM32G0 || STM32F0 || STM32F1 || STM32F2 || STM32F3 || STM32F4 || STM32F7 || STM32L0 */
|
||||||
/**
|
/**
|
||||||
* @}
|
* @}
|
||||||
*/
|
*/
|
||||||
|
@ -2476,12 +2766,28 @@
|
||||||
#define __USB_OTG_FS_CLK_DISABLE __HAL_RCC_USB_OTG_FS_CLK_DISABLE
|
#define __USB_OTG_FS_CLK_DISABLE __HAL_RCC_USB_OTG_FS_CLK_DISABLE
|
||||||
#define __USB_OTG_FS_CLK_ENABLE __HAL_RCC_USB_OTG_FS_CLK_ENABLE
|
#define __USB_OTG_FS_CLK_ENABLE __HAL_RCC_USB_OTG_FS_CLK_ENABLE
|
||||||
#define __USB_RELEASE_RESET __HAL_RCC_USB_RELEASE_RESET
|
#define __USB_RELEASE_RESET __HAL_RCC_USB_RELEASE_RESET
|
||||||
|
|
||||||
|
#if defined(STM32H7)
|
||||||
|
#define __HAL_RCC_WWDG_CLK_DISABLE __HAL_RCC_WWDG1_CLK_DISABLE
|
||||||
|
#define __HAL_RCC_WWDG_CLK_ENABLE __HAL_RCC_WWDG1_CLK_ENABLE
|
||||||
|
#define __HAL_RCC_WWDG_CLK_SLEEP_DISABLE __HAL_RCC_WWDG1_CLK_SLEEP_DISABLE
|
||||||
|
#define __HAL_RCC_WWDG_CLK_SLEEP_ENABLE __HAL_RCC_WWDG1_CLK_SLEEP_ENABLE
|
||||||
|
|
||||||
|
#define __HAL_RCC_WWDG_FORCE_RESET ((void)0U) /* Not available on the STM32H7*/
|
||||||
|
#define __HAL_RCC_WWDG_RELEASE_RESET ((void)0U) /* Not available on the STM32H7*/
|
||||||
|
|
||||||
|
|
||||||
|
#define __HAL_RCC_WWDG_IS_CLK_ENABLED __HAL_RCC_WWDG1_IS_CLK_ENABLED
|
||||||
|
#define __HAL_RCC_WWDG_IS_CLK_DISABLED __HAL_RCC_WWDG1_IS_CLK_DISABLED
|
||||||
|
#endif
|
||||||
|
|
||||||
#define __WWDG_CLK_DISABLE __HAL_RCC_WWDG_CLK_DISABLE
|
#define __WWDG_CLK_DISABLE __HAL_RCC_WWDG_CLK_DISABLE
|
||||||
#define __WWDG_CLK_ENABLE __HAL_RCC_WWDG_CLK_ENABLE
|
#define __WWDG_CLK_ENABLE __HAL_RCC_WWDG_CLK_ENABLE
|
||||||
#define __WWDG_CLK_SLEEP_DISABLE __HAL_RCC_WWDG_CLK_SLEEP_DISABLE
|
#define __WWDG_CLK_SLEEP_DISABLE __HAL_RCC_WWDG_CLK_SLEEP_DISABLE
|
||||||
#define __WWDG_CLK_SLEEP_ENABLE __HAL_RCC_WWDG_CLK_SLEEP_ENABLE
|
#define __WWDG_CLK_SLEEP_ENABLE __HAL_RCC_WWDG_CLK_SLEEP_ENABLE
|
||||||
#define __WWDG_FORCE_RESET __HAL_RCC_WWDG_FORCE_RESET
|
#define __WWDG_FORCE_RESET __HAL_RCC_WWDG_FORCE_RESET
|
||||||
#define __WWDG_RELEASE_RESET __HAL_RCC_WWDG_RELEASE_RESET
|
#define __WWDG_RELEASE_RESET __HAL_RCC_WWDG_RELEASE_RESET
|
||||||
|
|
||||||
#define __TIM21_CLK_ENABLE __HAL_RCC_TIM21_CLK_ENABLE
|
#define __TIM21_CLK_ENABLE __HAL_RCC_TIM21_CLK_ENABLE
|
||||||
#define __TIM21_CLK_DISABLE __HAL_RCC_TIM21_CLK_DISABLE
|
#define __TIM21_CLK_DISABLE __HAL_RCC_TIM21_CLK_DISABLE
|
||||||
#define __TIM21_FORCE_RESET __HAL_RCC_TIM21_FORCE_RESET
|
#define __TIM21_FORCE_RESET __HAL_RCC_TIM21_FORCE_RESET
|
||||||
|
@ -2814,6 +3120,15 @@
|
||||||
#define __WWDG_IS_CLK_ENABLED __HAL_RCC_WWDG_IS_CLK_ENABLED
|
#define __WWDG_IS_CLK_ENABLED __HAL_RCC_WWDG_IS_CLK_ENABLED
|
||||||
#define __WWDG_IS_CLK_DISABLED __HAL_RCC_WWDG_IS_CLK_DISABLED
|
#define __WWDG_IS_CLK_DISABLED __HAL_RCC_WWDG_IS_CLK_DISABLED
|
||||||
|
|
||||||
|
#if defined(STM32L1)
|
||||||
|
#define __HAL_RCC_CRYP_CLK_DISABLE __HAL_RCC_AES_CLK_DISABLE
|
||||||
|
#define __HAL_RCC_CRYP_CLK_ENABLE __HAL_RCC_AES_CLK_ENABLE
|
||||||
|
#define __HAL_RCC_CRYP_CLK_SLEEP_DISABLE __HAL_RCC_AES_CLK_SLEEP_DISABLE
|
||||||
|
#define __HAL_RCC_CRYP_CLK_SLEEP_ENABLE __HAL_RCC_AES_CLK_SLEEP_ENABLE
|
||||||
|
#define __HAL_RCC_CRYP_FORCE_RESET __HAL_RCC_AES_FORCE_RESET
|
||||||
|
#define __HAL_RCC_CRYP_RELEASE_RESET __HAL_RCC_AES_RELEASE_RESET
|
||||||
|
#endif /* STM32L1 */
|
||||||
|
|
||||||
#if defined(STM32F4)
|
#if defined(STM32F4)
|
||||||
#define __HAL_RCC_SDMMC1_FORCE_RESET __HAL_RCC_SDIO_FORCE_RESET
|
#define __HAL_RCC_SDMMC1_FORCE_RESET __HAL_RCC_SDIO_FORCE_RESET
|
||||||
#define __HAL_RCC_SDMMC1_RELEASE_RESET __HAL_RCC_SDIO_RELEASE_RESET
|
#define __HAL_RCC_SDMMC1_RELEASE_RESET __HAL_RCC_SDIO_RELEASE_RESET
|
||||||
|
@ -2930,7 +3245,7 @@
|
||||||
|
|
||||||
#if defined(STM32L4)
|
#if defined(STM32L4)
|
||||||
#define RCC_RTCCLKSOURCE_NO_CLK RCC_RTCCLKSOURCE_NONE
|
#define RCC_RTCCLKSOURCE_NO_CLK RCC_RTCCLKSOURCE_NONE
|
||||||
#elif defined(STM32WB) || defined(STM32G0)
|
#elif defined(STM32WB) || defined(STM32G0) || defined(STM32G4) || defined(STM32L5)
|
||||||
#else
|
#else
|
||||||
#define RCC_RTCCLKSOURCE_NONE RCC_RTCCLKSOURCE_NO_CLK
|
#define RCC_RTCCLKSOURCE_NONE RCC_RTCCLKSOURCE_NO_CLK
|
||||||
#endif
|
#endif
|
||||||
|
@ -3058,7 +3373,7 @@
|
||||||
/** @defgroup HAL_RTC_Aliased_Macros HAL RTC Aliased Macros maintained for legacy purpose
|
/** @defgroup HAL_RTC_Aliased_Macros HAL RTC Aliased Macros maintained for legacy purpose
|
||||||
* @{
|
* @{
|
||||||
*/
|
*/
|
||||||
#if defined (STM32G0) || defined (STM32L412xx) || defined (STM32L422xx) || defined (STM32L4P5xx) || defined (STM32L4Q5xx)
|
#if defined (STM32G0) || defined (STM32L5) || defined (STM32L412xx) || defined (STM32L422xx) || defined (STM32L4P5xx) || defined (STM32L4Q5xx) || defined (STM32G4)
|
||||||
#else
|
#else
|
||||||
#define __HAL_RTC_CLEAR_FLAG __HAL_RTC_EXTI_CLEAR_FLAG
|
#define __HAL_RTC_CLEAR_FLAG __HAL_RTC_EXTI_CLEAR_FLAG
|
||||||
#endif
|
#endif
|
||||||
|
@ -3174,14 +3489,14 @@
|
||||||
#define SDIO_IRQHandler SDMMC1_IRQHandler
|
#define SDIO_IRQHandler SDMMC1_IRQHandler
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#if defined(STM32F7) || defined(STM32F4) || defined(STM32F2)
|
#if defined(STM32F7) || defined(STM32F4) || defined(STM32F2) || defined(STM32L4) || defined(STM32H7)
|
||||||
#define HAL_SD_CardCIDTypedef HAL_SD_CardCIDTypeDef
|
#define HAL_SD_CardCIDTypedef HAL_SD_CardCIDTypeDef
|
||||||
#define HAL_SD_CardCSDTypedef HAL_SD_CardCSDTypeDef
|
#define HAL_SD_CardCSDTypedef HAL_SD_CardCSDTypeDef
|
||||||
#define HAL_SD_CardStatusTypedef HAL_SD_CardStatusTypeDef
|
#define HAL_SD_CardStatusTypedef HAL_SD_CardStatusTypeDef
|
||||||
#define HAL_SD_CardStateTypedef HAL_SD_CardStateTypeDef
|
#define HAL_SD_CardStateTypedef HAL_SD_CardStateTypeDef
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#if defined(STM32H7)
|
#if defined(STM32H7) || defined(STM32L5)
|
||||||
#define HAL_MMCEx_Read_DMADoubleBuffer0CpltCallback HAL_MMCEx_Read_DMADoubleBuf0CpltCallback
|
#define HAL_MMCEx_Read_DMADoubleBuffer0CpltCallback HAL_MMCEx_Read_DMADoubleBuf0CpltCallback
|
||||||
#define HAL_MMCEx_Read_DMADoubleBuffer1CpltCallback HAL_MMCEx_Read_DMADoubleBuf1CpltCallback
|
#define HAL_MMCEx_Read_DMADoubleBuffer1CpltCallback HAL_MMCEx_Read_DMADoubleBuf1CpltCallback
|
||||||
#define HAL_MMCEx_Write_DMADoubleBuffer0CpltCallback HAL_MMCEx_Write_DMADoubleBuf0CpltCallback
|
#define HAL_MMCEx_Write_DMADoubleBuffer0CpltCallback HAL_MMCEx_Write_DMADoubleBuf0CpltCallback
|
||||||
|
@ -3421,18 +3736,28 @@
|
||||||
/** @defgroup HAL_HRTIM_Aliased_Functions HAL HRTIM Aliased Functions maintained for legacy purpose
|
/** @defgroup HAL_HRTIM_Aliased_Functions HAL HRTIM Aliased Functions maintained for legacy purpose
|
||||||
* @{
|
* @{
|
||||||
*/
|
*/
|
||||||
#if defined (STM32H7) || defined (STM32F3)
|
#if defined (STM32H7) || defined (STM32G4) || defined (STM32F3)
|
||||||
#define HAL_HRTIM_WaveformCounterStart_IT HAL_HRTIM_WaveformCountStart_IT
|
#define HAL_HRTIM_WaveformCounterStart_IT HAL_HRTIM_WaveformCountStart_IT
|
||||||
#define HAL_HRTIM_WaveformCounterStart_DMA HAL_HRTIM_WaveformCountStart_DMA
|
#define HAL_HRTIM_WaveformCounterStart_DMA HAL_HRTIM_WaveformCountStart_DMA
|
||||||
#define HAL_HRTIM_WaveformCounterStart HAL_HRTIM_WaveformCountStart
|
#define HAL_HRTIM_WaveformCounterStart HAL_HRTIM_WaveformCountStart
|
||||||
#define HAL_HRTIM_WaveformCounterStop_IT HAL_HRTIM_WaveformCountStop_IT
|
#define HAL_HRTIM_WaveformCounterStop_IT HAL_HRTIM_WaveformCountStop_IT
|
||||||
#define HAL_HRTIM_WaveformCounterStop_DMA HAL_HRTIM_WaveformCountStop_DMA
|
#define HAL_HRTIM_WaveformCounterStop_DMA HAL_HRTIM_WaveformCountStop_DMA
|
||||||
#define HAL_HRTIM_WaveformCounterStop HAL_HRTIM_WaveformCountStop
|
#define HAL_HRTIM_WaveformCounterStop HAL_HRTIM_WaveformCountStop
|
||||||
#endif
|
#endif
|
||||||
/**
|
/**
|
||||||
* @}
|
* @}
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
/** @defgroup HAL_QSPI_Aliased_Macros HAL QSPI Aliased Macros maintained for legacy purpose
|
||||||
|
* @{
|
||||||
|
*/
|
||||||
|
#if defined (STM32L4) || defined (STM32F4) || defined (STM32F7)
|
||||||
|
#define HAL_QPSI_TIMEOUT_DEFAULT_VALUE HAL_QSPI_TIMEOUT_DEFAULT_VALUE
|
||||||
|
#endif /* STM32L4 || STM32F4 || STM32F7 */
|
||||||
|
/**
|
||||||
|
* @}
|
||||||
|
*/
|
||||||
|
|
||||||
/** @defgroup HAL_PPP_Aliased_Macros HAL PPP Aliased Macros maintained for legacy purpose
|
/** @defgroup HAL_PPP_Aliased_Macros HAL PPP Aliased Macros maintained for legacy purpose
|
||||||
* @{
|
* @{
|
||||||
*/
|
*/
|
||||||
|
|
|
@ -18,8 +18,8 @@
|
||||||
*/
|
*/
|
||||||
|
|
||||||
/* Define to prevent recursive inclusion -------------------------------------*/
|
/* Define to prevent recursive inclusion -------------------------------------*/
|
||||||
#ifndef __STM32F7xx_HAL_EXTI_H
|
#ifndef STM32F7xx_HAL_EXTI_H
|
||||||
#define __STM32F7xx_HAL_EXTI_H
|
#define STM32F7xx_HAL_EXTI_H
|
||||||
|
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
extern "C" {
|
extern "C" {
|
||||||
|
@ -38,14 +38,13 @@ extern "C" {
|
||||||
*/
|
*/
|
||||||
|
|
||||||
/* Exported types ------------------------------------------------------------*/
|
/* Exported types ------------------------------------------------------------*/
|
||||||
|
|
||||||
/** @defgroup EXTI_Exported_Types EXTI Exported Types
|
/** @defgroup EXTI_Exported_Types EXTI Exported Types
|
||||||
* @{
|
* @{
|
||||||
*/
|
*/
|
||||||
typedef enum
|
typedef enum
|
||||||
{
|
{
|
||||||
HAL_EXTI_COMMON_CB_ID = 0x00U,
|
HAL_EXTI_COMMON_CB_ID = 0x00U
|
||||||
HAL_EXTI_RISING_CB_ID = 0x01U,
|
|
||||||
HAL_EXTI_FALLING_CB_ID = 0x02U,
|
|
||||||
} EXTI_CallbackIDTypeDef;
|
} EXTI_CallbackIDTypeDef;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -68,6 +67,9 @@ typedef struct
|
||||||
This parameter can be a combination of @ref EXTI_Mode */
|
This parameter can be a combination of @ref EXTI_Mode */
|
||||||
uint32_t Trigger; /*!< The Exti Trigger to be configured. This parameter
|
uint32_t Trigger; /*!< The Exti Trigger to be configured. This parameter
|
||||||
can be a value of @ref EXTI_Trigger */
|
can be a value of @ref EXTI_Trigger */
|
||||||
|
uint32_t GPIOSel; /*!< The Exti GPIO multiplexer selection to be configured.
|
||||||
|
This parameter is only possible for line 0 to 15. It
|
||||||
|
can be a value of @ref EXTI_GPIOSel */
|
||||||
} EXTI_ConfigTypeDef;
|
} EXTI_ConfigTypeDef;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -82,48 +84,36 @@ typedef struct
|
||||||
/** @defgroup EXTI_Line EXTI Line
|
/** @defgroup EXTI_Line EXTI Line
|
||||||
* @{
|
* @{
|
||||||
*/
|
*/
|
||||||
#define EXTI_LINE_0 EXTI_IMR_IM0 /*!< External interrupt line 0 */
|
#define EXTI_LINE_0 (EXTI_GPIO | 0x00u) /*!< External interrupt line 0 */
|
||||||
#define EXTI_LINE_1 EXTI_IMR_IM1 /*!< External interrupt line 1 */
|
#define EXTI_LINE_1 (EXTI_GPIO | 0x01u) /*!< External interrupt line 1 */
|
||||||
#define EXTI_LINE_2 EXTI_IMR_IM2 /*!< External interrupt line 2 */
|
#define EXTI_LINE_2 (EXTI_GPIO | 0x02u) /*!< External interrupt line 2 */
|
||||||
#define EXTI_LINE_3 EXTI_IMR_IM3 /*!< External interrupt line 3 */
|
#define EXTI_LINE_3 (EXTI_GPIO | 0x03u) /*!< External interrupt line 3 */
|
||||||
#define EXTI_LINE_4 EXTI_IMR_IM4 /*!< External interrupt line 4 */
|
#define EXTI_LINE_4 (EXTI_GPIO | 0x04u) /*!< External interrupt line 4 */
|
||||||
#define EXTI_LINE_5 EXTI_IMR_IM5 /*!< External interrupt line 5 */
|
#define EXTI_LINE_5 (EXTI_GPIO | 0x05u) /*!< External interrupt line 5 */
|
||||||
#define EXTI_LINE_6 EXTI_IMR_IM6 /*!< External interrupt line 6 */
|
#define EXTI_LINE_6 (EXTI_GPIO | 0x06u) /*!< External interrupt line 6 */
|
||||||
#define EXTI_LINE_7 EXTI_IMR_IM7 /*!< External interrupt line 7 */
|
#define EXTI_LINE_7 (EXTI_GPIO | 0x07u) /*!< External interrupt line 7 */
|
||||||
#define EXTI_LINE_8 EXTI_IMR_IM8 /*!< External interrupt line 8 */
|
#define EXTI_LINE_8 (EXTI_GPIO | 0x08u) /*!< External interrupt line 8 */
|
||||||
#define EXTI_LINE_9 EXTI_IMR_IM9 /*!< External interrupt line 9 */
|
#define EXTI_LINE_9 (EXTI_GPIO | 0x09u) /*!< External interrupt line 9 */
|
||||||
#define EXTI_LINE_10 EXTI_IMR_IM10 /*!< External interrupt line 10 */
|
#define EXTI_LINE_10 (EXTI_GPIO | 0x0Au) /*!< External interrupt line 10 */
|
||||||
#define EXTI_LINE_11 EXTI_IMR_IM11 /*!< External interrupt line 11 */
|
#define EXTI_LINE_11 (EXTI_GPIO | 0x0Bu) /*!< External interrupt line 11 */
|
||||||
#define EXTI_LINE_12 EXTI_IMR_IM12 /*!< External interrupt line 12 */
|
#define EXTI_LINE_12 (EXTI_GPIO | 0x0Cu) /*!< External interrupt line 12 */
|
||||||
#define EXTI_LINE_13 EXTI_IMR_IM13 /*!< External interrupt line 13 */
|
#define EXTI_LINE_13 (EXTI_GPIO | 0x0Du) /*!< External interrupt line 13 */
|
||||||
#define EXTI_LINE_14 EXTI_IMR_IM14 /*!< External interrupt line 14 */
|
#define EXTI_LINE_14 (EXTI_GPIO | 0x0Eu) /*!< External interrupt line 14 */
|
||||||
#define EXTI_LINE_15 EXTI_IMR_IM15 /*!< External interrupt line 15 */
|
#define EXTI_LINE_15 (EXTI_GPIO | 0x0Fu) /*!< External interrupt line 15 */
|
||||||
#if defined(EXTI_IMR_IM16)
|
#define EXTI_LINE_16 (EXTI_CONFIG | 0x10u) /*!< External interrupt line 16 Connected to the PVD Output */
|
||||||
#define EXTI_LINE_16 EXTI_IMR_IM16 /*!< External interrupt line 16 Connected to the PVD Output */
|
#define EXTI_LINE_17 (EXTI_CONFIG | 0x11u) /*!< External interrupt line 17 Connected to the RTC Alarm event */
|
||||||
#endif /* EXTI_IMR_IM16 */
|
#define EXTI_LINE_18 (EXTI_CONFIG | 0x12u) /*!< External interrupt line 18 Connected to the USB OTG FS Wakeup from suspend event */
|
||||||
#if defined(EXTI_IMR_IM17)
|
#if defined(ETH)
|
||||||
#define EXTI_LINE_17 EXTI_IMR_IM17 /*!< External interrupt line 17 Connected to the RTC Alarm event */
|
#define EXTI_LINE_19 (EXTI_CONFIG | 0x13u) /*!< External interrupt line 19 Connected to the Ethernet Wakeup event */
|
||||||
#endif /* EXTI_IMR_IM17 */
|
#else
|
||||||
#if defined(EXTI_IMR_IM18)
|
#define EXTI_LINE_19 (EXTI_RESERVED | 0x13u) /*!< No interrupt supported in this line */
|
||||||
#define EXTI_LINE_18 EXTI_IMR_IM18 /*!< External interrupt line 18 Connected to the USB OTG FS Wakeup from suspend event */
|
#endif /* ETH */
|
||||||
#endif /* EXTI_IMR_IM18 */
|
#define EXTI_LINE_20 (EXTI_CONFIG | 0x14u) /*!< External interrupt line 20 Connected to the USB OTG HS (configured in FS) Wakeup event */
|
||||||
#if defined(EXTI_IMR_IM19)
|
#define EXTI_LINE_21 (EXTI_CONFIG | 0x15u) /*!< External interrupt line 21 Connected to the RTC Tamper and Time Stamp events */
|
||||||
#define EXTI_LINE_19 EXTI_IMR_IM19 /*!< External interrupt line 19 Connected to the Ethernet Wakeup event */
|
#define EXTI_LINE_22 (EXTI_CONFIG | 0x16u) /*!< External interrupt line 22 Connected to the RTC Wakeup event */
|
||||||
#endif /* EXTI_IMR_IM19 */
|
#define EXTI_LINE_23 (EXTI_CONFIG | 0x17u) /*!< External interrupt line 23 Connected to the LPTIM Wakeup event */
|
||||||
#if defined(EXTI_IMR_IM20)
|
|
||||||
#define EXTI_LINE_20 EXTI_IMR_IM20 /*!< External interrupt line 20 Connected to the USB OTG HS (configured in FS) Wakeup event */
|
|
||||||
#endif /* EXTI_IMR_IM20 */
|
|
||||||
#if defined(EXTI_IMR_IM21)
|
|
||||||
#define EXTI_LINE_21 EXTI_IMR_IM21 /*!< External interrupt line 21 Connected to the RTC Tamper and Time Stamp events */
|
|
||||||
#endif /* EXTI_IMR_IM21 */
|
|
||||||
#if defined(EXTI_IMR_IM22)
|
|
||||||
#define EXTI_LINE_22 EXTI_IMR_IM22 /*!< External interrupt line 22 Connected to the RTC Wakeup event */
|
|
||||||
#endif /* EXTI_IMR_IM22 */
|
|
||||||
#if defined(EXTI_IMR_IM23)
|
|
||||||
#define EXTI_LINE_23 EXTI_IMR_IM23 /*!< External interrupt line 23 Connected to the LPTIM Wakeup event */
|
|
||||||
#endif /* EXTI_IMR_IM23 */
|
|
||||||
#if defined(EXTI_IMR_IM24)
|
#if defined(EXTI_IMR_IM24)
|
||||||
#define EXTI_LINE_24 EXTI_IMR_IM24 /*!< External interrupt line 24 Connected to the MDIO Slave global Interrupt Wakeup event */
|
#define EXTI_LINE_24 (EXTI_CONFIG | 0x18u) /*!< External interrupt line 24 Connected to the MDIO Slave global Interrupt Wakeup event */
|
||||||
#endif /* EXTI_IMR_IM24 */
|
#endif /* EXTI_IMR_IM24 */
|
||||||
/**
|
/**
|
||||||
* @}
|
* @}
|
||||||
|
@ -142,6 +132,7 @@ typedef struct
|
||||||
/** @defgroup EXTI_Trigger EXTI Trigger
|
/** @defgroup EXTI_Trigger EXTI Trigger
|
||||||
* @{
|
* @{
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#define EXTI_TRIGGER_NONE 0x00000000u
|
#define EXTI_TRIGGER_NONE 0x00000000u
|
||||||
#define EXTI_TRIGGER_RISING 0x00000001u
|
#define EXTI_TRIGGER_RISING 0x00000001u
|
||||||
#define EXTI_TRIGGER_FALLING 0x00000002u
|
#define EXTI_TRIGGER_FALLING 0x00000002u
|
||||||
|
@ -150,6 +141,24 @@ typedef struct
|
||||||
* @}
|
* @}
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
/** @defgroup EXTI_GPIOSel EXTI GPIOSel
|
||||||
|
* @brief
|
||||||
|
* @{
|
||||||
|
*/
|
||||||
|
#define EXTI_GPIOA 0x00000000u
|
||||||
|
#define EXTI_GPIOB 0x00000001u
|
||||||
|
#define EXTI_GPIOC 0x00000002u
|
||||||
|
#define EXTI_GPIOD 0x00000003u
|
||||||
|
#define EXTI_GPIOE 0x00000004u
|
||||||
|
#define EXTI_GPIOF 0x00000005u
|
||||||
|
#define EXTI_GPIOG 0x00000006u
|
||||||
|
#define EXTI_GPIOH 0x00000007u
|
||||||
|
#define EXTI_GPIOI 0x00000008u
|
||||||
|
#define EXTI_GPIOJ 0x00000009u
|
||||||
|
#if defined (GPIOK)
|
||||||
|
#define EXTI_GPIOK 0x0000000Au
|
||||||
|
#endif /* GPIOK */
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @}
|
* @}
|
||||||
*/
|
*/
|
||||||
|
@ -167,6 +176,20 @@ typedef struct
|
||||||
/** @defgroup EXTI_Private_Constants EXTI Private Constants
|
/** @defgroup EXTI_Private_Constants EXTI Private Constants
|
||||||
* @{
|
* @{
|
||||||
*/
|
*/
|
||||||
|
/**
|
||||||
|
* @brief EXTI Line property definition
|
||||||
|
*/
|
||||||
|
#define EXTI_PROPERTY_SHIFT 24u
|
||||||
|
#define EXTI_CONFIG (0x02uL << EXTI_PROPERTY_SHIFT)
|
||||||
|
#define EXTI_GPIO ((0x04uL << EXTI_PROPERTY_SHIFT) | EXTI_CONFIG)
|
||||||
|
#define EXTI_RESERVED (0x08uL << EXTI_PROPERTY_SHIFT)
|
||||||
|
#define EXTI_PROPERTY_MASK (EXTI_CONFIG | EXTI_GPIO)
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief EXTI bit usage
|
||||||
|
*/
|
||||||
|
#define EXTI_PIN_MASK 0x0000001Fu
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief EXTI Mask for interrupt & event mode
|
* @brief EXTI Mask for interrupt & event mode
|
||||||
*/
|
*/
|
||||||
|
@ -175,12 +198,17 @@ typedef struct
|
||||||
/**
|
/**
|
||||||
* @brief EXTI Mask for trigger possibilities
|
* @brief EXTI Mask for trigger possibilities
|
||||||
*/
|
*/
|
||||||
#define EXTI_TRIGGER_MASK (EXTI_TRIGGER_RISING | EXTI_TRIGGER_FALLING | EXTI_TRIGGER_RISING_FALLING)
|
#define EXTI_TRIGGER_MASK (EXTI_TRIGGER_RISING | EXTI_TRIGGER_FALLING)
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief EXTI Line number
|
* @brief EXTI Line number
|
||||||
*/
|
*/
|
||||||
|
#if defined(EXTI_IMR_IM24)
|
||||||
#define EXTI_LINE_NB 25u
|
#define EXTI_LINE_NB 25u
|
||||||
|
#else
|
||||||
|
#define EXTI_LINE_NB 24u
|
||||||
|
#endif /* EXTI_IMR_IM24 */
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @}
|
* @}
|
||||||
|
@ -190,16 +218,47 @@ typedef struct
|
||||||
/** @defgroup EXTI_Private_Macros EXTI Private Macros
|
/** @defgroup EXTI_Private_Macros EXTI Private Macros
|
||||||
* @{
|
* @{
|
||||||
*/
|
*/
|
||||||
#define IS_EXTI_LINE(__LINE__) ((((__LINE__) & ~EXTI_IMR_IM) == 0x00U) && (__LINE__))
|
#define IS_EXTI_LINE(__LINE__) ((((__LINE__) & ~(EXTI_PROPERTY_MASK | EXTI_PIN_MASK)) == 0x00u) && \
|
||||||
|
((((__LINE__) & EXTI_PROPERTY_MASK) == EXTI_CONFIG) || \
|
||||||
|
(((__LINE__) & EXTI_PROPERTY_MASK) == EXTI_GPIO)) && \
|
||||||
|
(((__LINE__) & EXTI_PIN_MASK) < EXTI_LINE_NB))
|
||||||
|
|
||||||
#define IS_EXTI_MODE(__LINE__) ((((__LINE__) & ~EXTI_MODE_MASK) == 0x00U))
|
#define IS_EXTI_MODE(__LINE__) ((((__LINE__) & EXTI_MODE_MASK) != 0x00u) && \
|
||||||
|
(((__LINE__) & ~EXTI_MODE_MASK) == 0x00u))
|
||||||
|
|
||||||
#define IS_EXTI_TRIGGER(__LINE__) (((__LINE__) & ~EXTI_TRIGGER_MASK) == 0x00U)
|
#define IS_EXTI_TRIGGER(__LINE__) (((__LINE__) & ~EXTI_TRIGGER_MASK) == 0x00u)
|
||||||
|
|
||||||
#define IS_EXTI_PENDING_EDGE(__LINE__) (((__LINE__) == EXTI_TRIGGER_FALLING) || \
|
#define IS_EXTI_PENDING_EDGE(__LINE__) (((__LINE__) == EXTI_TRIGGER_FALLING) || \
|
||||||
((__LINE__) == EXTI_TRIGGER_RISING) || \
|
((__LINE__) == EXTI_TRIGGER_RISING) || \
|
||||||
((__LINE__) == EXTI_TRIGGER_RISING_FALLING))
|
((__LINE__) == EXTI_TRIGGER_RISING_FALLING))
|
||||||
|
|
||||||
|
#define IS_EXTI_CONFIG_LINE(__LINE__) (((__LINE__) & EXTI_CONFIG) != 0x00u)
|
||||||
|
|
||||||
|
#if defined (GPIOK)
|
||||||
|
#define IS_EXTI_GPIO_PORT(__PORT__) (((__PORT__) == EXTI_GPIOA) || \
|
||||||
|
((__PORT__) == EXTI_GPIOB) || \
|
||||||
|
((__PORT__) == EXTI_GPIOC) || \
|
||||||
|
((__PORT__) == EXTI_GPIOD) || \
|
||||||
|
((__PORT__) == EXTI_GPIOE) || \
|
||||||
|
((__PORT__) == EXTI_GPIOF) || \
|
||||||
|
((__PORT__) == EXTI_GPIOG) || \
|
||||||
|
((__PORT__) == EXTI_GPIOH) || \
|
||||||
|
((__PORT__) == EXTI_GPIOI) || \
|
||||||
|
((__PORT__) == EXTI_GPIOJ) || \
|
||||||
|
((__PORT__) == EXTI_GPIOK))
|
||||||
|
#else
|
||||||
|
#define IS_EXTI_GPIO_PORT(__PORT__) (((__PORT__) == EXTI_GPIOA) || \
|
||||||
|
((__PORT__) == EXTI_GPIOB) || \
|
||||||
|
((__PORT__) == EXTI_GPIOC) || \
|
||||||
|
((__PORT__) == EXTI_GPIOD) || \
|
||||||
|
((__PORT__) == EXTI_GPIOE) || \
|
||||||
|
((__PORT__) == EXTI_GPIOF) || \
|
||||||
|
((__PORT__) == EXTI_GPIOG) || \
|
||||||
|
((__PORT__) == EXTI_GPIOH) || \
|
||||||
|
((__PORT__) == EXTI_GPIOI) || \
|
||||||
|
((__PORT__) == EXTI_GPIOJ))
|
||||||
|
#endif /* GPIOK */
|
||||||
|
|
||||||
#define IS_EXTI_GPIO_PIN(__PIN__) ((__PIN__) < 16U)
|
#define IS_EXTI_GPIO_PIN(__PIN__) ((__PIN__) < 16U)
|
||||||
/**
|
/**
|
||||||
* @}
|
* @}
|
||||||
|
@ -255,6 +314,6 @@ void HAL_EXTI_GenerateSWI(EXTI_HandleTypeDef *hexti);
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#endif /* __STM32F7xx_HAL_EXTI_H */
|
#endif /* STM32F7xx_HAL_EXTI_H */
|
||||||
|
|
||||||
/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
|
/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
|
||||||
|
|
|
@ -262,7 +262,7 @@ void HAL_GPIO_EXTI_Callback(uint16_t GPIO_Pin);
|
||||||
* @{
|
* @{
|
||||||
*/
|
*/
|
||||||
#define IS_GPIO_PIN_ACTION(ACTION) (((ACTION) == GPIO_PIN_RESET) || ((ACTION) == GPIO_PIN_SET))
|
#define IS_GPIO_PIN_ACTION(ACTION) (((ACTION) == GPIO_PIN_RESET) || ((ACTION) == GPIO_PIN_SET))
|
||||||
#define IS_GPIO_PIN(__PIN__) ((((__PIN__) & GPIO_PIN_MASK) != (uint32_t)0x00))
|
#define IS_GPIO_PIN(__PIN__) ((((uint32_t)(__PIN__) & GPIO_PIN_MASK) != 0x00U))
|
||||||
#define IS_GPIO_MODE(MODE) (((MODE) == GPIO_MODE_INPUT) ||\
|
#define IS_GPIO_MODE(MODE) (((MODE) == GPIO_MODE_INPUT) ||\
|
||||||
((MODE) == GPIO_MODE_OUTPUT_PP) ||\
|
((MODE) == GPIO_MODE_OUTPUT_PP) ||\
|
||||||
((MODE) == GPIO_MODE_OUTPUT_OD) ||\
|
((MODE) == GPIO_MODE_OUTPUT_OD) ||\
|
||||||
|
|
|
@ -167,6 +167,9 @@ void HAL_I2CEx_DisableFastModePlus(uint32_t ConfigFastModePlus);
|
||||||
(((__CONFIG__) & I2C_FASTMODEPLUS_PB9) == I2C_FASTMODEPLUS_PB9) || \
|
(((__CONFIG__) & I2C_FASTMODEPLUS_PB9) == I2C_FASTMODEPLUS_PB9) || \
|
||||||
(((__CONFIG__) & I2C_FASTMODEPLUS_I2C1) == I2C_FASTMODEPLUS_I2C1))
|
(((__CONFIG__) & I2C_FASTMODEPLUS_I2C1) == I2C_FASTMODEPLUS_I2C1))
|
||||||
#endif /* SYSCFG_PMC_I2C1_FMP && SYSCFG_PMC_I2C2_FMP && SYSCFG_PMC_I2C3_FMP && SYSCFG_PMC_I2C4_FMP */
|
#endif /* SYSCFG_PMC_I2C1_FMP && SYSCFG_PMC_I2C2_FMP && SYSCFG_PMC_I2C3_FMP && SYSCFG_PMC_I2C4_FMP */
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @}
|
* @}
|
||||||
*/
|
*/
|
||||||
|
|
|
@ -167,7 +167,7 @@ typedef struct
|
||||||
This parameter can be a value of @ref TIM_Encoder_Mode */
|
This parameter can be a value of @ref TIM_Encoder_Mode */
|
||||||
|
|
||||||
uint32_t IC1Polarity; /*!< Specifies the active edge of the input signal.
|
uint32_t IC1Polarity; /*!< Specifies the active edge of the input signal.
|
||||||
This parameter can be a value of @ref TIM_Input_Capture_Polarity */
|
This parameter can be a value of @ref TIM_Encoder_Input_Polarity */
|
||||||
|
|
||||||
uint32_t IC1Selection; /*!< Specifies the input.
|
uint32_t IC1Selection; /*!< Specifies the input.
|
||||||
This parameter can be a value of @ref TIM_Input_Capture_Selection */
|
This parameter can be a value of @ref TIM_Input_Capture_Selection */
|
||||||
|
@ -179,7 +179,7 @@ typedef struct
|
||||||
This parameter can be a number between Min_Data = 0x0 and Max_Data = 0xF */
|
This parameter can be a number between Min_Data = 0x0 and Max_Data = 0xF */
|
||||||
|
|
||||||
uint32_t IC2Polarity; /*!< Specifies the active edge of the input signal.
|
uint32_t IC2Polarity; /*!< Specifies the active edge of the input signal.
|
||||||
This parameter can be a value of @ref TIM_Input_Capture_Polarity */
|
This parameter can be a value of @ref TIM_Encoder_Input_Polarity */
|
||||||
|
|
||||||
uint32_t IC2Selection; /*!< Specifies the input.
|
uint32_t IC2Selection; /*!< Specifies the input.
|
||||||
This parameter can be a value of @ref TIM_Input_Capture_Selection */
|
This parameter can be a value of @ref TIM_Input_Capture_Selection */
|
||||||
|
@ -235,7 +235,12 @@ typedef struct
|
||||||
uint32_t MasterOutputTrigger2; /*!< Trigger output2 (TRGO2) selection
|
uint32_t MasterOutputTrigger2; /*!< Trigger output2 (TRGO2) selection
|
||||||
This parameter can be a value of @ref TIM_Master_Mode_Selection_2 */
|
This parameter can be a value of @ref TIM_Master_Mode_Selection_2 */
|
||||||
uint32_t MasterSlaveMode; /*!< Master/slave mode selection
|
uint32_t MasterSlaveMode; /*!< Master/slave mode selection
|
||||||
This parameter can be a value of @ref TIM_Master_Slave_Mode */
|
This parameter can be a value of @ref TIM_Master_Slave_Mode
|
||||||
|
@note When the Master/slave mode is enabled, the effect of
|
||||||
|
an event on the trigger input (TRGI) is delayed to allow a
|
||||||
|
perfect synchronization between the current timer and its
|
||||||
|
slaves (through TRGO). It is not mandatory in case of timer
|
||||||
|
synchronization mode. */
|
||||||
} TIM_MasterConfigTypeDef;
|
} TIM_MasterConfigTypeDef;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -518,6 +523,15 @@ typedef void (*pTIM_CallbackTypeDef)(TIM_HandleTypeDef *htim); /*!< pointer to
|
||||||
* @}
|
* @}
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
/** @defgroup TIM_Update_Interrupt_Flag_Remap TIM Update Interrupt Flag Remap
|
||||||
|
* @{
|
||||||
|
*/
|
||||||
|
#define TIM_UIFREMAP_DISABLE 0x00000000U /*!< Update interrupt flag remap disabled */
|
||||||
|
#define TIM_UIFREMAP_ENABLE TIM_CR1_UIFREMAP /*!< Update interrupt flag remap enabled */
|
||||||
|
/**
|
||||||
|
* @}
|
||||||
|
*/
|
||||||
|
|
||||||
/** @defgroup TIM_ClockDivision TIM Clock Division
|
/** @defgroup TIM_ClockDivision TIM Clock Division
|
||||||
* @{
|
* @{
|
||||||
*/
|
*/
|
||||||
|
@ -611,6 +625,15 @@ typedef void (*pTIM_CallbackTypeDef)(TIM_HandleTypeDef *htim); /*!< pointer to
|
||||||
* @}
|
* @}
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
/** @defgroup TIM_Encoder_Input_Polarity TIM Encoder Input Polarity
|
||||||
|
* @{
|
||||||
|
*/
|
||||||
|
#define TIM_ENCODERINPUTPOLARITY_RISING TIM_INPUTCHANNELPOLARITY_RISING /*!< Encoder input with rising edge polarity */
|
||||||
|
#define TIM_ENCODERINPUTPOLARITY_FALLING TIM_INPUTCHANNELPOLARITY_FALLING /*!< Encoder input with falling edge polarity */
|
||||||
|
/**
|
||||||
|
* @}
|
||||||
|
*/
|
||||||
|
|
||||||
/** @defgroup TIM_Input_Capture_Selection TIM Input Capture Selection
|
/** @defgroup TIM_Input_Capture_Selection TIM Input Capture Selection
|
||||||
* @{
|
* @{
|
||||||
*/
|
*/
|
||||||
|
@ -1119,15 +1142,15 @@ typedef void (*pTIM_CallbackTypeDef)(TIM_HandleTypeDef *htim); /*!< pointer to
|
||||||
* @retval None
|
* @retval None
|
||||||
*/
|
*/
|
||||||
#define __HAL_TIM_DISABLE(__HANDLE__) \
|
#define __HAL_TIM_DISABLE(__HANDLE__) \
|
||||||
do { \
|
do { \
|
||||||
if (((__HANDLE__)->Instance->CCER & TIM_CCER_CCxE_MASK) == 0UL) \
|
if (((__HANDLE__)->Instance->CCER & TIM_CCER_CCxE_MASK) == 0UL) \
|
||||||
{ \
|
{ \
|
||||||
if(((__HANDLE__)->Instance->CCER & TIM_CCER_CCxNE_MASK) == 0UL) \
|
if(((__HANDLE__)->Instance->CCER & TIM_CCER_CCxNE_MASK) == 0UL) \
|
||||||
{ \
|
{ \
|
||||||
(__HANDLE__)->Instance->CR1 &= ~(TIM_CR1_CEN); \
|
(__HANDLE__)->Instance->CR1 &= ~(TIM_CR1_CEN); \
|
||||||
} \
|
} \
|
||||||
} \
|
} \
|
||||||
} while(0)
|
} while(0)
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief Disable the TIM main Output.
|
* @brief Disable the TIM main Output.
|
||||||
|
@ -1136,15 +1159,15 @@ typedef void (*pTIM_CallbackTypeDef)(TIM_HandleTypeDef *htim); /*!< pointer to
|
||||||
* @note The Main Output Enable of a timer instance is disabled only if all the CCx and CCxN channels have been disabled
|
* @note The Main Output Enable of a timer instance is disabled only if all the CCx and CCxN channels have been disabled
|
||||||
*/
|
*/
|
||||||
#define __HAL_TIM_MOE_DISABLE(__HANDLE__) \
|
#define __HAL_TIM_MOE_DISABLE(__HANDLE__) \
|
||||||
do { \
|
do { \
|
||||||
if (((__HANDLE__)->Instance->CCER & TIM_CCER_CCxE_MASK) == 0UL) \
|
if (((__HANDLE__)->Instance->CCER & TIM_CCER_CCxE_MASK) == 0UL) \
|
||||||
{ \
|
{ \
|
||||||
if(((__HANDLE__)->Instance->CCER & TIM_CCER_CCxNE_MASK) == 0UL) \
|
if(((__HANDLE__)->Instance->CCER & TIM_CCER_CCxNE_MASK) == 0UL) \
|
||||||
{ \
|
{ \
|
||||||
(__HANDLE__)->Instance->BDTR &= ~(TIM_BDTR_MOE); \
|
(__HANDLE__)->Instance->BDTR &= ~(TIM_BDTR_MOE); \
|
||||||
} \
|
} \
|
||||||
} \
|
} \
|
||||||
} while(0)
|
} while(0)
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief Disable the TIM main Output.
|
* @brief Disable the TIM main Output.
|
||||||
|
@ -1279,7 +1302,8 @@ typedef void (*pTIM_CallbackTypeDef)(TIM_HandleTypeDef *htim); /*!< pointer to
|
||||||
* @arg TIM_IT_BREAK: Break interrupt
|
* @arg TIM_IT_BREAK: Break interrupt
|
||||||
* @retval The state of TIM_IT (SET or RESET).
|
* @retval The state of TIM_IT (SET or RESET).
|
||||||
*/
|
*/
|
||||||
#define __HAL_TIM_GET_IT_SOURCE(__HANDLE__, __INTERRUPT__) ((((__HANDLE__)->Instance->DIER & (__INTERRUPT__)) == (__INTERRUPT__)) ? SET : RESET)
|
#define __HAL_TIM_GET_IT_SOURCE(__HANDLE__, __INTERRUPT__) ((((__HANDLE__)->Instance->DIER & (__INTERRUPT__)) \
|
||||||
|
== (__INTERRUPT__)) ? SET : RESET)
|
||||||
|
|
||||||
/** @brief Clear the TIM interrupt pending bits.
|
/** @brief Clear the TIM interrupt pending bits.
|
||||||
* @param __HANDLE__ TIM handle
|
* @param __HANDLE__ TIM handle
|
||||||
|
@ -1297,6 +1321,31 @@ typedef void (*pTIM_CallbackTypeDef)(TIM_HandleTypeDef *htim); /*!< pointer to
|
||||||
*/
|
*/
|
||||||
#define __HAL_TIM_CLEAR_IT(__HANDLE__, __INTERRUPT__) ((__HANDLE__)->Instance->SR = ~(__INTERRUPT__))
|
#define __HAL_TIM_CLEAR_IT(__HANDLE__, __INTERRUPT__) ((__HANDLE__)->Instance->SR = ~(__INTERRUPT__))
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Force a continuous copy of the update interrupt flag (UIF) into the timer counter register (bit 31).
|
||||||
|
* @note This allows both the counter value and a potential roll-over condition signalled by the UIFCPY flag to be read in an atomic way.
|
||||||
|
* @param __HANDLE__ TIM handle.
|
||||||
|
* @retval None
|
||||||
|
mode.
|
||||||
|
*/
|
||||||
|
#define __HAL_TIM_UIFREMAP_ENABLE(__HANDLE__) (((__HANDLE__)->Instance->CR1 |= TIM_CR1_UIFREMAP))
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Disable update interrupt flag (UIF) remapping.
|
||||||
|
* @param __HANDLE__ TIM handle.
|
||||||
|
* @retval None
|
||||||
|
mode.
|
||||||
|
*/
|
||||||
|
#define __HAL_TIM_UIFREMAP_DISABLE(__HANDLE__) (((__HANDLE__)->Instance->CR1 &= ~TIM_CR1_UIFREMAP))
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Get update interrupt flag (UIF) copy status.
|
||||||
|
* @param __COUNTER__ Counter value.
|
||||||
|
* @retval The state of UIFCPY (TRUE or FALSE).
|
||||||
|
mode.
|
||||||
|
*/
|
||||||
|
#define __HAL_TIM_GET_UIFCPY(__COUNTER__) (((__COUNTER__) & (TIM_CNT_UIFCPY)) == (TIM_CNT_UIFCPY))
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief Indicates whether or not the TIM Counter is used as downcounter.
|
* @brief Indicates whether or not the TIM Counter is used as downcounter.
|
||||||
* @param __HANDLE__ TIM handle.
|
* @param __HANDLE__ TIM handle.
|
||||||
|
@ -1316,6 +1365,8 @@ mode.
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief Set the TIM Counter Register value on runtime.
|
* @brief Set the TIM Counter Register value on runtime.
|
||||||
|
* Note Please check if the bit 31 of CNT register is used as UIF copy or not, this may affect the counter range in case of 32 bits counter TIM instance.
|
||||||
|
* Bit 31 of CNT can be enabled/disabled using __HAL_TIM_UIFREMAP_ENABLE()/__HAL_TIM_UIFREMAP_DISABLE() macros.
|
||||||
* @param __HANDLE__ TIM handle.
|
* @param __HANDLE__ TIM handle.
|
||||||
* @param __COUNTER__ specifies the Counter register new value.
|
* @param __COUNTER__ specifies the Counter register new value.
|
||||||
* @retval None
|
* @retval None
|
||||||
|
@ -1327,8 +1378,7 @@ mode.
|
||||||
* @param __HANDLE__ TIM handle.
|
* @param __HANDLE__ TIM handle.
|
||||||
* @retval 16-bit or 32-bit value of the timer counter register (TIMx_CNT)
|
* @retval 16-bit or 32-bit value of the timer counter register (TIMx_CNT)
|
||||||
*/
|
*/
|
||||||
#define __HAL_TIM_GET_COUNTER(__HANDLE__) \
|
#define __HAL_TIM_GET_COUNTER(__HANDLE__) ((__HANDLE__)->Instance->CNT)
|
||||||
((__HANDLE__)->Instance->CNT)
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief Set the TIM Autoreload Register value on runtime without calling another time any Init function.
|
* @brief Set the TIM Autoreload Register value on runtime without calling another time any Init function.
|
||||||
|
@ -1337,18 +1387,17 @@ mode.
|
||||||
* @retval None
|
* @retval None
|
||||||
*/
|
*/
|
||||||
#define __HAL_TIM_SET_AUTORELOAD(__HANDLE__, __AUTORELOAD__) \
|
#define __HAL_TIM_SET_AUTORELOAD(__HANDLE__, __AUTORELOAD__) \
|
||||||
do{ \
|
do{ \
|
||||||
(__HANDLE__)->Instance->ARR = (__AUTORELOAD__); \
|
(__HANDLE__)->Instance->ARR = (__AUTORELOAD__); \
|
||||||
(__HANDLE__)->Init.Period = (__AUTORELOAD__); \
|
(__HANDLE__)->Init.Period = (__AUTORELOAD__); \
|
||||||
} while(0)
|
} while(0)
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief Get the TIM Autoreload Register value on runtime.
|
* @brief Get the TIM Autoreload Register value on runtime.
|
||||||
* @param __HANDLE__ TIM handle.
|
* @param __HANDLE__ TIM handle.
|
||||||
* @retval 16-bit or 32-bit value of the timer auto-reload register(TIMx_ARR)
|
* @retval 16-bit or 32-bit value of the timer auto-reload register(TIMx_ARR)
|
||||||
*/
|
*/
|
||||||
#define __HAL_TIM_GET_AUTORELOAD(__HANDLE__) \
|
#define __HAL_TIM_GET_AUTORELOAD(__HANDLE__) ((__HANDLE__)->Instance->ARR)
|
||||||
((__HANDLE__)->Instance->ARR)
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief Set the TIM Clock Division value on runtime without calling another time any Init function.
|
* @brief Set the TIM Clock Division value on runtime without calling another time any Init function.
|
||||||
|
@ -1361,11 +1410,11 @@ mode.
|
||||||
* @retval None
|
* @retval None
|
||||||
*/
|
*/
|
||||||
#define __HAL_TIM_SET_CLOCKDIVISION(__HANDLE__, __CKD__) \
|
#define __HAL_TIM_SET_CLOCKDIVISION(__HANDLE__, __CKD__) \
|
||||||
do{ \
|
do{ \
|
||||||
(__HANDLE__)->Instance->CR1 &= (~TIM_CR1_CKD); \
|
(__HANDLE__)->Instance->CR1 &= (~TIM_CR1_CKD); \
|
||||||
(__HANDLE__)->Instance->CR1 |= (__CKD__); \
|
(__HANDLE__)->Instance->CR1 |= (__CKD__); \
|
||||||
(__HANDLE__)->Init.ClockDivision = (__CKD__); \
|
(__HANDLE__)->Init.ClockDivision = (__CKD__); \
|
||||||
} while(0)
|
} while(0)
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief Get the TIM Clock Division value on runtime.
|
* @brief Get the TIM Clock Division value on runtime.
|
||||||
|
@ -1375,8 +1424,7 @@ mode.
|
||||||
* @arg TIM_CLOCKDIVISION_DIV2: tDTS=2*tCK_INT
|
* @arg TIM_CLOCKDIVISION_DIV2: tDTS=2*tCK_INT
|
||||||
* @arg TIM_CLOCKDIVISION_DIV4: tDTS=4*tCK_INT
|
* @arg TIM_CLOCKDIVISION_DIV4: tDTS=4*tCK_INT
|
||||||
*/
|
*/
|
||||||
#define __HAL_TIM_GET_CLOCKDIVISION(__HANDLE__) \
|
#define __HAL_TIM_GET_CLOCKDIVISION(__HANDLE__) ((__HANDLE__)->Instance->CR1 & TIM_CR1_CKD)
|
||||||
((__HANDLE__)->Instance->CR1 & TIM_CR1_CKD)
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief Set the TIM Input Capture prescaler on runtime without calling another time HAL_TIM_IC_ConfigChannel() function.
|
* @brief Set the TIM Input Capture prescaler on runtime without calling another time HAL_TIM_IC_ConfigChannel() function.
|
||||||
|
@ -1396,10 +1444,10 @@ mode.
|
||||||
* @retval None
|
* @retval None
|
||||||
*/
|
*/
|
||||||
#define __HAL_TIM_SET_ICPRESCALER(__HANDLE__, __CHANNEL__, __ICPSC__) \
|
#define __HAL_TIM_SET_ICPRESCALER(__HANDLE__, __CHANNEL__, __ICPSC__) \
|
||||||
do{ \
|
do{ \
|
||||||
TIM_RESET_ICPRESCALERVALUE((__HANDLE__), (__CHANNEL__)); \
|
TIM_RESET_ICPRESCALERVALUE((__HANDLE__), (__CHANNEL__)); \
|
||||||
TIM_SET_ICPRESCALERVALUE((__HANDLE__), (__CHANNEL__), (__ICPSC__)); \
|
TIM_SET_ICPRESCALERVALUE((__HANDLE__), (__CHANNEL__), (__ICPSC__)); \
|
||||||
} while(0)
|
} while(0)
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief Get the TIM Input Capture prescaler on runtime.
|
* @brief Get the TIM Input Capture prescaler on runtime.
|
||||||
|
@ -1437,12 +1485,12 @@ mode.
|
||||||
* @retval None
|
* @retval None
|
||||||
*/
|
*/
|
||||||
#define __HAL_TIM_SET_COMPARE(__HANDLE__, __CHANNEL__, __COMPARE__) \
|
#define __HAL_TIM_SET_COMPARE(__HANDLE__, __CHANNEL__, __COMPARE__) \
|
||||||
(((__CHANNEL__) == TIM_CHANNEL_1) ? ((__HANDLE__)->Instance->CCR1 = (__COMPARE__)) :\
|
(((__CHANNEL__) == TIM_CHANNEL_1) ? ((__HANDLE__)->Instance->CCR1 = (__COMPARE__)) :\
|
||||||
((__CHANNEL__) == TIM_CHANNEL_2) ? ((__HANDLE__)->Instance->CCR2 = (__COMPARE__)) :\
|
((__CHANNEL__) == TIM_CHANNEL_2) ? ((__HANDLE__)->Instance->CCR2 = (__COMPARE__)) :\
|
||||||
((__CHANNEL__) == TIM_CHANNEL_3) ? ((__HANDLE__)->Instance->CCR3 = (__COMPARE__)) :\
|
((__CHANNEL__) == TIM_CHANNEL_3) ? ((__HANDLE__)->Instance->CCR3 = (__COMPARE__)) :\
|
||||||
((__CHANNEL__) == TIM_CHANNEL_4) ? ((__HANDLE__)->Instance->CCR4 = (__COMPARE__)) :\
|
((__CHANNEL__) == TIM_CHANNEL_4) ? ((__HANDLE__)->Instance->CCR4 = (__COMPARE__)) :\
|
||||||
((__CHANNEL__) == TIM_CHANNEL_5) ? ((__HANDLE__)->Instance->CCR5 = (__COMPARE__)) :\
|
((__CHANNEL__) == TIM_CHANNEL_5) ? ((__HANDLE__)->Instance->CCR5 = (__COMPARE__)) :\
|
||||||
((__HANDLE__)->Instance->CCR6 = (__COMPARE__)))
|
((__HANDLE__)->Instance->CCR6 = (__COMPARE__)))
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief Get the TIM Capture Compare Register value on runtime.
|
* @brief Get the TIM Capture Compare Register value on runtime.
|
||||||
|
@ -1458,12 +1506,12 @@ mode.
|
||||||
* @retval 16-bit or 32-bit value of the capture/compare register (TIMx_CCRy)
|
* @retval 16-bit or 32-bit value of the capture/compare register (TIMx_CCRy)
|
||||||
*/
|
*/
|
||||||
#define __HAL_TIM_GET_COMPARE(__HANDLE__, __CHANNEL__) \
|
#define __HAL_TIM_GET_COMPARE(__HANDLE__, __CHANNEL__) \
|
||||||
(((__CHANNEL__) == TIM_CHANNEL_1) ? ((__HANDLE__)->Instance->CCR1) :\
|
(((__CHANNEL__) == TIM_CHANNEL_1) ? ((__HANDLE__)->Instance->CCR1) :\
|
||||||
((__CHANNEL__) == TIM_CHANNEL_2) ? ((__HANDLE__)->Instance->CCR2) :\
|
((__CHANNEL__) == TIM_CHANNEL_2) ? ((__HANDLE__)->Instance->CCR2) :\
|
||||||
((__CHANNEL__) == TIM_CHANNEL_3) ? ((__HANDLE__)->Instance->CCR3) :\
|
((__CHANNEL__) == TIM_CHANNEL_3) ? ((__HANDLE__)->Instance->CCR3) :\
|
||||||
((__CHANNEL__) == TIM_CHANNEL_4) ? ((__HANDLE__)->Instance->CCR4) :\
|
((__CHANNEL__) == TIM_CHANNEL_4) ? ((__HANDLE__)->Instance->CCR4) :\
|
||||||
((__CHANNEL__) == TIM_CHANNEL_5) ? ((__HANDLE__)->Instance->CCR5) :\
|
((__CHANNEL__) == TIM_CHANNEL_5) ? ((__HANDLE__)->Instance->CCR5) :\
|
||||||
((__HANDLE__)->Instance->CCR6))
|
((__HANDLE__)->Instance->CCR6))
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief Set the TIM Output compare preload.
|
* @brief Set the TIM Output compare preload.
|
||||||
|
@ -1479,12 +1527,12 @@ mode.
|
||||||
* @retval None
|
* @retval None
|
||||||
*/
|
*/
|
||||||
#define __HAL_TIM_ENABLE_OCxPRELOAD(__HANDLE__, __CHANNEL__) \
|
#define __HAL_TIM_ENABLE_OCxPRELOAD(__HANDLE__, __CHANNEL__) \
|
||||||
(((__CHANNEL__) == TIM_CHANNEL_1) ? ((__HANDLE__)->Instance->CCMR1 |= TIM_CCMR1_OC1PE) :\
|
(((__CHANNEL__) == TIM_CHANNEL_1) ? ((__HANDLE__)->Instance->CCMR1 |= TIM_CCMR1_OC1PE) :\
|
||||||
((__CHANNEL__) == TIM_CHANNEL_2) ? ((__HANDLE__)->Instance->CCMR1 |= TIM_CCMR1_OC2PE) :\
|
((__CHANNEL__) == TIM_CHANNEL_2) ? ((__HANDLE__)->Instance->CCMR1 |= TIM_CCMR1_OC2PE) :\
|
||||||
((__CHANNEL__) == TIM_CHANNEL_3) ? ((__HANDLE__)->Instance->CCMR2 |= TIM_CCMR2_OC3PE) :\
|
((__CHANNEL__) == TIM_CHANNEL_3) ? ((__HANDLE__)->Instance->CCMR2 |= TIM_CCMR2_OC3PE) :\
|
||||||
((__CHANNEL__) == TIM_CHANNEL_4) ? ((__HANDLE__)->Instance->CCMR2 |= TIM_CCMR2_OC4PE) :\
|
((__CHANNEL__) == TIM_CHANNEL_4) ? ((__HANDLE__)->Instance->CCMR2 |= TIM_CCMR2_OC4PE) :\
|
||||||
((__CHANNEL__) == TIM_CHANNEL_5) ? ((__HANDLE__)->Instance->CCMR3 |= TIM_CCMR3_OC5PE) :\
|
((__CHANNEL__) == TIM_CHANNEL_5) ? ((__HANDLE__)->Instance->CCMR3 |= TIM_CCMR3_OC5PE) :\
|
||||||
((__HANDLE__)->Instance->CCMR3 |= TIM_CCMR3_OC6PE))
|
((__HANDLE__)->Instance->CCMR3 |= TIM_CCMR3_OC6PE))
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief Reset the TIM Output compare preload.
|
* @brief Reset the TIM Output compare preload.
|
||||||
|
@ -1500,12 +1548,62 @@ mode.
|
||||||
* @retval None
|
* @retval None
|
||||||
*/
|
*/
|
||||||
#define __HAL_TIM_DISABLE_OCxPRELOAD(__HANDLE__, __CHANNEL__) \
|
#define __HAL_TIM_DISABLE_OCxPRELOAD(__HANDLE__, __CHANNEL__) \
|
||||||
(((__CHANNEL__) == TIM_CHANNEL_1) ? ((__HANDLE__)->Instance->CCMR1 &= (uint16_t)~TIM_CCMR1_OC1PE) :\
|
(((__CHANNEL__) == TIM_CHANNEL_1) ? ((__HANDLE__)->Instance->CCMR1 &= ~TIM_CCMR1_OC1PE) :\
|
||||||
((__CHANNEL__) == TIM_CHANNEL_2) ? ((__HANDLE__)->Instance->CCMR1 &= (uint16_t)~TIM_CCMR1_OC2PE) :\
|
((__CHANNEL__) == TIM_CHANNEL_2) ? ((__HANDLE__)->Instance->CCMR1 &= ~TIM_CCMR1_OC2PE) :\
|
||||||
((__CHANNEL__) == TIM_CHANNEL_3) ? ((__HANDLE__)->Instance->CCMR2 &= (uint16_t)~TIM_CCMR2_OC3PE) :\
|
((__CHANNEL__) == TIM_CHANNEL_3) ? ((__HANDLE__)->Instance->CCMR2 &= ~TIM_CCMR2_OC3PE) :\
|
||||||
((__CHANNEL__) == TIM_CHANNEL_4) ? ((__HANDLE__)->Instance->CCMR2 &= (uint16_t)~TIM_CCMR2_OC4PE) :\
|
((__CHANNEL__) == TIM_CHANNEL_4) ? ((__HANDLE__)->Instance->CCMR2 &= ~TIM_CCMR2_OC4PE) :\
|
||||||
((__CHANNEL__) == TIM_CHANNEL_5) ? ((__HANDLE__)->Instance->CCMR3 &= (uint16_t)~TIM_CCMR3_OC5PE) :\
|
((__CHANNEL__) == TIM_CHANNEL_5) ? ((__HANDLE__)->Instance->CCMR3 &= ~TIM_CCMR3_OC5PE) :\
|
||||||
((__HANDLE__)->Instance->CCMR3 &= (uint16_t)~TIM_CCMR3_OC6PE))
|
((__HANDLE__)->Instance->CCMR3 &= ~TIM_CCMR3_OC6PE))
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Enable fast mode for a given channel.
|
||||||
|
* @param __HANDLE__ TIM handle.
|
||||||
|
* @param __CHANNEL__ TIM Channels to be configured.
|
||||||
|
* This parameter can be one of the following values:
|
||||||
|
* @arg TIM_CHANNEL_1: TIM Channel 1 selected
|
||||||
|
* @arg TIM_CHANNEL_2: TIM Channel 2 selected
|
||||||
|
* @arg TIM_CHANNEL_3: TIM Channel 3 selected
|
||||||
|
* @arg TIM_CHANNEL_4: TIM Channel 4 selected
|
||||||
|
* @arg TIM_CHANNEL_5: TIM Channel 5 selected
|
||||||
|
* @arg TIM_CHANNEL_6: TIM Channel 6 selected
|
||||||
|
* @note When fast mode is enabled an active edge on the trigger input acts
|
||||||
|
* like a compare match on CCx output. Delay to sample the trigger
|
||||||
|
* input and to activate CCx output is reduced to 3 clock cycles.
|
||||||
|
* @note Fast mode acts only if the channel is configured in PWM1 or PWM2 mode.
|
||||||
|
* @retval None
|
||||||
|
*/
|
||||||
|
#define __HAL_TIM_ENABLE_OCxFAST(__HANDLE__, __CHANNEL__) \
|
||||||
|
(((__CHANNEL__) == TIM_CHANNEL_1) ? ((__HANDLE__)->Instance->CCMR1 |= TIM_CCMR1_OC1FE) :\
|
||||||
|
((__CHANNEL__) == TIM_CHANNEL_2) ? ((__HANDLE__)->Instance->CCMR1 |= TIM_CCMR1_OC2FE) :\
|
||||||
|
((__CHANNEL__) == TIM_CHANNEL_3) ? ((__HANDLE__)->Instance->CCMR2 |= TIM_CCMR2_OC3FE) :\
|
||||||
|
((__CHANNEL__) == TIM_CHANNEL_4) ? ((__HANDLE__)->Instance->CCMR2 |= TIM_CCMR2_OC4FE) :\
|
||||||
|
((__CHANNEL__) == TIM_CHANNEL_5) ? ((__HANDLE__)->Instance->CCMR3 |= TIM_CCMR3_OC5FE) :\
|
||||||
|
((__HANDLE__)->Instance->CCMR3 |= TIM_CCMR3_OC6FE))
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Disable fast mode for a given channel.
|
||||||
|
* @param __HANDLE__ TIM handle.
|
||||||
|
* @param __CHANNEL__ TIM Channels to be configured.
|
||||||
|
* This parameter can be one of the following values:
|
||||||
|
* @arg TIM_CHANNEL_1: TIM Channel 1 selected
|
||||||
|
* @arg TIM_CHANNEL_2: TIM Channel 2 selected
|
||||||
|
* @arg TIM_CHANNEL_3: TIM Channel 3 selected
|
||||||
|
* @arg TIM_CHANNEL_4: TIM Channel 4 selected
|
||||||
|
* @arg TIM_CHANNEL_5: TIM Channel 5 selected
|
||||||
|
* @arg TIM_CHANNEL_6: TIM Channel 6 selected
|
||||||
|
* @note When fast mode is disabled CCx output behaves normally depending
|
||||||
|
* on counter and CCRx values even when the trigger is ON. The minimum
|
||||||
|
* delay to activate CCx output when an active edge occurs on the
|
||||||
|
* trigger input is 5 clock cycles.
|
||||||
|
* @retval None
|
||||||
|
*/
|
||||||
|
#define __HAL_TIM_DISABLE_OCxFAST(__HANDLE__, __CHANNEL__) \
|
||||||
|
(((__CHANNEL__) == TIM_CHANNEL_1) ? ((__HANDLE__)->Instance->CCMR1 &= ~TIM_CCMR1_OC1FE) :\
|
||||||
|
((__CHANNEL__) == TIM_CHANNEL_2) ? ((__HANDLE__)->Instance->CCMR1 &= ~TIM_CCMR1_OC2FE) :\
|
||||||
|
((__CHANNEL__) == TIM_CHANNEL_3) ? ((__HANDLE__)->Instance->CCMR2 &= ~TIM_CCMR2_OC3FE) :\
|
||||||
|
((__CHANNEL__) == TIM_CHANNEL_4) ? ((__HANDLE__)->Instance->CCMR2 &= ~TIM_CCMR2_OC4FE) :\
|
||||||
|
((__CHANNEL__) == TIM_CHANNEL_5) ? ((__HANDLE__)->Instance->CCMR3 &= ~TIM_CCMR3_OC5FE) :\
|
||||||
|
((__HANDLE__)->Instance->CCMR3 &= ~TIM_CCMR3_OC6FE))
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief Set the Update Request Source (URS) bit of the TIMx_CR1 register.
|
* @brief Set the Update Request Source (URS) bit of the TIMx_CR1 register.
|
||||||
|
@ -1515,8 +1613,7 @@ mode.
|
||||||
* enabled)
|
* enabled)
|
||||||
* @retval None
|
* @retval None
|
||||||
*/
|
*/
|
||||||
#define __HAL_TIM_URS_ENABLE(__HANDLE__) \
|
#define __HAL_TIM_URS_ENABLE(__HANDLE__) ((__HANDLE__)->Instance->CR1|= TIM_CR1_URS)
|
||||||
((__HANDLE__)->Instance->CR1|= TIM_CR1_URS)
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief Reset the Update Request Source (URS) bit of the TIMx_CR1 register.
|
* @brief Reset the Update Request Source (URS) bit of the TIMx_CR1 register.
|
||||||
|
@ -1529,8 +1626,7 @@ mode.
|
||||||
* _ Update generation through the slave mode controller
|
* _ Update generation through the slave mode controller
|
||||||
* @retval None
|
* @retval None
|
||||||
*/
|
*/
|
||||||
#define __HAL_TIM_URS_DISABLE(__HANDLE__) \
|
#define __HAL_TIM_URS_DISABLE(__HANDLE__) ((__HANDLE__)->Instance->CR1&=~TIM_CR1_URS)
|
||||||
((__HANDLE__)->Instance->CR1&=~TIM_CR1_URS)
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief Set the TIM Capture x input polarity on runtime.
|
* @brief Set the TIM Capture x input polarity on runtime.
|
||||||
|
@ -1548,10 +1644,10 @@ mode.
|
||||||
* @retval None
|
* @retval None
|
||||||
*/
|
*/
|
||||||
#define __HAL_TIM_SET_CAPTUREPOLARITY(__HANDLE__, __CHANNEL__, __POLARITY__) \
|
#define __HAL_TIM_SET_CAPTUREPOLARITY(__HANDLE__, __CHANNEL__, __POLARITY__) \
|
||||||
do{ \
|
do{ \
|
||||||
TIM_RESET_CAPTUREPOLARITY((__HANDLE__), (__CHANNEL__)); \
|
TIM_RESET_CAPTUREPOLARITY((__HANDLE__), (__CHANNEL__)); \
|
||||||
TIM_SET_CAPTUREPOLARITY((__HANDLE__), (__CHANNEL__), (__POLARITY__)); \
|
TIM_SET_CAPTUREPOLARITY((__HANDLE__), (__CHANNEL__), (__POLARITY__)); \
|
||||||
}while(0)
|
}while(0)
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @}
|
* @}
|
||||||
|
@ -1579,29 +1675,29 @@ mode.
|
||||||
((__MODE__) == TIM_CLEARINPUTSOURCE_ETR))
|
((__MODE__) == TIM_CLEARINPUTSOURCE_ETR))
|
||||||
|
|
||||||
#if defined(TIM_AF1_BKINE)&&defined(TIM_AF2_BKINE)
|
#if defined(TIM_AF1_BKINE)&&defined(TIM_AF2_BKINE)
|
||||||
#define IS_TIM_DMA_BASE(__BASE__) (((__BASE__) == TIM_DMABASE_CR1) || \
|
#define IS_TIM_DMA_BASE(__BASE__) (((__BASE__) == TIM_DMABASE_CR1) || \
|
||||||
((__BASE__) == TIM_DMABASE_CR2) || \
|
((__BASE__) == TIM_DMABASE_CR2) || \
|
||||||
((__BASE__) == TIM_DMABASE_SMCR) || \
|
((__BASE__) == TIM_DMABASE_SMCR) || \
|
||||||
((__BASE__) == TIM_DMABASE_DIER) || \
|
((__BASE__) == TIM_DMABASE_DIER) || \
|
||||||
((__BASE__) == TIM_DMABASE_SR) || \
|
((__BASE__) == TIM_DMABASE_SR) || \
|
||||||
((__BASE__) == TIM_DMABASE_EGR) || \
|
((__BASE__) == TIM_DMABASE_EGR) || \
|
||||||
((__BASE__) == TIM_DMABASE_CCMR1) || \
|
((__BASE__) == TIM_DMABASE_CCMR1) || \
|
||||||
((__BASE__) == TIM_DMABASE_CCMR2) || \
|
((__BASE__) == TIM_DMABASE_CCMR2) || \
|
||||||
((__BASE__) == TIM_DMABASE_CCER) || \
|
((__BASE__) == TIM_DMABASE_CCER) || \
|
||||||
((__BASE__) == TIM_DMABASE_CNT) || \
|
((__BASE__) == TIM_DMABASE_CNT) || \
|
||||||
((__BASE__) == TIM_DMABASE_PSC) || \
|
((__BASE__) == TIM_DMABASE_PSC) || \
|
||||||
((__BASE__) == TIM_DMABASE_ARR) || \
|
((__BASE__) == TIM_DMABASE_ARR) || \
|
||||||
((__BASE__) == TIM_DMABASE_RCR) || \
|
((__BASE__) == TIM_DMABASE_RCR) || \
|
||||||
((__BASE__) == TIM_DMABASE_CCR1) || \
|
((__BASE__) == TIM_DMABASE_CCR1) || \
|
||||||
((__BASE__) == TIM_DMABASE_CCR2) || \
|
((__BASE__) == TIM_DMABASE_CCR2) || \
|
||||||
((__BASE__) == TIM_DMABASE_CCR3) || \
|
((__BASE__) == TIM_DMABASE_CCR3) || \
|
||||||
((__BASE__) == TIM_DMABASE_CCR4) || \
|
((__BASE__) == TIM_DMABASE_CCR4) || \
|
||||||
((__BASE__) == TIM_DMABASE_BDTR) || \
|
((__BASE__) == TIM_DMABASE_BDTR) || \
|
||||||
((__BASE__) == TIM_DMABASE_OR) || \
|
((__BASE__) == TIM_DMABASE_OR) || \
|
||||||
((__BASE__) == TIM_DMABASE_CCMR3) || \
|
((__BASE__) == TIM_DMABASE_CCMR3) || \
|
||||||
((__BASE__) == TIM_DMABASE_CCR5) || \
|
((__BASE__) == TIM_DMABASE_CCR5) || \
|
||||||
((__BASE__) == TIM_DMABASE_CCR6) || \
|
((__BASE__) == TIM_DMABASE_CCR6) || \
|
||||||
((__BASE__) == TIM_DMABASE_AF1) || \
|
((__BASE__) == TIM_DMABASE_AF1) || \
|
||||||
((__BASE__) == TIM_DMABASE_AF2))
|
((__BASE__) == TIM_DMABASE_AF2))
|
||||||
#else
|
#else
|
||||||
#define IS_TIM_DMA_BASE(__BASE__) (((__BASE__) == TIM_DMABASE_CR1) || \
|
#define IS_TIM_DMA_BASE(__BASE__) (((__BASE__) == TIM_DMABASE_CR1) || \
|
||||||
|
@ -1636,6 +1732,9 @@ mode.
|
||||||
((__MODE__) == TIM_COUNTERMODE_CENTERALIGNED2) || \
|
((__MODE__) == TIM_COUNTERMODE_CENTERALIGNED2) || \
|
||||||
((__MODE__) == TIM_COUNTERMODE_CENTERALIGNED3))
|
((__MODE__) == TIM_COUNTERMODE_CENTERALIGNED3))
|
||||||
|
|
||||||
|
#define IS_TIM_UIFREMAP_MODE(__MODE__) (((__MODE__) == TIM_UIFREMAP_DISABLE) || \
|
||||||
|
((__MODE__) == TIM_UIFREMAP_ENALE))
|
||||||
|
|
||||||
#define IS_TIM_CLOCKDIVISION_DIV(__DIV__) (((__DIV__) == TIM_CLOCKDIVISION_DIV1) || \
|
#define IS_TIM_CLOCKDIVISION_DIV(__DIV__) (((__DIV__) == TIM_CLOCKDIVISION_DIV1) || \
|
||||||
((__DIV__) == TIM_CLOCKDIVISION_DIV2) || \
|
((__DIV__) == TIM_CLOCKDIVISION_DIV2) || \
|
||||||
((__DIV__) == TIM_CLOCKDIVISION_DIV4))
|
((__DIV__) == TIM_CLOCKDIVISION_DIV4))
|
||||||
|
@ -1658,6 +1757,9 @@ mode.
|
||||||
#define IS_TIM_OCNIDLE_STATE(__STATE__) (((__STATE__) == TIM_OCNIDLESTATE_SET) || \
|
#define IS_TIM_OCNIDLE_STATE(__STATE__) (((__STATE__) == TIM_OCNIDLESTATE_SET) || \
|
||||||
((__STATE__) == TIM_OCNIDLESTATE_RESET))
|
((__STATE__) == TIM_OCNIDLESTATE_RESET))
|
||||||
|
|
||||||
|
#define IS_TIM_ENCODERINPUT_POLARITY(__POLARITY__) (((__POLARITY__) == TIM_ENCODERINPUTPOLARITY_RISING) || \
|
||||||
|
((__POLARITY__) == TIM_ENCODERINPUTPOLARITY_FALLING))
|
||||||
|
|
||||||
#define IS_TIM_IC_POLARITY(__POLARITY__) (((__POLARITY__) == TIM_ICPOLARITY_RISING) || \
|
#define IS_TIM_IC_POLARITY(__POLARITY__) (((__POLARITY__) == TIM_ICPOLARITY_RISING) || \
|
||||||
((__POLARITY__) == TIM_ICPOLARITY_FALLING) || \
|
((__POLARITY__) == TIM_ICPOLARITY_FALLING) || \
|
||||||
((__POLARITY__) == TIM_ICPOLARITY_BOTHEDGE))
|
((__POLARITY__) == TIM_ICPOLARITY_BOTHEDGE))
|
||||||
|
@ -1876,28 +1978,28 @@ mode.
|
||||||
((__TRIGGER__) == TIM_SLAVEMODE_COMBINED_RESETTRIGGER))
|
((__TRIGGER__) == TIM_SLAVEMODE_COMBINED_RESETTRIGGER))
|
||||||
|
|
||||||
#define TIM_SET_ICPRESCALERVALUE(__HANDLE__, __CHANNEL__, __ICPSC__) \
|
#define TIM_SET_ICPRESCALERVALUE(__HANDLE__, __CHANNEL__, __ICPSC__) \
|
||||||
(((__CHANNEL__) == TIM_CHANNEL_1) ? ((__HANDLE__)->Instance->CCMR1 |= (__ICPSC__)) :\
|
(((__CHANNEL__) == TIM_CHANNEL_1) ? ((__HANDLE__)->Instance->CCMR1 |= (__ICPSC__)) :\
|
||||||
((__CHANNEL__) == TIM_CHANNEL_2) ? ((__HANDLE__)->Instance->CCMR1 |= ((__ICPSC__) << 8U)) :\
|
((__CHANNEL__) == TIM_CHANNEL_2) ? ((__HANDLE__)->Instance->CCMR1 |= ((__ICPSC__) << 8U)) :\
|
||||||
((__CHANNEL__) == TIM_CHANNEL_3) ? ((__HANDLE__)->Instance->CCMR2 |= (__ICPSC__)) :\
|
((__CHANNEL__) == TIM_CHANNEL_3) ? ((__HANDLE__)->Instance->CCMR2 |= (__ICPSC__)) :\
|
||||||
((__HANDLE__)->Instance->CCMR2 |= ((__ICPSC__) << 8U)))
|
((__HANDLE__)->Instance->CCMR2 |= ((__ICPSC__) << 8U)))
|
||||||
|
|
||||||
#define TIM_RESET_ICPRESCALERVALUE(__HANDLE__, __CHANNEL__) \
|
#define TIM_RESET_ICPRESCALERVALUE(__HANDLE__, __CHANNEL__) \
|
||||||
(((__CHANNEL__) == TIM_CHANNEL_1) ? ((__HANDLE__)->Instance->CCMR1 &= (uint16_t)~TIM_CCMR1_IC1PSC) :\
|
(((__CHANNEL__) == TIM_CHANNEL_1) ? ((__HANDLE__)->Instance->CCMR1 &= ~TIM_CCMR1_IC1PSC) :\
|
||||||
((__CHANNEL__) == TIM_CHANNEL_2) ? ((__HANDLE__)->Instance->CCMR1 &= (uint16_t)~TIM_CCMR1_IC2PSC) :\
|
((__CHANNEL__) == TIM_CHANNEL_2) ? ((__HANDLE__)->Instance->CCMR1 &= ~TIM_CCMR1_IC2PSC) :\
|
||||||
((__CHANNEL__) == TIM_CHANNEL_3) ? ((__HANDLE__)->Instance->CCMR2 &= (uint16_t)~TIM_CCMR2_IC3PSC) :\
|
((__CHANNEL__) == TIM_CHANNEL_3) ? ((__HANDLE__)->Instance->CCMR2 &= ~TIM_CCMR2_IC3PSC) :\
|
||||||
((__HANDLE__)->Instance->CCMR2 &= (uint16_t)~TIM_CCMR2_IC4PSC))
|
((__HANDLE__)->Instance->CCMR2 &= ~TIM_CCMR2_IC4PSC))
|
||||||
|
|
||||||
#define TIM_SET_CAPTUREPOLARITY(__HANDLE__, __CHANNEL__, __POLARITY__) \
|
#define TIM_SET_CAPTUREPOLARITY(__HANDLE__, __CHANNEL__, __POLARITY__) \
|
||||||
(((__CHANNEL__) == TIM_CHANNEL_1) ? ((__HANDLE__)->Instance->CCER |= (__POLARITY__)) :\
|
(((__CHANNEL__) == TIM_CHANNEL_1) ? ((__HANDLE__)->Instance->CCER |= (__POLARITY__)) :\
|
||||||
((__CHANNEL__) == TIM_CHANNEL_2) ? ((__HANDLE__)->Instance->CCER |= ((__POLARITY__) << 4U)) :\
|
((__CHANNEL__) == TIM_CHANNEL_2) ? ((__HANDLE__)->Instance->CCER |= ((__POLARITY__) << 4U)) :\
|
||||||
((__CHANNEL__) == TIM_CHANNEL_3) ? ((__HANDLE__)->Instance->CCER |= ((__POLARITY__) << 8U)) :\
|
((__CHANNEL__) == TIM_CHANNEL_3) ? ((__HANDLE__)->Instance->CCER |= ((__POLARITY__) << 8U)) :\
|
||||||
((__HANDLE__)->Instance->CCER |= (((__POLARITY__) << 12U))))
|
((__HANDLE__)->Instance->CCER |= (((__POLARITY__) << 12U))))
|
||||||
|
|
||||||
#define TIM_RESET_CAPTUREPOLARITY(__HANDLE__, __CHANNEL__) \
|
#define TIM_RESET_CAPTUREPOLARITY(__HANDLE__, __CHANNEL__) \
|
||||||
(((__CHANNEL__) == TIM_CHANNEL_1) ? ((__HANDLE__)->Instance->CCER &= (uint16_t)~(TIM_CCER_CC1P | TIM_CCER_CC1NP)) :\
|
(((__CHANNEL__) == TIM_CHANNEL_1) ? ((__HANDLE__)->Instance->CCER &= ~(TIM_CCER_CC1P | TIM_CCER_CC1NP)) :\
|
||||||
((__CHANNEL__) == TIM_CHANNEL_2) ? ((__HANDLE__)->Instance->CCER &= (uint16_t)~(TIM_CCER_CC2P | TIM_CCER_CC2NP)) :\
|
((__CHANNEL__) == TIM_CHANNEL_2) ? ((__HANDLE__)->Instance->CCER &= ~(TIM_CCER_CC2P | TIM_CCER_CC2NP)) :\
|
||||||
((__CHANNEL__) == TIM_CHANNEL_3) ? ((__HANDLE__)->Instance->CCER &= (uint16_t)~(TIM_CCER_CC3P | TIM_CCER_CC3NP)) :\
|
((__CHANNEL__) == TIM_CHANNEL_3) ? ((__HANDLE__)->Instance->CCER &= ~(TIM_CCER_CC3P | TIM_CCER_CC3NP)) :\
|
||||||
((__HANDLE__)->Instance->CCER &= (uint16_t)~(TIM_CCER_CC4P | TIM_CCER_CC4NP)))
|
((__HANDLE__)->Instance->CCER &= ~(TIM_CCER_CC4P | TIM_CCER_CC4NP)))
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @}
|
* @}
|
||||||
|
@ -2035,7 +2137,8 @@ HAL_StatusTypeDef HAL_TIM_Encoder_Stop(TIM_HandleTypeDef *htim, uint32_t Channel
|
||||||
HAL_StatusTypeDef HAL_TIM_Encoder_Start_IT(TIM_HandleTypeDef *htim, uint32_t Channel);
|
HAL_StatusTypeDef HAL_TIM_Encoder_Start_IT(TIM_HandleTypeDef *htim, uint32_t Channel);
|
||||||
HAL_StatusTypeDef HAL_TIM_Encoder_Stop_IT(TIM_HandleTypeDef *htim, uint32_t Channel);
|
HAL_StatusTypeDef HAL_TIM_Encoder_Stop_IT(TIM_HandleTypeDef *htim, uint32_t Channel);
|
||||||
/* Non-Blocking mode: DMA */
|
/* Non-Blocking mode: DMA */
|
||||||
HAL_StatusTypeDef HAL_TIM_Encoder_Start_DMA(TIM_HandleTypeDef *htim, uint32_t Channel, uint32_t *pData1, uint32_t *pData2, uint16_t Length);
|
HAL_StatusTypeDef HAL_TIM_Encoder_Start_DMA(TIM_HandleTypeDef *htim, uint32_t Channel, uint32_t *pData1,
|
||||||
|
uint32_t *pData2, uint16_t Length);
|
||||||
HAL_StatusTypeDef HAL_TIM_Encoder_Stop_DMA(TIM_HandleTypeDef *htim, uint32_t Channel);
|
HAL_StatusTypeDef HAL_TIM_Encoder_Stop_DMA(TIM_HandleTypeDef *htim, uint32_t Channel);
|
||||||
/**
|
/**
|
||||||
* @}
|
* @}
|
||||||
|
@ -2059,17 +2162,19 @@ void HAL_TIM_IRQHandler(TIM_HandleTypeDef *htim);
|
||||||
HAL_StatusTypeDef HAL_TIM_OC_ConfigChannel(TIM_HandleTypeDef *htim, TIM_OC_InitTypeDef *sConfig, uint32_t Channel);
|
HAL_StatusTypeDef HAL_TIM_OC_ConfigChannel(TIM_HandleTypeDef *htim, TIM_OC_InitTypeDef *sConfig, uint32_t Channel);
|
||||||
HAL_StatusTypeDef HAL_TIM_PWM_ConfigChannel(TIM_HandleTypeDef *htim, TIM_OC_InitTypeDef *sConfig, uint32_t Channel);
|
HAL_StatusTypeDef HAL_TIM_PWM_ConfigChannel(TIM_HandleTypeDef *htim, TIM_OC_InitTypeDef *sConfig, uint32_t Channel);
|
||||||
HAL_StatusTypeDef HAL_TIM_IC_ConfigChannel(TIM_HandleTypeDef *htim, TIM_IC_InitTypeDef *sConfig, uint32_t Channel);
|
HAL_StatusTypeDef HAL_TIM_IC_ConfigChannel(TIM_HandleTypeDef *htim, TIM_IC_InitTypeDef *sConfig, uint32_t Channel);
|
||||||
HAL_StatusTypeDef HAL_TIM_OnePulse_ConfigChannel(TIM_HandleTypeDef *htim, TIM_OnePulse_InitTypeDef *sConfig, uint32_t OutputChannel, uint32_t InputChannel);
|
HAL_StatusTypeDef HAL_TIM_OnePulse_ConfigChannel(TIM_HandleTypeDef *htim, TIM_OnePulse_InitTypeDef *sConfig,
|
||||||
HAL_StatusTypeDef HAL_TIM_ConfigOCrefClear(TIM_HandleTypeDef *htim, TIM_ClearInputConfigTypeDef *sClearInputConfig, uint32_t Channel);
|
uint32_t OutputChannel, uint32_t InputChannel);
|
||||||
|
HAL_StatusTypeDef HAL_TIM_ConfigOCrefClear(TIM_HandleTypeDef *htim, TIM_ClearInputConfigTypeDef *sClearInputConfig,
|
||||||
|
uint32_t Channel);
|
||||||
HAL_StatusTypeDef HAL_TIM_ConfigClockSource(TIM_HandleTypeDef *htim, TIM_ClockConfigTypeDef *sClockSourceConfig);
|
HAL_StatusTypeDef HAL_TIM_ConfigClockSource(TIM_HandleTypeDef *htim, TIM_ClockConfigTypeDef *sClockSourceConfig);
|
||||||
HAL_StatusTypeDef HAL_TIM_ConfigTI1Input(TIM_HandleTypeDef *htim, uint32_t TI1_Selection);
|
HAL_StatusTypeDef HAL_TIM_ConfigTI1Input(TIM_HandleTypeDef *htim, uint32_t TI1_Selection);
|
||||||
HAL_StatusTypeDef HAL_TIM_SlaveConfigSynchro(TIM_HandleTypeDef *htim, TIM_SlaveConfigTypeDef *sSlaveConfig);
|
HAL_StatusTypeDef HAL_TIM_SlaveConfigSynchro(TIM_HandleTypeDef *htim, TIM_SlaveConfigTypeDef *sSlaveConfig);
|
||||||
HAL_StatusTypeDef HAL_TIM_SlaveConfigSynchro_IT(TIM_HandleTypeDef *htim, TIM_SlaveConfigTypeDef *sSlaveConfig);
|
HAL_StatusTypeDef HAL_TIM_SlaveConfigSynchro_IT(TIM_HandleTypeDef *htim, TIM_SlaveConfigTypeDef *sSlaveConfig);
|
||||||
HAL_StatusTypeDef HAL_TIM_DMABurst_WriteStart(TIM_HandleTypeDef *htim, uint32_t BurstBaseAddress, uint32_t BurstRequestSrc, \
|
HAL_StatusTypeDef HAL_TIM_DMABurst_WriteStart(TIM_HandleTypeDef *htim, uint32_t BurstBaseAddress,
|
||||||
uint32_t *BurstBuffer, uint32_t BurstLength);
|
uint32_t BurstRequestSrc, uint32_t *BurstBuffer, uint32_t BurstLength);
|
||||||
HAL_StatusTypeDef HAL_TIM_DMABurst_WriteStop(TIM_HandleTypeDef *htim, uint32_t BurstRequestSrc);
|
HAL_StatusTypeDef HAL_TIM_DMABurst_WriteStop(TIM_HandleTypeDef *htim, uint32_t BurstRequestSrc);
|
||||||
HAL_StatusTypeDef HAL_TIM_DMABurst_ReadStart(TIM_HandleTypeDef *htim, uint32_t BurstBaseAddress, uint32_t BurstRequestSrc, \
|
HAL_StatusTypeDef HAL_TIM_DMABurst_ReadStart(TIM_HandleTypeDef *htim, uint32_t BurstBaseAddress,
|
||||||
uint32_t *BurstBuffer, uint32_t BurstLength);
|
uint32_t BurstRequestSrc, uint32_t *BurstBuffer, uint32_t BurstLength);
|
||||||
HAL_StatusTypeDef HAL_TIM_DMABurst_ReadStop(TIM_HandleTypeDef *htim, uint32_t BurstRequestSrc);
|
HAL_StatusTypeDef HAL_TIM_DMABurst_ReadStop(TIM_HandleTypeDef *htim, uint32_t BurstRequestSrc);
|
||||||
HAL_StatusTypeDef HAL_TIM_GenerateEvent(TIM_HandleTypeDef *htim, uint32_t EventSource);
|
HAL_StatusTypeDef HAL_TIM_GenerateEvent(TIM_HandleTypeDef *htim, uint32_t EventSource);
|
||||||
uint32_t HAL_TIM_ReadCapturedValue(TIM_HandleTypeDef *htim, uint32_t Channel);
|
uint32_t HAL_TIM_ReadCapturedValue(TIM_HandleTypeDef *htim, uint32_t Channel);
|
||||||
|
@ -2095,7 +2200,8 @@ void HAL_TIM_ErrorCallback(TIM_HandleTypeDef *htim);
|
||||||
|
|
||||||
/* Callbacks Register/UnRegister functions ***********************************/
|
/* Callbacks Register/UnRegister functions ***********************************/
|
||||||
#if (USE_HAL_TIM_REGISTER_CALLBACKS == 1)
|
#if (USE_HAL_TIM_REGISTER_CALLBACKS == 1)
|
||||||
HAL_StatusTypeDef HAL_TIM_RegisterCallback(TIM_HandleTypeDef *htim, HAL_TIM_CallbackIDTypeDef CallbackID, pTIM_CallbackTypeDef pCallback);
|
HAL_StatusTypeDef HAL_TIM_RegisterCallback(TIM_HandleTypeDef *htim, HAL_TIM_CallbackIDTypeDef CallbackID,
|
||||||
|
pTIM_CallbackTypeDef pCallback);
|
||||||
HAL_StatusTypeDef HAL_TIM_UnRegisterCallback(TIM_HandleTypeDef *htim, HAL_TIM_CallbackIDTypeDef CallbackID);
|
HAL_StatusTypeDef HAL_TIM_UnRegisterCallback(TIM_HandleTypeDef *htim, HAL_TIM_CallbackIDTypeDef CallbackID);
|
||||||
#endif /* USE_HAL_TIM_REGISTER_CALLBACKS */
|
#endif /* USE_HAL_TIM_REGISTER_CALLBACKS */
|
||||||
|
|
||||||
|
@ -2125,8 +2231,8 @@ HAL_TIM_StateTypeDef HAL_TIM_Encoder_GetState(TIM_HandleTypeDef *htim);
|
||||||
|
|
||||||
/* Private functions----------------------------------------------------------*/
|
/* Private functions----------------------------------------------------------*/
|
||||||
/** @defgroup TIM_Private_Functions TIM Private Functions
|
/** @defgroup TIM_Private_Functions TIM Private Functions
|
||||||
* @{
|
* @{
|
||||||
*/
|
*/
|
||||||
void TIM_Base_SetConfig(TIM_TypeDef *TIMx, TIM_Base_InitTypeDef *Structure);
|
void TIM_Base_SetConfig(TIM_TypeDef *TIMx, TIM_Base_InitTypeDef *Structure);
|
||||||
void TIM_TI1_SetConfig(TIM_TypeDef *TIMx, uint32_t TIM_ICPolarity, uint32_t TIM_ICSelection, uint32_t TIM_ICFilter);
|
void TIM_TI1_SetConfig(TIM_TypeDef *TIMx, uint32_t TIM_ICPolarity, uint32_t TIM_ICSelection, uint32_t TIM_ICFilter);
|
||||||
void TIM_OC2_SetConfig(TIM_TypeDef *TIMx, TIM_OC_InitTypeDef *OC_Config);
|
void TIM_OC2_SetConfig(TIM_TypeDef *TIMx, TIM_OC_InitTypeDef *OC_Config);
|
||||||
|
@ -2145,8 +2251,8 @@ void TIM_ResetCallback(TIM_HandleTypeDef *htim);
|
||||||
#endif /* USE_HAL_TIM_REGISTER_CALLBACKS */
|
#endif /* USE_HAL_TIM_REGISTER_CALLBACKS */
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @}
|
* @}
|
||||||
*/
|
*/
|
||||||
/* End of private functions --------------------------------------------------*/
|
/* End of private functions --------------------------------------------------*/
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
|
@ -201,9 +201,9 @@ TIMEx_BreakInputConfigTypeDef;
|
||||||
*/
|
*/
|
||||||
|
|
||||||
/** @addtogroup TIMEx_Exported_Functions_Group1 Extended Timer Hall Sensor functions
|
/** @addtogroup TIMEx_Exported_Functions_Group1 Extended Timer Hall Sensor functions
|
||||||
* @brief Timer Hall Sensor functions
|
* @brief Timer Hall Sensor functions
|
||||||
* @{
|
* @{
|
||||||
*/
|
*/
|
||||||
/* Timer Hall Sensor functions **********************************************/
|
/* Timer Hall Sensor functions **********************************************/
|
||||||
HAL_StatusTypeDef HAL_TIMEx_HallSensor_Init(TIM_HandleTypeDef *htim, TIM_HallSensor_InitTypeDef *sConfig);
|
HAL_StatusTypeDef HAL_TIMEx_HallSensor_Init(TIM_HandleTypeDef *htim, TIM_HallSensor_InitTypeDef *sConfig);
|
||||||
HAL_StatusTypeDef HAL_TIMEx_HallSensor_DeInit(TIM_HandleTypeDef *htim);
|
HAL_StatusTypeDef HAL_TIMEx_HallSensor_DeInit(TIM_HandleTypeDef *htim);
|
||||||
|
@ -225,9 +225,9 @@ HAL_StatusTypeDef HAL_TIMEx_HallSensor_Stop_DMA(TIM_HandleTypeDef *htim);
|
||||||
*/
|
*/
|
||||||
|
|
||||||
/** @addtogroup TIMEx_Exported_Functions_Group2 Extended Timer Complementary Output Compare functions
|
/** @addtogroup TIMEx_Exported_Functions_Group2 Extended Timer Complementary Output Compare functions
|
||||||
* @brief Timer Complementary Output Compare functions
|
* @brief Timer Complementary Output Compare functions
|
||||||
* @{
|
* @{
|
||||||
*/
|
*/
|
||||||
/* Timer Complementary Output Compare functions *****************************/
|
/* Timer Complementary Output Compare functions *****************************/
|
||||||
/* Blocking mode: Polling */
|
/* Blocking mode: Polling */
|
||||||
HAL_StatusTypeDef HAL_TIMEx_OCN_Start(TIM_HandleTypeDef *htim, uint32_t Channel);
|
HAL_StatusTypeDef HAL_TIMEx_OCN_Start(TIM_HandleTypeDef *htim, uint32_t Channel);
|
||||||
|
@ -245,9 +245,9 @@ HAL_StatusTypeDef HAL_TIMEx_OCN_Stop_DMA(TIM_HandleTypeDef *htim, uint32_t Chann
|
||||||
*/
|
*/
|
||||||
|
|
||||||
/** @addtogroup TIMEx_Exported_Functions_Group3 Extended Timer Complementary PWM functions
|
/** @addtogroup TIMEx_Exported_Functions_Group3 Extended Timer Complementary PWM functions
|
||||||
* @brief Timer Complementary PWM functions
|
* @brief Timer Complementary PWM functions
|
||||||
* @{
|
* @{
|
||||||
*/
|
*/
|
||||||
/* Timer Complementary PWM functions ****************************************/
|
/* Timer Complementary PWM functions ****************************************/
|
||||||
/* Blocking mode: Polling */
|
/* Blocking mode: Polling */
|
||||||
HAL_StatusTypeDef HAL_TIMEx_PWMN_Start(TIM_HandleTypeDef *htim, uint32_t Channel);
|
HAL_StatusTypeDef HAL_TIMEx_PWMN_Start(TIM_HandleTypeDef *htim, uint32_t Channel);
|
||||||
|
@ -264,9 +264,9 @@ HAL_StatusTypeDef HAL_TIMEx_PWMN_Stop_DMA(TIM_HandleTypeDef *htim, uint32_t Chan
|
||||||
*/
|
*/
|
||||||
|
|
||||||
/** @addtogroup TIMEx_Exported_Functions_Group4 Extended Timer Complementary One Pulse functions
|
/** @addtogroup TIMEx_Exported_Functions_Group4 Extended Timer Complementary One Pulse functions
|
||||||
* @brief Timer Complementary One Pulse functions
|
* @brief Timer Complementary One Pulse functions
|
||||||
* @{
|
* @{
|
||||||
*/
|
*/
|
||||||
/* Timer Complementary One Pulse functions **********************************/
|
/* Timer Complementary One Pulse functions **********************************/
|
||||||
/* Blocking mode: Polling */
|
/* Blocking mode: Polling */
|
||||||
HAL_StatusTypeDef HAL_TIMEx_OnePulseN_Start(TIM_HandleTypeDef *htim, uint32_t OutputChannel);
|
HAL_StatusTypeDef HAL_TIMEx_OnePulseN_Start(TIM_HandleTypeDef *htim, uint32_t OutputChannel);
|
||||||
|
@ -280,17 +280,23 @@ HAL_StatusTypeDef HAL_TIMEx_OnePulseN_Stop_IT(TIM_HandleTypeDef *htim, uint32_t
|
||||||
*/
|
*/
|
||||||
|
|
||||||
/** @addtogroup TIMEx_Exported_Functions_Group5 Extended Peripheral Control functions
|
/** @addtogroup TIMEx_Exported_Functions_Group5 Extended Peripheral Control functions
|
||||||
* @brief Peripheral Control functions
|
* @brief Peripheral Control functions
|
||||||
* @{
|
* @{
|
||||||
*/
|
*/
|
||||||
/* Extended Control functions ************************************************/
|
/* Extended Control functions ************************************************/
|
||||||
HAL_StatusTypeDef HAL_TIMEx_ConfigCommutEvent(TIM_HandleTypeDef *htim, uint32_t InputTrigger, uint32_t CommutationSource);
|
HAL_StatusTypeDef HAL_TIMEx_ConfigCommutEvent(TIM_HandleTypeDef *htim, uint32_t InputTrigger,
|
||||||
HAL_StatusTypeDef HAL_TIMEx_ConfigCommutEvent_IT(TIM_HandleTypeDef *htim, uint32_t InputTrigger, uint32_t CommutationSource);
|
uint32_t CommutationSource);
|
||||||
HAL_StatusTypeDef HAL_TIMEx_ConfigCommutEvent_DMA(TIM_HandleTypeDef *htim, uint32_t InputTrigger, uint32_t CommutationSource);
|
HAL_StatusTypeDef HAL_TIMEx_ConfigCommutEvent_IT(TIM_HandleTypeDef *htim, uint32_t InputTrigger,
|
||||||
HAL_StatusTypeDef HAL_TIMEx_MasterConfigSynchronization(TIM_HandleTypeDef *htim, TIM_MasterConfigTypeDef *sMasterConfig);
|
uint32_t CommutationSource);
|
||||||
HAL_StatusTypeDef HAL_TIMEx_ConfigBreakDeadTime(TIM_HandleTypeDef *htim, TIM_BreakDeadTimeConfigTypeDef *sBreakDeadTimeConfig);
|
HAL_StatusTypeDef HAL_TIMEx_ConfigCommutEvent_DMA(TIM_HandleTypeDef *htim, uint32_t InputTrigger,
|
||||||
|
uint32_t CommutationSource);
|
||||||
|
HAL_StatusTypeDef HAL_TIMEx_MasterConfigSynchronization(TIM_HandleTypeDef *htim,
|
||||||
|
TIM_MasterConfigTypeDef *sMasterConfig);
|
||||||
|
HAL_StatusTypeDef HAL_TIMEx_ConfigBreakDeadTime(TIM_HandleTypeDef *htim,
|
||||||
|
TIM_BreakDeadTimeConfigTypeDef *sBreakDeadTimeConfig);
|
||||||
#if defined(TIM_BREAK_INPUT_SUPPORT)
|
#if defined(TIM_BREAK_INPUT_SUPPORT)
|
||||||
HAL_StatusTypeDef HAL_TIMEx_ConfigBreakInput(TIM_HandleTypeDef *htim, uint32_t BreakInput, TIMEx_BreakInputConfigTypeDef *sBreakInputConfig);
|
HAL_StatusTypeDef HAL_TIMEx_ConfigBreakInput(TIM_HandleTypeDef *htim, uint32_t BreakInput,
|
||||||
|
TIMEx_BreakInputConfigTypeDef *sBreakInputConfig);
|
||||||
#endif /* TIM_BREAK_INPUT_SUPPORT */
|
#endif /* TIM_BREAK_INPUT_SUPPORT */
|
||||||
HAL_StatusTypeDef HAL_TIMEx_GroupChannel5(TIM_HandleTypeDef *htim, uint32_t Channels);
|
HAL_StatusTypeDef HAL_TIMEx_GroupChannel5(TIM_HandleTypeDef *htim, uint32_t Channels);
|
||||||
HAL_StatusTypeDef HAL_TIMEx_RemapConfig(TIM_HandleTypeDef *htim, uint32_t Remap);
|
HAL_StatusTypeDef HAL_TIMEx_RemapConfig(TIM_HandleTypeDef *htim, uint32_t Remap);
|
||||||
|
@ -327,7 +333,7 @@ HAL_TIM_StateTypeDef HAL_TIMEx_HallSensor_GetState(TIM_HandleTypeDef *htim);
|
||||||
/* End of exported functions -------------------------------------------------*/
|
/* End of exported functions -------------------------------------------------*/
|
||||||
|
|
||||||
/* Private functions----------------------------------------------------------*/
|
/* Private functions----------------------------------------------------------*/
|
||||||
/** @defgroup TIMEx_Private_Functions TIM Extended Private Functions
|
/** @addtogroup TIMEx_Private_Functions TIMEx Private Functions
|
||||||
* @{
|
* @{
|
||||||
*/
|
*/
|
||||||
void TIMEx_DMACommutationCplt(DMA_HandleTypeDef *hdma);
|
void TIMEx_DMACommutationCplt(DMA_HandleTypeDef *hdma);
|
||||||
|
|
|
@ -125,8 +125,6 @@ typedef struct
|
||||||
This parameter can be a value of @ref UART_MSB_First. */
|
This parameter can be a value of @ref UART_MSB_First. */
|
||||||
} UART_AdvFeatureInitTypeDef;
|
} UART_AdvFeatureInitTypeDef;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief HAL UART State definition
|
* @brief HAL UART State definition
|
||||||
* @note HAL UART State value is a combination of 2 different substates: gState and RxState (see @ref UART_State_Definition).
|
* @note HAL UART State value is a combination of 2 different substates: gState and RxState (see @ref UART_State_Definition).
|
||||||
|
@ -206,10 +204,9 @@ typedef struct __UART_HandleTypeDef
|
||||||
|
|
||||||
uint16_t Mask; /*!< UART Rx RDR register mask */
|
uint16_t Mask; /*!< UART Rx RDR register mask */
|
||||||
|
|
||||||
|
void (*RxISR)(struct __UART_HandleTypeDef *huart); /*!< Function pointer on Rx IRQ handler */
|
||||||
|
|
||||||
void (*RxISR)(struct __UART_HandleTypeDef *huart); /*!< Function pointer on Rx IRQ handler */
|
void (*TxISR)(struct __UART_HandleTypeDef *huart); /*!< Function pointer on Tx IRQ handler */
|
||||||
|
|
||||||
void (*TxISR)(struct __UART_HandleTypeDef *huart); /*!< Function pointer on Tx IRQ handler */
|
|
||||||
|
|
||||||
DMA_HandleTypeDef *hdmatx; /*!< UART Tx DMA Handle parameters */
|
DMA_HandleTypeDef *hdmatx; /*!< UART Tx DMA Handle parameters */
|
||||||
|
|
||||||
|
@ -313,8 +310,10 @@ typedef void (*pUART_CallbackTypeDef)(UART_HandleTypeDef *huart); /*!< pointer
|
||||||
#define HAL_UART_ERROR_FE ((uint32_t)0x00000004U) /*!< Frame error */
|
#define HAL_UART_ERROR_FE ((uint32_t)0x00000004U) /*!< Frame error */
|
||||||
#define HAL_UART_ERROR_ORE ((uint32_t)0x00000008U) /*!< Overrun error */
|
#define HAL_UART_ERROR_ORE ((uint32_t)0x00000008U) /*!< Overrun error */
|
||||||
#define HAL_UART_ERROR_DMA ((uint32_t)0x00000010U) /*!< DMA transfer error */
|
#define HAL_UART_ERROR_DMA ((uint32_t)0x00000010U) /*!< DMA transfer error */
|
||||||
|
#define HAL_UART_ERROR_RTO ((uint32_t)0x00000020U) /*!< Receiver Timeout error */
|
||||||
|
|
||||||
#if (USE_HAL_UART_REGISTER_CALLBACKS == 1)
|
#if (USE_HAL_UART_REGISTER_CALLBACKS == 1)
|
||||||
#define HAL_UART_ERROR_INVALID_CALLBACK ((uint32_t)0x00000020U) /*!< Invalid Callback error */
|
#define HAL_UART_ERROR_INVALID_CALLBACK ((uint32_t)0x00000040U) /*!< Invalid Callback error */
|
||||||
#endif /* USE_HAL_UART_REGISTER_CALLBACKS */
|
#endif /* USE_HAL_UART_REGISTER_CALLBACKS */
|
||||||
/**
|
/**
|
||||||
* @}
|
* @}
|
||||||
|
@ -400,11 +399,11 @@ typedef void (*pUART_CallbackTypeDef)(UART_HandleTypeDef *huart); /*!< pointer
|
||||||
* @}
|
* @}
|
||||||
*/
|
*/
|
||||||
|
|
||||||
/** @defgroup UART_Receiver_TimeOut UART Receiver TimeOut
|
/** @defgroup UART_Receiver_Timeout UART Receiver Timeout
|
||||||
* @{
|
* @{
|
||||||
*/
|
*/
|
||||||
#define UART_RECEIVER_TIMEOUT_DISABLE 0x00000000U /*!< UART receiver timeout disable */
|
#define UART_RECEIVER_TIMEOUT_DISABLE 0x00000000U /*!< UART Receiver Timeout disable */
|
||||||
#define UART_RECEIVER_TIMEOUT_ENABLE USART_CR2_RTOEN /*!< UART receiver timeout enable */
|
#define UART_RECEIVER_TIMEOUT_ENABLE USART_CR2_RTOEN /*!< UART Receiver Timeout enable */
|
||||||
/**
|
/**
|
||||||
* @}
|
* @}
|
||||||
*/
|
*/
|
||||||
|
@ -562,6 +561,17 @@ typedef void (*pUART_CallbackTypeDef)(UART_HandleTypeDef *huart); /*!< pointer
|
||||||
/**
|
/**
|
||||||
* @}
|
* @}
|
||||||
*/
|
*/
|
||||||
|
#if defined(USART_CR1_UESM)
|
||||||
|
|
||||||
|
/** @defgroup UART_Stop_Mode_Enable UART Advanced Feature Stop Mode Enable
|
||||||
|
* @{
|
||||||
|
*/
|
||||||
|
#define UART_ADVFEATURE_STOPMODE_DISABLE 0x00000000U /*!< UART stop mode disable */
|
||||||
|
#define UART_ADVFEATURE_STOPMODE_ENABLE USART_CR1_UESM /*!< UART stop mode enable */
|
||||||
|
/**
|
||||||
|
* @}
|
||||||
|
*/
|
||||||
|
#endif /* USART_CR1_UESM */
|
||||||
|
|
||||||
/** @defgroup UART_Mute_Mode UART Advanced Feature Mute Mode Enable
|
/** @defgroup UART_Mute_Mode UART Advanced Feature Mute Mode Enable
|
||||||
* @{
|
* @{
|
||||||
|
@ -579,6 +589,18 @@ typedef void (*pUART_CallbackTypeDef)(UART_HandleTypeDef *huart); /*!< pointer
|
||||||
/**
|
/**
|
||||||
* @}
|
* @}
|
||||||
*/
|
*/
|
||||||
|
#if defined(USART_CR1_UESM)
|
||||||
|
|
||||||
|
/** @defgroup UART_WakeUp_from_Stop_Selection UART WakeUp From Stop Selection
|
||||||
|
* @{
|
||||||
|
*/
|
||||||
|
#define UART_WAKEUP_ON_ADDRESS 0x00000000U /*!< UART wake-up on address */
|
||||||
|
#define UART_WAKEUP_ON_STARTBIT USART_CR3_WUS_1 /*!< UART wake-up on start bit */
|
||||||
|
#define UART_WAKEUP_ON_READDATA_NONEMPTY USART_CR3_WUS /*!< UART wake-up on receive data register not empty or RXFIFO is not empty */
|
||||||
|
/**
|
||||||
|
* @}
|
||||||
|
*/
|
||||||
|
#endif /* USART_CR1_UESM */
|
||||||
|
|
||||||
/** @defgroup UART_DriverEnable_Polarity UART DriverEnable Polarity
|
/** @defgroup UART_DriverEnable_Polarity UART DriverEnable Polarity
|
||||||
* @{
|
* @{
|
||||||
|
@ -626,13 +648,20 @@ typedef void (*pUART_CallbackTypeDef)(UART_HandleTypeDef *huart); /*!< pointer
|
||||||
* - 0xXXXX : Flag mask in the ISR register
|
* - 0xXXXX : Flag mask in the ISR register
|
||||||
* @{
|
* @{
|
||||||
*/
|
*/
|
||||||
|
#if defined(USART_ISR_REACK)
|
||||||
|
#define UART_FLAG_REACK USART_ISR_REACK /*!< UART receive enable acknowledge flag */
|
||||||
|
#endif /* USART_ISR_REACK */
|
||||||
#define UART_FLAG_TEACK USART_ISR_TEACK /*!< UART transmit enable acknowledge flag */
|
#define UART_FLAG_TEACK USART_ISR_TEACK /*!< UART transmit enable acknowledge flag */
|
||||||
|
#if defined(USART_CR1_UESM)
|
||||||
|
#define UART_FLAG_WUF USART_ISR_WUF /*!< UART wake-up from stop mode flag */
|
||||||
|
#endif /* USART_CR1_UESM */
|
||||||
#define UART_FLAG_RWU USART_ISR_RWU /*!< UART receiver wake-up from mute mode flag */
|
#define UART_FLAG_RWU USART_ISR_RWU /*!< UART receiver wake-up from mute mode flag */
|
||||||
#define UART_FLAG_SBKF USART_ISR_SBKF /*!< UART send break flag */
|
#define UART_FLAG_SBKF USART_ISR_SBKF /*!< UART send break flag */
|
||||||
#define UART_FLAG_CMF USART_ISR_CMF /*!< UART character match flag */
|
#define UART_FLAG_CMF USART_ISR_CMF /*!< UART character match flag */
|
||||||
#define UART_FLAG_BUSY USART_ISR_BUSY /*!< UART busy flag */
|
#define UART_FLAG_BUSY USART_ISR_BUSY /*!< UART busy flag */
|
||||||
#define UART_FLAG_ABRF USART_ISR_ABRF /*!< UART auto Baud rate flag */
|
#define UART_FLAG_ABRF USART_ISR_ABRF /*!< UART auto Baud rate flag */
|
||||||
#define UART_FLAG_ABRE USART_ISR_ABRE /*!< UART auto Baud rate error */
|
#define UART_FLAG_ABRE USART_ISR_ABRE /*!< UART auto Baud rate error */
|
||||||
|
#define UART_FLAG_RTOF USART_ISR_RTOF /*!< UART receiver timeout flag */
|
||||||
#define UART_FLAG_CTS USART_ISR_CTS /*!< UART clear to send flag */
|
#define UART_FLAG_CTS USART_ISR_CTS /*!< UART clear to send flag */
|
||||||
#define UART_FLAG_CTSIF USART_ISR_CTSIF /*!< UART clear to send interrupt flag */
|
#define UART_FLAG_CTSIF USART_ISR_CTSIF /*!< UART clear to send interrupt flag */
|
||||||
#define UART_FLAG_LBDF USART_ISR_LBDF /*!< UART LIN break detection flag */
|
#define UART_FLAG_LBDF USART_ISR_LBDF /*!< UART LIN break detection flag */
|
||||||
|
@ -674,6 +703,10 @@ typedef void (*pUART_CallbackTypeDef)(UART_HandleTypeDef *huart); /*!< pointer
|
||||||
#define UART_IT_LBD 0x0846U /*!< UART LIN break detection interruption */
|
#define UART_IT_LBD 0x0846U /*!< UART LIN break detection interruption */
|
||||||
#define UART_IT_CTS 0x096AU /*!< UART CTS interruption */
|
#define UART_IT_CTS 0x096AU /*!< UART CTS interruption */
|
||||||
#define UART_IT_CM 0x112EU /*!< UART character match interruption */
|
#define UART_IT_CM 0x112EU /*!< UART character match interruption */
|
||||||
|
#if defined(USART_CR1_UESM)
|
||||||
|
#define UART_IT_WUF 0x1476U /*!< UART wake-up from stop mode interruption */
|
||||||
|
#endif /* USART_CR1_UESM */
|
||||||
|
#define UART_IT_RTO 0x0B3AU /*!< UART receiver timeout interruption */
|
||||||
|
|
||||||
#define UART_IT_ERR 0x0060U /*!< UART error interruption */
|
#define UART_IT_ERR 0x0060U /*!< UART error interruption */
|
||||||
|
|
||||||
|
@ -689,13 +722,17 @@ typedef void (*pUART_CallbackTypeDef)(UART_HandleTypeDef *huart); /*!< pointer
|
||||||
*/
|
*/
|
||||||
#define UART_CLEAR_PEF USART_ICR_PECF /*!< Parity Error Clear Flag */
|
#define UART_CLEAR_PEF USART_ICR_PECF /*!< Parity Error Clear Flag */
|
||||||
#define UART_CLEAR_FEF USART_ICR_FECF /*!< Framing Error Clear Flag */
|
#define UART_CLEAR_FEF USART_ICR_FECF /*!< Framing Error Clear Flag */
|
||||||
#define UART_CLEAR_NEF USART_ICR_NCF /*!< Noise Error detected Clear Flag */
|
#define UART_CLEAR_NEF USART_ICR_NCF /*!< Noise Error detected Clear Flag */
|
||||||
#define UART_CLEAR_OREF USART_ICR_ORECF /*!< Overrun Error Clear Flag */
|
#define UART_CLEAR_OREF USART_ICR_ORECF /*!< Overrun Error Clear Flag */
|
||||||
#define UART_CLEAR_IDLEF USART_ICR_IDLECF /*!< IDLE line detected Clear Flag */
|
#define UART_CLEAR_IDLEF USART_ICR_IDLECF /*!< IDLE line detected Clear Flag */
|
||||||
#define UART_CLEAR_TCF USART_ICR_TCCF /*!< Transmission Complete Clear Flag */
|
#define UART_CLEAR_TCF USART_ICR_TCCF /*!< Transmission Complete Clear Flag */
|
||||||
#define UART_CLEAR_LBDF USART_ICR_LBDCF /*!< LIN Break Detection Clear Flag */
|
#define UART_CLEAR_LBDF USART_ICR_LBDCF /*!< LIN Break Detection Clear Flag */
|
||||||
#define UART_CLEAR_CTSF USART_ICR_CTSCF /*!< CTS Interrupt Clear Flag */
|
#define UART_CLEAR_CTSF USART_ICR_CTSCF /*!< CTS Interrupt Clear Flag */
|
||||||
#define UART_CLEAR_CMF USART_ICR_CMCF /*!< Character Match Clear Flag */
|
#define UART_CLEAR_CMF USART_ICR_CMCF /*!< Character Match Clear Flag */
|
||||||
|
#if defined(USART_CR1_UESM)
|
||||||
|
#define UART_CLEAR_WUF USART_ICR_WUCF /*!< Wake Up from stop mode Clear Flag */
|
||||||
|
#endif /* USART_CR1_UESM */
|
||||||
|
#define UART_CLEAR_RTOF USART_ICR_RTOCF /*!< UART receiver timeout clear flag */
|
||||||
/**
|
/**
|
||||||
* @}
|
* @}
|
||||||
*/
|
*/
|
||||||
|
@ -734,9 +771,9 @@ typedef void (*pUART_CallbackTypeDef)(UART_HandleTypeDef *huart); /*!< pointer
|
||||||
*/
|
*/
|
||||||
#define __HAL_UART_FLUSH_DRREGISTER(__HANDLE__) \
|
#define __HAL_UART_FLUSH_DRREGISTER(__HANDLE__) \
|
||||||
do{ \
|
do{ \
|
||||||
SET_BIT((__HANDLE__)->Instance->RQR, UART_RXDATA_FLUSH_REQUEST); \
|
SET_BIT((__HANDLE__)->Instance->RQR, UART_RXDATA_FLUSH_REQUEST); \
|
||||||
SET_BIT((__HANDLE__)->Instance->RQR, UART_TXDATA_FLUSH_REQUEST); \
|
SET_BIT((__HANDLE__)->Instance->RQR, UART_TXDATA_FLUSH_REQUEST); \
|
||||||
} while(0U)
|
} while(0U)
|
||||||
|
|
||||||
/** @brief Clear the specified UART pending flag.
|
/** @brief Clear the specified UART pending flag.
|
||||||
* @param __HANDLE__ specifies the UART Handle.
|
* @param __HANDLE__ specifies the UART Handle.
|
||||||
|
@ -748,9 +785,13 @@ typedef void (*pUART_CallbackTypeDef)(UART_HandleTypeDef *huart); /*!< pointer
|
||||||
* @arg @ref UART_CLEAR_OREF Overrun Error Clear Flag
|
* @arg @ref UART_CLEAR_OREF Overrun Error Clear Flag
|
||||||
* @arg @ref UART_CLEAR_IDLEF IDLE line detected Clear Flag
|
* @arg @ref UART_CLEAR_IDLEF IDLE line detected Clear Flag
|
||||||
* @arg @ref UART_CLEAR_TCF Transmission Complete Clear Flag
|
* @arg @ref UART_CLEAR_TCF Transmission Complete Clear Flag
|
||||||
|
* @arg @ref UART_CLEAR_RTOF Receiver Timeout clear flag
|
||||||
* @arg @ref UART_CLEAR_LBDF LIN Break Detection Clear Flag
|
* @arg @ref UART_CLEAR_LBDF LIN Break Detection Clear Flag
|
||||||
* @arg @ref UART_CLEAR_CTSF CTS Interrupt Clear Flag
|
* @arg @ref UART_CLEAR_CTSF CTS Interrupt Clear Flag
|
||||||
* @arg @ref UART_CLEAR_CMF Character Match Clear Flag
|
* @arg @ref UART_CLEAR_CMF Character Match Clear Flag
|
||||||
|
#if defined(USART_CR1_UESM)
|
||||||
|
* @arg @ref UART_CLEAR_WUF Wake Up from stop mode Clear Flag
|
||||||
|
#endif
|
||||||
* @retval None
|
* @retval None
|
||||||
*/
|
*/
|
||||||
#define __HAL_UART_CLEAR_FLAG(__HANDLE__, __FLAG__) ((__HANDLE__)->Instance->ICR = (__FLAG__))
|
#define __HAL_UART_CLEAR_FLAG(__HANDLE__, __FLAG__) ((__HANDLE__)->Instance->ICR = (__FLAG__))
|
||||||
|
@ -790,7 +831,13 @@ typedef void (*pUART_CallbackTypeDef)(UART_HandleTypeDef *huart); /*!< pointer
|
||||||
* @param __HANDLE__ specifies the UART Handle.
|
* @param __HANDLE__ specifies the UART Handle.
|
||||||
* @param __FLAG__ specifies the flag to check.
|
* @param __FLAG__ specifies the flag to check.
|
||||||
* This parameter can be one of the following values:
|
* This parameter can be one of the following values:
|
||||||
|
#if defined(USART_ISR_REACK)
|
||||||
|
* @arg @ref UART_FLAG_REACK Receive enable acknowledge flag
|
||||||
|
#endif
|
||||||
* @arg @ref UART_FLAG_TEACK Transmit enable acknowledge flag
|
* @arg @ref UART_FLAG_TEACK Transmit enable acknowledge flag
|
||||||
|
#if defined(USART_CR1_UESM)
|
||||||
|
* @arg @ref UART_FLAG_WUF Wake up from stop mode flag
|
||||||
|
#endif
|
||||||
* @arg @ref UART_FLAG_RWU Receiver wake up flag (if the UART in mute mode)
|
* @arg @ref UART_FLAG_RWU Receiver wake up flag (if the UART in mute mode)
|
||||||
* @arg @ref UART_FLAG_SBKF Send Break flag
|
* @arg @ref UART_FLAG_SBKF Send Break flag
|
||||||
* @arg @ref UART_FLAG_CMF Character match flag
|
* @arg @ref UART_FLAG_CMF Character match flag
|
||||||
|
@ -802,6 +849,7 @@ typedef void (*pUART_CallbackTypeDef)(UART_HandleTypeDef *huart); /*!< pointer
|
||||||
* @arg @ref UART_FLAG_TXE Transmit data register empty flag
|
* @arg @ref UART_FLAG_TXE Transmit data register empty flag
|
||||||
* @arg @ref UART_FLAG_TC Transmission Complete flag
|
* @arg @ref UART_FLAG_TC Transmission Complete flag
|
||||||
* @arg @ref UART_FLAG_RXNE Receive data register not empty flag
|
* @arg @ref UART_FLAG_RXNE Receive data register not empty flag
|
||||||
|
* @arg @ref UART_FLAG_RTOF Receiver Timeout flag
|
||||||
* @arg @ref UART_FLAG_IDLE Idle Line detection flag
|
* @arg @ref UART_FLAG_IDLE Idle Line detection flag
|
||||||
* @arg @ref UART_FLAG_ORE Overrun Error flag
|
* @arg @ref UART_FLAG_ORE Overrun Error flag
|
||||||
* @arg @ref UART_FLAG_NE Noise Error flag
|
* @arg @ref UART_FLAG_NE Noise Error flag
|
||||||
|
@ -815,12 +863,16 @@ typedef void (*pUART_CallbackTypeDef)(UART_HandleTypeDef *huart); /*!< pointer
|
||||||
* @param __HANDLE__ specifies the UART Handle.
|
* @param __HANDLE__ specifies the UART Handle.
|
||||||
* @param __INTERRUPT__ specifies the UART interrupt source to enable.
|
* @param __INTERRUPT__ specifies the UART interrupt source to enable.
|
||||||
* This parameter can be one of the following values:
|
* This parameter can be one of the following values:
|
||||||
|
#if defined(USART_CR1_UESM)
|
||||||
|
* @arg @ref UART_IT_WUF Wakeup from stop mode interrupt
|
||||||
|
#endif
|
||||||
* @arg @ref UART_IT_CM Character match interrupt
|
* @arg @ref UART_IT_CM Character match interrupt
|
||||||
* @arg @ref UART_IT_CTS CTS change interrupt
|
* @arg @ref UART_IT_CTS CTS change interrupt
|
||||||
* @arg @ref UART_IT_LBD LIN Break detection interrupt
|
* @arg @ref UART_IT_LBD LIN Break detection interrupt
|
||||||
* @arg @ref UART_IT_TXE Transmit Data Register empty interrupt
|
* @arg @ref UART_IT_TXE Transmit Data Register empty interrupt
|
||||||
* @arg @ref UART_IT_TC Transmission complete interrupt
|
* @arg @ref UART_IT_TC Transmission complete interrupt
|
||||||
* @arg @ref UART_IT_RXNE Receive Data register not empty interrupt
|
* @arg @ref UART_IT_RXNE Receive Data register not empty interrupt
|
||||||
|
* @arg @ref UART_IT_RTO Receive Timeout interrupt
|
||||||
* @arg @ref UART_IT_IDLE Idle line detection interrupt
|
* @arg @ref UART_IT_IDLE Idle line detection interrupt
|
||||||
* @arg @ref UART_IT_PE Parity Error interrupt
|
* @arg @ref UART_IT_PE Parity Error interrupt
|
||||||
* @arg @ref UART_IT_ERR Error interrupt (frame error, noise error, overrun error)
|
* @arg @ref UART_IT_ERR Error interrupt (frame error, noise error, overrun error)
|
||||||
|
@ -835,12 +887,16 @@ typedef void (*pUART_CallbackTypeDef)(UART_HandleTypeDef *huart); /*!< pointer
|
||||||
* @param __HANDLE__ specifies the UART Handle.
|
* @param __HANDLE__ specifies the UART Handle.
|
||||||
* @param __INTERRUPT__ specifies the UART interrupt source to disable.
|
* @param __INTERRUPT__ specifies the UART interrupt source to disable.
|
||||||
* This parameter can be one of the following values:
|
* This parameter can be one of the following values:
|
||||||
|
#if defined(USART_CR1_UESM)
|
||||||
|
* @arg @ref UART_IT_WUF Wakeup from stop mode interrupt
|
||||||
|
#endif
|
||||||
* @arg @ref UART_IT_CM Character match interrupt
|
* @arg @ref UART_IT_CM Character match interrupt
|
||||||
* @arg @ref UART_IT_CTS CTS change interrupt
|
* @arg @ref UART_IT_CTS CTS change interrupt
|
||||||
* @arg @ref UART_IT_LBD LIN Break detection interrupt
|
* @arg @ref UART_IT_LBD LIN Break detection interrupt
|
||||||
* @arg @ref UART_IT_TXE Transmit Data Register empty interrupt
|
* @arg @ref UART_IT_TXE Transmit Data Register empty interrupt
|
||||||
* @arg @ref UART_IT_TC Transmission complete interrupt
|
* @arg @ref UART_IT_TC Transmission complete interrupt
|
||||||
* @arg @ref UART_IT_RXNE Receive Data register not empty interrupt
|
* @arg @ref UART_IT_RXNE Receive Data register not empty interrupt
|
||||||
|
* @arg @ref UART_IT_RTO Receive Timeout interrupt
|
||||||
* @arg @ref UART_IT_IDLE Idle line detection interrupt
|
* @arg @ref UART_IT_IDLE Idle line detection interrupt
|
||||||
* @arg @ref UART_IT_PE Parity Error interrupt
|
* @arg @ref UART_IT_PE Parity Error interrupt
|
||||||
* @arg @ref UART_IT_ERR Error interrupt (Frame error, noise error, overrun error)
|
* @arg @ref UART_IT_ERR Error interrupt (Frame error, noise error, overrun error)
|
||||||
|
@ -854,37 +910,46 @@ typedef void (*pUART_CallbackTypeDef)(UART_HandleTypeDef *huart); /*!< pointer
|
||||||
* @param __HANDLE__ specifies the UART Handle.
|
* @param __HANDLE__ specifies the UART Handle.
|
||||||
* @param __INTERRUPT__ specifies the UART interrupt to check.
|
* @param __INTERRUPT__ specifies the UART interrupt to check.
|
||||||
* This parameter can be one of the following values:
|
* This parameter can be one of the following values:
|
||||||
|
#if defined(USART_CR1_UESM)
|
||||||
|
* @arg @ref UART_IT_WUF Wakeup from stop mode interrupt
|
||||||
|
#endif
|
||||||
* @arg @ref UART_IT_CM Character match interrupt
|
* @arg @ref UART_IT_CM Character match interrupt
|
||||||
* @arg @ref UART_IT_CTS CTS change interrupt
|
* @arg @ref UART_IT_CTS CTS change interrupt
|
||||||
* @arg @ref UART_IT_LBD LIN Break detection interrupt
|
* @arg @ref UART_IT_LBD LIN Break detection interrupt
|
||||||
* @arg @ref UART_IT_TXE Transmit Data Register empty interrupt
|
* @arg @ref UART_IT_TXE Transmit Data Register empty interrupt
|
||||||
* @arg @ref UART_IT_TC Transmission complete interrupt
|
* @arg @ref UART_IT_TC Transmission complete interrupt
|
||||||
* @arg @ref UART_IT_RXNE Receive Data register not empty interrupt
|
* @arg @ref UART_IT_RXNE Receive Data register not empty interrupt
|
||||||
|
* @arg @ref UART_IT_RTO Receive Timeout interrupt
|
||||||
* @arg @ref UART_IT_IDLE Idle line detection interrupt
|
* @arg @ref UART_IT_IDLE Idle line detection interrupt
|
||||||
* @arg @ref UART_IT_PE Parity Error interrupt
|
* @arg @ref UART_IT_PE Parity Error interrupt
|
||||||
* @arg @ref UART_IT_ERR Error interrupt (Frame error, noise error, overrun error)
|
* @arg @ref UART_IT_ERR Error interrupt (Frame error, noise error, overrun error)
|
||||||
* @retval The new state of __INTERRUPT__ (SET or RESET).
|
* @retval The new state of __INTERRUPT__ (SET or RESET).
|
||||||
*/
|
*/
|
||||||
#define __HAL_UART_GET_IT(__HANDLE__, __INTERRUPT__) ((((__HANDLE__)->Instance->ISR & (1U << ((__INTERRUPT__)>> 8U))) != RESET) ? SET : RESET)
|
#define __HAL_UART_GET_IT(__HANDLE__, __INTERRUPT__) ((((__HANDLE__)->Instance->ISR\
|
||||||
|
& (1U << ((__INTERRUPT__)>> 8U))) != RESET) ? SET : RESET)
|
||||||
|
|
||||||
/** @brief Check whether the specified UART interrupt source is enabled or not.
|
/** @brief Check whether the specified UART interrupt source is enabled or not.
|
||||||
* @param __HANDLE__ specifies the UART Handle.
|
* @param __HANDLE__ specifies the UART Handle.
|
||||||
* @param __INTERRUPT__ specifies the UART interrupt source to check.
|
* @param __INTERRUPT__ specifies the UART interrupt source to check.
|
||||||
* This parameter can be one of the following values:
|
* This parameter can be one of the following values:
|
||||||
|
#if defined(USART_CR1_UESM)
|
||||||
|
* @arg @ref UART_IT_WUF Wakeup from stop mode interrupt
|
||||||
|
#endif
|
||||||
* @arg @ref UART_IT_CM Character match interrupt
|
* @arg @ref UART_IT_CM Character match interrupt
|
||||||
* @arg @ref UART_IT_CTS CTS change interrupt
|
* @arg @ref UART_IT_CTS CTS change interrupt
|
||||||
* @arg @ref UART_IT_LBD LIN Break detection interrupt
|
* @arg @ref UART_IT_LBD LIN Break detection interrupt
|
||||||
* @arg @ref UART_IT_TXE Transmit Data Register empty interrupt
|
* @arg @ref UART_IT_TXE Transmit Data Register empty interrupt
|
||||||
* @arg @ref UART_IT_TC Transmission complete interrupt
|
* @arg @ref UART_IT_TC Transmission complete interrupt
|
||||||
* @arg @ref UART_IT_RXNE Receive Data register not empty interrupt
|
* @arg @ref UART_IT_RXNE Receive Data register not empty interrupt
|
||||||
|
* @arg @ref UART_IT_RTO Receive Timeout interrupt
|
||||||
* @arg @ref UART_IT_IDLE Idle line detection interrupt
|
* @arg @ref UART_IT_IDLE Idle line detection interrupt
|
||||||
* @arg @ref UART_IT_PE Parity Error interrupt
|
* @arg @ref UART_IT_PE Parity Error interrupt
|
||||||
* @arg @ref UART_IT_ERR Error interrupt (Frame error, noise error, overrun error)
|
* @arg @ref UART_IT_ERR Error interrupt (Frame error, noise error, overrun error)
|
||||||
* @retval The new state of __INTERRUPT__ (SET or RESET).
|
* @retval The new state of __INTERRUPT__ (SET or RESET).
|
||||||
*/
|
*/
|
||||||
#define __HAL_UART_GET_IT_SOURCE(__HANDLE__, __INTERRUPT__) ((((((((uint8_t)(__INTERRUPT__)) >> 5U) == 1U) ? (__HANDLE__)->Instance->CR1 : \
|
#define __HAL_UART_GET_IT_SOURCE(__HANDLE__, __INTERRUPT__) ((((((((uint8_t)(__INTERRUPT__)) >> 5U) == 1U) ? (__HANDLE__)->Instance->CR1 : \
|
||||||
(((((uint8_t)(__INTERRUPT__)) >> 5U) == 2U) ? (__HANDLE__)->Instance->CR2 : \
|
(((((uint8_t)(__INTERRUPT__)) >> 5U) == 2U) ? (__HANDLE__)->Instance->CR2 : \
|
||||||
(__HANDLE__)->Instance->CR3)) & (1U << (((uint16_t)(__INTERRUPT__)) & UART_IT_MASK))) != RESET) ? SET : RESET)
|
(__HANDLE__)->Instance->CR3)) & (1U << (((uint16_t)(__INTERRUPT__)) & UART_IT_MASK))) != RESET) ? SET : RESET)
|
||||||
|
|
||||||
/** @brief Clear the specified UART ISR flag, in setting the proper ICR register flag.
|
/** @brief Clear the specified UART ISR flag, in setting the proper ICR register flag.
|
||||||
* @param __HANDLE__ specifies the UART Handle.
|
* @param __HANDLE__ specifies the UART Handle.
|
||||||
|
@ -896,10 +961,14 @@ typedef void (*pUART_CallbackTypeDef)(UART_HandleTypeDef *huart); /*!< pointer
|
||||||
* @arg @ref UART_CLEAR_NEF Noise detected Clear Flag
|
* @arg @ref UART_CLEAR_NEF Noise detected Clear Flag
|
||||||
* @arg @ref UART_CLEAR_OREF Overrun Error Clear Flag
|
* @arg @ref UART_CLEAR_OREF Overrun Error Clear Flag
|
||||||
* @arg @ref UART_CLEAR_IDLEF IDLE line detected Clear Flag
|
* @arg @ref UART_CLEAR_IDLEF IDLE line detected Clear Flag
|
||||||
|
* @arg @ref UART_CLEAR_RTOF Receiver timeout clear flag
|
||||||
* @arg @ref UART_CLEAR_TCF Transmission Complete Clear Flag
|
* @arg @ref UART_CLEAR_TCF Transmission Complete Clear Flag
|
||||||
* @arg @ref UART_CLEAR_LBDF LIN Break Detection Clear Flag
|
* @arg @ref UART_CLEAR_LBDF LIN Break Detection Clear Flag
|
||||||
* @arg @ref UART_CLEAR_CTSF CTS Interrupt Clear Flag
|
* @arg @ref UART_CLEAR_CTSF CTS Interrupt Clear Flag
|
||||||
* @arg @ref UART_CLEAR_CMF Character Match Clear Flag
|
* @arg @ref UART_CLEAR_CMF Character Match Clear Flag
|
||||||
|
#if defined(USART_CR1_UESM)
|
||||||
|
* @arg @ref UART_CLEAR_WUF Wake Up from stop mode Clear Flag
|
||||||
|
#endif
|
||||||
* @retval None
|
* @retval None
|
||||||
*/
|
*/
|
||||||
#define __HAL_UART_CLEAR_IT(__HANDLE__, __IT_CLEAR__) ((__HANDLE__)->Instance->ICR = (uint32_t)(__IT_CLEAR__))
|
#define __HAL_UART_CLEAR_IT(__HANDLE__, __IT_CLEAR__) ((__HANDLE__)->Instance->ICR = (uint32_t)(__IT_CLEAR__))
|
||||||
|
@ -1083,10 +1152,10 @@ typedef void (*pUART_CallbackTypeDef)(UART_HandleTypeDef *huart); /*!< pointer
|
||||||
* @retval SET (__CONTROL__ is valid) or RESET (__CONTROL__ is invalid)
|
* @retval SET (__CONTROL__ is valid) or RESET (__CONTROL__ is invalid)
|
||||||
*/
|
*/
|
||||||
#define IS_UART_HARDWARE_FLOW_CONTROL(__CONTROL__)\
|
#define IS_UART_HARDWARE_FLOW_CONTROL(__CONTROL__)\
|
||||||
(((__CONTROL__) == UART_HWCONTROL_NONE) || \
|
(((__CONTROL__) == UART_HWCONTROL_NONE) || \
|
||||||
((__CONTROL__) == UART_HWCONTROL_RTS) || \
|
((__CONTROL__) == UART_HWCONTROL_RTS) || \
|
||||||
((__CONTROL__) == UART_HWCONTROL_CTS) || \
|
((__CONTROL__) == UART_HWCONTROL_CTS) || \
|
||||||
((__CONTROL__) == UART_HWCONTROL_RTS_CTS))
|
((__CONTROL__) == UART_HWCONTROL_RTS_CTS))
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief Ensure that UART communication mode is valid.
|
* @brief Ensure that UART communication mode is valid.
|
||||||
|
@ -1134,8 +1203,15 @@ typedef void (*pUART_CallbackTypeDef)(UART_HandleTypeDef *huart); /*!< pointer
|
||||||
* @param __TIMEOUT__ UART receiver timeout setting.
|
* @param __TIMEOUT__ UART receiver timeout setting.
|
||||||
* @retval SET (__TIMEOUT__ is valid) or RESET (__TIMEOUT__ is invalid)
|
* @retval SET (__TIMEOUT__ is valid) or RESET (__TIMEOUT__ is invalid)
|
||||||
*/
|
*/
|
||||||
#define IS_UART_RECEIVER_TIMEOUT(__TIMEOUT__) (((__TIMEOUT__) == UART_RECEIVER_TIMEOUT_DISABLE) || \
|
#define IS_UART_RECEIVER_TIMEOUT(__TIMEOUT__) (((__TIMEOUT__) == UART_RECEIVER_TIMEOUT_DISABLE) || \
|
||||||
((__TIMEOUT__) == UART_RECEIVER_TIMEOUT_ENABLE))
|
((__TIMEOUT__) == UART_RECEIVER_TIMEOUT_ENABLE))
|
||||||
|
|
||||||
|
/** @brief Check the receiver timeout value.
|
||||||
|
* @note The maximum UART receiver timeout value is 0xFFFFFF.
|
||||||
|
* @param __TIMEOUTVALUE__ receiver timeout value.
|
||||||
|
* @retval Test result (TRUE or FALSE)
|
||||||
|
*/
|
||||||
|
#define IS_UART_RECEIVER_TIMEOUT_VALUE(__TIMEOUTVALUE__) ((__TIMEOUTVALUE__) <= 0xFFFFFFU)
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief Ensure that UART LIN state is valid.
|
* @brief Ensure that UART LIN state is valid.
|
||||||
|
@ -1275,6 +1351,16 @@ typedef void (*pUART_CallbackTypeDef)(UART_HandleTypeDef *huart); /*!< pointer
|
||||||
#define IS_UART_ADVFEATURE_MSBFIRST(__MSBFIRST__) (((__MSBFIRST__) == UART_ADVFEATURE_MSBFIRST_DISABLE) || \
|
#define IS_UART_ADVFEATURE_MSBFIRST(__MSBFIRST__) (((__MSBFIRST__) == UART_ADVFEATURE_MSBFIRST_DISABLE) || \
|
||||||
((__MSBFIRST__) == UART_ADVFEATURE_MSBFIRST_ENABLE))
|
((__MSBFIRST__) == UART_ADVFEATURE_MSBFIRST_ENABLE))
|
||||||
|
|
||||||
|
#if defined(USART_CR1_UESM)
|
||||||
|
/**
|
||||||
|
* @brief Ensure that UART stop mode state is valid.
|
||||||
|
* @param __STOPMODE__ UART stop mode state.
|
||||||
|
* @retval SET (__STOPMODE__ is valid) or RESET (__STOPMODE__ is invalid)
|
||||||
|
*/
|
||||||
|
#define IS_UART_ADVFEATURE_STOPMODE(__STOPMODE__) (((__STOPMODE__) == UART_ADVFEATURE_STOPMODE_DISABLE) || \
|
||||||
|
((__STOPMODE__) == UART_ADVFEATURE_STOPMODE_ENABLE))
|
||||||
|
|
||||||
|
#endif /* USART_CR1_UESM */
|
||||||
/**
|
/**
|
||||||
* @brief Ensure that UART mute mode state is valid.
|
* @brief Ensure that UART mute mode state is valid.
|
||||||
* @param __MUTE__ UART mute mode state.
|
* @param __MUTE__ UART mute mode state.
|
||||||
|
@ -1282,6 +1368,17 @@ typedef void (*pUART_CallbackTypeDef)(UART_HandleTypeDef *huart); /*!< pointer
|
||||||
*/
|
*/
|
||||||
#define IS_UART_MUTE_MODE(__MUTE__) (((__MUTE__) == UART_ADVFEATURE_MUTEMODE_DISABLE) || \
|
#define IS_UART_MUTE_MODE(__MUTE__) (((__MUTE__) == UART_ADVFEATURE_MUTEMODE_DISABLE) || \
|
||||||
((__MUTE__) == UART_ADVFEATURE_MUTEMODE_ENABLE))
|
((__MUTE__) == UART_ADVFEATURE_MUTEMODE_ENABLE))
|
||||||
|
#if defined(USART_CR1_UESM)
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Ensure that UART wake-up selection is valid.
|
||||||
|
* @param __WAKE__ UART wake-up selection.
|
||||||
|
* @retval SET (__WAKE__ is valid) or RESET (__WAKE__ is invalid)
|
||||||
|
*/
|
||||||
|
#define IS_UART_WAKEUP_SELECTION(__WAKE__) (((__WAKE__) == UART_WAKEUP_ON_ADDRESS) || \
|
||||||
|
((__WAKE__) == UART_WAKEUP_ON_STARTBIT) || \
|
||||||
|
((__WAKE__) == UART_WAKEUP_ON_READDATA_NONEMPTY))
|
||||||
|
#endif /* USART_CR1_UESM */
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief Ensure that UART driver enable polarity is valid.
|
* @brief Ensure that UART driver enable polarity is valid.
|
||||||
|
@ -1320,7 +1417,8 @@ void HAL_UART_MspDeInit(UART_HandleTypeDef *huart);
|
||||||
|
|
||||||
/* Callbacks Register/UnRegister functions ***********************************/
|
/* Callbacks Register/UnRegister functions ***********************************/
|
||||||
#if (USE_HAL_UART_REGISTER_CALLBACKS == 1)
|
#if (USE_HAL_UART_REGISTER_CALLBACKS == 1)
|
||||||
HAL_StatusTypeDef HAL_UART_RegisterCallback(UART_HandleTypeDef *huart, HAL_UART_CallbackIDTypeDef CallbackID, pUART_CallbackTypeDef pCallback);
|
HAL_StatusTypeDef HAL_UART_RegisterCallback(UART_HandleTypeDef *huart, HAL_UART_CallbackIDTypeDef CallbackID,
|
||||||
|
pUART_CallbackTypeDef pCallback);
|
||||||
HAL_StatusTypeDef HAL_UART_UnRegisterCallback(UART_HandleTypeDef *huart, HAL_UART_CallbackIDTypeDef CallbackID);
|
HAL_StatusTypeDef HAL_UART_UnRegisterCallback(UART_HandleTypeDef *huart, HAL_UART_CallbackIDTypeDef CallbackID);
|
||||||
#endif /* USE_HAL_UART_REGISTER_CALLBACKS */
|
#endif /* USE_HAL_UART_REGISTER_CALLBACKS */
|
||||||
|
|
||||||
|
@ -1369,6 +1467,10 @@ void HAL_UART_AbortReceiveCpltCallback(UART_HandleTypeDef *huart);
|
||||||
*/
|
*/
|
||||||
|
|
||||||
/* Peripheral Control functions ************************************************/
|
/* Peripheral Control functions ************************************************/
|
||||||
|
void HAL_UART_ReceiverTimeout_Config(UART_HandleTypeDef *huart, uint32_t TimeoutValue);
|
||||||
|
HAL_StatusTypeDef HAL_UART_EnableReceiverTimeout(UART_HandleTypeDef *huart);
|
||||||
|
HAL_StatusTypeDef HAL_UART_DisableReceiverTimeout(UART_HandleTypeDef *huart);
|
||||||
|
|
||||||
HAL_StatusTypeDef HAL_LIN_SendBreak(UART_HandleTypeDef *huart);
|
HAL_StatusTypeDef HAL_LIN_SendBreak(UART_HandleTypeDef *huart);
|
||||||
HAL_StatusTypeDef HAL_MultiProcessor_EnableMuteMode(UART_HandleTypeDef *huart);
|
HAL_StatusTypeDef HAL_MultiProcessor_EnableMuteMode(UART_HandleTypeDef *huart);
|
||||||
HAL_StatusTypeDef HAL_MultiProcessor_DisableMuteMode(UART_HandleTypeDef *huart);
|
HAL_StatusTypeDef HAL_MultiProcessor_DisableMuteMode(UART_HandleTypeDef *huart);
|
||||||
|
@ -1405,7 +1507,8 @@ void UART_InitCallbacksToDefault(UART_HandleTypeDef *huart);
|
||||||
#endif /* USE_HAL_UART_REGISTER_CALLBACKS */
|
#endif /* USE_HAL_UART_REGISTER_CALLBACKS */
|
||||||
HAL_StatusTypeDef UART_SetConfig(UART_HandleTypeDef *huart);
|
HAL_StatusTypeDef UART_SetConfig(UART_HandleTypeDef *huart);
|
||||||
HAL_StatusTypeDef UART_CheckIdleState(UART_HandleTypeDef *huart);
|
HAL_StatusTypeDef UART_CheckIdleState(UART_HandleTypeDef *huart);
|
||||||
HAL_StatusTypeDef UART_WaitOnFlagUntilTimeout(UART_HandleTypeDef *huart, uint32_t Flag, FlagStatus Status, uint32_t Tickstart, uint32_t Timeout);
|
HAL_StatusTypeDef UART_WaitOnFlagUntilTimeout(UART_HandleTypeDef *huart, uint32_t Flag, FlagStatus Status,
|
||||||
|
uint32_t Tickstart, uint32_t Timeout);
|
||||||
void UART_AdvFeatureConfig(UART_HandleTypeDef *huart);
|
void UART_AdvFeatureConfig(UART_HandleTypeDef *huart);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
|
@ -41,7 +41,24 @@ extern "C" {
|
||||||
* @{
|
* @{
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
#if defined(USART_CR1_UESM)
|
||||||
|
/**
|
||||||
|
* @brief UART wake up from stop mode parameters
|
||||||
|
*/
|
||||||
|
typedef struct
|
||||||
|
{
|
||||||
|
uint32_t WakeUpEvent; /*!< Specifies which event will activate the Wakeup from Stop mode flag (WUF).
|
||||||
|
This parameter can be a value of @ref UART_WakeUp_from_Stop_Selection.
|
||||||
|
If set to UART_WAKEUP_ON_ADDRESS, the two other fields below must
|
||||||
|
be filled up. */
|
||||||
|
|
||||||
|
uint16_t AddressLength; /*!< Specifies whether the address is 4 or 7-bit long.
|
||||||
|
This parameter can be a value of @ref UARTEx_WakeUp_Address_Length. */
|
||||||
|
|
||||||
|
uint8_t Address; /*!< UART/USART node address (7-bit long max). */
|
||||||
|
} UART_WakeUpTypeDef;
|
||||||
|
|
||||||
|
#endif /* USART_CR1_UESM */
|
||||||
/**
|
/**
|
||||||
* @}
|
* @}
|
||||||
*/
|
*/
|
||||||
|
@ -54,9 +71,9 @@ extern "C" {
|
||||||
/** @defgroup UARTEx_Word_Length UARTEx Word Length
|
/** @defgroup UARTEx_Word_Length UARTEx Word Length
|
||||||
* @{
|
* @{
|
||||||
*/
|
*/
|
||||||
#define UART_WORDLENGTH_7B USART_CR1_M1 /*!< 7-bit long UART frame */
|
#define UART_WORDLENGTH_7B USART_CR1_M1 /*!< 7-bit long UART frame */
|
||||||
#define UART_WORDLENGTH_8B 0x00000000U /*!< 8-bit long UART frame */
|
#define UART_WORDLENGTH_8B 0x00000000U /*!< 8-bit long UART frame */
|
||||||
#define UART_WORDLENGTH_9B USART_CR1_M0 /*!< 9-bit long UART frame */
|
#define UART_WORDLENGTH_9B USART_CR1_M0 /*!< 9-bit long UART frame */
|
||||||
/**
|
/**
|
||||||
* @}
|
* @}
|
||||||
*/
|
*/
|
||||||
|
@ -64,13 +81,12 @@ extern "C" {
|
||||||
/** @defgroup UARTEx_WakeUp_Address_Length UARTEx WakeUp Address Length
|
/** @defgroup UARTEx_WakeUp_Address_Length UARTEx WakeUp Address Length
|
||||||
* @{
|
* @{
|
||||||
*/
|
*/
|
||||||
#define UART_ADDRESS_DETECT_4B 0x00000000U /*!< 4-bit long wake-up address */
|
#define UART_ADDRESS_DETECT_4B 0x00000000U /*!< 4-bit long wake-up address */
|
||||||
#define UART_ADDRESS_DETECT_7B USART_CR2_ADDM7 /*!< 7-bit long wake-up address */
|
#define UART_ADDRESS_DETECT_7B USART_CR2_ADDM7 /*!< 7-bit long wake-up address */
|
||||||
/**
|
/**
|
||||||
* @}
|
* @}
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @}
|
* @}
|
||||||
*/
|
*/
|
||||||
|
@ -86,7 +102,8 @@ extern "C" {
|
||||||
*/
|
*/
|
||||||
|
|
||||||
/* Initialization and de-initialization functions ****************************/
|
/* Initialization and de-initialization functions ****************************/
|
||||||
HAL_StatusTypeDef HAL_RS485Ex_Init(UART_HandleTypeDef *huart, uint32_t Polarity, uint32_t AssertionTime, uint32_t DeassertionTime);
|
HAL_StatusTypeDef HAL_RS485Ex_Init(UART_HandleTypeDef *huart, uint32_t Polarity, uint32_t AssertionTime,
|
||||||
|
uint32_t DeassertionTime);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @}
|
* @}
|
||||||
|
@ -96,6 +113,10 @@ HAL_StatusTypeDef HAL_RS485Ex_Init(UART_HandleTypeDef *huart, uint32_t Polarity,
|
||||||
* @{
|
* @{
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
#if defined(USART_CR1_UESM)
|
||||||
|
void HAL_UARTEx_WakeupCallback(UART_HandleTypeDef *huart);
|
||||||
|
|
||||||
|
#endif /* USART_CR1_UESM */
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @}
|
* @}
|
||||||
|
@ -106,8 +127,20 @@ HAL_StatusTypeDef HAL_RS485Ex_Init(UART_HandleTypeDef *huart, uint32_t Polarity,
|
||||||
*/
|
*/
|
||||||
|
|
||||||
/* Peripheral Control functions **********************************************/
|
/* Peripheral Control functions **********************************************/
|
||||||
|
#if defined(USART_CR1_UESM)
|
||||||
|
HAL_StatusTypeDef HAL_UARTEx_StopModeWakeUpSourceConfig(UART_HandleTypeDef *huart, UART_WakeUpTypeDef WakeUpSelection);
|
||||||
|
HAL_StatusTypeDef HAL_UARTEx_EnableStopMode(UART_HandleTypeDef *huart);
|
||||||
|
HAL_StatusTypeDef HAL_UARTEx_DisableStopMode(UART_HandleTypeDef *huart);
|
||||||
|
|
||||||
|
#endif/* USART_CR1_UESM */
|
||||||
|
#if defined(USART_CR3_UCESM)
|
||||||
|
HAL_StatusTypeDef HAL_UARTEx_EnableClockStopMode(UART_HandleTypeDef *huart);
|
||||||
|
HAL_StatusTypeDef HAL_UARTEx_DisableClockStopMode(UART_HandleTypeDef *huart);
|
||||||
|
|
||||||
|
#endif /* USART_CR3_UCESM */
|
||||||
HAL_StatusTypeDef HAL_MultiProcessorEx_AddressLength_Set(UART_HandleTypeDef *huart, uint32_t AddressLength);
|
HAL_StatusTypeDef HAL_MultiProcessorEx_AddressLength_Set(UART_HandleTypeDef *huart, uint32_t AddressLength);
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @}
|
* @}
|
||||||
*/
|
*/
|
||||||
|
@ -126,12 +159,12 @@ HAL_StatusTypeDef HAL_MultiProcessorEx_AddressLength_Set(UART_HandleTypeDef *hua
|
||||||
* @param __CLOCKSOURCE__ output variable.
|
* @param __CLOCKSOURCE__ output variable.
|
||||||
* @retval UART clocking source, written in __CLOCKSOURCE__.
|
* @retval UART clocking source, written in __CLOCKSOURCE__.
|
||||||
*/
|
*/
|
||||||
#define UART_GETCLOCKSOURCE(__HANDLE__,__CLOCKSOURCE__) \
|
#define UART_GETCLOCKSOURCE(__HANDLE__,__CLOCKSOURCE__) \
|
||||||
do { \
|
do { \
|
||||||
if((__HANDLE__)->Instance == USART1) \
|
if((__HANDLE__)->Instance == USART1) \
|
||||||
{ \
|
{ \
|
||||||
switch(__HAL_RCC_GET_USART1_SOURCE()) \
|
switch(__HAL_RCC_GET_USART1_SOURCE()) \
|
||||||
{ \
|
{ \
|
||||||
case RCC_USART1CLKSOURCE_PCLK2: \
|
case RCC_USART1CLKSOURCE_PCLK2: \
|
||||||
(__CLOCKSOURCE__) = UART_CLOCKSOURCE_PCLK2; \
|
(__CLOCKSOURCE__) = UART_CLOCKSOURCE_PCLK2; \
|
||||||
break; \
|
break; \
|
||||||
|
@ -147,12 +180,12 @@ HAL_StatusTypeDef HAL_MultiProcessorEx_AddressLength_Set(UART_HandleTypeDef *hua
|
||||||
default: \
|
default: \
|
||||||
(__CLOCKSOURCE__) = UART_CLOCKSOURCE_UNDEFINED; \
|
(__CLOCKSOURCE__) = UART_CLOCKSOURCE_UNDEFINED; \
|
||||||
break; \
|
break; \
|
||||||
} \
|
} \
|
||||||
} \
|
} \
|
||||||
else if((__HANDLE__)->Instance == USART2) \
|
else if((__HANDLE__)->Instance == USART2) \
|
||||||
{ \
|
{ \
|
||||||
switch(__HAL_RCC_GET_USART2_SOURCE()) \
|
switch(__HAL_RCC_GET_USART2_SOURCE()) \
|
||||||
{ \
|
{ \
|
||||||
case RCC_USART2CLKSOURCE_PCLK1: \
|
case RCC_USART2CLKSOURCE_PCLK1: \
|
||||||
(__CLOCKSOURCE__) = UART_CLOCKSOURCE_PCLK1; \
|
(__CLOCKSOURCE__) = UART_CLOCKSOURCE_PCLK1; \
|
||||||
break; \
|
break; \
|
||||||
|
@ -168,12 +201,12 @@ HAL_StatusTypeDef HAL_MultiProcessorEx_AddressLength_Set(UART_HandleTypeDef *hua
|
||||||
default: \
|
default: \
|
||||||
(__CLOCKSOURCE__) = UART_CLOCKSOURCE_UNDEFINED; \
|
(__CLOCKSOURCE__) = UART_CLOCKSOURCE_UNDEFINED; \
|
||||||
break; \
|
break; \
|
||||||
} \
|
} \
|
||||||
} \
|
} \
|
||||||
else if((__HANDLE__)->Instance == USART3) \
|
else if((__HANDLE__)->Instance == USART3) \
|
||||||
{ \
|
{ \
|
||||||
switch(__HAL_RCC_GET_USART3_SOURCE()) \
|
switch(__HAL_RCC_GET_USART3_SOURCE()) \
|
||||||
{ \
|
{ \
|
||||||
case RCC_USART3CLKSOURCE_PCLK1: \
|
case RCC_USART3CLKSOURCE_PCLK1: \
|
||||||
(__CLOCKSOURCE__) = UART_CLOCKSOURCE_PCLK1; \
|
(__CLOCKSOURCE__) = UART_CLOCKSOURCE_PCLK1; \
|
||||||
break; \
|
break; \
|
||||||
|
@ -189,12 +222,12 @@ HAL_StatusTypeDef HAL_MultiProcessorEx_AddressLength_Set(UART_HandleTypeDef *hua
|
||||||
default: \
|
default: \
|
||||||
(__CLOCKSOURCE__) = UART_CLOCKSOURCE_UNDEFINED; \
|
(__CLOCKSOURCE__) = UART_CLOCKSOURCE_UNDEFINED; \
|
||||||
break; \
|
break; \
|
||||||
} \
|
} \
|
||||||
} \
|
} \
|
||||||
else if((__HANDLE__)->Instance == UART4) \
|
else if((__HANDLE__)->Instance == UART4) \
|
||||||
{ \
|
{ \
|
||||||
switch(__HAL_RCC_GET_UART4_SOURCE()) \
|
switch(__HAL_RCC_GET_UART4_SOURCE()) \
|
||||||
{ \
|
{ \
|
||||||
case RCC_UART4CLKSOURCE_PCLK1: \
|
case RCC_UART4CLKSOURCE_PCLK1: \
|
||||||
(__CLOCKSOURCE__) = UART_CLOCKSOURCE_PCLK1; \
|
(__CLOCKSOURCE__) = UART_CLOCKSOURCE_PCLK1; \
|
||||||
break; \
|
break; \
|
||||||
|
@ -210,12 +243,12 @@ HAL_StatusTypeDef HAL_MultiProcessorEx_AddressLength_Set(UART_HandleTypeDef *hua
|
||||||
default: \
|
default: \
|
||||||
(__CLOCKSOURCE__) = UART_CLOCKSOURCE_UNDEFINED; \
|
(__CLOCKSOURCE__) = UART_CLOCKSOURCE_UNDEFINED; \
|
||||||
break; \
|
break; \
|
||||||
} \
|
} \
|
||||||
} \
|
} \
|
||||||
else if ((__HANDLE__)->Instance == UART5) \
|
else if ((__HANDLE__)->Instance == UART5) \
|
||||||
{ \
|
{ \
|
||||||
switch(__HAL_RCC_GET_UART5_SOURCE()) \
|
switch(__HAL_RCC_GET_UART5_SOURCE()) \
|
||||||
{ \
|
{ \
|
||||||
case RCC_UART5CLKSOURCE_PCLK1: \
|
case RCC_UART5CLKSOURCE_PCLK1: \
|
||||||
(__CLOCKSOURCE__) = UART_CLOCKSOURCE_PCLK1; \
|
(__CLOCKSOURCE__) = UART_CLOCKSOURCE_PCLK1; \
|
||||||
break; \
|
break; \
|
||||||
|
@ -231,12 +264,12 @@ HAL_StatusTypeDef HAL_MultiProcessorEx_AddressLength_Set(UART_HandleTypeDef *hua
|
||||||
default: \
|
default: \
|
||||||
(__CLOCKSOURCE__) = UART_CLOCKSOURCE_UNDEFINED; \
|
(__CLOCKSOURCE__) = UART_CLOCKSOURCE_UNDEFINED; \
|
||||||
break; \
|
break; \
|
||||||
} \
|
} \
|
||||||
} \
|
} \
|
||||||
else if((__HANDLE__)->Instance == USART6) \
|
else if((__HANDLE__)->Instance == USART6) \
|
||||||
{ \
|
{ \
|
||||||
switch(__HAL_RCC_GET_USART6_SOURCE()) \
|
switch(__HAL_RCC_GET_USART6_SOURCE()) \
|
||||||
{ \
|
{ \
|
||||||
case RCC_USART6CLKSOURCE_PCLK2: \
|
case RCC_USART6CLKSOURCE_PCLK2: \
|
||||||
(__CLOCKSOURCE__) = UART_CLOCKSOURCE_PCLK2; \
|
(__CLOCKSOURCE__) = UART_CLOCKSOURCE_PCLK2; \
|
||||||
break; \
|
break; \
|
||||||
|
@ -252,12 +285,12 @@ HAL_StatusTypeDef HAL_MultiProcessorEx_AddressLength_Set(UART_HandleTypeDef *hua
|
||||||
default: \
|
default: \
|
||||||
(__CLOCKSOURCE__) = UART_CLOCKSOURCE_UNDEFINED; \
|
(__CLOCKSOURCE__) = UART_CLOCKSOURCE_UNDEFINED; \
|
||||||
break; \
|
break; \
|
||||||
} \
|
} \
|
||||||
} \
|
} \
|
||||||
else if ((__HANDLE__)->Instance == UART7) \
|
else if ((__HANDLE__)->Instance == UART7) \
|
||||||
{ \
|
{ \
|
||||||
switch(__HAL_RCC_GET_UART7_SOURCE()) \
|
switch(__HAL_RCC_GET_UART7_SOURCE()) \
|
||||||
{ \
|
{ \
|
||||||
case RCC_UART7CLKSOURCE_PCLK1: \
|
case RCC_UART7CLKSOURCE_PCLK1: \
|
||||||
(__CLOCKSOURCE__) = UART_CLOCKSOURCE_PCLK1; \
|
(__CLOCKSOURCE__) = UART_CLOCKSOURCE_PCLK1; \
|
||||||
break; \
|
break; \
|
||||||
|
@ -273,12 +306,12 @@ HAL_StatusTypeDef HAL_MultiProcessorEx_AddressLength_Set(UART_HandleTypeDef *hua
|
||||||
default: \
|
default: \
|
||||||
(__CLOCKSOURCE__) = UART_CLOCKSOURCE_UNDEFINED; \
|
(__CLOCKSOURCE__) = UART_CLOCKSOURCE_UNDEFINED; \
|
||||||
break; \
|
break; \
|
||||||
} \
|
} \
|
||||||
} \
|
} \
|
||||||
else if ((__HANDLE__)->Instance == UART8) \
|
else if ((__HANDLE__)->Instance == UART8) \
|
||||||
{ \
|
{ \
|
||||||
switch(__HAL_RCC_GET_UART8_SOURCE()) \
|
switch(__HAL_RCC_GET_UART8_SOURCE()) \
|
||||||
{ \
|
{ \
|
||||||
case RCC_UART8CLKSOURCE_PCLK1: \
|
case RCC_UART8CLKSOURCE_PCLK1: \
|
||||||
(__CLOCKSOURCE__) = UART_CLOCKSOURCE_PCLK1; \
|
(__CLOCKSOURCE__) = UART_CLOCKSOURCE_PCLK1; \
|
||||||
break; \
|
break; \
|
||||||
|
@ -294,7 +327,7 @@ HAL_StatusTypeDef HAL_MultiProcessorEx_AddressLength_Set(UART_HandleTypeDef *hua
|
||||||
default: \
|
default: \
|
||||||
(__CLOCKSOURCE__) = UART_CLOCKSOURCE_UNDEFINED; \
|
(__CLOCKSOURCE__) = UART_CLOCKSOURCE_UNDEFINED; \
|
||||||
break; \
|
break; \
|
||||||
} \
|
} \
|
||||||
} \
|
} \
|
||||||
else \
|
else \
|
||||||
{ \
|
{ \
|
||||||
|
@ -313,44 +346,44 @@ HAL_StatusTypeDef HAL_MultiProcessorEx_AddressLength_Set(UART_HandleTypeDef *hua
|
||||||
*/
|
*/
|
||||||
#define UART_MASK_COMPUTATION(__HANDLE__) \
|
#define UART_MASK_COMPUTATION(__HANDLE__) \
|
||||||
do { \
|
do { \
|
||||||
if ((__HANDLE__)->Init.WordLength == UART_WORDLENGTH_9B) \
|
if ((__HANDLE__)->Init.WordLength == UART_WORDLENGTH_9B) \
|
||||||
{ \
|
{ \
|
||||||
if ((__HANDLE__)->Init.Parity == UART_PARITY_NONE) \
|
if ((__HANDLE__)->Init.Parity == UART_PARITY_NONE) \
|
||||||
{ \
|
{ \
|
||||||
(__HANDLE__)->Mask = 0x01FFU ; \
|
(__HANDLE__)->Mask = 0x01FFU ; \
|
||||||
} \
|
} \
|
||||||
else \
|
else \
|
||||||
{ \
|
{ \
|
||||||
(__HANDLE__)->Mask = 0x00FFU ; \
|
(__HANDLE__)->Mask = 0x00FFU ; \
|
||||||
} \
|
} \
|
||||||
} \
|
} \
|
||||||
else if ((__HANDLE__)->Init.WordLength == UART_WORDLENGTH_8B) \
|
else if ((__HANDLE__)->Init.WordLength == UART_WORDLENGTH_8B) \
|
||||||
{ \
|
{ \
|
||||||
if ((__HANDLE__)->Init.Parity == UART_PARITY_NONE) \
|
if ((__HANDLE__)->Init.Parity == UART_PARITY_NONE) \
|
||||||
{ \
|
{ \
|
||||||
(__HANDLE__)->Mask = 0x00FFU ; \
|
(__HANDLE__)->Mask = 0x00FFU ; \
|
||||||
} \
|
} \
|
||||||
else \
|
else \
|
||||||
{ \
|
{ \
|
||||||
(__HANDLE__)->Mask = 0x007FU ; \
|
(__HANDLE__)->Mask = 0x007FU ; \
|
||||||
} \
|
} \
|
||||||
} \
|
} \
|
||||||
else if ((__HANDLE__)->Init.WordLength == UART_WORDLENGTH_7B) \
|
else if ((__HANDLE__)->Init.WordLength == UART_WORDLENGTH_7B) \
|
||||||
{ \
|
{ \
|
||||||
if ((__HANDLE__)->Init.Parity == UART_PARITY_NONE) \
|
if ((__HANDLE__)->Init.Parity == UART_PARITY_NONE) \
|
||||||
{ \
|
{ \
|
||||||
(__HANDLE__)->Mask = 0x007FU ; \
|
(__HANDLE__)->Mask = 0x007FU ; \
|
||||||
} \
|
} \
|
||||||
else \
|
else \
|
||||||
{ \
|
{ \
|
||||||
(__HANDLE__)->Mask = 0x003FU ; \
|
(__HANDLE__)->Mask = 0x003FU ; \
|
||||||
} \
|
} \
|
||||||
} \
|
} \
|
||||||
else \
|
else \
|
||||||
{ \
|
{ \
|
||||||
(__HANDLE__)->Mask = 0x0000U; \
|
(__HANDLE__)->Mask = 0x0000U; \
|
||||||
} \
|
} \
|
||||||
} while(0U)
|
} while(0U)
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief Ensure that UART frame length is valid.
|
* @brief Ensure that UART frame length is valid.
|
||||||
|
@ -369,7 +402,6 @@ HAL_StatusTypeDef HAL_MultiProcessorEx_AddressLength_Set(UART_HandleTypeDef *hua
|
||||||
#define IS_UART_ADDRESSLENGTH_DETECT(__ADDRESS__) (((__ADDRESS__) == UART_ADDRESS_DETECT_4B) || \
|
#define IS_UART_ADDRESSLENGTH_DETECT(__ADDRESS__) (((__ADDRESS__) == UART_ADDRESS_DETECT_4B) || \
|
||||||
((__ADDRESS__) == UART_ADDRESS_DETECT_7B))
|
((__ADDRESS__) == UART_ADDRESS_DETECT_7B))
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @}
|
* @}
|
||||||
*/
|
*/
|
||||||
|
|
|
@ -50,11 +50,11 @@
|
||||||
* @{
|
* @{
|
||||||
*/
|
*/
|
||||||
/**
|
/**
|
||||||
* @brief STM32F7xx HAL Driver version number V1.2.7
|
* @brief STM32F7xx HAL Driver version number V1.2.8
|
||||||
*/
|
*/
|
||||||
#define __STM32F7xx_HAL_VERSION_MAIN (0x01) /*!< [31:24] main version */
|
#define __STM32F7xx_HAL_VERSION_MAIN (0x01) /*!< [31:24] main version */
|
||||||
#define __STM32F7xx_HAL_VERSION_SUB1 (0x02) /*!< [23:16] sub1 version */
|
#define __STM32F7xx_HAL_VERSION_SUB1 (0x02) /*!< [23:16] sub1 version */
|
||||||
#define __STM32F7xx_HAL_VERSION_SUB2 (0x07) /*!< [15:8] sub2 version */
|
#define __STM32F7xx_HAL_VERSION_SUB2 (0x08) /*!< [15:8] sub2 version */
|
||||||
#define __STM32F7xx_HAL_VERSION_RC (0x00) /*!< [7:0] release candidate */
|
#define __STM32F7xx_HAL_VERSION_RC (0x00) /*!< [7:0] release candidate */
|
||||||
#define __STM32F7xx_HAL_VERSION ((__STM32F7xx_HAL_VERSION_MAIN << 24)\
|
#define __STM32F7xx_HAL_VERSION ((__STM32F7xx_HAL_VERSION_MAIN << 24)\
|
||||||
|(__STM32F7xx_HAL_VERSION_SUB1 << 16)\
|
|(__STM32F7xx_HAL_VERSION_SUB1 << 16)\
|
||||||
|
@ -319,14 +319,26 @@ uint32_t HAL_GetTickPrio(void)
|
||||||
HAL_StatusTypeDef HAL_SetTickFreq(HAL_TickFreqTypeDef Freq)
|
HAL_StatusTypeDef HAL_SetTickFreq(HAL_TickFreqTypeDef Freq)
|
||||||
{
|
{
|
||||||
HAL_StatusTypeDef status = HAL_OK;
|
HAL_StatusTypeDef status = HAL_OK;
|
||||||
|
HAL_TickFreqTypeDef prevTickFreq;
|
||||||
|
|
||||||
assert_param(IS_TICKFREQ(Freq));
|
assert_param(IS_TICKFREQ(Freq));
|
||||||
|
|
||||||
if (uwTickFreq != Freq)
|
if (uwTickFreq != Freq)
|
||||||
{
|
{
|
||||||
|
/* Back up uwTickFreq frequency */
|
||||||
|
prevTickFreq = uwTickFreq;
|
||||||
|
|
||||||
|
/* Update uwTickFreq global variable used by HAL_InitTick() */
|
||||||
uwTickFreq = Freq;
|
uwTickFreq = Freq;
|
||||||
|
|
||||||
/* Apply the new tick Freq */
|
/* Apply the new tick Freq */
|
||||||
status = HAL_InitTick(uwTickPrio);
|
status = HAL_InitTick(uwTickPrio);
|
||||||
|
|
||||||
|
if (status != HAL_OK)
|
||||||
|
{
|
||||||
|
/* Restore previous tick frequency */
|
||||||
|
uwTickFreq = prevTickFreq;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return status;
|
return status;
|
||||||
|
|
|
@ -1556,7 +1556,7 @@ HAL_StatusTypeDef HAL_CAN_GetRxMessage(CAN_HandleTypeDef *hcan, uint32_t RxFifo,
|
||||||
{
|
{
|
||||||
pHeader->ExtId = ((CAN_RI0R_EXID | CAN_RI0R_STID) & hcan->Instance->sFIFOMailBox[RxFifo].RIR) >> CAN_RI0R_EXID_Pos;
|
pHeader->ExtId = ((CAN_RI0R_EXID | CAN_RI0R_STID) & hcan->Instance->sFIFOMailBox[RxFifo].RIR) >> CAN_RI0R_EXID_Pos;
|
||||||
}
|
}
|
||||||
pHeader->RTR = (CAN_RI0R_RTR & hcan->Instance->sFIFOMailBox[RxFifo].RIR) >> CAN_RI0R_RTR_Pos;
|
pHeader->RTR = (CAN_RI0R_RTR & hcan->Instance->sFIFOMailBox[RxFifo].RIR);
|
||||||
pHeader->DLC = (CAN_RDT0R_DLC & hcan->Instance->sFIFOMailBox[RxFifo].RDTR) >> CAN_RDT0R_DLC_Pos;
|
pHeader->DLC = (CAN_RDT0R_DLC & hcan->Instance->sFIFOMailBox[RxFifo].RDTR) >> CAN_RDT0R_DLC_Pos;
|
||||||
pHeader->FilterMatchIndex = (CAN_RDT0R_FMI & hcan->Instance->sFIFOMailBox[RxFifo].RDTR) >> CAN_RDT0R_FMI_Pos;
|
pHeader->FilterMatchIndex = (CAN_RDT0R_FMI & hcan->Instance->sFIFOMailBox[RxFifo].RDTR) >> CAN_RDT0R_FMI_Pos;
|
||||||
pHeader->Timestamp = (CAN_RDT0R_TIME & hcan->Instance->sFIFOMailBox[RxFifo].RDTR) >> CAN_RDT0R_TIME_Pos;
|
pHeader->Timestamp = (CAN_RDT0R_TIME & hcan->Instance->sFIFOMailBox[RxFifo].RDTR) >> CAN_RDT0R_TIME_Pos;
|
||||||
|
|
|
@ -85,7 +85,6 @@
|
||||||
|
|
||||||
/* Includes ------------------------------------------------------------------*/
|
/* Includes ------------------------------------------------------------------*/
|
||||||
#include "stm32f7xx_hal.h"
|
#include "stm32f7xx_hal.h"
|
||||||
#include "stm32f7xx_hal_exti.h"
|
|
||||||
|
|
||||||
/** @addtogroup STM32F7xx_HAL_Driver
|
/** @addtogroup STM32F7xx_HAL_Driver
|
||||||
* @{
|
* @{
|
||||||
|
@ -105,7 +104,7 @@
|
||||||
#ifdef HAL_EXTI_MODULE_ENABLED
|
#ifdef HAL_EXTI_MODULE_ENABLED
|
||||||
|
|
||||||
/* Private typedef -----------------------------------------------------------*/
|
/* Private typedef -----------------------------------------------------------*/
|
||||||
/* Private defines ------------------------------------------------------------*/
|
/* Private defines -----------------------------------------------------------*/
|
||||||
/** @defgroup EXTI_Private_Constants EXTI Private Constants
|
/** @defgroup EXTI_Private_Constants EXTI Private Constants
|
||||||
* @{
|
* @{
|
||||||
*/
|
*/
|
||||||
|
@ -144,6 +143,8 @@
|
||||||
HAL_StatusTypeDef HAL_EXTI_SetConfigLine(EXTI_HandleTypeDef *hexti, EXTI_ConfigTypeDef *pExtiConfig)
|
HAL_StatusTypeDef HAL_EXTI_SetConfigLine(EXTI_HandleTypeDef *hexti, EXTI_ConfigTypeDef *pExtiConfig)
|
||||||
{
|
{
|
||||||
uint32_t regval;
|
uint32_t regval;
|
||||||
|
uint32_t linepos;
|
||||||
|
uint32_t maskline;
|
||||||
|
|
||||||
/* Check null pointer */
|
/* Check null pointer */
|
||||||
if ((hexti == NULL) || (pExtiConfig == NULL))
|
if ((hexti == NULL) || (pExtiConfig == NULL))
|
||||||
|
@ -154,37 +155,77 @@ HAL_StatusTypeDef HAL_EXTI_SetConfigLine(EXTI_HandleTypeDef *hexti, EXTI_ConfigT
|
||||||
/* Check parameters */
|
/* Check parameters */
|
||||||
assert_param(IS_EXTI_LINE(pExtiConfig->Line));
|
assert_param(IS_EXTI_LINE(pExtiConfig->Line));
|
||||||
assert_param(IS_EXTI_MODE(pExtiConfig->Mode));
|
assert_param(IS_EXTI_MODE(pExtiConfig->Mode));
|
||||||
assert_param(IS_EXTI_TRIGGER(pExtiConfig->Trigger));
|
|
||||||
|
|
||||||
/* Assign line number to handle */
|
/* Assign line number to handle */
|
||||||
hexti->Line = pExtiConfig->Line;
|
hexti->Line = pExtiConfig->Line;
|
||||||
|
|
||||||
/* Clear EXTI line configuration */
|
/* Compute line mask */
|
||||||
EXTI->IMR &= ~pExtiConfig->Line;
|
linepos = (pExtiConfig->Line & EXTI_PIN_MASK);
|
||||||
EXTI->EMR &= ~pExtiConfig->Line;
|
maskline = (1uL << linepos);
|
||||||
|
|
||||||
/* Select the Mode for the selected external interrupts */
|
/* Configure triggers for configurable lines */
|
||||||
regval = (uint32_t)EXTI_BASE;
|
if ((pExtiConfig->Line & EXTI_CONFIG) != 0x00u)
|
||||||
regval += pExtiConfig->Mode;
|
|
||||||
*(__IO uint32_t *) regval |= pExtiConfig->Line;
|
|
||||||
|
|
||||||
/* Clear Rising Falling edge configuration */
|
|
||||||
EXTI->RTSR &= ~pExtiConfig->Line;
|
|
||||||
EXTI->FTSR &= ~pExtiConfig->Line;
|
|
||||||
|
|
||||||
/* Select the trigger for the selected external interrupts */
|
|
||||||
if (pExtiConfig->Trigger == EXTI_TRIGGER_RISING_FALLING)
|
|
||||||
{
|
{
|
||||||
/* Rising Falling edge */
|
assert_param(IS_EXTI_TRIGGER(pExtiConfig->Trigger));
|
||||||
EXTI->RTSR |= pExtiConfig->Line;
|
|
||||||
EXTI->FTSR |= pExtiConfig->Line;
|
/* Configure rising trigger */
|
||||||
|
/* Mask or set line */
|
||||||
|
if ((pExtiConfig->Trigger & EXTI_TRIGGER_RISING) != 0x00u)
|
||||||
|
{
|
||||||
|
EXTI->RTSR |= maskline;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
EXTI->RTSR &= ~maskline;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Configure falling trigger */
|
||||||
|
/* Mask or set line */
|
||||||
|
if ((pExtiConfig->Trigger & EXTI_TRIGGER_FALLING) != 0x00u)
|
||||||
|
{
|
||||||
|
EXTI->FTSR |= maskline;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
EXTI->FTSR &= ~maskline;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/* Configure gpio port selection in case of gpio exti line */
|
||||||
|
if ((pExtiConfig->Line & EXTI_GPIO) == EXTI_GPIO)
|
||||||
|
{
|
||||||
|
assert_param(IS_EXTI_GPIO_PORT(pExtiConfig->GPIOSel));
|
||||||
|
assert_param(IS_EXTI_GPIO_PIN(linepos));
|
||||||
|
|
||||||
|
regval = SYSCFG->EXTICR[linepos >> 2u];
|
||||||
|
regval &= ~(SYSCFG_EXTICR1_EXTI0 << (SYSCFG_EXTICR1_EXTI1_Pos * (linepos & 0x03u)));
|
||||||
|
regval |= (pExtiConfig->GPIOSel << (SYSCFG_EXTICR1_EXTI1_Pos * (linepos & 0x03u)));
|
||||||
|
SYSCFG->EXTICR[linepos >> 2u] = regval;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Configure interrupt mode : read current mode */
|
||||||
|
/* Mask or set line */
|
||||||
|
if ((pExtiConfig->Mode & EXTI_MODE_INTERRUPT) != 0x00u)
|
||||||
|
{
|
||||||
|
EXTI->IMR |= maskline;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
regval = (uint32_t)EXTI_BASE;
|
EXTI->IMR &= ~maskline;
|
||||||
regval += pExtiConfig->Trigger;
|
|
||||||
*(__IO uint32_t *) regval |= pExtiConfig->Line;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* Configure event mode : read current mode */
|
||||||
|
/* Mask or set line */
|
||||||
|
if ((pExtiConfig->Mode & EXTI_MODE_EVENT) != 0x00u)
|
||||||
|
{
|
||||||
|
EXTI->EMR |= maskline;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
EXTI->EMR &= ~maskline;
|
||||||
|
}
|
||||||
|
|
||||||
return HAL_OK;
|
return HAL_OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -196,6 +237,10 @@ HAL_StatusTypeDef HAL_EXTI_SetConfigLine(EXTI_HandleTypeDef *hexti, EXTI_ConfigT
|
||||||
*/
|
*/
|
||||||
HAL_StatusTypeDef HAL_EXTI_GetConfigLine(EXTI_HandleTypeDef *hexti, EXTI_ConfigTypeDef *pExtiConfig)
|
HAL_StatusTypeDef HAL_EXTI_GetConfigLine(EXTI_HandleTypeDef *hexti, EXTI_ConfigTypeDef *pExtiConfig)
|
||||||
{
|
{
|
||||||
|
uint32_t regval;
|
||||||
|
uint32_t linepos;
|
||||||
|
uint32_t maskline;
|
||||||
|
|
||||||
/* Check null pointer */
|
/* Check null pointer */
|
||||||
if ((hexti == NULL) || (pExtiConfig == NULL))
|
if ((hexti == NULL) || (pExtiConfig == NULL))
|
||||||
{
|
{
|
||||||
|
@ -208,41 +253,67 @@ HAL_StatusTypeDef HAL_EXTI_GetConfigLine(EXTI_HandleTypeDef *hexti, EXTI_ConfigT
|
||||||
/* Store handle line number to configuration structure */
|
/* Store handle line number to configuration structure */
|
||||||
pExtiConfig->Line = hexti->Line;
|
pExtiConfig->Line = hexti->Line;
|
||||||
|
|
||||||
/* Get EXTI mode to configiguration structure */
|
/* Compute line mask */
|
||||||
if ((EXTI->IMR & hexti->Line) == hexti->Line)
|
linepos = (pExtiConfig->Line & EXTI_PIN_MASK);
|
||||||
|
maskline = (1uL << linepos);
|
||||||
|
|
||||||
|
/* 1] Get core mode : interrupt */
|
||||||
|
|
||||||
|
/* Check if selected line is enable */
|
||||||
|
if ((EXTI->IMR & maskline) != 0x00u)
|
||||||
{
|
{
|
||||||
pExtiConfig->Mode = EXTI_MODE_INTERRUPT;
|
pExtiConfig->Mode = EXTI_MODE_INTERRUPT;
|
||||||
}
|
}
|
||||||
else if ((EXTI->EMR & hexti->Line) == hexti->Line)
|
|
||||||
{
|
|
||||||
pExtiConfig->Mode = EXTI_MODE_EVENT;
|
|
||||||
}
|
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
/* No MODE selected */
|
pExtiConfig->Mode = EXTI_MODE_NONE;
|
||||||
pExtiConfig->Mode = 0x0Bu;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Get EXTI Trigger to configiguration structure */
|
/* Get event mode */
|
||||||
if ((EXTI->RTSR & hexti->Line) == hexti->Line)
|
/* Check if selected line is enable */
|
||||||
|
if ((EXTI->EMR & maskline) != 0x00u)
|
||||||
{
|
{
|
||||||
if ((EXTI->FTSR & hexti->Line) == hexti->Line)
|
pExtiConfig->Mode |= EXTI_MODE_EVENT;
|
||||||
{
|
}
|
||||||
pExtiConfig->Trigger = EXTI_TRIGGER_RISING_FALLING;
|
|
||||||
}
|
/* 2] Get trigger for configurable lines : rising */
|
||||||
else
|
if ((pExtiConfig->Line & EXTI_CONFIG) != 0x00u)
|
||||||
|
{
|
||||||
|
/* Check if configuration of selected line is enable */
|
||||||
|
if ((EXTI->RTSR & maskline) != 0x00u)
|
||||||
{
|
{
|
||||||
pExtiConfig->Trigger = EXTI_TRIGGER_RISING;
|
pExtiConfig->Trigger = EXTI_TRIGGER_RISING;
|
||||||
}
|
}
|
||||||
}
|
else
|
||||||
else if ((EXTI->FTSR & hexti->Line) == hexti->Line)
|
{
|
||||||
{
|
pExtiConfig->Trigger = EXTI_TRIGGER_NONE;
|
||||||
pExtiConfig->Trigger = EXTI_TRIGGER_FALLING;
|
}
|
||||||
|
|
||||||
|
/* Get falling configuration */
|
||||||
|
/* Check if configuration of selected line is enable */
|
||||||
|
if ((EXTI->FTSR & maskline) != 0x00u)
|
||||||
|
{
|
||||||
|
pExtiConfig->Trigger |= EXTI_TRIGGER_FALLING;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Get Gpio port selection for gpio lines */
|
||||||
|
if ((pExtiConfig->Line & EXTI_GPIO) == EXTI_GPIO)
|
||||||
|
{
|
||||||
|
assert_param(IS_EXTI_GPIO_PIN(linepos));
|
||||||
|
|
||||||
|
regval = SYSCFG->EXTICR[linepos >> 2u];
|
||||||
|
pExtiConfig->GPIOSel = ((regval << (SYSCFG_EXTICR1_EXTI1_Pos * (3uL - (linepos & 0x03u)))) >> 24);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
pExtiConfig->GPIOSel = 0x00u;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
/* No Trigger selected */
|
/* No Trigger selected */
|
||||||
pExtiConfig->Trigger = 0x00u;
|
pExtiConfig->Trigger = EXTI_TRIGGER_NONE;
|
||||||
|
pExtiConfig->GPIOSel = 0x00u;
|
||||||
}
|
}
|
||||||
|
|
||||||
return HAL_OK;
|
return HAL_OK;
|
||||||
|
@ -255,6 +326,10 @@ HAL_StatusTypeDef HAL_EXTI_GetConfigLine(EXTI_HandleTypeDef *hexti, EXTI_ConfigT
|
||||||
*/
|
*/
|
||||||
HAL_StatusTypeDef HAL_EXTI_ClearConfigLine(EXTI_HandleTypeDef *hexti)
|
HAL_StatusTypeDef HAL_EXTI_ClearConfigLine(EXTI_HandleTypeDef *hexti)
|
||||||
{
|
{
|
||||||
|
uint32_t regval;
|
||||||
|
uint32_t linepos;
|
||||||
|
uint32_t maskline;
|
||||||
|
|
||||||
/* Check null pointer */
|
/* Check null pointer */
|
||||||
if (hexti == NULL)
|
if (hexti == NULL)
|
||||||
{
|
{
|
||||||
|
@ -264,15 +339,32 @@ HAL_StatusTypeDef HAL_EXTI_ClearConfigLine(EXTI_HandleTypeDef *hexti)
|
||||||
/* Check the parameter */
|
/* Check the parameter */
|
||||||
assert_param(IS_EXTI_LINE(hexti->Line));
|
assert_param(IS_EXTI_LINE(hexti->Line));
|
||||||
|
|
||||||
|
/* compute line mask */
|
||||||
|
linepos = (hexti->Line & EXTI_PIN_MASK);
|
||||||
|
maskline = (1uL << linepos);
|
||||||
|
|
||||||
/* 1] Clear interrupt mode */
|
/* 1] Clear interrupt mode */
|
||||||
EXTI->IMR = (EXTI->IMR & ~hexti->Line);
|
EXTI->IMR = (EXTI->IMR & ~maskline);
|
||||||
|
|
||||||
/* 2] Clear event mode */
|
/* 2] Clear event mode */
|
||||||
EXTI->EMR = (EXTI->EMR & ~hexti->Line);
|
EXTI->EMR = (EXTI->EMR & ~maskline);
|
||||||
|
|
||||||
/* 3] Clear triggers */
|
/* 3] Clear triggers in case of configurable lines */
|
||||||
EXTI->RTSR = (EXTI->RTSR & ~hexti->Line);
|
if ((hexti->Line & EXTI_CONFIG) != 0x00u)
|
||||||
EXTI->FTSR = (EXTI->FTSR & ~hexti->Line);
|
{
|
||||||
|
EXTI->RTSR = (EXTI->RTSR & ~maskline);
|
||||||
|
EXTI->FTSR = (EXTI->FTSR & ~maskline);
|
||||||
|
|
||||||
|
/* Get Gpio port selection for gpio lines */
|
||||||
|
if ((hexti->Line & EXTI_GPIO) == EXTI_GPIO)
|
||||||
|
{
|
||||||
|
assert_param(IS_EXTI_GPIO_PIN(linepos));
|
||||||
|
|
||||||
|
regval = SYSCFG->EXTICR[linepos >> 2u];
|
||||||
|
regval &= ~(SYSCFG_EXTICR1_EXTI0 << (SYSCFG_EXTICR1_EXTI1_Pos * (linepos & 0x03u)));
|
||||||
|
SYSCFG->EXTICR[linepos >> 2u] = regval;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
return HAL_OK;
|
return HAL_OK;
|
||||||
}
|
}
|
||||||
|
@ -352,17 +444,18 @@ HAL_StatusTypeDef HAL_EXTI_GetHandle(EXTI_HandleTypeDef *hexti, uint32_t ExtiLin
|
||||||
*/
|
*/
|
||||||
void HAL_EXTI_IRQHandler(EXTI_HandleTypeDef *hexti)
|
void HAL_EXTI_IRQHandler(EXTI_HandleTypeDef *hexti)
|
||||||
{
|
{
|
||||||
__IO uint32_t *regaddr;
|
|
||||||
uint32_t regval;
|
uint32_t regval;
|
||||||
|
uint32_t maskline;
|
||||||
|
|
||||||
|
/* Compute line mask */
|
||||||
|
maskline = (1uL << (hexti->Line & EXTI_PIN_MASK));
|
||||||
|
|
||||||
/* Get pending bit */
|
/* Get pending bit */
|
||||||
regaddr = (&EXTI->PR);
|
regval = (EXTI->PR & maskline);
|
||||||
regval = (*regaddr & hexti->Line);
|
|
||||||
|
|
||||||
if (regval != 0x00u)
|
if (regval != 0x00u)
|
||||||
{
|
{
|
||||||
/* Clear pending bit */
|
/* Clear pending bit */
|
||||||
*regaddr = hexti->Line;
|
EXTI->PR = maskline;
|
||||||
|
|
||||||
/* Call callback */
|
/* Call callback */
|
||||||
if (hexti->PendingCallback != NULL)
|
if (hexti->PendingCallback != NULL)
|
||||||
|
@ -383,19 +476,21 @@ void HAL_EXTI_IRQHandler(EXTI_HandleTypeDef *hexti)
|
||||||
*/
|
*/
|
||||||
uint32_t HAL_EXTI_GetPending(EXTI_HandleTypeDef *hexti, uint32_t Edge)
|
uint32_t HAL_EXTI_GetPending(EXTI_HandleTypeDef *hexti, uint32_t Edge)
|
||||||
{
|
{
|
||||||
__IO uint32_t *regaddr;
|
|
||||||
uint32_t regval;
|
uint32_t regval;
|
||||||
|
uint32_t linepos;
|
||||||
|
uint32_t maskline;
|
||||||
|
|
||||||
/* Check parameters */
|
/* Check parameters */
|
||||||
assert_param(IS_EXTI_LINE(hexti->Line));
|
assert_param(IS_EXTI_LINE(hexti->Line));
|
||||||
|
assert_param(IS_EXTI_CONFIG_LINE(hexti->Line));
|
||||||
assert_param(IS_EXTI_PENDING_EDGE(Edge));
|
assert_param(IS_EXTI_PENDING_EDGE(Edge));
|
||||||
|
|
||||||
/* Get pending bit */
|
/* Compute line mask */
|
||||||
regaddr = &EXTI->PR;
|
linepos = (hexti->Line & EXTI_PIN_MASK);
|
||||||
|
maskline = (1uL << linepos);
|
||||||
|
|
||||||
/* return 1 if bit is set else 0 */
|
/* return 1 if bit is set else 0 */
|
||||||
regval = ((*regaddr & hexti->Line) >> POSITION_VAL(hexti->Line));
|
regval = ((EXTI->PR & maskline) >> linepos);
|
||||||
|
|
||||||
return regval;
|
return regval;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -410,12 +505,18 @@ uint32_t HAL_EXTI_GetPending(EXTI_HandleTypeDef *hexti, uint32_t Edge)
|
||||||
*/
|
*/
|
||||||
void HAL_EXTI_ClearPending(EXTI_HandleTypeDef *hexti, uint32_t Edge)
|
void HAL_EXTI_ClearPending(EXTI_HandleTypeDef *hexti, uint32_t Edge)
|
||||||
{
|
{
|
||||||
|
uint32_t maskline;
|
||||||
|
|
||||||
/* Check parameters */
|
/* Check parameters */
|
||||||
assert_param(IS_EXTI_LINE(hexti->Line));
|
assert_param(IS_EXTI_LINE(hexti->Line));
|
||||||
|
assert_param(IS_EXTI_CONFIG_LINE(hexti->Line));
|
||||||
assert_param(IS_EXTI_PENDING_EDGE(Edge));
|
assert_param(IS_EXTI_PENDING_EDGE(Edge));
|
||||||
|
|
||||||
|
/* Compute line mask */
|
||||||
|
maskline = (1uL << (hexti->Line & EXTI_PIN_MASK));
|
||||||
|
|
||||||
/* Clear Pending bit */
|
/* Clear Pending bit */
|
||||||
EXTI->PR = hexti->Line;
|
EXTI->PR = maskline;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -425,10 +526,17 @@ void HAL_EXTI_ClearPending(EXTI_HandleTypeDef *hexti, uint32_t Edge)
|
||||||
*/
|
*/
|
||||||
void HAL_EXTI_GenerateSWI(EXTI_HandleTypeDef *hexti)
|
void HAL_EXTI_GenerateSWI(EXTI_HandleTypeDef *hexti)
|
||||||
{
|
{
|
||||||
|
uint32_t maskline;
|
||||||
|
|
||||||
/* Check parameters */
|
/* Check parameters */
|
||||||
assert_param(IS_EXTI_LINE(hexti->Line));
|
assert_param(IS_EXTI_LINE(hexti->Line));
|
||||||
|
assert_param(IS_EXTI_CONFIG_LINE(hexti->Line));
|
||||||
|
|
||||||
EXTI->SWIER = hexti->Line;
|
/* Compute line mask */
|
||||||
|
maskline = (1uL << (hexti->Line & EXTI_PIN_MASK));
|
||||||
|
|
||||||
|
/* Generate Software interrupt */
|
||||||
|
EXTI->SWIER = maskline;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
|
@ -190,25 +190,6 @@ void HAL_GPIO_Init(GPIO_TypeDef *GPIOx, GPIO_InitTypeDef *GPIO_Init)
|
||||||
if(iocurrent == ioposition)
|
if(iocurrent == ioposition)
|
||||||
{
|
{
|
||||||
/*--------------------- GPIO Mode Configuration ------------------------*/
|
/*--------------------- GPIO Mode Configuration ------------------------*/
|
||||||
/* In case of Alternate function mode selection */
|
|
||||||
if((GPIO_Init->Mode == GPIO_MODE_AF_PP) || (GPIO_Init->Mode == GPIO_MODE_AF_OD))
|
|
||||||
{
|
|
||||||
/* Check the Alternate function parameter */
|
|
||||||
assert_param(IS_GPIO_AF(GPIO_Init->Alternate));
|
|
||||||
|
|
||||||
/* Configure Alternate function mapped with the current IO */
|
|
||||||
temp = GPIOx->AFR[position >> 3];
|
|
||||||
temp &= ~((uint32_t)0xF << ((uint32_t)(position & (uint32_t)0x07) * 4)) ;
|
|
||||||
temp |= ((uint32_t)(GPIO_Init->Alternate) << (((uint32_t)position & (uint32_t)0x07) * 4));
|
|
||||||
GPIOx->AFR[position >> 3] = temp;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Configure IO Direction mode (Input, Output, Alternate or Analog) */
|
|
||||||
temp = GPIOx->MODER;
|
|
||||||
temp &= ~(GPIO_MODER_MODER0 << (position * 2));
|
|
||||||
temp |= ((GPIO_Init->Mode & GPIO_MODE) << (position * 2));
|
|
||||||
GPIOx->MODER = temp;
|
|
||||||
|
|
||||||
/* In case of Output or Alternate function mode selection */
|
/* In case of Output or Alternate function mode selection */
|
||||||
if((GPIO_Init->Mode == GPIO_MODE_OUTPUT_PP) || (GPIO_Init->Mode == GPIO_MODE_AF_PP) ||
|
if((GPIO_Init->Mode == GPIO_MODE_OUTPUT_PP) || (GPIO_Init->Mode == GPIO_MODE_AF_PP) ||
|
||||||
(GPIO_Init->Mode == GPIO_MODE_OUTPUT_OD) || (GPIO_Init->Mode == GPIO_MODE_AF_OD))
|
(GPIO_Init->Mode == GPIO_MODE_OUTPUT_OD) || (GPIO_Init->Mode == GPIO_MODE_AF_OD))
|
||||||
|
@ -234,6 +215,25 @@ void HAL_GPIO_Init(GPIO_TypeDef *GPIOx, GPIO_InitTypeDef *GPIO_Init)
|
||||||
temp |= ((GPIO_Init->Pull) << (position * 2));
|
temp |= ((GPIO_Init->Pull) << (position * 2));
|
||||||
GPIOx->PUPDR = temp;
|
GPIOx->PUPDR = temp;
|
||||||
|
|
||||||
|
/* In case of Alternate function mode selection */
|
||||||
|
if((GPIO_Init->Mode == GPIO_MODE_AF_PP) || (GPIO_Init->Mode == GPIO_MODE_AF_OD))
|
||||||
|
{
|
||||||
|
/* Check the Alternate function parameter */
|
||||||
|
assert_param(IS_GPIO_AF(GPIO_Init->Alternate));
|
||||||
|
|
||||||
|
/* Configure Alternate function mapped with the current IO */
|
||||||
|
temp = GPIOx->AFR[position >> 3];
|
||||||
|
temp &= ~((uint32_t)0xF << ((uint32_t)(position & (uint32_t)0x07) * 4)) ;
|
||||||
|
temp |= ((uint32_t)(GPIO_Init->Alternate) << (((uint32_t)position & (uint32_t)0x07) * 4));
|
||||||
|
GPIOx->AFR[position >> 3] = temp;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Configure IO Direction mode (Input, Output, Alternate or Analog) */
|
||||||
|
temp = GPIOx->MODER;
|
||||||
|
temp &= ~(GPIO_MODER_MODER0 << (position * 2));
|
||||||
|
temp |= ((GPIO_Init->Mode & GPIO_MODE) << (position * 2));
|
||||||
|
GPIOx->MODER = temp;
|
||||||
|
|
||||||
/*--------------------- EXTI Mode Configuration ------------------------*/
|
/*--------------------- EXTI Mode Configuration ------------------------*/
|
||||||
/* Configure the External Interrupt or event for the current IO */
|
/* Configure the External Interrupt or event for the current IO */
|
||||||
if((GPIO_Init->Mode & EXTI_MODE) == EXTI_MODE)
|
if((GPIO_Init->Mode & EXTI_MODE) == EXTI_MODE)
|
||||||
|
@ -300,7 +300,7 @@ void HAL_GPIO_DeInit(GPIO_TypeDef *GPIOx, uint32_t GPIO_Pin)
|
||||||
|
|
||||||
/* Check the parameters */
|
/* Check the parameters */
|
||||||
assert_param(IS_GPIO_ALL_INSTANCE(GPIOx));
|
assert_param(IS_GPIO_ALL_INSTANCE(GPIOx));
|
||||||
|
|
||||||
/* Configure the port pins */
|
/* Configure the port pins */
|
||||||
for(position = 0; position < GPIO_NUMBER; position++)
|
for(position = 0; position < GPIO_NUMBER; position++)
|
||||||
{
|
{
|
||||||
|
@ -316,10 +316,6 @@ void HAL_GPIO_DeInit(GPIO_TypeDef *GPIOx, uint32_t GPIO_Pin)
|
||||||
tmp &= (((uint32_t)0x0F) << (4 * (position & 0x03)));
|
tmp &= (((uint32_t)0x0F) << (4 * (position & 0x03)));
|
||||||
if(tmp == ((uint32_t)(GPIO_GET_INDEX(GPIOx)) << (4 * (position & 0x03))))
|
if(tmp == ((uint32_t)(GPIO_GET_INDEX(GPIOx)) << (4 * (position & 0x03))))
|
||||||
{
|
{
|
||||||
/* Configure the External Interrupt or event for the current IO */
|
|
||||||
tmp = ((uint32_t)0x0F) << (4 * (position & 0x03));
|
|
||||||
SYSCFG->EXTICR[position >> 2] &= ~tmp;
|
|
||||||
|
|
||||||
/* Clear EXTI line configuration */
|
/* Clear EXTI line configuration */
|
||||||
EXTI->IMR &= ~((uint32_t)iocurrent);
|
EXTI->IMR &= ~((uint32_t)iocurrent);
|
||||||
EXTI->EMR &= ~((uint32_t)iocurrent);
|
EXTI->EMR &= ~((uint32_t)iocurrent);
|
||||||
|
@ -327,6 +323,10 @@ void HAL_GPIO_DeInit(GPIO_TypeDef *GPIOx, uint32_t GPIO_Pin)
|
||||||
/* Clear Rising Falling edge configuration */
|
/* Clear Rising Falling edge configuration */
|
||||||
EXTI->RTSR &= ~((uint32_t)iocurrent);
|
EXTI->RTSR &= ~((uint32_t)iocurrent);
|
||||||
EXTI->FTSR &= ~((uint32_t)iocurrent);
|
EXTI->FTSR &= ~((uint32_t)iocurrent);
|
||||||
|
|
||||||
|
/* Configure the External Interrupt or event for the current IO */
|
||||||
|
tmp = ((uint32_t)0x0F) << (4 * (position & 0x03));
|
||||||
|
SYSCFG->EXTICR[position >> 2] &= ~tmp;
|
||||||
}
|
}
|
||||||
/*------------------------- GPIO Mode Configuration --------------------*/
|
/*------------------------- GPIO Mode Configuration --------------------*/
|
||||||
/* Configure IO Direction in Input Floating Mode */
|
/* Configure IO Direction in Input Floating Mode */
|
||||||
|
@ -335,14 +335,14 @@ void HAL_GPIO_DeInit(GPIO_TypeDef *GPIOx, uint32_t GPIO_Pin)
|
||||||
/* Configure the default Alternate Function in current IO */
|
/* Configure the default Alternate Function in current IO */
|
||||||
GPIOx->AFR[position >> 3] &= ~((uint32_t)0xF << ((uint32_t)(position & (uint32_t)0x07) * 4)) ;
|
GPIOx->AFR[position >> 3] &= ~((uint32_t)0xF << ((uint32_t)(position & (uint32_t)0x07) * 4)) ;
|
||||||
|
|
||||||
/* Configure the default value for IO Speed */
|
/* Deactivate the Pull-up and Pull-down resistor for the current IO */
|
||||||
GPIOx->OSPEEDR &= ~(GPIO_OSPEEDER_OSPEEDR0 << (position * 2));
|
GPIOx->PUPDR &= ~(GPIO_PUPDR_PUPDR0 << (position * 2));
|
||||||
|
|
||||||
/* Configure the default value IO Output Type */
|
/* Configure the default value IO Output Type */
|
||||||
GPIOx->OTYPER &= ~(GPIO_OTYPER_OT_0 << position) ;
|
GPIOx->OTYPER &= ~(GPIO_OTYPER_OT_0 << position) ;
|
||||||
|
|
||||||
/* Deactivate the Pull-up and Pull-down resistor for the current IO */
|
/* Configure the default value for IO Speed */
|
||||||
GPIOx->PUPDR &= ~(GPIO_PUPDR_PUPDR0 << (position * 2));
|
GPIOx->OSPEEDR &= ~(GPIO_OSPEEDER_OSPEEDR0 << (position * 2));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -431,13 +431,13 @@ void HAL_GPIO_TogglePin(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin)
|
||||||
/* Check the parameters */
|
/* Check the parameters */
|
||||||
assert_param(IS_GPIO_PIN(GPIO_Pin));
|
assert_param(IS_GPIO_PIN(GPIO_Pin));
|
||||||
|
|
||||||
if ((GPIOx->ODR & GPIO_Pin) == GPIO_Pin)
|
if ((GPIOx->ODR & GPIO_Pin) != 0X00u)
|
||||||
{
|
{
|
||||||
GPIOx->BSRR = (uint32_t)GPIO_Pin << GPIO_NUMBER;
|
GPIOx->BSRR = (uint32_t)GPIO_Pin << GPIO_NUMBER;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
GPIOx->BSRR = GPIO_Pin;
|
GPIOx->BSRR = (uint32_t)GPIO_Pin;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -467,10 +467,11 @@ HAL_StatusTypeDef HAL_GPIO_LockPin(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin)
|
||||||
GPIOx->LCKR = GPIO_Pin;
|
GPIOx->LCKR = GPIO_Pin;
|
||||||
/* Set LCKx bit(s): LCKK='1' + LCK[15-0] */
|
/* Set LCKx bit(s): LCKK='1' + LCK[15-0] */
|
||||||
GPIOx->LCKR = tmp;
|
GPIOx->LCKR = tmp;
|
||||||
/* Read LCKK bit*/
|
/* Read LCKR register. This read is mandatory to complete key lock sequence */
|
||||||
tmp = GPIOx->LCKR;
|
tmp = GPIOx->LCKR;
|
||||||
|
|
||||||
if((GPIOx->LCKR & GPIO_LCKR_LCKK) != RESET)
|
/* Read again in order to confirm lock is active */
|
||||||
|
if((GPIOx->LCKR & GPIO_LCKR_LCKK) != RESET)
|
||||||
{
|
{
|
||||||
return HAL_OK;
|
return HAL_OK;
|
||||||
}
|
}
|
||||||
|
|
|
@ -223,12 +223,12 @@
|
||||||
|
|
||||||
*** Callback registration ***
|
*** Callback registration ***
|
||||||
=============================================
|
=============================================
|
||||||
|
[..]
|
||||||
The compilation flag USE_HAL_I2C_REGISTER_CALLBACKS when set to 1
|
The compilation flag USE_HAL_I2C_REGISTER_CALLBACKS when set to 1
|
||||||
allows the user to configure dynamically the driver callbacks.
|
allows the user to configure dynamically the driver callbacks.
|
||||||
Use Functions @ref HAL_I2C_RegisterCallback() or @ref HAL_I2C_RegisterAddrCallback()
|
Use Functions @ref HAL_I2C_RegisterCallback() or @ref HAL_I2C_RegisterAddrCallback()
|
||||||
to register an interrupt callback.
|
to register an interrupt callback.
|
||||||
|
[..]
|
||||||
Function @ref HAL_I2C_RegisterCallback() allows to register following callbacks:
|
Function @ref HAL_I2C_RegisterCallback() allows to register following callbacks:
|
||||||
(+) MasterTxCpltCallback : callback for Master transmission end of transfer.
|
(+) MasterTxCpltCallback : callback for Master transmission end of transfer.
|
||||||
(+) MasterRxCpltCallback : callback for Master reception end of transfer.
|
(+) MasterRxCpltCallback : callback for Master reception end of transfer.
|
||||||
|
@ -243,9 +243,9 @@
|
||||||
(+) MspDeInitCallback : callback for Msp DeInit.
|
(+) MspDeInitCallback : callback for Msp DeInit.
|
||||||
This function takes as parameters the HAL peripheral handle, the Callback ID
|
This function takes as parameters the HAL peripheral handle, the Callback ID
|
||||||
and a pointer to the user callback function.
|
and a pointer to the user callback function.
|
||||||
|
[..]
|
||||||
For specific callback AddrCallback use dedicated register callbacks : @ref HAL_I2C_RegisterAddrCallback().
|
For specific callback AddrCallback use dedicated register callbacks : @ref HAL_I2C_RegisterAddrCallback().
|
||||||
|
[..]
|
||||||
Use function @ref HAL_I2C_UnRegisterCallback to reset a callback to the default
|
Use function @ref HAL_I2C_UnRegisterCallback to reset a callback to the default
|
||||||
weak function.
|
weak function.
|
||||||
@ref HAL_I2C_UnRegisterCallback takes as parameters the HAL peripheral handle,
|
@ref HAL_I2C_UnRegisterCallback takes as parameters the HAL peripheral handle,
|
||||||
|
@ -262,9 +262,9 @@
|
||||||
(+) AbortCpltCallback : callback for abort completion process.
|
(+) AbortCpltCallback : callback for abort completion process.
|
||||||
(+) MspInitCallback : callback for Msp Init.
|
(+) MspInitCallback : callback for Msp Init.
|
||||||
(+) MspDeInitCallback : callback for Msp DeInit.
|
(+) MspDeInitCallback : callback for Msp DeInit.
|
||||||
|
[..]
|
||||||
For callback AddrCallback use dedicated register callbacks : @ref HAL_I2C_UnRegisterAddrCallback().
|
For callback AddrCallback use dedicated register callbacks : @ref HAL_I2C_UnRegisterAddrCallback().
|
||||||
|
[..]
|
||||||
By default, after the @ref HAL_I2C_Init() and when the state is @ref HAL_I2C_STATE_RESET
|
By default, after the @ref HAL_I2C_Init() and when the state is @ref HAL_I2C_STATE_RESET
|
||||||
all callbacks are set to the corresponding weak functions:
|
all callbacks are set to the corresponding weak functions:
|
||||||
examples @ref HAL_I2C_MasterTxCpltCallback(), @ref HAL_I2C_MasterRxCpltCallback().
|
examples @ref HAL_I2C_MasterTxCpltCallback(), @ref HAL_I2C_MasterRxCpltCallback().
|
||||||
|
@ -273,7 +273,7 @@
|
||||||
these callbacks are null (not registered beforehand).
|
these callbacks are null (not registered beforehand).
|
||||||
If MspInit or MspDeInit are not null, the @ref HAL_I2C_Init()/ @ref HAL_I2C_DeInit()
|
If MspInit or MspDeInit are not null, the @ref HAL_I2C_Init()/ @ref HAL_I2C_DeInit()
|
||||||
keep and use the user MspInit/MspDeInit callbacks (registered beforehand) whatever the state.
|
keep and use the user MspInit/MspDeInit callbacks (registered beforehand) whatever the state.
|
||||||
|
[..]
|
||||||
Callbacks can be registered/unregistered in @ref HAL_I2C_STATE_READY state only.
|
Callbacks can be registered/unregistered in @ref HAL_I2C_STATE_READY state only.
|
||||||
Exception done MspInit/MspDeInit functions that can be registered/unregistered
|
Exception done MspInit/MspDeInit functions that can be registered/unregistered
|
||||||
in @ref HAL_I2C_STATE_READY or @ref HAL_I2C_STATE_RESET state,
|
in @ref HAL_I2C_STATE_READY or @ref HAL_I2C_STATE_RESET state,
|
||||||
|
@ -281,7 +281,7 @@
|
||||||
Then, the user first registers the MspInit/MspDeInit user callbacks
|
Then, the user first registers the MspInit/MspDeInit user callbacks
|
||||||
using @ref HAL_I2C_RegisterCallback() before calling @ref HAL_I2C_DeInit()
|
using @ref HAL_I2C_RegisterCallback() before calling @ref HAL_I2C_DeInit()
|
||||||
or @ref HAL_I2C_Init() function.
|
or @ref HAL_I2C_Init() function.
|
||||||
|
[..]
|
||||||
When the compilation flag USE_HAL_I2C_REGISTER_CALLBACKS is set to 0 or
|
When the compilation flag USE_HAL_I2C_REGISTER_CALLBACKS is set to 0 or
|
||||||
not defined, the callback registration feature is not available and all callbacks
|
not defined, the callback registration feature is not available and all callbacks
|
||||||
are set to the corresponding weak functions.
|
are set to the corresponding weak functions.
|
||||||
|
@ -4737,6 +4737,13 @@ static HAL_StatusTypeDef I2C_Slave_ISR_IT(struct __I2C_HandleTypeDef *hi2c, uint
|
||||||
/* Process locked */
|
/* Process locked */
|
||||||
__HAL_LOCK(hi2c);
|
__HAL_LOCK(hi2c);
|
||||||
|
|
||||||
|
/* Check if STOPF is set */
|
||||||
|
if ((I2C_CHECK_FLAG(tmpITFlags, I2C_FLAG_STOPF) != RESET) && (I2C_CHECK_IT_SOURCE(ITSources, I2C_IT_STOPI) != RESET))
|
||||||
|
{
|
||||||
|
/* Call I2C Slave complete process */
|
||||||
|
I2C_ITSlaveCplt(hi2c, tmpITFlags);
|
||||||
|
}
|
||||||
|
|
||||||
if ((I2C_CHECK_FLAG(tmpITFlags, I2C_FLAG_AF) != RESET) && (I2C_CHECK_IT_SOURCE(ITSources, I2C_IT_NACKI) != RESET))
|
if ((I2C_CHECK_FLAG(tmpITFlags, I2C_FLAG_AF) != RESET) && (I2C_CHECK_IT_SOURCE(ITSources, I2C_IT_NACKI) != RESET))
|
||||||
{
|
{
|
||||||
/* Check that I2C transfer finished */
|
/* Check that I2C transfer finished */
|
||||||
|
@ -4788,9 +4795,6 @@ static HAL_StatusTypeDef I2C_Slave_ISR_IT(struct __I2C_HandleTypeDef *hi2c, uint
|
||||||
{
|
{
|
||||||
if (hi2c->XferCount > 0U)
|
if (hi2c->XferCount > 0U)
|
||||||
{
|
{
|
||||||
/* Remove RXNE flag on temporary variable as read done */
|
|
||||||
tmpITFlags &= ~I2C_FLAG_RXNE;
|
|
||||||
|
|
||||||
/* Read data from RXDR */
|
/* Read data from RXDR */
|
||||||
*hi2c->pBuffPtr = (uint8_t)hi2c->Instance->RXDR;
|
*hi2c->pBuffPtr = (uint8_t)hi2c->Instance->RXDR;
|
||||||
|
|
||||||
|
@ -4844,13 +4848,6 @@ static HAL_StatusTypeDef I2C_Slave_ISR_IT(struct __I2C_HandleTypeDef *hi2c, uint
|
||||||
/* Nothing to do */
|
/* Nothing to do */
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Check if STOPF is set */
|
|
||||||
if ((I2C_CHECK_FLAG(tmpITFlags, I2C_FLAG_STOPF) != RESET) && (I2C_CHECK_IT_SOURCE(ITSources, I2C_IT_STOPI) != RESET))
|
|
||||||
{
|
|
||||||
/* Call I2C Slave complete process */
|
|
||||||
I2C_ITSlaveCplt(hi2c, tmpITFlags);
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Process Unlocked */
|
/* Process Unlocked */
|
||||||
__HAL_UNLOCK(hi2c);
|
__HAL_UNLOCK(hi2c);
|
||||||
|
|
||||||
|
@ -5008,6 +5005,13 @@ static HAL_StatusTypeDef I2C_Slave_ISR_DMA(struct __I2C_HandleTypeDef *hi2c, uin
|
||||||
/* Process locked */
|
/* Process locked */
|
||||||
__HAL_LOCK(hi2c);
|
__HAL_LOCK(hi2c);
|
||||||
|
|
||||||
|
/* Check if STOPF is set */
|
||||||
|
if ((I2C_CHECK_FLAG(ITFlags, I2C_FLAG_STOPF) != RESET) && (I2C_CHECK_IT_SOURCE(ITSources, I2C_IT_STOPI) != RESET))
|
||||||
|
{
|
||||||
|
/* Call I2C Slave complete process */
|
||||||
|
I2C_ITSlaveCplt(hi2c, ITFlags);
|
||||||
|
}
|
||||||
|
|
||||||
if ((I2C_CHECK_FLAG(ITFlags, I2C_FLAG_AF) != RESET) && (I2C_CHECK_IT_SOURCE(ITSources, I2C_IT_NACKI) != RESET))
|
if ((I2C_CHECK_FLAG(ITFlags, I2C_FLAG_AF) != RESET) && (I2C_CHECK_IT_SOURCE(ITSources, I2C_IT_NACKI) != RESET))
|
||||||
{
|
{
|
||||||
/* Check that I2C transfer finished */
|
/* Check that I2C transfer finished */
|
||||||
|
@ -5092,11 +5096,6 @@ static HAL_StatusTypeDef I2C_Slave_ISR_DMA(struct __I2C_HandleTypeDef *hi2c, uin
|
||||||
{
|
{
|
||||||
I2C_ITAddrCplt(hi2c, ITFlags);
|
I2C_ITAddrCplt(hi2c, ITFlags);
|
||||||
}
|
}
|
||||||
else if ((I2C_CHECK_FLAG(ITFlags, I2C_FLAG_STOPF) != RESET) && (I2C_CHECK_IT_SOURCE(ITSources, I2C_IT_STOPI) != RESET))
|
|
||||||
{
|
|
||||||
/* Call I2C Slave complete process */
|
|
||||||
I2C_ITSlaveCplt(hi2c, ITFlags);
|
|
||||||
}
|
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
/* Nothing to do */
|
/* Nothing to do */
|
||||||
|
|
|
@ -317,7 +317,7 @@ HAL_StatusTypeDef HAL_RCC_DeInit(void)
|
||||||
SystemCoreClock = HSI_VALUE;
|
SystemCoreClock = HSI_VALUE;
|
||||||
|
|
||||||
/* Adapt Systick interrupt period */
|
/* Adapt Systick interrupt period */
|
||||||
if(HAL_InitTick(TICK_INT_PRIORITY) != HAL_OK)
|
if (HAL_InitTick(uwTickPrio) != HAL_OK)
|
||||||
{
|
{
|
||||||
return HAL_ERROR;
|
return HAL_ERROR;
|
||||||
}
|
}
|
||||||
|
@ -344,10 +344,11 @@ HAL_StatusTypeDef HAL_RCC_DeInit(void)
|
||||||
HAL_StatusTypeDef HAL_RCC_OscConfig(RCC_OscInitTypeDef *RCC_OscInitStruct)
|
HAL_StatusTypeDef HAL_RCC_OscConfig(RCC_OscInitTypeDef *RCC_OscInitStruct)
|
||||||
{
|
{
|
||||||
uint32_t tickstart;
|
uint32_t tickstart;
|
||||||
|
uint32_t pll_config;
|
||||||
FlagStatus pwrclkchanged = RESET;
|
FlagStatus pwrclkchanged = RESET;
|
||||||
|
|
||||||
/* Check Null pointer */
|
/* Check Null pointer */
|
||||||
if(RCC_OscInitStruct == NULL)
|
if (RCC_OscInitStruct == NULL)
|
||||||
{
|
{
|
||||||
return HAL_ERROR;
|
return HAL_ERROR;
|
||||||
}
|
}
|
||||||
|
@ -356,15 +357,15 @@ HAL_StatusTypeDef HAL_RCC_OscConfig(RCC_OscInitTypeDef *RCC_OscInitStruct)
|
||||||
assert_param(IS_RCC_OSCILLATORTYPE(RCC_OscInitStruct->OscillatorType));
|
assert_param(IS_RCC_OSCILLATORTYPE(RCC_OscInitStruct->OscillatorType));
|
||||||
|
|
||||||
/*------------------------------- HSE Configuration ------------------------*/
|
/*------------------------------- HSE Configuration ------------------------*/
|
||||||
if(((RCC_OscInitStruct->OscillatorType) & RCC_OSCILLATORTYPE_HSE) == RCC_OSCILLATORTYPE_HSE)
|
if (((RCC_OscInitStruct->OscillatorType) & RCC_OSCILLATORTYPE_HSE) == RCC_OSCILLATORTYPE_HSE)
|
||||||
{
|
{
|
||||||
/* Check the parameters */
|
/* Check the parameters */
|
||||||
assert_param(IS_RCC_HSE(RCC_OscInitStruct->HSEState));
|
assert_param(IS_RCC_HSE(RCC_OscInitStruct->HSEState));
|
||||||
/* When the HSE is used as system clock or clock source for PLL, It can not be disabled */
|
/* When the HSE is used as system clock or clock source for PLL, It can not be disabled */
|
||||||
if((__HAL_RCC_GET_SYSCLK_SOURCE() == RCC_SYSCLKSOURCE_STATUS_HSE)
|
if ((__HAL_RCC_GET_SYSCLK_SOURCE() == RCC_SYSCLKSOURCE_STATUS_HSE)
|
||||||
|| ((__HAL_RCC_GET_SYSCLK_SOURCE() == RCC_SYSCLKSOURCE_STATUS_PLLCLK) && ((RCC->PLLCFGR & RCC_PLLCFGR_PLLSRC) == RCC_PLLCFGR_PLLSRC_HSE)))
|
|| ((__HAL_RCC_GET_SYSCLK_SOURCE() == RCC_SYSCLKSOURCE_STATUS_PLLCLK) && ((RCC->PLLCFGR & RCC_PLLCFGR_PLLSRC) == RCC_PLLCFGR_PLLSRC_HSE)))
|
||||||
{
|
{
|
||||||
if((__HAL_RCC_GET_FLAG(RCC_FLAG_HSERDY) != RESET) && (RCC_OscInitStruct->HSEState == RCC_HSE_OFF))
|
if ((__HAL_RCC_GET_FLAG(RCC_FLAG_HSERDY) != RESET) && (RCC_OscInitStruct->HSEState == RCC_HSE_OFF))
|
||||||
{
|
{
|
||||||
return HAL_ERROR;
|
return HAL_ERROR;
|
||||||
}
|
}
|
||||||
|
@ -375,15 +376,15 @@ HAL_StatusTypeDef HAL_RCC_OscConfig(RCC_OscInitTypeDef *RCC_OscInitStruct)
|
||||||
__HAL_RCC_HSE_CONFIG(RCC_OscInitStruct->HSEState);
|
__HAL_RCC_HSE_CONFIG(RCC_OscInitStruct->HSEState);
|
||||||
|
|
||||||
/* Check the HSE State */
|
/* Check the HSE State */
|
||||||
if(RCC_OscInitStruct->HSEState != RCC_HSE_OFF)
|
if (RCC_OscInitStruct->HSEState != RCC_HSE_OFF)
|
||||||
{
|
{
|
||||||
/* Get Start Tick*/
|
/* Get Start Tick*/
|
||||||
tickstart = HAL_GetTick();
|
tickstart = HAL_GetTick();
|
||||||
|
|
||||||
/* Wait till HSE is ready */
|
/* Wait till HSE is ready */
|
||||||
while(__HAL_RCC_GET_FLAG(RCC_FLAG_HSERDY) == RESET)
|
while (__HAL_RCC_GET_FLAG(RCC_FLAG_HSERDY) == RESET)
|
||||||
{
|
{
|
||||||
if((HAL_GetTick() - tickstart ) > HSE_TIMEOUT_VALUE)
|
if ((HAL_GetTick() - tickstart) > HSE_TIMEOUT_VALUE)
|
||||||
{
|
{
|
||||||
return HAL_TIMEOUT;
|
return HAL_TIMEOUT;
|
||||||
}
|
}
|
||||||
|
@ -395,9 +396,9 @@ HAL_StatusTypeDef HAL_RCC_OscConfig(RCC_OscInitTypeDef *RCC_OscInitStruct)
|
||||||
tickstart = HAL_GetTick();
|
tickstart = HAL_GetTick();
|
||||||
|
|
||||||
/* Wait till HSE is bypassed or disabled */
|
/* Wait till HSE is bypassed or disabled */
|
||||||
while(__HAL_RCC_GET_FLAG(RCC_FLAG_HSERDY) != RESET)
|
while (__HAL_RCC_GET_FLAG(RCC_FLAG_HSERDY) != RESET)
|
||||||
{
|
{
|
||||||
if((HAL_GetTick() - tickstart ) > HSE_TIMEOUT_VALUE)
|
if ((HAL_GetTick() - tickstart) > HSE_TIMEOUT_VALUE)
|
||||||
{
|
{
|
||||||
return HAL_TIMEOUT;
|
return HAL_TIMEOUT;
|
||||||
}
|
}
|
||||||
|
@ -406,18 +407,18 @@ HAL_StatusTypeDef HAL_RCC_OscConfig(RCC_OscInitTypeDef *RCC_OscInitStruct)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
/*----------------------------- HSI Configuration --------------------------*/
|
/*----------------------------- HSI Configuration --------------------------*/
|
||||||
if(((RCC_OscInitStruct->OscillatorType) & RCC_OSCILLATORTYPE_HSI) == RCC_OSCILLATORTYPE_HSI)
|
if (((RCC_OscInitStruct->OscillatorType) & RCC_OSCILLATORTYPE_HSI) == RCC_OSCILLATORTYPE_HSI)
|
||||||
{
|
{
|
||||||
/* Check the parameters */
|
/* Check the parameters */
|
||||||
assert_param(IS_RCC_HSI(RCC_OscInitStruct->HSIState));
|
assert_param(IS_RCC_HSI(RCC_OscInitStruct->HSIState));
|
||||||
assert_param(IS_RCC_CALIBRATION_VALUE(RCC_OscInitStruct->HSICalibrationValue));
|
assert_param(IS_RCC_CALIBRATION_VALUE(RCC_OscInitStruct->HSICalibrationValue));
|
||||||
|
|
||||||
/* Check if HSI is used as system clock or as PLL source when PLL is selected as system clock */
|
/* Check if HSI is used as system clock or as PLL source when PLL is selected as system clock */
|
||||||
if((__HAL_RCC_GET_SYSCLK_SOURCE() == RCC_SYSCLKSOURCE_STATUS_HSI)
|
if ((__HAL_RCC_GET_SYSCLK_SOURCE() == RCC_SYSCLKSOURCE_STATUS_HSI)
|
||||||
|| ((__HAL_RCC_GET_SYSCLK_SOURCE() == RCC_SYSCLKSOURCE_STATUS_PLLCLK) && ((RCC->PLLCFGR & RCC_PLLCFGR_PLLSRC) == RCC_PLLCFGR_PLLSRC_HSI)))
|
|| ((__HAL_RCC_GET_SYSCLK_SOURCE() == RCC_SYSCLKSOURCE_STATUS_PLLCLK) && ((RCC->PLLCFGR & RCC_PLLCFGR_PLLSRC) == RCC_PLLCFGR_PLLSRC_HSI)))
|
||||||
{
|
{
|
||||||
/* When HSI is used as system clock it will not disabled */
|
/* When HSI is used as system clock it will not disabled */
|
||||||
if((__HAL_RCC_GET_FLAG(RCC_FLAG_HSIRDY) != RESET) && (RCC_OscInitStruct->HSIState != RCC_HSI_ON))
|
if ((__HAL_RCC_GET_FLAG(RCC_FLAG_HSIRDY) != RESET) && (RCC_OscInitStruct->HSIState != RCC_HSI_ON))
|
||||||
{
|
{
|
||||||
return HAL_ERROR;
|
return HAL_ERROR;
|
||||||
}
|
}
|
||||||
|
@ -431,7 +432,7 @@ HAL_StatusTypeDef HAL_RCC_OscConfig(RCC_OscInitTypeDef *RCC_OscInitStruct)
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
/* Check the HSI State */
|
/* Check the HSI State */
|
||||||
if((RCC_OscInitStruct->HSIState)!= RCC_HSI_OFF)
|
if ((RCC_OscInitStruct->HSIState) != RCC_HSI_OFF)
|
||||||
{
|
{
|
||||||
/* Enable the Internal High Speed oscillator (HSI). */
|
/* Enable the Internal High Speed oscillator (HSI). */
|
||||||
__HAL_RCC_HSI_ENABLE();
|
__HAL_RCC_HSI_ENABLE();
|
||||||
|
@ -440,9 +441,9 @@ HAL_StatusTypeDef HAL_RCC_OscConfig(RCC_OscInitTypeDef *RCC_OscInitStruct)
|
||||||
tickstart = HAL_GetTick();
|
tickstart = HAL_GetTick();
|
||||||
|
|
||||||
/* Wait till HSI is ready */
|
/* Wait till HSI is ready */
|
||||||
while(__HAL_RCC_GET_FLAG(RCC_FLAG_HSIRDY) == RESET)
|
while (__HAL_RCC_GET_FLAG(RCC_FLAG_HSIRDY) == RESET)
|
||||||
{
|
{
|
||||||
if((HAL_GetTick() - tickstart ) > HSI_TIMEOUT_VALUE)
|
if ((HAL_GetTick() - tickstart) > HSI_TIMEOUT_VALUE)
|
||||||
{
|
{
|
||||||
return HAL_TIMEOUT;
|
return HAL_TIMEOUT;
|
||||||
}
|
}
|
||||||
|
@ -460,9 +461,9 @@ HAL_StatusTypeDef HAL_RCC_OscConfig(RCC_OscInitTypeDef *RCC_OscInitStruct)
|
||||||
tickstart = HAL_GetTick();
|
tickstart = HAL_GetTick();
|
||||||
|
|
||||||
/* Wait till HSI is ready */
|
/* Wait till HSI is ready */
|
||||||
while(__HAL_RCC_GET_FLAG(RCC_FLAG_HSIRDY) != RESET)
|
while (__HAL_RCC_GET_FLAG(RCC_FLAG_HSIRDY) != RESET)
|
||||||
{
|
{
|
||||||
if((HAL_GetTick() - tickstart ) > HSI_TIMEOUT_VALUE)
|
if ((HAL_GetTick() - tickstart) > HSI_TIMEOUT_VALUE)
|
||||||
{
|
{
|
||||||
return HAL_TIMEOUT;
|
return HAL_TIMEOUT;
|
||||||
}
|
}
|
||||||
|
@ -471,13 +472,13 @@ HAL_StatusTypeDef HAL_RCC_OscConfig(RCC_OscInitTypeDef *RCC_OscInitStruct)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
/*------------------------------ LSI Configuration -------------------------*/
|
/*------------------------------ LSI Configuration -------------------------*/
|
||||||
if(((RCC_OscInitStruct->OscillatorType) & RCC_OSCILLATORTYPE_LSI) == RCC_OSCILLATORTYPE_LSI)
|
if (((RCC_OscInitStruct->OscillatorType) & RCC_OSCILLATORTYPE_LSI) == RCC_OSCILLATORTYPE_LSI)
|
||||||
{
|
{
|
||||||
/* Check the parameters */
|
/* Check the parameters */
|
||||||
assert_param(IS_RCC_LSI(RCC_OscInitStruct->LSIState));
|
assert_param(IS_RCC_LSI(RCC_OscInitStruct->LSIState));
|
||||||
|
|
||||||
/* Check the LSI State */
|
/* Check the LSI State */
|
||||||
if((RCC_OscInitStruct->LSIState)!= RCC_LSI_OFF)
|
if ((RCC_OscInitStruct->LSIState) != RCC_LSI_OFF)
|
||||||
{
|
{
|
||||||
/* Enable the Internal Low Speed oscillator (LSI). */
|
/* Enable the Internal Low Speed oscillator (LSI). */
|
||||||
__HAL_RCC_LSI_ENABLE();
|
__HAL_RCC_LSI_ENABLE();
|
||||||
|
@ -486,9 +487,9 @@ HAL_StatusTypeDef HAL_RCC_OscConfig(RCC_OscInitTypeDef *RCC_OscInitStruct)
|
||||||
tickstart = HAL_GetTick();
|
tickstart = HAL_GetTick();
|
||||||
|
|
||||||
/* Wait till LSI is ready */
|
/* Wait till LSI is ready */
|
||||||
while(__HAL_RCC_GET_FLAG(RCC_FLAG_LSIRDY) == RESET)
|
while (__HAL_RCC_GET_FLAG(RCC_FLAG_LSIRDY) == RESET)
|
||||||
{
|
{
|
||||||
if((HAL_GetTick() - tickstart ) > LSI_TIMEOUT_VALUE)
|
if ((HAL_GetTick() - tickstart) > LSI_TIMEOUT_VALUE)
|
||||||
{
|
{
|
||||||
return HAL_TIMEOUT;
|
return HAL_TIMEOUT;
|
||||||
}
|
}
|
||||||
|
@ -503,9 +504,9 @@ HAL_StatusTypeDef HAL_RCC_OscConfig(RCC_OscInitTypeDef *RCC_OscInitStruct)
|
||||||
tickstart = HAL_GetTick();
|
tickstart = HAL_GetTick();
|
||||||
|
|
||||||
/* Wait till LSI is ready */
|
/* Wait till LSI is ready */
|
||||||
while(__HAL_RCC_GET_FLAG(RCC_FLAG_LSIRDY) != RESET)
|
while (__HAL_RCC_GET_FLAG(RCC_FLAG_LSIRDY) != RESET)
|
||||||
{
|
{
|
||||||
if((HAL_GetTick() - tickstart ) > LSI_TIMEOUT_VALUE)
|
if ((HAL_GetTick() - tickstart) > LSI_TIMEOUT_VALUE)
|
||||||
{
|
{
|
||||||
return HAL_TIMEOUT;
|
return HAL_TIMEOUT;
|
||||||
}
|
}
|
||||||
|
@ -513,21 +514,21 @@ HAL_StatusTypeDef HAL_RCC_OscConfig(RCC_OscInitTypeDef *RCC_OscInitStruct)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
/*------------------------------ LSE Configuration -------------------------*/
|
/*------------------------------ LSE Configuration -------------------------*/
|
||||||
if(((RCC_OscInitStruct->OscillatorType) & RCC_OSCILLATORTYPE_LSE) == RCC_OSCILLATORTYPE_LSE)
|
if (((RCC_OscInitStruct->OscillatorType) & RCC_OSCILLATORTYPE_LSE) == RCC_OSCILLATORTYPE_LSE)
|
||||||
{
|
{
|
||||||
/* Check the parameters */
|
/* Check the parameters */
|
||||||
assert_param(IS_RCC_LSE(RCC_OscInitStruct->LSEState));
|
assert_param(IS_RCC_LSE(RCC_OscInitStruct->LSEState));
|
||||||
|
|
||||||
/* Update LSE configuration in Backup Domain control register */
|
/* Update LSE configuration in Backup Domain control register */
|
||||||
/* Requires to enable write access to Backup Domain of necessary */
|
/* Requires to enable write access to Backup Domain of necessary */
|
||||||
if(__HAL_RCC_PWR_IS_CLK_DISABLED())
|
if (__HAL_RCC_PWR_IS_CLK_DISABLED())
|
||||||
{
|
{
|
||||||
/* Enable Power Clock*/
|
/* Enable Power Clock*/
|
||||||
__HAL_RCC_PWR_CLK_ENABLE();
|
__HAL_RCC_PWR_CLK_ENABLE();
|
||||||
pwrclkchanged = SET;
|
pwrclkchanged = SET;
|
||||||
}
|
}
|
||||||
|
|
||||||
if(HAL_IS_BIT_CLR(PWR->CR1, PWR_CR1_DBP))
|
if (HAL_IS_BIT_CLR(PWR->CR1, PWR_CR1_DBP))
|
||||||
{
|
{
|
||||||
/* Enable write access to Backup domain */
|
/* Enable write access to Backup domain */
|
||||||
PWR->CR1 |= PWR_CR1_DBP;
|
PWR->CR1 |= PWR_CR1_DBP;
|
||||||
|
@ -535,9 +536,9 @@ HAL_StatusTypeDef HAL_RCC_OscConfig(RCC_OscInitTypeDef *RCC_OscInitStruct)
|
||||||
/* Wait for Backup domain Write protection disable */
|
/* Wait for Backup domain Write protection disable */
|
||||||
tickstart = HAL_GetTick();
|
tickstart = HAL_GetTick();
|
||||||
|
|
||||||
while(HAL_IS_BIT_CLR(PWR->CR1, PWR_CR1_DBP))
|
while (HAL_IS_BIT_CLR(PWR->CR1, PWR_CR1_DBP))
|
||||||
{
|
{
|
||||||
if((HAL_GetTick() - tickstart ) > RCC_DBP_TIMEOUT_VALUE)
|
if ((HAL_GetTick() - tickstart) > RCC_DBP_TIMEOUT_VALUE)
|
||||||
{
|
{
|
||||||
return HAL_TIMEOUT;
|
return HAL_TIMEOUT;
|
||||||
}
|
}
|
||||||
|
@ -547,15 +548,15 @@ HAL_StatusTypeDef HAL_RCC_OscConfig(RCC_OscInitTypeDef *RCC_OscInitStruct)
|
||||||
/* Set the new LSE configuration -----------------------------------------*/
|
/* Set the new LSE configuration -----------------------------------------*/
|
||||||
__HAL_RCC_LSE_CONFIG(RCC_OscInitStruct->LSEState);
|
__HAL_RCC_LSE_CONFIG(RCC_OscInitStruct->LSEState);
|
||||||
/* Check the LSE State */
|
/* Check the LSE State */
|
||||||
if((RCC_OscInitStruct->LSEState) != RCC_LSE_OFF)
|
if ((RCC_OscInitStruct->LSEState) != RCC_LSE_OFF)
|
||||||
{
|
{
|
||||||
/* Get Start Tick*/
|
/* Get Start Tick*/
|
||||||
tickstart = HAL_GetTick();
|
tickstart = HAL_GetTick();
|
||||||
|
|
||||||
/* Wait till LSE is ready */
|
/* Wait till LSE is ready */
|
||||||
while(__HAL_RCC_GET_FLAG(RCC_FLAG_LSERDY) == RESET)
|
while (__HAL_RCC_GET_FLAG(RCC_FLAG_LSERDY) == RESET)
|
||||||
{
|
{
|
||||||
if((HAL_GetTick() - tickstart ) > RCC_LSE_TIMEOUT_VALUE)
|
if ((HAL_GetTick() - tickstart) > RCC_LSE_TIMEOUT_VALUE)
|
||||||
{
|
{
|
||||||
return HAL_TIMEOUT;
|
return HAL_TIMEOUT;
|
||||||
}
|
}
|
||||||
|
@ -567,9 +568,9 @@ HAL_StatusTypeDef HAL_RCC_OscConfig(RCC_OscInitTypeDef *RCC_OscInitStruct)
|
||||||
tickstart = HAL_GetTick();
|
tickstart = HAL_GetTick();
|
||||||
|
|
||||||
/* Wait till LSE is ready */
|
/* Wait till LSE is ready */
|
||||||
while(__HAL_RCC_GET_FLAG(RCC_FLAG_LSERDY) != RESET)
|
while (__HAL_RCC_GET_FLAG(RCC_FLAG_LSERDY) != RESET)
|
||||||
{
|
{
|
||||||
if((HAL_GetTick() - tickstart ) > RCC_LSE_TIMEOUT_VALUE)
|
if ((HAL_GetTick() - tickstart) > RCC_LSE_TIMEOUT_VALUE)
|
||||||
{
|
{
|
||||||
return HAL_TIMEOUT;
|
return HAL_TIMEOUT;
|
||||||
}
|
}
|
||||||
|
@ -577,7 +578,7 @@ HAL_StatusTypeDef HAL_RCC_OscConfig(RCC_OscInitTypeDef *RCC_OscInitStruct)
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Restore clock configuration if changed */
|
/* Restore clock configuration if changed */
|
||||||
if(pwrclkchanged == SET)
|
if (pwrclkchanged == SET)
|
||||||
{
|
{
|
||||||
__HAL_RCC_PWR_CLK_DISABLE();
|
__HAL_RCC_PWR_CLK_DISABLE();
|
||||||
}
|
}
|
||||||
|
@ -588,9 +589,9 @@ HAL_StatusTypeDef HAL_RCC_OscConfig(RCC_OscInitTypeDef *RCC_OscInitStruct)
|
||||||
if ((RCC_OscInitStruct->PLL.PLLState) != RCC_PLL_NONE)
|
if ((RCC_OscInitStruct->PLL.PLLState) != RCC_PLL_NONE)
|
||||||
{
|
{
|
||||||
/* Check if the PLL is used as system clock or not */
|
/* Check if the PLL is used as system clock or not */
|
||||||
if(__HAL_RCC_GET_SYSCLK_SOURCE() != RCC_SYSCLKSOURCE_STATUS_PLLCLK)
|
if (__HAL_RCC_GET_SYSCLK_SOURCE() != RCC_SYSCLKSOURCE_STATUS_PLLCLK)
|
||||||
{
|
{
|
||||||
if((RCC_OscInitStruct->PLL.PLLState) == RCC_PLL_ON)
|
if ((RCC_OscInitStruct->PLL.PLLState) == RCC_PLL_ON)
|
||||||
{
|
{
|
||||||
/* Check the parameters */
|
/* Check the parameters */
|
||||||
assert_param(IS_RCC_PLLSOURCE(RCC_OscInitStruct->PLL.PLLSource));
|
assert_param(IS_RCC_PLLSOURCE(RCC_OscInitStruct->PLL.PLLSource));
|
||||||
|
@ -609,9 +610,9 @@ HAL_StatusTypeDef HAL_RCC_OscConfig(RCC_OscInitTypeDef *RCC_OscInitStruct)
|
||||||
tickstart = HAL_GetTick();
|
tickstart = HAL_GetTick();
|
||||||
|
|
||||||
/* Wait till PLL is ready */
|
/* Wait till PLL is ready */
|
||||||
while(__HAL_RCC_GET_FLAG(RCC_FLAG_PLLRDY) != RESET)
|
while (__HAL_RCC_GET_FLAG(RCC_FLAG_PLLRDY) != RESET)
|
||||||
{
|
{
|
||||||
if((HAL_GetTick() - tickstart ) > PLL_TIMEOUT_VALUE)
|
if ((HAL_GetTick() - tickstart) > PLL_TIMEOUT_VALUE)
|
||||||
{
|
{
|
||||||
return HAL_TIMEOUT;
|
return HAL_TIMEOUT;
|
||||||
}
|
}
|
||||||
|
@ -640,9 +641,9 @@ HAL_StatusTypeDef HAL_RCC_OscConfig(RCC_OscInitTypeDef *RCC_OscInitStruct)
|
||||||
tickstart = HAL_GetTick();
|
tickstart = HAL_GetTick();
|
||||||
|
|
||||||
/* Wait till PLL is ready */
|
/* Wait till PLL is ready */
|
||||||
while(__HAL_RCC_GET_FLAG(RCC_FLAG_PLLRDY) == RESET)
|
while (__HAL_RCC_GET_FLAG(RCC_FLAG_PLLRDY) == RESET)
|
||||||
{
|
{
|
||||||
if((HAL_GetTick() - tickstart ) > PLL_TIMEOUT_VALUE)
|
if ((HAL_GetTick() - tickstart) > PLL_TIMEOUT_VALUE)
|
||||||
{
|
{
|
||||||
return HAL_TIMEOUT;
|
return HAL_TIMEOUT;
|
||||||
}
|
}
|
||||||
|
@ -657,9 +658,9 @@ HAL_StatusTypeDef HAL_RCC_OscConfig(RCC_OscInitTypeDef *RCC_OscInitStruct)
|
||||||
tickstart = HAL_GetTick();
|
tickstart = HAL_GetTick();
|
||||||
|
|
||||||
/* Wait till PLL is ready */
|
/* Wait till PLL is ready */
|
||||||
while(__HAL_RCC_GET_FLAG(RCC_FLAG_PLLRDY) != RESET)
|
while (__HAL_RCC_GET_FLAG(RCC_FLAG_PLLRDY) != RESET)
|
||||||
{
|
{
|
||||||
if((HAL_GetTick() - tickstart ) > PLL_TIMEOUT_VALUE)
|
if ((HAL_GetTick() - tickstart) > PLL_TIMEOUT_VALUE)
|
||||||
{
|
{
|
||||||
return HAL_TIMEOUT;
|
return HAL_TIMEOUT;
|
||||||
}
|
}
|
||||||
|
@ -668,7 +669,27 @@ HAL_StatusTypeDef HAL_RCC_OscConfig(RCC_OscInitTypeDef *RCC_OscInitStruct)
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
return HAL_ERROR;
|
/* Do not return HAL_ERROR if request repeats the current configuration */
|
||||||
|
pll_config = RCC->PLLCFGR;
|
||||||
|
#if defined (RCC_PLLCFGR_PLLR)
|
||||||
|
if (((RCC_OscInitStruct->PLL.PLLState) == RCC_PLL_OFF) ||
|
||||||
|
(READ_BIT(pll_config, RCC_PLLCFGR_PLLSRC) != RCC_OscInitStruct->PLL.PLLSource) ||
|
||||||
|
(READ_BIT(pll_config, RCC_PLLCFGR_PLLM) != RCC_OscInitStruct->PLL.PLLM) ||
|
||||||
|
(READ_BIT(pll_config, RCC_PLLCFGR_PLLN) != (RCC_OscInitStruct->PLL.PLLN << RCC_PLLCFGR_PLLN_Pos)) ||
|
||||||
|
(READ_BIT(pll_config, RCC_PLLCFGR_PLLP) != ((((RCC_OscInitStruct->PLL.PLLP) >> 1U) - 1U) << RCC_PLLCFGR_PLLP_Pos)) ||
|
||||||
|
(READ_BIT(pll_config, RCC_PLLCFGR_PLLQ) != (RCC_OscInitStruct->PLL.PLLQ << RCC_PLLCFGR_PLLQ_Pos)) ||
|
||||||
|
(READ_BIT(pll_config, RCC_PLLCFGR_PLLR) != (RCC_OscInitStruct->PLL.PLLR << RCC_PLLCFGR_PLLR_Pos)))
|
||||||
|
#else
|
||||||
|
if (((RCC_OscInitStruct->PLL.PLLState) == RCC_PLL_OFF) ||
|
||||||
|
(READ_BIT(pll_config, RCC_PLLCFGR_PLLSRC) != RCC_OscInitStruct->PLL.PLLSource) ||
|
||||||
|
(READ_BIT(pll_config, RCC_PLLCFGR_PLLM) != RCC_OscInitStruct->PLL.PLLM) ||
|
||||||
|
(READ_BIT(pll_config, RCC_PLLCFGR_PLLN) != (RCC_OscInitStruct->PLL.PLLN << RCC_PLLCFGR_PLLN_Pos)) ||
|
||||||
|
(READ_BIT(pll_config, RCC_PLLCFGR_PLLP) != ((((RCC_OscInitStruct->PLL.PLLP) >> 1U) - 1U) << RCC_PLLCFGR_PLLP_Pos)) ||
|
||||||
|
(READ_BIT(pll_config, RCC_PLLCFGR_PLLQ) != (RCC_OscInitStruct->PLL.PLLQ << RCC_PLLCFGR_PLLQ_Pos)))
|
||||||
|
#endif
|
||||||
|
{
|
||||||
|
return HAL_ERROR;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return HAL_OK;
|
return HAL_OK;
|
||||||
|
@ -705,7 +726,7 @@ HAL_StatusTypeDef HAL_RCC_ClockConfig(RCC_ClkInitTypeDef *RCC_ClkInitStruct, ui
|
||||||
uint32_t tickstart = 0;
|
uint32_t tickstart = 0;
|
||||||
|
|
||||||
/* Check Null pointer */
|
/* Check Null pointer */
|
||||||
if(RCC_ClkInitStruct == NULL)
|
if (RCC_ClkInitStruct == NULL)
|
||||||
{
|
{
|
||||||
return HAL_ERROR;
|
return HAL_ERROR;
|
||||||
}
|
}
|
||||||
|
@ -719,30 +740,30 @@ HAL_StatusTypeDef HAL_RCC_ClockConfig(RCC_ClkInitTypeDef *RCC_ClkInitStruct, ui
|
||||||
(HCLK) and the supply voltage of the device. */
|
(HCLK) and the supply voltage of the device. */
|
||||||
|
|
||||||
/* Increasing the CPU frequency */
|
/* Increasing the CPU frequency */
|
||||||
if(FLatency > __HAL_FLASH_GET_LATENCY())
|
if (FLatency > __HAL_FLASH_GET_LATENCY())
|
||||||
{
|
{
|
||||||
/* Program the new number of wait states to the LATENCY bits in the FLASH_ACR register */
|
/* Program the new number of wait states to the LATENCY bits in the FLASH_ACR register */
|
||||||
__HAL_FLASH_SET_LATENCY(FLatency);
|
__HAL_FLASH_SET_LATENCY(FLatency);
|
||||||
|
|
||||||
/* Check that the new number of wait states is taken into account to access the Flash
|
/* Check that the new number of wait states is taken into account to access the Flash
|
||||||
memory by reading the FLASH_ACR register */
|
memory by reading the FLASH_ACR register */
|
||||||
if(__HAL_FLASH_GET_LATENCY() != FLatency)
|
if (__HAL_FLASH_GET_LATENCY() != FLatency)
|
||||||
{
|
{
|
||||||
return HAL_ERROR;
|
return HAL_ERROR;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/*-------------------------- HCLK Configuration --------------------------*/
|
/*-------------------------- HCLK Configuration --------------------------*/
|
||||||
if(((RCC_ClkInitStruct->ClockType) & RCC_CLOCKTYPE_HCLK) == RCC_CLOCKTYPE_HCLK)
|
if (((RCC_ClkInitStruct->ClockType) & RCC_CLOCKTYPE_HCLK) == RCC_CLOCKTYPE_HCLK)
|
||||||
{
|
{
|
||||||
/* Set the highest APBx dividers in order to ensure that we do not go through
|
/* Set the highest APBx dividers in order to ensure that we do not go through
|
||||||
a non-spec phase whatever we decrease or increase HCLK. */
|
a non-spec phase whatever we decrease or increase HCLK. */
|
||||||
if(((RCC_ClkInitStruct->ClockType) & RCC_CLOCKTYPE_PCLK1) == RCC_CLOCKTYPE_PCLK1)
|
if (((RCC_ClkInitStruct->ClockType) & RCC_CLOCKTYPE_PCLK1) == RCC_CLOCKTYPE_PCLK1)
|
||||||
{
|
{
|
||||||
MODIFY_REG(RCC->CFGR, RCC_CFGR_PPRE1, RCC_HCLK_DIV16);
|
MODIFY_REG(RCC->CFGR, RCC_CFGR_PPRE1, RCC_HCLK_DIV16);
|
||||||
}
|
}
|
||||||
|
|
||||||
if(((RCC_ClkInitStruct->ClockType) & RCC_CLOCKTYPE_PCLK2) == RCC_CLOCKTYPE_PCLK2)
|
if (((RCC_ClkInitStruct->ClockType) & RCC_CLOCKTYPE_PCLK2) == RCC_CLOCKTYPE_PCLK2)
|
||||||
{
|
{
|
||||||
MODIFY_REG(RCC->CFGR, RCC_CFGR_PPRE2, (RCC_HCLK_DIV16 << 3));
|
MODIFY_REG(RCC->CFGR, RCC_CFGR_PPRE2, (RCC_HCLK_DIV16 << 3));
|
||||||
}
|
}
|
||||||
|
@ -753,24 +774,24 @@ HAL_StatusTypeDef HAL_RCC_ClockConfig(RCC_ClkInitTypeDef *RCC_ClkInitStruct, ui
|
||||||
}
|
}
|
||||||
|
|
||||||
/*------------------------- SYSCLK Configuration ---------------------------*/
|
/*------------------------- SYSCLK Configuration ---------------------------*/
|
||||||
if(((RCC_ClkInitStruct->ClockType) & RCC_CLOCKTYPE_SYSCLK) == RCC_CLOCKTYPE_SYSCLK)
|
if (((RCC_ClkInitStruct->ClockType) & RCC_CLOCKTYPE_SYSCLK) == RCC_CLOCKTYPE_SYSCLK)
|
||||||
{
|
{
|
||||||
assert_param(IS_RCC_SYSCLKSOURCE(RCC_ClkInitStruct->SYSCLKSource));
|
assert_param(IS_RCC_SYSCLKSOURCE(RCC_ClkInitStruct->SYSCLKSource));
|
||||||
|
|
||||||
/* HSE is selected as System Clock Source */
|
/* HSE is selected as System Clock Source */
|
||||||
if(RCC_ClkInitStruct->SYSCLKSource == RCC_SYSCLKSOURCE_HSE)
|
if (RCC_ClkInitStruct->SYSCLKSource == RCC_SYSCLKSOURCE_HSE)
|
||||||
{
|
{
|
||||||
/* Check the HSE ready flag */
|
/* Check the HSE ready flag */
|
||||||
if(__HAL_RCC_GET_FLAG(RCC_FLAG_HSERDY) == RESET)
|
if (__HAL_RCC_GET_FLAG(RCC_FLAG_HSERDY) == RESET)
|
||||||
{
|
{
|
||||||
return HAL_ERROR;
|
return HAL_ERROR;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
/* PLL is selected as System Clock Source */
|
/* PLL is selected as System Clock Source */
|
||||||
else if(RCC_ClkInitStruct->SYSCLKSource == RCC_SYSCLKSOURCE_PLLCLK)
|
else if (RCC_ClkInitStruct->SYSCLKSource == RCC_SYSCLKSOURCE_PLLCLK)
|
||||||
{
|
{
|
||||||
/* Check the PLL ready flag */
|
/* Check the PLL ready flag */
|
||||||
if(__HAL_RCC_GET_FLAG(RCC_FLAG_PLLRDY) == RESET)
|
if (__HAL_RCC_GET_FLAG(RCC_FLAG_PLLRDY) == RESET)
|
||||||
{
|
{
|
||||||
return HAL_ERROR;
|
return HAL_ERROR;
|
||||||
}
|
}
|
||||||
|
@ -779,7 +800,7 @@ HAL_StatusTypeDef HAL_RCC_ClockConfig(RCC_ClkInitTypeDef *RCC_ClkInitStruct, ui
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
/* Check the HSI ready flag */
|
/* Check the HSI ready flag */
|
||||||
if(__HAL_RCC_GET_FLAG(RCC_FLAG_HSIRDY) == RESET)
|
if (__HAL_RCC_GET_FLAG(RCC_FLAG_HSIRDY) == RESET)
|
||||||
{
|
{
|
||||||
return HAL_ERROR;
|
return HAL_ERROR;
|
||||||
}
|
}
|
||||||
|
@ -800,38 +821,38 @@ HAL_StatusTypeDef HAL_RCC_ClockConfig(RCC_ClkInitTypeDef *RCC_ClkInitStruct, ui
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Decreasing the number of wait states because of lower CPU frequency */
|
/* Decreasing the number of wait states because of lower CPU frequency */
|
||||||
if(FLatency < __HAL_FLASH_GET_LATENCY())
|
if (FLatency < __HAL_FLASH_GET_LATENCY())
|
||||||
{
|
{
|
||||||
/* Program the new number of wait states to the LATENCY bits in the FLASH_ACR register */
|
/* Program the new number of wait states to the LATENCY bits in the FLASH_ACR register */
|
||||||
__HAL_FLASH_SET_LATENCY(FLatency);
|
__HAL_FLASH_SET_LATENCY(FLatency);
|
||||||
|
|
||||||
/* Check that the new number of wait states is taken into account to access the Flash
|
/* Check that the new number of wait states is taken into account to access the Flash
|
||||||
memory by reading the FLASH_ACR register */
|
memory by reading the FLASH_ACR register */
|
||||||
if(__HAL_FLASH_GET_LATENCY() != FLatency)
|
if (__HAL_FLASH_GET_LATENCY() != FLatency)
|
||||||
{
|
{
|
||||||
return HAL_ERROR;
|
return HAL_ERROR;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/*-------------------------- PCLK1 Configuration ---------------------------*/
|
/*-------------------------- PCLK1 Configuration ---------------------------*/
|
||||||
if(((RCC_ClkInitStruct->ClockType) & RCC_CLOCKTYPE_PCLK1) == RCC_CLOCKTYPE_PCLK1)
|
if (((RCC_ClkInitStruct->ClockType) & RCC_CLOCKTYPE_PCLK1) == RCC_CLOCKTYPE_PCLK1)
|
||||||
{
|
{
|
||||||
assert_param(IS_RCC_PCLK(RCC_ClkInitStruct->APB1CLKDivider));
|
assert_param(IS_RCC_PCLK(RCC_ClkInitStruct->APB1CLKDivider));
|
||||||
MODIFY_REG(RCC->CFGR, RCC_CFGR_PPRE1, RCC_ClkInitStruct->APB1CLKDivider);
|
MODIFY_REG(RCC->CFGR, RCC_CFGR_PPRE1, RCC_ClkInitStruct->APB1CLKDivider);
|
||||||
}
|
}
|
||||||
|
|
||||||
/*-------------------------- PCLK2 Configuration ---------------------------*/
|
/*-------------------------- PCLK2 Configuration ---------------------------*/
|
||||||
if(((RCC_ClkInitStruct->ClockType) & RCC_CLOCKTYPE_PCLK2) == RCC_CLOCKTYPE_PCLK2)
|
if (((RCC_ClkInitStruct->ClockType) & RCC_CLOCKTYPE_PCLK2) == RCC_CLOCKTYPE_PCLK2)
|
||||||
{
|
{
|
||||||
assert_param(IS_RCC_PCLK(RCC_ClkInitStruct->APB2CLKDivider));
|
assert_param(IS_RCC_PCLK(RCC_ClkInitStruct->APB2CLKDivider));
|
||||||
MODIFY_REG(RCC->CFGR, RCC_CFGR_PPRE2, ((RCC_ClkInitStruct->APB2CLKDivider) << 3));
|
MODIFY_REG(RCC->CFGR, RCC_CFGR_PPRE2, ((RCC_ClkInitStruct->APB2CLKDivider) << 3));
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Update the SystemCoreClock global variable */
|
/* Update the SystemCoreClock global variable */
|
||||||
SystemCoreClock = HAL_RCC_GetSysClockFreq() >> AHBPrescTable[(RCC->CFGR & RCC_CFGR_HPRE)>> RCC_CFGR_HPRE_Pos];
|
SystemCoreClock = HAL_RCC_GetSysClockFreq() >> AHBPrescTable[(RCC->CFGR & RCC_CFGR_HPRE) >> RCC_CFGR_HPRE_Pos];
|
||||||
|
|
||||||
/* Configure the source of time base considering new system clocks settings*/
|
/* Configure the source of time base considering new system clocks settings*/
|
||||||
HAL_InitTick (TICK_INT_PRIORITY);
|
HAL_InitTick(uwTickPrio);
|
||||||
|
|
||||||
return HAL_OK;
|
return HAL_OK;
|
||||||
}
|
}
|
||||||
|
@ -888,7 +909,7 @@ void HAL_RCC_MCOConfig(uint32_t RCC_MCOx, uint32_t RCC_MCOSource, uint32_t RCC_M
|
||||||
assert_param(IS_RCC_MCO(RCC_MCOx));
|
assert_param(IS_RCC_MCO(RCC_MCOx));
|
||||||
assert_param(IS_RCC_MCODIV(RCC_MCODiv));
|
assert_param(IS_RCC_MCODIV(RCC_MCODiv));
|
||||||
/* RCC_MCO1 */
|
/* RCC_MCO1 */
|
||||||
if(RCC_MCOx == RCC_MCO1)
|
if (RCC_MCOx == RCC_MCO1)
|
||||||
{
|
{
|
||||||
assert_param(IS_RCC_MCO1SOURCE(RCC_MCOSource));
|
assert_param(IS_RCC_MCO1SOURCE(RCC_MCOSource));
|
||||||
|
|
||||||
|
@ -990,7 +1011,7 @@ uint32_t HAL_RCC_GetSysClockFreq(void)
|
||||||
case RCC_SYSCLKSOURCE_STATUS_HSI: /* HSI used as system clock source */
|
case RCC_SYSCLKSOURCE_STATUS_HSI: /* HSI used as system clock source */
|
||||||
{
|
{
|
||||||
sysclockfreq = HSI_VALUE;
|
sysclockfreq = HSI_VALUE;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case RCC_SYSCLKSOURCE_STATUS_HSE: /* HSE used as system clock source */
|
case RCC_SYSCLKSOURCE_STATUS_HSE: /* HSE used as system clock source */
|
||||||
{
|
{
|
||||||
|
@ -1005,16 +1026,16 @@ uint32_t HAL_RCC_GetSysClockFreq(void)
|
||||||
if (__HAL_RCC_GET_PLL_OSCSOURCE() != RCC_PLLCFGR_PLLSRC_HSI)
|
if (__HAL_RCC_GET_PLL_OSCSOURCE() != RCC_PLLCFGR_PLLSRC_HSI)
|
||||||
{
|
{
|
||||||
/* HSE used as PLL clock source */
|
/* HSE used as PLL clock source */
|
||||||
pllvco = (uint32_t) ((((uint64_t) HSE_VALUE * ((uint64_t) ((RCC->PLLCFGR & RCC_PLLCFGR_PLLN) >> RCC_PLLCFGR_PLLN_Pos)))) / (uint64_t)pllm);
|
pllvco = (uint32_t)((((uint64_t) HSE_VALUE * ((uint64_t)((RCC->PLLCFGR & RCC_PLLCFGR_PLLN) >> RCC_PLLCFGR_PLLN_Pos)))) / (uint64_t)pllm);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
/* HSI used as PLL clock source */
|
/* HSI used as PLL clock source */
|
||||||
pllvco = (uint32_t) ((((uint64_t) HSI_VALUE * ((uint64_t) ((RCC->PLLCFGR & RCC_PLLCFGR_PLLN) >> RCC_PLLCFGR_PLLN_Pos)))) / (uint64_t)pllm);
|
pllvco = (uint32_t)((((uint64_t) HSI_VALUE * ((uint64_t)((RCC->PLLCFGR & RCC_PLLCFGR_PLLN) >> RCC_PLLCFGR_PLLN_Pos)))) / (uint64_t)pllm);
|
||||||
}
|
}
|
||||||
pllp = ((((RCC->PLLCFGR & RCC_PLLCFGR_PLLP) >> RCC_PLLCFGR_PLLP_Pos) + 1 ) *2);
|
pllp = ((((RCC->PLLCFGR & RCC_PLLCFGR_PLLP) >> RCC_PLLCFGR_PLLP_Pos) + 1) * 2);
|
||||||
|
|
||||||
sysclockfreq = pllvco/pllp;
|
sysclockfreq = pllvco / pllp;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
default:
|
default:
|
||||||
|
@ -1047,7 +1068,7 @@ uint32_t HAL_RCC_GetHCLKFreq(void)
|
||||||
uint32_t HAL_RCC_GetPCLK1Freq(void)
|
uint32_t HAL_RCC_GetPCLK1Freq(void)
|
||||||
{
|
{
|
||||||
/* Get HCLK source and Compute PCLK1 frequency ---------------------------*/
|
/* Get HCLK source and Compute PCLK1 frequency ---------------------------*/
|
||||||
return (HAL_RCC_GetHCLKFreq() >> APBPrescTable[(RCC->CFGR & RCC_CFGR_PPRE1)>> RCC_CFGR_PPRE1_Pos]);
|
return (HAL_RCC_GetHCLKFreq() >> APBPrescTable[(RCC->CFGR & RCC_CFGR_PPRE1) >> RCC_CFGR_PPRE1_Pos]);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -1059,7 +1080,7 @@ uint32_t HAL_RCC_GetPCLK1Freq(void)
|
||||||
uint32_t HAL_RCC_GetPCLK2Freq(void)
|
uint32_t HAL_RCC_GetPCLK2Freq(void)
|
||||||
{
|
{
|
||||||
/* Get HCLK source and Compute PCLK2 frequency ---------------------------*/
|
/* Get HCLK source and Compute PCLK2 frequency ---------------------------*/
|
||||||
return (HAL_RCC_GetHCLKFreq()>> APBPrescTable[(RCC->CFGR & RCC_CFGR_PPRE2)>> RCC_CFGR_PPRE2_Pos]);
|
return (HAL_RCC_GetHCLKFreq() >> APBPrescTable[(RCC->CFGR & RCC_CFGR_PPRE2) >> RCC_CFGR_PPRE2_Pos]);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -1075,11 +1096,11 @@ void HAL_RCC_GetOscConfig(RCC_OscInitTypeDef *RCC_OscInitStruct)
|
||||||
RCC_OscInitStruct->OscillatorType = RCC_OSCILLATORTYPE_HSE | RCC_OSCILLATORTYPE_HSI | RCC_OSCILLATORTYPE_LSE | RCC_OSCILLATORTYPE_LSI;
|
RCC_OscInitStruct->OscillatorType = RCC_OSCILLATORTYPE_HSE | RCC_OSCILLATORTYPE_HSI | RCC_OSCILLATORTYPE_LSE | RCC_OSCILLATORTYPE_LSI;
|
||||||
|
|
||||||
/* Get the HSE configuration -----------------------------------------------*/
|
/* Get the HSE configuration -----------------------------------------------*/
|
||||||
if((RCC->CR &RCC_CR_HSEBYP) == RCC_CR_HSEBYP)
|
if ((RCC->CR & RCC_CR_HSEBYP) == RCC_CR_HSEBYP)
|
||||||
{
|
{
|
||||||
RCC_OscInitStruct->HSEState = RCC_HSE_BYPASS;
|
RCC_OscInitStruct->HSEState = RCC_HSE_BYPASS;
|
||||||
}
|
}
|
||||||
else if((RCC->CR &RCC_CR_HSEON) == RCC_CR_HSEON)
|
else if ((RCC->CR & RCC_CR_HSEON) == RCC_CR_HSEON)
|
||||||
{
|
{
|
||||||
RCC_OscInitStruct->HSEState = RCC_HSE_ON;
|
RCC_OscInitStruct->HSEState = RCC_HSE_ON;
|
||||||
}
|
}
|
||||||
|
@ -1089,7 +1110,7 @@ void HAL_RCC_GetOscConfig(RCC_OscInitTypeDef *RCC_OscInitStruct)
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Get the HSI configuration -----------------------------------------------*/
|
/* Get the HSI configuration -----------------------------------------------*/
|
||||||
if((RCC->CR &RCC_CR_HSION) == RCC_CR_HSION)
|
if ((RCC->CR & RCC_CR_HSION) == RCC_CR_HSION)
|
||||||
{
|
{
|
||||||
RCC_OscInitStruct->HSIState = RCC_HSI_ON;
|
RCC_OscInitStruct->HSIState = RCC_HSI_ON;
|
||||||
}
|
}
|
||||||
|
@ -1098,14 +1119,14 @@ void HAL_RCC_GetOscConfig(RCC_OscInitTypeDef *RCC_OscInitStruct)
|
||||||
RCC_OscInitStruct->HSIState = RCC_HSI_OFF;
|
RCC_OscInitStruct->HSIState = RCC_HSI_OFF;
|
||||||
}
|
}
|
||||||
|
|
||||||
RCC_OscInitStruct->HSICalibrationValue = (uint32_t)((RCC->CR &RCC_CR_HSITRIM) >> RCC_CR_HSITRIM_Pos);
|
RCC_OscInitStruct->HSICalibrationValue = (uint32_t)((RCC->CR & RCC_CR_HSITRIM) >> RCC_CR_HSITRIM_Pos);
|
||||||
|
|
||||||
/* Get the LSE configuration -----------------------------------------------*/
|
/* Get the LSE configuration -----------------------------------------------*/
|
||||||
if((RCC->BDCR &RCC_BDCR_LSEBYP) == RCC_BDCR_LSEBYP)
|
if ((RCC->BDCR & RCC_BDCR_LSEBYP) == RCC_BDCR_LSEBYP)
|
||||||
{
|
{
|
||||||
RCC_OscInitStruct->LSEState = RCC_LSE_BYPASS;
|
RCC_OscInitStruct->LSEState = RCC_LSE_BYPASS;
|
||||||
}
|
}
|
||||||
else if((RCC->BDCR &RCC_BDCR_LSEON) == RCC_BDCR_LSEON)
|
else if ((RCC->BDCR & RCC_BDCR_LSEON) == RCC_BDCR_LSEON)
|
||||||
{
|
{
|
||||||
RCC_OscInitStruct->LSEState = RCC_LSE_ON;
|
RCC_OscInitStruct->LSEState = RCC_LSE_ON;
|
||||||
}
|
}
|
||||||
|
@ -1115,7 +1136,7 @@ void HAL_RCC_GetOscConfig(RCC_OscInitTypeDef *RCC_OscInitStruct)
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Get the LSI configuration -----------------------------------------------*/
|
/* Get the LSI configuration -----------------------------------------------*/
|
||||||
if((RCC->CSR &RCC_CSR_LSION) == RCC_CSR_LSION)
|
if ((RCC->CSR & RCC_CSR_LSION) == RCC_CSR_LSION)
|
||||||
{
|
{
|
||||||
RCC_OscInitStruct->LSIState = RCC_LSI_ON;
|
RCC_OscInitStruct->LSIState = RCC_LSI_ON;
|
||||||
}
|
}
|
||||||
|
@ -1125,7 +1146,7 @@ void HAL_RCC_GetOscConfig(RCC_OscInitTypeDef *RCC_OscInitStruct)
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Get the PLL configuration -----------------------------------------------*/
|
/* Get the PLL configuration -----------------------------------------------*/
|
||||||
if((RCC->CR &RCC_CR_PLLON) == RCC_CR_PLLON)
|
if ((RCC->CR & RCC_CR_PLLON) == RCC_CR_PLLON)
|
||||||
{
|
{
|
||||||
RCC_OscInitStruct->PLL.PLLState = RCC_PLL_ON;
|
RCC_OscInitStruct->PLL.PLLState = RCC_PLL_ON;
|
||||||
}
|
}
|
||||||
|
@ -1180,7 +1201,7 @@ void HAL_RCC_GetClockConfig(RCC_ClkInitTypeDef *RCC_ClkInitStruct, uint32_t *pF
|
||||||
void HAL_RCC_NMI_IRQHandler(void)
|
void HAL_RCC_NMI_IRQHandler(void)
|
||||||
{
|
{
|
||||||
/* Check RCC CSSF flag */
|
/* Check RCC CSSF flag */
|
||||||
if(__HAL_RCC_GET_IT(RCC_IT_CSS))
|
if (__HAL_RCC_GET_IT(RCC_IT_CSS))
|
||||||
{
|
{
|
||||||
/* RCC Clock Security System interrupt user callback */
|
/* RCC Clock Security System interrupt user callback */
|
||||||
HAL_RCC_CSSCallback();
|
HAL_RCC_CSSCallback();
|
||||||
|
|
|
@ -98,18 +98,22 @@
|
||||||
*** Callback registration ***
|
*** Callback registration ***
|
||||||
=============================================
|
=============================================
|
||||||
|
|
||||||
|
[..]
|
||||||
The compilation define USE_HAL_TIM_REGISTER_CALLBACKS when set to 1
|
The compilation define USE_HAL_TIM_REGISTER_CALLBACKS when set to 1
|
||||||
allows the user to configure dynamically the driver callbacks.
|
allows the user to configure dynamically the driver callbacks.
|
||||||
|
|
||||||
|
[..]
|
||||||
Use Function @ref HAL_TIM_RegisterCallback() to register a callback.
|
Use Function @ref HAL_TIM_RegisterCallback() to register a callback.
|
||||||
@ref HAL_TIM_RegisterCallback() takes as parameters the HAL peripheral handle,
|
@ref HAL_TIM_RegisterCallback() takes as parameters the HAL peripheral handle,
|
||||||
the Callback ID and a pointer to the user callback function.
|
the Callback ID and a pointer to the user callback function.
|
||||||
|
|
||||||
|
[..]
|
||||||
Use function @ref HAL_TIM_UnRegisterCallback() to reset a callback to the default
|
Use function @ref HAL_TIM_UnRegisterCallback() to reset a callback to the default
|
||||||
weak function.
|
weak function.
|
||||||
@ref HAL_TIM_UnRegisterCallback takes as parameters the HAL peripheral handle,
|
@ref HAL_TIM_UnRegisterCallback takes as parameters the HAL peripheral handle,
|
||||||
and the Callback ID.
|
and the Callback ID.
|
||||||
|
|
||||||
|
[..]
|
||||||
These functions allow to register/unregister following callbacks:
|
These functions allow to register/unregister following callbacks:
|
||||||
(+) Base_MspInitCallback : TIM Base Msp Init Callback.
|
(+) Base_MspInitCallback : TIM Base Msp Init Callback.
|
||||||
(+) Base_MspDeInitCallback : TIM Base Msp DeInit Callback.
|
(+) Base_MspDeInitCallback : TIM Base Msp DeInit Callback.
|
||||||
|
@ -140,15 +144,18 @@
|
||||||
(+) BreakCallback : TIM Break Callback.
|
(+) BreakCallback : TIM Break Callback.
|
||||||
(+) Break2Callback : TIM Break2 Callback.
|
(+) Break2Callback : TIM Break2 Callback.
|
||||||
|
|
||||||
|
[..]
|
||||||
By default, after the Init and when the state is HAL_TIM_STATE_RESET
|
By default, after the Init and when the state is HAL_TIM_STATE_RESET
|
||||||
all interrupt callbacks are set to the corresponding weak functions:
|
all interrupt callbacks are set to the corresponding weak functions:
|
||||||
examples @ref HAL_TIM_TriggerCallback(), @ref HAL_TIM_ErrorCallback().
|
examples @ref HAL_TIM_TriggerCallback(), @ref HAL_TIM_ErrorCallback().
|
||||||
|
|
||||||
|
[..]
|
||||||
Exception done for MspInit and MspDeInit functions that are reset to the legacy weak
|
Exception done for MspInit and MspDeInit functions that are reset to the legacy weak
|
||||||
functionalities in the Init / DeInit only when these callbacks are null
|
functionalities in the Init / DeInit only when these callbacks are null
|
||||||
(not registered beforehand). If not, MspInit or MspDeInit are not null, the Init / DeInit
|
(not registered beforehand). If not, MspInit or MspDeInit are not null, the Init / DeInit
|
||||||
keep and use the user MspInit / MspDeInit callbacks(registered beforehand)
|
keep and use the user MspInit / MspDeInit callbacks(registered beforehand)
|
||||||
|
|
||||||
|
[..]
|
||||||
Callbacks can be registered / unregistered in HAL_TIM_STATE_READY state only.
|
Callbacks can be registered / unregistered in HAL_TIM_STATE_READY state only.
|
||||||
Exception done MspInit / MspDeInit that can be registered / unregistered
|
Exception done MspInit / MspDeInit that can be registered / unregistered
|
||||||
in HAL_TIM_STATE_READY or HAL_TIM_STATE_RESET state,
|
in HAL_TIM_STATE_READY or HAL_TIM_STATE_RESET state,
|
||||||
|
@ -156,6 +163,7 @@ all interrupt callbacks are set to the corresponding weak functions:
|
||||||
In that case first register the MspInit/MspDeInit user callbacks
|
In that case first register the MspInit/MspDeInit user callbacks
|
||||||
using @ref HAL_TIM_RegisterCallback() before calling DeInit or Init function.
|
using @ref HAL_TIM_RegisterCallback() before calling DeInit or Init function.
|
||||||
|
|
||||||
|
[..]
|
||||||
When The compilation define USE_HAL_TIM_REGISTER_CALLBACKS is set to 0 or
|
When The compilation define USE_HAL_TIM_REGISTER_CALLBACKS is set to 0 or
|
||||||
not defined, the callback registration feature is not available and all callbacks
|
not defined, the callback registration feature is not available and all callbacks
|
||||||
are set to the corresponding weak functions.
|
are set to the corresponding weak functions.
|
||||||
|
@ -216,7 +224,7 @@ static void TIM_DMAPeriodElapsedHalfCplt(DMA_HandleTypeDef *hdma);
|
||||||
static void TIM_DMATriggerCplt(DMA_HandleTypeDef *hdma);
|
static void TIM_DMATriggerCplt(DMA_HandleTypeDef *hdma);
|
||||||
static void TIM_DMATriggerHalfCplt(DMA_HandleTypeDef *hdma);
|
static void TIM_DMATriggerHalfCplt(DMA_HandleTypeDef *hdma);
|
||||||
static HAL_StatusTypeDef TIM_SlaveTimer_SetConfig(TIM_HandleTypeDef *htim,
|
static HAL_StatusTypeDef TIM_SlaveTimer_SetConfig(TIM_HandleTypeDef *htim,
|
||||||
TIM_SlaveConfigTypeDef *sSlaveConfig);
|
TIM_SlaveConfigTypeDef *sSlaveConfig);
|
||||||
/**
|
/**
|
||||||
* @}
|
* @}
|
||||||
*/
|
*/
|
||||||
|
@ -227,8 +235,8 @@ static HAL_StatusTypeDef TIM_SlaveTimer_SetConfig(TIM_HandleTypeDef *htim,
|
||||||
*/
|
*/
|
||||||
|
|
||||||
/** @defgroup TIM_Exported_Functions_Group1 TIM Time Base functions
|
/** @defgroup TIM_Exported_Functions_Group1 TIM Time Base functions
|
||||||
* @brief Time Base functions
|
* @brief Time Base functions
|
||||||
*
|
*
|
||||||
@verbatim
|
@verbatim
|
||||||
==============================================================================
|
==============================================================================
|
||||||
##### Time Base functions #####
|
##### Time Base functions #####
|
||||||
|
@ -482,11 +490,11 @@ HAL_StatusTypeDef HAL_TIM_Base_Start_DMA(TIM_HandleTypeDef *htim, uint32_t *pDat
|
||||||
/* Check the parameters */
|
/* Check the parameters */
|
||||||
assert_param(IS_TIM_DMA_INSTANCE(htim->Instance));
|
assert_param(IS_TIM_DMA_INSTANCE(htim->Instance));
|
||||||
|
|
||||||
if ((htim->State == HAL_TIM_STATE_BUSY))
|
if (htim->State == HAL_TIM_STATE_BUSY)
|
||||||
{
|
{
|
||||||
return HAL_BUSY;
|
return HAL_BUSY;
|
||||||
}
|
}
|
||||||
else if ((htim->State == HAL_TIM_STATE_READY))
|
else if (htim->State == HAL_TIM_STATE_READY)
|
||||||
{
|
{
|
||||||
if ((pData == NULL) && (Length > 0U))
|
if ((pData == NULL) && (Length > 0U))
|
||||||
{
|
{
|
||||||
|
@ -559,8 +567,8 @@ HAL_StatusTypeDef HAL_TIM_Base_Stop_DMA(TIM_HandleTypeDef *htim)
|
||||||
*/
|
*/
|
||||||
|
|
||||||
/** @defgroup TIM_Exported_Functions_Group2 TIM Output Compare functions
|
/** @defgroup TIM_Exported_Functions_Group2 TIM Output Compare functions
|
||||||
* @brief TIM Output Compare functions
|
* @brief TIM Output Compare functions
|
||||||
*
|
*
|
||||||
@verbatim
|
@verbatim
|
||||||
==============================================================================
|
==============================================================================
|
||||||
##### TIM Output Compare functions #####
|
##### TIM Output Compare functions #####
|
||||||
|
@ -929,16 +937,16 @@ HAL_StatusTypeDef HAL_TIM_OC_Stop_IT(TIM_HandleTypeDef *htim, uint32_t Channel)
|
||||||
*/
|
*/
|
||||||
HAL_StatusTypeDef HAL_TIM_OC_Start_DMA(TIM_HandleTypeDef *htim, uint32_t Channel, uint32_t *pData, uint16_t Length)
|
HAL_StatusTypeDef HAL_TIM_OC_Start_DMA(TIM_HandleTypeDef *htim, uint32_t Channel, uint32_t *pData, uint16_t Length)
|
||||||
{
|
{
|
||||||
uint32_t tmpsmcr;
|
uint32_t tmpsmcr;
|
||||||
|
|
||||||
/* Check the parameters */
|
/* Check the parameters */
|
||||||
assert_param(IS_TIM_CCX_INSTANCE(htim->Instance, Channel));
|
assert_param(IS_TIM_CCX_INSTANCE(htim->Instance, Channel));
|
||||||
|
|
||||||
if ((htim->State == HAL_TIM_STATE_BUSY))
|
if (htim->State == HAL_TIM_STATE_BUSY)
|
||||||
{
|
{
|
||||||
return HAL_BUSY;
|
return HAL_BUSY;
|
||||||
}
|
}
|
||||||
else if ((htim->State == HAL_TIM_STATE_READY))
|
else if (htim->State == HAL_TIM_STATE_READY)
|
||||||
{
|
{
|
||||||
if ((pData == NULL) && (Length > 0U))
|
if ((pData == NULL) && (Length > 0U))
|
||||||
{
|
{
|
||||||
|
@ -1136,8 +1144,8 @@ HAL_StatusTypeDef HAL_TIM_OC_Stop_DMA(TIM_HandleTypeDef *htim, uint32_t Channel)
|
||||||
*/
|
*/
|
||||||
|
|
||||||
/** @defgroup TIM_Exported_Functions_Group3 TIM PWM functions
|
/** @defgroup TIM_Exported_Functions_Group3 TIM PWM functions
|
||||||
* @brief TIM PWM functions
|
* @brief TIM PWM functions
|
||||||
*
|
*
|
||||||
@verbatim
|
@verbatim
|
||||||
==============================================================================
|
==============================================================================
|
||||||
##### TIM PWM functions #####
|
##### TIM PWM functions #####
|
||||||
|
@ -1513,11 +1521,11 @@ HAL_StatusTypeDef HAL_TIM_PWM_Start_DMA(TIM_HandleTypeDef *htim, uint32_t Channe
|
||||||
/* Check the parameters */
|
/* Check the parameters */
|
||||||
assert_param(IS_TIM_CCX_INSTANCE(htim->Instance, Channel));
|
assert_param(IS_TIM_CCX_INSTANCE(htim->Instance, Channel));
|
||||||
|
|
||||||
if ((htim->State == HAL_TIM_STATE_BUSY))
|
if (htim->State == HAL_TIM_STATE_BUSY)
|
||||||
{
|
{
|
||||||
return HAL_BUSY;
|
return HAL_BUSY;
|
||||||
}
|
}
|
||||||
else if ((htim->State == HAL_TIM_STATE_READY))
|
else if (htim->State == HAL_TIM_STATE_READY)
|
||||||
{
|
{
|
||||||
if ((pData == NULL) && (Length > 0U))
|
if ((pData == NULL) && (Length > 0U))
|
||||||
{
|
{
|
||||||
|
@ -1714,8 +1722,8 @@ HAL_StatusTypeDef HAL_TIM_PWM_Stop_DMA(TIM_HandleTypeDef *htim, uint32_t Channel
|
||||||
*/
|
*/
|
||||||
|
|
||||||
/** @defgroup TIM_Exported_Functions_Group4 TIM Input Capture functions
|
/** @defgroup TIM_Exported_Functions_Group4 TIM Input Capture functions
|
||||||
* @brief TIM Input Capture functions
|
* @brief TIM Input Capture functions
|
||||||
*
|
*
|
||||||
@verbatim
|
@verbatim
|
||||||
==============================================================================
|
==============================================================================
|
||||||
##### TIM Input Capture functions #####
|
##### TIM Input Capture functions #####
|
||||||
|
@ -2061,11 +2069,11 @@ HAL_StatusTypeDef HAL_TIM_IC_Start_DMA(TIM_HandleTypeDef *htim, uint32_t Channel
|
||||||
assert_param(IS_TIM_CCX_INSTANCE(htim->Instance, Channel));
|
assert_param(IS_TIM_CCX_INSTANCE(htim->Instance, Channel));
|
||||||
assert_param(IS_TIM_DMA_CC_INSTANCE(htim->Instance));
|
assert_param(IS_TIM_DMA_CC_INSTANCE(htim->Instance));
|
||||||
|
|
||||||
if ((htim->State == HAL_TIM_STATE_BUSY))
|
if (htim->State == HAL_TIM_STATE_BUSY)
|
||||||
{
|
{
|
||||||
return HAL_BUSY;
|
return HAL_BUSY;
|
||||||
}
|
}
|
||||||
else if ((htim->State == HAL_TIM_STATE_READY))
|
else if (htim->State == HAL_TIM_STATE_READY)
|
||||||
{
|
{
|
||||||
if ((pData == NULL) && (Length > 0U))
|
if ((pData == NULL) && (Length > 0U))
|
||||||
{
|
{
|
||||||
|
@ -2249,8 +2257,8 @@ HAL_StatusTypeDef HAL_TIM_IC_Stop_DMA(TIM_HandleTypeDef *htim, uint32_t Channel)
|
||||||
*/
|
*/
|
||||||
|
|
||||||
/** @defgroup TIM_Exported_Functions_Group5 TIM One Pulse functions
|
/** @defgroup TIM_Exported_Functions_Group5 TIM One Pulse functions
|
||||||
* @brief TIM One Pulse functions
|
* @brief TIM One Pulse functions
|
||||||
*
|
*
|
||||||
@verbatim
|
@verbatim
|
||||||
==============================================================================
|
==============================================================================
|
||||||
##### TIM One Pulse functions #####
|
##### TIM One Pulse functions #####
|
||||||
|
@ -2563,8 +2571,8 @@ HAL_StatusTypeDef HAL_TIM_OnePulse_Stop_IT(TIM_HandleTypeDef *htim, uint32_t Out
|
||||||
*/
|
*/
|
||||||
|
|
||||||
/** @defgroup TIM_Exported_Functions_Group6 TIM Encoder functions
|
/** @defgroup TIM_Exported_Functions_Group6 TIM Encoder functions
|
||||||
* @brief TIM Encoder functions
|
* @brief TIM Encoder functions
|
||||||
*
|
*
|
||||||
@verbatim
|
@verbatim
|
||||||
==============================================================================
|
==============================================================================
|
||||||
##### TIM Encoder functions #####
|
##### TIM Encoder functions #####
|
||||||
|
@ -2609,15 +2617,15 @@ HAL_StatusTypeDef HAL_TIM_Encoder_Init(TIM_HandleTypeDef *htim, TIM_Encoder_Ini
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Check the parameters */
|
/* Check the parameters */
|
||||||
|
assert_param(IS_TIM_ENCODER_INTERFACE_INSTANCE(htim->Instance));
|
||||||
assert_param(IS_TIM_COUNTER_MODE(htim->Init.CounterMode));
|
assert_param(IS_TIM_COUNTER_MODE(htim->Init.CounterMode));
|
||||||
assert_param(IS_TIM_CLOCKDIVISION_DIV(htim->Init.ClockDivision));
|
assert_param(IS_TIM_CLOCKDIVISION_DIV(htim->Init.ClockDivision));
|
||||||
assert_param(IS_TIM_AUTORELOAD_PRELOAD(htim->Init.AutoReloadPreload));
|
assert_param(IS_TIM_AUTORELOAD_PRELOAD(htim->Init.AutoReloadPreload));
|
||||||
assert_param(IS_TIM_CC2_INSTANCE(htim->Instance));
|
|
||||||
assert_param(IS_TIM_ENCODER_MODE(sConfig->EncoderMode));
|
assert_param(IS_TIM_ENCODER_MODE(sConfig->EncoderMode));
|
||||||
assert_param(IS_TIM_IC_SELECTION(sConfig->IC1Selection));
|
assert_param(IS_TIM_IC_SELECTION(sConfig->IC1Selection));
|
||||||
assert_param(IS_TIM_IC_SELECTION(sConfig->IC2Selection));
|
assert_param(IS_TIM_IC_SELECTION(sConfig->IC2Selection));
|
||||||
assert_param(IS_TIM_IC_POLARITY(sConfig->IC1Polarity));
|
assert_param(IS_TIM_ENCODERINPUT_POLARITY(sConfig->IC1Polarity));
|
||||||
assert_param(IS_TIM_IC_POLARITY(sConfig->IC2Polarity));
|
assert_param(IS_TIM_ENCODERINPUT_POLARITY(sConfig->IC2Polarity));
|
||||||
assert_param(IS_TIM_IC_PRESCALER(sConfig->IC1Prescaler));
|
assert_param(IS_TIM_IC_PRESCALER(sConfig->IC1Prescaler));
|
||||||
assert_param(IS_TIM_IC_PRESCALER(sConfig->IC2Prescaler));
|
assert_param(IS_TIM_IC_PRESCALER(sConfig->IC2Prescaler));
|
||||||
assert_param(IS_TIM_IC_FILTER(sConfig->IC1Filter));
|
assert_param(IS_TIM_IC_FILTER(sConfig->IC1Filter));
|
||||||
|
@ -2775,7 +2783,7 @@ __weak void HAL_TIM_Encoder_MspDeInit(TIM_HandleTypeDef *htim)
|
||||||
HAL_StatusTypeDef HAL_TIM_Encoder_Start(TIM_HandleTypeDef *htim, uint32_t Channel)
|
HAL_StatusTypeDef HAL_TIM_Encoder_Start(TIM_HandleTypeDef *htim, uint32_t Channel)
|
||||||
{
|
{
|
||||||
/* Check the parameters */
|
/* Check the parameters */
|
||||||
assert_param(IS_TIM_CC2_INSTANCE(htim->Instance));
|
assert_param(IS_TIM_ENCODER_INTERFACE_INSTANCE(htim->Instance));
|
||||||
|
|
||||||
/* Enable the encoder interface channels */
|
/* Enable the encoder interface channels */
|
||||||
switch (Channel)
|
switch (Channel)
|
||||||
|
@ -2819,7 +2827,7 @@ HAL_StatusTypeDef HAL_TIM_Encoder_Start(TIM_HandleTypeDef *htim, uint32_t Channe
|
||||||
HAL_StatusTypeDef HAL_TIM_Encoder_Stop(TIM_HandleTypeDef *htim, uint32_t Channel)
|
HAL_StatusTypeDef HAL_TIM_Encoder_Stop(TIM_HandleTypeDef *htim, uint32_t Channel)
|
||||||
{
|
{
|
||||||
/* Check the parameters */
|
/* Check the parameters */
|
||||||
assert_param(IS_TIM_CC2_INSTANCE(htim->Instance));
|
assert_param(IS_TIM_ENCODER_INTERFACE_INSTANCE(htim->Instance));
|
||||||
|
|
||||||
/* Disable the Input Capture channels 1 and 2
|
/* Disable the Input Capture channels 1 and 2
|
||||||
(in the EncoderInterface the two possible channels that can be used are TIM_CHANNEL_1 and TIM_CHANNEL_2) */
|
(in the EncoderInterface the two possible channels that can be used are TIM_CHANNEL_1 and TIM_CHANNEL_2) */
|
||||||
|
@ -2865,7 +2873,7 @@ HAL_StatusTypeDef HAL_TIM_Encoder_Stop(TIM_HandleTypeDef *htim, uint32_t Channel
|
||||||
HAL_StatusTypeDef HAL_TIM_Encoder_Start_IT(TIM_HandleTypeDef *htim, uint32_t Channel)
|
HAL_StatusTypeDef HAL_TIM_Encoder_Start_IT(TIM_HandleTypeDef *htim, uint32_t Channel)
|
||||||
{
|
{
|
||||||
/* Check the parameters */
|
/* Check the parameters */
|
||||||
assert_param(IS_TIM_CC2_INSTANCE(htim->Instance));
|
assert_param(IS_TIM_ENCODER_INTERFACE_INSTANCE(htim->Instance));
|
||||||
|
|
||||||
/* Enable the encoder interface channels */
|
/* Enable the encoder interface channels */
|
||||||
/* Enable the capture compare Interrupts 1 and/or 2 */
|
/* Enable the capture compare Interrupts 1 and/or 2 */
|
||||||
|
@ -2915,7 +2923,7 @@ HAL_StatusTypeDef HAL_TIM_Encoder_Start_IT(TIM_HandleTypeDef *htim, uint32_t Cha
|
||||||
HAL_StatusTypeDef HAL_TIM_Encoder_Stop_IT(TIM_HandleTypeDef *htim, uint32_t Channel)
|
HAL_StatusTypeDef HAL_TIM_Encoder_Stop_IT(TIM_HandleTypeDef *htim, uint32_t Channel)
|
||||||
{
|
{
|
||||||
/* Check the parameters */
|
/* Check the parameters */
|
||||||
assert_param(IS_TIM_CC2_INSTANCE(htim->Instance));
|
assert_param(IS_TIM_ENCODER_INTERFACE_INSTANCE(htim->Instance));
|
||||||
|
|
||||||
/* Disable the Input Capture channels 1 and 2
|
/* Disable the Input Capture channels 1 and 2
|
||||||
(in the EncoderInterface the two possible channels that can be used are TIM_CHANNEL_1 and TIM_CHANNEL_2) */
|
(in the EncoderInterface the two possible channels that can be used are TIM_CHANNEL_1 and TIM_CHANNEL_2) */
|
||||||
|
@ -2966,16 +2974,17 @@ HAL_StatusTypeDef HAL_TIM_Encoder_Stop_IT(TIM_HandleTypeDef *htim, uint32_t Chan
|
||||||
* @param Length The length of data to be transferred from TIM peripheral to memory.
|
* @param Length The length of data to be transferred from TIM peripheral to memory.
|
||||||
* @retval HAL status
|
* @retval HAL status
|
||||||
*/
|
*/
|
||||||
HAL_StatusTypeDef HAL_TIM_Encoder_Start_DMA(TIM_HandleTypeDef *htim, uint32_t Channel, uint32_t *pData1, uint32_t *pData2, uint16_t Length)
|
HAL_StatusTypeDef HAL_TIM_Encoder_Start_DMA(TIM_HandleTypeDef *htim, uint32_t Channel, uint32_t *pData1,
|
||||||
|
uint32_t *pData2, uint16_t Length)
|
||||||
{
|
{
|
||||||
/* Check the parameters */
|
/* Check the parameters */
|
||||||
assert_param(IS_TIM_DMA_CC_INSTANCE(htim->Instance));
|
assert_param(IS_TIM_ENCODER_INTERFACE_INSTANCE(htim->Instance));
|
||||||
|
|
||||||
if ((htim->State == HAL_TIM_STATE_BUSY))
|
if (htim->State == HAL_TIM_STATE_BUSY)
|
||||||
{
|
{
|
||||||
return HAL_BUSY;
|
return HAL_BUSY;
|
||||||
}
|
}
|
||||||
else if ((htim->State == HAL_TIM_STATE_READY))
|
else if (htim->State == HAL_TIM_STATE_READY)
|
||||||
{
|
{
|
||||||
if ((((pData1 == NULL) || (pData2 == NULL))) && (Length > 0U))
|
if ((((pData1 == NULL) || (pData2 == NULL))) && (Length > 0U))
|
||||||
{
|
{
|
||||||
|
@ -3103,7 +3112,7 @@ HAL_StatusTypeDef HAL_TIM_Encoder_Start_DMA(TIM_HandleTypeDef *htim, uint32_t Ch
|
||||||
HAL_StatusTypeDef HAL_TIM_Encoder_Stop_DMA(TIM_HandleTypeDef *htim, uint32_t Channel)
|
HAL_StatusTypeDef HAL_TIM_Encoder_Stop_DMA(TIM_HandleTypeDef *htim, uint32_t Channel)
|
||||||
{
|
{
|
||||||
/* Check the parameters */
|
/* Check the parameters */
|
||||||
assert_param(IS_TIM_DMA_CC_INSTANCE(htim->Instance));
|
assert_param(IS_TIM_ENCODER_INTERFACE_INSTANCE(htim->Instance));
|
||||||
|
|
||||||
/* Disable the Input Capture channels 1 and 2
|
/* Disable the Input Capture channels 1 and 2
|
||||||
(in the EncoderInterface the two possible channels that can be used are TIM_CHANNEL_1 and TIM_CHANNEL_2) */
|
(in the EncoderInterface the two possible channels that can be used are TIM_CHANNEL_1 and TIM_CHANNEL_2) */
|
||||||
|
@ -3149,8 +3158,8 @@ HAL_StatusTypeDef HAL_TIM_Encoder_Stop_DMA(TIM_HandleTypeDef *htim, uint32_t Cha
|
||||||
* @}
|
* @}
|
||||||
*/
|
*/
|
||||||
/** @defgroup TIM_Exported_Functions_Group7 TIM IRQ handler management
|
/** @defgroup TIM_Exported_Functions_Group7 TIM IRQ handler management
|
||||||
* @brief TIM IRQ handler management
|
* @brief TIM IRQ handler management
|
||||||
*
|
*
|
||||||
@verbatim
|
@verbatim
|
||||||
==============================================================================
|
==============================================================================
|
||||||
##### IRQ handler management #####
|
##### IRQ handler management #####
|
||||||
|
@ -3363,8 +3372,8 @@ void HAL_TIM_IRQHandler(TIM_HandleTypeDef *htim)
|
||||||
*/
|
*/
|
||||||
|
|
||||||
/** @defgroup TIM_Exported_Functions_Group8 TIM Peripheral Control functions
|
/** @defgroup TIM_Exported_Functions_Group8 TIM Peripheral Control functions
|
||||||
* @brief TIM Peripheral Control functions
|
* @brief TIM Peripheral Control functions
|
||||||
*
|
*
|
||||||
@verbatim
|
@verbatim
|
||||||
==============================================================================
|
==============================================================================
|
||||||
##### Peripheral Control functions #####
|
##### Peripheral Control functions #####
|
||||||
|
@ -3738,9 +3747,14 @@ HAL_StatusTypeDef HAL_TIM_PWM_ConfigChannel(TIM_HandleTypeDef *htim,
|
||||||
* This parameter can be one of the following values:
|
* This parameter can be one of the following values:
|
||||||
* @arg TIM_CHANNEL_1: TIM Channel 1 selected
|
* @arg TIM_CHANNEL_1: TIM Channel 1 selected
|
||||||
* @arg TIM_CHANNEL_2: TIM Channel 2 selected
|
* @arg TIM_CHANNEL_2: TIM Channel 2 selected
|
||||||
|
* @note To output a waveform with a minimum delay user can enable the fast
|
||||||
|
* mode by calling the @ref __HAL_TIM_ENABLE_OCxFAST macro. Then CCx
|
||||||
|
* output is forced in response to the edge detection on TIx input,
|
||||||
|
* without taking in account the comparison.
|
||||||
* @retval HAL status
|
* @retval HAL status
|
||||||
*/
|
*/
|
||||||
HAL_StatusTypeDef HAL_TIM_OnePulse_ConfigChannel(TIM_HandleTypeDef *htim, TIM_OnePulse_InitTypeDef *sConfig, uint32_t OutputChannel, uint32_t InputChannel)
|
HAL_StatusTypeDef HAL_TIM_OnePulse_ConfigChannel(TIM_HandleTypeDef *htim, TIM_OnePulse_InitTypeDef *sConfig,
|
||||||
|
uint32_t OutputChannel, uint32_t InputChannel)
|
||||||
{
|
{
|
||||||
TIM_OC_InitTypeDef temp1;
|
TIM_OC_InitTypeDef temp1;
|
||||||
|
|
||||||
|
@ -3894,11 +3908,11 @@ HAL_StatusTypeDef HAL_TIM_DMABurst_WriteStart(TIM_HandleTypeDef *htim, uint32_t
|
||||||
assert_param(IS_TIM_DMA_SOURCE(BurstRequestSrc));
|
assert_param(IS_TIM_DMA_SOURCE(BurstRequestSrc));
|
||||||
assert_param(IS_TIM_DMA_LENGTH(BurstLength));
|
assert_param(IS_TIM_DMA_LENGTH(BurstLength));
|
||||||
|
|
||||||
if ((htim->State == HAL_TIM_STATE_BUSY))
|
if (htim->State == HAL_TIM_STATE_BUSY)
|
||||||
{
|
{
|
||||||
return HAL_BUSY;
|
return HAL_BUSY;
|
||||||
}
|
}
|
||||||
else if ((htim->State == HAL_TIM_STATE_READY))
|
else if (htim->State == HAL_TIM_STATE_READY)
|
||||||
{
|
{
|
||||||
if ((BurstBuffer == NULL) && (BurstLength > 0U))
|
if ((BurstBuffer == NULL) && (BurstLength > 0U))
|
||||||
{
|
{
|
||||||
|
@ -3941,7 +3955,8 @@ HAL_StatusTypeDef HAL_TIM_DMABurst_WriteStart(TIM_HandleTypeDef *htim, uint32_t
|
||||||
htim->hdma[TIM_DMA_ID_CC1]->XferErrorCallback = TIM_DMAError ;
|
htim->hdma[TIM_DMA_ID_CC1]->XferErrorCallback = TIM_DMAError ;
|
||||||
|
|
||||||
/* Enable the DMA stream */
|
/* Enable the DMA stream */
|
||||||
if (HAL_DMA_Start_IT(htim->hdma[TIM_DMA_ID_CC1], (uint32_t)BurstBuffer, (uint32_t)&htim->Instance->DMAR, ((BurstLength) >> 8U) + 1U) != HAL_OK)
|
if (HAL_DMA_Start_IT(htim->hdma[TIM_DMA_ID_CC1], (uint32_t)BurstBuffer,
|
||||||
|
(uint32_t)&htim->Instance->DMAR, ((BurstLength) >> 8U) + 1U) != HAL_OK)
|
||||||
{
|
{
|
||||||
return HAL_ERROR;
|
return HAL_ERROR;
|
||||||
}
|
}
|
||||||
|
@ -3957,7 +3972,8 @@ HAL_StatusTypeDef HAL_TIM_DMABurst_WriteStart(TIM_HandleTypeDef *htim, uint32_t
|
||||||
htim->hdma[TIM_DMA_ID_CC2]->XferErrorCallback = TIM_DMAError ;
|
htim->hdma[TIM_DMA_ID_CC2]->XferErrorCallback = TIM_DMAError ;
|
||||||
|
|
||||||
/* Enable the DMA stream */
|
/* Enable the DMA stream */
|
||||||
if (HAL_DMA_Start_IT(htim->hdma[TIM_DMA_ID_CC2], (uint32_t)BurstBuffer, (uint32_t)&htim->Instance->DMAR, ((BurstLength) >> 8U) + 1U) != HAL_OK)
|
if (HAL_DMA_Start_IT(htim->hdma[TIM_DMA_ID_CC2], (uint32_t)BurstBuffer,
|
||||||
|
(uint32_t)&htim->Instance->DMAR, ((BurstLength) >> 8U) + 1U) != HAL_OK)
|
||||||
{
|
{
|
||||||
return HAL_ERROR;
|
return HAL_ERROR;
|
||||||
}
|
}
|
||||||
|
@ -3973,7 +3989,8 @@ HAL_StatusTypeDef HAL_TIM_DMABurst_WriteStart(TIM_HandleTypeDef *htim, uint32_t
|
||||||
htim->hdma[TIM_DMA_ID_CC3]->XferErrorCallback = TIM_DMAError ;
|
htim->hdma[TIM_DMA_ID_CC3]->XferErrorCallback = TIM_DMAError ;
|
||||||
|
|
||||||
/* Enable the DMA stream */
|
/* Enable the DMA stream */
|
||||||
if (HAL_DMA_Start_IT(htim->hdma[TIM_DMA_ID_CC3], (uint32_t)BurstBuffer, (uint32_t)&htim->Instance->DMAR, ((BurstLength) >> 8U) + 1U) != HAL_OK)
|
if (HAL_DMA_Start_IT(htim->hdma[TIM_DMA_ID_CC3], (uint32_t)BurstBuffer,
|
||||||
|
(uint32_t)&htim->Instance->DMAR, ((BurstLength) >> 8U) + 1U) != HAL_OK)
|
||||||
{
|
{
|
||||||
return HAL_ERROR;
|
return HAL_ERROR;
|
||||||
}
|
}
|
||||||
|
@ -3989,7 +4006,8 @@ HAL_StatusTypeDef HAL_TIM_DMABurst_WriteStart(TIM_HandleTypeDef *htim, uint32_t
|
||||||
htim->hdma[TIM_DMA_ID_CC4]->XferErrorCallback = TIM_DMAError ;
|
htim->hdma[TIM_DMA_ID_CC4]->XferErrorCallback = TIM_DMAError ;
|
||||||
|
|
||||||
/* Enable the DMA stream */
|
/* Enable the DMA stream */
|
||||||
if (HAL_DMA_Start_IT(htim->hdma[TIM_DMA_ID_CC4], (uint32_t)BurstBuffer, (uint32_t)&htim->Instance->DMAR, ((BurstLength) >> 8U) + 1U) != HAL_OK)
|
if (HAL_DMA_Start_IT(htim->hdma[TIM_DMA_ID_CC4], (uint32_t)BurstBuffer,
|
||||||
|
(uint32_t)&htim->Instance->DMAR, ((BurstLength) >> 8U) + 1U) != HAL_OK)
|
||||||
{
|
{
|
||||||
return HAL_ERROR;
|
return HAL_ERROR;
|
||||||
}
|
}
|
||||||
|
@ -4005,7 +4023,8 @@ HAL_StatusTypeDef HAL_TIM_DMABurst_WriteStart(TIM_HandleTypeDef *htim, uint32_t
|
||||||
htim->hdma[TIM_DMA_ID_COMMUTATION]->XferErrorCallback = TIM_DMAError ;
|
htim->hdma[TIM_DMA_ID_COMMUTATION]->XferErrorCallback = TIM_DMAError ;
|
||||||
|
|
||||||
/* Enable the DMA stream */
|
/* Enable the DMA stream */
|
||||||
if (HAL_DMA_Start_IT(htim->hdma[TIM_DMA_ID_COMMUTATION], (uint32_t)BurstBuffer, (uint32_t)&htim->Instance->DMAR, ((BurstLength) >> 8U) + 1U) != HAL_OK)
|
if (HAL_DMA_Start_IT(htim->hdma[TIM_DMA_ID_COMMUTATION], (uint32_t)BurstBuffer,
|
||||||
|
(uint32_t)&htim->Instance->DMAR, ((BurstLength) >> 8U) + 1U) != HAL_OK)
|
||||||
{
|
{
|
||||||
return HAL_ERROR;
|
return HAL_ERROR;
|
||||||
}
|
}
|
||||||
|
@ -4021,7 +4040,8 @@ HAL_StatusTypeDef HAL_TIM_DMABurst_WriteStart(TIM_HandleTypeDef *htim, uint32_t
|
||||||
htim->hdma[TIM_DMA_ID_TRIGGER]->XferErrorCallback = TIM_DMAError ;
|
htim->hdma[TIM_DMA_ID_TRIGGER]->XferErrorCallback = TIM_DMAError ;
|
||||||
|
|
||||||
/* Enable the DMA stream */
|
/* Enable the DMA stream */
|
||||||
if (HAL_DMA_Start_IT(htim->hdma[TIM_DMA_ID_TRIGGER], (uint32_t)BurstBuffer, (uint32_t)&htim->Instance->DMAR, ((BurstLength) >> 8U) + 1U) != HAL_OK)
|
if (HAL_DMA_Start_IT(htim->hdma[TIM_DMA_ID_TRIGGER], (uint32_t)BurstBuffer,
|
||||||
|
(uint32_t)&htim->Instance->DMAR, ((BurstLength) >> 8U) + 1U) != HAL_OK)
|
||||||
{
|
{
|
||||||
return HAL_ERROR;
|
return HAL_ERROR;
|
||||||
}
|
}
|
||||||
|
@ -4151,8 +4171,8 @@ HAL_StatusTypeDef HAL_TIM_DMABurst_WriteStop(TIM_HandleTypeDef *htim, uint32_t B
|
||||||
* @note This function should be used only when BurstLength is equal to DMA data transfer length.
|
* @note This function should be used only when BurstLength is equal to DMA data transfer length.
|
||||||
* @retval HAL status
|
* @retval HAL status
|
||||||
*/
|
*/
|
||||||
HAL_StatusTypeDef HAL_TIM_DMABurst_ReadStart(TIM_HandleTypeDef *htim, uint32_t BurstBaseAddress, uint32_t BurstRequestSrc,
|
HAL_StatusTypeDef HAL_TIM_DMABurst_ReadStart(TIM_HandleTypeDef *htim, uint32_t BurstBaseAddress,
|
||||||
uint32_t *BurstBuffer, uint32_t BurstLength)
|
uint32_t BurstRequestSrc, uint32_t *BurstBuffer, uint32_t BurstLength)
|
||||||
{
|
{
|
||||||
/* Check the parameters */
|
/* Check the parameters */
|
||||||
assert_param(IS_TIM_DMABURST_INSTANCE(htim->Instance));
|
assert_param(IS_TIM_DMABURST_INSTANCE(htim->Instance));
|
||||||
|
@ -4160,11 +4180,11 @@ HAL_StatusTypeDef HAL_TIM_DMABurst_ReadStart(TIM_HandleTypeDef *htim, uint32_t B
|
||||||
assert_param(IS_TIM_DMA_SOURCE(BurstRequestSrc));
|
assert_param(IS_TIM_DMA_SOURCE(BurstRequestSrc));
|
||||||
assert_param(IS_TIM_DMA_LENGTH(BurstLength));
|
assert_param(IS_TIM_DMA_LENGTH(BurstLength));
|
||||||
|
|
||||||
if ((htim->State == HAL_TIM_STATE_BUSY))
|
if (htim->State == HAL_TIM_STATE_BUSY)
|
||||||
{
|
{
|
||||||
return HAL_BUSY;
|
return HAL_BUSY;
|
||||||
}
|
}
|
||||||
else if ((htim->State == HAL_TIM_STATE_READY))
|
else if (htim->State == HAL_TIM_STATE_READY)
|
||||||
{
|
{
|
||||||
if ((BurstBuffer == NULL) && (BurstLength > 0U))
|
if ((BurstBuffer == NULL) && (BurstLength > 0U))
|
||||||
{
|
{
|
||||||
|
@ -4465,7 +4485,7 @@ HAL_StatusTypeDef HAL_TIM_ConfigOCrefClear(TIM_HandleTypeDef *htim,
|
||||||
/* When OCRef clear feature is used with ETR source, ETR prescaler must be off */
|
/* When OCRef clear feature is used with ETR source, ETR prescaler must be off */
|
||||||
if (sClearInputConfig->ClearInputPrescaler != TIM_CLEARINPUTPRESCALER_DIV1)
|
if (sClearInputConfig->ClearInputPrescaler != TIM_CLEARINPUTPRESCALER_DIV1)
|
||||||
{
|
{
|
||||||
htim->State = HAL_TIM_STATE_READY;
|
htim->State = HAL_TIM_STATE_READY;
|
||||||
__HAL_UNLOCK(htim);
|
__HAL_UNLOCK(htim);
|
||||||
return HAL_ERROR;
|
return HAL_ERROR;
|
||||||
}
|
}
|
||||||
|
@ -4780,9 +4800,9 @@ HAL_StatusTypeDef HAL_TIM_SlaveConfigSynchro(TIM_HandleTypeDef *htim, TIM_SlaveC
|
||||||
|
|
||||||
htim->State = HAL_TIM_STATE_BUSY;
|
htim->State = HAL_TIM_STATE_BUSY;
|
||||||
|
|
||||||
if(TIM_SlaveTimer_SetConfig(htim, sSlaveConfig) != HAL_OK)
|
if (TIM_SlaveTimer_SetConfig(htim, sSlaveConfig) != HAL_OK)
|
||||||
{
|
{
|
||||||
htim->State = HAL_TIM_STATE_READY;
|
htim->State = HAL_TIM_STATE_READY;
|
||||||
__HAL_UNLOCK(htim);
|
__HAL_UNLOCK(htim);
|
||||||
return HAL_ERROR;
|
return HAL_ERROR;
|
||||||
}
|
}
|
||||||
|
@ -4810,7 +4830,7 @@ HAL_StatusTypeDef HAL_TIM_SlaveConfigSynchro(TIM_HandleTypeDef *htim, TIM_SlaveC
|
||||||
* @retval HAL status
|
* @retval HAL status
|
||||||
*/
|
*/
|
||||||
HAL_StatusTypeDef HAL_TIM_SlaveConfigSynchro_IT(TIM_HandleTypeDef *htim,
|
HAL_StatusTypeDef HAL_TIM_SlaveConfigSynchro_IT(TIM_HandleTypeDef *htim,
|
||||||
TIM_SlaveConfigTypeDef *sSlaveConfig)
|
TIM_SlaveConfigTypeDef *sSlaveConfig)
|
||||||
{
|
{
|
||||||
/* Check the parameters */
|
/* Check the parameters */
|
||||||
assert_param(IS_TIM_SLAVE_INSTANCE(htim->Instance));
|
assert_param(IS_TIM_SLAVE_INSTANCE(htim->Instance));
|
||||||
|
@ -4821,9 +4841,9 @@ HAL_StatusTypeDef HAL_TIM_SlaveConfigSynchro_IT(TIM_HandleTypeDef *htim,
|
||||||
|
|
||||||
htim->State = HAL_TIM_STATE_BUSY;
|
htim->State = HAL_TIM_STATE_BUSY;
|
||||||
|
|
||||||
if(TIM_SlaveTimer_SetConfig(htim, sSlaveConfig) != HAL_OK)
|
if (TIM_SlaveTimer_SetConfig(htim, sSlaveConfig) != HAL_OK)
|
||||||
{
|
{
|
||||||
htim->State = HAL_TIM_STATE_READY;
|
htim->State = HAL_TIM_STATE_READY;
|
||||||
__HAL_UNLOCK(htim);
|
__HAL_UNLOCK(htim);
|
||||||
return HAL_ERROR;
|
return HAL_ERROR;
|
||||||
}
|
}
|
||||||
|
@ -4913,8 +4933,8 @@ uint32_t HAL_TIM_ReadCapturedValue(TIM_HandleTypeDef *htim, uint32_t Channel)
|
||||||
*/
|
*/
|
||||||
|
|
||||||
/** @defgroup TIM_Exported_Functions_Group9 TIM Callbacks functions
|
/** @defgroup TIM_Exported_Functions_Group9 TIM Callbacks functions
|
||||||
* @brief TIM Callbacks functions
|
* @brief TIM Callbacks functions
|
||||||
*
|
*
|
||||||
@verbatim
|
@verbatim
|
||||||
==============================================================================
|
==============================================================================
|
||||||
##### TIM Callbacks functions #####
|
##### TIM Callbacks functions #####
|
||||||
|
@ -5118,7 +5138,8 @@ __weak void HAL_TIM_ErrorCallback(TIM_HandleTypeDef *htim)
|
||||||
* @param pCallback pointer to the callback function
|
* @param pCallback pointer to the callback function
|
||||||
* @retval status
|
* @retval status
|
||||||
*/
|
*/
|
||||||
HAL_StatusTypeDef HAL_TIM_RegisterCallback(TIM_HandleTypeDef *htim, HAL_TIM_CallbackIDTypeDef CallbackID, pTIM_CallbackTypeDef pCallback)
|
HAL_StatusTypeDef HAL_TIM_RegisterCallback(TIM_HandleTypeDef *htim, HAL_TIM_CallbackIDTypeDef CallbackID,
|
||||||
|
pTIM_CallbackTypeDef pCallback)
|
||||||
{
|
{
|
||||||
HAL_StatusTypeDef status = HAL_OK;
|
HAL_StatusTypeDef status = HAL_OK;
|
||||||
|
|
||||||
|
@ -5578,8 +5599,8 @@ HAL_StatusTypeDef HAL_TIM_UnRegisterCallback(TIM_HandleTypeDef *htim, HAL_TIM_Ca
|
||||||
*/
|
*/
|
||||||
|
|
||||||
/** @defgroup TIM_Exported_Functions_Group10 TIM Peripheral State functions
|
/** @defgroup TIM_Exported_Functions_Group10 TIM Peripheral State functions
|
||||||
* @brief TIM Peripheral State functions
|
* @brief TIM Peripheral State functions
|
||||||
*
|
*
|
||||||
@verbatim
|
@verbatim
|
||||||
==============================================================================
|
==============================================================================
|
||||||
##### Peripheral State functions #####
|
##### Peripheral State functions #####
|
||||||
|
@ -6365,7 +6386,7 @@ static void TIM_OC6_SetConfig(TIM_TypeDef *TIMx,
|
||||||
* @retval None
|
* @retval None
|
||||||
*/
|
*/
|
||||||
static HAL_StatusTypeDef TIM_SlaveTimer_SetConfig(TIM_HandleTypeDef *htim,
|
static HAL_StatusTypeDef TIM_SlaveTimer_SetConfig(TIM_HandleTypeDef *htim,
|
||||||
TIM_SlaveConfigTypeDef *sSlaveConfig)
|
TIM_SlaveConfigTypeDef *sSlaveConfig)
|
||||||
{
|
{
|
||||||
uint32_t tmpsmcr;
|
uint32_t tmpsmcr;
|
||||||
uint32_t tmpccmr1;
|
uint32_t tmpccmr1;
|
||||||
|
|
|
@ -73,7 +73,7 @@
|
||||||
* opensource.org/licenses/BSD-3-Clause
|
* opensource.org/licenses/BSD-3-Clause
|
||||||
*
|
*
|
||||||
******************************************************************************
|
******************************************************************************
|
||||||
*/
|
*/
|
||||||
|
|
||||||
/* Includes ------------------------------------------------------------------*/
|
/* Includes ------------------------------------------------------------------*/
|
||||||
#include "stm32f7xx_hal.h"
|
#include "stm32f7xx_hal.h"
|
||||||
|
@ -397,11 +397,11 @@ HAL_StatusTypeDef HAL_TIMEx_HallSensor_Start_DMA(TIM_HandleTypeDef *htim, uint32
|
||||||
/* Check the parameters */
|
/* Check the parameters */
|
||||||
assert_param(IS_TIM_HALL_SENSOR_INTERFACE_INSTANCE(htim->Instance));
|
assert_param(IS_TIM_HALL_SENSOR_INTERFACE_INSTANCE(htim->Instance));
|
||||||
|
|
||||||
if ((htim->State == HAL_TIM_STATE_BUSY))
|
if (htim->State == HAL_TIM_STATE_BUSY)
|
||||||
{
|
{
|
||||||
return HAL_BUSY;
|
return HAL_BUSY;
|
||||||
}
|
}
|
||||||
else if ((htim->State == HAL_TIM_STATE_READY))
|
else if (htim->State == HAL_TIM_STATE_READY)
|
||||||
{
|
{
|
||||||
if (((uint32_t)pData == 0U) && (Length > 0U))
|
if (((uint32_t)pData == 0U) && (Length > 0U))
|
||||||
{
|
{
|
||||||
|
@ -709,11 +709,11 @@ HAL_StatusTypeDef HAL_TIMEx_OCN_Start_DMA(TIM_HandleTypeDef *htim, uint32_t Chan
|
||||||
/* Check the parameters */
|
/* Check the parameters */
|
||||||
assert_param(IS_TIM_CCXN_INSTANCE(htim->Instance, Channel));
|
assert_param(IS_TIM_CCXN_INSTANCE(htim->Instance, Channel));
|
||||||
|
|
||||||
if ((htim->State == HAL_TIM_STATE_BUSY))
|
if (htim->State == HAL_TIM_STATE_BUSY)
|
||||||
{
|
{
|
||||||
return HAL_BUSY;
|
return HAL_BUSY;
|
||||||
}
|
}
|
||||||
else if ((htim->State == HAL_TIM_STATE_READY))
|
else if (htim->State == HAL_TIM_STATE_READY)
|
||||||
{
|
{
|
||||||
if (((uint32_t)pData == 0U) && (Length > 0U))
|
if (((uint32_t)pData == 0U) && (Length > 0U))
|
||||||
{
|
{
|
||||||
|
@ -1117,11 +1117,11 @@ HAL_StatusTypeDef HAL_TIMEx_PWMN_Start_DMA(TIM_HandleTypeDef *htim, uint32_t Cha
|
||||||
/* Check the parameters */
|
/* Check the parameters */
|
||||||
assert_param(IS_TIM_CCXN_INSTANCE(htim->Instance, Channel));
|
assert_param(IS_TIM_CCXN_INSTANCE(htim->Instance, Channel));
|
||||||
|
|
||||||
if ((htim->State == HAL_TIM_STATE_BUSY))
|
if (htim->State == HAL_TIM_STATE_BUSY)
|
||||||
{
|
{
|
||||||
return HAL_BUSY;
|
return HAL_BUSY;
|
||||||
}
|
}
|
||||||
else if ((htim->State == HAL_TIM_STATE_READY))
|
else if (htim->State == HAL_TIM_STATE_READY)
|
||||||
{
|
{
|
||||||
if (((uint32_t)pData == 0U) && (Length > 0U))
|
if (((uint32_t)pData == 0U) && (Length > 0U))
|
||||||
{
|
{
|
||||||
|
@ -1466,7 +1466,8 @@ HAL_StatusTypeDef HAL_TIMEx_OnePulseN_Stop_IT(TIM_HandleTypeDef *htim, uint32_t
|
||||||
* @arg TIM_COMMUTATION_SOFTWARE: Commutation source is set by software using the COMG bit
|
* @arg TIM_COMMUTATION_SOFTWARE: Commutation source is set by software using the COMG bit
|
||||||
* @retval HAL status
|
* @retval HAL status
|
||||||
*/
|
*/
|
||||||
HAL_StatusTypeDef HAL_TIMEx_ConfigCommutEvent(TIM_HandleTypeDef *htim, uint32_t InputTrigger, uint32_t CommutationSource)
|
HAL_StatusTypeDef HAL_TIMEx_ConfigCommutEvent(TIM_HandleTypeDef *htim, uint32_t InputTrigger,
|
||||||
|
uint32_t CommutationSource)
|
||||||
{
|
{
|
||||||
/* Check the parameters */
|
/* Check the parameters */
|
||||||
assert_param(IS_TIM_COMMUTATION_EVENT_INSTANCE(htim->Instance));
|
assert_param(IS_TIM_COMMUTATION_EVENT_INSTANCE(htim->Instance));
|
||||||
|
@ -1521,7 +1522,8 @@ HAL_StatusTypeDef HAL_TIMEx_ConfigCommutEvent(TIM_HandleTypeDef *htim, uint32_t
|
||||||
* @arg TIM_COMMUTATION_SOFTWARE: Commutation source is set by software using the COMG bit
|
* @arg TIM_COMMUTATION_SOFTWARE: Commutation source is set by software using the COMG bit
|
||||||
* @retval HAL status
|
* @retval HAL status
|
||||||
*/
|
*/
|
||||||
HAL_StatusTypeDef HAL_TIMEx_ConfigCommutEvent_IT(TIM_HandleTypeDef *htim, uint32_t InputTrigger, uint32_t CommutationSource)
|
HAL_StatusTypeDef HAL_TIMEx_ConfigCommutEvent_IT(TIM_HandleTypeDef *htim, uint32_t InputTrigger,
|
||||||
|
uint32_t CommutationSource)
|
||||||
{
|
{
|
||||||
/* Check the parameters */
|
/* Check the parameters */
|
||||||
assert_param(IS_TIM_COMMUTATION_EVENT_INSTANCE(htim->Instance));
|
assert_param(IS_TIM_COMMUTATION_EVENT_INSTANCE(htim->Instance));
|
||||||
|
@ -1577,7 +1579,8 @@ HAL_StatusTypeDef HAL_TIMEx_ConfigCommutEvent_IT(TIM_HandleTypeDef *htim, uint32
|
||||||
* @arg TIM_COMMUTATION_SOFTWARE: Commutation source is set by software using the COMG bit
|
* @arg TIM_COMMUTATION_SOFTWARE: Commutation source is set by software using the COMG bit
|
||||||
* @retval HAL status
|
* @retval HAL status
|
||||||
*/
|
*/
|
||||||
HAL_StatusTypeDef HAL_TIMEx_ConfigCommutEvent_DMA(TIM_HandleTypeDef *htim, uint32_t InputTrigger, uint32_t CommutationSource)
|
HAL_StatusTypeDef HAL_TIMEx_ConfigCommutEvent_DMA(TIM_HandleTypeDef *htim, uint32_t InputTrigger,
|
||||||
|
uint32_t CommutationSource)
|
||||||
{
|
{
|
||||||
/* Check the parameters */
|
/* Check the parameters */
|
||||||
assert_param(IS_TIM_COMMUTATION_EVENT_INSTANCE(htim->Instance));
|
assert_param(IS_TIM_COMMUTATION_EVENT_INSTANCE(htim->Instance));
|
||||||
|
@ -1632,7 +1635,7 @@ HAL_StatusTypeDef HAL_TIMEx_MasterConfigSynchronization(TIM_HandleTypeDef *htim,
|
||||||
uint32_t tmpsmcr;
|
uint32_t tmpsmcr;
|
||||||
|
|
||||||
/* Check the parameters */
|
/* Check the parameters */
|
||||||
assert_param(IS_TIM_SYNCHRO_INSTANCE(htim->Instance));
|
assert_param(IS_TIM_MASTER_INSTANCE(htim->Instance));
|
||||||
assert_param(IS_TIM_TRGO_SOURCE(sMasterConfig->MasterOutputTrigger));
|
assert_param(IS_TIM_TRGO_SOURCE(sMasterConfig->MasterOutputTrigger));
|
||||||
assert_param(IS_TIM_MSM_STATE(sMasterConfig->MasterSlaveMode));
|
assert_param(IS_TIM_MSM_STATE(sMasterConfig->MasterSlaveMode));
|
||||||
|
|
||||||
|
@ -1665,16 +1668,19 @@ HAL_StatusTypeDef HAL_TIMEx_MasterConfigSynchronization(TIM_HandleTypeDef *htim,
|
||||||
/* Select the TRGO source */
|
/* Select the TRGO source */
|
||||||
tmpcr2 |= sMasterConfig->MasterOutputTrigger;
|
tmpcr2 |= sMasterConfig->MasterOutputTrigger;
|
||||||
|
|
||||||
/* Reset the MSM Bit */
|
|
||||||
tmpsmcr &= ~TIM_SMCR_MSM;
|
|
||||||
/* Set master mode */
|
|
||||||
tmpsmcr |= sMasterConfig->MasterSlaveMode;
|
|
||||||
|
|
||||||
/* Update TIMx CR2 */
|
/* Update TIMx CR2 */
|
||||||
htim->Instance->CR2 = tmpcr2;
|
htim->Instance->CR2 = tmpcr2;
|
||||||
|
|
||||||
/* Update TIMx SMCR */
|
if (IS_TIM_SLAVE_INSTANCE(htim->Instance))
|
||||||
htim->Instance->SMCR = tmpsmcr;
|
{
|
||||||
|
/* Reset the MSM Bit */
|
||||||
|
tmpsmcr &= ~TIM_SMCR_MSM;
|
||||||
|
/* Set master mode */
|
||||||
|
tmpsmcr |= sMasterConfig->MasterSlaveMode;
|
||||||
|
|
||||||
|
/* Update TIMx SMCR */
|
||||||
|
htim->Instance->SMCR = tmpsmcr;
|
||||||
|
}
|
||||||
|
|
||||||
/* Change the htim state */
|
/* Change the htim state */
|
||||||
htim->State = HAL_TIM_STATE_READY;
|
htim->State = HAL_TIM_STATE_READY;
|
||||||
|
@ -1690,6 +1696,9 @@ HAL_StatusTypeDef HAL_TIMEx_MasterConfigSynchronization(TIM_HandleTypeDef *htim,
|
||||||
* @param htim TIM handle
|
* @param htim TIM handle
|
||||||
* @param sBreakDeadTimeConfig pointer to a TIM_ConfigBreakDeadConfigTypeDef structure that
|
* @param sBreakDeadTimeConfig pointer to a TIM_ConfigBreakDeadConfigTypeDef structure that
|
||||||
* contains the BDTR Register configuration information for the TIM peripheral.
|
* contains the BDTR Register configuration information for the TIM peripheral.
|
||||||
|
* @note Interrupts can be generated when an active level is detected on the
|
||||||
|
* break input, the break 2 input or the system break input. Break
|
||||||
|
* interrupt can be enabled by calling the @ref __HAL_TIM_ENABLE_IT macro.
|
||||||
* @retval HAL status
|
* @retval HAL status
|
||||||
*/
|
*/
|
||||||
HAL_StatusTypeDef HAL_TIMEx_ConfigBreakDeadTime(TIM_HandleTypeDef *htim,
|
HAL_StatusTypeDef HAL_TIMEx_ConfigBreakDeadTime(TIM_HandleTypeDef *htim,
|
||||||
|
@ -1763,10 +1772,10 @@ HAL_StatusTypeDef HAL_TIMEx_ConfigBreakInput(TIM_HandleTypeDef *htim,
|
||||||
|
|
||||||
{
|
{
|
||||||
uint32_t tmporx;
|
uint32_t tmporx;
|
||||||
uint32_t bkin_enable_mask = 0U;
|
uint32_t bkin_enable_mask;
|
||||||
uint32_t bkin_polarity_mask = 0U;
|
uint32_t bkin_polarity_mask;
|
||||||
uint32_t bkin_enable_bitpos = 0U;
|
uint32_t bkin_enable_bitpos;
|
||||||
uint32_t bkin_polarity_bitpos = 0U;
|
uint32_t bkin_polarity_bitpos;
|
||||||
|
|
||||||
/* Check the parameters */
|
/* Check the parameters */
|
||||||
assert_param(IS_TIM_BREAK_INSTANCE(htim->Instance));
|
assert_param(IS_TIM_BREAK_INSTANCE(htim->Instance));
|
||||||
|
@ -1800,11 +1809,19 @@ HAL_StatusTypeDef HAL_TIMEx_ConfigBreakInput(TIM_HandleTypeDef *htim,
|
||||||
{
|
{
|
||||||
bkin_enable_mask = TIM1_AF1_BKDF1BKE;
|
bkin_enable_mask = TIM1_AF1_BKDF1BKE;
|
||||||
bkin_enable_bitpos = 8;
|
bkin_enable_bitpos = 8;
|
||||||
|
bkin_polarity_mask = 0U;
|
||||||
|
bkin_polarity_bitpos = 0U;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
default:
|
default:
|
||||||
|
{
|
||||||
|
bkin_enable_mask = 0U;
|
||||||
|
bkin_polarity_mask = 0U;
|
||||||
|
bkin_enable_bitpos = 0U;
|
||||||
|
bkin_polarity_bitpos = 0U;
|
||||||
break;
|
break;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
switch (BreakInput)
|
switch (BreakInput)
|
||||||
|
@ -2054,7 +2071,7 @@ HAL_TIM_StateTypeDef HAL_TIMEx_HallSensor_GetState(TIM_HandleTypeDef *htim)
|
||||||
*/
|
*/
|
||||||
|
|
||||||
/* Private functions ---------------------------------------------------------*/
|
/* Private functions ---------------------------------------------------------*/
|
||||||
/** @defgroup TIMEx_Private_Functions TIM Extended Private Functions
|
/** @defgroup TIMEx_Private_Functions TIMEx Private Functions
|
||||||
* @{
|
* @{
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
|
|
@ -326,7 +326,6 @@ HAL_StatusTypeDef HAL_UART_Init(UART_HandleTypeDef *huart)
|
||||||
|
|
||||||
huart->gState = HAL_UART_STATE_BUSY;
|
huart->gState = HAL_UART_STATE_BUSY;
|
||||||
|
|
||||||
/* Disable the Peripheral */
|
|
||||||
__HAL_UART_DISABLE(huart);
|
__HAL_UART_DISABLE(huart);
|
||||||
|
|
||||||
/* Set the UART Communication parameters */
|
/* Set the UART Communication parameters */
|
||||||
|
@ -346,7 +345,6 @@ HAL_StatusTypeDef HAL_UART_Init(UART_HandleTypeDef *huart)
|
||||||
CLEAR_BIT(huart->Instance->CR2, (USART_CR2_LINEN | USART_CR2_CLKEN));
|
CLEAR_BIT(huart->Instance->CR2, (USART_CR2_LINEN | USART_CR2_CLKEN));
|
||||||
CLEAR_BIT(huart->Instance->CR3, (USART_CR3_SCEN | USART_CR3_HDSEL | USART_CR3_IREN));
|
CLEAR_BIT(huart->Instance->CR3, (USART_CR3_SCEN | USART_CR3_HDSEL | USART_CR3_IREN));
|
||||||
|
|
||||||
/* Enable the Peripheral */
|
|
||||||
__HAL_UART_ENABLE(huart);
|
__HAL_UART_ENABLE(huart);
|
||||||
|
|
||||||
/* TEACK and/or REACK to check before moving huart->gState and huart->RxState to Ready */
|
/* TEACK and/or REACK to check before moving huart->gState and huart->RxState to Ready */
|
||||||
|
@ -393,7 +391,6 @@ HAL_StatusTypeDef HAL_HalfDuplex_Init(UART_HandleTypeDef *huart)
|
||||||
|
|
||||||
huart->gState = HAL_UART_STATE_BUSY;
|
huart->gState = HAL_UART_STATE_BUSY;
|
||||||
|
|
||||||
/* Disable the Peripheral */
|
|
||||||
__HAL_UART_DISABLE(huart);
|
__HAL_UART_DISABLE(huart);
|
||||||
|
|
||||||
/* Set the UART Communication parameters */
|
/* Set the UART Communication parameters */
|
||||||
|
@ -416,7 +413,6 @@ HAL_StatusTypeDef HAL_HalfDuplex_Init(UART_HandleTypeDef *huart)
|
||||||
/* Enable the Half-Duplex mode by setting the HDSEL bit in the CR3 register */
|
/* Enable the Half-Duplex mode by setting the HDSEL bit in the CR3 register */
|
||||||
SET_BIT(huart->Instance->CR3, USART_CR3_HDSEL);
|
SET_BIT(huart->Instance->CR3, USART_CR3_HDSEL);
|
||||||
|
|
||||||
/* Enable the Peripheral */
|
|
||||||
__HAL_UART_ENABLE(huart);
|
__HAL_UART_ENABLE(huart);
|
||||||
|
|
||||||
/* TEACK and/or REACK to check before moving huart->gState and huart->RxState to Ready */
|
/* TEACK and/or REACK to check before moving huart->gState and huart->RxState to Ready */
|
||||||
|
@ -481,7 +477,6 @@ HAL_StatusTypeDef HAL_LIN_Init(UART_HandleTypeDef *huart, uint32_t BreakDetectLe
|
||||||
|
|
||||||
huart->gState = HAL_UART_STATE_BUSY;
|
huart->gState = HAL_UART_STATE_BUSY;
|
||||||
|
|
||||||
/* Disable the Peripheral */
|
|
||||||
__HAL_UART_DISABLE(huart);
|
__HAL_UART_DISABLE(huart);
|
||||||
|
|
||||||
/* Set the UART Communication parameters */
|
/* Set the UART Communication parameters */
|
||||||
|
@ -507,7 +502,6 @@ HAL_StatusTypeDef HAL_LIN_Init(UART_HandleTypeDef *huart, uint32_t BreakDetectLe
|
||||||
/* Set the USART LIN Break detection length. */
|
/* Set the USART LIN Break detection length. */
|
||||||
MODIFY_REG(huart->Instance->CR2, USART_CR2_LBDL, BreakDetectLength);
|
MODIFY_REG(huart->Instance->CR2, USART_CR2_LBDL, BreakDetectLength);
|
||||||
|
|
||||||
/* Enable the Peripheral */
|
|
||||||
__HAL_UART_ENABLE(huart);
|
__HAL_UART_ENABLE(huart);
|
||||||
|
|
||||||
/* TEACK and/or REACK to check before moving huart->gState and huart->RxState to Ready */
|
/* TEACK and/or REACK to check before moving huart->gState and huart->RxState to Ready */
|
||||||
|
@ -567,7 +561,6 @@ HAL_StatusTypeDef HAL_MultiProcessor_Init(UART_HandleTypeDef *huart, uint8_t Add
|
||||||
|
|
||||||
huart->gState = HAL_UART_STATE_BUSY;
|
huart->gState = HAL_UART_STATE_BUSY;
|
||||||
|
|
||||||
/* Disable the Peripheral */
|
|
||||||
__HAL_UART_DISABLE(huart);
|
__HAL_UART_DISABLE(huart);
|
||||||
|
|
||||||
/* Set the UART Communication parameters */
|
/* Set the UART Communication parameters */
|
||||||
|
@ -596,7 +589,6 @@ HAL_StatusTypeDef HAL_MultiProcessor_Init(UART_HandleTypeDef *huart, uint8_t Add
|
||||||
/* Set the wake up method by setting the WAKE bit in the CR1 register */
|
/* Set the wake up method by setting the WAKE bit in the CR1 register */
|
||||||
MODIFY_REG(huart->Instance->CR1, USART_CR1_WAKE, WakeUpMethod);
|
MODIFY_REG(huart->Instance->CR1, USART_CR1_WAKE, WakeUpMethod);
|
||||||
|
|
||||||
/* Enable the Peripheral */
|
|
||||||
__HAL_UART_ENABLE(huart);
|
__HAL_UART_ENABLE(huart);
|
||||||
|
|
||||||
/* TEACK and/or REACK to check before moving huart->gState and huart->RxState to Ready */
|
/* TEACK and/or REACK to check before moving huart->gState and huart->RxState to Ready */
|
||||||
|
@ -622,7 +614,6 @@ HAL_StatusTypeDef HAL_UART_DeInit(UART_HandleTypeDef *huart)
|
||||||
|
|
||||||
huart->gState = HAL_UART_STATE_BUSY;
|
huart->gState = HAL_UART_STATE_BUSY;
|
||||||
|
|
||||||
/* Disable the Peripheral */
|
|
||||||
__HAL_UART_DISABLE(huart);
|
__HAL_UART_DISABLE(huart);
|
||||||
|
|
||||||
huart->Instance->CR1 = 0x0U;
|
huart->Instance->CR1 = 0x0U;
|
||||||
|
@ -645,7 +636,6 @@ HAL_StatusTypeDef HAL_UART_DeInit(UART_HandleTypeDef *huart)
|
||||||
huart->gState = HAL_UART_STATE_RESET;
|
huart->gState = HAL_UART_STATE_RESET;
|
||||||
huart->RxState = HAL_UART_STATE_RESET;
|
huart->RxState = HAL_UART_STATE_RESET;
|
||||||
|
|
||||||
/* Process Unlock */
|
|
||||||
__HAL_UNLOCK(huart);
|
__HAL_UNLOCK(huart);
|
||||||
|
|
||||||
return HAL_OK;
|
return HAL_OK;
|
||||||
|
@ -704,18 +694,18 @@ __weak void HAL_UART_MspDeInit(UART_HandleTypeDef *huart)
|
||||||
* @param pCallback pointer to the Callback function
|
* @param pCallback pointer to the Callback function
|
||||||
* @retval HAL status
|
* @retval HAL status
|
||||||
*/
|
*/
|
||||||
HAL_StatusTypeDef HAL_UART_RegisterCallback(UART_HandleTypeDef *huart, HAL_UART_CallbackIDTypeDef CallbackID, pUART_CallbackTypeDef pCallback)
|
HAL_StatusTypeDef HAL_UART_RegisterCallback(UART_HandleTypeDef *huart, HAL_UART_CallbackIDTypeDef CallbackID,
|
||||||
|
pUART_CallbackTypeDef pCallback)
|
||||||
{
|
{
|
||||||
HAL_StatusTypeDef status = HAL_OK;
|
HAL_StatusTypeDef status = HAL_OK;
|
||||||
|
|
||||||
if (pCallback == NULL)
|
if (pCallback == NULL)
|
||||||
{
|
{
|
||||||
/* Update the error code */
|
|
||||||
huart->ErrorCode |= HAL_UART_ERROR_INVALID_CALLBACK;
|
huart->ErrorCode |= HAL_UART_ERROR_INVALID_CALLBACK;
|
||||||
|
|
||||||
return HAL_ERROR;
|
return HAL_ERROR;
|
||||||
}
|
}
|
||||||
/* Process locked */
|
|
||||||
__HAL_LOCK(huart);
|
__HAL_LOCK(huart);
|
||||||
|
|
||||||
if (huart->gState == HAL_UART_STATE_READY)
|
if (huart->gState == HAL_UART_STATE_READY)
|
||||||
|
@ -768,10 +758,8 @@ HAL_StatusTypeDef HAL_UART_RegisterCallback(UART_HandleTypeDef *huart, HAL_UART_
|
||||||
break;
|
break;
|
||||||
|
|
||||||
default :
|
default :
|
||||||
/* Update the error code */
|
|
||||||
huart->ErrorCode |= HAL_UART_ERROR_INVALID_CALLBACK;
|
huart->ErrorCode |= HAL_UART_ERROR_INVALID_CALLBACK;
|
||||||
|
|
||||||
/* Return error status */
|
|
||||||
status = HAL_ERROR;
|
status = HAL_ERROR;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
@ -789,24 +777,19 @@ HAL_StatusTypeDef HAL_UART_RegisterCallback(UART_HandleTypeDef *huart, HAL_UART_
|
||||||
break;
|
break;
|
||||||
|
|
||||||
default :
|
default :
|
||||||
/* Update the error code */
|
|
||||||
huart->ErrorCode |= HAL_UART_ERROR_INVALID_CALLBACK;
|
huart->ErrorCode |= HAL_UART_ERROR_INVALID_CALLBACK;
|
||||||
|
|
||||||
/* Return error status */
|
|
||||||
status = HAL_ERROR;
|
status = HAL_ERROR;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
/* Update the error code */
|
|
||||||
huart->ErrorCode |= HAL_UART_ERROR_INVALID_CALLBACK;
|
huart->ErrorCode |= HAL_UART_ERROR_INVALID_CALLBACK;
|
||||||
|
|
||||||
/* Return error status */
|
|
||||||
status = HAL_ERROR;
|
status = HAL_ERROR;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Release Lock */
|
|
||||||
__HAL_UNLOCK(huart);
|
__HAL_UNLOCK(huart);
|
||||||
|
|
||||||
return status;
|
return status;
|
||||||
|
@ -837,7 +820,6 @@ HAL_StatusTypeDef HAL_UART_UnRegisterCallback(UART_HandleTypeDef *huart, HAL_UAR
|
||||||
{
|
{
|
||||||
HAL_StatusTypeDef status = HAL_OK;
|
HAL_StatusTypeDef status = HAL_OK;
|
||||||
|
|
||||||
/* Process locked */
|
|
||||||
__HAL_LOCK(huart);
|
__HAL_LOCK(huart);
|
||||||
|
|
||||||
if (HAL_UART_STATE_READY == huart->gState)
|
if (HAL_UART_STATE_READY == huart->gState)
|
||||||
|
@ -876,6 +858,12 @@ HAL_StatusTypeDef HAL_UART_UnRegisterCallback(UART_HandleTypeDef *huart, HAL_UAR
|
||||||
huart->AbortReceiveCpltCallback = HAL_UART_AbortReceiveCpltCallback; /* Legacy weak AbortReceiveCpltCallback */
|
huart->AbortReceiveCpltCallback = HAL_UART_AbortReceiveCpltCallback; /* Legacy weak AbortReceiveCpltCallback */
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
#if defined(USART_CR1_UESM)
|
||||||
|
case HAL_UART_WAKEUP_CB_ID :
|
||||||
|
huart->WakeupCallback = HAL_UARTEx_WakeupCallback; /* Legacy weak WakeupCallback */
|
||||||
|
break;
|
||||||
|
|
||||||
|
#endif /* USART_CR1_UESM */
|
||||||
case HAL_UART_MSPINIT_CB_ID :
|
case HAL_UART_MSPINIT_CB_ID :
|
||||||
huart->MspInitCallback = HAL_UART_MspInit; /* Legacy weak MspInitCallback */
|
huart->MspInitCallback = HAL_UART_MspInit; /* Legacy weak MspInitCallback */
|
||||||
break;
|
break;
|
||||||
|
@ -885,10 +873,8 @@ HAL_StatusTypeDef HAL_UART_UnRegisterCallback(UART_HandleTypeDef *huart, HAL_UAR
|
||||||
break;
|
break;
|
||||||
|
|
||||||
default :
|
default :
|
||||||
/* Update the error code */
|
|
||||||
huart->ErrorCode |= HAL_UART_ERROR_INVALID_CALLBACK;
|
huart->ErrorCode |= HAL_UART_ERROR_INVALID_CALLBACK;
|
||||||
|
|
||||||
/* Return error status */
|
|
||||||
status = HAL_ERROR;
|
status = HAL_ERROR;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
@ -906,24 +892,19 @@ HAL_StatusTypeDef HAL_UART_UnRegisterCallback(UART_HandleTypeDef *huart, HAL_UAR
|
||||||
break;
|
break;
|
||||||
|
|
||||||
default :
|
default :
|
||||||
/* Update the error code */
|
|
||||||
huart->ErrorCode |= HAL_UART_ERROR_INVALID_CALLBACK;
|
huart->ErrorCode |= HAL_UART_ERROR_INVALID_CALLBACK;
|
||||||
|
|
||||||
/* Return error status */
|
|
||||||
status = HAL_ERROR;
|
status = HAL_ERROR;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
/* Update the error code */
|
|
||||||
huart->ErrorCode |= HAL_UART_ERROR_INVALID_CALLBACK;
|
huart->ErrorCode |= HAL_UART_ERROR_INVALID_CALLBACK;
|
||||||
|
|
||||||
/* Return error status */
|
|
||||||
status = HAL_ERROR;
|
status = HAL_ERROR;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Release Lock */
|
|
||||||
__HAL_UNLOCK(huart);
|
__HAL_UNLOCK(huart);
|
||||||
|
|
||||||
return status;
|
return status;
|
||||||
|
@ -992,6 +973,11 @@ HAL_StatusTypeDef HAL_UART_UnRegisterCallback(UART_HandleTypeDef *huart, HAL_UAR
|
||||||
(+) HAL_UART_AbortCpltCallback()
|
(+) HAL_UART_AbortCpltCallback()
|
||||||
(+) HAL_UART_AbortTransmitCpltCallback()
|
(+) HAL_UART_AbortTransmitCpltCallback()
|
||||||
(+) HAL_UART_AbortReceiveCpltCallback()
|
(+) HAL_UART_AbortReceiveCpltCallback()
|
||||||
|
#if defined(USART_CR1_UESM)
|
||||||
|
|
||||||
|
(#) Wakeup from Stop mode Callback:
|
||||||
|
(+) HAL_UARTEx_WakeupCallback()
|
||||||
|
#endif
|
||||||
|
|
||||||
(#) In Non-Blocking mode transfers, possible errors are split into 2 categories.
|
(#) In Non-Blocking mode transfers, possible errors are split into 2 categories.
|
||||||
Errors are handled as follows :
|
Errors are handled as follows :
|
||||||
|
@ -1013,9 +999,12 @@ HAL_StatusTypeDef HAL_UART_UnRegisterCallback(UART_HandleTypeDef *huart, HAL_UAR
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief Send an amount of data in blocking mode.
|
* @brief Send an amount of data in blocking mode.
|
||||||
|
* @note When UART parity is not enabled (PCE = 0), and Word Length is configured to 9 bits (M1-M0 = 01),
|
||||||
|
* the sent data is handled as a set of u16. In this case, Size must indicate the number
|
||||||
|
* of u16 provided through pData.
|
||||||
* @param huart UART handle.
|
* @param huart UART handle.
|
||||||
* @param pData Pointer to data buffer.
|
* @param pData Pointer to data buffer (u8 or u16 data elements).
|
||||||
* @param Size Amount of data to be sent.
|
* @param Size Amount of data elements (u8 or u16) to be sent.
|
||||||
* @param Timeout Timeout duration.
|
* @param Timeout Timeout duration.
|
||||||
* @retval HAL status
|
* @retval HAL status
|
||||||
*/
|
*/
|
||||||
|
@ -1033,7 +1022,6 @@ HAL_StatusTypeDef HAL_UART_Transmit(UART_HandleTypeDef *huart, uint8_t *pData, u
|
||||||
return HAL_ERROR;
|
return HAL_ERROR;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Process Locked */
|
|
||||||
__HAL_LOCK(huart);
|
__HAL_LOCK(huart);
|
||||||
|
|
||||||
huart->ErrorCode = HAL_UART_ERROR_NONE;
|
huart->ErrorCode = HAL_UART_ERROR_NONE;
|
||||||
|
@ -1045,7 +1033,7 @@ HAL_StatusTypeDef HAL_UART_Transmit(UART_HandleTypeDef *huart, uint8_t *pData, u
|
||||||
huart->TxXferSize = Size;
|
huart->TxXferSize = Size;
|
||||||
huart->TxXferCount = Size;
|
huart->TxXferCount = Size;
|
||||||
|
|
||||||
/* In case of 9bits/No Parity transfer, pData needs to be handled as a uint16_t pointer */
|
/* In case of 9bits/No Parity transfer, pData needs to be handled as a uint16_t pointer */
|
||||||
if ((huart->Init.WordLength == UART_WORDLENGTH_9B) && (huart->Init.Parity == UART_PARITY_NONE))
|
if ((huart->Init.WordLength == UART_WORDLENGTH_9B) && (huart->Init.Parity == UART_PARITY_NONE))
|
||||||
{
|
{
|
||||||
pdata8bits = NULL;
|
pdata8bits = NULL;
|
||||||
|
@ -1057,6 +1045,8 @@ HAL_StatusTypeDef HAL_UART_Transmit(UART_HandleTypeDef *huart, uint8_t *pData, u
|
||||||
pdata16bits = NULL;
|
pdata16bits = NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
__HAL_UNLOCK(huart);
|
||||||
|
|
||||||
while (huart->TxXferCount > 0U)
|
while (huart->TxXferCount > 0U)
|
||||||
{
|
{
|
||||||
if (UART_WaitOnFlagUntilTimeout(huart, UART_FLAG_TXE, RESET, tickstart, Timeout) != HAL_OK)
|
if (UART_WaitOnFlagUntilTimeout(huart, UART_FLAG_TXE, RESET, tickstart, Timeout) != HAL_OK)
|
||||||
|
@ -1084,9 +1074,6 @@ HAL_StatusTypeDef HAL_UART_Transmit(UART_HandleTypeDef *huart, uint8_t *pData, u
|
||||||
/* At end of Tx process, restore huart->gState to Ready */
|
/* At end of Tx process, restore huart->gState to Ready */
|
||||||
huart->gState = HAL_UART_STATE_READY;
|
huart->gState = HAL_UART_STATE_READY;
|
||||||
|
|
||||||
/* Process Unlocked */
|
|
||||||
__HAL_UNLOCK(huart);
|
|
||||||
|
|
||||||
return HAL_OK;
|
return HAL_OK;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
@ -1097,9 +1084,12 @@ HAL_StatusTypeDef HAL_UART_Transmit(UART_HandleTypeDef *huart, uint8_t *pData, u
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief Receive an amount of data in blocking mode.
|
* @brief Receive an amount of data in blocking mode.
|
||||||
|
* @note When UART parity is not enabled (PCE = 0), and Word Length is configured to 9 bits (M1-M0 = 01),
|
||||||
|
* the received data is handled as a set of u16. In this case, Size must indicate the number
|
||||||
|
* of u16 available through pData.
|
||||||
* @param huart UART handle.
|
* @param huart UART handle.
|
||||||
* @param pData Pointer to data buffer.
|
* @param pData Pointer to data buffer (u8 or u16 data elements).
|
||||||
* @param Size Amount of data to be received.
|
* @param Size Amount of data elements (u8 or u16) to be received.
|
||||||
* @param Timeout Timeout duration.
|
* @param Timeout Timeout duration.
|
||||||
* @retval HAL status
|
* @retval HAL status
|
||||||
*/
|
*/
|
||||||
|
@ -1118,7 +1108,6 @@ HAL_StatusTypeDef HAL_UART_Receive(UART_HandleTypeDef *huart, uint8_t *pData, ui
|
||||||
return HAL_ERROR;
|
return HAL_ERROR;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Process Locked */
|
|
||||||
__HAL_LOCK(huart);
|
__HAL_LOCK(huart);
|
||||||
|
|
||||||
huart->ErrorCode = HAL_UART_ERROR_NONE;
|
huart->ErrorCode = HAL_UART_ERROR_NONE;
|
||||||
|
@ -1146,6 +1135,8 @@ HAL_StatusTypeDef HAL_UART_Receive(UART_HandleTypeDef *huart, uint8_t *pData, ui
|
||||||
pdata16bits = NULL;
|
pdata16bits = NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
__HAL_UNLOCK(huart);
|
||||||
|
|
||||||
/* as long as data have to be received */
|
/* as long as data have to be received */
|
||||||
while (huart->RxXferCount > 0U)
|
while (huart->RxXferCount > 0U)
|
||||||
{
|
{
|
||||||
|
@ -1169,9 +1160,6 @@ HAL_StatusTypeDef HAL_UART_Receive(UART_HandleTypeDef *huart, uint8_t *pData, ui
|
||||||
/* At end of Rx process, restore huart->RxState to Ready */
|
/* At end of Rx process, restore huart->RxState to Ready */
|
||||||
huart->RxState = HAL_UART_STATE_READY;
|
huart->RxState = HAL_UART_STATE_READY;
|
||||||
|
|
||||||
/* Process Unlocked */
|
|
||||||
__HAL_UNLOCK(huart);
|
|
||||||
|
|
||||||
return HAL_OK;
|
return HAL_OK;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
@ -1182,9 +1170,12 @@ HAL_StatusTypeDef HAL_UART_Receive(UART_HandleTypeDef *huart, uint8_t *pData, ui
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief Send an amount of data in interrupt mode.
|
* @brief Send an amount of data in interrupt mode.
|
||||||
|
* @note When UART parity is not enabled (PCE = 0), and Word Length is configured to 9 bits (M1-M0 = 01),
|
||||||
|
* the sent data is handled as a set of u16. In this case, Size must indicate the number
|
||||||
|
* of u16 provided through pData.
|
||||||
* @param huart UART handle.
|
* @param huart UART handle.
|
||||||
* @param pData Pointer to data buffer.
|
* @param pData Pointer to data buffer (u8 or u16 data elements).
|
||||||
* @param Size Amount of data to be sent.
|
* @param Size Amount of data elements (u8 or u16) to be sent.
|
||||||
* @retval HAL status
|
* @retval HAL status
|
||||||
*/
|
*/
|
||||||
HAL_StatusTypeDef HAL_UART_Transmit_IT(UART_HandleTypeDef *huart, uint8_t *pData, uint16_t Size)
|
HAL_StatusTypeDef HAL_UART_Transmit_IT(UART_HandleTypeDef *huart, uint8_t *pData, uint16_t Size)
|
||||||
|
@ -1197,7 +1188,6 @@ HAL_StatusTypeDef HAL_UART_Transmit_IT(UART_HandleTypeDef *huart, uint8_t *pData
|
||||||
return HAL_ERROR;
|
return HAL_ERROR;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Process Locked */
|
|
||||||
__HAL_LOCK(huart);
|
__HAL_LOCK(huart);
|
||||||
|
|
||||||
huart->pTxBuffPtr = pData;
|
huart->pTxBuffPtr = pData;
|
||||||
|
@ -1218,7 +1208,6 @@ HAL_StatusTypeDef HAL_UART_Transmit_IT(UART_HandleTypeDef *huart, uint8_t *pData
|
||||||
huart->TxISR = UART_TxISR_8BIT;
|
huart->TxISR = UART_TxISR_8BIT;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Process Unlocked */
|
|
||||||
__HAL_UNLOCK(huart);
|
__HAL_UNLOCK(huart);
|
||||||
|
|
||||||
/* Enable the Transmit Data Register Empty interrupt */
|
/* Enable the Transmit Data Register Empty interrupt */
|
||||||
|
@ -1234,9 +1223,12 @@ HAL_StatusTypeDef HAL_UART_Transmit_IT(UART_HandleTypeDef *huart, uint8_t *pData
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief Receive an amount of data in interrupt mode.
|
* @brief Receive an amount of data in interrupt mode.
|
||||||
|
* @note When UART parity is not enabled (PCE = 0), and Word Length is configured to 9 bits (M1-M0 = 01),
|
||||||
|
* the received data is handled as a set of u16. In this case, Size must indicate the number
|
||||||
|
* of u16 available through pData.
|
||||||
* @param huart UART handle.
|
* @param huart UART handle.
|
||||||
* @param pData Pointer to data buffer.
|
* @param pData Pointer to data buffer (u8 or u16 data elements).
|
||||||
* @param Size Amount of data to be received.
|
* @param Size Amount of data elements (u8 or u16) to be received.
|
||||||
* @retval HAL status
|
* @retval HAL status
|
||||||
*/
|
*/
|
||||||
HAL_StatusTypeDef HAL_UART_Receive_IT(UART_HandleTypeDef *huart, uint8_t *pData, uint16_t Size)
|
HAL_StatusTypeDef HAL_UART_Receive_IT(UART_HandleTypeDef *huart, uint8_t *pData, uint16_t Size)
|
||||||
|
@ -1249,7 +1241,6 @@ HAL_StatusTypeDef HAL_UART_Receive_IT(UART_HandleTypeDef *huart, uint8_t *pData,
|
||||||
return HAL_ERROR;
|
return HAL_ERROR;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Process Locked */
|
|
||||||
__HAL_LOCK(huart);
|
__HAL_LOCK(huart);
|
||||||
|
|
||||||
huart->pRxBuffPtr = pData;
|
huart->pRxBuffPtr = pData;
|
||||||
|
@ -1276,7 +1267,6 @@ HAL_StatusTypeDef HAL_UART_Receive_IT(UART_HandleTypeDef *huart, uint8_t *pData,
|
||||||
huart->RxISR = UART_RxISR_8BIT;
|
huart->RxISR = UART_RxISR_8BIT;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Process Unlocked */
|
|
||||||
__HAL_UNLOCK(huart);
|
__HAL_UNLOCK(huart);
|
||||||
|
|
||||||
/* Enable the UART Parity Error interrupt and Data Register Not Empty interrupt */
|
/* Enable the UART Parity Error interrupt and Data Register Not Empty interrupt */
|
||||||
|
@ -1292,9 +1282,12 @@ HAL_StatusTypeDef HAL_UART_Receive_IT(UART_HandleTypeDef *huart, uint8_t *pData,
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief Send an amount of data in DMA mode.
|
* @brief Send an amount of data in DMA mode.
|
||||||
|
* @note When UART parity is not enabled (PCE = 0), and Word Length is configured to 9 bits (M1-M0 = 01),
|
||||||
|
* the sent data is handled as a set of u16. In this case, Size must indicate the number
|
||||||
|
* of u16 provided through pData.
|
||||||
* @param huart UART handle.
|
* @param huart UART handle.
|
||||||
* @param pData Pointer to data buffer.
|
* @param pData Pointer to data buffer (u8 or u16 data elements).
|
||||||
* @param Size Amount of data to be sent.
|
* @param Size Amount of data elements (u8 or u16) to be sent.
|
||||||
* @retval HAL status
|
* @retval HAL status
|
||||||
*/
|
*/
|
||||||
HAL_StatusTypeDef HAL_UART_Transmit_DMA(UART_HandleTypeDef *huart, uint8_t *pData, uint16_t Size)
|
HAL_StatusTypeDef HAL_UART_Transmit_DMA(UART_HandleTypeDef *huart, uint8_t *pData, uint16_t Size)
|
||||||
|
@ -1307,7 +1300,6 @@ HAL_StatusTypeDef HAL_UART_Transmit_DMA(UART_HandleTypeDef *huart, uint8_t *pDat
|
||||||
return HAL_ERROR;
|
return HAL_ERROR;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Process Locked */
|
|
||||||
__HAL_LOCK(huart);
|
__HAL_LOCK(huart);
|
||||||
|
|
||||||
huart->pTxBuffPtr = pData;
|
huart->pTxBuffPtr = pData;
|
||||||
|
@ -1337,7 +1329,6 @@ HAL_StatusTypeDef HAL_UART_Transmit_DMA(UART_HandleTypeDef *huart, uint8_t *pDat
|
||||||
/* Set error code to DMA */
|
/* Set error code to DMA */
|
||||||
huart->ErrorCode = HAL_UART_ERROR_DMA;
|
huart->ErrorCode = HAL_UART_ERROR_DMA;
|
||||||
|
|
||||||
/* Process Unlocked */
|
|
||||||
__HAL_UNLOCK(huart);
|
__HAL_UNLOCK(huart);
|
||||||
|
|
||||||
/* Restore huart->gState to ready */
|
/* Restore huart->gState to ready */
|
||||||
|
@ -1349,7 +1340,6 @@ HAL_StatusTypeDef HAL_UART_Transmit_DMA(UART_HandleTypeDef *huart, uint8_t *pDat
|
||||||
/* Clear the TC flag in the ICR register */
|
/* Clear the TC flag in the ICR register */
|
||||||
__HAL_UART_CLEAR_FLAG(huart, UART_CLEAR_TCF);
|
__HAL_UART_CLEAR_FLAG(huart, UART_CLEAR_TCF);
|
||||||
|
|
||||||
/* Process Unlocked */
|
|
||||||
__HAL_UNLOCK(huart);
|
__HAL_UNLOCK(huart);
|
||||||
|
|
||||||
/* Enable the DMA transfer for transmit request by setting the DMAT bit
|
/* Enable the DMA transfer for transmit request by setting the DMAT bit
|
||||||
|
@ -1368,9 +1358,12 @@ HAL_StatusTypeDef HAL_UART_Transmit_DMA(UART_HandleTypeDef *huart, uint8_t *pDat
|
||||||
* @brief Receive an amount of data in DMA mode.
|
* @brief Receive an amount of data in DMA mode.
|
||||||
* @note When the UART parity is enabled (PCE = 1), the received data contain
|
* @note When the UART parity is enabled (PCE = 1), the received data contain
|
||||||
* the parity bit (MSB position).
|
* the parity bit (MSB position).
|
||||||
|
* @note When UART parity is not enabled (PCE = 0), and Word Length is configured to 9 bits (M1-M0 = 01),
|
||||||
|
* the received data is handled as a set of u16. In this case, Size must indicate the number
|
||||||
|
* of u16 available through pData.
|
||||||
* @param huart UART handle.
|
* @param huart UART handle.
|
||||||
* @param pData Pointer to data buffer.
|
* @param pData Pointer to data buffer (u8 or u16 data elements).
|
||||||
* @param Size Amount of data to be received.
|
* @param Size Amount of data elements (u8 or u16) to be received.
|
||||||
* @retval HAL status
|
* @retval HAL status
|
||||||
*/
|
*/
|
||||||
HAL_StatusTypeDef HAL_UART_Receive_DMA(UART_HandleTypeDef *huart, uint8_t *pData, uint16_t Size)
|
HAL_StatusTypeDef HAL_UART_Receive_DMA(UART_HandleTypeDef *huart, uint8_t *pData, uint16_t Size)
|
||||||
|
@ -1383,7 +1376,6 @@ HAL_StatusTypeDef HAL_UART_Receive_DMA(UART_HandleTypeDef *huart, uint8_t *pData
|
||||||
return HAL_ERROR;
|
return HAL_ERROR;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Process Locked */
|
|
||||||
__HAL_LOCK(huart);
|
__HAL_LOCK(huart);
|
||||||
|
|
||||||
huart->pRxBuffPtr = pData;
|
huart->pRxBuffPtr = pData;
|
||||||
|
@ -1412,7 +1404,6 @@ HAL_StatusTypeDef HAL_UART_Receive_DMA(UART_HandleTypeDef *huart, uint8_t *pData
|
||||||
/* Set error code to DMA */
|
/* Set error code to DMA */
|
||||||
huart->ErrorCode = HAL_UART_ERROR_DMA;
|
huart->ErrorCode = HAL_UART_ERROR_DMA;
|
||||||
|
|
||||||
/* Process Unlocked */
|
|
||||||
__HAL_UNLOCK(huart);
|
__HAL_UNLOCK(huart);
|
||||||
|
|
||||||
/* Restore huart->gState to ready */
|
/* Restore huart->gState to ready */
|
||||||
|
@ -1421,7 +1412,6 @@ HAL_StatusTypeDef HAL_UART_Receive_DMA(UART_HandleTypeDef *huart, uint8_t *pData
|
||||||
return HAL_ERROR;
|
return HAL_ERROR;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
/* Process Unlocked */
|
|
||||||
__HAL_UNLOCK(huart);
|
__HAL_UNLOCK(huart);
|
||||||
|
|
||||||
/* Enable the UART Parity Error Interrupt */
|
/* Enable the UART Parity Error Interrupt */
|
||||||
|
@ -1452,7 +1442,6 @@ HAL_StatusTypeDef HAL_UART_DMAPause(UART_HandleTypeDef *huart)
|
||||||
const HAL_UART_StateTypeDef gstate = huart->gState;
|
const HAL_UART_StateTypeDef gstate = huart->gState;
|
||||||
const HAL_UART_StateTypeDef rxstate = huart->RxState;
|
const HAL_UART_StateTypeDef rxstate = huart->RxState;
|
||||||
|
|
||||||
/* Process Locked */
|
|
||||||
__HAL_LOCK(huart);
|
__HAL_LOCK(huart);
|
||||||
|
|
||||||
if ((HAL_IS_BIT_SET(huart->Instance->CR3, USART_CR3_DMAT)) &&
|
if ((HAL_IS_BIT_SET(huart->Instance->CR3, USART_CR3_DMAT)) &&
|
||||||
|
@ -1472,7 +1461,6 @@ HAL_StatusTypeDef HAL_UART_DMAPause(UART_HandleTypeDef *huart)
|
||||||
CLEAR_BIT(huart->Instance->CR3, USART_CR3_DMAR);
|
CLEAR_BIT(huart->Instance->CR3, USART_CR3_DMAR);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Process Unlocked */
|
|
||||||
__HAL_UNLOCK(huart);
|
__HAL_UNLOCK(huart);
|
||||||
|
|
||||||
return HAL_OK;
|
return HAL_OK;
|
||||||
|
@ -1485,7 +1473,6 @@ HAL_StatusTypeDef HAL_UART_DMAPause(UART_HandleTypeDef *huart)
|
||||||
*/
|
*/
|
||||||
HAL_StatusTypeDef HAL_UART_DMAResume(UART_HandleTypeDef *huart)
|
HAL_StatusTypeDef HAL_UART_DMAResume(UART_HandleTypeDef *huart)
|
||||||
{
|
{
|
||||||
/* Process Locked */
|
|
||||||
__HAL_LOCK(huart);
|
__HAL_LOCK(huart);
|
||||||
|
|
||||||
if (huart->gState == HAL_UART_STATE_BUSY_TX)
|
if (huart->gState == HAL_UART_STATE_BUSY_TX)
|
||||||
|
@ -1506,7 +1493,6 @@ HAL_StatusTypeDef HAL_UART_DMAResume(UART_HandleTypeDef *huart)
|
||||||
SET_BIT(huart->Instance->CR3, USART_CR3_DMAR);
|
SET_BIT(huart->Instance->CR3, USART_CR3_DMAR);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Process Unlocked */
|
|
||||||
__HAL_UNLOCK(huart);
|
__HAL_UNLOCK(huart);
|
||||||
|
|
||||||
return HAL_OK;
|
return HAL_OK;
|
||||||
|
@ -1591,7 +1577,7 @@ HAL_StatusTypeDef HAL_UART_DMAStop(UART_HandleTypeDef *huart)
|
||||||
* - Set handle State to READY
|
* - Set handle State to READY
|
||||||
* @note This procedure is executed in blocking mode : when exiting function, Abort is considered as completed.
|
* @note This procedure is executed in blocking mode : when exiting function, Abort is considered as completed.
|
||||||
* @retval HAL status
|
* @retval HAL status
|
||||||
*/
|
*/
|
||||||
HAL_StatusTypeDef HAL_UART_Abort(UART_HandleTypeDef *huart)
|
HAL_StatusTypeDef HAL_UART_Abort(UART_HandleTypeDef *huart)
|
||||||
{
|
{
|
||||||
/* Disable TXEIE, TCIE, RXNE, PE and ERR (Frame error, noise error, overrun error) interrupts */
|
/* Disable TXEIE, TCIE, RXNE, PE and ERR (Frame error, noise error, overrun error) interrupts */
|
||||||
|
@ -1663,7 +1649,6 @@ HAL_StatusTypeDef HAL_UART_Abort(UART_HandleTypeDef *huart)
|
||||||
huart->gState = HAL_UART_STATE_READY;
|
huart->gState = HAL_UART_STATE_READY;
|
||||||
huart->RxState = HAL_UART_STATE_READY;
|
huart->RxState = HAL_UART_STATE_READY;
|
||||||
|
|
||||||
/* Reset Handle ErrorCode to No Error */
|
|
||||||
huart->ErrorCode = HAL_UART_ERROR_NONE;
|
huart->ErrorCode = HAL_UART_ERROR_NONE;
|
||||||
|
|
||||||
return HAL_OK;
|
return HAL_OK;
|
||||||
|
@ -1680,7 +1665,7 @@ HAL_StatusTypeDef HAL_UART_Abort(UART_HandleTypeDef *huart)
|
||||||
* - Set handle State to READY
|
* - Set handle State to READY
|
||||||
* @note This procedure is executed in blocking mode : when exiting function, Abort is considered as completed.
|
* @note This procedure is executed in blocking mode : when exiting function, Abort is considered as completed.
|
||||||
* @retval HAL status
|
* @retval HAL status
|
||||||
*/
|
*/
|
||||||
HAL_StatusTypeDef HAL_UART_AbortTransmit(UART_HandleTypeDef *huart)
|
HAL_StatusTypeDef HAL_UART_AbortTransmit(UART_HandleTypeDef *huart)
|
||||||
{
|
{
|
||||||
/* Disable TXEIE and TCIE interrupts */
|
/* Disable TXEIE and TCIE interrupts */
|
||||||
|
@ -1732,7 +1717,7 @@ HAL_StatusTypeDef HAL_UART_AbortTransmit(UART_HandleTypeDef *huart)
|
||||||
* - Set handle State to READY
|
* - Set handle State to READY
|
||||||
* @note This procedure is executed in blocking mode : when exiting function, Abort is considered as completed.
|
* @note This procedure is executed in blocking mode : when exiting function, Abort is considered as completed.
|
||||||
* @retval HAL status
|
* @retval HAL status
|
||||||
*/
|
*/
|
||||||
HAL_StatusTypeDef HAL_UART_AbortReceive(UART_HandleTypeDef *huart)
|
HAL_StatusTypeDef HAL_UART_AbortReceive(UART_HandleTypeDef *huart)
|
||||||
{
|
{
|
||||||
/* Disable RXNE, PE and ERR (Frame error, noise error, overrun error) interrupts */
|
/* Disable RXNE, PE and ERR (Frame error, noise error, overrun error) interrupts */
|
||||||
|
@ -1792,7 +1777,7 @@ HAL_StatusTypeDef HAL_UART_AbortReceive(UART_HandleTypeDef *huart)
|
||||||
* @note This procedure is executed in Interrupt mode, meaning that abort procedure could be
|
* @note This procedure is executed in Interrupt mode, meaning that abort procedure could be
|
||||||
* considered as completed only when user abort complete callback is executed (not when exiting function).
|
* considered as completed only when user abort complete callback is executed (not when exiting function).
|
||||||
* @retval HAL status
|
* @retval HAL status
|
||||||
*/
|
*/
|
||||||
HAL_StatusTypeDef HAL_UART_Abort_IT(UART_HandleTypeDef *huart)
|
HAL_StatusTypeDef HAL_UART_Abort_IT(UART_HandleTypeDef *huart)
|
||||||
{
|
{
|
||||||
uint32_t abortcplt = 1U;
|
uint32_t abortcplt = 1U;
|
||||||
|
@ -1931,7 +1916,7 @@ HAL_StatusTypeDef HAL_UART_Abort_IT(UART_HandleTypeDef *huart)
|
||||||
* @note This procedure is executed in Interrupt mode, meaning that abort procedure could be
|
* @note This procedure is executed in Interrupt mode, meaning that abort procedure could be
|
||||||
* considered as completed only when user abort complete callback is executed (not when exiting function).
|
* considered as completed only when user abort complete callback is executed (not when exiting function).
|
||||||
* @retval HAL status
|
* @retval HAL status
|
||||||
*/
|
*/
|
||||||
HAL_StatusTypeDef HAL_UART_AbortTransmit_IT(UART_HandleTypeDef *huart)
|
HAL_StatusTypeDef HAL_UART_AbortTransmit_IT(UART_HandleTypeDef *huart)
|
||||||
{
|
{
|
||||||
/* Disable interrupts */
|
/* Disable interrupts */
|
||||||
|
@ -2015,7 +2000,7 @@ HAL_StatusTypeDef HAL_UART_AbortTransmit_IT(UART_HandleTypeDef *huart)
|
||||||
* @note This procedure is executed in Interrupt mode, meaning that abort procedure could be
|
* @note This procedure is executed in Interrupt mode, meaning that abort procedure could be
|
||||||
* considered as completed only when user abort complete callback is executed (not when exiting function).
|
* considered as completed only when user abort complete callback is executed (not when exiting function).
|
||||||
* @retval HAL status
|
* @retval HAL status
|
||||||
*/
|
*/
|
||||||
HAL_StatusTypeDef HAL_UART_AbortReceive_IT(UART_HandleTypeDef *huart)
|
HAL_StatusTypeDef HAL_UART_AbortReceive_IT(UART_HandleTypeDef *huart)
|
||||||
{
|
{
|
||||||
/* Disable RXNE, PE and ERR (Frame error, noise error, overrun error) interrupts */
|
/* Disable RXNE, PE and ERR (Frame error, noise error, overrun error) interrupts */
|
||||||
|
@ -2110,7 +2095,7 @@ void HAL_UART_IRQHandler(UART_HandleTypeDef *huart)
|
||||||
uint32_t errorcode;
|
uint32_t errorcode;
|
||||||
|
|
||||||
/* If no error occurs */
|
/* If no error occurs */
|
||||||
errorflags = (isrflags & (uint32_t)(USART_ISR_PE | USART_ISR_FE | USART_ISR_ORE | USART_ISR_NE));
|
errorflags = (isrflags & (uint32_t)(USART_ISR_PE | USART_ISR_FE | USART_ISR_ORE | USART_ISR_NE | USART_ISR_RTOF));
|
||||||
if (errorflags == 0U)
|
if (errorflags == 0U)
|
||||||
{
|
{
|
||||||
/* UART in mode Receiver ---------------------------------------------------*/
|
/* UART in mode Receiver ---------------------------------------------------*/
|
||||||
|
@ -2164,10 +2149,18 @@ void HAL_UART_IRQHandler(UART_HandleTypeDef *huart)
|
||||||
huart->ErrorCode |= HAL_UART_ERROR_ORE;
|
huart->ErrorCode |= HAL_UART_ERROR_ORE;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Call UART Error Call back function if need be --------------------------*/
|
/* UART Receiver Timeout interrupt occurred ---------------------------------*/
|
||||||
|
if (((isrflags & USART_ISR_RTOF) != 0U) && ((cr1its & USART_CR1_RTOIE) != 0U))
|
||||||
|
{
|
||||||
|
__HAL_UART_CLEAR_FLAG(huart, UART_CLEAR_RTOF);
|
||||||
|
|
||||||
|
huart->ErrorCode |= HAL_UART_ERROR_RTO;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Call UART Error Call back function if need be ----------------------------*/
|
||||||
if (huart->ErrorCode != HAL_UART_ERROR_NONE)
|
if (huart->ErrorCode != HAL_UART_ERROR_NONE)
|
||||||
{
|
{
|
||||||
/* UART in mode Receiver ---------------------------------------------------*/
|
/* UART in mode Receiver --------------------------------------------------*/
|
||||||
if (((isrflags & USART_ISR_RXNE) != 0U)
|
if (((isrflags & USART_ISR_RXNE) != 0U)
|
||||||
&& ((cr1its & USART_CR1_RXNEIE) != 0U))
|
&& ((cr1its & USART_CR1_RXNEIE) != 0U))
|
||||||
{
|
{
|
||||||
|
@ -2177,11 +2170,14 @@ void HAL_UART_IRQHandler(UART_HandleTypeDef *huart)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/* If Overrun error occurs, or if any error occurs in DMA mode reception,
|
/* If Error is to be considered as blocking :
|
||||||
consider error as blocking */
|
- Receiver Timeout error in Reception
|
||||||
|
- Overrun error in Reception
|
||||||
|
- any error occurs in DMA mode reception
|
||||||
|
*/
|
||||||
errorcode = huart->ErrorCode;
|
errorcode = huart->ErrorCode;
|
||||||
if ((HAL_IS_BIT_SET(huart->Instance->CR3, USART_CR3_DMAR)) ||
|
if ((HAL_IS_BIT_SET(huart->Instance->CR3, USART_CR3_DMAR)) ||
|
||||||
((errorcode & HAL_UART_ERROR_ORE) != 0U))
|
((errorcode & (HAL_UART_ERROR_RTO | HAL_UART_ERROR_ORE)) != 0U))
|
||||||
{
|
{
|
||||||
/* Blocking error : transfer is aborted
|
/* Blocking error : transfer is aborted
|
||||||
Set the UART state ready to be able to start again the process,
|
Set the UART state ready to be able to start again the process,
|
||||||
|
@ -2249,6 +2245,26 @@ void HAL_UART_IRQHandler(UART_HandleTypeDef *huart)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
} /* End if some error occurs */
|
} /* End if some error occurs */
|
||||||
|
#if defined(USART_CR1_UESM)
|
||||||
|
|
||||||
|
/* UART wakeup from Stop mode interrupt occurred ---------------------------*/
|
||||||
|
if (((isrflags & USART_ISR_WUF) != 0U) && ((cr3its & USART_CR3_WUFIE) != 0U))
|
||||||
|
{
|
||||||
|
__HAL_UART_CLEAR_FLAG(huart, UART_CLEAR_WUF);
|
||||||
|
|
||||||
|
/* UART Rx state is not reset as a reception process might be ongoing.
|
||||||
|
If UART handle state fields need to be reset to READY, this could be done in Wakeup callback */
|
||||||
|
|
||||||
|
#if (USE_HAL_UART_REGISTER_CALLBACKS == 1)
|
||||||
|
/* Call registered Wakeup Callback */
|
||||||
|
huart->WakeupCallback(huart);
|
||||||
|
#else
|
||||||
|
/* Call legacy weak Wakeup Callback */
|
||||||
|
HAL_UARTEx_WakeupCallback(huart);
|
||||||
|
#endif /* USE_HAL_UART_REGISTER_CALLBACKS */
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
#endif /* USART_CR1_UESM */
|
||||||
|
|
||||||
/* UART in mode Transmitter ------------------------------------------------*/
|
/* UART in mode Transmitter ------------------------------------------------*/
|
||||||
if (((isrflags & USART_ISR_TXE) != 0U)
|
if (((isrflags & USART_ISR_TXE) != 0U)
|
||||||
|
@ -2390,6 +2406,23 @@ __weak void HAL_UART_AbortReceiveCpltCallback(UART_HandleTypeDef *huart)
|
||||||
*/
|
*/
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#if defined(USART_CR1_UESM)
|
||||||
|
/**
|
||||||
|
* @brief UART wakeup from Stop mode callback.
|
||||||
|
* @param huart UART handle.
|
||||||
|
* @retval None
|
||||||
|
*/
|
||||||
|
__weak void HAL_UARTEx_WakeupCallback(UART_HandleTypeDef *huart)
|
||||||
|
{
|
||||||
|
/* Prevent unused argument(s) compilation warning */
|
||||||
|
UNUSED(huart);
|
||||||
|
|
||||||
|
/* NOTE : This function should not be modified, when the callback is needed,
|
||||||
|
the HAL_UARTEx_WakeupCallback can be implemented in the user file.
|
||||||
|
*/
|
||||||
|
}
|
||||||
|
|
||||||
|
#endif /* USART_CR1_UESM */
|
||||||
/**
|
/**
|
||||||
* @}
|
* @}
|
||||||
*/
|
*/
|
||||||
|
@ -2403,6 +2436,9 @@ __weak void HAL_UART_AbortReceiveCpltCallback(UART_HandleTypeDef *huart)
|
||||||
===============================================================================
|
===============================================================================
|
||||||
[..]
|
[..]
|
||||||
This subsection provides a set of functions allowing to control the UART.
|
This subsection provides a set of functions allowing to control the UART.
|
||||||
|
(+) HAL_UART_ReceiverTimeout_Config() API allows to configure the receiver timeout value on the fly
|
||||||
|
(+) HAL_UART_EnableReceiverTimeout() API enables the receiver timeout feature
|
||||||
|
(+) HAL_UART_DisableReceiverTimeout() API disables the receiver timeout feature
|
||||||
(+) HAL_MultiProcessor_EnableMuteMode() API enables mute mode
|
(+) HAL_MultiProcessor_EnableMuteMode() API enables mute mode
|
||||||
(+) HAL_MultiProcessor_DisableMuteMode() API disables mute mode
|
(+) HAL_MultiProcessor_DisableMuteMode() API disables mute mode
|
||||||
(+) HAL_MultiProcessor_EnterMuteMode() API enters mute mode
|
(+) HAL_MultiProcessor_EnterMuteMode() API enters mute mode
|
||||||
|
@ -2416,6 +2452,82 @@ __weak void HAL_UART_AbortReceiveCpltCallback(UART_HandleTypeDef *huart)
|
||||||
* @{
|
* @{
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Update on the fly the receiver timeout value in RTOR register.
|
||||||
|
* @param huart Pointer to a UART_HandleTypeDef structure that contains
|
||||||
|
* the configuration information for the specified UART module.
|
||||||
|
* @param TimeoutValue receiver timeout value in number of baud blocks. The timeout
|
||||||
|
* value must be less or equal to 0x0FFFFFFFF.
|
||||||
|
* @retval None
|
||||||
|
*/
|
||||||
|
void HAL_UART_ReceiverTimeout_Config(UART_HandleTypeDef *huart, uint32_t TimeoutValue)
|
||||||
|
{
|
||||||
|
assert_param(IS_UART_RECEIVER_TIMEOUT_VALUE(TimeoutValue));
|
||||||
|
MODIFY_REG(huart->Instance->RTOR, USART_RTOR_RTO, TimeoutValue);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Enable the UART receiver timeout feature.
|
||||||
|
* @param huart Pointer to a UART_HandleTypeDef structure that contains
|
||||||
|
* the configuration information for the specified UART module.
|
||||||
|
* @retval HAL status
|
||||||
|
*/
|
||||||
|
HAL_StatusTypeDef HAL_UART_EnableReceiverTimeout(UART_HandleTypeDef *huart)
|
||||||
|
{
|
||||||
|
if (huart->gState == HAL_UART_STATE_READY)
|
||||||
|
{
|
||||||
|
/* Process Locked */
|
||||||
|
__HAL_LOCK(huart);
|
||||||
|
|
||||||
|
huart->gState = HAL_UART_STATE_BUSY;
|
||||||
|
|
||||||
|
/* Set the USART RTOEN bit */
|
||||||
|
SET_BIT(huart->Instance->CR2, USART_CR2_RTOEN);
|
||||||
|
|
||||||
|
huart->gState = HAL_UART_STATE_READY;
|
||||||
|
|
||||||
|
/* Process Unlocked */
|
||||||
|
__HAL_UNLOCK(huart);
|
||||||
|
|
||||||
|
return HAL_OK;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
return HAL_BUSY;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Disable the UART receiver timeout feature.
|
||||||
|
* @param huart Pointer to a UART_HandleTypeDef structure that contains
|
||||||
|
* the configuration information for the specified UART module.
|
||||||
|
* @retval HAL status
|
||||||
|
*/
|
||||||
|
HAL_StatusTypeDef HAL_UART_DisableReceiverTimeout(UART_HandleTypeDef *huart)
|
||||||
|
{
|
||||||
|
if (huart->gState == HAL_UART_STATE_READY)
|
||||||
|
{
|
||||||
|
/* Process Locked */
|
||||||
|
__HAL_LOCK(huart);
|
||||||
|
|
||||||
|
huart->gState = HAL_UART_STATE_BUSY;
|
||||||
|
|
||||||
|
/* Clear the USART RTOEN bit */
|
||||||
|
CLEAR_BIT(huart->Instance->CR2, USART_CR2_RTOEN);
|
||||||
|
|
||||||
|
huart->gState = HAL_UART_STATE_READY;
|
||||||
|
|
||||||
|
/* Process Unlocked */
|
||||||
|
__HAL_UNLOCK(huart);
|
||||||
|
|
||||||
|
return HAL_OK;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
return HAL_BUSY;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief Enable UART in mute mode (does not mean UART enters mute mode;
|
* @brief Enable UART in mute mode (does not mean UART enters mute mode;
|
||||||
* to enter mute mode, HAL_MultiProcessor_EnterMuteMode() API must be called).
|
* to enter mute mode, HAL_MultiProcessor_EnterMuteMode() API must be called).
|
||||||
|
@ -2424,7 +2536,6 @@ __weak void HAL_UART_AbortReceiveCpltCallback(UART_HandleTypeDef *huart)
|
||||||
*/
|
*/
|
||||||
HAL_StatusTypeDef HAL_MultiProcessor_EnableMuteMode(UART_HandleTypeDef *huart)
|
HAL_StatusTypeDef HAL_MultiProcessor_EnableMuteMode(UART_HandleTypeDef *huart)
|
||||||
{
|
{
|
||||||
/* Process Locked */
|
|
||||||
__HAL_LOCK(huart);
|
__HAL_LOCK(huart);
|
||||||
|
|
||||||
huart->gState = HAL_UART_STATE_BUSY;
|
huart->gState = HAL_UART_STATE_BUSY;
|
||||||
|
@ -2445,7 +2556,6 @@ HAL_StatusTypeDef HAL_MultiProcessor_EnableMuteMode(UART_HandleTypeDef *huart)
|
||||||
*/
|
*/
|
||||||
HAL_StatusTypeDef HAL_MultiProcessor_DisableMuteMode(UART_HandleTypeDef *huart)
|
HAL_StatusTypeDef HAL_MultiProcessor_DisableMuteMode(UART_HandleTypeDef *huart)
|
||||||
{
|
{
|
||||||
/* Process Locked */
|
|
||||||
__HAL_LOCK(huart);
|
__HAL_LOCK(huart);
|
||||||
|
|
||||||
huart->gState = HAL_UART_STATE_BUSY;
|
huart->gState = HAL_UART_STATE_BUSY;
|
||||||
|
@ -2476,7 +2586,6 @@ void HAL_MultiProcessor_EnterMuteMode(UART_HandleTypeDef *huart)
|
||||||
*/
|
*/
|
||||||
HAL_StatusTypeDef HAL_HalfDuplex_EnableTransmitter(UART_HandleTypeDef *huart)
|
HAL_StatusTypeDef HAL_HalfDuplex_EnableTransmitter(UART_HandleTypeDef *huart)
|
||||||
{
|
{
|
||||||
/* Process Locked */
|
|
||||||
__HAL_LOCK(huart);
|
__HAL_LOCK(huart);
|
||||||
huart->gState = HAL_UART_STATE_BUSY;
|
huart->gState = HAL_UART_STATE_BUSY;
|
||||||
|
|
||||||
|
@ -2488,7 +2597,6 @@ HAL_StatusTypeDef HAL_HalfDuplex_EnableTransmitter(UART_HandleTypeDef *huart)
|
||||||
|
|
||||||
huart->gState = HAL_UART_STATE_READY;
|
huart->gState = HAL_UART_STATE_READY;
|
||||||
|
|
||||||
/* Process Unlocked */
|
|
||||||
__HAL_UNLOCK(huart);
|
__HAL_UNLOCK(huart);
|
||||||
|
|
||||||
return HAL_OK;
|
return HAL_OK;
|
||||||
|
@ -2501,7 +2609,6 @@ HAL_StatusTypeDef HAL_HalfDuplex_EnableTransmitter(UART_HandleTypeDef *huart)
|
||||||
*/
|
*/
|
||||||
HAL_StatusTypeDef HAL_HalfDuplex_EnableReceiver(UART_HandleTypeDef *huart)
|
HAL_StatusTypeDef HAL_HalfDuplex_EnableReceiver(UART_HandleTypeDef *huart)
|
||||||
{
|
{
|
||||||
/* Process Locked */
|
|
||||||
__HAL_LOCK(huart);
|
__HAL_LOCK(huart);
|
||||||
huart->gState = HAL_UART_STATE_BUSY;
|
huart->gState = HAL_UART_STATE_BUSY;
|
||||||
|
|
||||||
|
@ -2513,7 +2620,6 @@ HAL_StatusTypeDef HAL_HalfDuplex_EnableReceiver(UART_HandleTypeDef *huart)
|
||||||
|
|
||||||
huart->gState = HAL_UART_STATE_READY;
|
huart->gState = HAL_UART_STATE_READY;
|
||||||
|
|
||||||
/* Process Unlocked */
|
|
||||||
__HAL_UNLOCK(huart);
|
__HAL_UNLOCK(huart);
|
||||||
|
|
||||||
return HAL_OK;
|
return HAL_OK;
|
||||||
|
@ -2530,7 +2636,6 @@ HAL_StatusTypeDef HAL_LIN_SendBreak(UART_HandleTypeDef *huart)
|
||||||
/* Check the parameters */
|
/* Check the parameters */
|
||||||
assert_param(IS_UART_LIN_INSTANCE(huart->Instance));
|
assert_param(IS_UART_LIN_INSTANCE(huart->Instance));
|
||||||
|
|
||||||
/* Process Locked */
|
|
||||||
__HAL_LOCK(huart);
|
__HAL_LOCK(huart);
|
||||||
|
|
||||||
huart->gState = HAL_UART_STATE_BUSY;
|
huart->gState = HAL_UART_STATE_BUSY;
|
||||||
|
@ -2540,7 +2645,6 @@ HAL_StatusTypeDef HAL_LIN_SendBreak(UART_HandleTypeDef *huart)
|
||||||
|
|
||||||
huart->gState = HAL_UART_STATE_READY;
|
huart->gState = HAL_UART_STATE_READY;
|
||||||
|
|
||||||
/* Process Unlocked */
|
|
||||||
__HAL_UNLOCK(huart);
|
__HAL_UNLOCK(huart);
|
||||||
|
|
||||||
return HAL_OK;
|
return HAL_OK;
|
||||||
|
@ -2551,8 +2655,8 @@ HAL_StatusTypeDef HAL_LIN_SendBreak(UART_HandleTypeDef *huart)
|
||||||
*/
|
*/
|
||||||
|
|
||||||
/** @defgroup UART_Exported_Functions_Group4 Peripheral State and Error functions
|
/** @defgroup UART_Exported_Functions_Group4 Peripheral State and Error functions
|
||||||
* @brief UART Peripheral State functions
|
* @brief UART Peripheral State functions
|
||||||
*
|
*
|
||||||
@verbatim
|
@verbatim
|
||||||
==============================================================================
|
==============================================================================
|
||||||
##### Peripheral State and Error functions #####
|
##### Peripheral State and Error functions #####
|
||||||
|
@ -2574,7 +2678,8 @@ HAL_StatusTypeDef HAL_LIN_SendBreak(UART_HandleTypeDef *huart)
|
||||||
*/
|
*/
|
||||||
HAL_UART_StateTypeDef HAL_UART_GetState(UART_HandleTypeDef *huart)
|
HAL_UART_StateTypeDef HAL_UART_GetState(UART_HandleTypeDef *huart)
|
||||||
{
|
{
|
||||||
uint32_t temp1, temp2;
|
uint32_t temp1;
|
||||||
|
uint32_t temp2;
|
||||||
temp1 = huart->gState;
|
temp1 = huart->gState;
|
||||||
temp2 = huart->RxState;
|
temp2 = huart->RxState;
|
||||||
|
|
||||||
|
@ -2586,7 +2691,7 @@ HAL_UART_StateTypeDef HAL_UART_GetState(UART_HandleTypeDef *huart)
|
||||||
* @param huart Pointer to a UART_HandleTypeDef structure that contains
|
* @param huart Pointer to a UART_HandleTypeDef structure that contains
|
||||||
* the configuration information for the specified UART.
|
* the configuration information for the specified UART.
|
||||||
* @retval UART Error Code
|
* @retval UART Error Code
|
||||||
*/
|
*/
|
||||||
uint32_t HAL_UART_GetError(UART_HandleTypeDef *huart)
|
uint32_t HAL_UART_GetError(UART_HandleTypeDef *huart)
|
||||||
{
|
{
|
||||||
return huart->ErrorCode;
|
return huart->ErrorCode;
|
||||||
|
@ -2620,6 +2725,9 @@ void UART_InitCallbacksToDefault(UART_HandleTypeDef *huart)
|
||||||
huart->AbortCpltCallback = HAL_UART_AbortCpltCallback; /* Legacy weak AbortCpltCallback */
|
huart->AbortCpltCallback = HAL_UART_AbortCpltCallback; /* Legacy weak AbortCpltCallback */
|
||||||
huart->AbortTransmitCpltCallback = HAL_UART_AbortTransmitCpltCallback; /* Legacy weak AbortTransmitCpltCallback */
|
huart->AbortTransmitCpltCallback = HAL_UART_AbortTransmitCpltCallback; /* Legacy weak AbortTransmitCpltCallback */
|
||||||
huart->AbortReceiveCpltCallback = HAL_UART_AbortReceiveCpltCallback; /* Legacy weak AbortReceiveCpltCallback */
|
huart->AbortReceiveCpltCallback = HAL_UART_AbortReceiveCpltCallback; /* Legacy weak AbortReceiveCpltCallback */
|
||||||
|
#if defined(USART_CR1_UESM)
|
||||||
|
huart->WakeupCallback = HAL_UARTEx_WakeupCallback; /* Legacy weak WakeupCallback */
|
||||||
|
#endif /* USART_CR1_UESM */
|
||||||
|
|
||||||
}
|
}
|
||||||
#endif /* USE_HAL_UART_REGISTER_CALLBACKS */
|
#endif /* USE_HAL_UART_REGISTER_CALLBACKS */
|
||||||
|
@ -2636,6 +2744,7 @@ HAL_StatusTypeDef UART_SetConfig(UART_HandleTypeDef *huart)
|
||||||
UART_ClockSourceTypeDef clocksource;
|
UART_ClockSourceTypeDef clocksource;
|
||||||
uint32_t usartdiv = 0x00000000U;
|
uint32_t usartdiv = 0x00000000U;
|
||||||
HAL_StatusTypeDef ret = HAL_OK;
|
HAL_StatusTypeDef ret = HAL_OK;
|
||||||
|
uint32_t pclk;
|
||||||
|
|
||||||
/* Check the parameters */
|
/* Check the parameters */
|
||||||
assert_param(IS_UART_BAUDRATE(huart->Init.BaudRate));
|
assert_param(IS_UART_BAUDRATE(huart->Init.BaudRate));
|
||||||
|
@ -2683,21 +2792,23 @@ HAL_StatusTypeDef UART_SetConfig(UART_HandleTypeDef *huart)
|
||||||
switch (clocksource)
|
switch (clocksource)
|
||||||
{
|
{
|
||||||
case UART_CLOCKSOURCE_PCLK1:
|
case UART_CLOCKSOURCE_PCLK1:
|
||||||
usartdiv = (uint16_t)(UART_DIV_SAMPLING8(HAL_RCC_GetPCLK1Freq(), huart->Init.BaudRate));
|
pclk = HAL_RCC_GetPCLK1Freq();
|
||||||
|
usartdiv = (uint16_t)(UART_DIV_SAMPLING8(pclk, huart->Init.BaudRate));
|
||||||
break;
|
break;
|
||||||
case UART_CLOCKSOURCE_PCLK2:
|
case UART_CLOCKSOURCE_PCLK2:
|
||||||
usartdiv = (uint16_t)(UART_DIV_SAMPLING8(HAL_RCC_GetPCLK2Freq(), huart->Init.BaudRate));
|
pclk = HAL_RCC_GetPCLK2Freq();
|
||||||
|
usartdiv = (uint16_t)(UART_DIV_SAMPLING8(pclk, huart->Init.BaudRate));
|
||||||
break;
|
break;
|
||||||
case UART_CLOCKSOURCE_HSI:
|
case UART_CLOCKSOURCE_HSI:
|
||||||
usartdiv = (uint16_t)(UART_DIV_SAMPLING8(HSI_VALUE, huart->Init.BaudRate));
|
usartdiv = (uint16_t)(UART_DIV_SAMPLING8(HSI_VALUE, huart->Init.BaudRate));
|
||||||
break;
|
break;
|
||||||
case UART_CLOCKSOURCE_SYSCLK:
|
case UART_CLOCKSOURCE_SYSCLK:
|
||||||
usartdiv = (uint16_t)(UART_DIV_SAMPLING8(HAL_RCC_GetSysClockFreq(), huart->Init.BaudRate));
|
pclk = HAL_RCC_GetSysClockFreq();
|
||||||
|
usartdiv = (uint16_t)(UART_DIV_SAMPLING8(pclk, huart->Init.BaudRate));
|
||||||
break;
|
break;
|
||||||
case UART_CLOCKSOURCE_LSE:
|
case UART_CLOCKSOURCE_LSE:
|
||||||
usartdiv = (uint16_t)(UART_DIV_SAMPLING8(LSE_VALUE, huart->Init.BaudRate));
|
usartdiv = (uint16_t)(UART_DIV_SAMPLING8(LSE_VALUE, huart->Init.BaudRate));
|
||||||
break;
|
break;
|
||||||
case UART_CLOCKSOURCE_UNDEFINED:
|
|
||||||
default:
|
default:
|
||||||
ret = HAL_ERROR;
|
ret = HAL_ERROR;
|
||||||
break;
|
break;
|
||||||
|
@ -2720,21 +2831,23 @@ HAL_StatusTypeDef UART_SetConfig(UART_HandleTypeDef *huart)
|
||||||
switch (clocksource)
|
switch (clocksource)
|
||||||
{
|
{
|
||||||
case UART_CLOCKSOURCE_PCLK1:
|
case UART_CLOCKSOURCE_PCLK1:
|
||||||
usartdiv = (uint16_t)(UART_DIV_SAMPLING16(HAL_RCC_GetPCLK1Freq(), huart->Init.BaudRate));
|
pclk = HAL_RCC_GetPCLK1Freq();
|
||||||
|
usartdiv = (uint16_t)(UART_DIV_SAMPLING16(pclk, huart->Init.BaudRate));
|
||||||
break;
|
break;
|
||||||
case UART_CLOCKSOURCE_PCLK2:
|
case UART_CLOCKSOURCE_PCLK2:
|
||||||
usartdiv = (uint16_t)(UART_DIV_SAMPLING16(HAL_RCC_GetPCLK2Freq(), huart->Init.BaudRate));
|
pclk = HAL_RCC_GetPCLK2Freq();
|
||||||
|
usartdiv = (uint16_t)(UART_DIV_SAMPLING16(pclk, huart->Init.BaudRate));
|
||||||
break;
|
break;
|
||||||
case UART_CLOCKSOURCE_HSI:
|
case UART_CLOCKSOURCE_HSI:
|
||||||
usartdiv = (uint16_t)(UART_DIV_SAMPLING16(HSI_VALUE, huart->Init.BaudRate));
|
usartdiv = (uint16_t)(UART_DIV_SAMPLING16(HSI_VALUE, huart->Init.BaudRate));
|
||||||
break;
|
break;
|
||||||
case UART_CLOCKSOURCE_SYSCLK:
|
case UART_CLOCKSOURCE_SYSCLK:
|
||||||
usartdiv = (uint16_t)(UART_DIV_SAMPLING16(HAL_RCC_GetSysClockFreq(), huart->Init.BaudRate));
|
pclk = HAL_RCC_GetSysClockFreq();
|
||||||
|
usartdiv = (uint16_t)(UART_DIV_SAMPLING16(pclk, huart->Init.BaudRate));
|
||||||
break;
|
break;
|
||||||
case UART_CLOCKSOURCE_LSE:
|
case UART_CLOCKSOURCE_LSE:
|
||||||
usartdiv = (uint16_t)(UART_DIV_SAMPLING16(LSE_VALUE, huart->Init.BaudRate));
|
usartdiv = (uint16_t)(UART_DIV_SAMPLING16(LSE_VALUE, huart->Init.BaudRate));
|
||||||
break;
|
break;
|
||||||
case UART_CLOCKSOURCE_UNDEFINED:
|
|
||||||
default:
|
default:
|
||||||
ret = HAL_ERROR;
|
ret = HAL_ERROR;
|
||||||
break;
|
break;
|
||||||
|
@ -2858,12 +2971,24 @@ HAL_StatusTypeDef UART_CheckIdleState(UART_HandleTypeDef *huart)
|
||||||
return HAL_TIMEOUT;
|
return HAL_TIMEOUT;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
#if defined(USART_ISR_REACK)
|
||||||
|
|
||||||
|
/* Check if the Receiver is enabled */
|
||||||
|
if ((huart->Instance->CR1 & USART_CR1_RE) == USART_CR1_RE)
|
||||||
|
{
|
||||||
|
/* Wait until REACK flag is set */
|
||||||
|
if (UART_WaitOnFlagUntilTimeout(huart, USART_ISR_REACK, RESET, tickstart, HAL_UART_TIMEOUT_VALUE) != HAL_OK)
|
||||||
|
{
|
||||||
|
/* Timeout occurred */
|
||||||
|
return HAL_TIMEOUT;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
/* Initialize the UART State */
|
/* Initialize the UART State */
|
||||||
huart->gState = HAL_UART_STATE_READY;
|
huart->gState = HAL_UART_STATE_READY;
|
||||||
huart->RxState = HAL_UART_STATE_READY;
|
huart->RxState = HAL_UART_STATE_READY;
|
||||||
|
|
||||||
/* Process Unlocked */
|
|
||||||
__HAL_UNLOCK(huart);
|
__HAL_UNLOCK(huart);
|
||||||
|
|
||||||
return HAL_OK;
|
return HAL_OK;
|
||||||
|
@ -2878,7 +3003,8 @@ HAL_StatusTypeDef UART_CheckIdleState(UART_HandleTypeDef *huart)
|
||||||
* @param Timeout Timeout duration
|
* @param Timeout Timeout duration
|
||||||
* @retval HAL status
|
* @retval HAL status
|
||||||
*/
|
*/
|
||||||
HAL_StatusTypeDef UART_WaitOnFlagUntilTimeout(UART_HandleTypeDef *huart, uint32_t Flag, FlagStatus Status, uint32_t Tickstart, uint32_t Timeout)
|
HAL_StatusTypeDef UART_WaitOnFlagUntilTimeout(UART_HandleTypeDef *huart, uint32_t Flag, FlagStatus Status,
|
||||||
|
uint32_t Tickstart, uint32_t Timeout)
|
||||||
{
|
{
|
||||||
/* Wait until flag is set */
|
/* Wait until flag is set */
|
||||||
while ((__HAL_UART_GET_FLAG(huart, Flag) ? SET : RESET) == Status)
|
while ((__HAL_UART_GET_FLAG(huart, Flag) ? SET : RESET) == Status)
|
||||||
|
@ -2895,11 +3021,32 @@ HAL_StatusTypeDef UART_WaitOnFlagUntilTimeout(UART_HandleTypeDef *huart, uint32_
|
||||||
huart->gState = HAL_UART_STATE_READY;
|
huart->gState = HAL_UART_STATE_READY;
|
||||||
huart->RxState = HAL_UART_STATE_READY;
|
huart->RxState = HAL_UART_STATE_READY;
|
||||||
|
|
||||||
/* Process Unlocked */
|
|
||||||
__HAL_UNLOCK(huart);
|
__HAL_UNLOCK(huart);
|
||||||
|
|
||||||
return HAL_TIMEOUT;
|
return HAL_TIMEOUT;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (READ_BIT(huart->Instance->CR1, USART_CR1_RE) != 0U)
|
||||||
|
{
|
||||||
|
if (__HAL_UART_GET_FLAG(huart, UART_FLAG_RTOF) == SET)
|
||||||
|
{
|
||||||
|
/* Clear Receiver Timeout flag*/
|
||||||
|
__HAL_UART_CLEAR_FLAG(huart, UART_CLEAR_RTOF);
|
||||||
|
|
||||||
|
/* Disable TXE, RXNE, PE and ERR (Frame error, noise error, overrun error) interrupts for the interrupt process */
|
||||||
|
CLEAR_BIT(huart->Instance->CR1, (USART_CR1_RXNEIE | USART_CR1_PEIE | USART_CR1_TXEIE));
|
||||||
|
CLEAR_BIT(huart->Instance->CR3, USART_CR3_EIE);
|
||||||
|
|
||||||
|
huart->gState = HAL_UART_STATE_READY;
|
||||||
|
huart->RxState = HAL_UART_STATE_READY;
|
||||||
|
huart->ErrorCode = HAL_UART_ERROR_RTO;
|
||||||
|
|
||||||
|
/* Process Unlocked */
|
||||||
|
__HAL_UNLOCK(huart);
|
||||||
|
|
||||||
|
return HAL_TIMEOUT;
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return HAL_OK;
|
return HAL_OK;
|
||||||
|
|
|
@ -57,6 +57,9 @@
|
||||||
/** @defgroup UARTEx_Private_Functions UARTEx Private Functions
|
/** @defgroup UARTEx_Private_Functions UARTEx Private Functions
|
||||||
* @{
|
* @{
|
||||||
*/
|
*/
|
||||||
|
#if defined(USART_CR1_UESM)
|
||||||
|
static void UARTEx_Wakeup_AddressConfig(UART_HandleTypeDef *huart, UART_WakeUpTypeDef WakeUpSelection);
|
||||||
|
#endif /* USART_CR1_UESM */
|
||||||
/**
|
/**
|
||||||
* @}
|
* @}
|
||||||
*/
|
*/
|
||||||
|
@ -144,7 +147,8 @@
|
||||||
* oversampling rate).
|
* oversampling rate).
|
||||||
* @retval HAL status
|
* @retval HAL status
|
||||||
*/
|
*/
|
||||||
HAL_StatusTypeDef HAL_RS485Ex_Init(UART_HandleTypeDef *huart, uint32_t Polarity, uint32_t AssertionTime, uint32_t DeassertionTime)
|
HAL_StatusTypeDef HAL_RS485Ex_Init(UART_HandleTypeDef *huart, uint32_t Polarity, uint32_t AssertionTime,
|
||||||
|
uint32_t DeassertionTime)
|
||||||
{
|
{
|
||||||
uint32_t temp;
|
uint32_t temp;
|
||||||
|
|
||||||
|
@ -224,42 +228,74 @@ HAL_StatusTypeDef HAL_RS485Ex_Init(UART_HandleTypeDef *huart, uint32_t Polarity,
|
||||||
* @}
|
* @}
|
||||||
*/
|
*/
|
||||||
|
|
||||||
/** @defgroup UARTEx_Exported_Functions_Group2 IO operation functions
|
|
||||||
* @brief Extended functions
|
|
||||||
*
|
|
||||||
@verbatim
|
|
||||||
===============================================================================
|
|
||||||
##### IO operation functions #####
|
|
||||||
===============================================================================
|
|
||||||
This subsection provides a set of Wakeup and FIFO mode related callback functions.
|
|
||||||
|
|
||||||
@endverbatim
|
|
||||||
* @{
|
|
||||||
*/
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @}
|
|
||||||
*/
|
|
||||||
|
|
||||||
/** @defgroup UARTEx_Exported_Functions_Group3 Peripheral Control functions
|
/** @defgroup UARTEx_Exported_Functions_Group3 Peripheral Control functions
|
||||||
* @brief Extended Peripheral Control functions
|
* @brief Extended Peripheral Control functions
|
||||||
*
|
*
|
||||||
@verbatim
|
@verbatim
|
||||||
===============================================================================
|
===============================================================================
|
||||||
##### Peripheral Control functions #####
|
##### Peripheral Control functions #####
|
||||||
===============================================================================
|
===============================================================================
|
||||||
[..] This section provides the following functions:
|
[..] This section provides the following functions:
|
||||||
|
(+) HAL_UARTEx_EnableClockStopMode() API enables the UART clock (HSI or LSE only) during stop mode
|
||||||
|
(+) HAL_UARTEx_DisableClockStopMode() API disables the above functionality
|
||||||
(+) HAL_MultiProcessorEx_AddressLength_Set() API optionally sets the UART node address
|
(+) HAL_MultiProcessorEx_AddressLength_Set() API optionally sets the UART node address
|
||||||
detection length to more than 4 bits for multiprocessor address mark wake up.
|
detection length to more than 4 bits for multiprocessor address mark wake up.
|
||||||
|
#if defined(USART_CR1_UESM)
|
||||||
|
(+) HAL_UARTEx_StopModeWakeUpSourceConfig() API defines the wake-up from stop mode
|
||||||
|
trigger: address match, Start Bit detection or RXNE bit status.
|
||||||
|
(+) HAL_UARTEx_EnableStopMode() API enables the UART to wake up the MCU from stop mode
|
||||||
|
(+) HAL_UARTEx_DisableStopMode() API disables the above functionality
|
||||||
|
#endif
|
||||||
|
|
||||||
@endverbatim
|
@endverbatim
|
||||||
* @{
|
* @{
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
#if defined(USART_CR3_UCESM)
|
||||||
|
/**
|
||||||
|
* @brief Keep UART Clock enabled when in Stop Mode.
|
||||||
|
* @note When the USART clock source is configured to be LSE or HSI, it is possible to keep enabled
|
||||||
|
* this clock during STOP mode by setting the UCESM bit in USART_CR3 control register.
|
||||||
|
* @note When LPUART is used to wakeup from stop with LSE is selected as LPUART clock source,
|
||||||
|
* and desired baud rate is 9600 baud, the bit UCESM bit in LPUART_CR3 control register must be set.
|
||||||
|
* @param huart UART handle.
|
||||||
|
* @retval HAL status
|
||||||
|
*/
|
||||||
|
HAL_StatusTypeDef HAL_UARTEx_EnableClockStopMode(UART_HandleTypeDef *huart)
|
||||||
|
{
|
||||||
|
/* Process Locked */
|
||||||
|
__HAL_LOCK(huart);
|
||||||
|
|
||||||
|
/* Set UCESM bit */
|
||||||
|
SET_BIT(huart->Instance->CR3, USART_CR3_UCESM);
|
||||||
|
|
||||||
|
/* Process Unlocked */
|
||||||
|
__HAL_UNLOCK(huart);
|
||||||
|
|
||||||
|
return HAL_OK;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Disable UART Clock when in Stop Mode.
|
||||||
|
* @param huart UART handle.
|
||||||
|
* @retval HAL status
|
||||||
|
*/
|
||||||
|
HAL_StatusTypeDef HAL_UARTEx_DisableClockStopMode(UART_HandleTypeDef *huart)
|
||||||
|
{
|
||||||
|
/* Process Locked */
|
||||||
|
__HAL_LOCK(huart);
|
||||||
|
|
||||||
|
/* Clear UCESM bit */
|
||||||
|
CLEAR_BIT(huart->Instance->CR3, USART_CR3_UCESM);
|
||||||
|
|
||||||
|
/* Process Unlocked */
|
||||||
|
__HAL_UNLOCK(huart);
|
||||||
|
|
||||||
|
return HAL_OK;
|
||||||
|
}
|
||||||
|
|
||||||
|
#endif /* USART_CR3_UCESM */
|
||||||
/**
|
/**
|
||||||
* @brief By default in multiprocessor mode, when the wake up method is set
|
* @brief By default in multiprocessor mode, when the wake up method is set
|
||||||
* to address mark, the UART handles only 4-bit long addresses detection;
|
* to address mark, the UART handles only 4-bit long addresses detection;
|
||||||
|
@ -299,8 +335,108 @@ HAL_StatusTypeDef HAL_MultiProcessorEx_AddressLength_Set(UART_HandleTypeDef *hua
|
||||||
return (UART_CheckIdleState(huart));
|
return (UART_CheckIdleState(huart));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#if defined(USART_CR1_UESM)
|
||||||
|
/**
|
||||||
|
* @brief Set Wakeup from Stop mode interrupt flag selection.
|
||||||
|
* @note It is the application responsibility to enable the interrupt used as
|
||||||
|
* usart_wkup interrupt source before entering low-power mode.
|
||||||
|
* @param huart UART handle.
|
||||||
|
* @param WakeUpSelection Address match, Start Bit detection or RXNE/RXFNE bit status.
|
||||||
|
* This parameter can be one of the following values:
|
||||||
|
* @arg @ref UART_WAKEUP_ON_ADDRESS
|
||||||
|
* @arg @ref UART_WAKEUP_ON_STARTBIT
|
||||||
|
* @arg @ref UART_WAKEUP_ON_READDATA_NONEMPTY
|
||||||
|
* @retval HAL status
|
||||||
|
*/
|
||||||
|
HAL_StatusTypeDef HAL_UARTEx_StopModeWakeUpSourceConfig(UART_HandleTypeDef *huart, UART_WakeUpTypeDef WakeUpSelection)
|
||||||
|
{
|
||||||
|
HAL_StatusTypeDef status = HAL_OK;
|
||||||
|
uint32_t tickstart;
|
||||||
|
|
||||||
|
/* check the wake-up from stop mode UART instance */
|
||||||
|
assert_param(IS_UART_WAKEUP_FROMSTOP_INSTANCE(huart->Instance));
|
||||||
|
/* check the wake-up selection parameter */
|
||||||
|
assert_param(IS_UART_WAKEUP_SELECTION(WakeUpSelection.WakeUpEvent));
|
||||||
|
|
||||||
|
/* Process Locked */
|
||||||
|
__HAL_LOCK(huart);
|
||||||
|
|
||||||
|
huart->gState = HAL_UART_STATE_BUSY;
|
||||||
|
|
||||||
|
/* Disable the Peripheral */
|
||||||
|
__HAL_UART_DISABLE(huart);
|
||||||
|
|
||||||
|
/* Set the wake-up selection scheme */
|
||||||
|
MODIFY_REG(huart->Instance->CR3, USART_CR3_WUS, WakeUpSelection.WakeUpEvent);
|
||||||
|
|
||||||
|
if (WakeUpSelection.WakeUpEvent == UART_WAKEUP_ON_ADDRESS)
|
||||||
|
{
|
||||||
|
UARTEx_Wakeup_AddressConfig(huart, WakeUpSelection);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Enable the Peripheral */
|
||||||
|
__HAL_UART_ENABLE(huart);
|
||||||
|
|
||||||
|
/* Init tickstart for timeout managment*/
|
||||||
|
tickstart = HAL_GetTick();
|
||||||
|
|
||||||
|
/* Wait until REACK flag is set */
|
||||||
|
if (UART_WaitOnFlagUntilTimeout(huart, USART_ISR_REACK, RESET, tickstart, HAL_UART_TIMEOUT_VALUE) != HAL_OK)
|
||||||
|
{
|
||||||
|
status = HAL_TIMEOUT;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
/* Initialize the UART State */
|
||||||
|
huart->gState = HAL_UART_STATE_READY;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Process Unlocked */
|
||||||
|
__HAL_UNLOCK(huart);
|
||||||
|
|
||||||
|
return status;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Enable UART Stop Mode.
|
||||||
|
* @note The UART is able to wake up the MCU from Stop 1 mode as long as UART clock is HSI or LSE.
|
||||||
|
* @param huart UART handle.
|
||||||
|
* @retval HAL status
|
||||||
|
*/
|
||||||
|
HAL_StatusTypeDef HAL_UARTEx_EnableStopMode(UART_HandleTypeDef *huart)
|
||||||
|
{
|
||||||
|
/* Process Locked */
|
||||||
|
__HAL_LOCK(huart);
|
||||||
|
|
||||||
|
/* Set UESM bit */
|
||||||
|
SET_BIT(huart->Instance->CR1, USART_CR1_UESM);
|
||||||
|
|
||||||
|
/* Process Unlocked */
|
||||||
|
__HAL_UNLOCK(huart);
|
||||||
|
|
||||||
|
return HAL_OK;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Disable UART Stop Mode.
|
||||||
|
* @param huart UART handle.
|
||||||
|
* @retval HAL status
|
||||||
|
*/
|
||||||
|
HAL_StatusTypeDef HAL_UARTEx_DisableStopMode(UART_HandleTypeDef *huart)
|
||||||
|
{
|
||||||
|
/* Process Locked */
|
||||||
|
__HAL_LOCK(huart);
|
||||||
|
|
||||||
|
/* Clear UESM bit */
|
||||||
|
CLEAR_BIT(huart->Instance->CR1, USART_CR1_UESM);
|
||||||
|
|
||||||
|
/* Process Unlocked */
|
||||||
|
__HAL_UNLOCK(huart);
|
||||||
|
|
||||||
|
return HAL_OK;
|
||||||
|
}
|
||||||
|
|
||||||
|
#endif /* USART_CR1_UESM */
|
||||||
/**
|
/**
|
||||||
* @}
|
* @}
|
||||||
*/
|
*/
|
||||||
|
@ -312,6 +448,25 @@ HAL_StatusTypeDef HAL_MultiProcessorEx_AddressLength_Set(UART_HandleTypeDef *hua
|
||||||
/** @addtogroup UARTEx_Private_Functions
|
/** @addtogroup UARTEx_Private_Functions
|
||||||
* @{
|
* @{
|
||||||
*/
|
*/
|
||||||
|
#if defined(USART_CR1_UESM)
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Initialize the UART wake-up from stop mode parameters when triggered by address detection.
|
||||||
|
* @param huart UART handle.
|
||||||
|
* @param WakeUpSelection UART wake up from stop mode parameters.
|
||||||
|
* @retval None
|
||||||
|
*/
|
||||||
|
static void UARTEx_Wakeup_AddressConfig(UART_HandleTypeDef *huart, UART_WakeUpTypeDef WakeUpSelection)
|
||||||
|
{
|
||||||
|
assert_param(IS_UART_ADDRESSLENGTH_DETECT(WakeUpSelection.AddressLength));
|
||||||
|
|
||||||
|
/* Set the USART address length */
|
||||||
|
MODIFY_REG(huart->Instance->CR2, USART_CR2_ADDM7, WakeUpSelection.AddressLength);
|
||||||
|
|
||||||
|
/* Set the USART address node */
|
||||||
|
MODIFY_REG(huart->Instance->CR2, USART_CR2_ADD, ((uint32_t)WakeUpSelection.Address << UART_CR2_ADDRESS_LSB_POS));
|
||||||
|
}
|
||||||
|
#endif /* USART_CR1_UESM */
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @}
|
* @}
|
||||||
|
|
|
@ -1,278 +1,244 @@
|
||||||
/**
|
/**
|
||||||
******************************************************************************
|
******************************************************************************
|
||||||
* @file system_stm32f7xx.c
|
* @file system_stm32f7xx.c
|
||||||
* @author MCD Application Team
|
* @author MCD Application Team
|
||||||
* @brief CMSIS Cortex-M7 Device Peripheral Access Layer System Source File.
|
* @brief CMSIS Cortex-M7 Device Peripheral Access Layer System Source File.
|
||||||
*
|
*
|
||||||
* This file provides two functions and one global variable to be called from
|
* This file provides two functions and one global variable to be called from
|
||||||
* user application:
|
* user application:
|
||||||
* - SystemInit(): This function is called at startup just after reset and
|
* - SystemInit(): This function is called at startup just after reset and
|
||||||
* before branch to main program. This call is made inside
|
* before branch to main program. This call is made inside
|
||||||
* the "startup_stm32f7xx.s" file.
|
* the "startup_stm32f7xx.s" file.
|
||||||
*
|
*
|
||||||
* - SystemCoreClock variable: Contains the core clock (HCLK), it can be used
|
* - SystemCoreClock variable: Contains the core clock (HCLK), it can be used
|
||||||
* by the user application to setup the SysTick
|
* by the user application to setup the SysTick
|
||||||
* timer or configure other parameters.
|
* timer or configure other parameters.
|
||||||
*
|
*
|
||||||
* - SystemCoreClockUpdate(): Updates the variable SystemCoreClock and must
|
* - SystemCoreClockUpdate(): Updates the variable SystemCoreClock and must
|
||||||
* be called whenever the core clock is changed
|
* be called whenever the core clock is changed
|
||||||
* during program execution.
|
* during program execution.
|
||||||
*
|
*
|
||||||
*
|
*
|
||||||
******************************************************************************
|
******************************************************************************
|
||||||
* @attention
|
* @attention
|
||||||
*
|
*
|
||||||
* <h2><center>© COPYRIGHT 2016 STMicroelectronics</center></h2>
|
* <h2><center>© Copyright (c) 2016 STMicroelectronics.
|
||||||
*
|
* All rights reserved.</center></h2>
|
||||||
* Redistribution and use in source and binary forms, with or without modification,
|
*
|
||||||
* are permitted provided that the following conditions are met:
|
* This software component is licensed by ST under BSD 3-Clause license,
|
||||||
* 1. Redistributions of source code must retain the above copyright notice,
|
* the "License"; You may not use this file except in compliance with the
|
||||||
* this list of conditions and the following disclaimer.
|
* License. You may obtain a copy of the License at:
|
||||||
* 2. Redistributions in binary form must reproduce the above copyright notice,
|
* opensource.org/licenses/BSD-3-Clause
|
||||||
* this list of conditions and the following disclaimer in the documentation
|
*
|
||||||
* and/or other materials provided with the distribution.
|
******************************************************************************
|
||||||
* 3. Neither the name of STMicroelectronics nor the names of its contributors
|
*/
|
||||||
* may be used to endorse or promote products derived from this software
|
|
||||||
* without specific prior written permission.
|
/** @addtogroup CMSIS
|
||||||
*
|
* @{
|
||||||
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
|
*/
|
||||||
* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
|
||||||
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
/** @addtogroup stm32f7xx_system
|
||||||
* DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
|
* @{
|
||||||
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
|
*/
|
||||||
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
|
|
||||||
* SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
|
/** @addtogroup STM32F7xx_System_Private_Includes
|
||||||
* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
|
* @{
|
||||||
* OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
*/
|
||||||
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
|
||||||
*
|
#include "stm32f7xx.h"
|
||||||
******************************************************************************
|
|
||||||
*/
|
#if !defined (HSE_VALUE)
|
||||||
|
#define HSE_VALUE ((uint32_t)25000000) /*!< Default value of the External oscillator in Hz */
|
||||||
/** @addtogroup CMSIS
|
#endif /* HSE_VALUE */
|
||||||
* @{
|
|
||||||
*/
|
#if !defined (HSI_VALUE)
|
||||||
|
#define HSI_VALUE ((uint32_t)16000000) /*!< Value of the Internal oscillator in Hz*/
|
||||||
/** @addtogroup stm32f7xx_system
|
#endif /* HSI_VALUE */
|
||||||
* @{
|
|
||||||
*/
|
/**
|
||||||
|
* @}
|
||||||
/** @addtogroup STM32F7xx_System_Private_Includes
|
*/
|
||||||
* @{
|
|
||||||
*/
|
/** @addtogroup STM32F7xx_System_Private_TypesDefinitions
|
||||||
|
* @{
|
||||||
#include "stm32f7xx.h"
|
*/
|
||||||
|
|
||||||
#if !defined (HSE_VALUE)
|
/**
|
||||||
#define HSE_VALUE ((uint32_t)25000000) /*!< Default value of the External oscillator in Hz */
|
* @}
|
||||||
#endif /* HSE_VALUE */
|
*/
|
||||||
|
|
||||||
#if !defined (HSI_VALUE)
|
/** @addtogroup STM32F7xx_System_Private_Defines
|
||||||
#define HSI_VALUE ((uint32_t)16000000) /*!< Value of the Internal oscillator in Hz*/
|
* @{
|
||||||
#endif /* HSI_VALUE */
|
*/
|
||||||
|
|
||||||
/**
|
/************************* Miscellaneous Configuration ************************/
|
||||||
* @}
|
|
||||||
*/
|
/*!< Uncomment the following line if you need to relocate your vector Table in
|
||||||
|
Internal SRAM. */
|
||||||
/** @addtogroup STM32F7xx_System_Private_TypesDefinitions
|
/* #define VECT_TAB_SRAM */
|
||||||
* @{
|
#define VECT_TAB_OFFSET 0x00 /*!< Vector Table base offset field.
|
||||||
*/
|
This value must be a multiple of 0x200. */
|
||||||
|
/******************************************************************************/
|
||||||
/**
|
|
||||||
* @}
|
/**
|
||||||
*/
|
* @}
|
||||||
|
*/
|
||||||
/** @addtogroup STM32F7xx_System_Private_Defines
|
|
||||||
* @{
|
/** @addtogroup STM32F7xx_System_Private_Macros
|
||||||
*/
|
* @{
|
||||||
|
*/
|
||||||
/************************* Miscellaneous Configuration ************************/
|
|
||||||
|
/**
|
||||||
/*!< Uncomment the following line if you need to relocate your vector Table in
|
* @}
|
||||||
Internal SRAM. */
|
*/
|
||||||
/* #define VECT_TAB_SRAM */
|
|
||||||
#define VECT_TAB_OFFSET 0x00 /*!< Vector Table base offset field.
|
/** @addtogroup STM32F7xx_System_Private_Variables
|
||||||
This value must be a multiple of 0x200. */
|
* @{
|
||||||
/******************************************************************************/
|
*/
|
||||||
|
|
||||||
/**
|
/* This variable is updated in three ways:
|
||||||
* @}
|
1) by calling CMSIS function SystemCoreClockUpdate()
|
||||||
*/
|
2) by calling HAL API function HAL_RCC_GetHCLKFreq()
|
||||||
|
3) each time HAL_RCC_ClockConfig() is called to configure the system clock frequency
|
||||||
/** @addtogroup STM32F7xx_System_Private_Macros
|
Note: If you use this function to configure the system clock; then there
|
||||||
* @{
|
is no need to call the 2 first functions listed above, since SystemCoreClock
|
||||||
*/
|
variable is updated automatically.
|
||||||
|
*/
|
||||||
/**
|
uint32_t SystemCoreClock = 16000000;
|
||||||
* @}
|
const uint8_t AHBPrescTable[16] = {0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 4, 6, 7, 8, 9};
|
||||||
*/
|
const uint8_t APBPrescTable[8] = {0, 0, 0, 0, 1, 2, 3, 4};
|
||||||
|
|
||||||
/** @addtogroup STM32F7xx_System_Private_Variables
|
/**
|
||||||
* @{
|
* @}
|
||||||
*/
|
*/
|
||||||
|
|
||||||
/* This variable is updated in three ways:
|
/** @addtogroup STM32F7xx_System_Private_FunctionPrototypes
|
||||||
1) by calling CMSIS function SystemCoreClockUpdate()
|
* @{
|
||||||
2) by calling HAL API function HAL_RCC_GetHCLKFreq()
|
*/
|
||||||
3) each time HAL_RCC_ClockConfig() is called to configure the system clock frequency
|
|
||||||
Note: If you use this function to configure the system clock; then there
|
/**
|
||||||
is no need to call the 2 first functions listed above, since SystemCoreClock
|
* @}
|
||||||
variable is updated automatically.
|
*/
|
||||||
*/
|
|
||||||
uint32_t SystemCoreClock = 16000000;
|
/** @addtogroup STM32F7xx_System_Private_Functions
|
||||||
const uint8_t AHBPrescTable[16] = {0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 4, 6, 7, 8, 9};
|
* @{
|
||||||
const uint8_t APBPrescTable[8] = {0, 0, 0, 0, 1, 2, 3, 4};
|
*/
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @}
|
* @brief Setup the microcontroller system
|
||||||
*/
|
* Initialize the Embedded Flash Interface, the PLL and update the
|
||||||
|
* SystemFrequency variable.
|
||||||
/** @addtogroup STM32F7xx_System_Private_FunctionPrototypes
|
* @param None
|
||||||
* @{
|
* @retval None
|
||||||
*/
|
*/
|
||||||
|
void SystemInit(void)
|
||||||
/**
|
{
|
||||||
* @}
|
/* FPU settings ------------------------------------------------------------*/
|
||||||
*/
|
#if (__FPU_PRESENT == 1) && (__FPU_USED == 1)
|
||||||
|
SCB->CPACR |= ((3UL << 10*2)|(3UL << 11*2)); /* set CP10 and CP11 Full Access */
|
||||||
/** @addtogroup STM32F7xx_System_Private_Functions
|
#endif
|
||||||
* @{
|
|
||||||
*/
|
/* Configure the Vector Table location add offset address ------------------*/
|
||||||
|
#ifdef VECT_TAB_SRAM
|
||||||
/**
|
SCB->VTOR = RAMDTCM_BASE | VECT_TAB_OFFSET; /* Vector Table Relocation in Internal SRAM */
|
||||||
* @brief Setup the microcontroller system
|
#else
|
||||||
* Initialize the Embedded Flash Interface, the PLL and update the
|
SCB->VTOR = FLASH_BASE | VECT_TAB_OFFSET; /* Vector Table Relocation in Internal FLASH */
|
||||||
* SystemFrequency variable.
|
#endif
|
||||||
* @param None
|
}
|
||||||
* @retval None
|
|
||||||
*/
|
/**
|
||||||
void SystemInit(void)
|
* @brief Update SystemCoreClock variable according to Clock Register Values.
|
||||||
{
|
* The SystemCoreClock variable contains the core clock (HCLK), it can
|
||||||
/* FPU settings ------------------------------------------------------------*/
|
* be used by the user application to setup the SysTick timer or configure
|
||||||
#if (__FPU_PRESENT == 1) && (__FPU_USED == 1)
|
* other parameters.
|
||||||
SCB->CPACR |= ((3UL << 10*2)|(3UL << 11*2)); /* set CP10 and CP11 Full Access */
|
*
|
||||||
#endif
|
* @note Each time the core clock (HCLK) changes, this function must be called
|
||||||
/* Reset the RCC clock configuration to the default reset state ------------*/
|
* to update SystemCoreClock variable value. Otherwise, any configuration
|
||||||
/* Set HSION bit */
|
* based on this variable will be incorrect.
|
||||||
RCC->CR |= (uint32_t)0x00000001;
|
*
|
||||||
|
* @note - The system frequency computed by this function is not the real
|
||||||
/* Reset CFGR register */
|
* frequency in the chip. It is calculated based on the predefined
|
||||||
RCC->CFGR = 0x00000000;
|
* constant and the selected clock source:
|
||||||
|
*
|
||||||
/* Reset HSEON, CSSON and PLLON bits */
|
* - If SYSCLK source is HSI, SystemCoreClock will contain the HSI_VALUE(*)
|
||||||
RCC->CR &= (uint32_t)0xFEF6FFFF;
|
*
|
||||||
|
* - If SYSCLK source is HSE, SystemCoreClock will contain the HSE_VALUE(**)
|
||||||
/* Reset PLLCFGR register */
|
*
|
||||||
RCC->PLLCFGR = 0x24003010;
|
* - If SYSCLK source is PLL, SystemCoreClock will contain the HSE_VALUE(**)
|
||||||
|
* or HSI_VALUE(*) multiplied/divided by the PLL factors.
|
||||||
/* Reset HSEBYP bit */
|
*
|
||||||
RCC->CR &= (uint32_t)0xFFFBFFFF;
|
* (*) HSI_VALUE is a constant defined in stm32f7xx_hal_conf.h file (default value
|
||||||
|
* 16 MHz) but the real value may vary depending on the variations
|
||||||
/* Disable all interrupts */
|
* in voltage and temperature.
|
||||||
RCC->CIR = 0x00000000;
|
*
|
||||||
|
* (**) HSE_VALUE is a constant defined in stm32f7xx_hal_conf.h file (default value
|
||||||
/* Configure the Vector Table location add offset address ------------------*/
|
* 25 MHz), user has to ensure that HSE_VALUE is same as the real
|
||||||
#ifdef VECT_TAB_SRAM
|
* frequency of the crystal used. Otherwise, this function may
|
||||||
SCB->VTOR = RAMDTCM_BASE | VECT_TAB_OFFSET; /* Vector Table Relocation in Internal SRAM */
|
* have wrong result.
|
||||||
#else
|
*
|
||||||
SCB->VTOR = FLASH_BASE | VECT_TAB_OFFSET; /* Vector Table Relocation in Internal FLASH */
|
* - The result of this function could be not correct when using fractional
|
||||||
#endif
|
* value for HSE crystal.
|
||||||
}
|
*
|
||||||
|
* @param None
|
||||||
/**
|
* @retval None
|
||||||
* @brief Update SystemCoreClock variable according to Clock Register Values.
|
*/
|
||||||
* The SystemCoreClock variable contains the core clock (HCLK), it can
|
void SystemCoreClockUpdate(void)
|
||||||
* be used by the user application to setup the SysTick timer or configure
|
{
|
||||||
* other parameters.
|
uint32_t tmp = 0, pllvco = 0, pllp = 2, pllsource = 0, pllm = 2;
|
||||||
*
|
|
||||||
* @note Each time the core clock (HCLK) changes, this function must be called
|
/* Get SYSCLK source -------------------------------------------------------*/
|
||||||
* to update SystemCoreClock variable value. Otherwise, any configuration
|
tmp = RCC->CFGR & RCC_CFGR_SWS;
|
||||||
* based on this variable will be incorrect.
|
|
||||||
*
|
switch (tmp)
|
||||||
* @note - The system frequency computed by this function is not the real
|
{
|
||||||
* frequency in the chip. It is calculated based on the predefined
|
case 0x00: /* HSI used as system clock source */
|
||||||
* constant and the selected clock source:
|
SystemCoreClock = HSI_VALUE;
|
||||||
*
|
break;
|
||||||
* - If SYSCLK source is HSI, SystemCoreClock will contain the HSI_VALUE(*)
|
case 0x04: /* HSE used as system clock source */
|
||||||
*
|
SystemCoreClock = HSE_VALUE;
|
||||||
* - If SYSCLK source is HSE, SystemCoreClock will contain the HSE_VALUE(**)
|
break;
|
||||||
*
|
case 0x08: /* PLL used as system clock source */
|
||||||
* - If SYSCLK source is PLL, SystemCoreClock will contain the HSE_VALUE(**)
|
|
||||||
* or HSI_VALUE(*) multiplied/divided by the PLL factors.
|
/* PLL_VCO = (HSE_VALUE or HSI_VALUE / PLL_M) * PLL_N
|
||||||
*
|
SYSCLK = PLL_VCO / PLL_P
|
||||||
* (*) HSI_VALUE is a constant defined in stm32f7xx_hal_conf.h file (default value
|
*/
|
||||||
* 16 MHz) but the real value may vary depending on the variations
|
pllsource = (RCC->PLLCFGR & RCC_PLLCFGR_PLLSRC) >> 22;
|
||||||
* in voltage and temperature.
|
pllm = RCC->PLLCFGR & RCC_PLLCFGR_PLLM;
|
||||||
*
|
|
||||||
* (**) HSE_VALUE is a constant defined in stm32f7xx_hal_conf.h file (default value
|
if (pllsource != 0)
|
||||||
* 25 MHz), user has to ensure that HSE_VALUE is same as the real
|
{
|
||||||
* frequency of the crystal used. Otherwise, this function may
|
/* HSE used as PLL clock source */
|
||||||
* have wrong result.
|
pllvco = (HSE_VALUE / pllm) * ((RCC->PLLCFGR & RCC_PLLCFGR_PLLN) >> 6);
|
||||||
*
|
}
|
||||||
* - The result of this function could be not correct when using fractional
|
else
|
||||||
* value for HSE crystal.
|
{
|
||||||
*
|
/* HSI used as PLL clock source */
|
||||||
* @param None
|
pllvco = (HSI_VALUE / pllm) * ((RCC->PLLCFGR & RCC_PLLCFGR_PLLN) >> 6);
|
||||||
* @retval None
|
}
|
||||||
*/
|
|
||||||
void SystemCoreClockUpdate(void)
|
pllp = (((RCC->PLLCFGR & RCC_PLLCFGR_PLLP) >>16) + 1 ) *2;
|
||||||
{
|
SystemCoreClock = pllvco/pllp;
|
||||||
uint32_t tmp = 0, pllvco = 0, pllp = 2, pllsource = 0, pllm = 2;
|
break;
|
||||||
|
default:
|
||||||
/* Get SYSCLK source -------------------------------------------------------*/
|
SystemCoreClock = HSI_VALUE;
|
||||||
tmp = RCC->CFGR & RCC_CFGR_SWS;
|
break;
|
||||||
|
}
|
||||||
switch (tmp)
|
/* Compute HCLK frequency --------------------------------------------------*/
|
||||||
{
|
/* Get HCLK prescaler */
|
||||||
case 0x00: /* HSI used as system clock source */
|
tmp = AHBPrescTable[((RCC->CFGR & RCC_CFGR_HPRE) >> 4)];
|
||||||
SystemCoreClock = HSI_VALUE;
|
/* HCLK frequency */
|
||||||
break;
|
SystemCoreClock >>= tmp;
|
||||||
case 0x04: /* HSE used as system clock source */
|
}
|
||||||
SystemCoreClock = HSE_VALUE;
|
|
||||||
break;
|
/**
|
||||||
case 0x08: /* PLL used as system clock source */
|
* @}
|
||||||
|
*/
|
||||||
/* PLL_VCO = (HSE_VALUE or HSI_VALUE / PLL_M) * PLL_N
|
|
||||||
SYSCLK = PLL_VCO / PLL_P
|
/**
|
||||||
*/
|
* @}
|
||||||
pllsource = (RCC->PLLCFGR & RCC_PLLCFGR_PLLSRC) >> 22;
|
*/
|
||||||
pllm = RCC->PLLCFGR & RCC_PLLCFGR_PLLM;
|
|
||||||
|
/**
|
||||||
if (pllsource != 0)
|
* @}
|
||||||
{
|
*/
|
||||||
/* HSE used as PLL clock source */
|
/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
|
||||||
pllvco = (HSE_VALUE / pllm) * ((RCC->PLLCFGR & RCC_PLLCFGR_PLLN) >> 6);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
/* HSI used as PLL clock source */
|
|
||||||
pllvco = (HSI_VALUE / pllm) * ((RCC->PLLCFGR & RCC_PLLCFGR_PLLN) >> 6);
|
|
||||||
}
|
|
||||||
|
|
||||||
pllp = (((RCC->PLLCFGR & RCC_PLLCFGR_PLLP) >>16) + 1 ) *2;
|
|
||||||
SystemCoreClock = pllvco/pllp;
|
|
||||||
break;
|
|
||||||
default:
|
|
||||||
SystemCoreClock = HSI_VALUE;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
/* Compute HCLK frequency --------------------------------------------------*/
|
|
||||||
/* Get HCLK prescaler */
|
|
||||||
tmp = AHBPrescTable[((RCC->CFGR & RCC_CFGR_HPRE) >> 4)];
|
|
||||||
/* HCLK frequency */
|
|
||||||
SystemCoreClock >>= tmp;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @}
|
|
||||||
*/
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @}
|
|
||||||
*/
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @}
|
|
||||||
*/
|
|
||||||
/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
|
|
||||||
|
|
Binary file not shown.
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
|
@ -16,29 +16,13 @@
|
||||||
******************************************************************************
|
******************************************************************************
|
||||||
* @attention
|
* @attention
|
||||||
*
|
*
|
||||||
* <h2><center>© COPYRIGHT(c) 2016 STMicroelectronics</center></h2>
|
* <h2><center>© Copyright (c) 2016 STMicroelectronics.
|
||||||
|
* All rights reserved.</center></h2>
|
||||||
*
|
*
|
||||||
* Redistribution and use in source and binary forms, with or without modification,
|
* This software component is licensed by ST under BSD 3-Clause license,
|
||||||
* are permitted provided that the following conditions are met:
|
* the "License"; You may not use this file except in compliance with the
|
||||||
* 1. Redistributions of source code must retain the above copyright notice,
|
* License. You may obtain a copy of the License at:
|
||||||
* this list of conditions and the following disclaimer.
|
* opensource.org/licenses/BSD-3-Clause
|
||||||
* 2. Redistributions in binary form must reproduce the above copyright notice,
|
|
||||||
* this list of conditions and the following disclaimer in the documentation
|
|
||||||
* and/or other materials provided with the distribution.
|
|
||||||
* 3. Neither the name of STMicroelectronics nor the names of its contributors
|
|
||||||
* may be used to endorse or promote products derived from this software
|
|
||||||
* without specific prior written permission.
|
|
||||||
*
|
|
||||||
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
|
|
||||||
* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
|
||||||
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
|
||||||
* DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
|
|
||||||
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
|
|
||||||
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
|
|
||||||
* SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
|
|
||||||
* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
|
|
||||||
* OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
|
||||||
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
|
||||||
*
|
*
|
||||||
******************************************************************************
|
******************************************************************************
|
||||||
*/
|
*/
|
||||||
|
@ -72,10 +56,10 @@
|
||||||
/* Uncomment the line below according to the target STM32 device used in your
|
/* Uncomment the line below according to the target STM32 device used in your
|
||||||
application
|
application
|
||||||
*/
|
*/
|
||||||
#if !defined (STM32F756xx) && !defined (STM32F746xx) && !defined (STM32F745xx) && !defined (STM32F767xx) && \
|
#if !defined (STM32F756xx) && !defined (STM32F746xx) && !defined (STM32F745xx) && !defined (STM32F765xx) && \
|
||||||
!defined (STM32F769xx) && !defined (STM32F777xx) && !defined (STM32F779xx) && !defined (STM32F722xx) && \
|
!defined (STM32F767xx) && !defined (STM32F769xx) && !defined (STM32F777xx) && !defined (STM32F779xx) && \
|
||||||
!defined (STM32F723xx) && !defined (STM32F732xx) && !defined (STM32F733xx) && !defined (STM32F730xx) && \
|
!defined (STM32F722xx) && !defined (STM32F723xx) && !defined (STM32F732xx) && !defined (STM32F733xx) && \
|
||||||
!defined (STM32F750xx)
|
!defined (STM32F730xx) && !defined (STM32F750xx)
|
||||||
|
|
||||||
/* #define STM32F756xx */ /*!< STM32F756VG, STM32F756ZG, STM32F756ZG, STM32F756IG, STM32F756BG,
|
/* #define STM32F756xx */ /*!< STM32F756VG, STM32F756ZG, STM32F756ZG, STM32F756IG, STM32F756BG,
|
||||||
STM32F756NG Devices */
|
STM32F756NG Devices */
|
||||||
|
@ -113,11 +97,11 @@
|
||||||
#endif /* USE_HAL_DRIVER */
|
#endif /* USE_HAL_DRIVER */
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief CMSIS Device version number V1.2.4
|
* @brief CMSIS Device version number V1.2.5
|
||||||
*/
|
*/
|
||||||
#define __STM32F7_CMSIS_VERSION_MAIN (0x01) /*!< [31:24] main version */
|
#define __STM32F7_CMSIS_VERSION_MAIN (0x01) /*!< [31:24] main version */
|
||||||
#define __STM32F7_CMSIS_VERSION_SUB1 (0x02) /*!< [23:16] sub1 version */
|
#define __STM32F7_CMSIS_VERSION_SUB1 (0x02) /*!< [23:16] sub1 version */
|
||||||
#define __STM32F7_CMSIS_VERSION_SUB2 (0x04) /*!< [15:8] sub2 version */
|
#define __STM32F7_CMSIS_VERSION_SUB2 (0x05) /*!< [15:8] sub2 version */
|
||||||
#define __STM32F7_CMSIS_VERSION_RC (0x00) /*!< [7:0] release candidate */
|
#define __STM32F7_CMSIS_VERSION_RC (0x00) /*!< [7:0] release candidate */
|
||||||
#define __STM32F7_CMSIS_VERSION ((__STM32F7_CMSIS_VERSION_MAIN << 24)\
|
#define __STM32F7_CMSIS_VERSION ((__STM32F7_CMSIS_VERSION_MAIN << 24)\
|
||||||
|(__STM32F7_CMSIS_VERSION_SUB1 << 16)\
|
|(__STM32F7_CMSIS_VERSION_SUB1 << 16)\
|
||||||
|
|
|
@ -7,7 +7,7 @@
|
||||||
******************************************************************************
|
******************************************************************************
|
||||||
* @attention
|
* @attention
|
||||||
*
|
*
|
||||||
* <h2><center>© Copyright (c) 2018 STMicroelectronics.
|
* <h2><center>© Copyright (c) 2019 STMicroelectronics.
|
||||||
* All rights reserved.</center></h2>
|
* All rights reserved.</center></h2>
|
||||||
*
|
*
|
||||||
* This software component is licensed by ST under BSD 3-Clause license,
|
* This software component is licensed by ST under BSD 3-Clause license,
|
||||||
|
@ -236,6 +236,16 @@
|
||||||
#define DAC_WAVEGENERATION_NOISE DAC_WAVE_NOISE
|
#define DAC_WAVEGENERATION_NOISE DAC_WAVE_NOISE
|
||||||
#define DAC_WAVEGENERATION_TRIANGLE DAC_WAVE_TRIANGLE
|
#define DAC_WAVEGENERATION_TRIANGLE DAC_WAVE_TRIANGLE
|
||||||
|
|
||||||
|
#if defined(STM32G4) || defined(STM32H7)
|
||||||
|
#define DAC_CHIPCONNECT_DISABLE DAC_CHIPCONNECT_EXTERNAL
|
||||||
|
#define DAC_CHIPCONNECT_ENABLE DAC_CHIPCONNECT_INTERNAL
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if defined(STM32L1) || defined(STM32L4) || defined(STM32G0) || defined(STM32L5) || defined(STM32H7) || defined(STM32F4)
|
||||||
|
#define HAL_DAC_MSP_INIT_CB_ID HAL_DAC_MSPINIT_CB_ID
|
||||||
|
#define HAL_DAC_MSP_DEINIT_CB_ID HAL_DAC_MSPDEINIT_CB_ID
|
||||||
|
#endif
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @}
|
* @}
|
||||||
*/
|
*/
|
||||||
|
@ -296,8 +306,17 @@
|
||||||
#define HAL_DMAMUX_REQUEST_GEN_FALLING HAL_DMAMUX_REQ_GEN_FALLING
|
#define HAL_DMAMUX_REQUEST_GEN_FALLING HAL_DMAMUX_REQ_GEN_FALLING
|
||||||
#define HAL_DMAMUX_REQUEST_GEN_RISING_FALLING HAL_DMAMUX_REQ_GEN_RISING_FALLING
|
#define HAL_DMAMUX_REQUEST_GEN_RISING_FALLING HAL_DMAMUX_REQ_GEN_RISING_FALLING
|
||||||
|
|
||||||
|
#if defined(STM32L4R5xx) || defined(STM32L4R9xx) || defined(STM32L4R9xx) || defined(STM32L4S5xx) || defined(STM32L4S7xx) || defined(STM32L4S9xx)
|
||||||
|
#define DMA_REQUEST_DCMI_PSSI DMA_REQUEST_DCMI
|
||||||
|
#endif
|
||||||
|
|
||||||
#endif /* STM32L4 */
|
#endif /* STM32L4 */
|
||||||
|
|
||||||
|
#if defined(STM32G0)
|
||||||
|
#define DMA_REQUEST_DAC1_CHANNEL1 DMA_REQUEST_DAC1_CH1
|
||||||
|
#define DMA_REQUEST_DAC1_CHANNEL2 DMA_REQUEST_DAC1_CH2
|
||||||
|
#endif
|
||||||
|
|
||||||
#if defined(STM32H7)
|
#if defined(STM32H7)
|
||||||
|
|
||||||
#define DMA_REQUEST_DAC1 DMA_REQUEST_DAC1_CH1
|
#define DMA_REQUEST_DAC1 DMA_REQUEST_DAC1_CH1
|
||||||
|
@ -355,6 +374,9 @@
|
||||||
#define DFSDM_FILTER_EXT_TRIG_LPTIM2 DFSDM_FILTER_EXT_TRIG_LPTIM2_OUT
|
#define DFSDM_FILTER_EXT_TRIG_LPTIM2 DFSDM_FILTER_EXT_TRIG_LPTIM2_OUT
|
||||||
#define DFSDM_FILTER_EXT_TRIG_LPTIM3 DFSDM_FILTER_EXT_TRIG_LPTIM3_OUT
|
#define DFSDM_FILTER_EXT_TRIG_LPTIM3 DFSDM_FILTER_EXT_TRIG_LPTIM3_OUT
|
||||||
|
|
||||||
|
#define DAC_TRIGGER_LP1_OUT DAC_TRIGGER_LPTIM1_OUT
|
||||||
|
#define DAC_TRIGGER_LP2_OUT DAC_TRIGGER_LPTIM2_OUT
|
||||||
|
|
||||||
#endif /* STM32H7 */
|
#endif /* STM32H7 */
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -450,7 +472,9 @@
|
||||||
#define FLASH_FLAG_SNECCE_BANK2RR FLASH_FLAG_SNECCERR_BANK2
|
#define FLASH_FLAG_SNECCE_BANK2RR FLASH_FLAG_SNECCERR_BANK2
|
||||||
#define FLASH_FLAG_DBECCE_BANK2RR FLASH_FLAG_DBECCERR_BANK2
|
#define FLASH_FLAG_DBECCE_BANK2RR FLASH_FLAG_DBECCERR_BANK2
|
||||||
#define FLASH_FLAG_STRBER_BANK2R FLASH_FLAG_STRBERR_BANK2
|
#define FLASH_FLAG_STRBER_BANK2R FLASH_FLAG_STRBERR_BANK2
|
||||||
#endif
|
#define FLASH_FLAG_WDW FLASH_FLAG_WBNE
|
||||||
|
#define OB_WRP_SECTOR_All OB_WRP_SECTOR_ALL
|
||||||
|
#endif /* STM32H7 */
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @}
|
* @}
|
||||||
|
@ -486,6 +510,13 @@
|
||||||
#define HAL_SYSCFG_FASTMODEPLUS_I2C1 I2C_FASTMODEPLUS_I2C1
|
#define HAL_SYSCFG_FASTMODEPLUS_I2C1 I2C_FASTMODEPLUS_I2C1
|
||||||
#define HAL_SYSCFG_FASTMODEPLUS_I2C2 I2C_FASTMODEPLUS_I2C2
|
#define HAL_SYSCFG_FASTMODEPLUS_I2C2 I2C_FASTMODEPLUS_I2C2
|
||||||
#define HAL_SYSCFG_FASTMODEPLUS_I2C3 I2C_FASTMODEPLUS_I2C3
|
#define HAL_SYSCFG_FASTMODEPLUS_I2C3 I2C_FASTMODEPLUS_I2C3
|
||||||
|
#if defined(STM32G4)
|
||||||
|
|
||||||
|
#define HAL_SYSCFG_EnableIOAnalogSwitchBooster HAL_SYSCFG_EnableIOSwitchBooster
|
||||||
|
#define HAL_SYSCFG_DisableIOAnalogSwitchBooster HAL_SYSCFG_DisableIOSwitchBooster
|
||||||
|
#define HAL_SYSCFG_EnableIOAnalogSwitchVDD HAL_SYSCFG_EnableIOSwitchVDD
|
||||||
|
#define HAL_SYSCFG_DisableIOAnalogSwitchVDD HAL_SYSCFG_DisableIOSwitchVDD
|
||||||
|
#endif /* STM32G4 */
|
||||||
/**
|
/**
|
||||||
* @}
|
* @}
|
||||||
*/
|
*/
|
||||||
|
@ -494,7 +525,7 @@
|
||||||
/** @defgroup LL_FMC_Aliased_Defines LL FMC Aliased Defines maintained for compatibility purpose
|
/** @defgroup LL_FMC_Aliased_Defines LL FMC Aliased Defines maintained for compatibility purpose
|
||||||
* @{
|
* @{
|
||||||
*/
|
*/
|
||||||
#if defined(STM32L4) || defined(STM32F7) || defined(STM32H7)
|
#if defined(STM32L4) || defined(STM32F7) || defined(STM32H7) || defined(STM32G4)
|
||||||
#define FMC_NAND_PCC_WAIT_FEATURE_DISABLE FMC_NAND_WAIT_FEATURE_DISABLE
|
#define FMC_NAND_PCC_WAIT_FEATURE_DISABLE FMC_NAND_WAIT_FEATURE_DISABLE
|
||||||
#define FMC_NAND_PCC_WAIT_FEATURE_ENABLE FMC_NAND_WAIT_FEATURE_ENABLE
|
#define FMC_NAND_PCC_WAIT_FEATURE_ENABLE FMC_NAND_WAIT_FEATURE_ENABLE
|
||||||
#define FMC_NAND_PCC_MEM_BUS_WIDTH_8 FMC_NAND_MEM_BUS_WIDTH_8
|
#define FMC_NAND_PCC_MEM_BUS_WIDTH_8 FMC_NAND_MEM_BUS_WIDTH_8
|
||||||
|
@ -547,18 +578,25 @@
|
||||||
#define GPIO_AF9_SDIO2 GPIO_AF9_SDMMC2
|
#define GPIO_AF9_SDIO2 GPIO_AF9_SDMMC2
|
||||||
#define GPIO_AF10_SDIO2 GPIO_AF10_SDMMC2
|
#define GPIO_AF10_SDIO2 GPIO_AF10_SDMMC2
|
||||||
#define GPIO_AF11_SDIO2 GPIO_AF11_SDMMC2
|
#define GPIO_AF11_SDIO2 GPIO_AF11_SDMMC2
|
||||||
#endif
|
|
||||||
|
#if defined (STM32H743xx) || defined (STM32H753xx) || defined (STM32H750xx) || defined (STM32H742xx) || \
|
||||||
|
defined (STM32H745xx) || defined (STM32H755xx) || defined (STM32H747xx) || defined (STM32H757xx)
|
||||||
|
#define GPIO_AF10_OTG2_HS GPIO_AF10_OTG2_FS
|
||||||
|
#define GPIO_AF10_OTG1_FS GPIO_AF10_OTG1_HS
|
||||||
|
#define GPIO_AF12_OTG2_FS GPIO_AF12_OTG1_FS
|
||||||
|
#endif /*STM32H743xx || STM32H753xx || STM32H750xx || STM32H742xx || STM32H745xx || STM32H755xx || STM32H747xx || STM32H757xx */
|
||||||
|
#endif /* STM32H7 */
|
||||||
|
|
||||||
#define GPIO_AF0_LPTIM GPIO_AF0_LPTIM1
|
#define GPIO_AF0_LPTIM GPIO_AF0_LPTIM1
|
||||||
#define GPIO_AF1_LPTIM GPIO_AF1_LPTIM1
|
#define GPIO_AF1_LPTIM GPIO_AF1_LPTIM1
|
||||||
#define GPIO_AF2_LPTIM GPIO_AF2_LPTIM1
|
#define GPIO_AF2_LPTIM GPIO_AF2_LPTIM1
|
||||||
|
|
||||||
#if defined(STM32L0) || defined(STM32L4) || defined(STM32F4) || defined(STM32F2) || defined(STM32F7) || defined(STM32H7)
|
#if defined(STM32L0) || defined(STM32L4) || defined(STM32F4) || defined(STM32F2) || defined(STM32F7) || defined(STM32G4) || defined(STM32H7)
|
||||||
#define GPIO_SPEED_LOW GPIO_SPEED_FREQ_LOW
|
#define GPIO_SPEED_LOW GPIO_SPEED_FREQ_LOW
|
||||||
#define GPIO_SPEED_MEDIUM GPIO_SPEED_FREQ_MEDIUM
|
#define GPIO_SPEED_MEDIUM GPIO_SPEED_FREQ_MEDIUM
|
||||||
#define GPIO_SPEED_FAST GPIO_SPEED_FREQ_HIGH
|
#define GPIO_SPEED_FAST GPIO_SPEED_FREQ_HIGH
|
||||||
#define GPIO_SPEED_HIGH GPIO_SPEED_FREQ_VERY_HIGH
|
#define GPIO_SPEED_HIGH GPIO_SPEED_FREQ_VERY_HIGH
|
||||||
#endif /* STM32L0 || STM32L4 || STM32F4 || STM32F2 || STM32F7 || STM32H7*/
|
#endif /* STM32L0 || STM32L4 || STM32F4 || STM32F2 || STM32F7 || STM32G4 || STM32H7*/
|
||||||
|
|
||||||
#if defined(STM32L1)
|
#if defined(STM32L1)
|
||||||
#define GPIO_SPEED_VERY_LOW GPIO_SPEED_FREQ_LOW
|
#define GPIO_SPEED_VERY_LOW GPIO_SPEED_FREQ_LOW
|
||||||
|
@ -599,6 +637,185 @@
|
||||||
#define __HAL_HRTIM_GetClockPrescaler __HAL_HRTIM_GETCLOCKPRESCALER
|
#define __HAL_HRTIM_GetClockPrescaler __HAL_HRTIM_GETCLOCKPRESCALER
|
||||||
#define __HAL_HRTIM_SetCompare __HAL_HRTIM_SETCOMPARE
|
#define __HAL_HRTIM_SetCompare __HAL_HRTIM_SETCOMPARE
|
||||||
#define __HAL_HRTIM_GetCompare __HAL_HRTIM_GETCOMPARE
|
#define __HAL_HRTIM_GetCompare __HAL_HRTIM_GETCOMPARE
|
||||||
|
|
||||||
|
#if defined(STM32G4)
|
||||||
|
#define HAL_HRTIM_ExternalEventCounterConfig HAL_HRTIM_ExtEventCounterConfig
|
||||||
|
#define HAL_HRTIM_ExternalEventCounterEnable HAL_HRTIM_ExtEventCounterEnable
|
||||||
|
#define HAL_HRTIM_ExternalEventCounterDisable HAL_HRTIM_ExtEventCounterDisable
|
||||||
|
#define HAL_HRTIM_ExternalEventCounterReset HAL_HRTIM_ExtEventCounterReset
|
||||||
|
#endif /* STM32G4 */
|
||||||
|
|
||||||
|
#if defined(STM32H7)
|
||||||
|
#define HRTIM_OUTPUTSET_TIMAEV1_TIMBCMP1 HRTIM_OUTPUTSET_TIMEV_1
|
||||||
|
#define HRTIM_OUTPUTSET_TIMAEV2_TIMBCMP2 HRTIM_OUTPUTSET_TIMEV_2
|
||||||
|
#define HRTIM_OUTPUTSET_TIMAEV3_TIMCCMP2 HRTIM_OUTPUTSET_TIMEV_3
|
||||||
|
#define HRTIM_OUTPUTSET_TIMAEV4_TIMCCMP3 HRTIM_OUTPUTSET_TIMEV_4
|
||||||
|
#define HRTIM_OUTPUTSET_TIMAEV5_TIMDCMP1 HRTIM_OUTPUTSET_TIMEV_5
|
||||||
|
#define HRTIM_OUTPUTSET_TIMAEV6_TIMDCMP2 HRTIM_OUTPUTSET_TIMEV_6
|
||||||
|
#define HRTIM_OUTPUTSET_TIMAEV7_TIMECMP3 HRTIM_OUTPUTSET_TIMEV_7
|
||||||
|
#define HRTIM_OUTPUTSET_TIMAEV8_TIMECMP4 HRTIM_OUTPUTSET_TIMEV_8
|
||||||
|
#define HRTIM_OUTPUTSET_TIMAEV9_TIMFCMP4 HRTIM_OUTPUTSET_TIMEV_9
|
||||||
|
#define HRTIM_OUTPUTSET_TIMBEV1_TIMACMP1 HRTIM_OUTPUTSET_TIMEV_1
|
||||||
|
#define HRTIM_OUTPUTSET_TIMBEV2_TIMACMP2 HRTIM_OUTPUTSET_TIMEV_2
|
||||||
|
#define HRTIM_OUTPUTSET_TIMBEV3_TIMCCMP3 HRTIM_OUTPUTSET_TIMEV_3
|
||||||
|
#define HRTIM_OUTPUTSET_TIMBEV4_TIMCCMP4 HRTIM_OUTPUTSET_TIMEV_4
|
||||||
|
#define HRTIM_OUTPUTSET_TIMBEV5_TIMDCMP3 HRTIM_OUTPUTSET_TIMEV_5
|
||||||
|
#define HRTIM_OUTPUTSET_TIMBEV6_TIMDCMP4 HRTIM_OUTPUTSET_TIMEV_6
|
||||||
|
#define HRTIM_OUTPUTSET_TIMBEV7_TIMECMP1 HRTIM_OUTPUTSET_TIMEV_7
|
||||||
|
#define HRTIM_OUTPUTSET_TIMBEV8_TIMECMP2 HRTIM_OUTPUTSET_TIMEV_8
|
||||||
|
#define HRTIM_OUTPUTSET_TIMBEV9_TIMFCMP3 HRTIM_OUTPUTSET_TIMEV_9
|
||||||
|
#define HRTIM_OUTPUTSET_TIMCEV1_TIMACMP1 HRTIM_OUTPUTSET_TIMEV_1
|
||||||
|
#define HRTIM_OUTPUTSET_TIMCEV2_TIMACMP2 HRTIM_OUTPUTSET_TIMEV_2
|
||||||
|
#define HRTIM_OUTPUTSET_TIMCEV3_TIMBCMP2 HRTIM_OUTPUTSET_TIMEV_3
|
||||||
|
#define HRTIM_OUTPUTSET_TIMCEV4_TIMBCMP3 HRTIM_OUTPUTSET_TIMEV_4
|
||||||
|
#define HRTIM_OUTPUTSET_TIMCEV5_TIMDCMP2 HRTIM_OUTPUTSET_TIMEV_5
|
||||||
|
#define HRTIM_OUTPUTSET_TIMCEV6_TIMDCMP4 HRTIM_OUTPUTSET_TIMEV_6
|
||||||
|
#define HRTIM_OUTPUTSET_TIMCEV7_TIMECMP3 HRTIM_OUTPUTSET_TIMEV_7
|
||||||
|
#define HRTIM_OUTPUTSET_TIMCEV8_TIMECMP4 HRTIM_OUTPUTSET_TIMEV_8
|
||||||
|
#define HRTIM_OUTPUTSET_TIMCEV9_TIMFCMP2 HRTIM_OUTPUTSET_TIMEV_9
|
||||||
|
#define HRTIM_OUTPUTSET_TIMDEV1_TIMACMP1 HRTIM_OUTPUTSET_TIMEV_1
|
||||||
|
#define HRTIM_OUTPUTSET_TIMDEV2_TIMACMP4 HRTIM_OUTPUTSET_TIMEV_2
|
||||||
|
#define HRTIM_OUTPUTSET_TIMDEV3_TIMBCMP2 HRTIM_OUTPUTSET_TIMEV_3
|
||||||
|
#define HRTIM_OUTPUTSET_TIMDEV4_TIMBCMP4 HRTIM_OUTPUTSET_TIMEV_4
|
||||||
|
#define HRTIM_OUTPUTSET_TIMDEV5_TIMCCMP4 HRTIM_OUTPUTSET_TIMEV_5
|
||||||
|
#define HRTIM_OUTPUTSET_TIMDEV6_TIMECMP1 HRTIM_OUTPUTSET_TIMEV_6
|
||||||
|
#define HRTIM_OUTPUTSET_TIMDEV7_TIMECMP4 HRTIM_OUTPUTSET_TIMEV_7
|
||||||
|
#define HRTIM_OUTPUTSET_TIMDEV8_TIMFCMP1 HRTIM_OUTPUTSET_TIMEV_8
|
||||||
|
#define HRTIM_OUTPUTSET_TIMDEV9_TIMFCMP3 HRTIM_OUTPUTSET_TIMEV_9
|
||||||
|
#define HRTIM_OUTPUTSET_TIMEEV1_TIMACMP4 HRTIM_OUTPUTSET_TIMEV_1
|
||||||
|
#define HRTIM_OUTPUTSET_TIMEEV2_TIMBCMP3 HRTIM_OUTPUTSET_TIMEV_2
|
||||||
|
#define HRTIM_OUTPUTSET_TIMEEV3_TIMBCMP4 HRTIM_OUTPUTSET_TIMEV_3
|
||||||
|
#define HRTIM_OUTPUTSET_TIMEEV4_TIMCCMP1 HRTIM_OUTPUTSET_TIMEV_4
|
||||||
|
#define HRTIM_OUTPUTSET_TIMEEV5_TIMDCMP2 HRTIM_OUTPUTSET_TIMEV_5
|
||||||
|
#define HRTIM_OUTPUTSET_TIMEEV6_TIMDCMP1 HRTIM_OUTPUTSET_TIMEV_6
|
||||||
|
#define HRTIM_OUTPUTSET_TIMEEV7_TIMDCMP2 HRTIM_OUTPUTSET_TIMEV_7
|
||||||
|
#define HRTIM_OUTPUTSET_TIMEEV8_TIMFCMP3 HRTIM_OUTPUTSET_TIMEV_8
|
||||||
|
#define HRTIM_OUTPUTSET_TIMEEV9_TIMFCMP4 HRTIM_OUTPUTSET_TIMEV_9
|
||||||
|
#define HRTIM_OUTPUTSET_TIMFEV1_TIMACMP3 HRTIM_OUTPUTSET_TIMEV_1
|
||||||
|
#define HRTIM_OUTPUTSET_TIMFEV2_TIMBCMP1 HRTIM_OUTPUTSET_TIMEV_2
|
||||||
|
#define HRTIM_OUTPUTSET_TIMFEV3_TIMBCMP4 HRTIM_OUTPUTSET_TIMEV_3
|
||||||
|
#define HRTIM_OUTPUTSET_TIMFEV4_TIMCCMP1 HRTIM_OUTPUTSET_TIMEV_4
|
||||||
|
#define HRTIM_OUTPUTSET_TIMFEV5_TIMCCMP4 HRTIM_OUTPUTSET_TIMEV_5
|
||||||
|
#define HRTIM_OUTPUTSET_TIMFEV6_TIMDCMP3 HRTIM_OUTPUTSET_TIMEV_6
|
||||||
|
#define HRTIM_OUTPUTSET_TIMFEV7_TIMDCMP4 HRTIM_OUTPUTSET_TIMEV_7
|
||||||
|
#define HRTIM_OUTPUTSET_TIMFEV8_TIMECMP2 HRTIM_OUTPUTSET_TIMEV_8
|
||||||
|
#define HRTIM_OUTPUTSET_TIMFEV9_TIMECMP3 HRTIM_OUTPUTSET_TIMEV_9
|
||||||
|
|
||||||
|
#define HRTIM_OUTPUTRESET_TIMAEV1_TIMBCMP1 HRTIM_OUTPUTSET_TIMEV_1
|
||||||
|
#define HRTIM_OUTPUTRESET_TIMAEV2_TIMBCMP2 HRTIM_OUTPUTSET_TIMEV_2
|
||||||
|
#define HRTIM_OUTPUTRESET_TIMAEV3_TIMCCMP2 HRTIM_OUTPUTSET_TIMEV_3
|
||||||
|
#define HRTIM_OUTPUTRESET_TIMAEV4_TIMCCMP3 HRTIM_OUTPUTSET_TIMEV_4
|
||||||
|
#define HRTIM_OUTPUTRESET_TIMAEV5_TIMDCMP1 HRTIM_OUTPUTSET_TIMEV_5
|
||||||
|
#define HRTIM_OUTPUTRESET_TIMAEV6_TIMDCMP2 HRTIM_OUTPUTSET_TIMEV_6
|
||||||
|
#define HRTIM_OUTPUTRESET_TIMAEV7_TIMECMP3 HRTIM_OUTPUTSET_TIMEV_7
|
||||||
|
#define HRTIM_OUTPUTRESET_TIMAEV8_TIMECMP4 HRTIM_OUTPUTSET_TIMEV_8
|
||||||
|
#define HRTIM_OUTPUTRESET_TIMAEV9_TIMFCMP4 HRTIM_OUTPUTSET_TIMEV_9
|
||||||
|
#define HRTIM_OUTPUTRESET_TIMBEV1_TIMACMP1 HRTIM_OUTPUTSET_TIMEV_1
|
||||||
|
#define HRTIM_OUTPUTRESET_TIMBEV2_TIMACMP2 HRTIM_OUTPUTSET_TIMEV_2
|
||||||
|
#define HRTIM_OUTPUTRESET_TIMBEV3_TIMCCMP3 HRTIM_OUTPUTSET_TIMEV_3
|
||||||
|
#define HRTIM_OUTPUTRESET_TIMBEV4_TIMCCMP4 HRTIM_OUTPUTSET_TIMEV_4
|
||||||
|
#define HRTIM_OUTPUTRESET_TIMBEV5_TIMDCMP3 HRTIM_OUTPUTSET_TIMEV_5
|
||||||
|
#define HRTIM_OUTPUTRESET_TIMBEV6_TIMDCMP4 HRTIM_OUTPUTSET_TIMEV_6
|
||||||
|
#define HRTIM_OUTPUTRESET_TIMBEV7_TIMECMP1 HRTIM_OUTPUTSET_TIMEV_7
|
||||||
|
#define HRTIM_OUTPUTRESET_TIMBEV8_TIMECMP2 HRTIM_OUTPUTSET_TIMEV_8
|
||||||
|
#define HRTIM_OUTPUTRESET_TIMBEV9_TIMFCMP3 HRTIM_OUTPUTSET_TIMEV_9
|
||||||
|
#define HRTIM_OUTPUTRESET_TIMCEV1_TIMACMP1 HRTIM_OUTPUTSET_TIMEV_1
|
||||||
|
#define HRTIM_OUTPUTRESET_TIMCEV2_TIMACMP2 HRTIM_OUTPUTSET_TIMEV_2
|
||||||
|
#define HRTIM_OUTPUTRESET_TIMCEV3_TIMBCMP2 HRTIM_OUTPUTSET_TIMEV_3
|
||||||
|
#define HRTIM_OUTPUTRESET_TIMCEV4_TIMBCMP3 HRTIM_OUTPUTSET_TIMEV_4
|
||||||
|
#define HRTIM_OUTPUTRESET_TIMCEV5_TIMDCMP2 HRTIM_OUTPUTSET_TIMEV_5
|
||||||
|
#define HRTIM_OUTPUTRESET_TIMCEV6_TIMDCMP4 HRTIM_OUTPUTSET_TIMEV_6
|
||||||
|
#define HRTIM_OUTPUTRESET_TIMCEV7_TIMECMP3 HRTIM_OUTPUTSET_TIMEV_7
|
||||||
|
#define HRTIM_OUTPUTRESET_TIMCEV8_TIMECMP4 HRTIM_OUTPUTSET_TIMEV_8
|
||||||
|
#define HRTIM_OUTPUTRESET_TIMCEV9_TIMFCMP2 HRTIM_OUTPUTSET_TIMEV_9
|
||||||
|
#define HRTIM_OUTPUTRESET_TIMDEV1_TIMACMP1 HRTIM_OUTPUTSET_TIMEV_1
|
||||||
|
#define HRTIM_OUTPUTRESET_TIMDEV2_TIMACMP4 HRTIM_OUTPUTSET_TIMEV_2
|
||||||
|
#define HRTIM_OUTPUTRESET_TIMDEV3_TIMBCMP2 HRTIM_OUTPUTSET_TIMEV_3
|
||||||
|
#define HRTIM_OUTPUTRESET_TIMDEV4_TIMBCMP4 HRTIM_OUTPUTSET_TIMEV_4
|
||||||
|
#define HRTIM_OUTPUTRESET_TIMDEV5_TIMCCMP4 HRTIM_OUTPUTSET_TIMEV_5
|
||||||
|
#define HRTIM_OUTPUTRESET_TIMDEV6_TIMECMP1 HRTIM_OUTPUTSET_TIMEV_6
|
||||||
|
#define HRTIM_OUTPUTRESET_TIMDEV7_TIMECMP4 HRTIM_OUTPUTSET_TIMEV_7
|
||||||
|
#define HRTIM_OUTPUTRESET_TIMDEV8_TIMFCMP1 HRTIM_OUTPUTSET_TIMEV_8
|
||||||
|
#define HRTIM_OUTPUTRESET_TIMDEV9_TIMFCMP3 HRTIM_OUTPUTSET_TIMEV_9
|
||||||
|
#define HRTIM_OUTPUTRESET_TIMEEV1_TIMACMP4 HRTIM_OUTPUTSET_TIMEV_1
|
||||||
|
#define HRTIM_OUTPUTRESET_TIMEEV2_TIMBCMP3 HRTIM_OUTPUTSET_TIMEV_2
|
||||||
|
#define HRTIM_OUTPUTRESET_TIMEEV3_TIMBCMP4 HRTIM_OUTPUTSET_TIMEV_3
|
||||||
|
#define HRTIM_OUTPUTRESET_TIMEEV4_TIMCCMP1 HRTIM_OUTPUTSET_TIMEV_4
|
||||||
|
#define HRTIM_OUTPUTRESET_TIMEEV5_TIMDCMP2 HRTIM_OUTPUTSET_TIMEV_5
|
||||||
|
#define HRTIM_OUTPUTRESET_TIMEEV6_TIMDCMP1 HRTIM_OUTPUTSET_TIMEV_6
|
||||||
|
#define HRTIM_OUTPUTRESET_TIMEEV7_TIMDCMP2 HRTIM_OUTPUTSET_TIMEV_7
|
||||||
|
#define HRTIM_OUTPUTRESET_TIMEEV8_TIMFCMP3 HRTIM_OUTPUTSET_TIMEV_8
|
||||||
|
#define HRTIM_OUTPUTRESET_TIMEEV9_TIMFCMP4 HRTIM_OUTPUTSET_TIMEV_9
|
||||||
|
#define HRTIM_OUTPUTRESET_TIMFEV1_TIMACMP3 HRTIM_OUTPUTSET_TIMEV_1
|
||||||
|
#define HRTIM_OUTPUTRESET_TIMFEV2_TIMBCMP1 HRTIM_OUTPUTSET_TIMEV_2
|
||||||
|
#define HRTIM_OUTPUTRESET_TIMFEV3_TIMBCMP4 HRTIM_OUTPUTSET_TIMEV_3
|
||||||
|
#define HRTIM_OUTPUTRESET_TIMFEV4_TIMCCMP1 HRTIM_OUTPUTSET_TIMEV_4
|
||||||
|
#define HRTIM_OUTPUTRESET_TIMFEV5_TIMCCMP4 HRTIM_OUTPUTSET_TIMEV_5
|
||||||
|
#define HRTIM_OUTPUTRESET_TIMFEV6_TIMDCMP3 HRTIM_OUTPUTSET_TIMEV_6
|
||||||
|
#define HRTIM_OUTPUTRESET_TIMFEV7_TIMDCMP4 HRTIM_OUTPUTSET_TIMEV_7
|
||||||
|
#define HRTIM_OUTPUTRESET_TIMFEV8_TIMECMP2 HRTIM_OUTPUTSET_TIMEV_8
|
||||||
|
#define HRTIM_OUTPUTRESET_TIMFEV9_TIMECMP3 HRTIM_OUTPUTSET_TIMEV_9
|
||||||
|
#endif /* STM32H7 */
|
||||||
|
|
||||||
|
#if defined(STM32F3)
|
||||||
|
/** @brief Constants defining available sources associated to external events.
|
||||||
|
*/
|
||||||
|
#define HRTIM_EVENTSRC_1 (0x00000000U)
|
||||||
|
#define HRTIM_EVENTSRC_2 (HRTIM_EECR1_EE1SRC_0)
|
||||||
|
#define HRTIM_EVENTSRC_3 (HRTIM_EECR1_EE1SRC_1)
|
||||||
|
#define HRTIM_EVENTSRC_4 (HRTIM_EECR1_EE1SRC_1 | HRTIM_EECR1_EE1SRC_0)
|
||||||
|
|
||||||
|
/** @brief Constants defining the events that can be selected to configure the
|
||||||
|
* set/reset crossbar of a timer output
|
||||||
|
*/
|
||||||
|
#define HRTIM_OUTPUTSET_TIMEV_1 (HRTIM_SET1R_TIMEVNT1)
|
||||||
|
#define HRTIM_OUTPUTSET_TIMEV_2 (HRTIM_SET1R_TIMEVNT2)
|
||||||
|
#define HRTIM_OUTPUTSET_TIMEV_3 (HRTIM_SET1R_TIMEVNT3)
|
||||||
|
#define HRTIM_OUTPUTSET_TIMEV_4 (HRTIM_SET1R_TIMEVNT4)
|
||||||
|
#define HRTIM_OUTPUTSET_TIMEV_5 (HRTIM_SET1R_TIMEVNT5)
|
||||||
|
#define HRTIM_OUTPUTSET_TIMEV_6 (HRTIM_SET1R_TIMEVNT6)
|
||||||
|
#define HRTIM_OUTPUTSET_TIMEV_7 (HRTIM_SET1R_TIMEVNT7)
|
||||||
|
#define HRTIM_OUTPUTSET_TIMEV_8 (HRTIM_SET1R_TIMEVNT8)
|
||||||
|
#define HRTIM_OUTPUTSET_TIMEV_9 (HRTIM_SET1R_TIMEVNT9)
|
||||||
|
|
||||||
|
#define HRTIM_OUTPUTRESET_TIMEV_1 (HRTIM_RST1R_TIMEVNT1)
|
||||||
|
#define HRTIM_OUTPUTRESET_TIMEV_2 (HRTIM_RST1R_TIMEVNT2)
|
||||||
|
#define HRTIM_OUTPUTRESET_TIMEV_3 (HRTIM_RST1R_TIMEVNT3)
|
||||||
|
#define HRTIM_OUTPUTRESET_TIMEV_4 (HRTIM_RST1R_TIMEVNT4)
|
||||||
|
#define HRTIM_OUTPUTRESET_TIMEV_5 (HRTIM_RST1R_TIMEVNT5)
|
||||||
|
#define HRTIM_OUTPUTRESET_TIMEV_6 (HRTIM_RST1R_TIMEVNT6)
|
||||||
|
#define HRTIM_OUTPUTRESET_TIMEV_7 (HRTIM_RST1R_TIMEVNT7)
|
||||||
|
#define HRTIM_OUTPUTRESET_TIMEV_8 (HRTIM_RST1R_TIMEVNT8)
|
||||||
|
#define HRTIM_OUTPUTRESET_TIMEV_9 (HRTIM_RST1R_TIMEVNT9)
|
||||||
|
|
||||||
|
/** @brief Constants defining the event filtering applied to external events
|
||||||
|
* by a timer
|
||||||
|
*/
|
||||||
|
#define HRTIM_TIMEVENTFILTER_NONE (0x00000000U)
|
||||||
|
#define HRTIM_TIMEVENTFILTER_BLANKINGCMP1 (HRTIM_EEFR1_EE1FLTR_0)
|
||||||
|
#define HRTIM_TIMEVENTFILTER_BLANKINGCMP2 (HRTIM_EEFR1_EE1FLTR_1)
|
||||||
|
#define HRTIM_TIMEVENTFILTER_BLANKINGCMP3 (HRTIM_EEFR1_EE1FLTR_1 | HRTIM_EEFR1_EE1FLTR_0)
|
||||||
|
#define HRTIM_TIMEVENTFILTER_BLANKINGCMP4 (HRTIM_EEFR1_EE1FLTR_2)
|
||||||
|
#define HRTIM_TIMEVENTFILTER_BLANKINGFLTR1 (HRTIM_EEFR1_EE1FLTR_2 | HRTIM_EEFR1_EE1FLTR_0)
|
||||||
|
#define HRTIM_TIMEVENTFILTER_BLANKINGFLTR2 (HRTIM_EEFR1_EE1FLTR_2 | HRTIM_EEFR1_EE1FLTR_1)
|
||||||
|
#define HRTIM_TIMEVENTFILTER_BLANKINGFLTR3 (HRTIM_EEFR1_EE1FLTR_2 | HRTIM_EEFR1_EE1FLTR_1 | HRTIM_EEFR1_EE1FLTR_0)
|
||||||
|
#define HRTIM_TIMEVENTFILTER_BLANKINGFLTR4 (HRTIM_EEFR1_EE1FLTR_3)
|
||||||
|
#define HRTIM_TIMEVENTFILTER_BLANKINGFLTR5 (HRTIM_EEFR1_EE1FLTR_3 | HRTIM_EEFR1_EE1FLTR_0)
|
||||||
|
#define HRTIM_TIMEVENTFILTER_BLANKINGFLTR6 (HRTIM_EEFR1_EE1FLTR_3 | HRTIM_EEFR1_EE1FLTR_1)
|
||||||
|
#define HRTIM_TIMEVENTFILTER_BLANKINGFLTR7 (HRTIM_EEFR1_EE1FLTR_3 | HRTIM_EEFR1_EE1FLTR_1 | HRTIM_EEFR1_EE1FLTR_0)
|
||||||
|
#define HRTIM_TIMEVENTFILTER_BLANKINGFLTR8 (HRTIM_EEFR1_EE1FLTR_3 | HRTIM_EEFR1_EE1FLTR_2)
|
||||||
|
#define HRTIM_TIMEVENTFILTER_WINDOWINGCMP2 (HRTIM_EEFR1_EE1FLTR_3 | HRTIM_EEFR1_EE1FLTR_2 | HRTIM_EEFR1_EE1FLTR_0)
|
||||||
|
#define HRTIM_TIMEVENTFILTER_WINDOWINGCMP3 (HRTIM_EEFR1_EE1FLTR_3 | HRTIM_EEFR1_EE1FLTR_2 | HRTIM_EEFR1_EE1FLTR_1)
|
||||||
|
#define HRTIM_TIMEVENTFILTER_WINDOWINGTIM (HRTIM_EEFR1_EE1FLTR_3 | HRTIM_EEFR1_EE1FLTR_2 | HRTIM_EEFR1_EE1FLTR_1 | HRTIM_EEFR1_EE1FLTR_0)
|
||||||
|
|
||||||
|
/** @brief Constants defining the DLL calibration periods (in micro seconds)
|
||||||
|
*/
|
||||||
|
#define HRTIM_CALIBRATIONRATE_7300 0x00000000U
|
||||||
|
#define HRTIM_CALIBRATIONRATE_910 (HRTIM_DLLCR_CALRTE_0)
|
||||||
|
#define HRTIM_CALIBRATIONRATE_114 (HRTIM_DLLCR_CALRTE_1)
|
||||||
|
#define HRTIM_CALIBRATIONRATE_14 (HRTIM_DLLCR_CALRTE_1 | HRTIM_DLLCR_CALRTE_0)
|
||||||
|
|
||||||
|
#endif /* STM32F3 */
|
||||||
/**
|
/**
|
||||||
* @}
|
* @}
|
||||||
*/
|
*/
|
||||||
|
@ -738,6 +955,12 @@
|
||||||
#define OPAMP_PGACONNECT_VM0 OPAMP_PGA_CONNECT_INVERTINGINPUT_IO0
|
#define OPAMP_PGACONNECT_VM0 OPAMP_PGA_CONNECT_INVERTINGINPUT_IO0
|
||||||
#define OPAMP_PGACONNECT_VM1 OPAMP_PGA_CONNECT_INVERTINGINPUT_IO1
|
#define OPAMP_PGACONNECT_VM1 OPAMP_PGA_CONNECT_INVERTINGINPUT_IO1
|
||||||
|
|
||||||
|
#if defined(STM32L1) || defined(STM32L4) || defined(STM32L5) || defined(STM32H7)
|
||||||
|
#define HAL_OPAMP_MSP_INIT_CB_ID HAL_OPAMP_MSPINIT_CB_ID
|
||||||
|
#define HAL_OPAMP_MSP_DEINIT_CB_ID HAL_OPAMP_MSPDEINIT_CB_ID
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @}
|
* @}
|
||||||
*/
|
*/
|
||||||
|
@ -753,7 +976,6 @@
|
||||||
|
|
||||||
#define I2S_FLAG_TXE I2S_FLAG_TXP
|
#define I2S_FLAG_TXE I2S_FLAG_TXP
|
||||||
#define I2S_FLAG_RXNE I2S_FLAG_RXP
|
#define I2S_FLAG_RXNE I2S_FLAG_RXP
|
||||||
#define I2S_FLAG_FRE I2S_FLAG_TIFRE
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#if defined(STM32F7)
|
#if defined(STM32F7)
|
||||||
|
@ -824,6 +1046,16 @@
|
||||||
#define RTC_TAMPERPIN_PA0 RTC_TAMPERPIN_POS1
|
#define RTC_TAMPERPIN_PA0 RTC_TAMPERPIN_POS1
|
||||||
#define RTC_TAMPERPIN_PI8 RTC_TAMPERPIN_POS1
|
#define RTC_TAMPERPIN_PI8 RTC_TAMPERPIN_POS1
|
||||||
|
|
||||||
|
#if defined(STM32H7)
|
||||||
|
#define RTC_TAMPCR_TAMPXE RTC_TAMPER_X
|
||||||
|
#define RTC_TAMPCR_TAMPXIE RTC_TAMPER_X_INTERRUPT
|
||||||
|
|
||||||
|
#define RTC_TAMPER1_INTERRUPT RTC_IT_TAMP1
|
||||||
|
#define RTC_TAMPER2_INTERRUPT RTC_IT_TAMP2
|
||||||
|
#define RTC_TAMPER3_INTERRUPT RTC_IT_TAMP3
|
||||||
|
#define RTC_ALL_TAMPER_INTERRUPT RTC_IT_TAMPALL
|
||||||
|
#endif /* STM32H7 */
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @}
|
* @}
|
||||||
*/
|
*/
|
||||||
|
@ -971,6 +1203,24 @@
|
||||||
#define IS_TIM_HALL_INTERFACE_INSTANCE IS_TIM_HALL_SENSOR_INTERFACE_INSTANCE
|
#define IS_TIM_HALL_INTERFACE_INSTANCE IS_TIM_HALL_SENSOR_INTERFACE_INSTANCE
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#if defined(STM32H7)
|
||||||
|
#define TIM_TIM1_ETR_COMP1_OUT TIM_TIM1_ETR_COMP1
|
||||||
|
#define TIM_TIM1_ETR_COMP2_OUT TIM_TIM1_ETR_COMP2
|
||||||
|
#define TIM_TIM8_ETR_COMP1_OUT TIM_TIM8_ETR_COMP1
|
||||||
|
#define TIM_TIM8_ETR_COMP2_OUT TIM_TIM8_ETR_COMP2
|
||||||
|
#define TIM_TIM2_ETR_COMP1_OUT TIM_TIM2_ETR_COMP1
|
||||||
|
#define TIM_TIM2_ETR_COMP2_OUT TIM_TIM2_ETR_COMP2
|
||||||
|
#define TIM_TIM3_ETR_COMP1_OUT TIM_TIM3_ETR_COMP1
|
||||||
|
#define TIM_TIM1_TI1_COMP1_OUT TIM_TIM1_TI1_COMP1
|
||||||
|
#define TIM_TIM8_TI1_COMP2_OUT TIM_TIM8_TI1_COMP2
|
||||||
|
#define TIM_TIM2_TI4_COMP1_OUT TIM_TIM2_TI4_COMP1
|
||||||
|
#define TIM_TIM2_TI4_COMP2_OUT TIM_TIM2_TI4_COMP2
|
||||||
|
#define TIM_TIM2_TI4_COMP1COMP2_OUT TIM_TIM2_TI4_COMP1_COMP2
|
||||||
|
#define TIM_TIM3_TI1_COMP1_OUT TIM_TIM3_TI1_COMP1
|
||||||
|
#define TIM_TIM3_TI1_COMP2_OUT TIM_TIM3_TI1_COMP2
|
||||||
|
#define TIM_TIM3_TI1_COMP1COMP2_OUT TIM_TIM3_TI1_COMP1_COMP2
|
||||||
|
#endif
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @}
|
* @}
|
||||||
*/
|
*/
|
||||||
|
@ -1199,6 +1449,30 @@
|
||||||
|
|
||||||
#define HASH_HMACKeyType_ShortKey HASH_HMAC_KEYTYPE_SHORTKEY
|
#define HASH_HMACKeyType_ShortKey HASH_HMAC_KEYTYPE_SHORTKEY
|
||||||
#define HASH_HMACKeyType_LongKey HASH_HMAC_KEYTYPE_LONGKEY
|
#define HASH_HMACKeyType_LongKey HASH_HMAC_KEYTYPE_LONGKEY
|
||||||
|
|
||||||
|
#if defined(STM32L4) || defined(STM32F4) || defined(STM32F7) || defined(STM32H7)
|
||||||
|
|
||||||
|
#define HAL_HASH_MD5_Accumulate HAL_HASH_MD5_Accmlt
|
||||||
|
#define HAL_HASH_MD5_Accumulate_End HAL_HASH_MD5_Accmlt_End
|
||||||
|
#define HAL_HASH_MD5_Accumulate_IT HAL_HASH_MD5_Accmlt_IT
|
||||||
|
#define HAL_HASH_MD5_Accumulate_End_IT HAL_HASH_MD5_Accmlt_End_IT
|
||||||
|
|
||||||
|
#define HAL_HASH_SHA1_Accumulate HAL_HASH_SHA1_Accmlt
|
||||||
|
#define HAL_HASH_SHA1_Accumulate_End HAL_HASH_SHA1_Accmlt_End
|
||||||
|
#define HAL_HASH_SHA1_Accumulate_IT HAL_HASH_SHA1_Accmlt_IT
|
||||||
|
#define HAL_HASH_SHA1_Accumulate_End_IT HAL_HASH_SHA1_Accmlt_End_IT
|
||||||
|
|
||||||
|
#define HAL_HASHEx_SHA224_Accumulate HAL_HASHEx_SHA224_Accmlt
|
||||||
|
#define HAL_HASHEx_SHA224_Accumulate_End HAL_HASHEx_SHA224_Accmlt_End
|
||||||
|
#define HAL_HASHEx_SHA224_Accumulate_IT HAL_HASHEx_SHA224_Accmlt_IT
|
||||||
|
#define HAL_HASHEx_SHA224_Accumulate_End_IT HAL_HASHEx_SHA224_Accmlt_End_IT
|
||||||
|
|
||||||
|
#define HAL_HASHEx_SHA256_Accumulate HAL_HASHEx_SHA256_Accmlt
|
||||||
|
#define HAL_HASHEx_SHA256_Accumulate_End HAL_HASHEx_SHA256_Accmlt_End
|
||||||
|
#define HAL_HASHEx_SHA256_Accumulate_IT HAL_HASHEx_SHA256_Accmlt_IT
|
||||||
|
#define HAL_HASHEx_SHA256_Accumulate_End_IT HAL_HASHEx_SHA256_Accmlt_End_IT
|
||||||
|
|
||||||
|
#endif /* STM32L4 || STM32F4 || STM32F7 || STM32H7 */
|
||||||
/**
|
/**
|
||||||
* @}
|
* @}
|
||||||
*/
|
*/
|
||||||
|
@ -1221,6 +1495,13 @@
|
||||||
#endif
|
#endif
|
||||||
#define HAL_ADC_EnableBuffer_Cmd(cmd) (((cmd)==ENABLE) ? HAL_ADCEx_EnableVREFINT() : HAL_ADCEx_DisableVREFINT())
|
#define HAL_ADC_EnableBuffer_Cmd(cmd) (((cmd)==ENABLE) ? HAL_ADCEx_EnableVREFINT() : HAL_ADCEx_DisableVREFINT())
|
||||||
#define HAL_ADC_EnableBufferSensor_Cmd(cmd) (((cmd)==ENABLE) ? HAL_ADCEx_EnableVREFINTTempSensor() : HAL_ADCEx_DisableVREFINTTempSensor())
|
#define HAL_ADC_EnableBufferSensor_Cmd(cmd) (((cmd)==ENABLE) ? HAL_ADCEx_EnableVREFINTTempSensor() : HAL_ADCEx_DisableVREFINTTempSensor())
|
||||||
|
#if defined(STM32H7A3xx) || defined(STM32H7B3xx) || defined(STM32H7B0xx) || defined(STM32H7A3xxQ) || defined(STM32H7B3xxQ) || defined(STM32H7B0xxQ)
|
||||||
|
#define HAL_EnableSRDomainDBGStopMode HAL_EnableDomain3DBGStopMode
|
||||||
|
#define HAL_DisableSRDomainDBGStopMode HAL_DisableDomain3DBGStopMode
|
||||||
|
#define HAL_EnableSRDomainDBGStandbyMode HAL_EnableDomain3DBGStandbyMode
|
||||||
|
#define HAL_DisableSRDomainDBGStandbyMode HAL_DisableDomain3DBGStandbyMode
|
||||||
|
#endif /* STM32H7A3xx || STM32H7B3xx || STM32H7B0xx || STM32H7A3xxQ || STM32H7B3xxQ || STM32H7B0xxQ */
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @}
|
* @}
|
||||||
*/
|
*/
|
||||||
|
@ -1250,16 +1531,18 @@
|
||||||
|
|
||||||
#define HAL_I2CFastModePlusConfig(SYSCFG_I2CFastModePlus, cmd) (((cmd)==ENABLE)? HAL_I2CEx_EnableFastModePlus(SYSCFG_I2CFastModePlus): HAL_I2CEx_DisableFastModePlus(SYSCFG_I2CFastModePlus))
|
#define HAL_I2CFastModePlusConfig(SYSCFG_I2CFastModePlus, cmd) (((cmd)==ENABLE)? HAL_I2CEx_EnableFastModePlus(SYSCFG_I2CFastModePlus): HAL_I2CEx_DisableFastModePlus(SYSCFG_I2CFastModePlus))
|
||||||
|
|
||||||
#if defined(STM32H7) || defined(STM32WB) || defined(STM32G0) || defined(STM32F4) || defined(STM32F7)
|
#if defined(STM32H7) || defined(STM32WB) || defined(STM32G0) || defined(STM32F0) || defined(STM32F1) || defined(STM32F2) || defined(STM32F3) || defined(STM32F4) || defined(STM32F7) || defined(STM32L0) || defined(STM32L4) || defined(STM32L5) || defined(STM32G4)
|
||||||
#define HAL_I2C_Master_Sequential_Transmit_IT HAL_I2C_Master_Seq_Transmit_IT
|
#define HAL_I2C_Master_Sequential_Transmit_IT HAL_I2C_Master_Seq_Transmit_IT
|
||||||
#define HAL_I2C_Master_Sequential_Receive_IT HAL_I2C_Master_Seq_Receive_IT
|
#define HAL_I2C_Master_Sequential_Receive_IT HAL_I2C_Master_Seq_Receive_IT
|
||||||
#define HAL_I2C_Slave_Sequential_Transmit_IT HAL_I2C_Slave_Seq_Transmit_IT
|
#define HAL_I2C_Slave_Sequential_Transmit_IT HAL_I2C_Slave_Seq_Transmit_IT
|
||||||
#define HAL_I2C_Slave_Sequential_Receive_IT HAL_I2C_Slave_Seq_Receive_IT
|
#define HAL_I2C_Slave_Sequential_Receive_IT HAL_I2C_Slave_Seq_Receive_IT
|
||||||
|
#endif /* STM32H7 || STM32WB || STM32G0 || STM32F0 || STM32F1 || STM32F2 || STM32F3 || STM32F4 || STM32F7 || STM32L0 || STM32L4 || STM32L5 || STM32G4 */
|
||||||
|
#if defined(STM32H7) || defined(STM32WB) || defined(STM32G0) || defined(STM32F4) || defined(STM32F7) || defined(STM32L0) || defined(STM32L4) || defined(STM32L5) || defined(STM32G4)
|
||||||
#define HAL_I2C_Master_Sequential_Transmit_DMA HAL_I2C_Master_Seq_Transmit_DMA
|
#define HAL_I2C_Master_Sequential_Transmit_DMA HAL_I2C_Master_Seq_Transmit_DMA
|
||||||
#define HAL_I2C_Master_Sequential_Receive_DMA HAL_I2C_Master_Seq_Receive_DMA
|
#define HAL_I2C_Master_Sequential_Receive_DMA HAL_I2C_Master_Seq_Receive_DMA
|
||||||
#define HAL_I2C_Slave_Sequential_Transmit_DMA HAL_I2C_Slave_Seq_Transmit_DMA
|
#define HAL_I2C_Slave_Sequential_Transmit_DMA HAL_I2C_Slave_Seq_Transmit_DMA
|
||||||
#define HAL_I2C_Slave_Sequential_Receive_DMA HAL_I2C_Slave_Seq_Receive_DMA
|
#define HAL_I2C_Slave_Sequential_Receive_DMA HAL_I2C_Slave_Seq_Receive_DMA
|
||||||
#endif /* STM32H7 || STM32WB || STM32G0 || STM32F4 || STM32F7 */
|
#endif /* STM32H7 || STM32WB || STM32G0 || STM32F4 || STM32F7 || STM32L0 || STM32L4 || STM32L5 || STM32G4 */
|
||||||
|
|
||||||
#if defined(STM32F4)
|
#if defined(STM32F4)
|
||||||
#define HAL_FMPI2C_Master_Sequential_Transmit_IT HAL_FMPI2C_Master_Seq_Transmit_IT
|
#define HAL_FMPI2C_Master_Sequential_Transmit_IT HAL_FMPI2C_Master_Seq_Transmit_IT
|
||||||
|
@ -1278,6 +1561,13 @@
|
||||||
/** @defgroup HAL_PWR_Aliased HAL PWR Aliased maintained for legacy purpose
|
/** @defgroup HAL_PWR_Aliased HAL PWR Aliased maintained for legacy purpose
|
||||||
* @{
|
* @{
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
#if defined(STM32G0)
|
||||||
|
#define HAL_PWR_ConfigPVD HAL_PWREx_ConfigPVD
|
||||||
|
#define HAL_PWR_EnablePVD HAL_PWREx_EnablePVD
|
||||||
|
#define HAL_PWR_DisablePVD HAL_PWREx_DisablePVD
|
||||||
|
#define HAL_PWR_PVD_IRQHandler HAL_PWREx_PVD_IRQHandler
|
||||||
|
#endif
|
||||||
#define HAL_PWR_PVDConfig HAL_PWR_ConfigPVD
|
#define HAL_PWR_PVDConfig HAL_PWR_ConfigPVD
|
||||||
#define HAL_PWR_DisableBkUpReg HAL_PWREx_DisableBkUpReg
|
#define HAL_PWR_DisableBkUpReg HAL_PWREx_DisableBkUpReg
|
||||||
#define HAL_PWR_DisableFlashPowerDown HAL_PWREx_DisableFlashPowerDown
|
#define HAL_PWR_DisableFlashPowerDown HAL_PWREx_DisableFlashPowerDown
|
||||||
|
@ -1350,14 +1640,14 @@
|
||||||
#define HAL_TIM_DMAError TIM_DMAError
|
#define HAL_TIM_DMAError TIM_DMAError
|
||||||
#define HAL_TIM_DMACaptureCplt TIM_DMACaptureCplt
|
#define HAL_TIM_DMACaptureCplt TIM_DMACaptureCplt
|
||||||
#define HAL_TIMEx_DMACommutationCplt TIMEx_DMACommutationCplt
|
#define HAL_TIMEx_DMACommutationCplt TIMEx_DMACommutationCplt
|
||||||
#if defined(STM32H7) || defined(STM32G0) || defined(STM32F7) || defined(STM32F4) || defined(STM32L0)
|
#if defined(STM32H7) || defined(STM32G0) || defined(STM32F0) || defined(STM32F1) || defined(STM32F2) || defined(STM32F3) || defined(STM32F4) || defined(STM32F7) || defined(STM32L0) || defined(STM32L4)
|
||||||
#define HAL_TIM_SlaveConfigSynchronization HAL_TIM_SlaveConfigSynchro
|
#define HAL_TIM_SlaveConfigSynchronization HAL_TIM_SlaveConfigSynchro
|
||||||
#define HAL_TIM_SlaveConfigSynchronization_IT HAL_TIM_SlaveConfigSynchro_IT
|
#define HAL_TIM_SlaveConfigSynchronization_IT HAL_TIM_SlaveConfigSynchro_IT
|
||||||
#define HAL_TIMEx_CommutationCallback HAL_TIMEx_CommutCallback
|
#define HAL_TIMEx_CommutationCallback HAL_TIMEx_CommutCallback
|
||||||
#define HAL_TIMEx_ConfigCommutationEvent HAL_TIMEx_ConfigCommutEvent
|
#define HAL_TIMEx_ConfigCommutationEvent HAL_TIMEx_ConfigCommutEvent
|
||||||
#define HAL_TIMEx_ConfigCommutationEvent_IT HAL_TIMEx_ConfigCommutEvent_IT
|
#define HAL_TIMEx_ConfigCommutationEvent_IT HAL_TIMEx_ConfigCommutEvent_IT
|
||||||
#define HAL_TIMEx_ConfigCommutationEvent_DMA HAL_TIMEx_ConfigCommutEvent_DMA
|
#define HAL_TIMEx_ConfigCommutationEvent_DMA HAL_TIMEx_ConfigCommutEvent_DMA
|
||||||
#endif /* STM32H7 || STM32G0 || STM32F7 || STM32F4 || STM32L0 */
|
#endif /* STM32H7 || STM32G0 || STM32F0 || STM32F1 || STM32F2 || STM32F3 || STM32F4 || STM32F7 || STM32L0 */
|
||||||
/**
|
/**
|
||||||
* @}
|
* @}
|
||||||
*/
|
*/
|
||||||
|
@ -2476,12 +2766,28 @@
|
||||||
#define __USB_OTG_FS_CLK_DISABLE __HAL_RCC_USB_OTG_FS_CLK_DISABLE
|
#define __USB_OTG_FS_CLK_DISABLE __HAL_RCC_USB_OTG_FS_CLK_DISABLE
|
||||||
#define __USB_OTG_FS_CLK_ENABLE __HAL_RCC_USB_OTG_FS_CLK_ENABLE
|
#define __USB_OTG_FS_CLK_ENABLE __HAL_RCC_USB_OTG_FS_CLK_ENABLE
|
||||||
#define __USB_RELEASE_RESET __HAL_RCC_USB_RELEASE_RESET
|
#define __USB_RELEASE_RESET __HAL_RCC_USB_RELEASE_RESET
|
||||||
|
|
||||||
|
#if defined(STM32H7)
|
||||||
|
#define __HAL_RCC_WWDG_CLK_DISABLE __HAL_RCC_WWDG1_CLK_DISABLE
|
||||||
|
#define __HAL_RCC_WWDG_CLK_ENABLE __HAL_RCC_WWDG1_CLK_ENABLE
|
||||||
|
#define __HAL_RCC_WWDG_CLK_SLEEP_DISABLE __HAL_RCC_WWDG1_CLK_SLEEP_DISABLE
|
||||||
|
#define __HAL_RCC_WWDG_CLK_SLEEP_ENABLE __HAL_RCC_WWDG1_CLK_SLEEP_ENABLE
|
||||||
|
|
||||||
|
#define __HAL_RCC_WWDG_FORCE_RESET ((void)0U) /* Not available on the STM32H7*/
|
||||||
|
#define __HAL_RCC_WWDG_RELEASE_RESET ((void)0U) /* Not available on the STM32H7*/
|
||||||
|
|
||||||
|
|
||||||
|
#define __HAL_RCC_WWDG_IS_CLK_ENABLED __HAL_RCC_WWDG1_IS_CLK_ENABLED
|
||||||
|
#define __HAL_RCC_WWDG_IS_CLK_DISABLED __HAL_RCC_WWDG1_IS_CLK_DISABLED
|
||||||
|
#endif
|
||||||
|
|
||||||
#define __WWDG_CLK_DISABLE __HAL_RCC_WWDG_CLK_DISABLE
|
#define __WWDG_CLK_DISABLE __HAL_RCC_WWDG_CLK_DISABLE
|
||||||
#define __WWDG_CLK_ENABLE __HAL_RCC_WWDG_CLK_ENABLE
|
#define __WWDG_CLK_ENABLE __HAL_RCC_WWDG_CLK_ENABLE
|
||||||
#define __WWDG_CLK_SLEEP_DISABLE __HAL_RCC_WWDG_CLK_SLEEP_DISABLE
|
#define __WWDG_CLK_SLEEP_DISABLE __HAL_RCC_WWDG_CLK_SLEEP_DISABLE
|
||||||
#define __WWDG_CLK_SLEEP_ENABLE __HAL_RCC_WWDG_CLK_SLEEP_ENABLE
|
#define __WWDG_CLK_SLEEP_ENABLE __HAL_RCC_WWDG_CLK_SLEEP_ENABLE
|
||||||
#define __WWDG_FORCE_RESET __HAL_RCC_WWDG_FORCE_RESET
|
#define __WWDG_FORCE_RESET __HAL_RCC_WWDG_FORCE_RESET
|
||||||
#define __WWDG_RELEASE_RESET __HAL_RCC_WWDG_RELEASE_RESET
|
#define __WWDG_RELEASE_RESET __HAL_RCC_WWDG_RELEASE_RESET
|
||||||
|
|
||||||
#define __TIM21_CLK_ENABLE __HAL_RCC_TIM21_CLK_ENABLE
|
#define __TIM21_CLK_ENABLE __HAL_RCC_TIM21_CLK_ENABLE
|
||||||
#define __TIM21_CLK_DISABLE __HAL_RCC_TIM21_CLK_DISABLE
|
#define __TIM21_CLK_DISABLE __HAL_RCC_TIM21_CLK_DISABLE
|
||||||
#define __TIM21_FORCE_RESET __HAL_RCC_TIM21_FORCE_RESET
|
#define __TIM21_FORCE_RESET __HAL_RCC_TIM21_FORCE_RESET
|
||||||
|
@ -2814,6 +3120,15 @@
|
||||||
#define __WWDG_IS_CLK_ENABLED __HAL_RCC_WWDG_IS_CLK_ENABLED
|
#define __WWDG_IS_CLK_ENABLED __HAL_RCC_WWDG_IS_CLK_ENABLED
|
||||||
#define __WWDG_IS_CLK_DISABLED __HAL_RCC_WWDG_IS_CLK_DISABLED
|
#define __WWDG_IS_CLK_DISABLED __HAL_RCC_WWDG_IS_CLK_DISABLED
|
||||||
|
|
||||||
|
#if defined(STM32L1)
|
||||||
|
#define __HAL_RCC_CRYP_CLK_DISABLE __HAL_RCC_AES_CLK_DISABLE
|
||||||
|
#define __HAL_RCC_CRYP_CLK_ENABLE __HAL_RCC_AES_CLK_ENABLE
|
||||||
|
#define __HAL_RCC_CRYP_CLK_SLEEP_DISABLE __HAL_RCC_AES_CLK_SLEEP_DISABLE
|
||||||
|
#define __HAL_RCC_CRYP_CLK_SLEEP_ENABLE __HAL_RCC_AES_CLK_SLEEP_ENABLE
|
||||||
|
#define __HAL_RCC_CRYP_FORCE_RESET __HAL_RCC_AES_FORCE_RESET
|
||||||
|
#define __HAL_RCC_CRYP_RELEASE_RESET __HAL_RCC_AES_RELEASE_RESET
|
||||||
|
#endif /* STM32L1 */
|
||||||
|
|
||||||
#if defined(STM32F4)
|
#if defined(STM32F4)
|
||||||
#define __HAL_RCC_SDMMC1_FORCE_RESET __HAL_RCC_SDIO_FORCE_RESET
|
#define __HAL_RCC_SDMMC1_FORCE_RESET __HAL_RCC_SDIO_FORCE_RESET
|
||||||
#define __HAL_RCC_SDMMC1_RELEASE_RESET __HAL_RCC_SDIO_RELEASE_RESET
|
#define __HAL_RCC_SDMMC1_RELEASE_RESET __HAL_RCC_SDIO_RELEASE_RESET
|
||||||
|
@ -2930,7 +3245,7 @@
|
||||||
|
|
||||||
#if defined(STM32L4)
|
#if defined(STM32L4)
|
||||||
#define RCC_RTCCLKSOURCE_NO_CLK RCC_RTCCLKSOURCE_NONE
|
#define RCC_RTCCLKSOURCE_NO_CLK RCC_RTCCLKSOURCE_NONE
|
||||||
#elif defined(STM32WB) || defined(STM32G0)
|
#elif defined(STM32WB) || defined(STM32G0) || defined(STM32G4) || defined(STM32L5)
|
||||||
#else
|
#else
|
||||||
#define RCC_RTCCLKSOURCE_NONE RCC_RTCCLKSOURCE_NO_CLK
|
#define RCC_RTCCLKSOURCE_NONE RCC_RTCCLKSOURCE_NO_CLK
|
||||||
#endif
|
#endif
|
||||||
|
@ -3058,7 +3373,7 @@
|
||||||
/** @defgroup HAL_RTC_Aliased_Macros HAL RTC Aliased Macros maintained for legacy purpose
|
/** @defgroup HAL_RTC_Aliased_Macros HAL RTC Aliased Macros maintained for legacy purpose
|
||||||
* @{
|
* @{
|
||||||
*/
|
*/
|
||||||
#if defined (STM32G0) || defined (STM32L412xx) || defined (STM32L422xx) || defined (STM32L4P5xx) || defined (STM32L4Q5xx)
|
#if defined (STM32G0) || defined (STM32L5) || defined (STM32L412xx) || defined (STM32L422xx) || defined (STM32L4P5xx) || defined (STM32L4Q5xx) || defined (STM32G4)
|
||||||
#else
|
#else
|
||||||
#define __HAL_RTC_CLEAR_FLAG __HAL_RTC_EXTI_CLEAR_FLAG
|
#define __HAL_RTC_CLEAR_FLAG __HAL_RTC_EXTI_CLEAR_FLAG
|
||||||
#endif
|
#endif
|
||||||
|
@ -3174,14 +3489,14 @@
|
||||||
#define SDIO_IRQHandler SDMMC1_IRQHandler
|
#define SDIO_IRQHandler SDMMC1_IRQHandler
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#if defined(STM32F7) || defined(STM32F4) || defined(STM32F2)
|
#if defined(STM32F7) || defined(STM32F4) || defined(STM32F2) || defined(STM32L4) || defined(STM32H7)
|
||||||
#define HAL_SD_CardCIDTypedef HAL_SD_CardCIDTypeDef
|
#define HAL_SD_CardCIDTypedef HAL_SD_CardCIDTypeDef
|
||||||
#define HAL_SD_CardCSDTypedef HAL_SD_CardCSDTypeDef
|
#define HAL_SD_CardCSDTypedef HAL_SD_CardCSDTypeDef
|
||||||
#define HAL_SD_CardStatusTypedef HAL_SD_CardStatusTypeDef
|
#define HAL_SD_CardStatusTypedef HAL_SD_CardStatusTypeDef
|
||||||
#define HAL_SD_CardStateTypedef HAL_SD_CardStateTypeDef
|
#define HAL_SD_CardStateTypedef HAL_SD_CardStateTypeDef
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#if defined(STM32H7)
|
#if defined(STM32H7) || defined(STM32L5)
|
||||||
#define HAL_MMCEx_Read_DMADoubleBuffer0CpltCallback HAL_MMCEx_Read_DMADoubleBuf0CpltCallback
|
#define HAL_MMCEx_Read_DMADoubleBuffer0CpltCallback HAL_MMCEx_Read_DMADoubleBuf0CpltCallback
|
||||||
#define HAL_MMCEx_Read_DMADoubleBuffer1CpltCallback HAL_MMCEx_Read_DMADoubleBuf1CpltCallback
|
#define HAL_MMCEx_Read_DMADoubleBuffer1CpltCallback HAL_MMCEx_Read_DMADoubleBuf1CpltCallback
|
||||||
#define HAL_MMCEx_Write_DMADoubleBuffer0CpltCallback HAL_MMCEx_Write_DMADoubleBuf0CpltCallback
|
#define HAL_MMCEx_Write_DMADoubleBuffer0CpltCallback HAL_MMCEx_Write_DMADoubleBuf0CpltCallback
|
||||||
|
@ -3421,18 +3736,28 @@
|
||||||
/** @defgroup HAL_HRTIM_Aliased_Functions HAL HRTIM Aliased Functions maintained for legacy purpose
|
/** @defgroup HAL_HRTIM_Aliased_Functions HAL HRTIM Aliased Functions maintained for legacy purpose
|
||||||
* @{
|
* @{
|
||||||
*/
|
*/
|
||||||
#if defined (STM32H7) || defined (STM32F3)
|
#if defined (STM32H7) || defined (STM32G4) || defined (STM32F3)
|
||||||
#define HAL_HRTIM_WaveformCounterStart_IT HAL_HRTIM_WaveformCountStart_IT
|
#define HAL_HRTIM_WaveformCounterStart_IT HAL_HRTIM_WaveformCountStart_IT
|
||||||
#define HAL_HRTIM_WaveformCounterStart_DMA HAL_HRTIM_WaveformCountStart_DMA
|
#define HAL_HRTIM_WaveformCounterStart_DMA HAL_HRTIM_WaveformCountStart_DMA
|
||||||
#define HAL_HRTIM_WaveformCounterStart HAL_HRTIM_WaveformCountStart
|
#define HAL_HRTIM_WaveformCounterStart HAL_HRTIM_WaveformCountStart
|
||||||
#define HAL_HRTIM_WaveformCounterStop_IT HAL_HRTIM_WaveformCountStop_IT
|
#define HAL_HRTIM_WaveformCounterStop_IT HAL_HRTIM_WaveformCountStop_IT
|
||||||
#define HAL_HRTIM_WaveformCounterStop_DMA HAL_HRTIM_WaveformCountStop_DMA
|
#define HAL_HRTIM_WaveformCounterStop_DMA HAL_HRTIM_WaveformCountStop_DMA
|
||||||
#define HAL_HRTIM_WaveformCounterStop HAL_HRTIM_WaveformCountStop
|
#define HAL_HRTIM_WaveformCounterStop HAL_HRTIM_WaveformCountStop
|
||||||
#endif
|
#endif
|
||||||
/**
|
/**
|
||||||
* @}
|
* @}
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
/** @defgroup HAL_QSPI_Aliased_Macros HAL QSPI Aliased Macros maintained for legacy purpose
|
||||||
|
* @{
|
||||||
|
*/
|
||||||
|
#if defined (STM32L4) || defined (STM32F4) || defined (STM32F7)
|
||||||
|
#define HAL_QPSI_TIMEOUT_DEFAULT_VALUE HAL_QSPI_TIMEOUT_DEFAULT_VALUE
|
||||||
|
#endif /* STM32L4 || STM32F4 || STM32F7 */
|
||||||
|
/**
|
||||||
|
* @}
|
||||||
|
*/
|
||||||
|
|
||||||
/** @defgroup HAL_PPP_Aliased_Macros HAL PPP Aliased Macros maintained for legacy purpose
|
/** @defgroup HAL_PPP_Aliased_Macros HAL PPP Aliased Macros maintained for legacy purpose
|
||||||
* @{
|
* @{
|
||||||
*/
|
*/
|
||||||
|
|
|
@ -18,8 +18,8 @@
|
||||||
*/
|
*/
|
||||||
|
|
||||||
/* Define to prevent recursive inclusion -------------------------------------*/
|
/* Define to prevent recursive inclusion -------------------------------------*/
|
||||||
#ifndef __STM32F7xx_HAL_EXTI_H
|
#ifndef STM32F7xx_HAL_EXTI_H
|
||||||
#define __STM32F7xx_HAL_EXTI_H
|
#define STM32F7xx_HAL_EXTI_H
|
||||||
|
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
extern "C" {
|
extern "C" {
|
||||||
|
@ -38,14 +38,13 @@ extern "C" {
|
||||||
*/
|
*/
|
||||||
|
|
||||||
/* Exported types ------------------------------------------------------------*/
|
/* Exported types ------------------------------------------------------------*/
|
||||||
|
|
||||||
/** @defgroup EXTI_Exported_Types EXTI Exported Types
|
/** @defgroup EXTI_Exported_Types EXTI Exported Types
|
||||||
* @{
|
* @{
|
||||||
*/
|
*/
|
||||||
typedef enum
|
typedef enum
|
||||||
{
|
{
|
||||||
HAL_EXTI_COMMON_CB_ID = 0x00U,
|
HAL_EXTI_COMMON_CB_ID = 0x00U
|
||||||
HAL_EXTI_RISING_CB_ID = 0x01U,
|
|
||||||
HAL_EXTI_FALLING_CB_ID = 0x02U,
|
|
||||||
} EXTI_CallbackIDTypeDef;
|
} EXTI_CallbackIDTypeDef;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -68,6 +67,9 @@ typedef struct
|
||||||
This parameter can be a combination of @ref EXTI_Mode */
|
This parameter can be a combination of @ref EXTI_Mode */
|
||||||
uint32_t Trigger; /*!< The Exti Trigger to be configured. This parameter
|
uint32_t Trigger; /*!< The Exti Trigger to be configured. This parameter
|
||||||
can be a value of @ref EXTI_Trigger */
|
can be a value of @ref EXTI_Trigger */
|
||||||
|
uint32_t GPIOSel; /*!< The Exti GPIO multiplexer selection to be configured.
|
||||||
|
This parameter is only possible for line 0 to 15. It
|
||||||
|
can be a value of @ref EXTI_GPIOSel */
|
||||||
} EXTI_ConfigTypeDef;
|
} EXTI_ConfigTypeDef;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -82,48 +84,36 @@ typedef struct
|
||||||
/** @defgroup EXTI_Line EXTI Line
|
/** @defgroup EXTI_Line EXTI Line
|
||||||
* @{
|
* @{
|
||||||
*/
|
*/
|
||||||
#define EXTI_LINE_0 EXTI_IMR_IM0 /*!< External interrupt line 0 */
|
#define EXTI_LINE_0 (EXTI_GPIO | 0x00u) /*!< External interrupt line 0 */
|
||||||
#define EXTI_LINE_1 EXTI_IMR_IM1 /*!< External interrupt line 1 */
|
#define EXTI_LINE_1 (EXTI_GPIO | 0x01u) /*!< External interrupt line 1 */
|
||||||
#define EXTI_LINE_2 EXTI_IMR_IM2 /*!< External interrupt line 2 */
|
#define EXTI_LINE_2 (EXTI_GPIO | 0x02u) /*!< External interrupt line 2 */
|
||||||
#define EXTI_LINE_3 EXTI_IMR_IM3 /*!< External interrupt line 3 */
|
#define EXTI_LINE_3 (EXTI_GPIO | 0x03u) /*!< External interrupt line 3 */
|
||||||
#define EXTI_LINE_4 EXTI_IMR_IM4 /*!< External interrupt line 4 */
|
#define EXTI_LINE_4 (EXTI_GPIO | 0x04u) /*!< External interrupt line 4 */
|
||||||
#define EXTI_LINE_5 EXTI_IMR_IM5 /*!< External interrupt line 5 */
|
#define EXTI_LINE_5 (EXTI_GPIO | 0x05u) /*!< External interrupt line 5 */
|
||||||
#define EXTI_LINE_6 EXTI_IMR_IM6 /*!< External interrupt line 6 */
|
#define EXTI_LINE_6 (EXTI_GPIO | 0x06u) /*!< External interrupt line 6 */
|
||||||
#define EXTI_LINE_7 EXTI_IMR_IM7 /*!< External interrupt line 7 */
|
#define EXTI_LINE_7 (EXTI_GPIO | 0x07u) /*!< External interrupt line 7 */
|
||||||
#define EXTI_LINE_8 EXTI_IMR_IM8 /*!< External interrupt line 8 */
|
#define EXTI_LINE_8 (EXTI_GPIO | 0x08u) /*!< External interrupt line 8 */
|
||||||
#define EXTI_LINE_9 EXTI_IMR_IM9 /*!< External interrupt line 9 */
|
#define EXTI_LINE_9 (EXTI_GPIO | 0x09u) /*!< External interrupt line 9 */
|
||||||
#define EXTI_LINE_10 EXTI_IMR_IM10 /*!< External interrupt line 10 */
|
#define EXTI_LINE_10 (EXTI_GPIO | 0x0Au) /*!< External interrupt line 10 */
|
||||||
#define EXTI_LINE_11 EXTI_IMR_IM11 /*!< External interrupt line 11 */
|
#define EXTI_LINE_11 (EXTI_GPIO | 0x0Bu) /*!< External interrupt line 11 */
|
||||||
#define EXTI_LINE_12 EXTI_IMR_IM12 /*!< External interrupt line 12 */
|
#define EXTI_LINE_12 (EXTI_GPIO | 0x0Cu) /*!< External interrupt line 12 */
|
||||||
#define EXTI_LINE_13 EXTI_IMR_IM13 /*!< External interrupt line 13 */
|
#define EXTI_LINE_13 (EXTI_GPIO | 0x0Du) /*!< External interrupt line 13 */
|
||||||
#define EXTI_LINE_14 EXTI_IMR_IM14 /*!< External interrupt line 14 */
|
#define EXTI_LINE_14 (EXTI_GPIO | 0x0Eu) /*!< External interrupt line 14 */
|
||||||
#define EXTI_LINE_15 EXTI_IMR_IM15 /*!< External interrupt line 15 */
|
#define EXTI_LINE_15 (EXTI_GPIO | 0x0Fu) /*!< External interrupt line 15 */
|
||||||
#if defined(EXTI_IMR_IM16)
|
#define EXTI_LINE_16 (EXTI_CONFIG | 0x10u) /*!< External interrupt line 16 Connected to the PVD Output */
|
||||||
#define EXTI_LINE_16 EXTI_IMR_IM16 /*!< External interrupt line 16 Connected to the PVD Output */
|
#define EXTI_LINE_17 (EXTI_CONFIG | 0x11u) /*!< External interrupt line 17 Connected to the RTC Alarm event */
|
||||||
#endif /* EXTI_IMR_IM16 */
|
#define EXTI_LINE_18 (EXTI_CONFIG | 0x12u) /*!< External interrupt line 18 Connected to the USB OTG FS Wakeup from suspend event */
|
||||||
#if defined(EXTI_IMR_IM17)
|
#if defined(ETH)
|
||||||
#define EXTI_LINE_17 EXTI_IMR_IM17 /*!< External interrupt line 17 Connected to the RTC Alarm event */
|
#define EXTI_LINE_19 (EXTI_CONFIG | 0x13u) /*!< External interrupt line 19 Connected to the Ethernet Wakeup event */
|
||||||
#endif /* EXTI_IMR_IM17 */
|
#else
|
||||||
#if defined(EXTI_IMR_IM18)
|
#define EXTI_LINE_19 (EXTI_RESERVED | 0x13u) /*!< No interrupt supported in this line */
|
||||||
#define EXTI_LINE_18 EXTI_IMR_IM18 /*!< External interrupt line 18 Connected to the USB OTG FS Wakeup from suspend event */
|
#endif /* ETH */
|
||||||
#endif /* EXTI_IMR_IM18 */
|
#define EXTI_LINE_20 (EXTI_CONFIG | 0x14u) /*!< External interrupt line 20 Connected to the USB OTG HS (configured in FS) Wakeup event */
|
||||||
#if defined(EXTI_IMR_IM19)
|
#define EXTI_LINE_21 (EXTI_CONFIG | 0x15u) /*!< External interrupt line 21 Connected to the RTC Tamper and Time Stamp events */
|
||||||
#define EXTI_LINE_19 EXTI_IMR_IM19 /*!< External interrupt line 19 Connected to the Ethernet Wakeup event */
|
#define EXTI_LINE_22 (EXTI_CONFIG | 0x16u) /*!< External interrupt line 22 Connected to the RTC Wakeup event */
|
||||||
#endif /* EXTI_IMR_IM19 */
|
#define EXTI_LINE_23 (EXTI_CONFIG | 0x17u) /*!< External interrupt line 23 Connected to the LPTIM Wakeup event */
|
||||||
#if defined(EXTI_IMR_IM20)
|
|
||||||
#define EXTI_LINE_20 EXTI_IMR_IM20 /*!< External interrupt line 20 Connected to the USB OTG HS (configured in FS) Wakeup event */
|
|
||||||
#endif /* EXTI_IMR_IM20 */
|
|
||||||
#if defined(EXTI_IMR_IM21)
|
|
||||||
#define EXTI_LINE_21 EXTI_IMR_IM21 /*!< External interrupt line 21 Connected to the RTC Tamper and Time Stamp events */
|
|
||||||
#endif /* EXTI_IMR_IM21 */
|
|
||||||
#if defined(EXTI_IMR_IM22)
|
|
||||||
#define EXTI_LINE_22 EXTI_IMR_IM22 /*!< External interrupt line 22 Connected to the RTC Wakeup event */
|
|
||||||
#endif /* EXTI_IMR_IM22 */
|
|
||||||
#if defined(EXTI_IMR_IM23)
|
|
||||||
#define EXTI_LINE_23 EXTI_IMR_IM23 /*!< External interrupt line 23 Connected to the LPTIM Wakeup event */
|
|
||||||
#endif /* EXTI_IMR_IM23 */
|
|
||||||
#if defined(EXTI_IMR_IM24)
|
#if defined(EXTI_IMR_IM24)
|
||||||
#define EXTI_LINE_24 EXTI_IMR_IM24 /*!< External interrupt line 24 Connected to the MDIO Slave global Interrupt Wakeup event */
|
#define EXTI_LINE_24 (EXTI_CONFIG | 0x18u) /*!< External interrupt line 24 Connected to the MDIO Slave global Interrupt Wakeup event */
|
||||||
#endif /* EXTI_IMR_IM24 */
|
#endif /* EXTI_IMR_IM24 */
|
||||||
/**
|
/**
|
||||||
* @}
|
* @}
|
||||||
|
@ -142,6 +132,7 @@ typedef struct
|
||||||
/** @defgroup EXTI_Trigger EXTI Trigger
|
/** @defgroup EXTI_Trigger EXTI Trigger
|
||||||
* @{
|
* @{
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#define EXTI_TRIGGER_NONE 0x00000000u
|
#define EXTI_TRIGGER_NONE 0x00000000u
|
||||||
#define EXTI_TRIGGER_RISING 0x00000001u
|
#define EXTI_TRIGGER_RISING 0x00000001u
|
||||||
#define EXTI_TRIGGER_FALLING 0x00000002u
|
#define EXTI_TRIGGER_FALLING 0x00000002u
|
||||||
|
@ -150,6 +141,24 @@ typedef struct
|
||||||
* @}
|
* @}
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
/** @defgroup EXTI_GPIOSel EXTI GPIOSel
|
||||||
|
* @brief
|
||||||
|
* @{
|
||||||
|
*/
|
||||||
|
#define EXTI_GPIOA 0x00000000u
|
||||||
|
#define EXTI_GPIOB 0x00000001u
|
||||||
|
#define EXTI_GPIOC 0x00000002u
|
||||||
|
#define EXTI_GPIOD 0x00000003u
|
||||||
|
#define EXTI_GPIOE 0x00000004u
|
||||||
|
#define EXTI_GPIOF 0x00000005u
|
||||||
|
#define EXTI_GPIOG 0x00000006u
|
||||||
|
#define EXTI_GPIOH 0x00000007u
|
||||||
|
#define EXTI_GPIOI 0x00000008u
|
||||||
|
#define EXTI_GPIOJ 0x00000009u
|
||||||
|
#if defined (GPIOK)
|
||||||
|
#define EXTI_GPIOK 0x0000000Au
|
||||||
|
#endif /* GPIOK */
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @}
|
* @}
|
||||||
*/
|
*/
|
||||||
|
@ -167,6 +176,20 @@ typedef struct
|
||||||
/** @defgroup EXTI_Private_Constants EXTI Private Constants
|
/** @defgroup EXTI_Private_Constants EXTI Private Constants
|
||||||
* @{
|
* @{
|
||||||
*/
|
*/
|
||||||
|
/**
|
||||||
|
* @brief EXTI Line property definition
|
||||||
|
*/
|
||||||
|
#define EXTI_PROPERTY_SHIFT 24u
|
||||||
|
#define EXTI_CONFIG (0x02uL << EXTI_PROPERTY_SHIFT)
|
||||||
|
#define EXTI_GPIO ((0x04uL << EXTI_PROPERTY_SHIFT) | EXTI_CONFIG)
|
||||||
|
#define EXTI_RESERVED (0x08uL << EXTI_PROPERTY_SHIFT)
|
||||||
|
#define EXTI_PROPERTY_MASK (EXTI_CONFIG | EXTI_GPIO)
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief EXTI bit usage
|
||||||
|
*/
|
||||||
|
#define EXTI_PIN_MASK 0x0000001Fu
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief EXTI Mask for interrupt & event mode
|
* @brief EXTI Mask for interrupt & event mode
|
||||||
*/
|
*/
|
||||||
|
@ -175,12 +198,17 @@ typedef struct
|
||||||
/**
|
/**
|
||||||
* @brief EXTI Mask for trigger possibilities
|
* @brief EXTI Mask for trigger possibilities
|
||||||
*/
|
*/
|
||||||
#define EXTI_TRIGGER_MASK (EXTI_TRIGGER_RISING | EXTI_TRIGGER_FALLING | EXTI_TRIGGER_RISING_FALLING)
|
#define EXTI_TRIGGER_MASK (EXTI_TRIGGER_RISING | EXTI_TRIGGER_FALLING)
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief EXTI Line number
|
* @brief EXTI Line number
|
||||||
*/
|
*/
|
||||||
|
#if defined(EXTI_IMR_IM24)
|
||||||
#define EXTI_LINE_NB 25u
|
#define EXTI_LINE_NB 25u
|
||||||
|
#else
|
||||||
|
#define EXTI_LINE_NB 24u
|
||||||
|
#endif /* EXTI_IMR_IM24 */
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @}
|
* @}
|
||||||
|
@ -190,16 +218,47 @@ typedef struct
|
||||||
/** @defgroup EXTI_Private_Macros EXTI Private Macros
|
/** @defgroup EXTI_Private_Macros EXTI Private Macros
|
||||||
* @{
|
* @{
|
||||||
*/
|
*/
|
||||||
#define IS_EXTI_LINE(__LINE__) ((((__LINE__) & ~EXTI_IMR_IM) == 0x00U) && (__LINE__))
|
#define IS_EXTI_LINE(__LINE__) ((((__LINE__) & ~(EXTI_PROPERTY_MASK | EXTI_PIN_MASK)) == 0x00u) && \
|
||||||
|
((((__LINE__) & EXTI_PROPERTY_MASK) == EXTI_CONFIG) || \
|
||||||
|
(((__LINE__) & EXTI_PROPERTY_MASK) == EXTI_GPIO)) && \
|
||||||
|
(((__LINE__) & EXTI_PIN_MASK) < EXTI_LINE_NB))
|
||||||
|
|
||||||
#define IS_EXTI_MODE(__LINE__) ((((__LINE__) & ~EXTI_MODE_MASK) == 0x00U))
|
#define IS_EXTI_MODE(__LINE__) ((((__LINE__) & EXTI_MODE_MASK) != 0x00u) && \
|
||||||
|
(((__LINE__) & ~EXTI_MODE_MASK) == 0x00u))
|
||||||
|
|
||||||
#define IS_EXTI_TRIGGER(__LINE__) (((__LINE__) & ~EXTI_TRIGGER_MASK) == 0x00U)
|
#define IS_EXTI_TRIGGER(__LINE__) (((__LINE__) & ~EXTI_TRIGGER_MASK) == 0x00u)
|
||||||
|
|
||||||
#define IS_EXTI_PENDING_EDGE(__LINE__) (((__LINE__) == EXTI_TRIGGER_FALLING) || \
|
#define IS_EXTI_PENDING_EDGE(__LINE__) (((__LINE__) == EXTI_TRIGGER_FALLING) || \
|
||||||
((__LINE__) == EXTI_TRIGGER_RISING) || \
|
((__LINE__) == EXTI_TRIGGER_RISING) || \
|
||||||
((__LINE__) == EXTI_TRIGGER_RISING_FALLING))
|
((__LINE__) == EXTI_TRIGGER_RISING_FALLING))
|
||||||
|
|
||||||
|
#define IS_EXTI_CONFIG_LINE(__LINE__) (((__LINE__) & EXTI_CONFIG) != 0x00u)
|
||||||
|
|
||||||
|
#if defined (GPIOK)
|
||||||
|
#define IS_EXTI_GPIO_PORT(__PORT__) (((__PORT__) == EXTI_GPIOA) || \
|
||||||
|
((__PORT__) == EXTI_GPIOB) || \
|
||||||
|
((__PORT__) == EXTI_GPIOC) || \
|
||||||
|
((__PORT__) == EXTI_GPIOD) || \
|
||||||
|
((__PORT__) == EXTI_GPIOE) || \
|
||||||
|
((__PORT__) == EXTI_GPIOF) || \
|
||||||
|
((__PORT__) == EXTI_GPIOG) || \
|
||||||
|
((__PORT__) == EXTI_GPIOH) || \
|
||||||
|
((__PORT__) == EXTI_GPIOI) || \
|
||||||
|
((__PORT__) == EXTI_GPIOJ) || \
|
||||||
|
((__PORT__) == EXTI_GPIOK))
|
||||||
|
#else
|
||||||
|
#define IS_EXTI_GPIO_PORT(__PORT__) (((__PORT__) == EXTI_GPIOA) || \
|
||||||
|
((__PORT__) == EXTI_GPIOB) || \
|
||||||
|
((__PORT__) == EXTI_GPIOC) || \
|
||||||
|
((__PORT__) == EXTI_GPIOD) || \
|
||||||
|
((__PORT__) == EXTI_GPIOE) || \
|
||||||
|
((__PORT__) == EXTI_GPIOF) || \
|
||||||
|
((__PORT__) == EXTI_GPIOG) || \
|
||||||
|
((__PORT__) == EXTI_GPIOH) || \
|
||||||
|
((__PORT__) == EXTI_GPIOI) || \
|
||||||
|
((__PORT__) == EXTI_GPIOJ))
|
||||||
|
#endif /* GPIOK */
|
||||||
|
|
||||||
#define IS_EXTI_GPIO_PIN(__PIN__) ((__PIN__) < 16U)
|
#define IS_EXTI_GPIO_PIN(__PIN__) ((__PIN__) < 16U)
|
||||||
/**
|
/**
|
||||||
* @}
|
* @}
|
||||||
|
@ -255,6 +314,6 @@ void HAL_EXTI_GenerateSWI(EXTI_HandleTypeDef *hexti);
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#endif /* __STM32F7xx_HAL_EXTI_H */
|
#endif /* STM32F7xx_HAL_EXTI_H */
|
||||||
|
|
||||||
/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
|
/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
|
||||||
|
|
|
@ -262,7 +262,7 @@ void HAL_GPIO_EXTI_Callback(uint16_t GPIO_Pin);
|
||||||
* @{
|
* @{
|
||||||
*/
|
*/
|
||||||
#define IS_GPIO_PIN_ACTION(ACTION) (((ACTION) == GPIO_PIN_RESET) || ((ACTION) == GPIO_PIN_SET))
|
#define IS_GPIO_PIN_ACTION(ACTION) (((ACTION) == GPIO_PIN_RESET) || ((ACTION) == GPIO_PIN_SET))
|
||||||
#define IS_GPIO_PIN(__PIN__) ((((__PIN__) & GPIO_PIN_MASK) != (uint32_t)0x00))
|
#define IS_GPIO_PIN(__PIN__) ((((uint32_t)(__PIN__) & GPIO_PIN_MASK) != 0x00U))
|
||||||
#define IS_GPIO_MODE(MODE) (((MODE) == GPIO_MODE_INPUT) ||\
|
#define IS_GPIO_MODE(MODE) (((MODE) == GPIO_MODE_INPUT) ||\
|
||||||
((MODE) == GPIO_MODE_OUTPUT_PP) ||\
|
((MODE) == GPIO_MODE_OUTPUT_PP) ||\
|
||||||
((MODE) == GPIO_MODE_OUTPUT_OD) ||\
|
((MODE) == GPIO_MODE_OUTPUT_OD) ||\
|
||||||
|
|
|
@ -167,6 +167,9 @@ void HAL_I2CEx_DisableFastModePlus(uint32_t ConfigFastModePlus);
|
||||||
(((__CONFIG__) & I2C_FASTMODEPLUS_PB9) == I2C_FASTMODEPLUS_PB9) || \
|
(((__CONFIG__) & I2C_FASTMODEPLUS_PB9) == I2C_FASTMODEPLUS_PB9) || \
|
||||||
(((__CONFIG__) & I2C_FASTMODEPLUS_I2C1) == I2C_FASTMODEPLUS_I2C1))
|
(((__CONFIG__) & I2C_FASTMODEPLUS_I2C1) == I2C_FASTMODEPLUS_I2C1))
|
||||||
#endif /* SYSCFG_PMC_I2C1_FMP && SYSCFG_PMC_I2C2_FMP && SYSCFG_PMC_I2C3_FMP && SYSCFG_PMC_I2C4_FMP */
|
#endif /* SYSCFG_PMC_I2C1_FMP && SYSCFG_PMC_I2C2_FMP && SYSCFG_PMC_I2C3_FMP && SYSCFG_PMC_I2C4_FMP */
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @}
|
* @}
|
||||||
*/
|
*/
|
||||||
|
|
|
@ -96,16 +96,16 @@ typedef struct __PCD_HandleTypeDef
|
||||||
typedef struct
|
typedef struct
|
||||||
#endif /* USE_HAL_PCD_REGISTER_CALLBACKS */
|
#endif /* USE_HAL_PCD_REGISTER_CALLBACKS */
|
||||||
{
|
{
|
||||||
PCD_TypeDef *Instance; /*!< Register base address */
|
PCD_TypeDef *Instance; /*!< Register base address */
|
||||||
PCD_InitTypeDef Init; /*!< PCD required parameters */
|
PCD_InitTypeDef Init; /*!< PCD required parameters */
|
||||||
__IO uint8_t USB_Address; /*!< USB Address */
|
__IO uint8_t USB_Address; /*!< USB Address */
|
||||||
PCD_EPTypeDef IN_ep[16]; /*!< IN endpoint parameters */
|
PCD_EPTypeDef IN_ep[16]; /*!< IN endpoint parameters */
|
||||||
PCD_EPTypeDef OUT_ep[16]; /*!< OUT endpoint parameters */
|
PCD_EPTypeDef OUT_ep[16]; /*!< OUT endpoint parameters */
|
||||||
HAL_LockTypeDef Lock; /*!< PCD peripheral status */
|
HAL_LockTypeDef Lock; /*!< PCD peripheral status */
|
||||||
__IO PCD_StateTypeDef State; /*!< PCD communication state */
|
__IO PCD_StateTypeDef State; /*!< PCD communication state */
|
||||||
__IO uint32_t ErrorCode; /*!< PCD Error code */
|
__IO uint32_t ErrorCode; /*!< PCD Error code */
|
||||||
uint32_t Setup[12]; /*!< Setup packet buffer */
|
uint32_t Setup[12]; /*!< Setup packet buffer */
|
||||||
PCD_LPM_StateTypeDef LPM_State; /*!< LPM State */
|
PCD_LPM_StateTypeDef LPM_State; /*!< LPM State */
|
||||||
uint32_t BESL;
|
uint32_t BESL;
|
||||||
|
|
||||||
|
|
||||||
|
@ -148,9 +148,9 @@ typedef struct
|
||||||
/** @defgroup PCD_Speed PCD Speed
|
/** @defgroup PCD_Speed PCD Speed
|
||||||
* @{
|
* @{
|
||||||
*/
|
*/
|
||||||
#define PCD_SPEED_HIGH 0U
|
#define PCD_SPEED_HIGH USBD_HS_SPEED
|
||||||
#define PCD_SPEED_HIGH_IN_FULL 1U
|
#define PCD_SPEED_HIGH_IN_FULL USBD_HSINFS_SPEED
|
||||||
#define PCD_SPEED_FULL 2U
|
#define PCD_SPEED_FULL USBD_FS_SPEED
|
||||||
/**
|
/**
|
||||||
* @}
|
* @}
|
||||||
*/
|
*/
|
||||||
|
@ -207,20 +207,20 @@ typedef struct
|
||||||
#define __HAL_USB_OTG_HS_WAKEUP_EXTI_GET_FLAG() EXTI->PR & (USB_OTG_HS_WAKEUP_EXTI_LINE)
|
#define __HAL_USB_OTG_HS_WAKEUP_EXTI_GET_FLAG() EXTI->PR & (USB_OTG_HS_WAKEUP_EXTI_LINE)
|
||||||
#define __HAL_USB_OTG_HS_WAKEUP_EXTI_CLEAR_FLAG() EXTI->PR = (USB_OTG_HS_WAKEUP_EXTI_LINE)
|
#define __HAL_USB_OTG_HS_WAKEUP_EXTI_CLEAR_FLAG() EXTI->PR = (USB_OTG_HS_WAKEUP_EXTI_LINE)
|
||||||
|
|
||||||
#define __HAL_USB_OTG_HS_WAKEUP_EXTI_ENABLE_RISING_EDGE() \
|
#define __HAL_USB_OTG_HS_WAKEUP_EXTI_ENABLE_RISING_EDGE() \
|
||||||
do { \
|
do { \
|
||||||
EXTI->FTSR &= ~(USB_OTG_HS_WAKEUP_EXTI_LINE); \
|
EXTI->FTSR &= ~(USB_OTG_HS_WAKEUP_EXTI_LINE); \
|
||||||
EXTI->RTSR |= USB_OTG_HS_WAKEUP_EXTI_LINE; \
|
EXTI->RTSR |= USB_OTG_HS_WAKEUP_EXTI_LINE; \
|
||||||
} while(0U)
|
} while(0U)
|
||||||
#define __HAL_USB_OTG_FS_WAKEUP_EXTI_ENABLE_IT() EXTI->IMR |= USB_OTG_FS_WAKEUP_EXTI_LINE
|
#define __HAL_USB_OTG_FS_WAKEUP_EXTI_ENABLE_IT() EXTI->IMR |= USB_OTG_FS_WAKEUP_EXTI_LINE
|
||||||
#define __HAL_USB_OTG_FS_WAKEUP_EXTI_DISABLE_IT() EXTI->IMR &= ~(USB_OTG_FS_WAKEUP_EXTI_LINE)
|
#define __HAL_USB_OTG_FS_WAKEUP_EXTI_DISABLE_IT() EXTI->IMR &= ~(USB_OTG_FS_WAKEUP_EXTI_LINE)
|
||||||
#define __HAL_USB_OTG_FS_WAKEUP_EXTI_GET_FLAG() EXTI->PR & (USB_OTG_FS_WAKEUP_EXTI_LINE)
|
#define __HAL_USB_OTG_FS_WAKEUP_EXTI_GET_FLAG() EXTI->PR & (USB_OTG_FS_WAKEUP_EXTI_LINE)
|
||||||
#define __HAL_USB_OTG_FS_WAKEUP_EXTI_CLEAR_FLAG() EXTI->PR = USB_OTG_FS_WAKEUP_EXTI_LINE
|
#define __HAL_USB_OTG_FS_WAKEUP_EXTI_CLEAR_FLAG() EXTI->PR = USB_OTG_FS_WAKEUP_EXTI_LINE
|
||||||
|
|
||||||
#define __HAL_USB_OTG_FS_WAKEUP_EXTI_ENABLE_RISING_EDGE() \
|
#define __HAL_USB_OTG_FS_WAKEUP_EXTI_ENABLE_RISING_EDGE() \
|
||||||
do { \
|
do { \
|
||||||
EXTI->FTSR &= ~(USB_OTG_FS_WAKEUP_EXTI_LINE); \
|
EXTI->FTSR &= ~(USB_OTG_FS_WAKEUP_EXTI_LINE); \
|
||||||
EXTI->RTSR |= USB_OTG_FS_WAKEUP_EXTI_LINE; \
|
EXTI->RTSR |= USB_OTG_FS_WAKEUP_EXTI_LINE; \
|
||||||
} while(0U)
|
} while(0U)
|
||||||
#endif /* defined (USB_OTG_FS) || defined (USB_OTG_HS) */
|
#endif /* defined (USB_OTG_FS) || defined (USB_OTG_HS) */
|
||||||
|
|
||||||
|
@ -256,7 +256,7 @@ typedef enum
|
||||||
HAL_PCD_SUSPEND_CB_ID = 0x04, /*!< USB PCD Suspend callback ID */
|
HAL_PCD_SUSPEND_CB_ID = 0x04, /*!< USB PCD Suspend callback ID */
|
||||||
HAL_PCD_RESUME_CB_ID = 0x05, /*!< USB PCD Resume callback ID */
|
HAL_PCD_RESUME_CB_ID = 0x05, /*!< USB PCD Resume callback ID */
|
||||||
HAL_PCD_CONNECT_CB_ID = 0x06, /*!< USB PCD Connect callback ID */
|
HAL_PCD_CONNECT_CB_ID = 0x06, /*!< USB PCD Connect callback ID */
|
||||||
HAL_PCD_DISCONNECT_CB_ID = 0x07, /*!< USB PCD Disconnect callback ID */
|
HAL_PCD_DISCONNECT_CB_ID = 0x07, /*!< USB PCD Disconnect callback ID */
|
||||||
|
|
||||||
HAL_PCD_MSPINIT_CB_ID = 0x08, /*!< USB PCD MspInit callback ID */
|
HAL_PCD_MSPINIT_CB_ID = 0x08, /*!< USB PCD MspInit callback ID */
|
||||||
HAL_PCD_MSPDEINIT_CB_ID = 0x09 /*!< USB PCD MspDeInit callback ID */
|
HAL_PCD_MSPDEINIT_CB_ID = 0x09 /*!< USB PCD MspDeInit callback ID */
|
||||||
|
@ -371,14 +371,6 @@ PCD_StateTypeDef HAL_PCD_GetState(PCD_HandleTypeDef *hpcd);
|
||||||
* @{
|
* @{
|
||||||
*/
|
*/
|
||||||
#if defined (USB_OTG_FS) || defined (USB_OTG_HS)
|
#if defined (USB_OTG_FS) || defined (USB_OTG_HS)
|
||||||
#define USB_OTG_FS_WAKEUP_EXTI_RISING_EDGE 0x08U
|
|
||||||
#define USB_OTG_FS_WAKEUP_EXTI_FALLING_EDGE 0x0CU
|
|
||||||
#define USB_OTG_FS_WAKEUP_EXTI_RISING_FALLING_EDGE 0x10U
|
|
||||||
|
|
||||||
#define USB_OTG_HS_WAKEUP_EXTI_RISING_EDGE 0x08U
|
|
||||||
#define USB_OTG_HS_WAKEUP_EXTI_FALLING_EDGE 0x0CU
|
|
||||||
#define USB_OTG_HS_WAKEUP_EXTI_RISING_FALLING_EDGE 0x10U
|
|
||||||
|
|
||||||
#define USB_OTG_FS_WAKEUP_EXTI_LINE (0x1U << 18) /*!< USB FS EXTI Line WakeUp Interrupt */
|
#define USB_OTG_FS_WAKEUP_EXTI_LINE (0x1U << 18) /*!< USB FS EXTI Line WakeUp Interrupt */
|
||||||
#define USB_OTG_HS_WAKEUP_EXTI_LINE (0x1U << 20) /*!< USB HS EXTI Line WakeUp Interrupt */
|
#define USB_OTG_HS_WAKEUP_EXTI_LINE (0x1U << 20) /*!< USB HS EXTI Line WakeUp Interrupt */
|
||||||
#endif /* defined (USB_OTG_FS) || defined (USB_OTG_HS) */
|
#endif /* defined (USB_OTG_FS) || defined (USB_OTG_HS) */
|
||||||
|
|
|
@ -167,7 +167,7 @@ typedef struct
|
||||||
This parameter can be a value of @ref TIM_Encoder_Mode */
|
This parameter can be a value of @ref TIM_Encoder_Mode */
|
||||||
|
|
||||||
uint32_t IC1Polarity; /*!< Specifies the active edge of the input signal.
|
uint32_t IC1Polarity; /*!< Specifies the active edge of the input signal.
|
||||||
This parameter can be a value of @ref TIM_Input_Capture_Polarity */
|
This parameter can be a value of @ref TIM_Encoder_Input_Polarity */
|
||||||
|
|
||||||
uint32_t IC1Selection; /*!< Specifies the input.
|
uint32_t IC1Selection; /*!< Specifies the input.
|
||||||
This parameter can be a value of @ref TIM_Input_Capture_Selection */
|
This parameter can be a value of @ref TIM_Input_Capture_Selection */
|
||||||
|
@ -179,7 +179,7 @@ typedef struct
|
||||||
This parameter can be a number between Min_Data = 0x0 and Max_Data = 0xF */
|
This parameter can be a number between Min_Data = 0x0 and Max_Data = 0xF */
|
||||||
|
|
||||||
uint32_t IC2Polarity; /*!< Specifies the active edge of the input signal.
|
uint32_t IC2Polarity; /*!< Specifies the active edge of the input signal.
|
||||||
This parameter can be a value of @ref TIM_Input_Capture_Polarity */
|
This parameter can be a value of @ref TIM_Encoder_Input_Polarity */
|
||||||
|
|
||||||
uint32_t IC2Selection; /*!< Specifies the input.
|
uint32_t IC2Selection; /*!< Specifies the input.
|
||||||
This parameter can be a value of @ref TIM_Input_Capture_Selection */
|
This parameter can be a value of @ref TIM_Input_Capture_Selection */
|
||||||
|
@ -235,7 +235,12 @@ typedef struct
|
||||||
uint32_t MasterOutputTrigger2; /*!< Trigger output2 (TRGO2) selection
|
uint32_t MasterOutputTrigger2; /*!< Trigger output2 (TRGO2) selection
|
||||||
This parameter can be a value of @ref TIM_Master_Mode_Selection_2 */
|
This parameter can be a value of @ref TIM_Master_Mode_Selection_2 */
|
||||||
uint32_t MasterSlaveMode; /*!< Master/slave mode selection
|
uint32_t MasterSlaveMode; /*!< Master/slave mode selection
|
||||||
This parameter can be a value of @ref TIM_Master_Slave_Mode */
|
This parameter can be a value of @ref TIM_Master_Slave_Mode
|
||||||
|
@note When the Master/slave mode is enabled, the effect of
|
||||||
|
an event on the trigger input (TRGI) is delayed to allow a
|
||||||
|
perfect synchronization between the current timer and its
|
||||||
|
slaves (through TRGO). It is not mandatory in case of timer
|
||||||
|
synchronization mode. */
|
||||||
} TIM_MasterConfigTypeDef;
|
} TIM_MasterConfigTypeDef;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -518,6 +523,15 @@ typedef void (*pTIM_CallbackTypeDef)(TIM_HandleTypeDef *htim); /*!< pointer to
|
||||||
* @}
|
* @}
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
/** @defgroup TIM_Update_Interrupt_Flag_Remap TIM Update Interrupt Flag Remap
|
||||||
|
* @{
|
||||||
|
*/
|
||||||
|
#define TIM_UIFREMAP_DISABLE 0x00000000U /*!< Update interrupt flag remap disabled */
|
||||||
|
#define TIM_UIFREMAP_ENABLE TIM_CR1_UIFREMAP /*!< Update interrupt flag remap enabled */
|
||||||
|
/**
|
||||||
|
* @}
|
||||||
|
*/
|
||||||
|
|
||||||
/** @defgroup TIM_ClockDivision TIM Clock Division
|
/** @defgroup TIM_ClockDivision TIM Clock Division
|
||||||
* @{
|
* @{
|
||||||
*/
|
*/
|
||||||
|
@ -611,6 +625,15 @@ typedef void (*pTIM_CallbackTypeDef)(TIM_HandleTypeDef *htim); /*!< pointer to
|
||||||
* @}
|
* @}
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
/** @defgroup TIM_Encoder_Input_Polarity TIM Encoder Input Polarity
|
||||||
|
* @{
|
||||||
|
*/
|
||||||
|
#define TIM_ENCODERINPUTPOLARITY_RISING TIM_INPUTCHANNELPOLARITY_RISING /*!< Encoder input with rising edge polarity */
|
||||||
|
#define TIM_ENCODERINPUTPOLARITY_FALLING TIM_INPUTCHANNELPOLARITY_FALLING /*!< Encoder input with falling edge polarity */
|
||||||
|
/**
|
||||||
|
* @}
|
||||||
|
*/
|
||||||
|
|
||||||
/** @defgroup TIM_Input_Capture_Selection TIM Input Capture Selection
|
/** @defgroup TIM_Input_Capture_Selection TIM Input Capture Selection
|
||||||
* @{
|
* @{
|
||||||
*/
|
*/
|
||||||
|
@ -1119,15 +1142,15 @@ typedef void (*pTIM_CallbackTypeDef)(TIM_HandleTypeDef *htim); /*!< pointer to
|
||||||
* @retval None
|
* @retval None
|
||||||
*/
|
*/
|
||||||
#define __HAL_TIM_DISABLE(__HANDLE__) \
|
#define __HAL_TIM_DISABLE(__HANDLE__) \
|
||||||
do { \
|
do { \
|
||||||
if (((__HANDLE__)->Instance->CCER & TIM_CCER_CCxE_MASK) == 0UL) \
|
if (((__HANDLE__)->Instance->CCER & TIM_CCER_CCxE_MASK) == 0UL) \
|
||||||
{ \
|
{ \
|
||||||
if(((__HANDLE__)->Instance->CCER & TIM_CCER_CCxNE_MASK) == 0UL) \
|
if(((__HANDLE__)->Instance->CCER & TIM_CCER_CCxNE_MASK) == 0UL) \
|
||||||
{ \
|
{ \
|
||||||
(__HANDLE__)->Instance->CR1 &= ~(TIM_CR1_CEN); \
|
(__HANDLE__)->Instance->CR1 &= ~(TIM_CR1_CEN); \
|
||||||
} \
|
} \
|
||||||
} \
|
} \
|
||||||
} while(0)
|
} while(0)
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief Disable the TIM main Output.
|
* @brief Disable the TIM main Output.
|
||||||
|
@ -1136,15 +1159,15 @@ typedef void (*pTIM_CallbackTypeDef)(TIM_HandleTypeDef *htim); /*!< pointer to
|
||||||
* @note The Main Output Enable of a timer instance is disabled only if all the CCx and CCxN channels have been disabled
|
* @note The Main Output Enable of a timer instance is disabled only if all the CCx and CCxN channels have been disabled
|
||||||
*/
|
*/
|
||||||
#define __HAL_TIM_MOE_DISABLE(__HANDLE__) \
|
#define __HAL_TIM_MOE_DISABLE(__HANDLE__) \
|
||||||
do { \
|
do { \
|
||||||
if (((__HANDLE__)->Instance->CCER & TIM_CCER_CCxE_MASK) == 0UL) \
|
if (((__HANDLE__)->Instance->CCER & TIM_CCER_CCxE_MASK) == 0UL) \
|
||||||
{ \
|
{ \
|
||||||
if(((__HANDLE__)->Instance->CCER & TIM_CCER_CCxNE_MASK) == 0UL) \
|
if(((__HANDLE__)->Instance->CCER & TIM_CCER_CCxNE_MASK) == 0UL) \
|
||||||
{ \
|
{ \
|
||||||
(__HANDLE__)->Instance->BDTR &= ~(TIM_BDTR_MOE); \
|
(__HANDLE__)->Instance->BDTR &= ~(TIM_BDTR_MOE); \
|
||||||
} \
|
} \
|
||||||
} \
|
} \
|
||||||
} while(0)
|
} while(0)
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief Disable the TIM main Output.
|
* @brief Disable the TIM main Output.
|
||||||
|
@ -1279,7 +1302,8 @@ typedef void (*pTIM_CallbackTypeDef)(TIM_HandleTypeDef *htim); /*!< pointer to
|
||||||
* @arg TIM_IT_BREAK: Break interrupt
|
* @arg TIM_IT_BREAK: Break interrupt
|
||||||
* @retval The state of TIM_IT (SET or RESET).
|
* @retval The state of TIM_IT (SET or RESET).
|
||||||
*/
|
*/
|
||||||
#define __HAL_TIM_GET_IT_SOURCE(__HANDLE__, __INTERRUPT__) ((((__HANDLE__)->Instance->DIER & (__INTERRUPT__)) == (__INTERRUPT__)) ? SET : RESET)
|
#define __HAL_TIM_GET_IT_SOURCE(__HANDLE__, __INTERRUPT__) ((((__HANDLE__)->Instance->DIER & (__INTERRUPT__)) \
|
||||||
|
== (__INTERRUPT__)) ? SET : RESET)
|
||||||
|
|
||||||
/** @brief Clear the TIM interrupt pending bits.
|
/** @brief Clear the TIM interrupt pending bits.
|
||||||
* @param __HANDLE__ TIM handle
|
* @param __HANDLE__ TIM handle
|
||||||
|
@ -1297,6 +1321,31 @@ typedef void (*pTIM_CallbackTypeDef)(TIM_HandleTypeDef *htim); /*!< pointer to
|
||||||
*/
|
*/
|
||||||
#define __HAL_TIM_CLEAR_IT(__HANDLE__, __INTERRUPT__) ((__HANDLE__)->Instance->SR = ~(__INTERRUPT__))
|
#define __HAL_TIM_CLEAR_IT(__HANDLE__, __INTERRUPT__) ((__HANDLE__)->Instance->SR = ~(__INTERRUPT__))
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Force a continuous copy of the update interrupt flag (UIF) into the timer counter register (bit 31).
|
||||||
|
* @note This allows both the counter value and a potential roll-over condition signalled by the UIFCPY flag to be read in an atomic way.
|
||||||
|
* @param __HANDLE__ TIM handle.
|
||||||
|
* @retval None
|
||||||
|
mode.
|
||||||
|
*/
|
||||||
|
#define __HAL_TIM_UIFREMAP_ENABLE(__HANDLE__) (((__HANDLE__)->Instance->CR1 |= TIM_CR1_UIFREMAP))
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Disable update interrupt flag (UIF) remapping.
|
||||||
|
* @param __HANDLE__ TIM handle.
|
||||||
|
* @retval None
|
||||||
|
mode.
|
||||||
|
*/
|
||||||
|
#define __HAL_TIM_UIFREMAP_DISABLE(__HANDLE__) (((__HANDLE__)->Instance->CR1 &= ~TIM_CR1_UIFREMAP))
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Get update interrupt flag (UIF) copy status.
|
||||||
|
* @param __COUNTER__ Counter value.
|
||||||
|
* @retval The state of UIFCPY (TRUE or FALSE).
|
||||||
|
mode.
|
||||||
|
*/
|
||||||
|
#define __HAL_TIM_GET_UIFCPY(__COUNTER__) (((__COUNTER__) & (TIM_CNT_UIFCPY)) == (TIM_CNT_UIFCPY))
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief Indicates whether or not the TIM Counter is used as downcounter.
|
* @brief Indicates whether or not the TIM Counter is used as downcounter.
|
||||||
* @param __HANDLE__ TIM handle.
|
* @param __HANDLE__ TIM handle.
|
||||||
|
@ -1316,6 +1365,8 @@ mode.
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief Set the TIM Counter Register value on runtime.
|
* @brief Set the TIM Counter Register value on runtime.
|
||||||
|
* Note Please check if the bit 31 of CNT register is used as UIF copy or not, this may affect the counter range in case of 32 bits counter TIM instance.
|
||||||
|
* Bit 31 of CNT can be enabled/disabled using __HAL_TIM_UIFREMAP_ENABLE()/__HAL_TIM_UIFREMAP_DISABLE() macros.
|
||||||
* @param __HANDLE__ TIM handle.
|
* @param __HANDLE__ TIM handle.
|
||||||
* @param __COUNTER__ specifies the Counter register new value.
|
* @param __COUNTER__ specifies the Counter register new value.
|
||||||
* @retval None
|
* @retval None
|
||||||
|
@ -1327,8 +1378,7 @@ mode.
|
||||||
* @param __HANDLE__ TIM handle.
|
* @param __HANDLE__ TIM handle.
|
||||||
* @retval 16-bit or 32-bit value of the timer counter register (TIMx_CNT)
|
* @retval 16-bit or 32-bit value of the timer counter register (TIMx_CNT)
|
||||||
*/
|
*/
|
||||||
#define __HAL_TIM_GET_COUNTER(__HANDLE__) \
|
#define __HAL_TIM_GET_COUNTER(__HANDLE__) ((__HANDLE__)->Instance->CNT)
|
||||||
((__HANDLE__)->Instance->CNT)
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief Set the TIM Autoreload Register value on runtime without calling another time any Init function.
|
* @brief Set the TIM Autoreload Register value on runtime without calling another time any Init function.
|
||||||
|
@ -1337,18 +1387,17 @@ mode.
|
||||||
* @retval None
|
* @retval None
|
||||||
*/
|
*/
|
||||||
#define __HAL_TIM_SET_AUTORELOAD(__HANDLE__, __AUTORELOAD__) \
|
#define __HAL_TIM_SET_AUTORELOAD(__HANDLE__, __AUTORELOAD__) \
|
||||||
do{ \
|
do{ \
|
||||||
(__HANDLE__)->Instance->ARR = (__AUTORELOAD__); \
|
(__HANDLE__)->Instance->ARR = (__AUTORELOAD__); \
|
||||||
(__HANDLE__)->Init.Period = (__AUTORELOAD__); \
|
(__HANDLE__)->Init.Period = (__AUTORELOAD__); \
|
||||||
} while(0)
|
} while(0)
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief Get the TIM Autoreload Register value on runtime.
|
* @brief Get the TIM Autoreload Register value on runtime.
|
||||||
* @param __HANDLE__ TIM handle.
|
* @param __HANDLE__ TIM handle.
|
||||||
* @retval 16-bit or 32-bit value of the timer auto-reload register(TIMx_ARR)
|
* @retval 16-bit or 32-bit value of the timer auto-reload register(TIMx_ARR)
|
||||||
*/
|
*/
|
||||||
#define __HAL_TIM_GET_AUTORELOAD(__HANDLE__) \
|
#define __HAL_TIM_GET_AUTORELOAD(__HANDLE__) ((__HANDLE__)->Instance->ARR)
|
||||||
((__HANDLE__)->Instance->ARR)
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief Set the TIM Clock Division value on runtime without calling another time any Init function.
|
* @brief Set the TIM Clock Division value on runtime without calling another time any Init function.
|
||||||
|
@ -1361,11 +1410,11 @@ mode.
|
||||||
* @retval None
|
* @retval None
|
||||||
*/
|
*/
|
||||||
#define __HAL_TIM_SET_CLOCKDIVISION(__HANDLE__, __CKD__) \
|
#define __HAL_TIM_SET_CLOCKDIVISION(__HANDLE__, __CKD__) \
|
||||||
do{ \
|
do{ \
|
||||||
(__HANDLE__)->Instance->CR1 &= (~TIM_CR1_CKD); \
|
(__HANDLE__)->Instance->CR1 &= (~TIM_CR1_CKD); \
|
||||||
(__HANDLE__)->Instance->CR1 |= (__CKD__); \
|
(__HANDLE__)->Instance->CR1 |= (__CKD__); \
|
||||||
(__HANDLE__)->Init.ClockDivision = (__CKD__); \
|
(__HANDLE__)->Init.ClockDivision = (__CKD__); \
|
||||||
} while(0)
|
} while(0)
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief Get the TIM Clock Division value on runtime.
|
* @brief Get the TIM Clock Division value on runtime.
|
||||||
|
@ -1375,8 +1424,7 @@ mode.
|
||||||
* @arg TIM_CLOCKDIVISION_DIV2: tDTS=2*tCK_INT
|
* @arg TIM_CLOCKDIVISION_DIV2: tDTS=2*tCK_INT
|
||||||
* @arg TIM_CLOCKDIVISION_DIV4: tDTS=4*tCK_INT
|
* @arg TIM_CLOCKDIVISION_DIV4: tDTS=4*tCK_INT
|
||||||
*/
|
*/
|
||||||
#define __HAL_TIM_GET_CLOCKDIVISION(__HANDLE__) \
|
#define __HAL_TIM_GET_CLOCKDIVISION(__HANDLE__) ((__HANDLE__)->Instance->CR1 & TIM_CR1_CKD)
|
||||||
((__HANDLE__)->Instance->CR1 & TIM_CR1_CKD)
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief Set the TIM Input Capture prescaler on runtime without calling another time HAL_TIM_IC_ConfigChannel() function.
|
* @brief Set the TIM Input Capture prescaler on runtime without calling another time HAL_TIM_IC_ConfigChannel() function.
|
||||||
|
@ -1396,10 +1444,10 @@ mode.
|
||||||
* @retval None
|
* @retval None
|
||||||
*/
|
*/
|
||||||
#define __HAL_TIM_SET_ICPRESCALER(__HANDLE__, __CHANNEL__, __ICPSC__) \
|
#define __HAL_TIM_SET_ICPRESCALER(__HANDLE__, __CHANNEL__, __ICPSC__) \
|
||||||
do{ \
|
do{ \
|
||||||
TIM_RESET_ICPRESCALERVALUE((__HANDLE__), (__CHANNEL__)); \
|
TIM_RESET_ICPRESCALERVALUE((__HANDLE__), (__CHANNEL__)); \
|
||||||
TIM_SET_ICPRESCALERVALUE((__HANDLE__), (__CHANNEL__), (__ICPSC__)); \
|
TIM_SET_ICPRESCALERVALUE((__HANDLE__), (__CHANNEL__), (__ICPSC__)); \
|
||||||
} while(0)
|
} while(0)
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief Get the TIM Input Capture prescaler on runtime.
|
* @brief Get the TIM Input Capture prescaler on runtime.
|
||||||
|
@ -1437,12 +1485,12 @@ mode.
|
||||||
* @retval None
|
* @retval None
|
||||||
*/
|
*/
|
||||||
#define __HAL_TIM_SET_COMPARE(__HANDLE__, __CHANNEL__, __COMPARE__) \
|
#define __HAL_TIM_SET_COMPARE(__HANDLE__, __CHANNEL__, __COMPARE__) \
|
||||||
(((__CHANNEL__) == TIM_CHANNEL_1) ? ((__HANDLE__)->Instance->CCR1 = (__COMPARE__)) :\
|
(((__CHANNEL__) == TIM_CHANNEL_1) ? ((__HANDLE__)->Instance->CCR1 = (__COMPARE__)) :\
|
||||||
((__CHANNEL__) == TIM_CHANNEL_2) ? ((__HANDLE__)->Instance->CCR2 = (__COMPARE__)) :\
|
((__CHANNEL__) == TIM_CHANNEL_2) ? ((__HANDLE__)->Instance->CCR2 = (__COMPARE__)) :\
|
||||||
((__CHANNEL__) == TIM_CHANNEL_3) ? ((__HANDLE__)->Instance->CCR3 = (__COMPARE__)) :\
|
((__CHANNEL__) == TIM_CHANNEL_3) ? ((__HANDLE__)->Instance->CCR3 = (__COMPARE__)) :\
|
||||||
((__CHANNEL__) == TIM_CHANNEL_4) ? ((__HANDLE__)->Instance->CCR4 = (__COMPARE__)) :\
|
((__CHANNEL__) == TIM_CHANNEL_4) ? ((__HANDLE__)->Instance->CCR4 = (__COMPARE__)) :\
|
||||||
((__CHANNEL__) == TIM_CHANNEL_5) ? ((__HANDLE__)->Instance->CCR5 = (__COMPARE__)) :\
|
((__CHANNEL__) == TIM_CHANNEL_5) ? ((__HANDLE__)->Instance->CCR5 = (__COMPARE__)) :\
|
||||||
((__HANDLE__)->Instance->CCR6 = (__COMPARE__)))
|
((__HANDLE__)->Instance->CCR6 = (__COMPARE__)))
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief Get the TIM Capture Compare Register value on runtime.
|
* @brief Get the TIM Capture Compare Register value on runtime.
|
||||||
|
@ -1458,12 +1506,12 @@ mode.
|
||||||
* @retval 16-bit or 32-bit value of the capture/compare register (TIMx_CCRy)
|
* @retval 16-bit or 32-bit value of the capture/compare register (TIMx_CCRy)
|
||||||
*/
|
*/
|
||||||
#define __HAL_TIM_GET_COMPARE(__HANDLE__, __CHANNEL__) \
|
#define __HAL_TIM_GET_COMPARE(__HANDLE__, __CHANNEL__) \
|
||||||
(((__CHANNEL__) == TIM_CHANNEL_1) ? ((__HANDLE__)->Instance->CCR1) :\
|
(((__CHANNEL__) == TIM_CHANNEL_1) ? ((__HANDLE__)->Instance->CCR1) :\
|
||||||
((__CHANNEL__) == TIM_CHANNEL_2) ? ((__HANDLE__)->Instance->CCR2) :\
|
((__CHANNEL__) == TIM_CHANNEL_2) ? ((__HANDLE__)->Instance->CCR2) :\
|
||||||
((__CHANNEL__) == TIM_CHANNEL_3) ? ((__HANDLE__)->Instance->CCR3) :\
|
((__CHANNEL__) == TIM_CHANNEL_3) ? ((__HANDLE__)->Instance->CCR3) :\
|
||||||
((__CHANNEL__) == TIM_CHANNEL_4) ? ((__HANDLE__)->Instance->CCR4) :\
|
((__CHANNEL__) == TIM_CHANNEL_4) ? ((__HANDLE__)->Instance->CCR4) :\
|
||||||
((__CHANNEL__) == TIM_CHANNEL_5) ? ((__HANDLE__)->Instance->CCR5) :\
|
((__CHANNEL__) == TIM_CHANNEL_5) ? ((__HANDLE__)->Instance->CCR5) :\
|
||||||
((__HANDLE__)->Instance->CCR6))
|
((__HANDLE__)->Instance->CCR6))
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief Set the TIM Output compare preload.
|
* @brief Set the TIM Output compare preload.
|
||||||
|
@ -1479,12 +1527,12 @@ mode.
|
||||||
* @retval None
|
* @retval None
|
||||||
*/
|
*/
|
||||||
#define __HAL_TIM_ENABLE_OCxPRELOAD(__HANDLE__, __CHANNEL__) \
|
#define __HAL_TIM_ENABLE_OCxPRELOAD(__HANDLE__, __CHANNEL__) \
|
||||||
(((__CHANNEL__) == TIM_CHANNEL_1) ? ((__HANDLE__)->Instance->CCMR1 |= TIM_CCMR1_OC1PE) :\
|
(((__CHANNEL__) == TIM_CHANNEL_1) ? ((__HANDLE__)->Instance->CCMR1 |= TIM_CCMR1_OC1PE) :\
|
||||||
((__CHANNEL__) == TIM_CHANNEL_2) ? ((__HANDLE__)->Instance->CCMR1 |= TIM_CCMR1_OC2PE) :\
|
((__CHANNEL__) == TIM_CHANNEL_2) ? ((__HANDLE__)->Instance->CCMR1 |= TIM_CCMR1_OC2PE) :\
|
||||||
((__CHANNEL__) == TIM_CHANNEL_3) ? ((__HANDLE__)->Instance->CCMR2 |= TIM_CCMR2_OC3PE) :\
|
((__CHANNEL__) == TIM_CHANNEL_3) ? ((__HANDLE__)->Instance->CCMR2 |= TIM_CCMR2_OC3PE) :\
|
||||||
((__CHANNEL__) == TIM_CHANNEL_4) ? ((__HANDLE__)->Instance->CCMR2 |= TIM_CCMR2_OC4PE) :\
|
((__CHANNEL__) == TIM_CHANNEL_4) ? ((__HANDLE__)->Instance->CCMR2 |= TIM_CCMR2_OC4PE) :\
|
||||||
((__CHANNEL__) == TIM_CHANNEL_5) ? ((__HANDLE__)->Instance->CCMR3 |= TIM_CCMR3_OC5PE) :\
|
((__CHANNEL__) == TIM_CHANNEL_5) ? ((__HANDLE__)->Instance->CCMR3 |= TIM_CCMR3_OC5PE) :\
|
||||||
((__HANDLE__)->Instance->CCMR3 |= TIM_CCMR3_OC6PE))
|
((__HANDLE__)->Instance->CCMR3 |= TIM_CCMR3_OC6PE))
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief Reset the TIM Output compare preload.
|
* @brief Reset the TIM Output compare preload.
|
||||||
|
@ -1500,12 +1548,62 @@ mode.
|
||||||
* @retval None
|
* @retval None
|
||||||
*/
|
*/
|
||||||
#define __HAL_TIM_DISABLE_OCxPRELOAD(__HANDLE__, __CHANNEL__) \
|
#define __HAL_TIM_DISABLE_OCxPRELOAD(__HANDLE__, __CHANNEL__) \
|
||||||
(((__CHANNEL__) == TIM_CHANNEL_1) ? ((__HANDLE__)->Instance->CCMR1 &= (uint16_t)~TIM_CCMR1_OC1PE) :\
|
(((__CHANNEL__) == TIM_CHANNEL_1) ? ((__HANDLE__)->Instance->CCMR1 &= ~TIM_CCMR1_OC1PE) :\
|
||||||
((__CHANNEL__) == TIM_CHANNEL_2) ? ((__HANDLE__)->Instance->CCMR1 &= (uint16_t)~TIM_CCMR1_OC2PE) :\
|
((__CHANNEL__) == TIM_CHANNEL_2) ? ((__HANDLE__)->Instance->CCMR1 &= ~TIM_CCMR1_OC2PE) :\
|
||||||
((__CHANNEL__) == TIM_CHANNEL_3) ? ((__HANDLE__)->Instance->CCMR2 &= (uint16_t)~TIM_CCMR2_OC3PE) :\
|
((__CHANNEL__) == TIM_CHANNEL_3) ? ((__HANDLE__)->Instance->CCMR2 &= ~TIM_CCMR2_OC3PE) :\
|
||||||
((__CHANNEL__) == TIM_CHANNEL_4) ? ((__HANDLE__)->Instance->CCMR2 &= (uint16_t)~TIM_CCMR2_OC4PE) :\
|
((__CHANNEL__) == TIM_CHANNEL_4) ? ((__HANDLE__)->Instance->CCMR2 &= ~TIM_CCMR2_OC4PE) :\
|
||||||
((__CHANNEL__) == TIM_CHANNEL_5) ? ((__HANDLE__)->Instance->CCMR3 &= (uint16_t)~TIM_CCMR3_OC5PE) :\
|
((__CHANNEL__) == TIM_CHANNEL_5) ? ((__HANDLE__)->Instance->CCMR3 &= ~TIM_CCMR3_OC5PE) :\
|
||||||
((__HANDLE__)->Instance->CCMR3 &= (uint16_t)~TIM_CCMR3_OC6PE))
|
((__HANDLE__)->Instance->CCMR3 &= ~TIM_CCMR3_OC6PE))
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Enable fast mode for a given channel.
|
||||||
|
* @param __HANDLE__ TIM handle.
|
||||||
|
* @param __CHANNEL__ TIM Channels to be configured.
|
||||||
|
* This parameter can be one of the following values:
|
||||||
|
* @arg TIM_CHANNEL_1: TIM Channel 1 selected
|
||||||
|
* @arg TIM_CHANNEL_2: TIM Channel 2 selected
|
||||||
|
* @arg TIM_CHANNEL_3: TIM Channel 3 selected
|
||||||
|
* @arg TIM_CHANNEL_4: TIM Channel 4 selected
|
||||||
|
* @arg TIM_CHANNEL_5: TIM Channel 5 selected
|
||||||
|
* @arg TIM_CHANNEL_6: TIM Channel 6 selected
|
||||||
|
* @note When fast mode is enabled an active edge on the trigger input acts
|
||||||
|
* like a compare match on CCx output. Delay to sample the trigger
|
||||||
|
* input and to activate CCx output is reduced to 3 clock cycles.
|
||||||
|
* @note Fast mode acts only if the channel is configured in PWM1 or PWM2 mode.
|
||||||
|
* @retval None
|
||||||
|
*/
|
||||||
|
#define __HAL_TIM_ENABLE_OCxFAST(__HANDLE__, __CHANNEL__) \
|
||||||
|
(((__CHANNEL__) == TIM_CHANNEL_1) ? ((__HANDLE__)->Instance->CCMR1 |= TIM_CCMR1_OC1FE) :\
|
||||||
|
((__CHANNEL__) == TIM_CHANNEL_2) ? ((__HANDLE__)->Instance->CCMR1 |= TIM_CCMR1_OC2FE) :\
|
||||||
|
((__CHANNEL__) == TIM_CHANNEL_3) ? ((__HANDLE__)->Instance->CCMR2 |= TIM_CCMR2_OC3FE) :\
|
||||||
|
((__CHANNEL__) == TIM_CHANNEL_4) ? ((__HANDLE__)->Instance->CCMR2 |= TIM_CCMR2_OC4FE) :\
|
||||||
|
((__CHANNEL__) == TIM_CHANNEL_5) ? ((__HANDLE__)->Instance->CCMR3 |= TIM_CCMR3_OC5FE) :\
|
||||||
|
((__HANDLE__)->Instance->CCMR3 |= TIM_CCMR3_OC6FE))
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Disable fast mode for a given channel.
|
||||||
|
* @param __HANDLE__ TIM handle.
|
||||||
|
* @param __CHANNEL__ TIM Channels to be configured.
|
||||||
|
* This parameter can be one of the following values:
|
||||||
|
* @arg TIM_CHANNEL_1: TIM Channel 1 selected
|
||||||
|
* @arg TIM_CHANNEL_2: TIM Channel 2 selected
|
||||||
|
* @arg TIM_CHANNEL_3: TIM Channel 3 selected
|
||||||
|
* @arg TIM_CHANNEL_4: TIM Channel 4 selected
|
||||||
|
* @arg TIM_CHANNEL_5: TIM Channel 5 selected
|
||||||
|
* @arg TIM_CHANNEL_6: TIM Channel 6 selected
|
||||||
|
* @note When fast mode is disabled CCx output behaves normally depending
|
||||||
|
* on counter and CCRx values even when the trigger is ON. The minimum
|
||||||
|
* delay to activate CCx output when an active edge occurs on the
|
||||||
|
* trigger input is 5 clock cycles.
|
||||||
|
* @retval None
|
||||||
|
*/
|
||||||
|
#define __HAL_TIM_DISABLE_OCxFAST(__HANDLE__, __CHANNEL__) \
|
||||||
|
(((__CHANNEL__) == TIM_CHANNEL_1) ? ((__HANDLE__)->Instance->CCMR1 &= ~TIM_CCMR1_OC1FE) :\
|
||||||
|
((__CHANNEL__) == TIM_CHANNEL_2) ? ((__HANDLE__)->Instance->CCMR1 &= ~TIM_CCMR1_OC2FE) :\
|
||||||
|
((__CHANNEL__) == TIM_CHANNEL_3) ? ((__HANDLE__)->Instance->CCMR2 &= ~TIM_CCMR2_OC3FE) :\
|
||||||
|
((__CHANNEL__) == TIM_CHANNEL_4) ? ((__HANDLE__)->Instance->CCMR2 &= ~TIM_CCMR2_OC4FE) :\
|
||||||
|
((__CHANNEL__) == TIM_CHANNEL_5) ? ((__HANDLE__)->Instance->CCMR3 &= ~TIM_CCMR3_OC5FE) :\
|
||||||
|
((__HANDLE__)->Instance->CCMR3 &= ~TIM_CCMR3_OC6FE))
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief Set the Update Request Source (URS) bit of the TIMx_CR1 register.
|
* @brief Set the Update Request Source (URS) bit of the TIMx_CR1 register.
|
||||||
|
@ -1515,8 +1613,7 @@ mode.
|
||||||
* enabled)
|
* enabled)
|
||||||
* @retval None
|
* @retval None
|
||||||
*/
|
*/
|
||||||
#define __HAL_TIM_URS_ENABLE(__HANDLE__) \
|
#define __HAL_TIM_URS_ENABLE(__HANDLE__) ((__HANDLE__)->Instance->CR1|= TIM_CR1_URS)
|
||||||
((__HANDLE__)->Instance->CR1|= TIM_CR1_URS)
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief Reset the Update Request Source (URS) bit of the TIMx_CR1 register.
|
* @brief Reset the Update Request Source (URS) bit of the TIMx_CR1 register.
|
||||||
|
@ -1529,8 +1626,7 @@ mode.
|
||||||
* _ Update generation through the slave mode controller
|
* _ Update generation through the slave mode controller
|
||||||
* @retval None
|
* @retval None
|
||||||
*/
|
*/
|
||||||
#define __HAL_TIM_URS_DISABLE(__HANDLE__) \
|
#define __HAL_TIM_URS_DISABLE(__HANDLE__) ((__HANDLE__)->Instance->CR1&=~TIM_CR1_URS)
|
||||||
((__HANDLE__)->Instance->CR1&=~TIM_CR1_URS)
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief Set the TIM Capture x input polarity on runtime.
|
* @brief Set the TIM Capture x input polarity on runtime.
|
||||||
|
@ -1548,10 +1644,10 @@ mode.
|
||||||
* @retval None
|
* @retval None
|
||||||
*/
|
*/
|
||||||
#define __HAL_TIM_SET_CAPTUREPOLARITY(__HANDLE__, __CHANNEL__, __POLARITY__) \
|
#define __HAL_TIM_SET_CAPTUREPOLARITY(__HANDLE__, __CHANNEL__, __POLARITY__) \
|
||||||
do{ \
|
do{ \
|
||||||
TIM_RESET_CAPTUREPOLARITY((__HANDLE__), (__CHANNEL__)); \
|
TIM_RESET_CAPTUREPOLARITY((__HANDLE__), (__CHANNEL__)); \
|
||||||
TIM_SET_CAPTUREPOLARITY((__HANDLE__), (__CHANNEL__), (__POLARITY__)); \
|
TIM_SET_CAPTUREPOLARITY((__HANDLE__), (__CHANNEL__), (__POLARITY__)); \
|
||||||
}while(0)
|
}while(0)
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @}
|
* @}
|
||||||
|
@ -1579,29 +1675,29 @@ mode.
|
||||||
((__MODE__) == TIM_CLEARINPUTSOURCE_ETR))
|
((__MODE__) == TIM_CLEARINPUTSOURCE_ETR))
|
||||||
|
|
||||||
#if defined(TIM_AF1_BKINE)&&defined(TIM_AF2_BKINE)
|
#if defined(TIM_AF1_BKINE)&&defined(TIM_AF2_BKINE)
|
||||||
#define IS_TIM_DMA_BASE(__BASE__) (((__BASE__) == TIM_DMABASE_CR1) || \
|
#define IS_TIM_DMA_BASE(__BASE__) (((__BASE__) == TIM_DMABASE_CR1) || \
|
||||||
((__BASE__) == TIM_DMABASE_CR2) || \
|
((__BASE__) == TIM_DMABASE_CR2) || \
|
||||||
((__BASE__) == TIM_DMABASE_SMCR) || \
|
((__BASE__) == TIM_DMABASE_SMCR) || \
|
||||||
((__BASE__) == TIM_DMABASE_DIER) || \
|
((__BASE__) == TIM_DMABASE_DIER) || \
|
||||||
((__BASE__) == TIM_DMABASE_SR) || \
|
((__BASE__) == TIM_DMABASE_SR) || \
|
||||||
((__BASE__) == TIM_DMABASE_EGR) || \
|
((__BASE__) == TIM_DMABASE_EGR) || \
|
||||||
((__BASE__) == TIM_DMABASE_CCMR1) || \
|
((__BASE__) == TIM_DMABASE_CCMR1) || \
|
||||||
((__BASE__) == TIM_DMABASE_CCMR2) || \
|
((__BASE__) == TIM_DMABASE_CCMR2) || \
|
||||||
((__BASE__) == TIM_DMABASE_CCER) || \
|
((__BASE__) == TIM_DMABASE_CCER) || \
|
||||||
((__BASE__) == TIM_DMABASE_CNT) || \
|
((__BASE__) == TIM_DMABASE_CNT) || \
|
||||||
((__BASE__) == TIM_DMABASE_PSC) || \
|
((__BASE__) == TIM_DMABASE_PSC) || \
|
||||||
((__BASE__) == TIM_DMABASE_ARR) || \
|
((__BASE__) == TIM_DMABASE_ARR) || \
|
||||||
((__BASE__) == TIM_DMABASE_RCR) || \
|
((__BASE__) == TIM_DMABASE_RCR) || \
|
||||||
((__BASE__) == TIM_DMABASE_CCR1) || \
|
((__BASE__) == TIM_DMABASE_CCR1) || \
|
||||||
((__BASE__) == TIM_DMABASE_CCR2) || \
|
((__BASE__) == TIM_DMABASE_CCR2) || \
|
||||||
((__BASE__) == TIM_DMABASE_CCR3) || \
|
((__BASE__) == TIM_DMABASE_CCR3) || \
|
||||||
((__BASE__) == TIM_DMABASE_CCR4) || \
|
((__BASE__) == TIM_DMABASE_CCR4) || \
|
||||||
((__BASE__) == TIM_DMABASE_BDTR) || \
|
((__BASE__) == TIM_DMABASE_BDTR) || \
|
||||||
((__BASE__) == TIM_DMABASE_OR) || \
|
((__BASE__) == TIM_DMABASE_OR) || \
|
||||||
((__BASE__) == TIM_DMABASE_CCMR3) || \
|
((__BASE__) == TIM_DMABASE_CCMR3) || \
|
||||||
((__BASE__) == TIM_DMABASE_CCR5) || \
|
((__BASE__) == TIM_DMABASE_CCR5) || \
|
||||||
((__BASE__) == TIM_DMABASE_CCR6) || \
|
((__BASE__) == TIM_DMABASE_CCR6) || \
|
||||||
((__BASE__) == TIM_DMABASE_AF1) || \
|
((__BASE__) == TIM_DMABASE_AF1) || \
|
||||||
((__BASE__) == TIM_DMABASE_AF2))
|
((__BASE__) == TIM_DMABASE_AF2))
|
||||||
#else
|
#else
|
||||||
#define IS_TIM_DMA_BASE(__BASE__) (((__BASE__) == TIM_DMABASE_CR1) || \
|
#define IS_TIM_DMA_BASE(__BASE__) (((__BASE__) == TIM_DMABASE_CR1) || \
|
||||||
|
@ -1636,6 +1732,9 @@ mode.
|
||||||
((__MODE__) == TIM_COUNTERMODE_CENTERALIGNED2) || \
|
((__MODE__) == TIM_COUNTERMODE_CENTERALIGNED2) || \
|
||||||
((__MODE__) == TIM_COUNTERMODE_CENTERALIGNED3))
|
((__MODE__) == TIM_COUNTERMODE_CENTERALIGNED3))
|
||||||
|
|
||||||
|
#define IS_TIM_UIFREMAP_MODE(__MODE__) (((__MODE__) == TIM_UIFREMAP_DISABLE) || \
|
||||||
|
((__MODE__) == TIM_UIFREMAP_ENALE))
|
||||||
|
|
||||||
#define IS_TIM_CLOCKDIVISION_DIV(__DIV__) (((__DIV__) == TIM_CLOCKDIVISION_DIV1) || \
|
#define IS_TIM_CLOCKDIVISION_DIV(__DIV__) (((__DIV__) == TIM_CLOCKDIVISION_DIV1) || \
|
||||||
((__DIV__) == TIM_CLOCKDIVISION_DIV2) || \
|
((__DIV__) == TIM_CLOCKDIVISION_DIV2) || \
|
||||||
((__DIV__) == TIM_CLOCKDIVISION_DIV4))
|
((__DIV__) == TIM_CLOCKDIVISION_DIV4))
|
||||||
|
@ -1658,6 +1757,9 @@ mode.
|
||||||
#define IS_TIM_OCNIDLE_STATE(__STATE__) (((__STATE__) == TIM_OCNIDLESTATE_SET) || \
|
#define IS_TIM_OCNIDLE_STATE(__STATE__) (((__STATE__) == TIM_OCNIDLESTATE_SET) || \
|
||||||
((__STATE__) == TIM_OCNIDLESTATE_RESET))
|
((__STATE__) == TIM_OCNIDLESTATE_RESET))
|
||||||
|
|
||||||
|
#define IS_TIM_ENCODERINPUT_POLARITY(__POLARITY__) (((__POLARITY__) == TIM_ENCODERINPUTPOLARITY_RISING) || \
|
||||||
|
((__POLARITY__) == TIM_ENCODERINPUTPOLARITY_FALLING))
|
||||||
|
|
||||||
#define IS_TIM_IC_POLARITY(__POLARITY__) (((__POLARITY__) == TIM_ICPOLARITY_RISING) || \
|
#define IS_TIM_IC_POLARITY(__POLARITY__) (((__POLARITY__) == TIM_ICPOLARITY_RISING) || \
|
||||||
((__POLARITY__) == TIM_ICPOLARITY_FALLING) || \
|
((__POLARITY__) == TIM_ICPOLARITY_FALLING) || \
|
||||||
((__POLARITY__) == TIM_ICPOLARITY_BOTHEDGE))
|
((__POLARITY__) == TIM_ICPOLARITY_BOTHEDGE))
|
||||||
|
@ -1876,28 +1978,28 @@ mode.
|
||||||
((__TRIGGER__) == TIM_SLAVEMODE_COMBINED_RESETTRIGGER))
|
((__TRIGGER__) == TIM_SLAVEMODE_COMBINED_RESETTRIGGER))
|
||||||
|
|
||||||
#define TIM_SET_ICPRESCALERVALUE(__HANDLE__, __CHANNEL__, __ICPSC__) \
|
#define TIM_SET_ICPRESCALERVALUE(__HANDLE__, __CHANNEL__, __ICPSC__) \
|
||||||
(((__CHANNEL__) == TIM_CHANNEL_1) ? ((__HANDLE__)->Instance->CCMR1 |= (__ICPSC__)) :\
|
(((__CHANNEL__) == TIM_CHANNEL_1) ? ((__HANDLE__)->Instance->CCMR1 |= (__ICPSC__)) :\
|
||||||
((__CHANNEL__) == TIM_CHANNEL_2) ? ((__HANDLE__)->Instance->CCMR1 |= ((__ICPSC__) << 8U)) :\
|
((__CHANNEL__) == TIM_CHANNEL_2) ? ((__HANDLE__)->Instance->CCMR1 |= ((__ICPSC__) << 8U)) :\
|
||||||
((__CHANNEL__) == TIM_CHANNEL_3) ? ((__HANDLE__)->Instance->CCMR2 |= (__ICPSC__)) :\
|
((__CHANNEL__) == TIM_CHANNEL_3) ? ((__HANDLE__)->Instance->CCMR2 |= (__ICPSC__)) :\
|
||||||
((__HANDLE__)->Instance->CCMR2 |= ((__ICPSC__) << 8U)))
|
((__HANDLE__)->Instance->CCMR2 |= ((__ICPSC__) << 8U)))
|
||||||
|
|
||||||
#define TIM_RESET_ICPRESCALERVALUE(__HANDLE__, __CHANNEL__) \
|
#define TIM_RESET_ICPRESCALERVALUE(__HANDLE__, __CHANNEL__) \
|
||||||
(((__CHANNEL__) == TIM_CHANNEL_1) ? ((__HANDLE__)->Instance->CCMR1 &= (uint16_t)~TIM_CCMR1_IC1PSC) :\
|
(((__CHANNEL__) == TIM_CHANNEL_1) ? ((__HANDLE__)->Instance->CCMR1 &= ~TIM_CCMR1_IC1PSC) :\
|
||||||
((__CHANNEL__) == TIM_CHANNEL_2) ? ((__HANDLE__)->Instance->CCMR1 &= (uint16_t)~TIM_CCMR1_IC2PSC) :\
|
((__CHANNEL__) == TIM_CHANNEL_2) ? ((__HANDLE__)->Instance->CCMR1 &= ~TIM_CCMR1_IC2PSC) :\
|
||||||
((__CHANNEL__) == TIM_CHANNEL_3) ? ((__HANDLE__)->Instance->CCMR2 &= (uint16_t)~TIM_CCMR2_IC3PSC) :\
|
((__CHANNEL__) == TIM_CHANNEL_3) ? ((__HANDLE__)->Instance->CCMR2 &= ~TIM_CCMR2_IC3PSC) :\
|
||||||
((__HANDLE__)->Instance->CCMR2 &= (uint16_t)~TIM_CCMR2_IC4PSC))
|
((__HANDLE__)->Instance->CCMR2 &= ~TIM_CCMR2_IC4PSC))
|
||||||
|
|
||||||
#define TIM_SET_CAPTUREPOLARITY(__HANDLE__, __CHANNEL__, __POLARITY__) \
|
#define TIM_SET_CAPTUREPOLARITY(__HANDLE__, __CHANNEL__, __POLARITY__) \
|
||||||
(((__CHANNEL__) == TIM_CHANNEL_1) ? ((__HANDLE__)->Instance->CCER |= (__POLARITY__)) :\
|
(((__CHANNEL__) == TIM_CHANNEL_1) ? ((__HANDLE__)->Instance->CCER |= (__POLARITY__)) :\
|
||||||
((__CHANNEL__) == TIM_CHANNEL_2) ? ((__HANDLE__)->Instance->CCER |= ((__POLARITY__) << 4U)) :\
|
((__CHANNEL__) == TIM_CHANNEL_2) ? ((__HANDLE__)->Instance->CCER |= ((__POLARITY__) << 4U)) :\
|
||||||
((__CHANNEL__) == TIM_CHANNEL_3) ? ((__HANDLE__)->Instance->CCER |= ((__POLARITY__) << 8U)) :\
|
((__CHANNEL__) == TIM_CHANNEL_3) ? ((__HANDLE__)->Instance->CCER |= ((__POLARITY__) << 8U)) :\
|
||||||
((__HANDLE__)->Instance->CCER |= (((__POLARITY__) << 12U))))
|
((__HANDLE__)->Instance->CCER |= (((__POLARITY__) << 12U))))
|
||||||
|
|
||||||
#define TIM_RESET_CAPTUREPOLARITY(__HANDLE__, __CHANNEL__) \
|
#define TIM_RESET_CAPTUREPOLARITY(__HANDLE__, __CHANNEL__) \
|
||||||
(((__CHANNEL__) == TIM_CHANNEL_1) ? ((__HANDLE__)->Instance->CCER &= (uint16_t)~(TIM_CCER_CC1P | TIM_CCER_CC1NP)) :\
|
(((__CHANNEL__) == TIM_CHANNEL_1) ? ((__HANDLE__)->Instance->CCER &= ~(TIM_CCER_CC1P | TIM_CCER_CC1NP)) :\
|
||||||
((__CHANNEL__) == TIM_CHANNEL_2) ? ((__HANDLE__)->Instance->CCER &= (uint16_t)~(TIM_CCER_CC2P | TIM_CCER_CC2NP)) :\
|
((__CHANNEL__) == TIM_CHANNEL_2) ? ((__HANDLE__)->Instance->CCER &= ~(TIM_CCER_CC2P | TIM_CCER_CC2NP)) :\
|
||||||
((__CHANNEL__) == TIM_CHANNEL_3) ? ((__HANDLE__)->Instance->CCER &= (uint16_t)~(TIM_CCER_CC3P | TIM_CCER_CC3NP)) :\
|
((__CHANNEL__) == TIM_CHANNEL_3) ? ((__HANDLE__)->Instance->CCER &= ~(TIM_CCER_CC3P | TIM_CCER_CC3NP)) :\
|
||||||
((__HANDLE__)->Instance->CCER &= (uint16_t)~(TIM_CCER_CC4P | TIM_CCER_CC4NP)))
|
((__HANDLE__)->Instance->CCER &= ~(TIM_CCER_CC4P | TIM_CCER_CC4NP)))
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @}
|
* @}
|
||||||
|
@ -2035,7 +2137,8 @@ HAL_StatusTypeDef HAL_TIM_Encoder_Stop(TIM_HandleTypeDef *htim, uint32_t Channel
|
||||||
HAL_StatusTypeDef HAL_TIM_Encoder_Start_IT(TIM_HandleTypeDef *htim, uint32_t Channel);
|
HAL_StatusTypeDef HAL_TIM_Encoder_Start_IT(TIM_HandleTypeDef *htim, uint32_t Channel);
|
||||||
HAL_StatusTypeDef HAL_TIM_Encoder_Stop_IT(TIM_HandleTypeDef *htim, uint32_t Channel);
|
HAL_StatusTypeDef HAL_TIM_Encoder_Stop_IT(TIM_HandleTypeDef *htim, uint32_t Channel);
|
||||||
/* Non-Blocking mode: DMA */
|
/* Non-Blocking mode: DMA */
|
||||||
HAL_StatusTypeDef HAL_TIM_Encoder_Start_DMA(TIM_HandleTypeDef *htim, uint32_t Channel, uint32_t *pData1, uint32_t *pData2, uint16_t Length);
|
HAL_StatusTypeDef HAL_TIM_Encoder_Start_DMA(TIM_HandleTypeDef *htim, uint32_t Channel, uint32_t *pData1,
|
||||||
|
uint32_t *pData2, uint16_t Length);
|
||||||
HAL_StatusTypeDef HAL_TIM_Encoder_Stop_DMA(TIM_HandleTypeDef *htim, uint32_t Channel);
|
HAL_StatusTypeDef HAL_TIM_Encoder_Stop_DMA(TIM_HandleTypeDef *htim, uint32_t Channel);
|
||||||
/**
|
/**
|
||||||
* @}
|
* @}
|
||||||
|
@ -2059,17 +2162,19 @@ void HAL_TIM_IRQHandler(TIM_HandleTypeDef *htim);
|
||||||
HAL_StatusTypeDef HAL_TIM_OC_ConfigChannel(TIM_HandleTypeDef *htim, TIM_OC_InitTypeDef *sConfig, uint32_t Channel);
|
HAL_StatusTypeDef HAL_TIM_OC_ConfigChannel(TIM_HandleTypeDef *htim, TIM_OC_InitTypeDef *sConfig, uint32_t Channel);
|
||||||
HAL_StatusTypeDef HAL_TIM_PWM_ConfigChannel(TIM_HandleTypeDef *htim, TIM_OC_InitTypeDef *sConfig, uint32_t Channel);
|
HAL_StatusTypeDef HAL_TIM_PWM_ConfigChannel(TIM_HandleTypeDef *htim, TIM_OC_InitTypeDef *sConfig, uint32_t Channel);
|
||||||
HAL_StatusTypeDef HAL_TIM_IC_ConfigChannel(TIM_HandleTypeDef *htim, TIM_IC_InitTypeDef *sConfig, uint32_t Channel);
|
HAL_StatusTypeDef HAL_TIM_IC_ConfigChannel(TIM_HandleTypeDef *htim, TIM_IC_InitTypeDef *sConfig, uint32_t Channel);
|
||||||
HAL_StatusTypeDef HAL_TIM_OnePulse_ConfigChannel(TIM_HandleTypeDef *htim, TIM_OnePulse_InitTypeDef *sConfig, uint32_t OutputChannel, uint32_t InputChannel);
|
HAL_StatusTypeDef HAL_TIM_OnePulse_ConfigChannel(TIM_HandleTypeDef *htim, TIM_OnePulse_InitTypeDef *sConfig,
|
||||||
HAL_StatusTypeDef HAL_TIM_ConfigOCrefClear(TIM_HandleTypeDef *htim, TIM_ClearInputConfigTypeDef *sClearInputConfig, uint32_t Channel);
|
uint32_t OutputChannel, uint32_t InputChannel);
|
||||||
|
HAL_StatusTypeDef HAL_TIM_ConfigOCrefClear(TIM_HandleTypeDef *htim, TIM_ClearInputConfigTypeDef *sClearInputConfig,
|
||||||
|
uint32_t Channel);
|
||||||
HAL_StatusTypeDef HAL_TIM_ConfigClockSource(TIM_HandleTypeDef *htim, TIM_ClockConfigTypeDef *sClockSourceConfig);
|
HAL_StatusTypeDef HAL_TIM_ConfigClockSource(TIM_HandleTypeDef *htim, TIM_ClockConfigTypeDef *sClockSourceConfig);
|
||||||
HAL_StatusTypeDef HAL_TIM_ConfigTI1Input(TIM_HandleTypeDef *htim, uint32_t TI1_Selection);
|
HAL_StatusTypeDef HAL_TIM_ConfigTI1Input(TIM_HandleTypeDef *htim, uint32_t TI1_Selection);
|
||||||
HAL_StatusTypeDef HAL_TIM_SlaveConfigSynchro(TIM_HandleTypeDef *htim, TIM_SlaveConfigTypeDef *sSlaveConfig);
|
HAL_StatusTypeDef HAL_TIM_SlaveConfigSynchro(TIM_HandleTypeDef *htim, TIM_SlaveConfigTypeDef *sSlaveConfig);
|
||||||
HAL_StatusTypeDef HAL_TIM_SlaveConfigSynchro_IT(TIM_HandleTypeDef *htim, TIM_SlaveConfigTypeDef *sSlaveConfig);
|
HAL_StatusTypeDef HAL_TIM_SlaveConfigSynchro_IT(TIM_HandleTypeDef *htim, TIM_SlaveConfigTypeDef *sSlaveConfig);
|
||||||
HAL_StatusTypeDef HAL_TIM_DMABurst_WriteStart(TIM_HandleTypeDef *htim, uint32_t BurstBaseAddress, uint32_t BurstRequestSrc, \
|
HAL_StatusTypeDef HAL_TIM_DMABurst_WriteStart(TIM_HandleTypeDef *htim, uint32_t BurstBaseAddress,
|
||||||
uint32_t *BurstBuffer, uint32_t BurstLength);
|
uint32_t BurstRequestSrc, uint32_t *BurstBuffer, uint32_t BurstLength);
|
||||||
HAL_StatusTypeDef HAL_TIM_DMABurst_WriteStop(TIM_HandleTypeDef *htim, uint32_t BurstRequestSrc);
|
HAL_StatusTypeDef HAL_TIM_DMABurst_WriteStop(TIM_HandleTypeDef *htim, uint32_t BurstRequestSrc);
|
||||||
HAL_StatusTypeDef HAL_TIM_DMABurst_ReadStart(TIM_HandleTypeDef *htim, uint32_t BurstBaseAddress, uint32_t BurstRequestSrc, \
|
HAL_StatusTypeDef HAL_TIM_DMABurst_ReadStart(TIM_HandleTypeDef *htim, uint32_t BurstBaseAddress,
|
||||||
uint32_t *BurstBuffer, uint32_t BurstLength);
|
uint32_t BurstRequestSrc, uint32_t *BurstBuffer, uint32_t BurstLength);
|
||||||
HAL_StatusTypeDef HAL_TIM_DMABurst_ReadStop(TIM_HandleTypeDef *htim, uint32_t BurstRequestSrc);
|
HAL_StatusTypeDef HAL_TIM_DMABurst_ReadStop(TIM_HandleTypeDef *htim, uint32_t BurstRequestSrc);
|
||||||
HAL_StatusTypeDef HAL_TIM_GenerateEvent(TIM_HandleTypeDef *htim, uint32_t EventSource);
|
HAL_StatusTypeDef HAL_TIM_GenerateEvent(TIM_HandleTypeDef *htim, uint32_t EventSource);
|
||||||
uint32_t HAL_TIM_ReadCapturedValue(TIM_HandleTypeDef *htim, uint32_t Channel);
|
uint32_t HAL_TIM_ReadCapturedValue(TIM_HandleTypeDef *htim, uint32_t Channel);
|
||||||
|
@ -2095,7 +2200,8 @@ void HAL_TIM_ErrorCallback(TIM_HandleTypeDef *htim);
|
||||||
|
|
||||||
/* Callbacks Register/UnRegister functions ***********************************/
|
/* Callbacks Register/UnRegister functions ***********************************/
|
||||||
#if (USE_HAL_TIM_REGISTER_CALLBACKS == 1)
|
#if (USE_HAL_TIM_REGISTER_CALLBACKS == 1)
|
||||||
HAL_StatusTypeDef HAL_TIM_RegisterCallback(TIM_HandleTypeDef *htim, HAL_TIM_CallbackIDTypeDef CallbackID, pTIM_CallbackTypeDef pCallback);
|
HAL_StatusTypeDef HAL_TIM_RegisterCallback(TIM_HandleTypeDef *htim, HAL_TIM_CallbackIDTypeDef CallbackID,
|
||||||
|
pTIM_CallbackTypeDef pCallback);
|
||||||
HAL_StatusTypeDef HAL_TIM_UnRegisterCallback(TIM_HandleTypeDef *htim, HAL_TIM_CallbackIDTypeDef CallbackID);
|
HAL_StatusTypeDef HAL_TIM_UnRegisterCallback(TIM_HandleTypeDef *htim, HAL_TIM_CallbackIDTypeDef CallbackID);
|
||||||
#endif /* USE_HAL_TIM_REGISTER_CALLBACKS */
|
#endif /* USE_HAL_TIM_REGISTER_CALLBACKS */
|
||||||
|
|
||||||
|
@ -2125,8 +2231,8 @@ HAL_TIM_StateTypeDef HAL_TIM_Encoder_GetState(TIM_HandleTypeDef *htim);
|
||||||
|
|
||||||
/* Private functions----------------------------------------------------------*/
|
/* Private functions----------------------------------------------------------*/
|
||||||
/** @defgroup TIM_Private_Functions TIM Private Functions
|
/** @defgroup TIM_Private_Functions TIM Private Functions
|
||||||
* @{
|
* @{
|
||||||
*/
|
*/
|
||||||
void TIM_Base_SetConfig(TIM_TypeDef *TIMx, TIM_Base_InitTypeDef *Structure);
|
void TIM_Base_SetConfig(TIM_TypeDef *TIMx, TIM_Base_InitTypeDef *Structure);
|
||||||
void TIM_TI1_SetConfig(TIM_TypeDef *TIMx, uint32_t TIM_ICPolarity, uint32_t TIM_ICSelection, uint32_t TIM_ICFilter);
|
void TIM_TI1_SetConfig(TIM_TypeDef *TIMx, uint32_t TIM_ICPolarity, uint32_t TIM_ICSelection, uint32_t TIM_ICFilter);
|
||||||
void TIM_OC2_SetConfig(TIM_TypeDef *TIMx, TIM_OC_InitTypeDef *OC_Config);
|
void TIM_OC2_SetConfig(TIM_TypeDef *TIMx, TIM_OC_InitTypeDef *OC_Config);
|
||||||
|
@ -2145,8 +2251,8 @@ void TIM_ResetCallback(TIM_HandleTypeDef *htim);
|
||||||
#endif /* USE_HAL_TIM_REGISTER_CALLBACKS */
|
#endif /* USE_HAL_TIM_REGISTER_CALLBACKS */
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @}
|
* @}
|
||||||
*/
|
*/
|
||||||
/* End of private functions --------------------------------------------------*/
|
/* End of private functions --------------------------------------------------*/
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
|
@ -201,9 +201,9 @@ TIMEx_BreakInputConfigTypeDef;
|
||||||
*/
|
*/
|
||||||
|
|
||||||
/** @addtogroup TIMEx_Exported_Functions_Group1 Extended Timer Hall Sensor functions
|
/** @addtogroup TIMEx_Exported_Functions_Group1 Extended Timer Hall Sensor functions
|
||||||
* @brief Timer Hall Sensor functions
|
* @brief Timer Hall Sensor functions
|
||||||
* @{
|
* @{
|
||||||
*/
|
*/
|
||||||
/* Timer Hall Sensor functions **********************************************/
|
/* Timer Hall Sensor functions **********************************************/
|
||||||
HAL_StatusTypeDef HAL_TIMEx_HallSensor_Init(TIM_HandleTypeDef *htim, TIM_HallSensor_InitTypeDef *sConfig);
|
HAL_StatusTypeDef HAL_TIMEx_HallSensor_Init(TIM_HandleTypeDef *htim, TIM_HallSensor_InitTypeDef *sConfig);
|
||||||
HAL_StatusTypeDef HAL_TIMEx_HallSensor_DeInit(TIM_HandleTypeDef *htim);
|
HAL_StatusTypeDef HAL_TIMEx_HallSensor_DeInit(TIM_HandleTypeDef *htim);
|
||||||
|
@ -225,9 +225,9 @@ HAL_StatusTypeDef HAL_TIMEx_HallSensor_Stop_DMA(TIM_HandleTypeDef *htim);
|
||||||
*/
|
*/
|
||||||
|
|
||||||
/** @addtogroup TIMEx_Exported_Functions_Group2 Extended Timer Complementary Output Compare functions
|
/** @addtogroup TIMEx_Exported_Functions_Group2 Extended Timer Complementary Output Compare functions
|
||||||
* @brief Timer Complementary Output Compare functions
|
* @brief Timer Complementary Output Compare functions
|
||||||
* @{
|
* @{
|
||||||
*/
|
*/
|
||||||
/* Timer Complementary Output Compare functions *****************************/
|
/* Timer Complementary Output Compare functions *****************************/
|
||||||
/* Blocking mode: Polling */
|
/* Blocking mode: Polling */
|
||||||
HAL_StatusTypeDef HAL_TIMEx_OCN_Start(TIM_HandleTypeDef *htim, uint32_t Channel);
|
HAL_StatusTypeDef HAL_TIMEx_OCN_Start(TIM_HandleTypeDef *htim, uint32_t Channel);
|
||||||
|
@ -245,9 +245,9 @@ HAL_StatusTypeDef HAL_TIMEx_OCN_Stop_DMA(TIM_HandleTypeDef *htim, uint32_t Chann
|
||||||
*/
|
*/
|
||||||
|
|
||||||
/** @addtogroup TIMEx_Exported_Functions_Group3 Extended Timer Complementary PWM functions
|
/** @addtogroup TIMEx_Exported_Functions_Group3 Extended Timer Complementary PWM functions
|
||||||
* @brief Timer Complementary PWM functions
|
* @brief Timer Complementary PWM functions
|
||||||
* @{
|
* @{
|
||||||
*/
|
*/
|
||||||
/* Timer Complementary PWM functions ****************************************/
|
/* Timer Complementary PWM functions ****************************************/
|
||||||
/* Blocking mode: Polling */
|
/* Blocking mode: Polling */
|
||||||
HAL_StatusTypeDef HAL_TIMEx_PWMN_Start(TIM_HandleTypeDef *htim, uint32_t Channel);
|
HAL_StatusTypeDef HAL_TIMEx_PWMN_Start(TIM_HandleTypeDef *htim, uint32_t Channel);
|
||||||
|
@ -264,9 +264,9 @@ HAL_StatusTypeDef HAL_TIMEx_PWMN_Stop_DMA(TIM_HandleTypeDef *htim, uint32_t Chan
|
||||||
*/
|
*/
|
||||||
|
|
||||||
/** @addtogroup TIMEx_Exported_Functions_Group4 Extended Timer Complementary One Pulse functions
|
/** @addtogroup TIMEx_Exported_Functions_Group4 Extended Timer Complementary One Pulse functions
|
||||||
* @brief Timer Complementary One Pulse functions
|
* @brief Timer Complementary One Pulse functions
|
||||||
* @{
|
* @{
|
||||||
*/
|
*/
|
||||||
/* Timer Complementary One Pulse functions **********************************/
|
/* Timer Complementary One Pulse functions **********************************/
|
||||||
/* Blocking mode: Polling */
|
/* Blocking mode: Polling */
|
||||||
HAL_StatusTypeDef HAL_TIMEx_OnePulseN_Start(TIM_HandleTypeDef *htim, uint32_t OutputChannel);
|
HAL_StatusTypeDef HAL_TIMEx_OnePulseN_Start(TIM_HandleTypeDef *htim, uint32_t OutputChannel);
|
||||||
|
@ -280,17 +280,23 @@ HAL_StatusTypeDef HAL_TIMEx_OnePulseN_Stop_IT(TIM_HandleTypeDef *htim, uint32_t
|
||||||
*/
|
*/
|
||||||
|
|
||||||
/** @addtogroup TIMEx_Exported_Functions_Group5 Extended Peripheral Control functions
|
/** @addtogroup TIMEx_Exported_Functions_Group5 Extended Peripheral Control functions
|
||||||
* @brief Peripheral Control functions
|
* @brief Peripheral Control functions
|
||||||
* @{
|
* @{
|
||||||
*/
|
*/
|
||||||
/* Extended Control functions ************************************************/
|
/* Extended Control functions ************************************************/
|
||||||
HAL_StatusTypeDef HAL_TIMEx_ConfigCommutEvent(TIM_HandleTypeDef *htim, uint32_t InputTrigger, uint32_t CommutationSource);
|
HAL_StatusTypeDef HAL_TIMEx_ConfigCommutEvent(TIM_HandleTypeDef *htim, uint32_t InputTrigger,
|
||||||
HAL_StatusTypeDef HAL_TIMEx_ConfigCommutEvent_IT(TIM_HandleTypeDef *htim, uint32_t InputTrigger, uint32_t CommutationSource);
|
uint32_t CommutationSource);
|
||||||
HAL_StatusTypeDef HAL_TIMEx_ConfigCommutEvent_DMA(TIM_HandleTypeDef *htim, uint32_t InputTrigger, uint32_t CommutationSource);
|
HAL_StatusTypeDef HAL_TIMEx_ConfigCommutEvent_IT(TIM_HandleTypeDef *htim, uint32_t InputTrigger,
|
||||||
HAL_StatusTypeDef HAL_TIMEx_MasterConfigSynchronization(TIM_HandleTypeDef *htim, TIM_MasterConfigTypeDef *sMasterConfig);
|
uint32_t CommutationSource);
|
||||||
HAL_StatusTypeDef HAL_TIMEx_ConfigBreakDeadTime(TIM_HandleTypeDef *htim, TIM_BreakDeadTimeConfigTypeDef *sBreakDeadTimeConfig);
|
HAL_StatusTypeDef HAL_TIMEx_ConfigCommutEvent_DMA(TIM_HandleTypeDef *htim, uint32_t InputTrigger,
|
||||||
|
uint32_t CommutationSource);
|
||||||
|
HAL_StatusTypeDef HAL_TIMEx_MasterConfigSynchronization(TIM_HandleTypeDef *htim,
|
||||||
|
TIM_MasterConfigTypeDef *sMasterConfig);
|
||||||
|
HAL_StatusTypeDef HAL_TIMEx_ConfigBreakDeadTime(TIM_HandleTypeDef *htim,
|
||||||
|
TIM_BreakDeadTimeConfigTypeDef *sBreakDeadTimeConfig);
|
||||||
#if defined(TIM_BREAK_INPUT_SUPPORT)
|
#if defined(TIM_BREAK_INPUT_SUPPORT)
|
||||||
HAL_StatusTypeDef HAL_TIMEx_ConfigBreakInput(TIM_HandleTypeDef *htim, uint32_t BreakInput, TIMEx_BreakInputConfigTypeDef *sBreakInputConfig);
|
HAL_StatusTypeDef HAL_TIMEx_ConfigBreakInput(TIM_HandleTypeDef *htim, uint32_t BreakInput,
|
||||||
|
TIMEx_BreakInputConfigTypeDef *sBreakInputConfig);
|
||||||
#endif /* TIM_BREAK_INPUT_SUPPORT */
|
#endif /* TIM_BREAK_INPUT_SUPPORT */
|
||||||
HAL_StatusTypeDef HAL_TIMEx_GroupChannel5(TIM_HandleTypeDef *htim, uint32_t Channels);
|
HAL_StatusTypeDef HAL_TIMEx_GroupChannel5(TIM_HandleTypeDef *htim, uint32_t Channels);
|
||||||
HAL_StatusTypeDef HAL_TIMEx_RemapConfig(TIM_HandleTypeDef *htim, uint32_t Remap);
|
HAL_StatusTypeDef HAL_TIMEx_RemapConfig(TIM_HandleTypeDef *htim, uint32_t Remap);
|
||||||
|
@ -327,7 +333,7 @@ HAL_TIM_StateTypeDef HAL_TIMEx_HallSensor_GetState(TIM_HandleTypeDef *htim);
|
||||||
/* End of exported functions -------------------------------------------------*/
|
/* End of exported functions -------------------------------------------------*/
|
||||||
|
|
||||||
/* Private functions----------------------------------------------------------*/
|
/* Private functions----------------------------------------------------------*/
|
||||||
/** @defgroup TIMEx_Private_Functions TIM Extended Private Functions
|
/** @addtogroup TIMEx_Private_Functions TIMEx Private Functions
|
||||||
* @{
|
* @{
|
||||||
*/
|
*/
|
||||||
void TIMEx_DMACommutationCplt(DMA_HandleTypeDef *hdma);
|
void TIMEx_DMACommutationCplt(DMA_HandleTypeDef *hdma);
|
||||||
|
|
|
@ -42,13 +42,6 @@ extern "C" {
|
||||||
/* Private variables ---------------------------------------------------------*/
|
/* Private variables ---------------------------------------------------------*/
|
||||||
|
|
||||||
/* Private constants ---------------------------------------------------------*/
|
/* Private constants ---------------------------------------------------------*/
|
||||||
/** @defgroup USART_LL_Private_Constants USART Private Constants
|
|
||||||
* @{
|
|
||||||
*/
|
|
||||||
/**
|
|
||||||
* @}
|
|
||||||
*/
|
|
||||||
|
|
||||||
/* Private macros ------------------------------------------------------------*/
|
/* Private macros ------------------------------------------------------------*/
|
||||||
#if defined(USE_FULL_LL_DRIVER)
|
#if defined(USE_FULL_LL_DRIVER)
|
||||||
/** @defgroup USART_LL_Private_Macros USART Private Macros
|
/** @defgroup USART_LL_Private_Macros USART Private Macros
|
||||||
|
@ -156,18 +149,21 @@ typedef struct
|
||||||
*/
|
*/
|
||||||
#define LL_USART_ICR_PECF USART_ICR_PECF /*!< Parity error flag */
|
#define LL_USART_ICR_PECF USART_ICR_PECF /*!< Parity error flag */
|
||||||
#define LL_USART_ICR_FECF USART_ICR_FECF /*!< Framing error flag */
|
#define LL_USART_ICR_FECF USART_ICR_FECF /*!< Framing error flag */
|
||||||
#define LL_USART_ICR_NCF USART_ICR_NCF /*!< Noise error detected flag */
|
#define LL_USART_ICR_NCF USART_ICR_NCF /*!< Noise error detected flag */
|
||||||
#define LL_USART_ICR_ORECF USART_ICR_ORECF /*!< Overrun error flag */
|
#define LL_USART_ICR_ORECF USART_ICR_ORECF /*!< Overrun error flag */
|
||||||
#define LL_USART_ICR_IDLECF USART_ICR_IDLECF /*!< Idle line detected flag */
|
#define LL_USART_ICR_IDLECF USART_ICR_IDLECF /*!< Idle line detected flag */
|
||||||
#define LL_USART_ICR_TCCF USART_ICR_TCCF /*!< Transmission complete flag */
|
#define LL_USART_ICR_TCCF USART_ICR_TCCF /*!< Transmission complete flag */
|
||||||
#if defined(USART_TCBGT_SUPPORT)
|
#if defined(USART_TCBGT_SUPPORT)
|
||||||
#define LL_USART_ICR_TCBGTCF USART_ICR_TCBGTCF /*!< Transmission completed before guard time flag */
|
#define LL_USART_ICR_TCBGTCF USART_ICR_TCBGTCF /*!< Transmission completed before guard time flag */
|
||||||
#endif
|
#endif /* USART_TCBGT_SUPPORT */
|
||||||
#define LL_USART_ICR_LBDCF USART_ICR_LBDCF /*!< LIN break detection flag */
|
#define LL_USART_ICR_LBDCF USART_ICR_LBDCF /*!< LIN break detection flag */
|
||||||
#define LL_USART_ICR_CTSCF USART_ICR_CTSCF /*!< CTS flag */
|
#define LL_USART_ICR_CTSCF USART_ICR_CTSCF /*!< CTS flag */
|
||||||
#define LL_USART_ICR_RTOCF USART_ICR_RTOCF /*!< Receiver timeout flag */
|
#define LL_USART_ICR_RTOCF USART_ICR_RTOCF /*!< Receiver timeout flag */
|
||||||
#define LL_USART_ICR_EOBCF USART_ICR_EOBCF /*!< End of block flag */
|
#define LL_USART_ICR_EOBCF USART_ICR_EOBCF /*!< End of block flag */
|
||||||
#define LL_USART_ICR_CMCF USART_ICR_CMCF /*!< Character match flag */
|
#define LL_USART_ICR_CMCF USART_ICR_CMCF /*!< Character match flag */
|
||||||
|
#if defined(USART_CR1_UESM)
|
||||||
|
#define LL_USART_ICR_WUCF USART_ICR_WUCF /*!< Wakeup from Stop mode flag */
|
||||||
|
#endif /* USART_CR1_UESM */
|
||||||
/**
|
/**
|
||||||
* @}
|
* @}
|
||||||
*/
|
*/
|
||||||
|
@ -195,10 +191,16 @@ typedef struct
|
||||||
#define LL_USART_ISR_CMF USART_ISR_CMF /*!< Character match flag */
|
#define LL_USART_ISR_CMF USART_ISR_CMF /*!< Character match flag */
|
||||||
#define LL_USART_ISR_SBKF USART_ISR_SBKF /*!< Send break flag */
|
#define LL_USART_ISR_SBKF USART_ISR_SBKF /*!< Send break flag */
|
||||||
#define LL_USART_ISR_RWU USART_ISR_RWU /*!< Receiver wakeup from Mute mode flag */
|
#define LL_USART_ISR_RWU USART_ISR_RWU /*!< Receiver wakeup from Mute mode flag */
|
||||||
|
#if defined(USART_CR1_UESM)
|
||||||
|
#define LL_USART_ISR_WUF USART_ISR_WUF /*!< Wakeup from Stop mode flag */
|
||||||
|
#endif /* USART_CR1_UESM */
|
||||||
#define LL_USART_ISR_TEACK USART_ISR_TEACK /*!< Transmit enable acknowledge flag */
|
#define LL_USART_ISR_TEACK USART_ISR_TEACK /*!< Transmit enable acknowledge flag */
|
||||||
|
#if defined(USART_ISR_REACK)
|
||||||
|
#define LL_USART_ISR_REACK USART_ISR_REACK /*!< Receive enable acknowledge flag */
|
||||||
|
#endif /* USART_ISR_REACK */
|
||||||
#if defined(USART_TCBGT_SUPPORT)
|
#if defined(USART_TCBGT_SUPPORT)
|
||||||
#define LL_USART_ISR_TCBGT USART_ISR_TCBGT /*!< Transmission complete before guard time completion flag */
|
#define LL_USART_ISR_TCBGT USART_ISR_TCBGT /*!< Transmission complete before guard time completion flag */
|
||||||
#endif
|
#endif /* USART_TCBGT_SUPPORT */
|
||||||
/**
|
/**
|
||||||
* @}
|
* @}
|
||||||
*/
|
*/
|
||||||
|
@ -218,9 +220,12 @@ typedef struct
|
||||||
#define LL_USART_CR2_LBDIE USART_CR2_LBDIE /*!< LIN break detection interrupt enable */
|
#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_EIE USART_CR3_EIE /*!< Error interrupt enable */
|
||||||
#define LL_USART_CR3_CTSIE USART_CR3_CTSIE /*!< CTS interrupt enable */
|
#define LL_USART_CR3_CTSIE USART_CR3_CTSIE /*!< CTS interrupt enable */
|
||||||
|
#if defined(USART_CR1_UESM)
|
||||||
|
#define LL_USART_CR3_WUFIE USART_CR3_WUFIE /*!< Wakeup from Stop mode interrupt enable */
|
||||||
|
#endif /* USART_CR1_UESM */
|
||||||
#if defined(USART_TCBGT_SUPPORT)
|
#if defined(USART_TCBGT_SUPPORT)
|
||||||
#define LL_USART_CR3_TCBGTIE USART_CR3_TCBGTIE /*!< Transmission complete before guard time interrupt enable */
|
#define LL_USART_CR3_TCBGTIE USART_CR3_TCBGTIE /*!< Transmission complete before guard time interrupt enable */
|
||||||
#endif
|
#endif /* USART_TCBGT_SUPPORT */
|
||||||
/**
|
/**
|
||||||
* @}
|
* @}
|
||||||
*/
|
*/
|
||||||
|
@ -400,6 +405,18 @@ typedef struct
|
||||||
* @}
|
* @}
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
#if defined(USART_CR1_UESM)
|
||||||
|
/** @defgroup USART_LL_EC_WAKEUP_ON Wakeup Activation
|
||||||
|
* @{
|
||||||
|
*/
|
||||||
|
#define LL_USART_WAKEUP_ON_ADDRESS 0x00000000U /*!< Wake up active on address match */
|
||||||
|
#define LL_USART_WAKEUP_ON_STARTBIT USART_CR3_WUS_1 /*!< Wake up active on Start bit detection */
|
||||||
|
#define LL_USART_WAKEUP_ON_RXNE (USART_CR3_WUS_0 | USART_CR3_WUS_1) /*!< Wake up active on RXNE */
|
||||||
|
/**
|
||||||
|
* @}
|
||||||
|
*/
|
||||||
|
|
||||||
|
#endif /* USART_CR1_UESM */
|
||||||
/** @defgroup USART_LL_EC_IRDA_POWER IrDA Power
|
/** @defgroup USART_LL_EC_IRDA_POWER IrDA Power
|
||||||
* @{
|
* @{
|
||||||
*/
|
*/
|
||||||
|
@ -480,7 +497,8 @@ typedef struct
|
||||||
* @param __BAUDRATE__ Baud rate value to achieve
|
* @param __BAUDRATE__ Baud rate value to achieve
|
||||||
* @retval USARTDIV value to be used for BRR register filling in OverSampling_8 case
|
* @retval USARTDIV value to be used for BRR register filling in OverSampling_8 case
|
||||||
*/
|
*/
|
||||||
#define __LL_USART_DIV_SAMPLING8(__PERIPHCLK__, __BAUDRATE__) ((((__PERIPHCLK__)*2U) + ((__BAUDRATE__)/2U))/(__BAUDRATE__))
|
#define __LL_USART_DIV_SAMPLING8(__PERIPHCLK__, __BAUDRATE__) ((((__PERIPHCLK__)*2U)\
|
||||||
|
+ ((__BAUDRATE__)/2U))/(__BAUDRATE__))
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief Compute USARTDIV value according to Peripheral Clock and
|
* @brief Compute USARTDIV value according to Peripheral Clock and
|
||||||
|
@ -545,6 +563,87 @@ __STATIC_INLINE uint32_t LL_USART_IsEnabled(USART_TypeDef *USARTx)
|
||||||
return ((READ_BIT(USARTx->CR1, USART_CR1_UE) == (USART_CR1_UE)) ? 1UL : 0UL);
|
return ((READ_BIT(USARTx->CR1, USART_CR1_UE) == (USART_CR1_UE)) ? 1UL : 0UL);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#if defined(USART_CR1_UESM)
|
||||||
|
/**
|
||||||
|
* @brief USART enabled in STOP Mode.
|
||||||
|
* @note When this function is enabled, USART is able to wake up the MCU from Stop mode, provided that
|
||||||
|
* USART clock selection is HSI or LSE in RCC.
|
||||||
|
* @note Macro @ref IS_UART_WAKEUP_FROMSTOP_INSTANCE(USARTx) can be used to check whether or not
|
||||||
|
* Wake-up from Stop mode feature is supported by the USARTx instance.
|
||||||
|
* @rmtoll CR1 UESM LL_USART_EnableInStopMode
|
||||||
|
* @param USARTx USART Instance
|
||||||
|
* @retval None
|
||||||
|
*/
|
||||||
|
__STATIC_INLINE void LL_USART_EnableInStopMode(USART_TypeDef *USARTx)
|
||||||
|
{
|
||||||
|
SET_BIT(USARTx->CR1, USART_CR1_UESM);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief USART disabled in STOP Mode.
|
||||||
|
* @note When this function is disabled, USART is not able to wake up the MCU from Stop mode
|
||||||
|
* @note Macro @ref IS_UART_WAKEUP_FROMSTOP_INSTANCE(USARTx) can be used to check whether or not
|
||||||
|
* Wake-up from Stop mode feature is supported by the USARTx instance.
|
||||||
|
* @rmtoll CR1 UESM LL_USART_DisableInStopMode
|
||||||
|
* @param USARTx USART Instance
|
||||||
|
* @retval None
|
||||||
|
*/
|
||||||
|
__STATIC_INLINE void LL_USART_DisableInStopMode(USART_TypeDef *USARTx)
|
||||||
|
{
|
||||||
|
CLEAR_BIT(USARTx->CR1, USART_CR1_UESM);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Indicate if USART is enabled in STOP Mode (able to wake up MCU from Stop mode or not)
|
||||||
|
* @note Macro @ref IS_UART_WAKEUP_FROMSTOP_INSTANCE(USARTx) can be used to check whether or not
|
||||||
|
* Wake-up from Stop mode feature is supported by the USARTx instance.
|
||||||
|
* @rmtoll CR1 UESM LL_USART_IsEnabledInStopMode
|
||||||
|
* @param USARTx USART Instance
|
||||||
|
* @retval State of bit (1 or 0).
|
||||||
|
*/
|
||||||
|
__STATIC_INLINE uint32_t LL_USART_IsEnabledInStopMode(USART_TypeDef *USARTx)
|
||||||
|
{
|
||||||
|
return ((READ_BIT(USARTx->CR1, USART_CR1_UESM) == (USART_CR1_UESM)) ? 1UL : 0UL);
|
||||||
|
}
|
||||||
|
|
||||||
|
#if defined(USART_CR3_UCESM)
|
||||||
|
/**
|
||||||
|
* @brief USART Clock enabled in STOP Mode
|
||||||
|
* @note When this function is called, USART Clock is enabled while in STOP mode
|
||||||
|
* @rmtoll CR3 UCESM LL_USART_EnableClockInStopMode
|
||||||
|
* @param USARTx USART Instance
|
||||||
|
* @retval None
|
||||||
|
*/
|
||||||
|
__STATIC_INLINE void LL_USART_EnableClockInStopMode(USART_TypeDef *USARTx)
|
||||||
|
{
|
||||||
|
SET_BIT(USARTx->CR3, USART_CR3_UCESM);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief USART clock disabled in STOP Mode
|
||||||
|
* @note When this function is called, USART Clock is disabled while in STOP mode
|
||||||
|
* @rmtoll CR3 UCESM LL_USART_DisableClockInStopMode
|
||||||
|
* @param USARTx USART Instance
|
||||||
|
* @retval None
|
||||||
|
*/
|
||||||
|
__STATIC_INLINE void LL_USART_DisableClockInStopMode(USART_TypeDef *USARTx)
|
||||||
|
{
|
||||||
|
CLEAR_BIT(USARTx->CR3, USART_CR3_UCESM);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Indicate if USART clock is enabled in STOP Mode
|
||||||
|
* @rmtoll CR3 UCESM LL_USART_IsClockEnabledInStopMode
|
||||||
|
* @param USARTx USART Instance
|
||||||
|
* @retval State of bit (1 or 0).
|
||||||
|
*/
|
||||||
|
__STATIC_INLINE uint32_t LL_USART_IsClockEnabledInStopMode(USART_TypeDef *USARTx)
|
||||||
|
{
|
||||||
|
return (READ_BIT(USARTx->CR3, USART_CR3_UCESM) == (USART_CR3_UCESM));
|
||||||
|
}
|
||||||
|
|
||||||
|
#endif /* USART_CR3_UCESM */
|
||||||
|
#endif /* USART_CR1_UESM*/
|
||||||
/**
|
/**
|
||||||
* @brief Receiver Enable (Receiver is enabled and begins searching for a start bit)
|
* @brief Receiver Enable (Receiver is enabled and begins searching for a start bit)
|
||||||
* @rmtoll CR1 RE LL_USART_EnableDirectionRx
|
* @rmtoll CR1 RE LL_USART_EnableDirectionRx
|
||||||
|
@ -1461,6 +1560,41 @@ __STATIC_INLINE uint32_t LL_USART_IsEnabledOverrunDetect(USART_TypeDef *USARTx)
|
||||||
return ((READ_BIT(USARTx->CR3, USART_CR3_OVRDIS) != USART_CR3_OVRDIS) ? 1UL : 0UL);
|
return ((READ_BIT(USARTx->CR3, USART_CR3_OVRDIS) != USART_CR3_OVRDIS) ? 1UL : 0UL);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#if defined(USART_CR1_UESM)
|
||||||
|
/**
|
||||||
|
* @brief Select event type for Wake UP Interrupt Flag (WUS[1:0] bits)
|
||||||
|
* @note Macro @ref IS_UART_WAKEUP_FROMSTOP_INSTANCE(USARTx) can be used to check whether or not
|
||||||
|
* Wake-up from Stop mode feature is supported by the USARTx instance.
|
||||||
|
* @rmtoll CR3 WUS LL_USART_SetWKUPType
|
||||||
|
* @param USARTx USART Instance
|
||||||
|
* @param Type This parameter can be one of the following values:
|
||||||
|
* @arg @ref LL_USART_WAKEUP_ON_ADDRESS
|
||||||
|
* @arg @ref LL_USART_WAKEUP_ON_STARTBIT
|
||||||
|
* @arg @ref LL_USART_WAKEUP_ON_RXNE
|
||||||
|
* @retval None
|
||||||
|
*/
|
||||||
|
__STATIC_INLINE void LL_USART_SetWKUPType(USART_TypeDef *USARTx, uint32_t Type)
|
||||||
|
{
|
||||||
|
MODIFY_REG(USARTx->CR3, USART_CR3_WUS, Type);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Return event type for Wake UP Interrupt Flag (WUS[1:0] bits)
|
||||||
|
* @note Macro @ref IS_UART_WAKEUP_FROMSTOP_INSTANCE(USARTx) can be used to check whether or not
|
||||||
|
* Wake-up from Stop mode feature is supported by the USARTx instance.
|
||||||
|
* @rmtoll CR3 WUS LL_USART_GetWKUPType
|
||||||
|
* @param USARTx USART Instance
|
||||||
|
* @retval Returned value can be one of the following values:
|
||||||
|
* @arg @ref LL_USART_WAKEUP_ON_ADDRESS
|
||||||
|
* @arg @ref LL_USART_WAKEUP_ON_STARTBIT
|
||||||
|
* @arg @ref LL_USART_WAKEUP_ON_RXNE
|
||||||
|
*/
|
||||||
|
__STATIC_INLINE uint32_t LL_USART_GetWKUPType(USART_TypeDef *USARTx)
|
||||||
|
{
|
||||||
|
return (uint32_t)(READ_BIT(USARTx->CR3, USART_CR3_WUS));
|
||||||
|
}
|
||||||
|
|
||||||
|
#endif /* USART_CR1_UESM */
|
||||||
/**
|
/**
|
||||||
* @brief Configure USART BRR register for achieving expected Baud Rate value.
|
* @brief Configure USART BRR register for achieving expected Baud Rate value.
|
||||||
* @note Compute and set USARTDIV value in BRR Register (full BRR content)
|
* @note Compute and set USARTDIV value in BRR Register (full BRR content)
|
||||||
|
@ -1480,7 +1614,7 @@ __STATIC_INLINE uint32_t LL_USART_IsEnabledOverrunDetect(USART_TypeDef *USARTx)
|
||||||
__STATIC_INLINE void LL_USART_SetBaudRate(USART_TypeDef *USARTx, uint32_t PeriphClk, uint32_t OverSampling,
|
__STATIC_INLINE void LL_USART_SetBaudRate(USART_TypeDef *USARTx, uint32_t PeriphClk, uint32_t OverSampling,
|
||||||
uint32_t BaudRate)
|
uint32_t BaudRate)
|
||||||
{
|
{
|
||||||
register uint32_t usartdiv;
|
uint32_t usartdiv;
|
||||||
register uint32_t brrtemp;
|
register uint32_t brrtemp;
|
||||||
|
|
||||||
if (OverSampling == LL_USART_OVERSAMPLING_8)
|
if (OverSampling == LL_USART_OVERSAMPLING_8)
|
||||||
|
@ -2161,7 +2295,8 @@ __STATIC_INLINE void LL_USART_ConfigAsyncMode(USART_TypeDef *USARTx)
|
||||||
{
|
{
|
||||||
/* In Asynchronous mode, the following bits must be kept cleared:
|
/* In Asynchronous mode, the following bits must be kept cleared:
|
||||||
- LINEN, CLKEN bits in the USART_CR2 register,
|
- LINEN, CLKEN bits in the USART_CR2 register,
|
||||||
- SCEN, IREN and HDSEL bits in the USART_CR3 register.*/
|
- SCEN, IREN and HDSEL bits in the USART_CR3 register.
|
||||||
|
*/
|
||||||
CLEAR_BIT(USARTx->CR2, (USART_CR2_LINEN | USART_CR2_CLKEN));
|
CLEAR_BIT(USARTx->CR2, (USART_CR2_LINEN | USART_CR2_CLKEN));
|
||||||
CLEAR_BIT(USARTx->CR3, (USART_CR3_SCEN | USART_CR3_IREN | USART_CR3_HDSEL));
|
CLEAR_BIT(USARTx->CR3, (USART_CR3_SCEN | USART_CR3_IREN | USART_CR3_HDSEL));
|
||||||
}
|
}
|
||||||
|
@ -2197,7 +2332,8 @@ __STATIC_INLINE void LL_USART_ConfigSyncMode(USART_TypeDef *USARTx)
|
||||||
{
|
{
|
||||||
/* In Synchronous mode, the following bits must be kept cleared:
|
/* In Synchronous mode, the following bits must be kept cleared:
|
||||||
- LINEN bit in the USART_CR2 register,
|
- LINEN bit in the USART_CR2 register,
|
||||||
- SCEN, IREN and HDSEL bits in the USART_CR3 register.*/
|
- SCEN, IREN and HDSEL bits in the USART_CR3 register.
|
||||||
|
*/
|
||||||
CLEAR_BIT(USARTx->CR2, (USART_CR2_LINEN));
|
CLEAR_BIT(USARTx->CR2, (USART_CR2_LINEN));
|
||||||
CLEAR_BIT(USARTx->CR3, (USART_CR3_SCEN | USART_CR3_IREN | USART_CR3_HDSEL));
|
CLEAR_BIT(USARTx->CR3, (USART_CR3_SCEN | USART_CR3_IREN | USART_CR3_HDSEL));
|
||||||
/* set the UART/USART in Synchronous mode */
|
/* set the UART/USART in Synchronous mode */
|
||||||
|
@ -2237,7 +2373,8 @@ __STATIC_INLINE void LL_USART_ConfigLINMode(USART_TypeDef *USARTx)
|
||||||
{
|
{
|
||||||
/* In LIN mode, the following bits must be kept cleared:
|
/* In LIN mode, the following bits must be kept cleared:
|
||||||
- STOP and CLKEN bits in the USART_CR2 register,
|
- STOP and CLKEN bits in the USART_CR2 register,
|
||||||
- IREN, SCEN and HDSEL bits in the USART_CR3 register.*/
|
- IREN, SCEN and HDSEL bits in the USART_CR3 register.
|
||||||
|
*/
|
||||||
CLEAR_BIT(USARTx->CR2, (USART_CR2_CLKEN | USART_CR2_STOP));
|
CLEAR_BIT(USARTx->CR2, (USART_CR2_CLKEN | USART_CR2_STOP));
|
||||||
CLEAR_BIT(USARTx->CR3, (USART_CR3_IREN | USART_CR3_SCEN | USART_CR3_HDSEL));
|
CLEAR_BIT(USARTx->CR3, (USART_CR3_IREN | USART_CR3_SCEN | USART_CR3_HDSEL));
|
||||||
/* Set the UART/USART in LIN mode */
|
/* Set the UART/USART in LIN mode */
|
||||||
|
@ -2275,7 +2412,8 @@ __STATIC_INLINE void LL_USART_ConfigHalfDuplexMode(USART_TypeDef *USARTx)
|
||||||
{
|
{
|
||||||
/* In Half Duplex mode, the following bits must be kept cleared:
|
/* In Half Duplex mode, the following bits must be kept cleared:
|
||||||
- LINEN and CLKEN bits in the USART_CR2 register,
|
- LINEN and CLKEN bits in the USART_CR2 register,
|
||||||
- SCEN and IREN bits in the USART_CR3 register.*/
|
- SCEN and IREN bits in the USART_CR3 register.
|
||||||
|
*/
|
||||||
CLEAR_BIT(USARTx->CR2, (USART_CR2_LINEN | USART_CR2_CLKEN));
|
CLEAR_BIT(USARTx->CR2, (USART_CR2_LINEN | USART_CR2_CLKEN));
|
||||||
CLEAR_BIT(USARTx->CR3, (USART_CR3_SCEN | USART_CR3_IREN));
|
CLEAR_BIT(USARTx->CR3, (USART_CR3_SCEN | USART_CR3_IREN));
|
||||||
/* set the UART/USART in Half Duplex mode */
|
/* set the UART/USART in Half Duplex mode */
|
||||||
|
@ -2315,7 +2453,8 @@ __STATIC_INLINE void LL_USART_ConfigSmartcardMode(USART_TypeDef *USARTx)
|
||||||
{
|
{
|
||||||
/* In Smartcard mode, the following bits must be kept cleared:
|
/* In Smartcard mode, the following bits must be kept cleared:
|
||||||
- LINEN bit in the USART_CR2 register,
|
- LINEN bit in the USART_CR2 register,
|
||||||
- IREN and HDSEL bits in the USART_CR3 register.*/
|
- IREN and HDSEL bits in the USART_CR3 register.
|
||||||
|
*/
|
||||||
CLEAR_BIT(USARTx->CR2, (USART_CR2_LINEN));
|
CLEAR_BIT(USARTx->CR2, (USART_CR2_LINEN));
|
||||||
CLEAR_BIT(USARTx->CR3, (USART_CR3_IREN | USART_CR3_HDSEL));
|
CLEAR_BIT(USARTx->CR3, (USART_CR3_IREN | USART_CR3_HDSEL));
|
||||||
/* Configure Stop bits to 1.5 bits */
|
/* Configure Stop bits to 1.5 bits */
|
||||||
|
@ -2358,7 +2497,8 @@ __STATIC_INLINE void LL_USART_ConfigIrdaMode(USART_TypeDef *USARTx)
|
||||||
{
|
{
|
||||||
/* In IRDA mode, the following bits must be kept cleared:
|
/* In IRDA mode, the following bits must be kept cleared:
|
||||||
- LINEN, STOP and CLKEN bits in the USART_CR2 register,
|
- LINEN, STOP and CLKEN bits in the USART_CR2 register,
|
||||||
- SCEN and HDSEL bits in the USART_CR3 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->CR2, (USART_CR2_LINEN | USART_CR2_CLKEN | USART_CR2_STOP));
|
||||||
CLEAR_BIT(USARTx->CR3, (USART_CR3_SCEN | USART_CR3_HDSEL));
|
CLEAR_BIT(USARTx->CR3, (USART_CR3_SCEN | USART_CR3_HDSEL));
|
||||||
/* set the UART/USART in IRDA mode */
|
/* set the UART/USART in IRDA mode */
|
||||||
|
@ -2396,7 +2536,8 @@ __STATIC_INLINE void LL_USART_ConfigMultiProcessMode(USART_TypeDef *USARTx)
|
||||||
{
|
{
|
||||||
/* In Multi Processor mode, the following bits must be kept cleared:
|
/* In Multi Processor mode, the following bits must be kept cleared:
|
||||||
- LINEN and CLKEN bits in the USART_CR2 register,
|
- LINEN and CLKEN bits in the USART_CR2 register,
|
||||||
- IREN, SCEN and HDSEL bits in the USART_CR3 register.*/
|
- IREN, SCEN and HDSEL bits in the USART_CR3 register.
|
||||||
|
*/
|
||||||
CLEAR_BIT(USARTx->CR2, (USART_CR2_LINEN | USART_CR2_CLKEN));
|
CLEAR_BIT(USARTx->CR2, (USART_CR2_LINEN | USART_CR2_CLKEN));
|
||||||
CLEAR_BIT(USARTx->CR3, (USART_CR3_SCEN | USART_CR3_HDSEL | USART_CR3_IREN));
|
CLEAR_BIT(USARTx->CR3, (USART_CR3_SCEN | USART_CR3_HDSEL | USART_CR3_IREN));
|
||||||
}
|
}
|
||||||
|
@ -2630,6 +2771,21 @@ __STATIC_INLINE uint32_t LL_USART_IsActiveFlag_RWU(USART_TypeDef *USARTx)
|
||||||
return ((READ_BIT(USARTx->ISR, USART_ISR_RWU) == (USART_ISR_RWU)) ? 1UL : 0UL);
|
return ((READ_BIT(USARTx->ISR, USART_ISR_RWU) == (USART_ISR_RWU)) ? 1UL : 0UL);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#if defined(USART_CR1_UESM)
|
||||||
|
/**
|
||||||
|
* @brief Check if the USART Wake Up from stop mode Flag is set or not
|
||||||
|
* @note Macro @ref IS_UART_WAKEUP_FROMSTOP_INSTANCE(USARTx) can be used to check whether or not
|
||||||
|
* Wake-up from Stop mode feature is supported by the USARTx instance.
|
||||||
|
* @rmtoll ISR WUF LL_USART_IsActiveFlag_WKUP
|
||||||
|
* @param USARTx USART Instance
|
||||||
|
* @retval State of bit (1 or 0).
|
||||||
|
*/
|
||||||
|
__STATIC_INLINE uint32_t LL_USART_IsActiveFlag_WKUP(USART_TypeDef *USARTx)
|
||||||
|
{
|
||||||
|
return ((READ_BIT(USARTx->ISR, USART_ISR_WUF) == (USART_ISR_WUF)) ? 1UL : 0UL);
|
||||||
|
}
|
||||||
|
|
||||||
|
#endif /* USART_CR1_UESM */
|
||||||
/**
|
/**
|
||||||
* @brief Check if the USART Transmit Enable Acknowledge Flag is set or not
|
* @brief Check if the USART Transmit Enable Acknowledge Flag is set or not
|
||||||
* @rmtoll ISR TEACK LL_USART_IsActiveFlag_TEACK
|
* @rmtoll ISR TEACK LL_USART_IsActiveFlag_TEACK
|
||||||
|
@ -2641,6 +2797,19 @@ __STATIC_INLINE uint32_t LL_USART_IsActiveFlag_TEACK(USART_TypeDef *USARTx)
|
||||||
return ((READ_BIT(USARTx->ISR, USART_ISR_TEACK) == (USART_ISR_TEACK)) ? 1UL : 0UL);
|
return ((READ_BIT(USARTx->ISR, USART_ISR_TEACK) == (USART_ISR_TEACK)) ? 1UL : 0UL);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#if defined(USART_ISR_REACK)
|
||||||
|
/**
|
||||||
|
* @brief Check if the USART Receive Enable Acknowledge Flag is set or not
|
||||||
|
* @rmtoll ISR REACK LL_USART_IsActiveFlag_REACK
|
||||||
|
* @param USARTx USART Instance
|
||||||
|
* @retval State of bit (1 or 0).
|
||||||
|
*/
|
||||||
|
__STATIC_INLINE uint32_t LL_USART_IsActiveFlag_REACK(USART_TypeDef *USARTx)
|
||||||
|
{
|
||||||
|
return ((READ_BIT(USARTx->ISR, USART_ISR_REACK) == (USART_ISR_REACK)) ? 1UL : 0UL);
|
||||||
|
}
|
||||||
|
|
||||||
|
#endif/* USART_ISR_REACK */
|
||||||
#if defined(USART_TCBGT_SUPPORT)
|
#if defined(USART_TCBGT_SUPPORT)
|
||||||
/* Function available only on devices supporting Transmit Complete before Guard Time feature */
|
/* Function available only on devices supporting Transmit Complete before Guard Time feature */
|
||||||
/**
|
/**
|
||||||
|
@ -2653,8 +2822,8 @@ __STATIC_INLINE uint32_t LL_USART_IsActiveFlag_TCBGT(USART_TypeDef *USARTx)
|
||||||
{
|
{
|
||||||
return ((READ_BIT(USARTx->ISR, USART_ISR_TCBGT) == (USART_ISR_TCBGT)) ? 1UL : 0UL);
|
return ((READ_BIT(USARTx->ISR, USART_ISR_TCBGT) == (USART_ISR_TCBGT)) ? 1UL : 0UL);
|
||||||
}
|
}
|
||||||
#endif
|
|
||||||
|
|
||||||
|
#endif /* USART_TCBGT_SUPPORT */
|
||||||
/**
|
/**
|
||||||
* @brief Clear Parity Error Flag
|
* @brief Clear Parity Error Flag
|
||||||
* @rmtoll ICR PECF LL_USART_ClearFlag_PE
|
* @rmtoll ICR PECF LL_USART_ClearFlag_PE
|
||||||
|
@ -2733,7 +2902,7 @@ __STATIC_INLINE void LL_USART_ClearFlag_TCBGT(USART_TypeDef *USARTx)
|
||||||
{
|
{
|
||||||
WRITE_REG(USARTx->ICR, USART_ICR_TCBGTCF);
|
WRITE_REG(USARTx->ICR, USART_ICR_TCBGTCF);
|
||||||
}
|
}
|
||||||
#endif
|
#endif /* USART_TCBGT_SUPPORT */
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief Clear LIN Break Detection Flag
|
* @brief Clear LIN Break Detection Flag
|
||||||
|
@ -2796,6 +2965,21 @@ __STATIC_INLINE void LL_USART_ClearFlag_CM(USART_TypeDef *USARTx)
|
||||||
WRITE_REG(USARTx->ICR, USART_ICR_CMCF);
|
WRITE_REG(USARTx->ICR, USART_ICR_CMCF);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#if defined(USART_CR1_UESM)
|
||||||
|
/**
|
||||||
|
* @brief Clear Wake Up from stop mode Flag
|
||||||
|
* @note Macro @ref IS_UART_WAKEUP_FROMSTOP_INSTANCE(USARTx) can be used to check whether or not
|
||||||
|
* Wake-up from Stop mode feature is supported by the USARTx instance.
|
||||||
|
* @rmtoll ICR WUCF LL_USART_ClearFlag_WKUP
|
||||||
|
* @param USARTx USART Instance
|
||||||
|
* @retval None
|
||||||
|
*/
|
||||||
|
__STATIC_INLINE void LL_USART_ClearFlag_WKUP(USART_TypeDef *USARTx)
|
||||||
|
{
|
||||||
|
WRITE_REG(USARTx->ICR, USART_ICR_WUCF);
|
||||||
|
}
|
||||||
|
|
||||||
|
#endif /* USART_CR1_UESM */
|
||||||
/**
|
/**
|
||||||
* @}
|
* @}
|
||||||
*/
|
*/
|
||||||
|
@ -2935,6 +3119,21 @@ __STATIC_INLINE void LL_USART_EnableIT_CTS(USART_TypeDef *USARTx)
|
||||||
SET_BIT(USARTx->CR3, USART_CR3_CTSIE);
|
SET_BIT(USARTx->CR3, USART_CR3_CTSIE);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#if defined(USART_CR1_UESM)
|
||||||
|
/**
|
||||||
|
* @brief Enable Wake Up from Stop Mode Interrupt
|
||||||
|
* @note Macro @ref IS_UART_WAKEUP_FROMSTOP_INSTANCE(USARTx) can be used to check whether or not
|
||||||
|
* Wake-up from Stop mode feature is supported by the USARTx instance.
|
||||||
|
* @rmtoll CR3 WUFIE LL_USART_EnableIT_WKUP
|
||||||
|
* @param USARTx USART Instance
|
||||||
|
* @retval None
|
||||||
|
*/
|
||||||
|
__STATIC_INLINE void LL_USART_EnableIT_WKUP(USART_TypeDef *USARTx)
|
||||||
|
{
|
||||||
|
SET_BIT(USARTx->CR3, USART_CR3_WUFIE);
|
||||||
|
}
|
||||||
|
|
||||||
|
#endif /* USART_CR1_UESM */
|
||||||
#if defined(USART_TCBGT_SUPPORT)
|
#if defined(USART_TCBGT_SUPPORT)
|
||||||
/* Function available only on devices supporting Transmit Complete before Guard Time feature */
|
/* Function available only on devices supporting Transmit Complete before Guard Time feature */
|
||||||
/**
|
/**
|
||||||
|
@ -2949,7 +3148,7 @@ __STATIC_INLINE void LL_USART_EnableIT_TCBGT(USART_TypeDef *USARTx)
|
||||||
{
|
{
|
||||||
SET_BIT(USARTx->CR3, USART_CR3_TCBGTIE);
|
SET_BIT(USARTx->CR3, USART_CR3_TCBGTIE);
|
||||||
}
|
}
|
||||||
#endif
|
#endif /* USART_TCBGT_SUPPORT */
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief Disable IDLE Interrupt
|
* @brief Disable IDLE Interrupt
|
||||||
|
@ -3082,6 +3281,21 @@ __STATIC_INLINE void LL_USART_DisableIT_CTS(USART_TypeDef *USARTx)
|
||||||
CLEAR_BIT(USARTx->CR3, USART_CR3_CTSIE);
|
CLEAR_BIT(USARTx->CR3, USART_CR3_CTSIE);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#if defined(USART_CR1_UESM)
|
||||||
|
/**
|
||||||
|
* @brief Disable Wake Up from Stop Mode Interrupt
|
||||||
|
* @note Macro @ref IS_UART_WAKEUP_FROMSTOP_INSTANCE(USARTx) can be used to check whether or not
|
||||||
|
* Wake-up from Stop mode feature is supported by the USARTx instance.
|
||||||
|
* @rmtoll CR3 WUFIE LL_USART_DisableIT_WKUP
|
||||||
|
* @param USARTx USART Instance
|
||||||
|
* @retval None
|
||||||
|
*/
|
||||||
|
__STATIC_INLINE void LL_USART_DisableIT_WKUP(USART_TypeDef *USARTx)
|
||||||
|
{
|
||||||
|
CLEAR_BIT(USARTx->CR3, USART_CR3_WUFIE);
|
||||||
|
}
|
||||||
|
|
||||||
|
#endif /* USART_CR1_UESM */
|
||||||
#if defined(USART_TCBGT_SUPPORT)
|
#if defined(USART_TCBGT_SUPPORT)
|
||||||
/* Function available only on devices supporting Transmit Complete before Guard Time feature */
|
/* Function available only on devices supporting Transmit Complete before Guard Time feature */
|
||||||
/**
|
/**
|
||||||
|
@ -3096,7 +3310,7 @@ __STATIC_INLINE void LL_USART_DisableIT_TCBGT(USART_TypeDef *USARTx)
|
||||||
{
|
{
|
||||||
CLEAR_BIT(USARTx->CR3, USART_CR3_TCBGTIE);
|
CLEAR_BIT(USARTx->CR3, USART_CR3_TCBGTIE);
|
||||||
}
|
}
|
||||||
#endif
|
#endif /* USART_TCBGT_SUPPORT */
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief Check if the USART IDLE Interrupt source is enabled or disabled.
|
* @brief Check if the USART IDLE Interrupt source is enabled or disabled.
|
||||||
|
@ -3225,6 +3439,21 @@ __STATIC_INLINE uint32_t LL_USART_IsEnabledIT_CTS(USART_TypeDef *USARTx)
|
||||||
return ((READ_BIT(USARTx->CR3, USART_CR3_CTSIE) == (USART_CR3_CTSIE)) ? 1UL : 0UL);
|
return ((READ_BIT(USARTx->CR3, USART_CR3_CTSIE) == (USART_CR3_CTSIE)) ? 1UL : 0UL);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#if defined(USART_CR1_UESM)
|
||||||
|
/**
|
||||||
|
* @brief Check if the USART Wake Up from Stop Mode Interrupt is enabled or disabled.
|
||||||
|
* @note Macro @ref IS_UART_WAKEUP_FROMSTOP_INSTANCE(USARTx) can be used to check whether or not
|
||||||
|
* Wake-up from Stop mode feature is supported by the USARTx instance.
|
||||||
|
* @rmtoll CR3 WUFIE LL_USART_IsEnabledIT_WKUP
|
||||||
|
* @param USARTx USART Instance
|
||||||
|
* @retval State of bit (1 or 0).
|
||||||
|
*/
|
||||||
|
__STATIC_INLINE uint32_t LL_USART_IsEnabledIT_WKUP(USART_TypeDef *USARTx)
|
||||||
|
{
|
||||||
|
return ((READ_BIT(USARTx->CR3, USART_CR3_WUFIE) == (USART_CR3_WUFIE)) ? 1UL : 0UL);
|
||||||
|
}
|
||||||
|
|
||||||
|
#endif /* USART_CR1_UESM */
|
||||||
#if defined(USART_TCBGT_SUPPORT)
|
#if defined(USART_TCBGT_SUPPORT)
|
||||||
/* Function available only on devices supporting Transmit Complete before Guard Time feature */
|
/* Function available only on devices supporting Transmit Complete before Guard Time feature */
|
||||||
/**
|
/**
|
||||||
|
@ -3239,7 +3468,7 @@ __STATIC_INLINE uint32_t LL_USART_IsEnabledIT_TCBGT(USART_TypeDef *USARTx)
|
||||||
{
|
{
|
||||||
return ((READ_BIT(USARTx->CR3, USART_CR3_TCBGTIE) == (USART_CR3_TCBGTIE)) ? 1UL : 0UL);
|
return ((READ_BIT(USARTx->CR3, USART_CR3_TCBGTIE) == (USART_CR3_TCBGTIE)) ? 1UL : 0UL);
|
||||||
}
|
}
|
||||||
#endif
|
#endif /* USART_TCBGT_SUPPORT */
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @}
|
* @}
|
||||||
|
@ -3365,12 +3594,12 @@ __STATIC_INLINE uint32_t LL_USART_DMA_GetRegAddr(USART_TypeDef *USARTx, uint32_t
|
||||||
if (Direction == LL_USART_DMA_REG_DATA_TRANSMIT)
|
if (Direction == LL_USART_DMA_REG_DATA_TRANSMIT)
|
||||||
{
|
{
|
||||||
/* return address of TDR register */
|
/* return address of TDR register */
|
||||||
data_reg_addr = (uint32_t) & (USARTx->TDR);
|
data_reg_addr = (uint32_t) &(USARTx->TDR);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
/* return address of RDR register */
|
/* return address of RDR register */
|
||||||
data_reg_addr = (uint32_t) & (USARTx->RDR);
|
data_reg_addr = (uint32_t) &(USARTx->RDR);
|
||||||
}
|
}
|
||||||
|
|
||||||
return data_reg_addr;
|
return data_reg_addr;
|
||||||
|
@ -3392,7 +3621,7 @@ __STATIC_INLINE uint32_t LL_USART_DMA_GetRegAddr(USART_TypeDef *USARTx, uint32_t
|
||||||
*/
|
*/
|
||||||
__STATIC_INLINE uint8_t LL_USART_ReceiveData8(USART_TypeDef *USARTx)
|
__STATIC_INLINE uint8_t LL_USART_ReceiveData8(USART_TypeDef *USARTx)
|
||||||
{
|
{
|
||||||
return (uint8_t)(READ_BIT(USARTx->RDR, USART_RDR_RDR));
|
return (uint8_t)(READ_BIT(USARTx->RDR, USART_RDR_RDR) & 0xFFU);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
|
@ -155,7 +155,7 @@ typedef struct
|
||||||
|
|
||||||
typedef struct
|
typedef struct
|
||||||
{
|
{
|
||||||
uint8_t dev_addr ; /*!< USB device address.
|
uint8_t dev_addr; /*!< USB device address.
|
||||||
This parameter must be a number between Min_Data = 1 and Max_Data = 255 */
|
This parameter must be a number between Min_Data = 1 and Max_Data = 255 */
|
||||||
|
|
||||||
uint8_t ch_num; /*!< Host channel number.
|
uint8_t ch_num; /*!< Host channel number.
|
||||||
|
@ -199,10 +199,10 @@ typedef struct
|
||||||
|
|
||||||
uint32_t ErrCnt; /*!< Host channel error count.*/
|
uint32_t ErrCnt; /*!< Host channel error count.*/
|
||||||
|
|
||||||
USB_OTG_URBStateTypeDef urb_state; /*!< URB state.
|
USB_OTG_URBStateTypeDef urb_state; /*!< URB state.
|
||||||
This parameter can be any value of @ref USB_OTG_URBStateTypeDef */
|
This parameter can be any value of @ref USB_OTG_URBStateTypeDef */
|
||||||
|
|
||||||
USB_OTG_HCStateTypeDef state; /*!< Host Channel state.
|
USB_OTG_HCStateTypeDef state; /*!< Host Channel state.
|
||||||
This parameter can be any value of @ref USB_OTG_HCStateTypeDef */
|
This parameter can be any value of @ref USB_OTG_HCStateTypeDef */
|
||||||
} USB_OTG_HCTypeDef;
|
} USB_OTG_HCTypeDef;
|
||||||
#endif /* defined (USB_OTG_FS) || defined (USB_OTG_HS) */
|
#endif /* defined (USB_OTG_FS) || defined (USB_OTG_HS) */
|
||||||
|
@ -234,6 +234,18 @@ typedef struct
|
||||||
* @}
|
* @}
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
/** @defgroup USB_LL Device Speed
|
||||||
|
* @{
|
||||||
|
*/
|
||||||
|
#define USBD_HS_SPEED 0U
|
||||||
|
#define USBD_HSINFS_SPEED 1U
|
||||||
|
#define USBH_HS_SPEED 0U
|
||||||
|
#define USBD_FS_SPEED 2U
|
||||||
|
#define USBH_FSLS_SPEED 1U
|
||||||
|
/**
|
||||||
|
* @}
|
||||||
|
*/
|
||||||
|
|
||||||
/** @defgroup USB_LL_Core_Speed USB Low Layer Core Speed
|
/** @defgroup USB_LL_Core_Speed USB Low Layer Core Speed
|
||||||
* @{
|
* @{
|
||||||
*/
|
*/
|
||||||
|
@ -252,7 +264,7 @@ typedef struct
|
||||||
#define USB_OTG_HS_EMBEDDED_PHY 3U
|
#define USB_OTG_HS_EMBEDDED_PHY 3U
|
||||||
|
|
||||||
#if !defined (USB_HS_PHYC_TUNE_VALUE)
|
#if !defined (USB_HS_PHYC_TUNE_VALUE)
|
||||||
#define USB_HS_PHYC_TUNE_VALUE 0x00000F13U /*!< Value of USB HS PHY Tune */
|
#define USB_HS_PHYC_TUNE_VALUE 0x00000F13U /*!< Value of USB HS PHY Tune */
|
||||||
#endif /* USB_HS_PHYC_TUNE_VALUE */
|
#endif /* USB_HS_PHYC_TUNE_VALUE */
|
||||||
/**
|
/**
|
||||||
* @}
|
* @}
|
||||||
|
@ -262,11 +274,11 @@ typedef struct
|
||||||
* @{
|
* @{
|
||||||
*/
|
*/
|
||||||
#ifndef USBD_HS_TRDT_VALUE
|
#ifndef USBD_HS_TRDT_VALUE
|
||||||
#define USBD_HS_TRDT_VALUE 9U
|
#define USBD_HS_TRDT_VALUE 9U
|
||||||
#endif /* USBD_HS_TRDT_VALUE */
|
#endif /* USBD_HS_TRDT_VALUE */
|
||||||
#ifndef USBD_FS_TRDT_VALUE
|
#ifndef USBD_FS_TRDT_VALUE
|
||||||
#define USBD_FS_TRDT_VALUE 5U
|
#define USBD_FS_TRDT_VALUE 5U
|
||||||
#define USBD_DEFAULT_TRDT_VALUE 9U
|
#define USBD_DEFAULT_TRDT_VALUE 9U
|
||||||
#endif /* USBD_HS_TRDT_VALUE */
|
#endif /* USBD_HS_TRDT_VALUE */
|
||||||
/**
|
/**
|
||||||
* @}
|
* @}
|
||||||
|
@ -275,9 +287,9 @@ typedef struct
|
||||||
/** @defgroup USB_LL_Core_MPS USB Low Layer Core MPS
|
/** @defgroup USB_LL_Core_MPS USB Low Layer Core MPS
|
||||||
* @{
|
* @{
|
||||||
*/
|
*/
|
||||||
#define USB_OTG_HS_MAX_PACKET_SIZE 512U
|
#define USB_OTG_HS_MAX_PACKET_SIZE 512U
|
||||||
#define USB_OTG_FS_MAX_PACKET_SIZE 64U
|
#define USB_OTG_FS_MAX_PACKET_SIZE 64U
|
||||||
#define USB_OTG_MAX_EP0_SIZE 64U
|
#define USB_OTG_MAX_EP0_SIZE 64U
|
||||||
/**
|
/**
|
||||||
* @}
|
* @}
|
||||||
*/
|
*/
|
||||||
|
@ -287,7 +299,6 @@ typedef struct
|
||||||
*/
|
*/
|
||||||
#define DSTS_ENUMSPD_HS_PHY_30MHZ_OR_60MHZ (0U << 1)
|
#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_30MHZ_OR_60MHZ (1U << 1)
|
||||||
#define DSTS_ENUMSPD_LS_PHY_6MHZ (2U << 1)
|
|
||||||
#define DSTS_ENUMSPD_FS_PHY_48MHZ (3U << 1)
|
#define DSTS_ENUMSPD_FS_PHY_48MHZ (3U << 1)
|
||||||
/**
|
/**
|
||||||
* @}
|
* @}
|
||||||
|
@ -397,7 +408,7 @@ typedef struct
|
||||||
#define USBPHYC ((USBPHYC_GlobalTypeDef *)((uint32_t )USB_PHY_HS_CONTROLLER_BASE))
|
#define USBPHYC ((USBPHYC_GlobalTypeDef *)((uint32_t )USB_PHY_HS_CONTROLLER_BASE))
|
||||||
#endif /* defined (USB_OTG_FS) || defined (USB_OTG_HS) */
|
#endif /* defined (USB_OTG_FS) || defined (USB_OTG_HS) */
|
||||||
|
|
||||||
#define EP_ADDR_MSK 0xFU
|
#define EP_ADDR_MSK 0xFU
|
||||||
/**
|
/**
|
||||||
* @}
|
* @}
|
||||||
*/
|
*/
|
||||||
|
@ -462,13 +473,9 @@ HAL_StatusTypeDef USB_ResetPort(USB_OTG_GlobalTypeDef *USBx);
|
||||||
HAL_StatusTypeDef USB_DriveVbus(USB_OTG_GlobalTypeDef *USBx, uint8_t state);
|
HAL_StatusTypeDef USB_DriveVbus(USB_OTG_GlobalTypeDef *USBx, uint8_t state);
|
||||||
uint32_t USB_GetHostSpeed(USB_OTG_GlobalTypeDef *USBx);
|
uint32_t USB_GetHostSpeed(USB_OTG_GlobalTypeDef *USBx);
|
||||||
uint32_t USB_GetCurrentFrame(USB_OTG_GlobalTypeDef *USBx);
|
uint32_t USB_GetCurrentFrame(USB_OTG_GlobalTypeDef *USBx);
|
||||||
HAL_StatusTypeDef USB_HC_Init(USB_OTG_GlobalTypeDef *USBx,
|
HAL_StatusTypeDef USB_HC_Init(USB_OTG_GlobalTypeDef *USBx, uint8_t ch_num,
|
||||||
uint8_t ch_num,
|
uint8_t epnum, uint8_t dev_address, uint8_t speed,
|
||||||
uint8_t epnum,
|
uint8_t ep_type, uint16_t mps);
|
||||||
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, uint8_t dma);
|
HAL_StatusTypeDef USB_HC_StartXfer(USB_OTG_GlobalTypeDef *USBx, USB_OTG_HCTypeDef *hc, uint8_t dma);
|
||||||
uint32_t USB_HC_ReadInterrupt(USB_OTG_GlobalTypeDef *USBx);
|
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_HC_Halt(USB_OTG_GlobalTypeDef *USBx, uint8_t hc_num);
|
||||||
|
|
|
@ -50,11 +50,11 @@
|
||||||
* @{
|
* @{
|
||||||
*/
|
*/
|
||||||
/**
|
/**
|
||||||
* @brief STM32F7xx HAL Driver version number V1.2.7
|
* @brief STM32F7xx HAL Driver version number V1.2.8
|
||||||
*/
|
*/
|
||||||
#define __STM32F7xx_HAL_VERSION_MAIN (0x01) /*!< [31:24] main version */
|
#define __STM32F7xx_HAL_VERSION_MAIN (0x01) /*!< [31:24] main version */
|
||||||
#define __STM32F7xx_HAL_VERSION_SUB1 (0x02) /*!< [23:16] sub1 version */
|
#define __STM32F7xx_HAL_VERSION_SUB1 (0x02) /*!< [23:16] sub1 version */
|
||||||
#define __STM32F7xx_HAL_VERSION_SUB2 (0x07) /*!< [15:8] sub2 version */
|
#define __STM32F7xx_HAL_VERSION_SUB2 (0x08) /*!< [15:8] sub2 version */
|
||||||
#define __STM32F7xx_HAL_VERSION_RC (0x00) /*!< [7:0] release candidate */
|
#define __STM32F7xx_HAL_VERSION_RC (0x00) /*!< [7:0] release candidate */
|
||||||
#define __STM32F7xx_HAL_VERSION ((__STM32F7xx_HAL_VERSION_MAIN << 24)\
|
#define __STM32F7xx_HAL_VERSION ((__STM32F7xx_HAL_VERSION_MAIN << 24)\
|
||||||
|(__STM32F7xx_HAL_VERSION_SUB1 << 16)\
|
|(__STM32F7xx_HAL_VERSION_SUB1 << 16)\
|
||||||
|
@ -319,14 +319,26 @@ uint32_t HAL_GetTickPrio(void)
|
||||||
HAL_StatusTypeDef HAL_SetTickFreq(HAL_TickFreqTypeDef Freq)
|
HAL_StatusTypeDef HAL_SetTickFreq(HAL_TickFreqTypeDef Freq)
|
||||||
{
|
{
|
||||||
HAL_StatusTypeDef status = HAL_OK;
|
HAL_StatusTypeDef status = HAL_OK;
|
||||||
|
HAL_TickFreqTypeDef prevTickFreq;
|
||||||
|
|
||||||
assert_param(IS_TICKFREQ(Freq));
|
assert_param(IS_TICKFREQ(Freq));
|
||||||
|
|
||||||
if (uwTickFreq != Freq)
|
if (uwTickFreq != Freq)
|
||||||
{
|
{
|
||||||
|
/* Back up uwTickFreq frequency */
|
||||||
|
prevTickFreq = uwTickFreq;
|
||||||
|
|
||||||
|
/* Update uwTickFreq global variable used by HAL_InitTick() */
|
||||||
uwTickFreq = Freq;
|
uwTickFreq = Freq;
|
||||||
|
|
||||||
/* Apply the new tick Freq */
|
/* Apply the new tick Freq */
|
||||||
status = HAL_InitTick(uwTickPrio);
|
status = HAL_InitTick(uwTickPrio);
|
||||||
|
|
||||||
|
if (status != HAL_OK)
|
||||||
|
{
|
||||||
|
/* Restore previous tick frequency */
|
||||||
|
uwTickFreq = prevTickFreq;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return status;
|
return status;
|
||||||
|
|
|
@ -1556,7 +1556,7 @@ HAL_StatusTypeDef HAL_CAN_GetRxMessage(CAN_HandleTypeDef *hcan, uint32_t RxFifo,
|
||||||
{
|
{
|
||||||
pHeader->ExtId = ((CAN_RI0R_EXID | CAN_RI0R_STID) & hcan->Instance->sFIFOMailBox[RxFifo].RIR) >> CAN_RI0R_EXID_Pos;
|
pHeader->ExtId = ((CAN_RI0R_EXID | CAN_RI0R_STID) & hcan->Instance->sFIFOMailBox[RxFifo].RIR) >> CAN_RI0R_EXID_Pos;
|
||||||
}
|
}
|
||||||
pHeader->RTR = (CAN_RI0R_RTR & hcan->Instance->sFIFOMailBox[RxFifo].RIR) >> CAN_RI0R_RTR_Pos;
|
pHeader->RTR = (CAN_RI0R_RTR & hcan->Instance->sFIFOMailBox[RxFifo].RIR);
|
||||||
pHeader->DLC = (CAN_RDT0R_DLC & hcan->Instance->sFIFOMailBox[RxFifo].RDTR) >> CAN_RDT0R_DLC_Pos;
|
pHeader->DLC = (CAN_RDT0R_DLC & hcan->Instance->sFIFOMailBox[RxFifo].RDTR) >> CAN_RDT0R_DLC_Pos;
|
||||||
pHeader->FilterMatchIndex = (CAN_RDT0R_FMI & hcan->Instance->sFIFOMailBox[RxFifo].RDTR) >> CAN_RDT0R_FMI_Pos;
|
pHeader->FilterMatchIndex = (CAN_RDT0R_FMI & hcan->Instance->sFIFOMailBox[RxFifo].RDTR) >> CAN_RDT0R_FMI_Pos;
|
||||||
pHeader->Timestamp = (CAN_RDT0R_TIME & hcan->Instance->sFIFOMailBox[RxFifo].RDTR) >> CAN_RDT0R_TIME_Pos;
|
pHeader->Timestamp = (CAN_RDT0R_TIME & hcan->Instance->sFIFOMailBox[RxFifo].RDTR) >> CAN_RDT0R_TIME_Pos;
|
||||||
|
|
|
@ -85,7 +85,6 @@
|
||||||
|
|
||||||
/* Includes ------------------------------------------------------------------*/
|
/* Includes ------------------------------------------------------------------*/
|
||||||
#include "stm32f7xx_hal.h"
|
#include "stm32f7xx_hal.h"
|
||||||
#include "stm32f7xx_hal_exti.h"
|
|
||||||
|
|
||||||
/** @addtogroup STM32F7xx_HAL_Driver
|
/** @addtogroup STM32F7xx_HAL_Driver
|
||||||
* @{
|
* @{
|
||||||
|
@ -105,7 +104,7 @@
|
||||||
#ifdef HAL_EXTI_MODULE_ENABLED
|
#ifdef HAL_EXTI_MODULE_ENABLED
|
||||||
|
|
||||||
/* Private typedef -----------------------------------------------------------*/
|
/* Private typedef -----------------------------------------------------------*/
|
||||||
/* Private defines ------------------------------------------------------------*/
|
/* Private defines -----------------------------------------------------------*/
|
||||||
/** @defgroup EXTI_Private_Constants EXTI Private Constants
|
/** @defgroup EXTI_Private_Constants EXTI Private Constants
|
||||||
* @{
|
* @{
|
||||||
*/
|
*/
|
||||||
|
@ -144,6 +143,8 @@
|
||||||
HAL_StatusTypeDef HAL_EXTI_SetConfigLine(EXTI_HandleTypeDef *hexti, EXTI_ConfigTypeDef *pExtiConfig)
|
HAL_StatusTypeDef HAL_EXTI_SetConfigLine(EXTI_HandleTypeDef *hexti, EXTI_ConfigTypeDef *pExtiConfig)
|
||||||
{
|
{
|
||||||
uint32_t regval;
|
uint32_t regval;
|
||||||
|
uint32_t linepos;
|
||||||
|
uint32_t maskline;
|
||||||
|
|
||||||
/* Check null pointer */
|
/* Check null pointer */
|
||||||
if ((hexti == NULL) || (pExtiConfig == NULL))
|
if ((hexti == NULL) || (pExtiConfig == NULL))
|
||||||
|
@ -154,37 +155,77 @@ HAL_StatusTypeDef HAL_EXTI_SetConfigLine(EXTI_HandleTypeDef *hexti, EXTI_ConfigT
|
||||||
/* Check parameters */
|
/* Check parameters */
|
||||||
assert_param(IS_EXTI_LINE(pExtiConfig->Line));
|
assert_param(IS_EXTI_LINE(pExtiConfig->Line));
|
||||||
assert_param(IS_EXTI_MODE(pExtiConfig->Mode));
|
assert_param(IS_EXTI_MODE(pExtiConfig->Mode));
|
||||||
assert_param(IS_EXTI_TRIGGER(pExtiConfig->Trigger));
|
|
||||||
|
|
||||||
/* Assign line number to handle */
|
/* Assign line number to handle */
|
||||||
hexti->Line = pExtiConfig->Line;
|
hexti->Line = pExtiConfig->Line;
|
||||||
|
|
||||||
/* Clear EXTI line configuration */
|
/* Compute line mask */
|
||||||
EXTI->IMR &= ~pExtiConfig->Line;
|
linepos = (pExtiConfig->Line & EXTI_PIN_MASK);
|
||||||
EXTI->EMR &= ~pExtiConfig->Line;
|
maskline = (1uL << linepos);
|
||||||
|
|
||||||
/* Select the Mode for the selected external interrupts */
|
/* Configure triggers for configurable lines */
|
||||||
regval = (uint32_t)EXTI_BASE;
|
if ((pExtiConfig->Line & EXTI_CONFIG) != 0x00u)
|
||||||
regval += pExtiConfig->Mode;
|
|
||||||
*(__IO uint32_t *) regval |= pExtiConfig->Line;
|
|
||||||
|
|
||||||
/* Clear Rising Falling edge configuration */
|
|
||||||
EXTI->RTSR &= ~pExtiConfig->Line;
|
|
||||||
EXTI->FTSR &= ~pExtiConfig->Line;
|
|
||||||
|
|
||||||
/* Select the trigger for the selected external interrupts */
|
|
||||||
if (pExtiConfig->Trigger == EXTI_TRIGGER_RISING_FALLING)
|
|
||||||
{
|
{
|
||||||
/* Rising Falling edge */
|
assert_param(IS_EXTI_TRIGGER(pExtiConfig->Trigger));
|
||||||
EXTI->RTSR |= pExtiConfig->Line;
|
|
||||||
EXTI->FTSR |= pExtiConfig->Line;
|
/* Configure rising trigger */
|
||||||
|
/* Mask or set line */
|
||||||
|
if ((pExtiConfig->Trigger & EXTI_TRIGGER_RISING) != 0x00u)
|
||||||
|
{
|
||||||
|
EXTI->RTSR |= maskline;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
EXTI->RTSR &= ~maskline;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Configure falling trigger */
|
||||||
|
/* Mask or set line */
|
||||||
|
if ((pExtiConfig->Trigger & EXTI_TRIGGER_FALLING) != 0x00u)
|
||||||
|
{
|
||||||
|
EXTI->FTSR |= maskline;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
EXTI->FTSR &= ~maskline;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/* Configure gpio port selection in case of gpio exti line */
|
||||||
|
if ((pExtiConfig->Line & EXTI_GPIO) == EXTI_GPIO)
|
||||||
|
{
|
||||||
|
assert_param(IS_EXTI_GPIO_PORT(pExtiConfig->GPIOSel));
|
||||||
|
assert_param(IS_EXTI_GPIO_PIN(linepos));
|
||||||
|
|
||||||
|
regval = SYSCFG->EXTICR[linepos >> 2u];
|
||||||
|
regval &= ~(SYSCFG_EXTICR1_EXTI0 << (SYSCFG_EXTICR1_EXTI1_Pos * (linepos & 0x03u)));
|
||||||
|
regval |= (pExtiConfig->GPIOSel << (SYSCFG_EXTICR1_EXTI1_Pos * (linepos & 0x03u)));
|
||||||
|
SYSCFG->EXTICR[linepos >> 2u] = regval;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Configure interrupt mode : read current mode */
|
||||||
|
/* Mask or set line */
|
||||||
|
if ((pExtiConfig->Mode & EXTI_MODE_INTERRUPT) != 0x00u)
|
||||||
|
{
|
||||||
|
EXTI->IMR |= maskline;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
regval = (uint32_t)EXTI_BASE;
|
EXTI->IMR &= ~maskline;
|
||||||
regval += pExtiConfig->Trigger;
|
|
||||||
*(__IO uint32_t *) regval |= pExtiConfig->Line;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* Configure event mode : read current mode */
|
||||||
|
/* Mask or set line */
|
||||||
|
if ((pExtiConfig->Mode & EXTI_MODE_EVENT) != 0x00u)
|
||||||
|
{
|
||||||
|
EXTI->EMR |= maskline;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
EXTI->EMR &= ~maskline;
|
||||||
|
}
|
||||||
|
|
||||||
return HAL_OK;
|
return HAL_OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -196,6 +237,10 @@ HAL_StatusTypeDef HAL_EXTI_SetConfigLine(EXTI_HandleTypeDef *hexti, EXTI_ConfigT
|
||||||
*/
|
*/
|
||||||
HAL_StatusTypeDef HAL_EXTI_GetConfigLine(EXTI_HandleTypeDef *hexti, EXTI_ConfigTypeDef *pExtiConfig)
|
HAL_StatusTypeDef HAL_EXTI_GetConfigLine(EXTI_HandleTypeDef *hexti, EXTI_ConfigTypeDef *pExtiConfig)
|
||||||
{
|
{
|
||||||
|
uint32_t regval;
|
||||||
|
uint32_t linepos;
|
||||||
|
uint32_t maskline;
|
||||||
|
|
||||||
/* Check null pointer */
|
/* Check null pointer */
|
||||||
if ((hexti == NULL) || (pExtiConfig == NULL))
|
if ((hexti == NULL) || (pExtiConfig == NULL))
|
||||||
{
|
{
|
||||||
|
@ -208,41 +253,67 @@ HAL_StatusTypeDef HAL_EXTI_GetConfigLine(EXTI_HandleTypeDef *hexti, EXTI_ConfigT
|
||||||
/* Store handle line number to configuration structure */
|
/* Store handle line number to configuration structure */
|
||||||
pExtiConfig->Line = hexti->Line;
|
pExtiConfig->Line = hexti->Line;
|
||||||
|
|
||||||
/* Get EXTI mode to configiguration structure */
|
/* Compute line mask */
|
||||||
if ((EXTI->IMR & hexti->Line) == hexti->Line)
|
linepos = (pExtiConfig->Line & EXTI_PIN_MASK);
|
||||||
|
maskline = (1uL << linepos);
|
||||||
|
|
||||||
|
/* 1] Get core mode : interrupt */
|
||||||
|
|
||||||
|
/* Check if selected line is enable */
|
||||||
|
if ((EXTI->IMR & maskline) != 0x00u)
|
||||||
{
|
{
|
||||||
pExtiConfig->Mode = EXTI_MODE_INTERRUPT;
|
pExtiConfig->Mode = EXTI_MODE_INTERRUPT;
|
||||||
}
|
}
|
||||||
else if ((EXTI->EMR & hexti->Line) == hexti->Line)
|
|
||||||
{
|
|
||||||
pExtiConfig->Mode = EXTI_MODE_EVENT;
|
|
||||||
}
|
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
/* No MODE selected */
|
pExtiConfig->Mode = EXTI_MODE_NONE;
|
||||||
pExtiConfig->Mode = 0x0Bu;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Get EXTI Trigger to configiguration structure */
|
/* Get event mode */
|
||||||
if ((EXTI->RTSR & hexti->Line) == hexti->Line)
|
/* Check if selected line is enable */
|
||||||
|
if ((EXTI->EMR & maskline) != 0x00u)
|
||||||
{
|
{
|
||||||
if ((EXTI->FTSR & hexti->Line) == hexti->Line)
|
pExtiConfig->Mode |= EXTI_MODE_EVENT;
|
||||||
{
|
}
|
||||||
pExtiConfig->Trigger = EXTI_TRIGGER_RISING_FALLING;
|
|
||||||
}
|
/* 2] Get trigger for configurable lines : rising */
|
||||||
else
|
if ((pExtiConfig->Line & EXTI_CONFIG) != 0x00u)
|
||||||
|
{
|
||||||
|
/* Check if configuration of selected line is enable */
|
||||||
|
if ((EXTI->RTSR & maskline) != 0x00u)
|
||||||
{
|
{
|
||||||
pExtiConfig->Trigger = EXTI_TRIGGER_RISING;
|
pExtiConfig->Trigger = EXTI_TRIGGER_RISING;
|
||||||
}
|
}
|
||||||
}
|
else
|
||||||
else if ((EXTI->FTSR & hexti->Line) == hexti->Line)
|
{
|
||||||
{
|
pExtiConfig->Trigger = EXTI_TRIGGER_NONE;
|
||||||
pExtiConfig->Trigger = EXTI_TRIGGER_FALLING;
|
}
|
||||||
|
|
||||||
|
/* Get falling configuration */
|
||||||
|
/* Check if configuration of selected line is enable */
|
||||||
|
if ((EXTI->FTSR & maskline) != 0x00u)
|
||||||
|
{
|
||||||
|
pExtiConfig->Trigger |= EXTI_TRIGGER_FALLING;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Get Gpio port selection for gpio lines */
|
||||||
|
if ((pExtiConfig->Line & EXTI_GPIO) == EXTI_GPIO)
|
||||||
|
{
|
||||||
|
assert_param(IS_EXTI_GPIO_PIN(linepos));
|
||||||
|
|
||||||
|
regval = SYSCFG->EXTICR[linepos >> 2u];
|
||||||
|
pExtiConfig->GPIOSel = ((regval << (SYSCFG_EXTICR1_EXTI1_Pos * (3uL - (linepos & 0x03u)))) >> 24);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
pExtiConfig->GPIOSel = 0x00u;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
/* No Trigger selected */
|
/* No Trigger selected */
|
||||||
pExtiConfig->Trigger = 0x00u;
|
pExtiConfig->Trigger = EXTI_TRIGGER_NONE;
|
||||||
|
pExtiConfig->GPIOSel = 0x00u;
|
||||||
}
|
}
|
||||||
|
|
||||||
return HAL_OK;
|
return HAL_OK;
|
||||||
|
@ -255,6 +326,10 @@ HAL_StatusTypeDef HAL_EXTI_GetConfigLine(EXTI_HandleTypeDef *hexti, EXTI_ConfigT
|
||||||
*/
|
*/
|
||||||
HAL_StatusTypeDef HAL_EXTI_ClearConfigLine(EXTI_HandleTypeDef *hexti)
|
HAL_StatusTypeDef HAL_EXTI_ClearConfigLine(EXTI_HandleTypeDef *hexti)
|
||||||
{
|
{
|
||||||
|
uint32_t regval;
|
||||||
|
uint32_t linepos;
|
||||||
|
uint32_t maskline;
|
||||||
|
|
||||||
/* Check null pointer */
|
/* Check null pointer */
|
||||||
if (hexti == NULL)
|
if (hexti == NULL)
|
||||||
{
|
{
|
||||||
|
@ -264,15 +339,32 @@ HAL_StatusTypeDef HAL_EXTI_ClearConfigLine(EXTI_HandleTypeDef *hexti)
|
||||||
/* Check the parameter */
|
/* Check the parameter */
|
||||||
assert_param(IS_EXTI_LINE(hexti->Line));
|
assert_param(IS_EXTI_LINE(hexti->Line));
|
||||||
|
|
||||||
|
/* compute line mask */
|
||||||
|
linepos = (hexti->Line & EXTI_PIN_MASK);
|
||||||
|
maskline = (1uL << linepos);
|
||||||
|
|
||||||
/* 1] Clear interrupt mode */
|
/* 1] Clear interrupt mode */
|
||||||
EXTI->IMR = (EXTI->IMR & ~hexti->Line);
|
EXTI->IMR = (EXTI->IMR & ~maskline);
|
||||||
|
|
||||||
/* 2] Clear event mode */
|
/* 2] Clear event mode */
|
||||||
EXTI->EMR = (EXTI->EMR & ~hexti->Line);
|
EXTI->EMR = (EXTI->EMR & ~maskline);
|
||||||
|
|
||||||
/* 3] Clear triggers */
|
/* 3] Clear triggers in case of configurable lines */
|
||||||
EXTI->RTSR = (EXTI->RTSR & ~hexti->Line);
|
if ((hexti->Line & EXTI_CONFIG) != 0x00u)
|
||||||
EXTI->FTSR = (EXTI->FTSR & ~hexti->Line);
|
{
|
||||||
|
EXTI->RTSR = (EXTI->RTSR & ~maskline);
|
||||||
|
EXTI->FTSR = (EXTI->FTSR & ~maskline);
|
||||||
|
|
||||||
|
/* Get Gpio port selection for gpio lines */
|
||||||
|
if ((hexti->Line & EXTI_GPIO) == EXTI_GPIO)
|
||||||
|
{
|
||||||
|
assert_param(IS_EXTI_GPIO_PIN(linepos));
|
||||||
|
|
||||||
|
regval = SYSCFG->EXTICR[linepos >> 2u];
|
||||||
|
regval &= ~(SYSCFG_EXTICR1_EXTI0 << (SYSCFG_EXTICR1_EXTI1_Pos * (linepos & 0x03u)));
|
||||||
|
SYSCFG->EXTICR[linepos >> 2u] = regval;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
return HAL_OK;
|
return HAL_OK;
|
||||||
}
|
}
|
||||||
|
@ -352,17 +444,18 @@ HAL_StatusTypeDef HAL_EXTI_GetHandle(EXTI_HandleTypeDef *hexti, uint32_t ExtiLin
|
||||||
*/
|
*/
|
||||||
void HAL_EXTI_IRQHandler(EXTI_HandleTypeDef *hexti)
|
void HAL_EXTI_IRQHandler(EXTI_HandleTypeDef *hexti)
|
||||||
{
|
{
|
||||||
__IO uint32_t *regaddr;
|
|
||||||
uint32_t regval;
|
uint32_t regval;
|
||||||
|
uint32_t maskline;
|
||||||
|
|
||||||
|
/* Compute line mask */
|
||||||
|
maskline = (1uL << (hexti->Line & EXTI_PIN_MASK));
|
||||||
|
|
||||||
/* Get pending bit */
|
/* Get pending bit */
|
||||||
regaddr = (&EXTI->PR);
|
regval = (EXTI->PR & maskline);
|
||||||
regval = (*regaddr & hexti->Line);
|
|
||||||
|
|
||||||
if (regval != 0x00u)
|
if (regval != 0x00u)
|
||||||
{
|
{
|
||||||
/* Clear pending bit */
|
/* Clear pending bit */
|
||||||
*regaddr = hexti->Line;
|
EXTI->PR = maskline;
|
||||||
|
|
||||||
/* Call callback */
|
/* Call callback */
|
||||||
if (hexti->PendingCallback != NULL)
|
if (hexti->PendingCallback != NULL)
|
||||||
|
@ -383,19 +476,21 @@ void HAL_EXTI_IRQHandler(EXTI_HandleTypeDef *hexti)
|
||||||
*/
|
*/
|
||||||
uint32_t HAL_EXTI_GetPending(EXTI_HandleTypeDef *hexti, uint32_t Edge)
|
uint32_t HAL_EXTI_GetPending(EXTI_HandleTypeDef *hexti, uint32_t Edge)
|
||||||
{
|
{
|
||||||
__IO uint32_t *regaddr;
|
|
||||||
uint32_t regval;
|
uint32_t regval;
|
||||||
|
uint32_t linepos;
|
||||||
|
uint32_t maskline;
|
||||||
|
|
||||||
/* Check parameters */
|
/* Check parameters */
|
||||||
assert_param(IS_EXTI_LINE(hexti->Line));
|
assert_param(IS_EXTI_LINE(hexti->Line));
|
||||||
|
assert_param(IS_EXTI_CONFIG_LINE(hexti->Line));
|
||||||
assert_param(IS_EXTI_PENDING_EDGE(Edge));
|
assert_param(IS_EXTI_PENDING_EDGE(Edge));
|
||||||
|
|
||||||
/* Get pending bit */
|
/* Compute line mask */
|
||||||
regaddr = &EXTI->PR;
|
linepos = (hexti->Line & EXTI_PIN_MASK);
|
||||||
|
maskline = (1uL << linepos);
|
||||||
|
|
||||||
/* return 1 if bit is set else 0 */
|
/* return 1 if bit is set else 0 */
|
||||||
regval = ((*regaddr & hexti->Line) >> POSITION_VAL(hexti->Line));
|
regval = ((EXTI->PR & maskline) >> linepos);
|
||||||
|
|
||||||
return regval;
|
return regval;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -410,12 +505,18 @@ uint32_t HAL_EXTI_GetPending(EXTI_HandleTypeDef *hexti, uint32_t Edge)
|
||||||
*/
|
*/
|
||||||
void HAL_EXTI_ClearPending(EXTI_HandleTypeDef *hexti, uint32_t Edge)
|
void HAL_EXTI_ClearPending(EXTI_HandleTypeDef *hexti, uint32_t Edge)
|
||||||
{
|
{
|
||||||
|
uint32_t maskline;
|
||||||
|
|
||||||
/* Check parameters */
|
/* Check parameters */
|
||||||
assert_param(IS_EXTI_LINE(hexti->Line));
|
assert_param(IS_EXTI_LINE(hexti->Line));
|
||||||
|
assert_param(IS_EXTI_CONFIG_LINE(hexti->Line));
|
||||||
assert_param(IS_EXTI_PENDING_EDGE(Edge));
|
assert_param(IS_EXTI_PENDING_EDGE(Edge));
|
||||||
|
|
||||||
|
/* Compute line mask */
|
||||||
|
maskline = (1uL << (hexti->Line & EXTI_PIN_MASK));
|
||||||
|
|
||||||
/* Clear Pending bit */
|
/* Clear Pending bit */
|
||||||
EXTI->PR = hexti->Line;
|
EXTI->PR = maskline;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -425,10 +526,17 @@ void HAL_EXTI_ClearPending(EXTI_HandleTypeDef *hexti, uint32_t Edge)
|
||||||
*/
|
*/
|
||||||
void HAL_EXTI_GenerateSWI(EXTI_HandleTypeDef *hexti)
|
void HAL_EXTI_GenerateSWI(EXTI_HandleTypeDef *hexti)
|
||||||
{
|
{
|
||||||
|
uint32_t maskline;
|
||||||
|
|
||||||
/* Check parameters */
|
/* Check parameters */
|
||||||
assert_param(IS_EXTI_LINE(hexti->Line));
|
assert_param(IS_EXTI_LINE(hexti->Line));
|
||||||
|
assert_param(IS_EXTI_CONFIG_LINE(hexti->Line));
|
||||||
|
|
||||||
EXTI->SWIER = hexti->Line;
|
/* Compute line mask */
|
||||||
|
maskline = (1uL << (hexti->Line & EXTI_PIN_MASK));
|
||||||
|
|
||||||
|
/* Generate Software interrupt */
|
||||||
|
EXTI->SWIER = maskline;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
|
@ -190,25 +190,6 @@ void HAL_GPIO_Init(GPIO_TypeDef *GPIOx, GPIO_InitTypeDef *GPIO_Init)
|
||||||
if(iocurrent == ioposition)
|
if(iocurrent == ioposition)
|
||||||
{
|
{
|
||||||
/*--------------------- GPIO Mode Configuration ------------------------*/
|
/*--------------------- GPIO Mode Configuration ------------------------*/
|
||||||
/* In case of Alternate function mode selection */
|
|
||||||
if((GPIO_Init->Mode == GPIO_MODE_AF_PP) || (GPIO_Init->Mode == GPIO_MODE_AF_OD))
|
|
||||||
{
|
|
||||||
/* Check the Alternate function parameter */
|
|
||||||
assert_param(IS_GPIO_AF(GPIO_Init->Alternate));
|
|
||||||
|
|
||||||
/* Configure Alternate function mapped with the current IO */
|
|
||||||
temp = GPIOx->AFR[position >> 3];
|
|
||||||
temp &= ~((uint32_t)0xF << ((uint32_t)(position & (uint32_t)0x07) * 4)) ;
|
|
||||||
temp |= ((uint32_t)(GPIO_Init->Alternate) << (((uint32_t)position & (uint32_t)0x07) * 4));
|
|
||||||
GPIOx->AFR[position >> 3] = temp;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Configure IO Direction mode (Input, Output, Alternate or Analog) */
|
|
||||||
temp = GPIOx->MODER;
|
|
||||||
temp &= ~(GPIO_MODER_MODER0 << (position * 2));
|
|
||||||
temp |= ((GPIO_Init->Mode & GPIO_MODE) << (position * 2));
|
|
||||||
GPIOx->MODER = temp;
|
|
||||||
|
|
||||||
/* In case of Output or Alternate function mode selection */
|
/* In case of Output or Alternate function mode selection */
|
||||||
if((GPIO_Init->Mode == GPIO_MODE_OUTPUT_PP) || (GPIO_Init->Mode == GPIO_MODE_AF_PP) ||
|
if((GPIO_Init->Mode == GPIO_MODE_OUTPUT_PP) || (GPIO_Init->Mode == GPIO_MODE_AF_PP) ||
|
||||||
(GPIO_Init->Mode == GPIO_MODE_OUTPUT_OD) || (GPIO_Init->Mode == GPIO_MODE_AF_OD))
|
(GPIO_Init->Mode == GPIO_MODE_OUTPUT_OD) || (GPIO_Init->Mode == GPIO_MODE_AF_OD))
|
||||||
|
@ -234,6 +215,25 @@ void HAL_GPIO_Init(GPIO_TypeDef *GPIOx, GPIO_InitTypeDef *GPIO_Init)
|
||||||
temp |= ((GPIO_Init->Pull) << (position * 2));
|
temp |= ((GPIO_Init->Pull) << (position * 2));
|
||||||
GPIOx->PUPDR = temp;
|
GPIOx->PUPDR = temp;
|
||||||
|
|
||||||
|
/* In case of Alternate function mode selection */
|
||||||
|
if((GPIO_Init->Mode == GPIO_MODE_AF_PP) || (GPIO_Init->Mode == GPIO_MODE_AF_OD))
|
||||||
|
{
|
||||||
|
/* Check the Alternate function parameter */
|
||||||
|
assert_param(IS_GPIO_AF(GPIO_Init->Alternate));
|
||||||
|
|
||||||
|
/* Configure Alternate function mapped with the current IO */
|
||||||
|
temp = GPIOx->AFR[position >> 3];
|
||||||
|
temp &= ~((uint32_t)0xF << ((uint32_t)(position & (uint32_t)0x07) * 4)) ;
|
||||||
|
temp |= ((uint32_t)(GPIO_Init->Alternate) << (((uint32_t)position & (uint32_t)0x07) * 4));
|
||||||
|
GPIOx->AFR[position >> 3] = temp;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Configure IO Direction mode (Input, Output, Alternate or Analog) */
|
||||||
|
temp = GPIOx->MODER;
|
||||||
|
temp &= ~(GPIO_MODER_MODER0 << (position * 2));
|
||||||
|
temp |= ((GPIO_Init->Mode & GPIO_MODE) << (position * 2));
|
||||||
|
GPIOx->MODER = temp;
|
||||||
|
|
||||||
/*--------------------- EXTI Mode Configuration ------------------------*/
|
/*--------------------- EXTI Mode Configuration ------------------------*/
|
||||||
/* Configure the External Interrupt or event for the current IO */
|
/* Configure the External Interrupt or event for the current IO */
|
||||||
if((GPIO_Init->Mode & EXTI_MODE) == EXTI_MODE)
|
if((GPIO_Init->Mode & EXTI_MODE) == EXTI_MODE)
|
||||||
|
@ -300,7 +300,7 @@ void HAL_GPIO_DeInit(GPIO_TypeDef *GPIOx, uint32_t GPIO_Pin)
|
||||||
|
|
||||||
/* Check the parameters */
|
/* Check the parameters */
|
||||||
assert_param(IS_GPIO_ALL_INSTANCE(GPIOx));
|
assert_param(IS_GPIO_ALL_INSTANCE(GPIOx));
|
||||||
|
|
||||||
/* Configure the port pins */
|
/* Configure the port pins */
|
||||||
for(position = 0; position < GPIO_NUMBER; position++)
|
for(position = 0; position < GPIO_NUMBER; position++)
|
||||||
{
|
{
|
||||||
|
@ -316,10 +316,6 @@ void HAL_GPIO_DeInit(GPIO_TypeDef *GPIOx, uint32_t GPIO_Pin)
|
||||||
tmp &= (((uint32_t)0x0F) << (4 * (position & 0x03)));
|
tmp &= (((uint32_t)0x0F) << (4 * (position & 0x03)));
|
||||||
if(tmp == ((uint32_t)(GPIO_GET_INDEX(GPIOx)) << (4 * (position & 0x03))))
|
if(tmp == ((uint32_t)(GPIO_GET_INDEX(GPIOx)) << (4 * (position & 0x03))))
|
||||||
{
|
{
|
||||||
/* Configure the External Interrupt or event for the current IO */
|
|
||||||
tmp = ((uint32_t)0x0F) << (4 * (position & 0x03));
|
|
||||||
SYSCFG->EXTICR[position >> 2] &= ~tmp;
|
|
||||||
|
|
||||||
/* Clear EXTI line configuration */
|
/* Clear EXTI line configuration */
|
||||||
EXTI->IMR &= ~((uint32_t)iocurrent);
|
EXTI->IMR &= ~((uint32_t)iocurrent);
|
||||||
EXTI->EMR &= ~((uint32_t)iocurrent);
|
EXTI->EMR &= ~((uint32_t)iocurrent);
|
||||||
|
@ -327,6 +323,10 @@ void HAL_GPIO_DeInit(GPIO_TypeDef *GPIOx, uint32_t GPIO_Pin)
|
||||||
/* Clear Rising Falling edge configuration */
|
/* Clear Rising Falling edge configuration */
|
||||||
EXTI->RTSR &= ~((uint32_t)iocurrent);
|
EXTI->RTSR &= ~((uint32_t)iocurrent);
|
||||||
EXTI->FTSR &= ~((uint32_t)iocurrent);
|
EXTI->FTSR &= ~((uint32_t)iocurrent);
|
||||||
|
|
||||||
|
/* Configure the External Interrupt or event for the current IO */
|
||||||
|
tmp = ((uint32_t)0x0F) << (4 * (position & 0x03));
|
||||||
|
SYSCFG->EXTICR[position >> 2] &= ~tmp;
|
||||||
}
|
}
|
||||||
/*------------------------- GPIO Mode Configuration --------------------*/
|
/*------------------------- GPIO Mode Configuration --------------------*/
|
||||||
/* Configure IO Direction in Input Floating Mode */
|
/* Configure IO Direction in Input Floating Mode */
|
||||||
|
@ -335,14 +335,14 @@ void HAL_GPIO_DeInit(GPIO_TypeDef *GPIOx, uint32_t GPIO_Pin)
|
||||||
/* Configure the default Alternate Function in current IO */
|
/* Configure the default Alternate Function in current IO */
|
||||||
GPIOx->AFR[position >> 3] &= ~((uint32_t)0xF << ((uint32_t)(position & (uint32_t)0x07) * 4)) ;
|
GPIOx->AFR[position >> 3] &= ~((uint32_t)0xF << ((uint32_t)(position & (uint32_t)0x07) * 4)) ;
|
||||||
|
|
||||||
/* Configure the default value for IO Speed */
|
/* Deactivate the Pull-up and Pull-down resistor for the current IO */
|
||||||
GPIOx->OSPEEDR &= ~(GPIO_OSPEEDER_OSPEEDR0 << (position * 2));
|
GPIOx->PUPDR &= ~(GPIO_PUPDR_PUPDR0 << (position * 2));
|
||||||
|
|
||||||
/* Configure the default value IO Output Type */
|
/* Configure the default value IO Output Type */
|
||||||
GPIOx->OTYPER &= ~(GPIO_OTYPER_OT_0 << position) ;
|
GPIOx->OTYPER &= ~(GPIO_OTYPER_OT_0 << position) ;
|
||||||
|
|
||||||
/* Deactivate the Pull-up and Pull-down resistor for the current IO */
|
/* Configure the default value for IO Speed */
|
||||||
GPIOx->PUPDR &= ~(GPIO_PUPDR_PUPDR0 << (position * 2));
|
GPIOx->OSPEEDR &= ~(GPIO_OSPEEDER_OSPEEDR0 << (position * 2));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -431,13 +431,13 @@ void HAL_GPIO_TogglePin(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin)
|
||||||
/* Check the parameters */
|
/* Check the parameters */
|
||||||
assert_param(IS_GPIO_PIN(GPIO_Pin));
|
assert_param(IS_GPIO_PIN(GPIO_Pin));
|
||||||
|
|
||||||
if ((GPIOx->ODR & GPIO_Pin) == GPIO_Pin)
|
if ((GPIOx->ODR & GPIO_Pin) != 0X00u)
|
||||||
{
|
{
|
||||||
GPIOx->BSRR = (uint32_t)GPIO_Pin << GPIO_NUMBER;
|
GPIOx->BSRR = (uint32_t)GPIO_Pin << GPIO_NUMBER;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
GPIOx->BSRR = GPIO_Pin;
|
GPIOx->BSRR = (uint32_t)GPIO_Pin;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -467,10 +467,11 @@ HAL_StatusTypeDef HAL_GPIO_LockPin(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin)
|
||||||
GPIOx->LCKR = GPIO_Pin;
|
GPIOx->LCKR = GPIO_Pin;
|
||||||
/* Set LCKx bit(s): LCKK='1' + LCK[15-0] */
|
/* Set LCKx bit(s): LCKK='1' + LCK[15-0] */
|
||||||
GPIOx->LCKR = tmp;
|
GPIOx->LCKR = tmp;
|
||||||
/* Read LCKK bit*/
|
/* Read LCKR register. This read is mandatory to complete key lock sequence */
|
||||||
tmp = GPIOx->LCKR;
|
tmp = GPIOx->LCKR;
|
||||||
|
|
||||||
if((GPIOx->LCKR & GPIO_LCKR_LCKK) != RESET)
|
/* Read again in order to confirm lock is active */
|
||||||
|
if((GPIOx->LCKR & GPIO_LCKR_LCKK) != RESET)
|
||||||
{
|
{
|
||||||
return HAL_OK;
|
return HAL_OK;
|
||||||
}
|
}
|
||||||
|
|
|
@ -223,12 +223,12 @@
|
||||||
|
|
||||||
*** Callback registration ***
|
*** Callback registration ***
|
||||||
=============================================
|
=============================================
|
||||||
|
[..]
|
||||||
The compilation flag USE_HAL_I2C_REGISTER_CALLBACKS when set to 1
|
The compilation flag USE_HAL_I2C_REGISTER_CALLBACKS when set to 1
|
||||||
allows the user to configure dynamically the driver callbacks.
|
allows the user to configure dynamically the driver callbacks.
|
||||||
Use Functions @ref HAL_I2C_RegisterCallback() or @ref HAL_I2C_RegisterAddrCallback()
|
Use Functions @ref HAL_I2C_RegisterCallback() or @ref HAL_I2C_RegisterAddrCallback()
|
||||||
to register an interrupt callback.
|
to register an interrupt callback.
|
||||||
|
[..]
|
||||||
Function @ref HAL_I2C_RegisterCallback() allows to register following callbacks:
|
Function @ref HAL_I2C_RegisterCallback() allows to register following callbacks:
|
||||||
(+) MasterTxCpltCallback : callback for Master transmission end of transfer.
|
(+) MasterTxCpltCallback : callback for Master transmission end of transfer.
|
||||||
(+) MasterRxCpltCallback : callback for Master reception end of transfer.
|
(+) MasterRxCpltCallback : callback for Master reception end of transfer.
|
||||||
|
@ -243,9 +243,9 @@
|
||||||
(+) MspDeInitCallback : callback for Msp DeInit.
|
(+) MspDeInitCallback : callback for Msp DeInit.
|
||||||
This function takes as parameters the HAL peripheral handle, the Callback ID
|
This function takes as parameters the HAL peripheral handle, the Callback ID
|
||||||
and a pointer to the user callback function.
|
and a pointer to the user callback function.
|
||||||
|
[..]
|
||||||
For specific callback AddrCallback use dedicated register callbacks : @ref HAL_I2C_RegisterAddrCallback().
|
For specific callback AddrCallback use dedicated register callbacks : @ref HAL_I2C_RegisterAddrCallback().
|
||||||
|
[..]
|
||||||
Use function @ref HAL_I2C_UnRegisterCallback to reset a callback to the default
|
Use function @ref HAL_I2C_UnRegisterCallback to reset a callback to the default
|
||||||
weak function.
|
weak function.
|
||||||
@ref HAL_I2C_UnRegisterCallback takes as parameters the HAL peripheral handle,
|
@ref HAL_I2C_UnRegisterCallback takes as parameters the HAL peripheral handle,
|
||||||
|
@ -262,9 +262,9 @@
|
||||||
(+) AbortCpltCallback : callback for abort completion process.
|
(+) AbortCpltCallback : callback for abort completion process.
|
||||||
(+) MspInitCallback : callback for Msp Init.
|
(+) MspInitCallback : callback for Msp Init.
|
||||||
(+) MspDeInitCallback : callback for Msp DeInit.
|
(+) MspDeInitCallback : callback for Msp DeInit.
|
||||||
|
[..]
|
||||||
For callback AddrCallback use dedicated register callbacks : @ref HAL_I2C_UnRegisterAddrCallback().
|
For callback AddrCallback use dedicated register callbacks : @ref HAL_I2C_UnRegisterAddrCallback().
|
||||||
|
[..]
|
||||||
By default, after the @ref HAL_I2C_Init() and when the state is @ref HAL_I2C_STATE_RESET
|
By default, after the @ref HAL_I2C_Init() and when the state is @ref HAL_I2C_STATE_RESET
|
||||||
all callbacks are set to the corresponding weak functions:
|
all callbacks are set to the corresponding weak functions:
|
||||||
examples @ref HAL_I2C_MasterTxCpltCallback(), @ref HAL_I2C_MasterRxCpltCallback().
|
examples @ref HAL_I2C_MasterTxCpltCallback(), @ref HAL_I2C_MasterRxCpltCallback().
|
||||||
|
@ -273,7 +273,7 @@
|
||||||
these callbacks are null (not registered beforehand).
|
these callbacks are null (not registered beforehand).
|
||||||
If MspInit or MspDeInit are not null, the @ref HAL_I2C_Init()/ @ref HAL_I2C_DeInit()
|
If MspInit or MspDeInit are not null, the @ref HAL_I2C_Init()/ @ref HAL_I2C_DeInit()
|
||||||
keep and use the user MspInit/MspDeInit callbacks (registered beforehand) whatever the state.
|
keep and use the user MspInit/MspDeInit callbacks (registered beforehand) whatever the state.
|
||||||
|
[..]
|
||||||
Callbacks can be registered/unregistered in @ref HAL_I2C_STATE_READY state only.
|
Callbacks can be registered/unregistered in @ref HAL_I2C_STATE_READY state only.
|
||||||
Exception done MspInit/MspDeInit functions that can be registered/unregistered
|
Exception done MspInit/MspDeInit functions that can be registered/unregistered
|
||||||
in @ref HAL_I2C_STATE_READY or @ref HAL_I2C_STATE_RESET state,
|
in @ref HAL_I2C_STATE_READY or @ref HAL_I2C_STATE_RESET state,
|
||||||
|
@ -281,7 +281,7 @@
|
||||||
Then, the user first registers the MspInit/MspDeInit user callbacks
|
Then, the user first registers the MspInit/MspDeInit user callbacks
|
||||||
using @ref HAL_I2C_RegisterCallback() before calling @ref HAL_I2C_DeInit()
|
using @ref HAL_I2C_RegisterCallback() before calling @ref HAL_I2C_DeInit()
|
||||||
or @ref HAL_I2C_Init() function.
|
or @ref HAL_I2C_Init() function.
|
||||||
|
[..]
|
||||||
When the compilation flag USE_HAL_I2C_REGISTER_CALLBACKS is set to 0 or
|
When the compilation flag USE_HAL_I2C_REGISTER_CALLBACKS is set to 0 or
|
||||||
not defined, the callback registration feature is not available and all callbacks
|
not defined, the callback registration feature is not available and all callbacks
|
||||||
are set to the corresponding weak functions.
|
are set to the corresponding weak functions.
|
||||||
|
@ -4737,6 +4737,13 @@ static HAL_StatusTypeDef I2C_Slave_ISR_IT(struct __I2C_HandleTypeDef *hi2c, uint
|
||||||
/* Process locked */
|
/* Process locked */
|
||||||
__HAL_LOCK(hi2c);
|
__HAL_LOCK(hi2c);
|
||||||
|
|
||||||
|
/* Check if STOPF is set */
|
||||||
|
if ((I2C_CHECK_FLAG(tmpITFlags, I2C_FLAG_STOPF) != RESET) && (I2C_CHECK_IT_SOURCE(ITSources, I2C_IT_STOPI) != RESET))
|
||||||
|
{
|
||||||
|
/* Call I2C Slave complete process */
|
||||||
|
I2C_ITSlaveCplt(hi2c, tmpITFlags);
|
||||||
|
}
|
||||||
|
|
||||||
if ((I2C_CHECK_FLAG(tmpITFlags, I2C_FLAG_AF) != RESET) && (I2C_CHECK_IT_SOURCE(ITSources, I2C_IT_NACKI) != RESET))
|
if ((I2C_CHECK_FLAG(tmpITFlags, I2C_FLAG_AF) != RESET) && (I2C_CHECK_IT_SOURCE(ITSources, I2C_IT_NACKI) != RESET))
|
||||||
{
|
{
|
||||||
/* Check that I2C transfer finished */
|
/* Check that I2C transfer finished */
|
||||||
|
@ -4788,9 +4795,6 @@ static HAL_StatusTypeDef I2C_Slave_ISR_IT(struct __I2C_HandleTypeDef *hi2c, uint
|
||||||
{
|
{
|
||||||
if (hi2c->XferCount > 0U)
|
if (hi2c->XferCount > 0U)
|
||||||
{
|
{
|
||||||
/* Remove RXNE flag on temporary variable as read done */
|
|
||||||
tmpITFlags &= ~I2C_FLAG_RXNE;
|
|
||||||
|
|
||||||
/* Read data from RXDR */
|
/* Read data from RXDR */
|
||||||
*hi2c->pBuffPtr = (uint8_t)hi2c->Instance->RXDR;
|
*hi2c->pBuffPtr = (uint8_t)hi2c->Instance->RXDR;
|
||||||
|
|
||||||
|
@ -4844,13 +4848,6 @@ static HAL_StatusTypeDef I2C_Slave_ISR_IT(struct __I2C_HandleTypeDef *hi2c, uint
|
||||||
/* Nothing to do */
|
/* Nothing to do */
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Check if STOPF is set */
|
|
||||||
if ((I2C_CHECK_FLAG(tmpITFlags, I2C_FLAG_STOPF) != RESET) && (I2C_CHECK_IT_SOURCE(ITSources, I2C_IT_STOPI) != RESET))
|
|
||||||
{
|
|
||||||
/* Call I2C Slave complete process */
|
|
||||||
I2C_ITSlaveCplt(hi2c, tmpITFlags);
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Process Unlocked */
|
/* Process Unlocked */
|
||||||
__HAL_UNLOCK(hi2c);
|
__HAL_UNLOCK(hi2c);
|
||||||
|
|
||||||
|
@ -5008,6 +5005,13 @@ static HAL_StatusTypeDef I2C_Slave_ISR_DMA(struct __I2C_HandleTypeDef *hi2c, uin
|
||||||
/* Process locked */
|
/* Process locked */
|
||||||
__HAL_LOCK(hi2c);
|
__HAL_LOCK(hi2c);
|
||||||
|
|
||||||
|
/* Check if STOPF is set */
|
||||||
|
if ((I2C_CHECK_FLAG(ITFlags, I2C_FLAG_STOPF) != RESET) && (I2C_CHECK_IT_SOURCE(ITSources, I2C_IT_STOPI) != RESET))
|
||||||
|
{
|
||||||
|
/* Call I2C Slave complete process */
|
||||||
|
I2C_ITSlaveCplt(hi2c, ITFlags);
|
||||||
|
}
|
||||||
|
|
||||||
if ((I2C_CHECK_FLAG(ITFlags, I2C_FLAG_AF) != RESET) && (I2C_CHECK_IT_SOURCE(ITSources, I2C_IT_NACKI) != RESET))
|
if ((I2C_CHECK_FLAG(ITFlags, I2C_FLAG_AF) != RESET) && (I2C_CHECK_IT_SOURCE(ITSources, I2C_IT_NACKI) != RESET))
|
||||||
{
|
{
|
||||||
/* Check that I2C transfer finished */
|
/* Check that I2C transfer finished */
|
||||||
|
@ -5092,11 +5096,6 @@ static HAL_StatusTypeDef I2C_Slave_ISR_DMA(struct __I2C_HandleTypeDef *hi2c, uin
|
||||||
{
|
{
|
||||||
I2C_ITAddrCplt(hi2c, ITFlags);
|
I2C_ITAddrCplt(hi2c, ITFlags);
|
||||||
}
|
}
|
||||||
else if ((I2C_CHECK_FLAG(ITFlags, I2C_FLAG_STOPF) != RESET) && (I2C_CHECK_IT_SOURCE(ITSources, I2C_IT_STOPI) != RESET))
|
|
||||||
{
|
|
||||||
/* Call I2C Slave complete process */
|
|
||||||
I2C_ITSlaveCplt(hi2c, ITFlags);
|
|
||||||
}
|
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
/* Nothing to do */
|
/* Nothing to do */
|
||||||
|
|
|
@ -122,6 +122,7 @@ static HAL_StatusTypeDef PCD_EP_OutSetupPacket_int(PCD_HandleTypeDef *hpcd, uint
|
||||||
*/
|
*/
|
||||||
HAL_StatusTypeDef HAL_PCD_Init(PCD_HandleTypeDef *hpcd)
|
HAL_StatusTypeDef HAL_PCD_Init(PCD_HandleTypeDef *hpcd)
|
||||||
{
|
{
|
||||||
|
USB_OTG_GlobalTypeDef *USBx;
|
||||||
uint8_t i;
|
uint8_t i;
|
||||||
|
|
||||||
/* Check the PCD handle allocation */
|
/* Check the PCD handle allocation */
|
||||||
|
@ -133,6 +134,8 @@ HAL_StatusTypeDef HAL_PCD_Init(PCD_HandleTypeDef *hpcd)
|
||||||
/* Check the parameters */
|
/* Check the parameters */
|
||||||
assert_param(IS_PCD_ALL_INSTANCE(hpcd->Instance));
|
assert_param(IS_PCD_ALL_INSTANCE(hpcd->Instance));
|
||||||
|
|
||||||
|
USBx = hpcd->Instance;
|
||||||
|
|
||||||
if (hpcd->State == HAL_PCD_STATE_RESET)
|
if (hpcd->State == HAL_PCD_STATE_RESET)
|
||||||
{
|
{
|
||||||
/* Allocate lock resource and initialize it */
|
/* Allocate lock resource and initialize it */
|
||||||
|
@ -166,6 +169,12 @@ HAL_StatusTypeDef HAL_PCD_Init(PCD_HandleTypeDef *hpcd)
|
||||||
|
|
||||||
hpcd->State = HAL_PCD_STATE_BUSY;
|
hpcd->State = HAL_PCD_STATE_BUSY;
|
||||||
|
|
||||||
|
/* Disable DMA mode for FS instance */
|
||||||
|
if ((USBx->CID & (0x1U << 8)) == 0U)
|
||||||
|
{
|
||||||
|
hpcd->Init.dma_enable = 0U;
|
||||||
|
}
|
||||||
|
|
||||||
/* Disable the Interrupts */
|
/* Disable the Interrupts */
|
||||||
__HAL_PCD_DISABLE(hpcd);
|
__HAL_PCD_DISABLE(hpcd);
|
||||||
|
|
||||||
|
@ -943,7 +952,7 @@ void HAL_PCD_IRQHandler(PCD_HandleTypeDef *hpcd)
|
||||||
{
|
{
|
||||||
USB_OTG_GlobalTypeDef *USBx = hpcd->Instance;
|
USB_OTG_GlobalTypeDef *USBx = hpcd->Instance;
|
||||||
uint32_t USBx_BASE = (uint32_t)USBx;
|
uint32_t USBx_BASE = (uint32_t)USBx;
|
||||||
uint32_t i, ep_intr, epint, epnum = 0U;
|
uint32_t i, ep_intr, epint, epnum;
|
||||||
uint32_t fifoemptymsk, temp;
|
uint32_t fifoemptymsk, temp;
|
||||||
USB_OTG_EPTypeDef *ep;
|
USB_OTG_EPTypeDef *ep;
|
||||||
|
|
||||||
|
@ -962,6 +971,38 @@ void HAL_PCD_IRQHandler(PCD_HandleTypeDef *hpcd)
|
||||||
__HAL_PCD_CLEAR_FLAG(hpcd, USB_OTG_GINTSTS_MMIS);
|
__HAL_PCD_CLEAR_FLAG(hpcd, USB_OTG_GINTSTS_MMIS);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* Handle RxQLevel Interrupt */
|
||||||
|
if (__HAL_PCD_GET_FLAG(hpcd, USB_OTG_GINTSTS_RXFLVL))
|
||||||
|
{
|
||||||
|
USB_MASK_INTERRUPT(hpcd->Instance, USB_OTG_GINTSTS_RXFLVL);
|
||||||
|
|
||||||
|
temp = USBx->GRXSTSP;
|
||||||
|
|
||||||
|
ep = &hpcd->OUT_ep[temp & USB_OTG_GRXSTSP_EPNUM];
|
||||||
|
|
||||||
|
if (((temp & USB_OTG_GRXSTSP_PKTSTS) >> 17) == STS_DATA_UPDT)
|
||||||
|
{
|
||||||
|
if ((temp & USB_OTG_GRXSTSP_BCNT) != 0U)
|
||||||
|
{
|
||||||
|
(void)USB_ReadPacket(USBx, ep->xfer_buff,
|
||||||
|
(uint16_t)((temp & USB_OTG_GRXSTSP_BCNT) >> 4));
|
||||||
|
|
||||||
|
ep->xfer_buff += (temp & USB_OTG_GRXSTSP_BCNT) >> 4;
|
||||||
|
ep->xfer_count += (temp & USB_OTG_GRXSTSP_BCNT) >> 4;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else if (((temp & USB_OTG_GRXSTSP_PKTSTS) >> 17) == STS_SETUP_UPDT)
|
||||||
|
{
|
||||||
|
(void)USB_ReadPacket(USBx, (uint8_t *)hpcd->Setup, 8U);
|
||||||
|
ep->xfer_count += (temp & USB_OTG_GRXSTSP_BCNT) >> 4;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
/* ... */
|
||||||
|
}
|
||||||
|
USB_UNMASK_INTERRUPT(hpcd->Instance, USB_OTG_GINTSTS_RXFLVL);
|
||||||
|
}
|
||||||
|
|
||||||
if (__HAL_PCD_GET_FLAG(hpcd, USB_OTG_GINTSTS_OEPINT))
|
if (__HAL_PCD_GET_FLAG(hpcd, USB_OTG_GINTSTS_OEPINT))
|
||||||
{
|
{
|
||||||
epnum = 0U;
|
epnum = 0U;
|
||||||
|
@ -983,9 +1024,9 @@ void HAL_PCD_IRQHandler(PCD_HandleTypeDef *hpcd)
|
||||||
|
|
||||||
if ((epint & USB_OTG_DOEPINT_STUP) == USB_OTG_DOEPINT_STUP)
|
if ((epint & USB_OTG_DOEPINT_STUP) == USB_OTG_DOEPINT_STUP)
|
||||||
{
|
{
|
||||||
|
CLEAR_OUT_EP_INTR(epnum, USB_OTG_DOEPINT_STUP);
|
||||||
/* Class B setup phase done for previous decoded setup */
|
/* Class B setup phase done for previous decoded setup */
|
||||||
(void)PCD_EP_OutSetupPacket_int(hpcd, epnum);
|
(void)PCD_EP_OutSetupPacket_int(hpcd, epnum);
|
||||||
CLEAR_OUT_EP_INTR(epnum, USB_OTG_DOEPINT_STUP);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if ((epint & USB_OTG_DOEPINT_OTEPDIS) == USB_OTG_DOEPINT_OTEPDIS)
|
if ((epint & USB_OTG_DOEPINT_OTEPDIS) == USB_OTG_DOEPINT_OTEPDIS)
|
||||||
|
@ -996,10 +1037,6 @@ void HAL_PCD_IRQHandler(PCD_HandleTypeDef *hpcd)
|
||||||
/* Clear Status Phase Received interrupt */
|
/* Clear Status Phase Received interrupt */
|
||||||
if ((epint & USB_OTG_DOEPINT_OTEPSPR) == USB_OTG_DOEPINT_OTEPSPR)
|
if ((epint & USB_OTG_DOEPINT_OTEPSPR) == USB_OTG_DOEPINT_OTEPSPR)
|
||||||
{
|
{
|
||||||
if (hpcd->Init.dma_enable == 1U)
|
|
||||||
{
|
|
||||||
(void)USB_EP0_OutStart(hpcd->Instance, 1U, (uint8_t *)hpcd->Setup);
|
|
||||||
}
|
|
||||||
CLEAR_OUT_EP_INTR(epnum, USB_OTG_DOEPINT_OTEPSPR);
|
CLEAR_OUT_EP_INTR(epnum, USB_OTG_DOEPINT_OTEPSPR);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1037,16 +1074,7 @@ void HAL_PCD_IRQHandler(PCD_HandleTypeDef *hpcd)
|
||||||
if (hpcd->Init.dma_enable == 1U)
|
if (hpcd->Init.dma_enable == 1U)
|
||||||
{
|
{
|
||||||
hpcd->IN_ep[epnum].xfer_buff += hpcd->IN_ep[epnum].maxpacket;
|
hpcd->IN_ep[epnum].xfer_buff += hpcd->IN_ep[epnum].maxpacket;
|
||||||
}
|
|
||||||
|
|
||||||
#if (USE_HAL_PCD_REGISTER_CALLBACKS == 1U)
|
|
||||||
hpcd->DataInStageCallback(hpcd, (uint8_t)epnum);
|
|
||||||
#else
|
|
||||||
HAL_PCD_DataInStageCallback(hpcd, (uint8_t)epnum);
|
|
||||||
#endif /* USE_HAL_PCD_REGISTER_CALLBACKS */
|
|
||||||
|
|
||||||
if (hpcd->Init.dma_enable == 1U)
|
|
||||||
{
|
|
||||||
/* this is ZLP, so prepare EP0 for next setup */
|
/* this is ZLP, so prepare EP0 for next setup */
|
||||||
if ((epnum == 0U) && (hpcd->IN_ep[epnum].xfer_len == 0U))
|
if ((epnum == 0U) && (hpcd->IN_ep[epnum].xfer_len == 0U))
|
||||||
{
|
{
|
||||||
|
@ -1054,6 +1082,12 @@ void HAL_PCD_IRQHandler(PCD_HandleTypeDef *hpcd)
|
||||||
(void)USB_EP0_OutStart(hpcd->Instance, 1U, (uint8_t *)hpcd->Setup);
|
(void)USB_EP0_OutStart(hpcd->Instance, 1U, (uint8_t *)hpcd->Setup);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#if (USE_HAL_PCD_REGISTER_CALLBACKS == 1U)
|
||||||
|
hpcd->DataInStageCallback(hpcd, (uint8_t)epnum);
|
||||||
|
#else
|
||||||
|
HAL_PCD_DataInStageCallback(hpcd, (uint8_t)epnum);
|
||||||
|
#endif /* USE_HAL_PCD_REGISTER_CALLBACKS */
|
||||||
}
|
}
|
||||||
if ((epint & USB_OTG_DIEPINT_TOC) == USB_OTG_DIEPINT_TOC)
|
if ((epint & USB_OTG_DIEPINT_TOC) == USB_OTG_DIEPINT_TOC)
|
||||||
{
|
{
|
||||||
|
@ -1159,8 +1193,10 @@ void HAL_PCD_IRQHandler(PCD_HandleTypeDef *hpcd)
|
||||||
{
|
{
|
||||||
USBx_INEP(i)->DIEPINT = 0xFB7FU;
|
USBx_INEP(i)->DIEPINT = 0xFB7FU;
|
||||||
USBx_INEP(i)->DIEPCTL &= ~USB_OTG_DIEPCTL_STALL;
|
USBx_INEP(i)->DIEPCTL &= ~USB_OTG_DIEPCTL_STALL;
|
||||||
|
USBx_INEP(i)->DIEPCTL |= USB_OTG_DIEPCTL_SNAK;
|
||||||
USBx_OUTEP(i)->DOEPINT = 0xFB7FU;
|
USBx_OUTEP(i)->DOEPINT = 0xFB7FU;
|
||||||
USBx_OUTEP(i)->DOEPCTL &= ~USB_OTG_DOEPCTL_STALL;
|
USBx_OUTEP(i)->DOEPCTL &= ~USB_OTG_DOEPCTL_STALL;
|
||||||
|
USBx_OUTEP(i)->DOEPCTL |= USB_OTG_DOEPCTL_SNAK;
|
||||||
}
|
}
|
||||||
USBx_DEVICE->DAINTMSK |= 0x10001U;
|
USBx_DEVICE->DAINTMSK |= 0x10001U;
|
||||||
|
|
||||||
|
@ -1217,38 +1253,6 @@ void HAL_PCD_IRQHandler(PCD_HandleTypeDef *hpcd)
|
||||||
__HAL_PCD_CLEAR_FLAG(hpcd, USB_OTG_GINTSTS_ENUMDNE);
|
__HAL_PCD_CLEAR_FLAG(hpcd, USB_OTG_GINTSTS_ENUMDNE);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Handle RxQLevel Interrupt */
|
|
||||||
if (__HAL_PCD_GET_FLAG(hpcd, USB_OTG_GINTSTS_RXFLVL))
|
|
||||||
{
|
|
||||||
USB_MASK_INTERRUPT(hpcd->Instance, USB_OTG_GINTSTS_RXFLVL);
|
|
||||||
|
|
||||||
temp = USBx->GRXSTSP;
|
|
||||||
|
|
||||||
ep = &hpcd->OUT_ep[temp & USB_OTG_GRXSTSP_EPNUM];
|
|
||||||
|
|
||||||
if (((temp & USB_OTG_GRXSTSP_PKTSTS) >> 17) == STS_DATA_UPDT)
|
|
||||||
{
|
|
||||||
if ((temp & USB_OTG_GRXSTSP_BCNT) != 0U)
|
|
||||||
{
|
|
||||||
(void)USB_ReadPacket(USBx, ep->xfer_buff,
|
|
||||||
(uint16_t)((temp & USB_OTG_GRXSTSP_BCNT) >> 4));
|
|
||||||
|
|
||||||
ep->xfer_buff += (temp & USB_OTG_GRXSTSP_BCNT) >> 4;
|
|
||||||
ep->xfer_count += (temp & USB_OTG_GRXSTSP_BCNT) >> 4;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else if (((temp & USB_OTG_GRXSTSP_PKTSTS) >> 17) == STS_SETUP_UPDT)
|
|
||||||
{
|
|
||||||
(void)USB_ReadPacket(USBx, (uint8_t *)hpcd->Setup, 8U);
|
|
||||||
ep->xfer_count += (temp & USB_OTG_GRXSTSP_BCNT) >> 4;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
/* ... */
|
|
||||||
}
|
|
||||||
USB_UNMASK_INTERRUPT(hpcd->Instance, USB_OTG_GINTSTS_RXFLVL);
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Handle SOF Interrupt */
|
/* Handle SOF Interrupt */
|
||||||
if (__HAL_PCD_GET_FLAG(hpcd, USB_OTG_GINTSTS_SOF))
|
if (__HAL_PCD_GET_FLAG(hpcd, USB_OTG_GINTSTS_SOF))
|
||||||
{
|
{
|
||||||
|
@ -1264,6 +1268,10 @@ void HAL_PCD_IRQHandler(PCD_HandleTypeDef *hpcd)
|
||||||
/* Handle Incomplete ISO IN Interrupt */
|
/* Handle Incomplete ISO IN Interrupt */
|
||||||
if (__HAL_PCD_GET_FLAG(hpcd, USB_OTG_GINTSTS_IISOIXFR))
|
if (__HAL_PCD_GET_FLAG(hpcd, USB_OTG_GINTSTS_IISOIXFR))
|
||||||
{
|
{
|
||||||
|
/* Keep application checking the corresponding Iso IN endpoint
|
||||||
|
causing the incomplete Interrupt */
|
||||||
|
epnum = 0U;
|
||||||
|
|
||||||
#if (USE_HAL_PCD_REGISTER_CALLBACKS == 1U)
|
#if (USE_HAL_PCD_REGISTER_CALLBACKS == 1U)
|
||||||
hpcd->ISOINIncompleteCallback(hpcd, (uint8_t)epnum);
|
hpcd->ISOINIncompleteCallback(hpcd, (uint8_t)epnum);
|
||||||
#else
|
#else
|
||||||
|
@ -1276,6 +1284,10 @@ void HAL_PCD_IRQHandler(PCD_HandleTypeDef *hpcd)
|
||||||
/* Handle Incomplete ISO OUT Interrupt */
|
/* Handle Incomplete ISO OUT Interrupt */
|
||||||
if (__HAL_PCD_GET_FLAG(hpcd, USB_OTG_GINTSTS_PXFR_INCOMPISOOUT))
|
if (__HAL_PCD_GET_FLAG(hpcd, USB_OTG_GINTSTS_PXFR_INCOMPISOOUT))
|
||||||
{
|
{
|
||||||
|
/* Keep application checking the corresponding Iso OUT endpoint
|
||||||
|
causing the incomplete Interrupt */
|
||||||
|
epnum = 0U;
|
||||||
|
|
||||||
#if (USE_HAL_PCD_REGISTER_CALLBACKS == 1U)
|
#if (USE_HAL_PCD_REGISTER_CALLBACKS == 1U)
|
||||||
hpcd->ISOOUTIncompleteCallback(hpcd, (uint8_t)epnum);
|
hpcd->ISOOUTIncompleteCallback(hpcd, (uint8_t)epnum);
|
||||||
#else
|
#else
|
||||||
|
@ -1955,16 +1967,6 @@ static HAL_StatusTypeDef PCD_EP_OutXfrComplete_int(PCD_HandleTypeDef *hpcd, uint
|
||||||
{
|
{
|
||||||
CLEAR_OUT_EP_INTR(epnum, USB_OTG_DOEPINT_STPKTRX);
|
CLEAR_OUT_EP_INTR(epnum, USB_OTG_DOEPINT_STPKTRX);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Inform the upper layer that a setup packet is available */
|
|
||||||
#if (USE_HAL_PCD_REGISTER_CALLBACKS == 1U)
|
|
||||||
hpcd->SetupStageCallback(hpcd);
|
|
||||||
#else
|
|
||||||
HAL_PCD_SetupStageCallback(hpcd);
|
|
||||||
#endif /* USE_HAL_PCD_REGISTER_CALLBACKS */
|
|
||||||
|
|
||||||
(void)USB_EP0_OutStart(hpcd->Instance, 1U, (uint8_t *)hpcd->Setup);
|
|
||||||
CLEAR_OUT_EP_INTR(epnum, USB_OTG_DOEPINT_STUP);
|
|
||||||
}
|
}
|
||||||
else if ((DoepintReg & USB_OTG_DOEPINT_OTEPSPR) == USB_OTG_DOEPINT_OTEPSPR) /* Class E */
|
else if ((DoepintReg & USB_OTG_DOEPINT_OTEPSPR) == USB_OTG_DOEPINT_OTEPSPR) /* Class E */
|
||||||
{
|
{
|
||||||
|
@ -1987,17 +1989,16 @@ static HAL_StatusTypeDef PCD_EP_OutXfrComplete_int(PCD_HandleTypeDef *hpcd, uint
|
||||||
|
|
||||||
hpcd->OUT_ep[epnum].xfer_buff += hpcd->OUT_ep[epnum].maxpacket;
|
hpcd->OUT_ep[epnum].xfer_buff += hpcd->OUT_ep[epnum].maxpacket;
|
||||||
|
|
||||||
#if (USE_HAL_PCD_REGISTER_CALLBACKS == 1U)
|
|
||||||
hpcd->DataOutStageCallback(hpcd, (uint8_t)epnum);
|
|
||||||
#else
|
|
||||||
HAL_PCD_DataOutStageCallback(hpcd, (uint8_t)epnum);
|
|
||||||
#endif /* USE_HAL_PCD_REGISTER_CALLBACKS */
|
|
||||||
|
|
||||||
if ((epnum == 0U) && (hpcd->OUT_ep[epnum].xfer_len == 0U))
|
if ((epnum == 0U) && (hpcd->OUT_ep[epnum].xfer_len == 0U))
|
||||||
{
|
{
|
||||||
/* this is ZLP, so prepare EP0 for next setup */
|
/* this is ZLP, so prepare EP0 for next setup */
|
||||||
(void)USB_EP0_OutStart(hpcd->Instance, 1U, (uint8_t *)hpcd->Setup);
|
(void)USB_EP0_OutStart(hpcd->Instance, 1U, (uint8_t *)hpcd->Setup);
|
||||||
}
|
}
|
||||||
|
#if (USE_HAL_PCD_REGISTER_CALLBACKS == 1U)
|
||||||
|
hpcd->DataOutStageCallback(hpcd, (uint8_t)epnum);
|
||||||
|
#else
|
||||||
|
HAL_PCD_DataOutStageCallback(hpcd, (uint8_t)epnum);
|
||||||
|
#endif /* USE_HAL_PCD_REGISTER_CALLBACKS */
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
@ -2030,6 +2031,12 @@ static HAL_StatusTypeDef PCD_EP_OutXfrComplete_int(PCD_HandleTypeDef *hpcd, uint
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
if ((epnum == 0U) && (hpcd->OUT_ep[epnum].xfer_len == 0U))
|
||||||
|
{
|
||||||
|
/* this is ZLP, so prepare EP0 for next setup */
|
||||||
|
(void)USB_EP0_OutStart(hpcd->Instance, 0U, (uint8_t *)hpcd->Setup);
|
||||||
|
}
|
||||||
|
|
||||||
#if (USE_HAL_PCD_REGISTER_CALLBACKS == 1U)
|
#if (USE_HAL_PCD_REGISTER_CALLBACKS == 1U)
|
||||||
hpcd->DataOutStageCallback(hpcd, (uint8_t)epnum);
|
hpcd->DataOutStageCallback(hpcd, (uint8_t)epnum);
|
||||||
#else
|
#else
|
||||||
|
@ -2055,22 +2062,10 @@ static HAL_StatusTypeDef PCD_EP_OutSetupPacket_int(PCD_HandleTypeDef *hpcd, uint
|
||||||
uint32_t gSNPSiD = *(__IO uint32_t *)(&USBx->CID + 0x1U);
|
uint32_t gSNPSiD = *(__IO uint32_t *)(&USBx->CID + 0x1U);
|
||||||
uint32_t DoepintReg = USBx_OUTEP(epnum)->DOEPINT;
|
uint32_t DoepintReg = USBx_OUTEP(epnum)->DOEPINT;
|
||||||
|
|
||||||
if (hpcd->Init.dma_enable == 1U)
|
if ((gSNPSiD > USB_OTG_CORE_ID_300A) &&
|
||||||
|
((DoepintReg & USB_OTG_DOEPINT_STPKTRX) == USB_OTG_DOEPINT_STPKTRX))
|
||||||
{
|
{
|
||||||
/* StupPktRcvd = 1 pending setup packet int */
|
CLEAR_OUT_EP_INTR(epnum, USB_OTG_DOEPINT_STPKTRX);
|
||||||
if ((gSNPSiD > USB_OTG_CORE_ID_300A) &&
|
|
||||||
((DoepintReg & USB_OTG_DOEPINT_STPKTRX) == USB_OTG_DOEPINT_STPKTRX))
|
|
||||||
{
|
|
||||||
CLEAR_OUT_EP_INTR(epnum, USB_OTG_DOEPINT_STPKTRX);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
if ((gSNPSiD == USB_OTG_CORE_ID_310A) &&
|
|
||||||
((DoepintReg & USB_OTG_DOEPINT_STPKTRX) == USB_OTG_DOEPINT_STPKTRX))
|
|
||||||
{
|
|
||||||
CLEAR_OUT_EP_INTR(epnum, USB_OTG_DOEPINT_STPKTRX);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Inform the upper layer that a setup packet is available */
|
/* Inform the upper layer that a setup packet is available */
|
||||||
|
|
|
@ -317,7 +317,7 @@ HAL_StatusTypeDef HAL_RCC_DeInit(void)
|
||||||
SystemCoreClock = HSI_VALUE;
|
SystemCoreClock = HSI_VALUE;
|
||||||
|
|
||||||
/* Adapt Systick interrupt period */
|
/* Adapt Systick interrupt period */
|
||||||
if(HAL_InitTick(TICK_INT_PRIORITY) != HAL_OK)
|
if (HAL_InitTick(uwTickPrio) != HAL_OK)
|
||||||
{
|
{
|
||||||
return HAL_ERROR;
|
return HAL_ERROR;
|
||||||
}
|
}
|
||||||
|
@ -344,10 +344,11 @@ HAL_StatusTypeDef HAL_RCC_DeInit(void)
|
||||||
HAL_StatusTypeDef HAL_RCC_OscConfig(RCC_OscInitTypeDef *RCC_OscInitStruct)
|
HAL_StatusTypeDef HAL_RCC_OscConfig(RCC_OscInitTypeDef *RCC_OscInitStruct)
|
||||||
{
|
{
|
||||||
uint32_t tickstart;
|
uint32_t tickstart;
|
||||||
|
uint32_t pll_config;
|
||||||
FlagStatus pwrclkchanged = RESET;
|
FlagStatus pwrclkchanged = RESET;
|
||||||
|
|
||||||
/* Check Null pointer */
|
/* Check Null pointer */
|
||||||
if(RCC_OscInitStruct == NULL)
|
if (RCC_OscInitStruct == NULL)
|
||||||
{
|
{
|
||||||
return HAL_ERROR;
|
return HAL_ERROR;
|
||||||
}
|
}
|
||||||
|
@ -356,15 +357,15 @@ HAL_StatusTypeDef HAL_RCC_OscConfig(RCC_OscInitTypeDef *RCC_OscInitStruct)
|
||||||
assert_param(IS_RCC_OSCILLATORTYPE(RCC_OscInitStruct->OscillatorType));
|
assert_param(IS_RCC_OSCILLATORTYPE(RCC_OscInitStruct->OscillatorType));
|
||||||
|
|
||||||
/*------------------------------- HSE Configuration ------------------------*/
|
/*------------------------------- HSE Configuration ------------------------*/
|
||||||
if(((RCC_OscInitStruct->OscillatorType) & RCC_OSCILLATORTYPE_HSE) == RCC_OSCILLATORTYPE_HSE)
|
if (((RCC_OscInitStruct->OscillatorType) & RCC_OSCILLATORTYPE_HSE) == RCC_OSCILLATORTYPE_HSE)
|
||||||
{
|
{
|
||||||
/* Check the parameters */
|
/* Check the parameters */
|
||||||
assert_param(IS_RCC_HSE(RCC_OscInitStruct->HSEState));
|
assert_param(IS_RCC_HSE(RCC_OscInitStruct->HSEState));
|
||||||
/* When the HSE is used as system clock or clock source for PLL, It can not be disabled */
|
/* When the HSE is used as system clock or clock source for PLL, It can not be disabled */
|
||||||
if((__HAL_RCC_GET_SYSCLK_SOURCE() == RCC_SYSCLKSOURCE_STATUS_HSE)
|
if ((__HAL_RCC_GET_SYSCLK_SOURCE() == RCC_SYSCLKSOURCE_STATUS_HSE)
|
||||||
|| ((__HAL_RCC_GET_SYSCLK_SOURCE() == RCC_SYSCLKSOURCE_STATUS_PLLCLK) && ((RCC->PLLCFGR & RCC_PLLCFGR_PLLSRC) == RCC_PLLCFGR_PLLSRC_HSE)))
|
|| ((__HAL_RCC_GET_SYSCLK_SOURCE() == RCC_SYSCLKSOURCE_STATUS_PLLCLK) && ((RCC->PLLCFGR & RCC_PLLCFGR_PLLSRC) == RCC_PLLCFGR_PLLSRC_HSE)))
|
||||||
{
|
{
|
||||||
if((__HAL_RCC_GET_FLAG(RCC_FLAG_HSERDY) != RESET) && (RCC_OscInitStruct->HSEState == RCC_HSE_OFF))
|
if ((__HAL_RCC_GET_FLAG(RCC_FLAG_HSERDY) != RESET) && (RCC_OscInitStruct->HSEState == RCC_HSE_OFF))
|
||||||
{
|
{
|
||||||
return HAL_ERROR;
|
return HAL_ERROR;
|
||||||
}
|
}
|
||||||
|
@ -375,15 +376,15 @@ HAL_StatusTypeDef HAL_RCC_OscConfig(RCC_OscInitTypeDef *RCC_OscInitStruct)
|
||||||
__HAL_RCC_HSE_CONFIG(RCC_OscInitStruct->HSEState);
|
__HAL_RCC_HSE_CONFIG(RCC_OscInitStruct->HSEState);
|
||||||
|
|
||||||
/* Check the HSE State */
|
/* Check the HSE State */
|
||||||
if(RCC_OscInitStruct->HSEState != RCC_HSE_OFF)
|
if (RCC_OscInitStruct->HSEState != RCC_HSE_OFF)
|
||||||
{
|
{
|
||||||
/* Get Start Tick*/
|
/* Get Start Tick*/
|
||||||
tickstart = HAL_GetTick();
|
tickstart = HAL_GetTick();
|
||||||
|
|
||||||
/* Wait till HSE is ready */
|
/* Wait till HSE is ready */
|
||||||
while(__HAL_RCC_GET_FLAG(RCC_FLAG_HSERDY) == RESET)
|
while (__HAL_RCC_GET_FLAG(RCC_FLAG_HSERDY) == RESET)
|
||||||
{
|
{
|
||||||
if((HAL_GetTick() - tickstart ) > HSE_TIMEOUT_VALUE)
|
if ((HAL_GetTick() - tickstart) > HSE_TIMEOUT_VALUE)
|
||||||
{
|
{
|
||||||
return HAL_TIMEOUT;
|
return HAL_TIMEOUT;
|
||||||
}
|
}
|
||||||
|
@ -395,9 +396,9 @@ HAL_StatusTypeDef HAL_RCC_OscConfig(RCC_OscInitTypeDef *RCC_OscInitStruct)
|
||||||
tickstart = HAL_GetTick();
|
tickstart = HAL_GetTick();
|
||||||
|
|
||||||
/* Wait till HSE is bypassed or disabled */
|
/* Wait till HSE is bypassed or disabled */
|
||||||
while(__HAL_RCC_GET_FLAG(RCC_FLAG_HSERDY) != RESET)
|
while (__HAL_RCC_GET_FLAG(RCC_FLAG_HSERDY) != RESET)
|
||||||
{
|
{
|
||||||
if((HAL_GetTick() - tickstart ) > HSE_TIMEOUT_VALUE)
|
if ((HAL_GetTick() - tickstart) > HSE_TIMEOUT_VALUE)
|
||||||
{
|
{
|
||||||
return HAL_TIMEOUT;
|
return HAL_TIMEOUT;
|
||||||
}
|
}
|
||||||
|
@ -406,18 +407,18 @@ HAL_StatusTypeDef HAL_RCC_OscConfig(RCC_OscInitTypeDef *RCC_OscInitStruct)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
/*----------------------------- HSI Configuration --------------------------*/
|
/*----------------------------- HSI Configuration --------------------------*/
|
||||||
if(((RCC_OscInitStruct->OscillatorType) & RCC_OSCILLATORTYPE_HSI) == RCC_OSCILLATORTYPE_HSI)
|
if (((RCC_OscInitStruct->OscillatorType) & RCC_OSCILLATORTYPE_HSI) == RCC_OSCILLATORTYPE_HSI)
|
||||||
{
|
{
|
||||||
/* Check the parameters */
|
/* Check the parameters */
|
||||||
assert_param(IS_RCC_HSI(RCC_OscInitStruct->HSIState));
|
assert_param(IS_RCC_HSI(RCC_OscInitStruct->HSIState));
|
||||||
assert_param(IS_RCC_CALIBRATION_VALUE(RCC_OscInitStruct->HSICalibrationValue));
|
assert_param(IS_RCC_CALIBRATION_VALUE(RCC_OscInitStruct->HSICalibrationValue));
|
||||||
|
|
||||||
/* Check if HSI is used as system clock or as PLL source when PLL is selected as system clock */
|
/* Check if HSI is used as system clock or as PLL source when PLL is selected as system clock */
|
||||||
if((__HAL_RCC_GET_SYSCLK_SOURCE() == RCC_SYSCLKSOURCE_STATUS_HSI)
|
if ((__HAL_RCC_GET_SYSCLK_SOURCE() == RCC_SYSCLKSOURCE_STATUS_HSI)
|
||||||
|| ((__HAL_RCC_GET_SYSCLK_SOURCE() == RCC_SYSCLKSOURCE_STATUS_PLLCLK) && ((RCC->PLLCFGR & RCC_PLLCFGR_PLLSRC) == RCC_PLLCFGR_PLLSRC_HSI)))
|
|| ((__HAL_RCC_GET_SYSCLK_SOURCE() == RCC_SYSCLKSOURCE_STATUS_PLLCLK) && ((RCC->PLLCFGR & RCC_PLLCFGR_PLLSRC) == RCC_PLLCFGR_PLLSRC_HSI)))
|
||||||
{
|
{
|
||||||
/* When HSI is used as system clock it will not disabled */
|
/* When HSI is used as system clock it will not disabled */
|
||||||
if((__HAL_RCC_GET_FLAG(RCC_FLAG_HSIRDY) != RESET) && (RCC_OscInitStruct->HSIState != RCC_HSI_ON))
|
if ((__HAL_RCC_GET_FLAG(RCC_FLAG_HSIRDY) != RESET) && (RCC_OscInitStruct->HSIState != RCC_HSI_ON))
|
||||||
{
|
{
|
||||||
return HAL_ERROR;
|
return HAL_ERROR;
|
||||||
}
|
}
|
||||||
|
@ -431,7 +432,7 @@ HAL_StatusTypeDef HAL_RCC_OscConfig(RCC_OscInitTypeDef *RCC_OscInitStruct)
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
/* Check the HSI State */
|
/* Check the HSI State */
|
||||||
if((RCC_OscInitStruct->HSIState)!= RCC_HSI_OFF)
|
if ((RCC_OscInitStruct->HSIState) != RCC_HSI_OFF)
|
||||||
{
|
{
|
||||||
/* Enable the Internal High Speed oscillator (HSI). */
|
/* Enable the Internal High Speed oscillator (HSI). */
|
||||||
__HAL_RCC_HSI_ENABLE();
|
__HAL_RCC_HSI_ENABLE();
|
||||||
|
@ -440,9 +441,9 @@ HAL_StatusTypeDef HAL_RCC_OscConfig(RCC_OscInitTypeDef *RCC_OscInitStruct)
|
||||||
tickstart = HAL_GetTick();
|
tickstart = HAL_GetTick();
|
||||||
|
|
||||||
/* Wait till HSI is ready */
|
/* Wait till HSI is ready */
|
||||||
while(__HAL_RCC_GET_FLAG(RCC_FLAG_HSIRDY) == RESET)
|
while (__HAL_RCC_GET_FLAG(RCC_FLAG_HSIRDY) == RESET)
|
||||||
{
|
{
|
||||||
if((HAL_GetTick() - tickstart ) > HSI_TIMEOUT_VALUE)
|
if ((HAL_GetTick() - tickstart) > HSI_TIMEOUT_VALUE)
|
||||||
{
|
{
|
||||||
return HAL_TIMEOUT;
|
return HAL_TIMEOUT;
|
||||||
}
|
}
|
||||||
|
@ -460,9 +461,9 @@ HAL_StatusTypeDef HAL_RCC_OscConfig(RCC_OscInitTypeDef *RCC_OscInitStruct)
|
||||||
tickstart = HAL_GetTick();
|
tickstart = HAL_GetTick();
|
||||||
|
|
||||||
/* Wait till HSI is ready */
|
/* Wait till HSI is ready */
|
||||||
while(__HAL_RCC_GET_FLAG(RCC_FLAG_HSIRDY) != RESET)
|
while (__HAL_RCC_GET_FLAG(RCC_FLAG_HSIRDY) != RESET)
|
||||||
{
|
{
|
||||||
if((HAL_GetTick() - tickstart ) > HSI_TIMEOUT_VALUE)
|
if ((HAL_GetTick() - tickstart) > HSI_TIMEOUT_VALUE)
|
||||||
{
|
{
|
||||||
return HAL_TIMEOUT;
|
return HAL_TIMEOUT;
|
||||||
}
|
}
|
||||||
|
@ -471,13 +472,13 @@ HAL_StatusTypeDef HAL_RCC_OscConfig(RCC_OscInitTypeDef *RCC_OscInitStruct)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
/*------------------------------ LSI Configuration -------------------------*/
|
/*------------------------------ LSI Configuration -------------------------*/
|
||||||
if(((RCC_OscInitStruct->OscillatorType) & RCC_OSCILLATORTYPE_LSI) == RCC_OSCILLATORTYPE_LSI)
|
if (((RCC_OscInitStruct->OscillatorType) & RCC_OSCILLATORTYPE_LSI) == RCC_OSCILLATORTYPE_LSI)
|
||||||
{
|
{
|
||||||
/* Check the parameters */
|
/* Check the parameters */
|
||||||
assert_param(IS_RCC_LSI(RCC_OscInitStruct->LSIState));
|
assert_param(IS_RCC_LSI(RCC_OscInitStruct->LSIState));
|
||||||
|
|
||||||
/* Check the LSI State */
|
/* Check the LSI State */
|
||||||
if((RCC_OscInitStruct->LSIState)!= RCC_LSI_OFF)
|
if ((RCC_OscInitStruct->LSIState) != RCC_LSI_OFF)
|
||||||
{
|
{
|
||||||
/* Enable the Internal Low Speed oscillator (LSI). */
|
/* Enable the Internal Low Speed oscillator (LSI). */
|
||||||
__HAL_RCC_LSI_ENABLE();
|
__HAL_RCC_LSI_ENABLE();
|
||||||
|
@ -486,9 +487,9 @@ HAL_StatusTypeDef HAL_RCC_OscConfig(RCC_OscInitTypeDef *RCC_OscInitStruct)
|
||||||
tickstart = HAL_GetTick();
|
tickstart = HAL_GetTick();
|
||||||
|
|
||||||
/* Wait till LSI is ready */
|
/* Wait till LSI is ready */
|
||||||
while(__HAL_RCC_GET_FLAG(RCC_FLAG_LSIRDY) == RESET)
|
while (__HAL_RCC_GET_FLAG(RCC_FLAG_LSIRDY) == RESET)
|
||||||
{
|
{
|
||||||
if((HAL_GetTick() - tickstart ) > LSI_TIMEOUT_VALUE)
|
if ((HAL_GetTick() - tickstart) > LSI_TIMEOUT_VALUE)
|
||||||
{
|
{
|
||||||
return HAL_TIMEOUT;
|
return HAL_TIMEOUT;
|
||||||
}
|
}
|
||||||
|
@ -503,9 +504,9 @@ HAL_StatusTypeDef HAL_RCC_OscConfig(RCC_OscInitTypeDef *RCC_OscInitStruct)
|
||||||
tickstart = HAL_GetTick();
|
tickstart = HAL_GetTick();
|
||||||
|
|
||||||
/* Wait till LSI is ready */
|
/* Wait till LSI is ready */
|
||||||
while(__HAL_RCC_GET_FLAG(RCC_FLAG_LSIRDY) != RESET)
|
while (__HAL_RCC_GET_FLAG(RCC_FLAG_LSIRDY) != RESET)
|
||||||
{
|
{
|
||||||
if((HAL_GetTick() - tickstart ) > LSI_TIMEOUT_VALUE)
|
if ((HAL_GetTick() - tickstart) > LSI_TIMEOUT_VALUE)
|
||||||
{
|
{
|
||||||
return HAL_TIMEOUT;
|
return HAL_TIMEOUT;
|
||||||
}
|
}
|
||||||
|
@ -513,21 +514,21 @@ HAL_StatusTypeDef HAL_RCC_OscConfig(RCC_OscInitTypeDef *RCC_OscInitStruct)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
/*------------------------------ LSE Configuration -------------------------*/
|
/*------------------------------ LSE Configuration -------------------------*/
|
||||||
if(((RCC_OscInitStruct->OscillatorType) & RCC_OSCILLATORTYPE_LSE) == RCC_OSCILLATORTYPE_LSE)
|
if (((RCC_OscInitStruct->OscillatorType) & RCC_OSCILLATORTYPE_LSE) == RCC_OSCILLATORTYPE_LSE)
|
||||||
{
|
{
|
||||||
/* Check the parameters */
|
/* Check the parameters */
|
||||||
assert_param(IS_RCC_LSE(RCC_OscInitStruct->LSEState));
|
assert_param(IS_RCC_LSE(RCC_OscInitStruct->LSEState));
|
||||||
|
|
||||||
/* Update LSE configuration in Backup Domain control register */
|
/* Update LSE configuration in Backup Domain control register */
|
||||||
/* Requires to enable write access to Backup Domain of necessary */
|
/* Requires to enable write access to Backup Domain of necessary */
|
||||||
if(__HAL_RCC_PWR_IS_CLK_DISABLED())
|
if (__HAL_RCC_PWR_IS_CLK_DISABLED())
|
||||||
{
|
{
|
||||||
/* Enable Power Clock*/
|
/* Enable Power Clock*/
|
||||||
__HAL_RCC_PWR_CLK_ENABLE();
|
__HAL_RCC_PWR_CLK_ENABLE();
|
||||||
pwrclkchanged = SET;
|
pwrclkchanged = SET;
|
||||||
}
|
}
|
||||||
|
|
||||||
if(HAL_IS_BIT_CLR(PWR->CR1, PWR_CR1_DBP))
|
if (HAL_IS_BIT_CLR(PWR->CR1, PWR_CR1_DBP))
|
||||||
{
|
{
|
||||||
/* Enable write access to Backup domain */
|
/* Enable write access to Backup domain */
|
||||||
PWR->CR1 |= PWR_CR1_DBP;
|
PWR->CR1 |= PWR_CR1_DBP;
|
||||||
|
@ -535,9 +536,9 @@ HAL_StatusTypeDef HAL_RCC_OscConfig(RCC_OscInitTypeDef *RCC_OscInitStruct)
|
||||||
/* Wait for Backup domain Write protection disable */
|
/* Wait for Backup domain Write protection disable */
|
||||||
tickstart = HAL_GetTick();
|
tickstart = HAL_GetTick();
|
||||||
|
|
||||||
while(HAL_IS_BIT_CLR(PWR->CR1, PWR_CR1_DBP))
|
while (HAL_IS_BIT_CLR(PWR->CR1, PWR_CR1_DBP))
|
||||||
{
|
{
|
||||||
if((HAL_GetTick() - tickstart ) > RCC_DBP_TIMEOUT_VALUE)
|
if ((HAL_GetTick() - tickstart) > RCC_DBP_TIMEOUT_VALUE)
|
||||||
{
|
{
|
||||||
return HAL_TIMEOUT;
|
return HAL_TIMEOUT;
|
||||||
}
|
}
|
||||||
|
@ -547,15 +548,15 @@ HAL_StatusTypeDef HAL_RCC_OscConfig(RCC_OscInitTypeDef *RCC_OscInitStruct)
|
||||||
/* Set the new LSE configuration -----------------------------------------*/
|
/* Set the new LSE configuration -----------------------------------------*/
|
||||||
__HAL_RCC_LSE_CONFIG(RCC_OscInitStruct->LSEState);
|
__HAL_RCC_LSE_CONFIG(RCC_OscInitStruct->LSEState);
|
||||||
/* Check the LSE State */
|
/* Check the LSE State */
|
||||||
if((RCC_OscInitStruct->LSEState) != RCC_LSE_OFF)
|
if ((RCC_OscInitStruct->LSEState) != RCC_LSE_OFF)
|
||||||
{
|
{
|
||||||
/* Get Start Tick*/
|
/* Get Start Tick*/
|
||||||
tickstart = HAL_GetTick();
|
tickstart = HAL_GetTick();
|
||||||
|
|
||||||
/* Wait till LSE is ready */
|
/* Wait till LSE is ready */
|
||||||
while(__HAL_RCC_GET_FLAG(RCC_FLAG_LSERDY) == RESET)
|
while (__HAL_RCC_GET_FLAG(RCC_FLAG_LSERDY) == RESET)
|
||||||
{
|
{
|
||||||
if((HAL_GetTick() - tickstart ) > RCC_LSE_TIMEOUT_VALUE)
|
if ((HAL_GetTick() - tickstart) > RCC_LSE_TIMEOUT_VALUE)
|
||||||
{
|
{
|
||||||
return HAL_TIMEOUT;
|
return HAL_TIMEOUT;
|
||||||
}
|
}
|
||||||
|
@ -567,9 +568,9 @@ HAL_StatusTypeDef HAL_RCC_OscConfig(RCC_OscInitTypeDef *RCC_OscInitStruct)
|
||||||
tickstart = HAL_GetTick();
|
tickstart = HAL_GetTick();
|
||||||
|
|
||||||
/* Wait till LSE is ready */
|
/* Wait till LSE is ready */
|
||||||
while(__HAL_RCC_GET_FLAG(RCC_FLAG_LSERDY) != RESET)
|
while (__HAL_RCC_GET_FLAG(RCC_FLAG_LSERDY) != RESET)
|
||||||
{
|
{
|
||||||
if((HAL_GetTick() - tickstart ) > RCC_LSE_TIMEOUT_VALUE)
|
if ((HAL_GetTick() - tickstart) > RCC_LSE_TIMEOUT_VALUE)
|
||||||
{
|
{
|
||||||
return HAL_TIMEOUT;
|
return HAL_TIMEOUT;
|
||||||
}
|
}
|
||||||
|
@ -577,7 +578,7 @@ HAL_StatusTypeDef HAL_RCC_OscConfig(RCC_OscInitTypeDef *RCC_OscInitStruct)
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Restore clock configuration if changed */
|
/* Restore clock configuration if changed */
|
||||||
if(pwrclkchanged == SET)
|
if (pwrclkchanged == SET)
|
||||||
{
|
{
|
||||||
__HAL_RCC_PWR_CLK_DISABLE();
|
__HAL_RCC_PWR_CLK_DISABLE();
|
||||||
}
|
}
|
||||||
|
@ -588,9 +589,9 @@ HAL_StatusTypeDef HAL_RCC_OscConfig(RCC_OscInitTypeDef *RCC_OscInitStruct)
|
||||||
if ((RCC_OscInitStruct->PLL.PLLState) != RCC_PLL_NONE)
|
if ((RCC_OscInitStruct->PLL.PLLState) != RCC_PLL_NONE)
|
||||||
{
|
{
|
||||||
/* Check if the PLL is used as system clock or not */
|
/* Check if the PLL is used as system clock or not */
|
||||||
if(__HAL_RCC_GET_SYSCLK_SOURCE() != RCC_SYSCLKSOURCE_STATUS_PLLCLK)
|
if (__HAL_RCC_GET_SYSCLK_SOURCE() != RCC_SYSCLKSOURCE_STATUS_PLLCLK)
|
||||||
{
|
{
|
||||||
if((RCC_OscInitStruct->PLL.PLLState) == RCC_PLL_ON)
|
if ((RCC_OscInitStruct->PLL.PLLState) == RCC_PLL_ON)
|
||||||
{
|
{
|
||||||
/* Check the parameters */
|
/* Check the parameters */
|
||||||
assert_param(IS_RCC_PLLSOURCE(RCC_OscInitStruct->PLL.PLLSource));
|
assert_param(IS_RCC_PLLSOURCE(RCC_OscInitStruct->PLL.PLLSource));
|
||||||
|
@ -609,9 +610,9 @@ HAL_StatusTypeDef HAL_RCC_OscConfig(RCC_OscInitTypeDef *RCC_OscInitStruct)
|
||||||
tickstart = HAL_GetTick();
|
tickstart = HAL_GetTick();
|
||||||
|
|
||||||
/* Wait till PLL is ready */
|
/* Wait till PLL is ready */
|
||||||
while(__HAL_RCC_GET_FLAG(RCC_FLAG_PLLRDY) != RESET)
|
while (__HAL_RCC_GET_FLAG(RCC_FLAG_PLLRDY) != RESET)
|
||||||
{
|
{
|
||||||
if((HAL_GetTick() - tickstart ) > PLL_TIMEOUT_VALUE)
|
if ((HAL_GetTick() - tickstart) > PLL_TIMEOUT_VALUE)
|
||||||
{
|
{
|
||||||
return HAL_TIMEOUT;
|
return HAL_TIMEOUT;
|
||||||
}
|
}
|
||||||
|
@ -640,9 +641,9 @@ HAL_StatusTypeDef HAL_RCC_OscConfig(RCC_OscInitTypeDef *RCC_OscInitStruct)
|
||||||
tickstart = HAL_GetTick();
|
tickstart = HAL_GetTick();
|
||||||
|
|
||||||
/* Wait till PLL is ready */
|
/* Wait till PLL is ready */
|
||||||
while(__HAL_RCC_GET_FLAG(RCC_FLAG_PLLRDY) == RESET)
|
while (__HAL_RCC_GET_FLAG(RCC_FLAG_PLLRDY) == RESET)
|
||||||
{
|
{
|
||||||
if((HAL_GetTick() - tickstart ) > PLL_TIMEOUT_VALUE)
|
if ((HAL_GetTick() - tickstart) > PLL_TIMEOUT_VALUE)
|
||||||
{
|
{
|
||||||
return HAL_TIMEOUT;
|
return HAL_TIMEOUT;
|
||||||
}
|
}
|
||||||
|
@ -657,9 +658,9 @@ HAL_StatusTypeDef HAL_RCC_OscConfig(RCC_OscInitTypeDef *RCC_OscInitStruct)
|
||||||
tickstart = HAL_GetTick();
|
tickstart = HAL_GetTick();
|
||||||
|
|
||||||
/* Wait till PLL is ready */
|
/* Wait till PLL is ready */
|
||||||
while(__HAL_RCC_GET_FLAG(RCC_FLAG_PLLRDY) != RESET)
|
while (__HAL_RCC_GET_FLAG(RCC_FLAG_PLLRDY) != RESET)
|
||||||
{
|
{
|
||||||
if((HAL_GetTick() - tickstart ) > PLL_TIMEOUT_VALUE)
|
if ((HAL_GetTick() - tickstart) > PLL_TIMEOUT_VALUE)
|
||||||
{
|
{
|
||||||
return HAL_TIMEOUT;
|
return HAL_TIMEOUT;
|
||||||
}
|
}
|
||||||
|
@ -668,7 +669,27 @@ HAL_StatusTypeDef HAL_RCC_OscConfig(RCC_OscInitTypeDef *RCC_OscInitStruct)
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
return HAL_ERROR;
|
/* Do not return HAL_ERROR if request repeats the current configuration */
|
||||||
|
pll_config = RCC->PLLCFGR;
|
||||||
|
#if defined (RCC_PLLCFGR_PLLR)
|
||||||
|
if (((RCC_OscInitStruct->PLL.PLLState) == RCC_PLL_OFF) ||
|
||||||
|
(READ_BIT(pll_config, RCC_PLLCFGR_PLLSRC) != RCC_OscInitStruct->PLL.PLLSource) ||
|
||||||
|
(READ_BIT(pll_config, RCC_PLLCFGR_PLLM) != RCC_OscInitStruct->PLL.PLLM) ||
|
||||||
|
(READ_BIT(pll_config, RCC_PLLCFGR_PLLN) != (RCC_OscInitStruct->PLL.PLLN << RCC_PLLCFGR_PLLN_Pos)) ||
|
||||||
|
(READ_BIT(pll_config, RCC_PLLCFGR_PLLP) != ((((RCC_OscInitStruct->PLL.PLLP) >> 1U) - 1U) << RCC_PLLCFGR_PLLP_Pos)) ||
|
||||||
|
(READ_BIT(pll_config, RCC_PLLCFGR_PLLQ) != (RCC_OscInitStruct->PLL.PLLQ << RCC_PLLCFGR_PLLQ_Pos)) ||
|
||||||
|
(READ_BIT(pll_config, RCC_PLLCFGR_PLLR) != (RCC_OscInitStruct->PLL.PLLR << RCC_PLLCFGR_PLLR_Pos)))
|
||||||
|
#else
|
||||||
|
if (((RCC_OscInitStruct->PLL.PLLState) == RCC_PLL_OFF) ||
|
||||||
|
(READ_BIT(pll_config, RCC_PLLCFGR_PLLSRC) != RCC_OscInitStruct->PLL.PLLSource) ||
|
||||||
|
(READ_BIT(pll_config, RCC_PLLCFGR_PLLM) != RCC_OscInitStruct->PLL.PLLM) ||
|
||||||
|
(READ_BIT(pll_config, RCC_PLLCFGR_PLLN) != (RCC_OscInitStruct->PLL.PLLN << RCC_PLLCFGR_PLLN_Pos)) ||
|
||||||
|
(READ_BIT(pll_config, RCC_PLLCFGR_PLLP) != ((((RCC_OscInitStruct->PLL.PLLP) >> 1U) - 1U) << RCC_PLLCFGR_PLLP_Pos)) ||
|
||||||
|
(READ_BIT(pll_config, RCC_PLLCFGR_PLLQ) != (RCC_OscInitStruct->PLL.PLLQ << RCC_PLLCFGR_PLLQ_Pos)))
|
||||||
|
#endif
|
||||||
|
{
|
||||||
|
return HAL_ERROR;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return HAL_OK;
|
return HAL_OK;
|
||||||
|
@ -705,7 +726,7 @@ HAL_StatusTypeDef HAL_RCC_ClockConfig(RCC_ClkInitTypeDef *RCC_ClkInitStruct, ui
|
||||||
uint32_t tickstart = 0;
|
uint32_t tickstart = 0;
|
||||||
|
|
||||||
/* Check Null pointer */
|
/* Check Null pointer */
|
||||||
if(RCC_ClkInitStruct == NULL)
|
if (RCC_ClkInitStruct == NULL)
|
||||||
{
|
{
|
||||||
return HAL_ERROR;
|
return HAL_ERROR;
|
||||||
}
|
}
|
||||||
|
@ -719,30 +740,30 @@ HAL_StatusTypeDef HAL_RCC_ClockConfig(RCC_ClkInitTypeDef *RCC_ClkInitStruct, ui
|
||||||
(HCLK) and the supply voltage of the device. */
|
(HCLK) and the supply voltage of the device. */
|
||||||
|
|
||||||
/* Increasing the CPU frequency */
|
/* Increasing the CPU frequency */
|
||||||
if(FLatency > __HAL_FLASH_GET_LATENCY())
|
if (FLatency > __HAL_FLASH_GET_LATENCY())
|
||||||
{
|
{
|
||||||
/* Program the new number of wait states to the LATENCY bits in the FLASH_ACR register */
|
/* Program the new number of wait states to the LATENCY bits in the FLASH_ACR register */
|
||||||
__HAL_FLASH_SET_LATENCY(FLatency);
|
__HAL_FLASH_SET_LATENCY(FLatency);
|
||||||
|
|
||||||
/* Check that the new number of wait states is taken into account to access the Flash
|
/* Check that the new number of wait states is taken into account to access the Flash
|
||||||
memory by reading the FLASH_ACR register */
|
memory by reading the FLASH_ACR register */
|
||||||
if(__HAL_FLASH_GET_LATENCY() != FLatency)
|
if (__HAL_FLASH_GET_LATENCY() != FLatency)
|
||||||
{
|
{
|
||||||
return HAL_ERROR;
|
return HAL_ERROR;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/*-------------------------- HCLK Configuration --------------------------*/
|
/*-------------------------- HCLK Configuration --------------------------*/
|
||||||
if(((RCC_ClkInitStruct->ClockType) & RCC_CLOCKTYPE_HCLK) == RCC_CLOCKTYPE_HCLK)
|
if (((RCC_ClkInitStruct->ClockType) & RCC_CLOCKTYPE_HCLK) == RCC_CLOCKTYPE_HCLK)
|
||||||
{
|
{
|
||||||
/* Set the highest APBx dividers in order to ensure that we do not go through
|
/* Set the highest APBx dividers in order to ensure that we do not go through
|
||||||
a non-spec phase whatever we decrease or increase HCLK. */
|
a non-spec phase whatever we decrease or increase HCLK. */
|
||||||
if(((RCC_ClkInitStruct->ClockType) & RCC_CLOCKTYPE_PCLK1) == RCC_CLOCKTYPE_PCLK1)
|
if (((RCC_ClkInitStruct->ClockType) & RCC_CLOCKTYPE_PCLK1) == RCC_CLOCKTYPE_PCLK1)
|
||||||
{
|
{
|
||||||
MODIFY_REG(RCC->CFGR, RCC_CFGR_PPRE1, RCC_HCLK_DIV16);
|
MODIFY_REG(RCC->CFGR, RCC_CFGR_PPRE1, RCC_HCLK_DIV16);
|
||||||
}
|
}
|
||||||
|
|
||||||
if(((RCC_ClkInitStruct->ClockType) & RCC_CLOCKTYPE_PCLK2) == RCC_CLOCKTYPE_PCLK2)
|
if (((RCC_ClkInitStruct->ClockType) & RCC_CLOCKTYPE_PCLK2) == RCC_CLOCKTYPE_PCLK2)
|
||||||
{
|
{
|
||||||
MODIFY_REG(RCC->CFGR, RCC_CFGR_PPRE2, (RCC_HCLK_DIV16 << 3));
|
MODIFY_REG(RCC->CFGR, RCC_CFGR_PPRE2, (RCC_HCLK_DIV16 << 3));
|
||||||
}
|
}
|
||||||
|
@ -753,24 +774,24 @@ HAL_StatusTypeDef HAL_RCC_ClockConfig(RCC_ClkInitTypeDef *RCC_ClkInitStruct, ui
|
||||||
}
|
}
|
||||||
|
|
||||||
/*------------------------- SYSCLK Configuration ---------------------------*/
|
/*------------------------- SYSCLK Configuration ---------------------------*/
|
||||||
if(((RCC_ClkInitStruct->ClockType) & RCC_CLOCKTYPE_SYSCLK) == RCC_CLOCKTYPE_SYSCLK)
|
if (((RCC_ClkInitStruct->ClockType) & RCC_CLOCKTYPE_SYSCLK) == RCC_CLOCKTYPE_SYSCLK)
|
||||||
{
|
{
|
||||||
assert_param(IS_RCC_SYSCLKSOURCE(RCC_ClkInitStruct->SYSCLKSource));
|
assert_param(IS_RCC_SYSCLKSOURCE(RCC_ClkInitStruct->SYSCLKSource));
|
||||||
|
|
||||||
/* HSE is selected as System Clock Source */
|
/* HSE is selected as System Clock Source */
|
||||||
if(RCC_ClkInitStruct->SYSCLKSource == RCC_SYSCLKSOURCE_HSE)
|
if (RCC_ClkInitStruct->SYSCLKSource == RCC_SYSCLKSOURCE_HSE)
|
||||||
{
|
{
|
||||||
/* Check the HSE ready flag */
|
/* Check the HSE ready flag */
|
||||||
if(__HAL_RCC_GET_FLAG(RCC_FLAG_HSERDY) == RESET)
|
if (__HAL_RCC_GET_FLAG(RCC_FLAG_HSERDY) == RESET)
|
||||||
{
|
{
|
||||||
return HAL_ERROR;
|
return HAL_ERROR;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
/* PLL is selected as System Clock Source */
|
/* PLL is selected as System Clock Source */
|
||||||
else if(RCC_ClkInitStruct->SYSCLKSource == RCC_SYSCLKSOURCE_PLLCLK)
|
else if (RCC_ClkInitStruct->SYSCLKSource == RCC_SYSCLKSOURCE_PLLCLK)
|
||||||
{
|
{
|
||||||
/* Check the PLL ready flag */
|
/* Check the PLL ready flag */
|
||||||
if(__HAL_RCC_GET_FLAG(RCC_FLAG_PLLRDY) == RESET)
|
if (__HAL_RCC_GET_FLAG(RCC_FLAG_PLLRDY) == RESET)
|
||||||
{
|
{
|
||||||
return HAL_ERROR;
|
return HAL_ERROR;
|
||||||
}
|
}
|
||||||
|
@ -779,7 +800,7 @@ HAL_StatusTypeDef HAL_RCC_ClockConfig(RCC_ClkInitTypeDef *RCC_ClkInitStruct, ui
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
/* Check the HSI ready flag */
|
/* Check the HSI ready flag */
|
||||||
if(__HAL_RCC_GET_FLAG(RCC_FLAG_HSIRDY) == RESET)
|
if (__HAL_RCC_GET_FLAG(RCC_FLAG_HSIRDY) == RESET)
|
||||||
{
|
{
|
||||||
return HAL_ERROR;
|
return HAL_ERROR;
|
||||||
}
|
}
|
||||||
|
@ -800,38 +821,38 @@ HAL_StatusTypeDef HAL_RCC_ClockConfig(RCC_ClkInitTypeDef *RCC_ClkInitStruct, ui
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Decreasing the number of wait states because of lower CPU frequency */
|
/* Decreasing the number of wait states because of lower CPU frequency */
|
||||||
if(FLatency < __HAL_FLASH_GET_LATENCY())
|
if (FLatency < __HAL_FLASH_GET_LATENCY())
|
||||||
{
|
{
|
||||||
/* Program the new number of wait states to the LATENCY bits in the FLASH_ACR register */
|
/* Program the new number of wait states to the LATENCY bits in the FLASH_ACR register */
|
||||||
__HAL_FLASH_SET_LATENCY(FLatency);
|
__HAL_FLASH_SET_LATENCY(FLatency);
|
||||||
|
|
||||||
/* Check that the new number of wait states is taken into account to access the Flash
|
/* Check that the new number of wait states is taken into account to access the Flash
|
||||||
memory by reading the FLASH_ACR register */
|
memory by reading the FLASH_ACR register */
|
||||||
if(__HAL_FLASH_GET_LATENCY() != FLatency)
|
if (__HAL_FLASH_GET_LATENCY() != FLatency)
|
||||||
{
|
{
|
||||||
return HAL_ERROR;
|
return HAL_ERROR;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/*-------------------------- PCLK1 Configuration ---------------------------*/
|
/*-------------------------- PCLK1 Configuration ---------------------------*/
|
||||||
if(((RCC_ClkInitStruct->ClockType) & RCC_CLOCKTYPE_PCLK1) == RCC_CLOCKTYPE_PCLK1)
|
if (((RCC_ClkInitStruct->ClockType) & RCC_CLOCKTYPE_PCLK1) == RCC_CLOCKTYPE_PCLK1)
|
||||||
{
|
{
|
||||||
assert_param(IS_RCC_PCLK(RCC_ClkInitStruct->APB1CLKDivider));
|
assert_param(IS_RCC_PCLK(RCC_ClkInitStruct->APB1CLKDivider));
|
||||||
MODIFY_REG(RCC->CFGR, RCC_CFGR_PPRE1, RCC_ClkInitStruct->APB1CLKDivider);
|
MODIFY_REG(RCC->CFGR, RCC_CFGR_PPRE1, RCC_ClkInitStruct->APB1CLKDivider);
|
||||||
}
|
}
|
||||||
|
|
||||||
/*-------------------------- PCLK2 Configuration ---------------------------*/
|
/*-------------------------- PCLK2 Configuration ---------------------------*/
|
||||||
if(((RCC_ClkInitStruct->ClockType) & RCC_CLOCKTYPE_PCLK2) == RCC_CLOCKTYPE_PCLK2)
|
if (((RCC_ClkInitStruct->ClockType) & RCC_CLOCKTYPE_PCLK2) == RCC_CLOCKTYPE_PCLK2)
|
||||||
{
|
{
|
||||||
assert_param(IS_RCC_PCLK(RCC_ClkInitStruct->APB2CLKDivider));
|
assert_param(IS_RCC_PCLK(RCC_ClkInitStruct->APB2CLKDivider));
|
||||||
MODIFY_REG(RCC->CFGR, RCC_CFGR_PPRE2, ((RCC_ClkInitStruct->APB2CLKDivider) << 3));
|
MODIFY_REG(RCC->CFGR, RCC_CFGR_PPRE2, ((RCC_ClkInitStruct->APB2CLKDivider) << 3));
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Update the SystemCoreClock global variable */
|
/* Update the SystemCoreClock global variable */
|
||||||
SystemCoreClock = HAL_RCC_GetSysClockFreq() >> AHBPrescTable[(RCC->CFGR & RCC_CFGR_HPRE)>> RCC_CFGR_HPRE_Pos];
|
SystemCoreClock = HAL_RCC_GetSysClockFreq() >> AHBPrescTable[(RCC->CFGR & RCC_CFGR_HPRE) >> RCC_CFGR_HPRE_Pos];
|
||||||
|
|
||||||
/* Configure the source of time base considering new system clocks settings*/
|
/* Configure the source of time base considering new system clocks settings*/
|
||||||
HAL_InitTick (TICK_INT_PRIORITY);
|
HAL_InitTick(uwTickPrio);
|
||||||
|
|
||||||
return HAL_OK;
|
return HAL_OK;
|
||||||
}
|
}
|
||||||
|
@ -888,7 +909,7 @@ void HAL_RCC_MCOConfig(uint32_t RCC_MCOx, uint32_t RCC_MCOSource, uint32_t RCC_M
|
||||||
assert_param(IS_RCC_MCO(RCC_MCOx));
|
assert_param(IS_RCC_MCO(RCC_MCOx));
|
||||||
assert_param(IS_RCC_MCODIV(RCC_MCODiv));
|
assert_param(IS_RCC_MCODIV(RCC_MCODiv));
|
||||||
/* RCC_MCO1 */
|
/* RCC_MCO1 */
|
||||||
if(RCC_MCOx == RCC_MCO1)
|
if (RCC_MCOx == RCC_MCO1)
|
||||||
{
|
{
|
||||||
assert_param(IS_RCC_MCO1SOURCE(RCC_MCOSource));
|
assert_param(IS_RCC_MCO1SOURCE(RCC_MCOSource));
|
||||||
|
|
||||||
|
@ -990,7 +1011,7 @@ uint32_t HAL_RCC_GetSysClockFreq(void)
|
||||||
case RCC_SYSCLKSOURCE_STATUS_HSI: /* HSI used as system clock source */
|
case RCC_SYSCLKSOURCE_STATUS_HSI: /* HSI used as system clock source */
|
||||||
{
|
{
|
||||||
sysclockfreq = HSI_VALUE;
|
sysclockfreq = HSI_VALUE;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case RCC_SYSCLKSOURCE_STATUS_HSE: /* HSE used as system clock source */
|
case RCC_SYSCLKSOURCE_STATUS_HSE: /* HSE used as system clock source */
|
||||||
{
|
{
|
||||||
|
@ -1005,16 +1026,16 @@ uint32_t HAL_RCC_GetSysClockFreq(void)
|
||||||
if (__HAL_RCC_GET_PLL_OSCSOURCE() != RCC_PLLCFGR_PLLSRC_HSI)
|
if (__HAL_RCC_GET_PLL_OSCSOURCE() != RCC_PLLCFGR_PLLSRC_HSI)
|
||||||
{
|
{
|
||||||
/* HSE used as PLL clock source */
|
/* HSE used as PLL clock source */
|
||||||
pllvco = (uint32_t) ((((uint64_t) HSE_VALUE * ((uint64_t) ((RCC->PLLCFGR & RCC_PLLCFGR_PLLN) >> RCC_PLLCFGR_PLLN_Pos)))) / (uint64_t)pllm);
|
pllvco = (uint32_t)((((uint64_t) HSE_VALUE * ((uint64_t)((RCC->PLLCFGR & RCC_PLLCFGR_PLLN) >> RCC_PLLCFGR_PLLN_Pos)))) / (uint64_t)pllm);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
/* HSI used as PLL clock source */
|
/* HSI used as PLL clock source */
|
||||||
pllvco = (uint32_t) ((((uint64_t) HSI_VALUE * ((uint64_t) ((RCC->PLLCFGR & RCC_PLLCFGR_PLLN) >> RCC_PLLCFGR_PLLN_Pos)))) / (uint64_t)pllm);
|
pllvco = (uint32_t)((((uint64_t) HSI_VALUE * ((uint64_t)((RCC->PLLCFGR & RCC_PLLCFGR_PLLN) >> RCC_PLLCFGR_PLLN_Pos)))) / (uint64_t)pllm);
|
||||||
}
|
}
|
||||||
pllp = ((((RCC->PLLCFGR & RCC_PLLCFGR_PLLP) >> RCC_PLLCFGR_PLLP_Pos) + 1 ) *2);
|
pllp = ((((RCC->PLLCFGR & RCC_PLLCFGR_PLLP) >> RCC_PLLCFGR_PLLP_Pos) + 1) * 2);
|
||||||
|
|
||||||
sysclockfreq = pllvco/pllp;
|
sysclockfreq = pllvco / pllp;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
default:
|
default:
|
||||||
|
@ -1047,7 +1068,7 @@ uint32_t HAL_RCC_GetHCLKFreq(void)
|
||||||
uint32_t HAL_RCC_GetPCLK1Freq(void)
|
uint32_t HAL_RCC_GetPCLK1Freq(void)
|
||||||
{
|
{
|
||||||
/* Get HCLK source and Compute PCLK1 frequency ---------------------------*/
|
/* Get HCLK source and Compute PCLK1 frequency ---------------------------*/
|
||||||
return (HAL_RCC_GetHCLKFreq() >> APBPrescTable[(RCC->CFGR & RCC_CFGR_PPRE1)>> RCC_CFGR_PPRE1_Pos]);
|
return (HAL_RCC_GetHCLKFreq() >> APBPrescTable[(RCC->CFGR & RCC_CFGR_PPRE1) >> RCC_CFGR_PPRE1_Pos]);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -1059,7 +1080,7 @@ uint32_t HAL_RCC_GetPCLK1Freq(void)
|
||||||
uint32_t HAL_RCC_GetPCLK2Freq(void)
|
uint32_t HAL_RCC_GetPCLK2Freq(void)
|
||||||
{
|
{
|
||||||
/* Get HCLK source and Compute PCLK2 frequency ---------------------------*/
|
/* Get HCLK source and Compute PCLK2 frequency ---------------------------*/
|
||||||
return (HAL_RCC_GetHCLKFreq()>> APBPrescTable[(RCC->CFGR & RCC_CFGR_PPRE2)>> RCC_CFGR_PPRE2_Pos]);
|
return (HAL_RCC_GetHCLKFreq() >> APBPrescTable[(RCC->CFGR & RCC_CFGR_PPRE2) >> RCC_CFGR_PPRE2_Pos]);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -1075,11 +1096,11 @@ void HAL_RCC_GetOscConfig(RCC_OscInitTypeDef *RCC_OscInitStruct)
|
||||||
RCC_OscInitStruct->OscillatorType = RCC_OSCILLATORTYPE_HSE | RCC_OSCILLATORTYPE_HSI | RCC_OSCILLATORTYPE_LSE | RCC_OSCILLATORTYPE_LSI;
|
RCC_OscInitStruct->OscillatorType = RCC_OSCILLATORTYPE_HSE | RCC_OSCILLATORTYPE_HSI | RCC_OSCILLATORTYPE_LSE | RCC_OSCILLATORTYPE_LSI;
|
||||||
|
|
||||||
/* Get the HSE configuration -----------------------------------------------*/
|
/* Get the HSE configuration -----------------------------------------------*/
|
||||||
if((RCC->CR &RCC_CR_HSEBYP) == RCC_CR_HSEBYP)
|
if ((RCC->CR & RCC_CR_HSEBYP) == RCC_CR_HSEBYP)
|
||||||
{
|
{
|
||||||
RCC_OscInitStruct->HSEState = RCC_HSE_BYPASS;
|
RCC_OscInitStruct->HSEState = RCC_HSE_BYPASS;
|
||||||
}
|
}
|
||||||
else if((RCC->CR &RCC_CR_HSEON) == RCC_CR_HSEON)
|
else if ((RCC->CR & RCC_CR_HSEON) == RCC_CR_HSEON)
|
||||||
{
|
{
|
||||||
RCC_OscInitStruct->HSEState = RCC_HSE_ON;
|
RCC_OscInitStruct->HSEState = RCC_HSE_ON;
|
||||||
}
|
}
|
||||||
|
@ -1089,7 +1110,7 @@ void HAL_RCC_GetOscConfig(RCC_OscInitTypeDef *RCC_OscInitStruct)
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Get the HSI configuration -----------------------------------------------*/
|
/* Get the HSI configuration -----------------------------------------------*/
|
||||||
if((RCC->CR &RCC_CR_HSION) == RCC_CR_HSION)
|
if ((RCC->CR & RCC_CR_HSION) == RCC_CR_HSION)
|
||||||
{
|
{
|
||||||
RCC_OscInitStruct->HSIState = RCC_HSI_ON;
|
RCC_OscInitStruct->HSIState = RCC_HSI_ON;
|
||||||
}
|
}
|
||||||
|
@ -1098,14 +1119,14 @@ void HAL_RCC_GetOscConfig(RCC_OscInitTypeDef *RCC_OscInitStruct)
|
||||||
RCC_OscInitStruct->HSIState = RCC_HSI_OFF;
|
RCC_OscInitStruct->HSIState = RCC_HSI_OFF;
|
||||||
}
|
}
|
||||||
|
|
||||||
RCC_OscInitStruct->HSICalibrationValue = (uint32_t)((RCC->CR &RCC_CR_HSITRIM) >> RCC_CR_HSITRIM_Pos);
|
RCC_OscInitStruct->HSICalibrationValue = (uint32_t)((RCC->CR & RCC_CR_HSITRIM) >> RCC_CR_HSITRIM_Pos);
|
||||||
|
|
||||||
/* Get the LSE configuration -----------------------------------------------*/
|
/* Get the LSE configuration -----------------------------------------------*/
|
||||||
if((RCC->BDCR &RCC_BDCR_LSEBYP) == RCC_BDCR_LSEBYP)
|
if ((RCC->BDCR & RCC_BDCR_LSEBYP) == RCC_BDCR_LSEBYP)
|
||||||
{
|
{
|
||||||
RCC_OscInitStruct->LSEState = RCC_LSE_BYPASS;
|
RCC_OscInitStruct->LSEState = RCC_LSE_BYPASS;
|
||||||
}
|
}
|
||||||
else if((RCC->BDCR &RCC_BDCR_LSEON) == RCC_BDCR_LSEON)
|
else if ((RCC->BDCR & RCC_BDCR_LSEON) == RCC_BDCR_LSEON)
|
||||||
{
|
{
|
||||||
RCC_OscInitStruct->LSEState = RCC_LSE_ON;
|
RCC_OscInitStruct->LSEState = RCC_LSE_ON;
|
||||||
}
|
}
|
||||||
|
@ -1115,7 +1136,7 @@ void HAL_RCC_GetOscConfig(RCC_OscInitTypeDef *RCC_OscInitStruct)
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Get the LSI configuration -----------------------------------------------*/
|
/* Get the LSI configuration -----------------------------------------------*/
|
||||||
if((RCC->CSR &RCC_CSR_LSION) == RCC_CSR_LSION)
|
if ((RCC->CSR & RCC_CSR_LSION) == RCC_CSR_LSION)
|
||||||
{
|
{
|
||||||
RCC_OscInitStruct->LSIState = RCC_LSI_ON;
|
RCC_OscInitStruct->LSIState = RCC_LSI_ON;
|
||||||
}
|
}
|
||||||
|
@ -1125,7 +1146,7 @@ void HAL_RCC_GetOscConfig(RCC_OscInitTypeDef *RCC_OscInitStruct)
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Get the PLL configuration -----------------------------------------------*/
|
/* Get the PLL configuration -----------------------------------------------*/
|
||||||
if((RCC->CR &RCC_CR_PLLON) == RCC_CR_PLLON)
|
if ((RCC->CR & RCC_CR_PLLON) == RCC_CR_PLLON)
|
||||||
{
|
{
|
||||||
RCC_OscInitStruct->PLL.PLLState = RCC_PLL_ON;
|
RCC_OscInitStruct->PLL.PLLState = RCC_PLL_ON;
|
||||||
}
|
}
|
||||||
|
@ -1180,7 +1201,7 @@ void HAL_RCC_GetClockConfig(RCC_ClkInitTypeDef *RCC_ClkInitStruct, uint32_t *pF
|
||||||
void HAL_RCC_NMI_IRQHandler(void)
|
void HAL_RCC_NMI_IRQHandler(void)
|
||||||
{
|
{
|
||||||
/* Check RCC CSSF flag */
|
/* Check RCC CSSF flag */
|
||||||
if(__HAL_RCC_GET_IT(RCC_IT_CSS))
|
if (__HAL_RCC_GET_IT(RCC_IT_CSS))
|
||||||
{
|
{
|
||||||
/* RCC Clock Security System interrupt user callback */
|
/* RCC Clock Security System interrupt user callback */
|
||||||
HAL_RCC_CSSCallback();
|
HAL_RCC_CSSCallback();
|
||||||
|
|
|
@ -98,18 +98,22 @@
|
||||||
*** Callback registration ***
|
*** Callback registration ***
|
||||||
=============================================
|
=============================================
|
||||||
|
|
||||||
|
[..]
|
||||||
The compilation define USE_HAL_TIM_REGISTER_CALLBACKS when set to 1
|
The compilation define USE_HAL_TIM_REGISTER_CALLBACKS when set to 1
|
||||||
allows the user to configure dynamically the driver callbacks.
|
allows the user to configure dynamically the driver callbacks.
|
||||||
|
|
||||||
|
[..]
|
||||||
Use Function @ref HAL_TIM_RegisterCallback() to register a callback.
|
Use Function @ref HAL_TIM_RegisterCallback() to register a callback.
|
||||||
@ref HAL_TIM_RegisterCallback() takes as parameters the HAL peripheral handle,
|
@ref HAL_TIM_RegisterCallback() takes as parameters the HAL peripheral handle,
|
||||||
the Callback ID and a pointer to the user callback function.
|
the Callback ID and a pointer to the user callback function.
|
||||||
|
|
||||||
|
[..]
|
||||||
Use function @ref HAL_TIM_UnRegisterCallback() to reset a callback to the default
|
Use function @ref HAL_TIM_UnRegisterCallback() to reset a callback to the default
|
||||||
weak function.
|
weak function.
|
||||||
@ref HAL_TIM_UnRegisterCallback takes as parameters the HAL peripheral handle,
|
@ref HAL_TIM_UnRegisterCallback takes as parameters the HAL peripheral handle,
|
||||||
and the Callback ID.
|
and the Callback ID.
|
||||||
|
|
||||||
|
[..]
|
||||||
These functions allow to register/unregister following callbacks:
|
These functions allow to register/unregister following callbacks:
|
||||||
(+) Base_MspInitCallback : TIM Base Msp Init Callback.
|
(+) Base_MspInitCallback : TIM Base Msp Init Callback.
|
||||||
(+) Base_MspDeInitCallback : TIM Base Msp DeInit Callback.
|
(+) Base_MspDeInitCallback : TIM Base Msp DeInit Callback.
|
||||||
|
@ -140,15 +144,18 @@
|
||||||
(+) BreakCallback : TIM Break Callback.
|
(+) BreakCallback : TIM Break Callback.
|
||||||
(+) Break2Callback : TIM Break2 Callback.
|
(+) Break2Callback : TIM Break2 Callback.
|
||||||
|
|
||||||
|
[..]
|
||||||
By default, after the Init and when the state is HAL_TIM_STATE_RESET
|
By default, after the Init and when the state is HAL_TIM_STATE_RESET
|
||||||
all interrupt callbacks are set to the corresponding weak functions:
|
all interrupt callbacks are set to the corresponding weak functions:
|
||||||
examples @ref HAL_TIM_TriggerCallback(), @ref HAL_TIM_ErrorCallback().
|
examples @ref HAL_TIM_TriggerCallback(), @ref HAL_TIM_ErrorCallback().
|
||||||
|
|
||||||
|
[..]
|
||||||
Exception done for MspInit and MspDeInit functions that are reset to the legacy weak
|
Exception done for MspInit and MspDeInit functions that are reset to the legacy weak
|
||||||
functionalities in the Init / DeInit only when these callbacks are null
|
functionalities in the Init / DeInit only when these callbacks are null
|
||||||
(not registered beforehand). If not, MspInit or MspDeInit are not null, the Init / DeInit
|
(not registered beforehand). If not, MspInit or MspDeInit are not null, the Init / DeInit
|
||||||
keep and use the user MspInit / MspDeInit callbacks(registered beforehand)
|
keep and use the user MspInit / MspDeInit callbacks(registered beforehand)
|
||||||
|
|
||||||
|
[..]
|
||||||
Callbacks can be registered / unregistered in HAL_TIM_STATE_READY state only.
|
Callbacks can be registered / unregistered in HAL_TIM_STATE_READY state only.
|
||||||
Exception done MspInit / MspDeInit that can be registered / unregistered
|
Exception done MspInit / MspDeInit that can be registered / unregistered
|
||||||
in HAL_TIM_STATE_READY or HAL_TIM_STATE_RESET state,
|
in HAL_TIM_STATE_READY or HAL_TIM_STATE_RESET state,
|
||||||
|
@ -156,6 +163,7 @@ all interrupt callbacks are set to the corresponding weak functions:
|
||||||
In that case first register the MspInit/MspDeInit user callbacks
|
In that case first register the MspInit/MspDeInit user callbacks
|
||||||
using @ref HAL_TIM_RegisterCallback() before calling DeInit or Init function.
|
using @ref HAL_TIM_RegisterCallback() before calling DeInit or Init function.
|
||||||
|
|
||||||
|
[..]
|
||||||
When The compilation define USE_HAL_TIM_REGISTER_CALLBACKS is set to 0 or
|
When The compilation define USE_HAL_TIM_REGISTER_CALLBACKS is set to 0 or
|
||||||
not defined, the callback registration feature is not available and all callbacks
|
not defined, the callback registration feature is not available and all callbacks
|
||||||
are set to the corresponding weak functions.
|
are set to the corresponding weak functions.
|
||||||
|
@ -216,7 +224,7 @@ static void TIM_DMAPeriodElapsedHalfCplt(DMA_HandleTypeDef *hdma);
|
||||||
static void TIM_DMATriggerCplt(DMA_HandleTypeDef *hdma);
|
static void TIM_DMATriggerCplt(DMA_HandleTypeDef *hdma);
|
||||||
static void TIM_DMATriggerHalfCplt(DMA_HandleTypeDef *hdma);
|
static void TIM_DMATriggerHalfCplt(DMA_HandleTypeDef *hdma);
|
||||||
static HAL_StatusTypeDef TIM_SlaveTimer_SetConfig(TIM_HandleTypeDef *htim,
|
static HAL_StatusTypeDef TIM_SlaveTimer_SetConfig(TIM_HandleTypeDef *htim,
|
||||||
TIM_SlaveConfigTypeDef *sSlaveConfig);
|
TIM_SlaveConfigTypeDef *sSlaveConfig);
|
||||||
/**
|
/**
|
||||||
* @}
|
* @}
|
||||||
*/
|
*/
|
||||||
|
@ -227,8 +235,8 @@ static HAL_StatusTypeDef TIM_SlaveTimer_SetConfig(TIM_HandleTypeDef *htim,
|
||||||
*/
|
*/
|
||||||
|
|
||||||
/** @defgroup TIM_Exported_Functions_Group1 TIM Time Base functions
|
/** @defgroup TIM_Exported_Functions_Group1 TIM Time Base functions
|
||||||
* @brief Time Base functions
|
* @brief Time Base functions
|
||||||
*
|
*
|
||||||
@verbatim
|
@verbatim
|
||||||
==============================================================================
|
==============================================================================
|
||||||
##### Time Base functions #####
|
##### Time Base functions #####
|
||||||
|
@ -482,11 +490,11 @@ HAL_StatusTypeDef HAL_TIM_Base_Start_DMA(TIM_HandleTypeDef *htim, uint32_t *pDat
|
||||||
/* Check the parameters */
|
/* Check the parameters */
|
||||||
assert_param(IS_TIM_DMA_INSTANCE(htim->Instance));
|
assert_param(IS_TIM_DMA_INSTANCE(htim->Instance));
|
||||||
|
|
||||||
if ((htim->State == HAL_TIM_STATE_BUSY))
|
if (htim->State == HAL_TIM_STATE_BUSY)
|
||||||
{
|
{
|
||||||
return HAL_BUSY;
|
return HAL_BUSY;
|
||||||
}
|
}
|
||||||
else if ((htim->State == HAL_TIM_STATE_READY))
|
else if (htim->State == HAL_TIM_STATE_READY)
|
||||||
{
|
{
|
||||||
if ((pData == NULL) && (Length > 0U))
|
if ((pData == NULL) && (Length > 0U))
|
||||||
{
|
{
|
||||||
|
@ -559,8 +567,8 @@ HAL_StatusTypeDef HAL_TIM_Base_Stop_DMA(TIM_HandleTypeDef *htim)
|
||||||
*/
|
*/
|
||||||
|
|
||||||
/** @defgroup TIM_Exported_Functions_Group2 TIM Output Compare functions
|
/** @defgroup TIM_Exported_Functions_Group2 TIM Output Compare functions
|
||||||
* @brief TIM Output Compare functions
|
* @brief TIM Output Compare functions
|
||||||
*
|
*
|
||||||
@verbatim
|
@verbatim
|
||||||
==============================================================================
|
==============================================================================
|
||||||
##### TIM Output Compare functions #####
|
##### TIM Output Compare functions #####
|
||||||
|
@ -929,16 +937,16 @@ HAL_StatusTypeDef HAL_TIM_OC_Stop_IT(TIM_HandleTypeDef *htim, uint32_t Channel)
|
||||||
*/
|
*/
|
||||||
HAL_StatusTypeDef HAL_TIM_OC_Start_DMA(TIM_HandleTypeDef *htim, uint32_t Channel, uint32_t *pData, uint16_t Length)
|
HAL_StatusTypeDef HAL_TIM_OC_Start_DMA(TIM_HandleTypeDef *htim, uint32_t Channel, uint32_t *pData, uint16_t Length)
|
||||||
{
|
{
|
||||||
uint32_t tmpsmcr;
|
uint32_t tmpsmcr;
|
||||||
|
|
||||||
/* Check the parameters */
|
/* Check the parameters */
|
||||||
assert_param(IS_TIM_CCX_INSTANCE(htim->Instance, Channel));
|
assert_param(IS_TIM_CCX_INSTANCE(htim->Instance, Channel));
|
||||||
|
|
||||||
if ((htim->State == HAL_TIM_STATE_BUSY))
|
if (htim->State == HAL_TIM_STATE_BUSY)
|
||||||
{
|
{
|
||||||
return HAL_BUSY;
|
return HAL_BUSY;
|
||||||
}
|
}
|
||||||
else if ((htim->State == HAL_TIM_STATE_READY))
|
else if (htim->State == HAL_TIM_STATE_READY)
|
||||||
{
|
{
|
||||||
if ((pData == NULL) && (Length > 0U))
|
if ((pData == NULL) && (Length > 0U))
|
||||||
{
|
{
|
||||||
|
@ -1136,8 +1144,8 @@ HAL_StatusTypeDef HAL_TIM_OC_Stop_DMA(TIM_HandleTypeDef *htim, uint32_t Channel)
|
||||||
*/
|
*/
|
||||||
|
|
||||||
/** @defgroup TIM_Exported_Functions_Group3 TIM PWM functions
|
/** @defgroup TIM_Exported_Functions_Group3 TIM PWM functions
|
||||||
* @brief TIM PWM functions
|
* @brief TIM PWM functions
|
||||||
*
|
*
|
||||||
@verbatim
|
@verbatim
|
||||||
==============================================================================
|
==============================================================================
|
||||||
##### TIM PWM functions #####
|
##### TIM PWM functions #####
|
||||||
|
@ -1513,11 +1521,11 @@ HAL_StatusTypeDef HAL_TIM_PWM_Start_DMA(TIM_HandleTypeDef *htim, uint32_t Channe
|
||||||
/* Check the parameters */
|
/* Check the parameters */
|
||||||
assert_param(IS_TIM_CCX_INSTANCE(htim->Instance, Channel));
|
assert_param(IS_TIM_CCX_INSTANCE(htim->Instance, Channel));
|
||||||
|
|
||||||
if ((htim->State == HAL_TIM_STATE_BUSY))
|
if (htim->State == HAL_TIM_STATE_BUSY)
|
||||||
{
|
{
|
||||||
return HAL_BUSY;
|
return HAL_BUSY;
|
||||||
}
|
}
|
||||||
else if ((htim->State == HAL_TIM_STATE_READY))
|
else if (htim->State == HAL_TIM_STATE_READY)
|
||||||
{
|
{
|
||||||
if ((pData == NULL) && (Length > 0U))
|
if ((pData == NULL) && (Length > 0U))
|
||||||
{
|
{
|
||||||
|
@ -1714,8 +1722,8 @@ HAL_StatusTypeDef HAL_TIM_PWM_Stop_DMA(TIM_HandleTypeDef *htim, uint32_t Channel
|
||||||
*/
|
*/
|
||||||
|
|
||||||
/** @defgroup TIM_Exported_Functions_Group4 TIM Input Capture functions
|
/** @defgroup TIM_Exported_Functions_Group4 TIM Input Capture functions
|
||||||
* @brief TIM Input Capture functions
|
* @brief TIM Input Capture functions
|
||||||
*
|
*
|
||||||
@verbatim
|
@verbatim
|
||||||
==============================================================================
|
==============================================================================
|
||||||
##### TIM Input Capture functions #####
|
##### TIM Input Capture functions #####
|
||||||
|
@ -2061,11 +2069,11 @@ HAL_StatusTypeDef HAL_TIM_IC_Start_DMA(TIM_HandleTypeDef *htim, uint32_t Channel
|
||||||
assert_param(IS_TIM_CCX_INSTANCE(htim->Instance, Channel));
|
assert_param(IS_TIM_CCX_INSTANCE(htim->Instance, Channel));
|
||||||
assert_param(IS_TIM_DMA_CC_INSTANCE(htim->Instance));
|
assert_param(IS_TIM_DMA_CC_INSTANCE(htim->Instance));
|
||||||
|
|
||||||
if ((htim->State == HAL_TIM_STATE_BUSY))
|
if (htim->State == HAL_TIM_STATE_BUSY)
|
||||||
{
|
{
|
||||||
return HAL_BUSY;
|
return HAL_BUSY;
|
||||||
}
|
}
|
||||||
else if ((htim->State == HAL_TIM_STATE_READY))
|
else if (htim->State == HAL_TIM_STATE_READY)
|
||||||
{
|
{
|
||||||
if ((pData == NULL) && (Length > 0U))
|
if ((pData == NULL) && (Length > 0U))
|
||||||
{
|
{
|
||||||
|
@ -2249,8 +2257,8 @@ HAL_StatusTypeDef HAL_TIM_IC_Stop_DMA(TIM_HandleTypeDef *htim, uint32_t Channel)
|
||||||
*/
|
*/
|
||||||
|
|
||||||
/** @defgroup TIM_Exported_Functions_Group5 TIM One Pulse functions
|
/** @defgroup TIM_Exported_Functions_Group5 TIM One Pulse functions
|
||||||
* @brief TIM One Pulse functions
|
* @brief TIM One Pulse functions
|
||||||
*
|
*
|
||||||
@verbatim
|
@verbatim
|
||||||
==============================================================================
|
==============================================================================
|
||||||
##### TIM One Pulse functions #####
|
##### TIM One Pulse functions #####
|
||||||
|
@ -2563,8 +2571,8 @@ HAL_StatusTypeDef HAL_TIM_OnePulse_Stop_IT(TIM_HandleTypeDef *htim, uint32_t Out
|
||||||
*/
|
*/
|
||||||
|
|
||||||
/** @defgroup TIM_Exported_Functions_Group6 TIM Encoder functions
|
/** @defgroup TIM_Exported_Functions_Group6 TIM Encoder functions
|
||||||
* @brief TIM Encoder functions
|
* @brief TIM Encoder functions
|
||||||
*
|
*
|
||||||
@verbatim
|
@verbatim
|
||||||
==============================================================================
|
==============================================================================
|
||||||
##### TIM Encoder functions #####
|
##### TIM Encoder functions #####
|
||||||
|
@ -2609,15 +2617,15 @@ HAL_StatusTypeDef HAL_TIM_Encoder_Init(TIM_HandleTypeDef *htim, TIM_Encoder_Ini
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Check the parameters */
|
/* Check the parameters */
|
||||||
|
assert_param(IS_TIM_ENCODER_INTERFACE_INSTANCE(htim->Instance));
|
||||||
assert_param(IS_TIM_COUNTER_MODE(htim->Init.CounterMode));
|
assert_param(IS_TIM_COUNTER_MODE(htim->Init.CounterMode));
|
||||||
assert_param(IS_TIM_CLOCKDIVISION_DIV(htim->Init.ClockDivision));
|
assert_param(IS_TIM_CLOCKDIVISION_DIV(htim->Init.ClockDivision));
|
||||||
assert_param(IS_TIM_AUTORELOAD_PRELOAD(htim->Init.AutoReloadPreload));
|
assert_param(IS_TIM_AUTORELOAD_PRELOAD(htim->Init.AutoReloadPreload));
|
||||||
assert_param(IS_TIM_CC2_INSTANCE(htim->Instance));
|
|
||||||
assert_param(IS_TIM_ENCODER_MODE(sConfig->EncoderMode));
|
assert_param(IS_TIM_ENCODER_MODE(sConfig->EncoderMode));
|
||||||
assert_param(IS_TIM_IC_SELECTION(sConfig->IC1Selection));
|
assert_param(IS_TIM_IC_SELECTION(sConfig->IC1Selection));
|
||||||
assert_param(IS_TIM_IC_SELECTION(sConfig->IC2Selection));
|
assert_param(IS_TIM_IC_SELECTION(sConfig->IC2Selection));
|
||||||
assert_param(IS_TIM_IC_POLARITY(sConfig->IC1Polarity));
|
assert_param(IS_TIM_ENCODERINPUT_POLARITY(sConfig->IC1Polarity));
|
||||||
assert_param(IS_TIM_IC_POLARITY(sConfig->IC2Polarity));
|
assert_param(IS_TIM_ENCODERINPUT_POLARITY(sConfig->IC2Polarity));
|
||||||
assert_param(IS_TIM_IC_PRESCALER(sConfig->IC1Prescaler));
|
assert_param(IS_TIM_IC_PRESCALER(sConfig->IC1Prescaler));
|
||||||
assert_param(IS_TIM_IC_PRESCALER(sConfig->IC2Prescaler));
|
assert_param(IS_TIM_IC_PRESCALER(sConfig->IC2Prescaler));
|
||||||
assert_param(IS_TIM_IC_FILTER(sConfig->IC1Filter));
|
assert_param(IS_TIM_IC_FILTER(sConfig->IC1Filter));
|
||||||
|
@ -2775,7 +2783,7 @@ __weak void HAL_TIM_Encoder_MspDeInit(TIM_HandleTypeDef *htim)
|
||||||
HAL_StatusTypeDef HAL_TIM_Encoder_Start(TIM_HandleTypeDef *htim, uint32_t Channel)
|
HAL_StatusTypeDef HAL_TIM_Encoder_Start(TIM_HandleTypeDef *htim, uint32_t Channel)
|
||||||
{
|
{
|
||||||
/* Check the parameters */
|
/* Check the parameters */
|
||||||
assert_param(IS_TIM_CC2_INSTANCE(htim->Instance));
|
assert_param(IS_TIM_ENCODER_INTERFACE_INSTANCE(htim->Instance));
|
||||||
|
|
||||||
/* Enable the encoder interface channels */
|
/* Enable the encoder interface channels */
|
||||||
switch (Channel)
|
switch (Channel)
|
||||||
|
@ -2819,7 +2827,7 @@ HAL_StatusTypeDef HAL_TIM_Encoder_Start(TIM_HandleTypeDef *htim, uint32_t Channe
|
||||||
HAL_StatusTypeDef HAL_TIM_Encoder_Stop(TIM_HandleTypeDef *htim, uint32_t Channel)
|
HAL_StatusTypeDef HAL_TIM_Encoder_Stop(TIM_HandleTypeDef *htim, uint32_t Channel)
|
||||||
{
|
{
|
||||||
/* Check the parameters */
|
/* Check the parameters */
|
||||||
assert_param(IS_TIM_CC2_INSTANCE(htim->Instance));
|
assert_param(IS_TIM_ENCODER_INTERFACE_INSTANCE(htim->Instance));
|
||||||
|
|
||||||
/* Disable the Input Capture channels 1 and 2
|
/* Disable the Input Capture channels 1 and 2
|
||||||
(in the EncoderInterface the two possible channels that can be used are TIM_CHANNEL_1 and TIM_CHANNEL_2) */
|
(in the EncoderInterface the two possible channels that can be used are TIM_CHANNEL_1 and TIM_CHANNEL_2) */
|
||||||
|
@ -2865,7 +2873,7 @@ HAL_StatusTypeDef HAL_TIM_Encoder_Stop(TIM_HandleTypeDef *htim, uint32_t Channel
|
||||||
HAL_StatusTypeDef HAL_TIM_Encoder_Start_IT(TIM_HandleTypeDef *htim, uint32_t Channel)
|
HAL_StatusTypeDef HAL_TIM_Encoder_Start_IT(TIM_HandleTypeDef *htim, uint32_t Channel)
|
||||||
{
|
{
|
||||||
/* Check the parameters */
|
/* Check the parameters */
|
||||||
assert_param(IS_TIM_CC2_INSTANCE(htim->Instance));
|
assert_param(IS_TIM_ENCODER_INTERFACE_INSTANCE(htim->Instance));
|
||||||
|
|
||||||
/* Enable the encoder interface channels */
|
/* Enable the encoder interface channels */
|
||||||
/* Enable the capture compare Interrupts 1 and/or 2 */
|
/* Enable the capture compare Interrupts 1 and/or 2 */
|
||||||
|
@ -2915,7 +2923,7 @@ HAL_StatusTypeDef HAL_TIM_Encoder_Start_IT(TIM_HandleTypeDef *htim, uint32_t Cha
|
||||||
HAL_StatusTypeDef HAL_TIM_Encoder_Stop_IT(TIM_HandleTypeDef *htim, uint32_t Channel)
|
HAL_StatusTypeDef HAL_TIM_Encoder_Stop_IT(TIM_HandleTypeDef *htim, uint32_t Channel)
|
||||||
{
|
{
|
||||||
/* Check the parameters */
|
/* Check the parameters */
|
||||||
assert_param(IS_TIM_CC2_INSTANCE(htim->Instance));
|
assert_param(IS_TIM_ENCODER_INTERFACE_INSTANCE(htim->Instance));
|
||||||
|
|
||||||
/* Disable the Input Capture channels 1 and 2
|
/* Disable the Input Capture channels 1 and 2
|
||||||
(in the EncoderInterface the two possible channels that can be used are TIM_CHANNEL_1 and TIM_CHANNEL_2) */
|
(in the EncoderInterface the two possible channels that can be used are TIM_CHANNEL_1 and TIM_CHANNEL_2) */
|
||||||
|
@ -2966,16 +2974,17 @@ HAL_StatusTypeDef HAL_TIM_Encoder_Stop_IT(TIM_HandleTypeDef *htim, uint32_t Chan
|
||||||
* @param Length The length of data to be transferred from TIM peripheral to memory.
|
* @param Length The length of data to be transferred from TIM peripheral to memory.
|
||||||
* @retval HAL status
|
* @retval HAL status
|
||||||
*/
|
*/
|
||||||
HAL_StatusTypeDef HAL_TIM_Encoder_Start_DMA(TIM_HandleTypeDef *htim, uint32_t Channel, uint32_t *pData1, uint32_t *pData2, uint16_t Length)
|
HAL_StatusTypeDef HAL_TIM_Encoder_Start_DMA(TIM_HandleTypeDef *htim, uint32_t Channel, uint32_t *pData1,
|
||||||
|
uint32_t *pData2, uint16_t Length)
|
||||||
{
|
{
|
||||||
/* Check the parameters */
|
/* Check the parameters */
|
||||||
assert_param(IS_TIM_DMA_CC_INSTANCE(htim->Instance));
|
assert_param(IS_TIM_ENCODER_INTERFACE_INSTANCE(htim->Instance));
|
||||||
|
|
||||||
if ((htim->State == HAL_TIM_STATE_BUSY))
|
if (htim->State == HAL_TIM_STATE_BUSY)
|
||||||
{
|
{
|
||||||
return HAL_BUSY;
|
return HAL_BUSY;
|
||||||
}
|
}
|
||||||
else if ((htim->State == HAL_TIM_STATE_READY))
|
else if (htim->State == HAL_TIM_STATE_READY)
|
||||||
{
|
{
|
||||||
if ((((pData1 == NULL) || (pData2 == NULL))) && (Length > 0U))
|
if ((((pData1 == NULL) || (pData2 == NULL))) && (Length > 0U))
|
||||||
{
|
{
|
||||||
|
@ -3103,7 +3112,7 @@ HAL_StatusTypeDef HAL_TIM_Encoder_Start_DMA(TIM_HandleTypeDef *htim, uint32_t Ch
|
||||||
HAL_StatusTypeDef HAL_TIM_Encoder_Stop_DMA(TIM_HandleTypeDef *htim, uint32_t Channel)
|
HAL_StatusTypeDef HAL_TIM_Encoder_Stop_DMA(TIM_HandleTypeDef *htim, uint32_t Channel)
|
||||||
{
|
{
|
||||||
/* Check the parameters */
|
/* Check the parameters */
|
||||||
assert_param(IS_TIM_DMA_CC_INSTANCE(htim->Instance));
|
assert_param(IS_TIM_ENCODER_INTERFACE_INSTANCE(htim->Instance));
|
||||||
|
|
||||||
/* Disable the Input Capture channels 1 and 2
|
/* Disable the Input Capture channels 1 and 2
|
||||||
(in the EncoderInterface the two possible channels that can be used are TIM_CHANNEL_1 and TIM_CHANNEL_2) */
|
(in the EncoderInterface the two possible channels that can be used are TIM_CHANNEL_1 and TIM_CHANNEL_2) */
|
||||||
|
@ -3149,8 +3158,8 @@ HAL_StatusTypeDef HAL_TIM_Encoder_Stop_DMA(TIM_HandleTypeDef *htim, uint32_t Cha
|
||||||
* @}
|
* @}
|
||||||
*/
|
*/
|
||||||
/** @defgroup TIM_Exported_Functions_Group7 TIM IRQ handler management
|
/** @defgroup TIM_Exported_Functions_Group7 TIM IRQ handler management
|
||||||
* @brief TIM IRQ handler management
|
* @brief TIM IRQ handler management
|
||||||
*
|
*
|
||||||
@verbatim
|
@verbatim
|
||||||
==============================================================================
|
==============================================================================
|
||||||
##### IRQ handler management #####
|
##### IRQ handler management #####
|
||||||
|
@ -3363,8 +3372,8 @@ void HAL_TIM_IRQHandler(TIM_HandleTypeDef *htim)
|
||||||
*/
|
*/
|
||||||
|
|
||||||
/** @defgroup TIM_Exported_Functions_Group8 TIM Peripheral Control functions
|
/** @defgroup TIM_Exported_Functions_Group8 TIM Peripheral Control functions
|
||||||
* @brief TIM Peripheral Control functions
|
* @brief TIM Peripheral Control functions
|
||||||
*
|
*
|
||||||
@verbatim
|
@verbatim
|
||||||
==============================================================================
|
==============================================================================
|
||||||
##### Peripheral Control functions #####
|
##### Peripheral Control functions #####
|
||||||
|
@ -3738,9 +3747,14 @@ HAL_StatusTypeDef HAL_TIM_PWM_ConfigChannel(TIM_HandleTypeDef *htim,
|
||||||
* This parameter can be one of the following values:
|
* This parameter can be one of the following values:
|
||||||
* @arg TIM_CHANNEL_1: TIM Channel 1 selected
|
* @arg TIM_CHANNEL_1: TIM Channel 1 selected
|
||||||
* @arg TIM_CHANNEL_2: TIM Channel 2 selected
|
* @arg TIM_CHANNEL_2: TIM Channel 2 selected
|
||||||
|
* @note To output a waveform with a minimum delay user can enable the fast
|
||||||
|
* mode by calling the @ref __HAL_TIM_ENABLE_OCxFAST macro. Then CCx
|
||||||
|
* output is forced in response to the edge detection on TIx input,
|
||||||
|
* without taking in account the comparison.
|
||||||
* @retval HAL status
|
* @retval HAL status
|
||||||
*/
|
*/
|
||||||
HAL_StatusTypeDef HAL_TIM_OnePulse_ConfigChannel(TIM_HandleTypeDef *htim, TIM_OnePulse_InitTypeDef *sConfig, uint32_t OutputChannel, uint32_t InputChannel)
|
HAL_StatusTypeDef HAL_TIM_OnePulse_ConfigChannel(TIM_HandleTypeDef *htim, TIM_OnePulse_InitTypeDef *sConfig,
|
||||||
|
uint32_t OutputChannel, uint32_t InputChannel)
|
||||||
{
|
{
|
||||||
TIM_OC_InitTypeDef temp1;
|
TIM_OC_InitTypeDef temp1;
|
||||||
|
|
||||||
|
@ -3894,11 +3908,11 @@ HAL_StatusTypeDef HAL_TIM_DMABurst_WriteStart(TIM_HandleTypeDef *htim, uint32_t
|
||||||
assert_param(IS_TIM_DMA_SOURCE(BurstRequestSrc));
|
assert_param(IS_TIM_DMA_SOURCE(BurstRequestSrc));
|
||||||
assert_param(IS_TIM_DMA_LENGTH(BurstLength));
|
assert_param(IS_TIM_DMA_LENGTH(BurstLength));
|
||||||
|
|
||||||
if ((htim->State == HAL_TIM_STATE_BUSY))
|
if (htim->State == HAL_TIM_STATE_BUSY)
|
||||||
{
|
{
|
||||||
return HAL_BUSY;
|
return HAL_BUSY;
|
||||||
}
|
}
|
||||||
else if ((htim->State == HAL_TIM_STATE_READY))
|
else if (htim->State == HAL_TIM_STATE_READY)
|
||||||
{
|
{
|
||||||
if ((BurstBuffer == NULL) && (BurstLength > 0U))
|
if ((BurstBuffer == NULL) && (BurstLength > 0U))
|
||||||
{
|
{
|
||||||
|
@ -3941,7 +3955,8 @@ HAL_StatusTypeDef HAL_TIM_DMABurst_WriteStart(TIM_HandleTypeDef *htim, uint32_t
|
||||||
htim->hdma[TIM_DMA_ID_CC1]->XferErrorCallback = TIM_DMAError ;
|
htim->hdma[TIM_DMA_ID_CC1]->XferErrorCallback = TIM_DMAError ;
|
||||||
|
|
||||||
/* Enable the DMA stream */
|
/* Enable the DMA stream */
|
||||||
if (HAL_DMA_Start_IT(htim->hdma[TIM_DMA_ID_CC1], (uint32_t)BurstBuffer, (uint32_t)&htim->Instance->DMAR, ((BurstLength) >> 8U) + 1U) != HAL_OK)
|
if (HAL_DMA_Start_IT(htim->hdma[TIM_DMA_ID_CC1], (uint32_t)BurstBuffer,
|
||||||
|
(uint32_t)&htim->Instance->DMAR, ((BurstLength) >> 8U) + 1U) != HAL_OK)
|
||||||
{
|
{
|
||||||
return HAL_ERROR;
|
return HAL_ERROR;
|
||||||
}
|
}
|
||||||
|
@ -3957,7 +3972,8 @@ HAL_StatusTypeDef HAL_TIM_DMABurst_WriteStart(TIM_HandleTypeDef *htim, uint32_t
|
||||||
htim->hdma[TIM_DMA_ID_CC2]->XferErrorCallback = TIM_DMAError ;
|
htim->hdma[TIM_DMA_ID_CC2]->XferErrorCallback = TIM_DMAError ;
|
||||||
|
|
||||||
/* Enable the DMA stream */
|
/* Enable the DMA stream */
|
||||||
if (HAL_DMA_Start_IT(htim->hdma[TIM_DMA_ID_CC2], (uint32_t)BurstBuffer, (uint32_t)&htim->Instance->DMAR, ((BurstLength) >> 8U) + 1U) != HAL_OK)
|
if (HAL_DMA_Start_IT(htim->hdma[TIM_DMA_ID_CC2], (uint32_t)BurstBuffer,
|
||||||
|
(uint32_t)&htim->Instance->DMAR, ((BurstLength) >> 8U) + 1U) != HAL_OK)
|
||||||
{
|
{
|
||||||
return HAL_ERROR;
|
return HAL_ERROR;
|
||||||
}
|
}
|
||||||
|
@ -3973,7 +3989,8 @@ HAL_StatusTypeDef HAL_TIM_DMABurst_WriteStart(TIM_HandleTypeDef *htim, uint32_t
|
||||||
htim->hdma[TIM_DMA_ID_CC3]->XferErrorCallback = TIM_DMAError ;
|
htim->hdma[TIM_DMA_ID_CC3]->XferErrorCallback = TIM_DMAError ;
|
||||||
|
|
||||||
/* Enable the DMA stream */
|
/* Enable the DMA stream */
|
||||||
if (HAL_DMA_Start_IT(htim->hdma[TIM_DMA_ID_CC3], (uint32_t)BurstBuffer, (uint32_t)&htim->Instance->DMAR, ((BurstLength) >> 8U) + 1U) != HAL_OK)
|
if (HAL_DMA_Start_IT(htim->hdma[TIM_DMA_ID_CC3], (uint32_t)BurstBuffer,
|
||||||
|
(uint32_t)&htim->Instance->DMAR, ((BurstLength) >> 8U) + 1U) != HAL_OK)
|
||||||
{
|
{
|
||||||
return HAL_ERROR;
|
return HAL_ERROR;
|
||||||
}
|
}
|
||||||
|
@ -3989,7 +4006,8 @@ HAL_StatusTypeDef HAL_TIM_DMABurst_WriteStart(TIM_HandleTypeDef *htim, uint32_t
|
||||||
htim->hdma[TIM_DMA_ID_CC4]->XferErrorCallback = TIM_DMAError ;
|
htim->hdma[TIM_DMA_ID_CC4]->XferErrorCallback = TIM_DMAError ;
|
||||||
|
|
||||||
/* Enable the DMA stream */
|
/* Enable the DMA stream */
|
||||||
if (HAL_DMA_Start_IT(htim->hdma[TIM_DMA_ID_CC4], (uint32_t)BurstBuffer, (uint32_t)&htim->Instance->DMAR, ((BurstLength) >> 8U) + 1U) != HAL_OK)
|
if (HAL_DMA_Start_IT(htim->hdma[TIM_DMA_ID_CC4], (uint32_t)BurstBuffer,
|
||||||
|
(uint32_t)&htim->Instance->DMAR, ((BurstLength) >> 8U) + 1U) != HAL_OK)
|
||||||
{
|
{
|
||||||
return HAL_ERROR;
|
return HAL_ERROR;
|
||||||
}
|
}
|
||||||
|
@ -4005,7 +4023,8 @@ HAL_StatusTypeDef HAL_TIM_DMABurst_WriteStart(TIM_HandleTypeDef *htim, uint32_t
|
||||||
htim->hdma[TIM_DMA_ID_COMMUTATION]->XferErrorCallback = TIM_DMAError ;
|
htim->hdma[TIM_DMA_ID_COMMUTATION]->XferErrorCallback = TIM_DMAError ;
|
||||||
|
|
||||||
/* Enable the DMA stream */
|
/* Enable the DMA stream */
|
||||||
if (HAL_DMA_Start_IT(htim->hdma[TIM_DMA_ID_COMMUTATION], (uint32_t)BurstBuffer, (uint32_t)&htim->Instance->DMAR, ((BurstLength) >> 8U) + 1U) != HAL_OK)
|
if (HAL_DMA_Start_IT(htim->hdma[TIM_DMA_ID_COMMUTATION], (uint32_t)BurstBuffer,
|
||||||
|
(uint32_t)&htim->Instance->DMAR, ((BurstLength) >> 8U) + 1U) != HAL_OK)
|
||||||
{
|
{
|
||||||
return HAL_ERROR;
|
return HAL_ERROR;
|
||||||
}
|
}
|
||||||
|
@ -4021,7 +4040,8 @@ HAL_StatusTypeDef HAL_TIM_DMABurst_WriteStart(TIM_HandleTypeDef *htim, uint32_t
|
||||||
htim->hdma[TIM_DMA_ID_TRIGGER]->XferErrorCallback = TIM_DMAError ;
|
htim->hdma[TIM_DMA_ID_TRIGGER]->XferErrorCallback = TIM_DMAError ;
|
||||||
|
|
||||||
/* Enable the DMA stream */
|
/* Enable the DMA stream */
|
||||||
if (HAL_DMA_Start_IT(htim->hdma[TIM_DMA_ID_TRIGGER], (uint32_t)BurstBuffer, (uint32_t)&htim->Instance->DMAR, ((BurstLength) >> 8U) + 1U) != HAL_OK)
|
if (HAL_DMA_Start_IT(htim->hdma[TIM_DMA_ID_TRIGGER], (uint32_t)BurstBuffer,
|
||||||
|
(uint32_t)&htim->Instance->DMAR, ((BurstLength) >> 8U) + 1U) != HAL_OK)
|
||||||
{
|
{
|
||||||
return HAL_ERROR;
|
return HAL_ERROR;
|
||||||
}
|
}
|
||||||
|
@ -4151,8 +4171,8 @@ HAL_StatusTypeDef HAL_TIM_DMABurst_WriteStop(TIM_HandleTypeDef *htim, uint32_t B
|
||||||
* @note This function should be used only when BurstLength is equal to DMA data transfer length.
|
* @note This function should be used only when BurstLength is equal to DMA data transfer length.
|
||||||
* @retval HAL status
|
* @retval HAL status
|
||||||
*/
|
*/
|
||||||
HAL_StatusTypeDef HAL_TIM_DMABurst_ReadStart(TIM_HandleTypeDef *htim, uint32_t BurstBaseAddress, uint32_t BurstRequestSrc,
|
HAL_StatusTypeDef HAL_TIM_DMABurst_ReadStart(TIM_HandleTypeDef *htim, uint32_t BurstBaseAddress,
|
||||||
uint32_t *BurstBuffer, uint32_t BurstLength)
|
uint32_t BurstRequestSrc, uint32_t *BurstBuffer, uint32_t BurstLength)
|
||||||
{
|
{
|
||||||
/* Check the parameters */
|
/* Check the parameters */
|
||||||
assert_param(IS_TIM_DMABURST_INSTANCE(htim->Instance));
|
assert_param(IS_TIM_DMABURST_INSTANCE(htim->Instance));
|
||||||
|
@ -4160,11 +4180,11 @@ HAL_StatusTypeDef HAL_TIM_DMABurst_ReadStart(TIM_HandleTypeDef *htim, uint32_t B
|
||||||
assert_param(IS_TIM_DMA_SOURCE(BurstRequestSrc));
|
assert_param(IS_TIM_DMA_SOURCE(BurstRequestSrc));
|
||||||
assert_param(IS_TIM_DMA_LENGTH(BurstLength));
|
assert_param(IS_TIM_DMA_LENGTH(BurstLength));
|
||||||
|
|
||||||
if ((htim->State == HAL_TIM_STATE_BUSY))
|
if (htim->State == HAL_TIM_STATE_BUSY)
|
||||||
{
|
{
|
||||||
return HAL_BUSY;
|
return HAL_BUSY;
|
||||||
}
|
}
|
||||||
else if ((htim->State == HAL_TIM_STATE_READY))
|
else if (htim->State == HAL_TIM_STATE_READY)
|
||||||
{
|
{
|
||||||
if ((BurstBuffer == NULL) && (BurstLength > 0U))
|
if ((BurstBuffer == NULL) && (BurstLength > 0U))
|
||||||
{
|
{
|
||||||
|
@ -4465,7 +4485,7 @@ HAL_StatusTypeDef HAL_TIM_ConfigOCrefClear(TIM_HandleTypeDef *htim,
|
||||||
/* When OCRef clear feature is used with ETR source, ETR prescaler must be off */
|
/* When OCRef clear feature is used with ETR source, ETR prescaler must be off */
|
||||||
if (sClearInputConfig->ClearInputPrescaler != TIM_CLEARINPUTPRESCALER_DIV1)
|
if (sClearInputConfig->ClearInputPrescaler != TIM_CLEARINPUTPRESCALER_DIV1)
|
||||||
{
|
{
|
||||||
htim->State = HAL_TIM_STATE_READY;
|
htim->State = HAL_TIM_STATE_READY;
|
||||||
__HAL_UNLOCK(htim);
|
__HAL_UNLOCK(htim);
|
||||||
return HAL_ERROR;
|
return HAL_ERROR;
|
||||||
}
|
}
|
||||||
|
@ -4780,9 +4800,9 @@ HAL_StatusTypeDef HAL_TIM_SlaveConfigSynchro(TIM_HandleTypeDef *htim, TIM_SlaveC
|
||||||
|
|
||||||
htim->State = HAL_TIM_STATE_BUSY;
|
htim->State = HAL_TIM_STATE_BUSY;
|
||||||
|
|
||||||
if(TIM_SlaveTimer_SetConfig(htim, sSlaveConfig) != HAL_OK)
|
if (TIM_SlaveTimer_SetConfig(htim, sSlaveConfig) != HAL_OK)
|
||||||
{
|
{
|
||||||
htim->State = HAL_TIM_STATE_READY;
|
htim->State = HAL_TIM_STATE_READY;
|
||||||
__HAL_UNLOCK(htim);
|
__HAL_UNLOCK(htim);
|
||||||
return HAL_ERROR;
|
return HAL_ERROR;
|
||||||
}
|
}
|
||||||
|
@ -4810,7 +4830,7 @@ HAL_StatusTypeDef HAL_TIM_SlaveConfigSynchro(TIM_HandleTypeDef *htim, TIM_SlaveC
|
||||||
* @retval HAL status
|
* @retval HAL status
|
||||||
*/
|
*/
|
||||||
HAL_StatusTypeDef HAL_TIM_SlaveConfigSynchro_IT(TIM_HandleTypeDef *htim,
|
HAL_StatusTypeDef HAL_TIM_SlaveConfigSynchro_IT(TIM_HandleTypeDef *htim,
|
||||||
TIM_SlaveConfigTypeDef *sSlaveConfig)
|
TIM_SlaveConfigTypeDef *sSlaveConfig)
|
||||||
{
|
{
|
||||||
/* Check the parameters */
|
/* Check the parameters */
|
||||||
assert_param(IS_TIM_SLAVE_INSTANCE(htim->Instance));
|
assert_param(IS_TIM_SLAVE_INSTANCE(htim->Instance));
|
||||||
|
@ -4821,9 +4841,9 @@ HAL_StatusTypeDef HAL_TIM_SlaveConfigSynchro_IT(TIM_HandleTypeDef *htim,
|
||||||
|
|
||||||
htim->State = HAL_TIM_STATE_BUSY;
|
htim->State = HAL_TIM_STATE_BUSY;
|
||||||
|
|
||||||
if(TIM_SlaveTimer_SetConfig(htim, sSlaveConfig) != HAL_OK)
|
if (TIM_SlaveTimer_SetConfig(htim, sSlaveConfig) != HAL_OK)
|
||||||
{
|
{
|
||||||
htim->State = HAL_TIM_STATE_READY;
|
htim->State = HAL_TIM_STATE_READY;
|
||||||
__HAL_UNLOCK(htim);
|
__HAL_UNLOCK(htim);
|
||||||
return HAL_ERROR;
|
return HAL_ERROR;
|
||||||
}
|
}
|
||||||
|
@ -4913,8 +4933,8 @@ uint32_t HAL_TIM_ReadCapturedValue(TIM_HandleTypeDef *htim, uint32_t Channel)
|
||||||
*/
|
*/
|
||||||
|
|
||||||
/** @defgroup TIM_Exported_Functions_Group9 TIM Callbacks functions
|
/** @defgroup TIM_Exported_Functions_Group9 TIM Callbacks functions
|
||||||
* @brief TIM Callbacks functions
|
* @brief TIM Callbacks functions
|
||||||
*
|
*
|
||||||
@verbatim
|
@verbatim
|
||||||
==============================================================================
|
==============================================================================
|
||||||
##### TIM Callbacks functions #####
|
##### TIM Callbacks functions #####
|
||||||
|
@ -5118,7 +5138,8 @@ __weak void HAL_TIM_ErrorCallback(TIM_HandleTypeDef *htim)
|
||||||
* @param pCallback pointer to the callback function
|
* @param pCallback pointer to the callback function
|
||||||
* @retval status
|
* @retval status
|
||||||
*/
|
*/
|
||||||
HAL_StatusTypeDef HAL_TIM_RegisterCallback(TIM_HandleTypeDef *htim, HAL_TIM_CallbackIDTypeDef CallbackID, pTIM_CallbackTypeDef pCallback)
|
HAL_StatusTypeDef HAL_TIM_RegisterCallback(TIM_HandleTypeDef *htim, HAL_TIM_CallbackIDTypeDef CallbackID,
|
||||||
|
pTIM_CallbackTypeDef pCallback)
|
||||||
{
|
{
|
||||||
HAL_StatusTypeDef status = HAL_OK;
|
HAL_StatusTypeDef status = HAL_OK;
|
||||||
|
|
||||||
|
@ -5578,8 +5599,8 @@ HAL_StatusTypeDef HAL_TIM_UnRegisterCallback(TIM_HandleTypeDef *htim, HAL_TIM_Ca
|
||||||
*/
|
*/
|
||||||
|
|
||||||
/** @defgroup TIM_Exported_Functions_Group10 TIM Peripheral State functions
|
/** @defgroup TIM_Exported_Functions_Group10 TIM Peripheral State functions
|
||||||
* @brief TIM Peripheral State functions
|
* @brief TIM Peripheral State functions
|
||||||
*
|
*
|
||||||
@verbatim
|
@verbatim
|
||||||
==============================================================================
|
==============================================================================
|
||||||
##### Peripheral State functions #####
|
##### Peripheral State functions #####
|
||||||
|
@ -6365,7 +6386,7 @@ static void TIM_OC6_SetConfig(TIM_TypeDef *TIMx,
|
||||||
* @retval None
|
* @retval None
|
||||||
*/
|
*/
|
||||||
static HAL_StatusTypeDef TIM_SlaveTimer_SetConfig(TIM_HandleTypeDef *htim,
|
static HAL_StatusTypeDef TIM_SlaveTimer_SetConfig(TIM_HandleTypeDef *htim,
|
||||||
TIM_SlaveConfigTypeDef *sSlaveConfig)
|
TIM_SlaveConfigTypeDef *sSlaveConfig)
|
||||||
{
|
{
|
||||||
uint32_t tmpsmcr;
|
uint32_t tmpsmcr;
|
||||||
uint32_t tmpccmr1;
|
uint32_t tmpccmr1;
|
||||||
|
|
|
@ -73,7 +73,7 @@
|
||||||
* opensource.org/licenses/BSD-3-Clause
|
* opensource.org/licenses/BSD-3-Clause
|
||||||
*
|
*
|
||||||
******************************************************************************
|
******************************************************************************
|
||||||
*/
|
*/
|
||||||
|
|
||||||
/* Includes ------------------------------------------------------------------*/
|
/* Includes ------------------------------------------------------------------*/
|
||||||
#include "stm32f7xx_hal.h"
|
#include "stm32f7xx_hal.h"
|
||||||
|
@ -397,11 +397,11 @@ HAL_StatusTypeDef HAL_TIMEx_HallSensor_Start_DMA(TIM_HandleTypeDef *htim, uint32
|
||||||
/* Check the parameters */
|
/* Check the parameters */
|
||||||
assert_param(IS_TIM_HALL_SENSOR_INTERFACE_INSTANCE(htim->Instance));
|
assert_param(IS_TIM_HALL_SENSOR_INTERFACE_INSTANCE(htim->Instance));
|
||||||
|
|
||||||
if ((htim->State == HAL_TIM_STATE_BUSY))
|
if (htim->State == HAL_TIM_STATE_BUSY)
|
||||||
{
|
{
|
||||||
return HAL_BUSY;
|
return HAL_BUSY;
|
||||||
}
|
}
|
||||||
else if ((htim->State == HAL_TIM_STATE_READY))
|
else if (htim->State == HAL_TIM_STATE_READY)
|
||||||
{
|
{
|
||||||
if (((uint32_t)pData == 0U) && (Length > 0U))
|
if (((uint32_t)pData == 0U) && (Length > 0U))
|
||||||
{
|
{
|
||||||
|
@ -709,11 +709,11 @@ HAL_StatusTypeDef HAL_TIMEx_OCN_Start_DMA(TIM_HandleTypeDef *htim, uint32_t Chan
|
||||||
/* Check the parameters */
|
/* Check the parameters */
|
||||||
assert_param(IS_TIM_CCXN_INSTANCE(htim->Instance, Channel));
|
assert_param(IS_TIM_CCXN_INSTANCE(htim->Instance, Channel));
|
||||||
|
|
||||||
if ((htim->State == HAL_TIM_STATE_BUSY))
|
if (htim->State == HAL_TIM_STATE_BUSY)
|
||||||
{
|
{
|
||||||
return HAL_BUSY;
|
return HAL_BUSY;
|
||||||
}
|
}
|
||||||
else if ((htim->State == HAL_TIM_STATE_READY))
|
else if (htim->State == HAL_TIM_STATE_READY)
|
||||||
{
|
{
|
||||||
if (((uint32_t)pData == 0U) && (Length > 0U))
|
if (((uint32_t)pData == 0U) && (Length > 0U))
|
||||||
{
|
{
|
||||||
|
@ -1117,11 +1117,11 @@ HAL_StatusTypeDef HAL_TIMEx_PWMN_Start_DMA(TIM_HandleTypeDef *htim, uint32_t Cha
|
||||||
/* Check the parameters */
|
/* Check the parameters */
|
||||||
assert_param(IS_TIM_CCXN_INSTANCE(htim->Instance, Channel));
|
assert_param(IS_TIM_CCXN_INSTANCE(htim->Instance, Channel));
|
||||||
|
|
||||||
if ((htim->State == HAL_TIM_STATE_BUSY))
|
if (htim->State == HAL_TIM_STATE_BUSY)
|
||||||
{
|
{
|
||||||
return HAL_BUSY;
|
return HAL_BUSY;
|
||||||
}
|
}
|
||||||
else if ((htim->State == HAL_TIM_STATE_READY))
|
else if (htim->State == HAL_TIM_STATE_READY)
|
||||||
{
|
{
|
||||||
if (((uint32_t)pData == 0U) && (Length > 0U))
|
if (((uint32_t)pData == 0U) && (Length > 0U))
|
||||||
{
|
{
|
||||||
|
@ -1466,7 +1466,8 @@ HAL_StatusTypeDef HAL_TIMEx_OnePulseN_Stop_IT(TIM_HandleTypeDef *htim, uint32_t
|
||||||
* @arg TIM_COMMUTATION_SOFTWARE: Commutation source is set by software using the COMG bit
|
* @arg TIM_COMMUTATION_SOFTWARE: Commutation source is set by software using the COMG bit
|
||||||
* @retval HAL status
|
* @retval HAL status
|
||||||
*/
|
*/
|
||||||
HAL_StatusTypeDef HAL_TIMEx_ConfigCommutEvent(TIM_HandleTypeDef *htim, uint32_t InputTrigger, uint32_t CommutationSource)
|
HAL_StatusTypeDef HAL_TIMEx_ConfigCommutEvent(TIM_HandleTypeDef *htim, uint32_t InputTrigger,
|
||||||
|
uint32_t CommutationSource)
|
||||||
{
|
{
|
||||||
/* Check the parameters */
|
/* Check the parameters */
|
||||||
assert_param(IS_TIM_COMMUTATION_EVENT_INSTANCE(htim->Instance));
|
assert_param(IS_TIM_COMMUTATION_EVENT_INSTANCE(htim->Instance));
|
||||||
|
@ -1521,7 +1522,8 @@ HAL_StatusTypeDef HAL_TIMEx_ConfigCommutEvent(TIM_HandleTypeDef *htim, uint32_t
|
||||||
* @arg TIM_COMMUTATION_SOFTWARE: Commutation source is set by software using the COMG bit
|
* @arg TIM_COMMUTATION_SOFTWARE: Commutation source is set by software using the COMG bit
|
||||||
* @retval HAL status
|
* @retval HAL status
|
||||||
*/
|
*/
|
||||||
HAL_StatusTypeDef HAL_TIMEx_ConfigCommutEvent_IT(TIM_HandleTypeDef *htim, uint32_t InputTrigger, uint32_t CommutationSource)
|
HAL_StatusTypeDef HAL_TIMEx_ConfigCommutEvent_IT(TIM_HandleTypeDef *htim, uint32_t InputTrigger,
|
||||||
|
uint32_t CommutationSource)
|
||||||
{
|
{
|
||||||
/* Check the parameters */
|
/* Check the parameters */
|
||||||
assert_param(IS_TIM_COMMUTATION_EVENT_INSTANCE(htim->Instance));
|
assert_param(IS_TIM_COMMUTATION_EVENT_INSTANCE(htim->Instance));
|
||||||
|
@ -1577,7 +1579,8 @@ HAL_StatusTypeDef HAL_TIMEx_ConfigCommutEvent_IT(TIM_HandleTypeDef *htim, uint32
|
||||||
* @arg TIM_COMMUTATION_SOFTWARE: Commutation source is set by software using the COMG bit
|
* @arg TIM_COMMUTATION_SOFTWARE: Commutation source is set by software using the COMG bit
|
||||||
* @retval HAL status
|
* @retval HAL status
|
||||||
*/
|
*/
|
||||||
HAL_StatusTypeDef HAL_TIMEx_ConfigCommutEvent_DMA(TIM_HandleTypeDef *htim, uint32_t InputTrigger, uint32_t CommutationSource)
|
HAL_StatusTypeDef HAL_TIMEx_ConfigCommutEvent_DMA(TIM_HandleTypeDef *htim, uint32_t InputTrigger,
|
||||||
|
uint32_t CommutationSource)
|
||||||
{
|
{
|
||||||
/* Check the parameters */
|
/* Check the parameters */
|
||||||
assert_param(IS_TIM_COMMUTATION_EVENT_INSTANCE(htim->Instance));
|
assert_param(IS_TIM_COMMUTATION_EVENT_INSTANCE(htim->Instance));
|
||||||
|
@ -1632,7 +1635,7 @@ HAL_StatusTypeDef HAL_TIMEx_MasterConfigSynchronization(TIM_HandleTypeDef *htim,
|
||||||
uint32_t tmpsmcr;
|
uint32_t tmpsmcr;
|
||||||
|
|
||||||
/* Check the parameters */
|
/* Check the parameters */
|
||||||
assert_param(IS_TIM_SYNCHRO_INSTANCE(htim->Instance));
|
assert_param(IS_TIM_MASTER_INSTANCE(htim->Instance));
|
||||||
assert_param(IS_TIM_TRGO_SOURCE(sMasterConfig->MasterOutputTrigger));
|
assert_param(IS_TIM_TRGO_SOURCE(sMasterConfig->MasterOutputTrigger));
|
||||||
assert_param(IS_TIM_MSM_STATE(sMasterConfig->MasterSlaveMode));
|
assert_param(IS_TIM_MSM_STATE(sMasterConfig->MasterSlaveMode));
|
||||||
|
|
||||||
|
@ -1665,16 +1668,19 @@ HAL_StatusTypeDef HAL_TIMEx_MasterConfigSynchronization(TIM_HandleTypeDef *htim,
|
||||||
/* Select the TRGO source */
|
/* Select the TRGO source */
|
||||||
tmpcr2 |= sMasterConfig->MasterOutputTrigger;
|
tmpcr2 |= sMasterConfig->MasterOutputTrigger;
|
||||||
|
|
||||||
/* Reset the MSM Bit */
|
|
||||||
tmpsmcr &= ~TIM_SMCR_MSM;
|
|
||||||
/* Set master mode */
|
|
||||||
tmpsmcr |= sMasterConfig->MasterSlaveMode;
|
|
||||||
|
|
||||||
/* Update TIMx CR2 */
|
/* Update TIMx CR2 */
|
||||||
htim->Instance->CR2 = tmpcr2;
|
htim->Instance->CR2 = tmpcr2;
|
||||||
|
|
||||||
/* Update TIMx SMCR */
|
if (IS_TIM_SLAVE_INSTANCE(htim->Instance))
|
||||||
htim->Instance->SMCR = tmpsmcr;
|
{
|
||||||
|
/* Reset the MSM Bit */
|
||||||
|
tmpsmcr &= ~TIM_SMCR_MSM;
|
||||||
|
/* Set master mode */
|
||||||
|
tmpsmcr |= sMasterConfig->MasterSlaveMode;
|
||||||
|
|
||||||
|
/* Update TIMx SMCR */
|
||||||
|
htim->Instance->SMCR = tmpsmcr;
|
||||||
|
}
|
||||||
|
|
||||||
/* Change the htim state */
|
/* Change the htim state */
|
||||||
htim->State = HAL_TIM_STATE_READY;
|
htim->State = HAL_TIM_STATE_READY;
|
||||||
|
@ -1690,6 +1696,9 @@ HAL_StatusTypeDef HAL_TIMEx_MasterConfigSynchronization(TIM_HandleTypeDef *htim,
|
||||||
* @param htim TIM handle
|
* @param htim TIM handle
|
||||||
* @param sBreakDeadTimeConfig pointer to a TIM_ConfigBreakDeadConfigTypeDef structure that
|
* @param sBreakDeadTimeConfig pointer to a TIM_ConfigBreakDeadConfigTypeDef structure that
|
||||||
* contains the BDTR Register configuration information for the TIM peripheral.
|
* contains the BDTR Register configuration information for the TIM peripheral.
|
||||||
|
* @note Interrupts can be generated when an active level is detected on the
|
||||||
|
* break input, the break 2 input or the system break input. Break
|
||||||
|
* interrupt can be enabled by calling the @ref __HAL_TIM_ENABLE_IT macro.
|
||||||
* @retval HAL status
|
* @retval HAL status
|
||||||
*/
|
*/
|
||||||
HAL_StatusTypeDef HAL_TIMEx_ConfigBreakDeadTime(TIM_HandleTypeDef *htim,
|
HAL_StatusTypeDef HAL_TIMEx_ConfigBreakDeadTime(TIM_HandleTypeDef *htim,
|
||||||
|
@ -1763,10 +1772,10 @@ HAL_StatusTypeDef HAL_TIMEx_ConfigBreakInput(TIM_HandleTypeDef *htim,
|
||||||
|
|
||||||
{
|
{
|
||||||
uint32_t tmporx;
|
uint32_t tmporx;
|
||||||
uint32_t bkin_enable_mask = 0U;
|
uint32_t bkin_enable_mask;
|
||||||
uint32_t bkin_polarity_mask = 0U;
|
uint32_t bkin_polarity_mask;
|
||||||
uint32_t bkin_enable_bitpos = 0U;
|
uint32_t bkin_enable_bitpos;
|
||||||
uint32_t bkin_polarity_bitpos = 0U;
|
uint32_t bkin_polarity_bitpos;
|
||||||
|
|
||||||
/* Check the parameters */
|
/* Check the parameters */
|
||||||
assert_param(IS_TIM_BREAK_INSTANCE(htim->Instance));
|
assert_param(IS_TIM_BREAK_INSTANCE(htim->Instance));
|
||||||
|
@ -1800,11 +1809,19 @@ HAL_StatusTypeDef HAL_TIMEx_ConfigBreakInput(TIM_HandleTypeDef *htim,
|
||||||
{
|
{
|
||||||
bkin_enable_mask = TIM1_AF1_BKDF1BKE;
|
bkin_enable_mask = TIM1_AF1_BKDF1BKE;
|
||||||
bkin_enable_bitpos = 8;
|
bkin_enable_bitpos = 8;
|
||||||
|
bkin_polarity_mask = 0U;
|
||||||
|
bkin_polarity_bitpos = 0U;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
default:
|
default:
|
||||||
|
{
|
||||||
|
bkin_enable_mask = 0U;
|
||||||
|
bkin_polarity_mask = 0U;
|
||||||
|
bkin_enable_bitpos = 0U;
|
||||||
|
bkin_polarity_bitpos = 0U;
|
||||||
break;
|
break;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
switch (BreakInput)
|
switch (BreakInput)
|
||||||
|
@ -2054,7 +2071,7 @@ HAL_TIM_StateTypeDef HAL_TIMEx_HallSensor_GetState(TIM_HandleTypeDef *htim)
|
||||||
*/
|
*/
|
||||||
|
|
||||||
/* Private functions ---------------------------------------------------------*/
|
/* Private functions ---------------------------------------------------------*/
|
||||||
/** @defgroup TIMEx_Private_Functions TIM Extended Private Functions
|
/** @defgroup TIMEx_Private_Functions TIMEx Private Functions
|
||||||
* @{
|
* @{
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
|
|
@ -220,9 +220,6 @@ ErrorStatus LL_GPIO_Init(GPIO_TypeDef *GPIOx, LL_GPIO_InitTypeDef *GPIO_InitStru
|
||||||
|
|
||||||
if (currentpin)
|
if (currentpin)
|
||||||
{
|
{
|
||||||
/* Pin Mode configuration */
|
|
||||||
LL_GPIO_SetPinMode(GPIOx, currentpin, GPIO_InitStruct->Mode);
|
|
||||||
|
|
||||||
if ((GPIO_InitStruct->Mode == LL_GPIO_MODE_OUTPUT) || (GPIO_InitStruct->Mode == LL_GPIO_MODE_ALTERNATE))
|
if ((GPIO_InitStruct->Mode == LL_GPIO_MODE_OUTPUT) || (GPIO_InitStruct->Mode == LL_GPIO_MODE_ALTERNATE))
|
||||||
{
|
{
|
||||||
/* Check Speed mode parameters */
|
/* Check Speed mode parameters */
|
||||||
|
@ -230,6 +227,12 @@ ErrorStatus LL_GPIO_Init(GPIO_TypeDef *GPIOx, LL_GPIO_InitTypeDef *GPIO_InitStru
|
||||||
|
|
||||||
/* Speed mode configuration */
|
/* Speed mode configuration */
|
||||||
LL_GPIO_SetPinSpeed(GPIOx, currentpin, GPIO_InitStruct->Speed);
|
LL_GPIO_SetPinSpeed(GPIOx, currentpin, GPIO_InitStruct->Speed);
|
||||||
|
|
||||||
|
/* Check Output mode parameters */
|
||||||
|
assert_param(IS_LL_GPIO_OUTPUT_TYPE(GPIO_InitStruct->OutputType));
|
||||||
|
|
||||||
|
/* Output mode configuration*/
|
||||||
|
LL_GPIO_SetPinOutputType(GPIOx, GPIO_InitStruct->Pin, GPIO_InitStruct->OutputType);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Pull-up Pull down resistor configuration*/
|
/* Pull-up Pull down resistor configuration*/
|
||||||
|
@ -250,19 +253,11 @@ ErrorStatus LL_GPIO_Init(GPIO_TypeDef *GPIOx, LL_GPIO_InitTypeDef *GPIO_InitStru
|
||||||
LL_GPIO_SetAFPin_8_15(GPIOx, currentpin, GPIO_InitStruct->Alternate);
|
LL_GPIO_SetAFPin_8_15(GPIOx, currentpin, GPIO_InitStruct->Alternate);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
/* Pin Mode configuration */
|
||||||
|
LL_GPIO_SetPinMode(GPIOx, currentpin, GPIO_InitStruct->Mode);
|
||||||
}
|
}
|
||||||
pinpos++;
|
pinpos++;
|
||||||
}
|
}
|
||||||
|
|
||||||
if ((GPIO_InitStruct->Mode == LL_GPIO_MODE_OUTPUT) || (GPIO_InitStruct->Mode == LL_GPIO_MODE_ALTERNATE))
|
|
||||||
{
|
|
||||||
/* Check Output mode parameters */
|
|
||||||
assert_param(IS_LL_GPIO_OUTPUT_TYPE(GPIO_InitStruct->OutputType));
|
|
||||||
|
|
||||||
/* Output mode configuration*/
|
|
||||||
LL_GPIO_SetPinOutputType(GPIOx, GPIO_InitStruct->Pin, GPIO_InitStruct->OutputType);
|
|
||||||
|
|
||||||
}
|
|
||||||
return (SUCCESS);
|
return (SUCCESS);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -163,7 +163,7 @@ uint32_t RCC_PLLI2S_GetFreqDomain_SPDIFRX(void);
|
||||||
*/
|
*/
|
||||||
ErrorStatus LL_RCC_DeInit(void)
|
ErrorStatus LL_RCC_DeInit(void)
|
||||||
{
|
{
|
||||||
uint32_t vl_mask = 0xFFFFFFFFU;
|
__IO uint32_t vl_mask;
|
||||||
|
|
||||||
/* Set HSION bit */
|
/* Set HSION bit */
|
||||||
LL_RCC_HSI_Enable();
|
LL_RCC_HSI_Enable();
|
||||||
|
@ -175,10 +175,13 @@ ErrorStatus LL_RCC_DeInit(void)
|
||||||
/* Reset CFGR register */
|
/* Reset CFGR register */
|
||||||
LL_RCC_WriteReg(CFGR, 0x00000000U);
|
LL_RCC_WriteReg(CFGR, 0x00000000U);
|
||||||
|
|
||||||
|
/* Read CR register */
|
||||||
|
vl_mask = LL_RCC_ReadReg(CR);
|
||||||
|
|
||||||
/* Reset HSEON, HSEBYP, PLLON, CSSON, PLLI2SON and PLLSAION bits */
|
/* Reset HSEON, HSEBYP, PLLON, CSSON, PLLI2SON and PLLSAION bits */
|
||||||
CLEAR_BIT(vl_mask, (RCC_CR_HSEON | RCC_CR_HSEBYP | RCC_CR_PLLON | RCC_CR_CSSON | RCC_CR_PLLSAION | RCC_CR_PLLI2SON));
|
CLEAR_BIT(vl_mask, (RCC_CR_HSEON | RCC_CR_HSEBYP | RCC_CR_PLLON | RCC_CR_CSSON | RCC_CR_PLLSAION | RCC_CR_PLLI2SON));
|
||||||
|
|
||||||
/* Write new mask in CR register */
|
/* Write new value in CR register */
|
||||||
LL_RCC_WriteReg(CR, vl_mask);
|
LL_RCC_WriteReg(CR, vl_mask);
|
||||||
|
|
||||||
/* Set HSITRIM bits to the reset value*/
|
/* Set HSITRIM bits to the reset value*/
|
||||||
|
|
|
@ -22,11 +22,11 @@
|
||||||
#include "stm32f7xx_ll_usart.h"
|
#include "stm32f7xx_ll_usart.h"
|
||||||
#include "stm32f7xx_ll_rcc.h"
|
#include "stm32f7xx_ll_rcc.h"
|
||||||
#include "stm32f7xx_ll_bus.h"
|
#include "stm32f7xx_ll_bus.h"
|
||||||
#ifdef USE_FULL_ASSERT
|
#ifdef USE_FULL_ASSERT
|
||||||
#include "stm32_assert.h"
|
#include "stm32_assert.h"
|
||||||
#else
|
#else
|
||||||
#define assert_param(expr) ((void)0U)
|
#define assert_param(expr) ((void)0U)
|
||||||
#endif
|
#endif /* USE_FULL_ASSERT */
|
||||||
|
|
||||||
/** @addtogroup STM32F7xx_LL_Driver
|
/** @addtogroup STM32F7xx_LL_Driver
|
||||||
* @{
|
* @{
|
||||||
|
@ -41,14 +41,6 @@
|
||||||
/* Private types -------------------------------------------------------------*/
|
/* Private types -------------------------------------------------------------*/
|
||||||
/* Private variables ---------------------------------------------------------*/
|
/* Private variables ---------------------------------------------------------*/
|
||||||
/* Private constants ---------------------------------------------------------*/
|
/* Private constants ---------------------------------------------------------*/
|
||||||
/** @addtogroup USART_LL_Private_Constants
|
|
||||||
* @{
|
|
||||||
*/
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @}
|
|
||||||
*/
|
|
||||||
|
|
||||||
/* Private macros ------------------------------------------------------------*/
|
/* Private macros ------------------------------------------------------------*/
|
||||||
/** @addtogroup USART_LL_Private_Macros
|
/** @addtogroup USART_LL_Private_Macros
|
||||||
* @{
|
* @{
|
||||||
|
@ -65,42 +57,42 @@
|
||||||
#define IS_LL_USART_BRR_MAX(__VALUE__) ((__VALUE__) <= 0x0000FFFFU)
|
#define IS_LL_USART_BRR_MAX(__VALUE__) ((__VALUE__) <= 0x0000FFFFU)
|
||||||
|
|
||||||
#define IS_LL_USART_DIRECTION(__VALUE__) (((__VALUE__) == LL_USART_DIRECTION_NONE) \
|
#define IS_LL_USART_DIRECTION(__VALUE__) (((__VALUE__) == LL_USART_DIRECTION_NONE) \
|
||||||
|| ((__VALUE__) == LL_USART_DIRECTION_RX) \
|
|| ((__VALUE__) == LL_USART_DIRECTION_RX) \
|
||||||
|| ((__VALUE__) == LL_USART_DIRECTION_TX) \
|
|| ((__VALUE__) == LL_USART_DIRECTION_TX) \
|
||||||
|| ((__VALUE__) == LL_USART_DIRECTION_TX_RX))
|
|| ((__VALUE__) == LL_USART_DIRECTION_TX_RX))
|
||||||
|
|
||||||
#define IS_LL_USART_PARITY(__VALUE__) (((__VALUE__) == LL_USART_PARITY_NONE) \
|
#define IS_LL_USART_PARITY(__VALUE__) (((__VALUE__) == LL_USART_PARITY_NONE) \
|
||||||
|| ((__VALUE__) == LL_USART_PARITY_EVEN) \
|
|| ((__VALUE__) == LL_USART_PARITY_EVEN) \
|
||||||
|| ((__VALUE__) == LL_USART_PARITY_ODD))
|
|| ((__VALUE__) == LL_USART_PARITY_ODD))
|
||||||
|
|
||||||
#define IS_LL_USART_DATAWIDTH(__VALUE__) (((__VALUE__) == LL_USART_DATAWIDTH_7B) \
|
#define IS_LL_USART_DATAWIDTH(__VALUE__) (((__VALUE__) == LL_USART_DATAWIDTH_7B) \
|
||||||
|| ((__VALUE__) == LL_USART_DATAWIDTH_8B) \
|
|| ((__VALUE__) == LL_USART_DATAWIDTH_8B) \
|
||||||
|| ((__VALUE__) == LL_USART_DATAWIDTH_9B))
|
|| ((__VALUE__) == LL_USART_DATAWIDTH_9B))
|
||||||
|
|
||||||
#define IS_LL_USART_OVERSAMPLING(__VALUE__) (((__VALUE__) == LL_USART_OVERSAMPLING_16) \
|
#define IS_LL_USART_OVERSAMPLING(__VALUE__) (((__VALUE__) == LL_USART_OVERSAMPLING_16) \
|
||||||
|| ((__VALUE__) == LL_USART_OVERSAMPLING_8))
|
|| ((__VALUE__) == LL_USART_OVERSAMPLING_8))
|
||||||
|
|
||||||
#define IS_LL_USART_LASTBITCLKOUTPUT(__VALUE__) (((__VALUE__) == LL_USART_LASTCLKPULSE_NO_OUTPUT) \
|
#define IS_LL_USART_LASTBITCLKOUTPUT(__VALUE__) (((__VALUE__) == LL_USART_LASTCLKPULSE_NO_OUTPUT) \
|
||||||
|| ((__VALUE__) == LL_USART_LASTCLKPULSE_OUTPUT))
|
|| ((__VALUE__) == LL_USART_LASTCLKPULSE_OUTPUT))
|
||||||
|
|
||||||
#define IS_LL_USART_CLOCKPHASE(__VALUE__) (((__VALUE__) == LL_USART_PHASE_1EDGE) \
|
#define IS_LL_USART_CLOCKPHASE(__VALUE__) (((__VALUE__) == LL_USART_PHASE_1EDGE) \
|
||||||
|| ((__VALUE__) == LL_USART_PHASE_2EDGE))
|
|| ((__VALUE__) == LL_USART_PHASE_2EDGE))
|
||||||
|
|
||||||
#define IS_LL_USART_CLOCKPOLARITY(__VALUE__) (((__VALUE__) == LL_USART_POLARITY_LOW) \
|
#define IS_LL_USART_CLOCKPOLARITY(__VALUE__) (((__VALUE__) == LL_USART_POLARITY_LOW) \
|
||||||
|| ((__VALUE__) == LL_USART_POLARITY_HIGH))
|
|| ((__VALUE__) == LL_USART_POLARITY_HIGH))
|
||||||
|
|
||||||
#define IS_LL_USART_CLOCKOUTPUT(__VALUE__) (((__VALUE__) == LL_USART_CLOCK_DISABLE) \
|
#define IS_LL_USART_CLOCKOUTPUT(__VALUE__) (((__VALUE__) == LL_USART_CLOCK_DISABLE) \
|
||||||
|| ((__VALUE__) == LL_USART_CLOCK_ENABLE))
|
|| ((__VALUE__) == LL_USART_CLOCK_ENABLE))
|
||||||
|
|
||||||
#define IS_LL_USART_STOPBITS(__VALUE__) (((__VALUE__) == LL_USART_STOPBITS_0_5) \
|
#define IS_LL_USART_STOPBITS(__VALUE__) (((__VALUE__) == LL_USART_STOPBITS_0_5) \
|
||||||
|| ((__VALUE__) == LL_USART_STOPBITS_1) \
|
|| ((__VALUE__) == LL_USART_STOPBITS_1) \
|
||||||
|| ((__VALUE__) == LL_USART_STOPBITS_1_5) \
|
|| ((__VALUE__) == LL_USART_STOPBITS_1_5) \
|
||||||
|| ((__VALUE__) == LL_USART_STOPBITS_2))
|
|| ((__VALUE__) == LL_USART_STOPBITS_2))
|
||||||
|
|
||||||
#define IS_LL_USART_HWCONTROL(__VALUE__) (((__VALUE__) == LL_USART_HWCONTROL_NONE) \
|
#define IS_LL_USART_HWCONTROL(__VALUE__) (((__VALUE__) == LL_USART_HWCONTROL_NONE) \
|
||||||
|| ((__VALUE__) == LL_USART_HWCONTROL_RTS) \
|
|| ((__VALUE__) == LL_USART_HWCONTROL_RTS) \
|
||||||
|| ((__VALUE__) == LL_USART_HWCONTROL_CTS) \
|
|| ((__VALUE__) == LL_USART_HWCONTROL_CTS) \
|
||||||
|| ((__VALUE__) == LL_USART_HWCONTROL_RTS_CTS))
|
|| ((__VALUE__) == LL_USART_HWCONTROL_RTS_CTS))
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @}
|
* @}
|
||||||
|
|
|
@ -94,6 +94,11 @@ HAL_StatusTypeDef USB_CoreInit(USB_OTG_GlobalTypeDef *USBx, USB_OTG_CfgTypeDef c
|
||||||
/* Init The ULPI Interface */
|
/* Init The ULPI Interface */
|
||||||
USBx->GUSBCFG &= ~(USB_OTG_GUSBCFG_TSDPS | USB_OTG_GUSBCFG_ULPIFSLS | USB_OTG_GUSBCFG_PHYSEL);
|
USBx->GUSBCFG &= ~(USB_OTG_GUSBCFG_TSDPS | USB_OTG_GUSBCFG_ULPIFSLS | USB_OTG_GUSBCFG_PHYSEL);
|
||||||
|
|
||||||
|
#if defined(STM32F722xx) || defined(STM32F723xx) || defined(STM32F730xx) || defined(STM32F732xx) || defined(STM32F733xx)
|
||||||
|
/* Select ULPI Interface */
|
||||||
|
USBx->GUSBCFG |= USB_OTG_GUSBCFG_ULPI_UTMI_SEL;
|
||||||
|
#endif /* defined(STM32F722xx) || defined(STM32F723xx) || defined(STM32F730xx) || defined(STM32F732xx) || defined(STM32F733xx) */
|
||||||
|
|
||||||
/* Select vbus source */
|
/* Select vbus source */
|
||||||
USBx->GUSBCFG &= ~(USB_OTG_GUSBCFG_ULPIEVBUSD | USB_OTG_GUSBCFG_ULPIEVBUSI);
|
USBx->GUSBCFG &= ~(USB_OTG_GUSBCFG_ULPIEVBUSD | USB_OTG_GUSBCFG_ULPIEVBUSI);
|
||||||
if (cfg.use_external_vbus == 1U)
|
if (cfg.use_external_vbus == 1U)
|
||||||
|
@ -115,7 +120,7 @@ HAL_StatusTypeDef USB_CoreInit(USB_OTG_GlobalTypeDef *USBx, USB_OTG_CfgTypeDef c
|
||||||
USBx->GUSBCFG &= ~(USB_OTG_GUSBCFG_ULPIEVBUSD | USB_OTG_GUSBCFG_ULPIEVBUSI);
|
USBx->GUSBCFG &= ~(USB_OTG_GUSBCFG_ULPIEVBUSD | USB_OTG_GUSBCFG_ULPIEVBUSI);
|
||||||
|
|
||||||
/* Select UTMI Interace */
|
/* Select UTMI Interace */
|
||||||
USBx->GUSBCFG &= ~ USB_OTG_GUSBCFG_ULPI_UTMI_SEL;
|
USBx->GUSBCFG &= ~USB_OTG_GUSBCFG_ULPI_UTMI_SEL;
|
||||||
USBx->GCCFG |= USB_OTG_GCCFG_PHYHSEN;
|
USBx->GCCFG |= USB_OTG_GCCFG_PHYHSEN;
|
||||||
|
|
||||||
/* Enables control of a High Speed USB PHY */
|
/* Enables control of a High Speed USB PHY */
|
||||||
|
@ -158,10 +163,6 @@ HAL_StatusTypeDef USB_CoreInit(USB_OTG_GlobalTypeDef *USBx, USB_OTG_CfgTypeDef c
|
||||||
* @brief Set the USB turnaround time
|
* @brief Set the USB turnaround time
|
||||||
* @param USBx USB Instance
|
* @param USBx USB Instance
|
||||||
* @param hclk: AHB clock frequency
|
* @param hclk: AHB clock frequency
|
||||||
* @param speed device speed
|
|
||||||
* This parameter can be one of these values:
|
|
||||||
* @arg PCD_SPEED_HIGH: High speed mode
|
|
||||||
* @arg PCD_SPEED_FULL: Full speed mode
|
|
||||||
* @retval USB turnaround time In PHY Clocks number
|
* @retval USB turnaround time In PHY Clocks number
|
||||||
*/
|
*/
|
||||||
HAL_StatusTypeDef USB_SetTurnaroundTime(USB_OTG_GlobalTypeDef *USBx,
|
HAL_StatusTypeDef USB_SetTurnaroundTime(USB_OTG_GlobalTypeDef *USBx,
|
||||||
|
@ -173,7 +174,7 @@ HAL_StatusTypeDef USB_SetTurnaroundTime(USB_OTG_GlobalTypeDef *USBx,
|
||||||
used by application. In the low AHB frequency range it is used to stretch enough the USB response
|
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
|
time to IN tokens, the USB turnaround time, so to compensate for the longer AHB read access
|
||||||
latency to the Data FIFO */
|
latency to the Data FIFO */
|
||||||
if (speed == PCD_SPEED_FULL)
|
if (speed == USBD_FS_SPEED)
|
||||||
{
|
{
|
||||||
if ((hclk >= 14200000U) && (hclk < 15000000U))
|
if ((hclk >= 14200000U) && (hclk < 15000000U))
|
||||||
{
|
{
|
||||||
|
@ -226,7 +227,7 @@ HAL_StatusTypeDef USB_SetTurnaroundTime(USB_OTG_GlobalTypeDef *USBx,
|
||||||
UsbTrd = 0x6U;
|
UsbTrd = 0x6U;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else if (speed == PCD_SPEED_HIGH)
|
else if (speed == USBD_HS_SPEED)
|
||||||
{
|
{
|
||||||
UsbTrd = USBD_HS_TRDT_VALUE;
|
UsbTrd = USBD_HS_TRDT_VALUE;
|
||||||
}
|
}
|
||||||
|
@ -318,6 +319,8 @@ HAL_StatusTypeDef USB_DevInit(USB_OTG_GlobalTypeDef *USBx, USB_OTG_CfgTypeDef cf
|
||||||
/* VBUS Sensing setup */
|
/* VBUS Sensing setup */
|
||||||
if (cfg.vbus_sensing_enable == 0U)
|
if (cfg.vbus_sensing_enable == 0U)
|
||||||
{
|
{
|
||||||
|
USBx_DEVICE->DCTL |= USB_OTG_DCTL_SDIS;
|
||||||
|
|
||||||
/* Deactivate VBUS Sensing B */
|
/* Deactivate VBUS Sensing B */
|
||||||
USBx->GCCFG &= ~USB_OTG_GCCFG_VBDEN;
|
USBx->GCCFG &= ~USB_OTG_GCCFG_VBDEN;
|
||||||
|
|
||||||
|
@ -339,33 +342,33 @@ HAL_StatusTypeDef USB_DevInit(USB_OTG_GlobalTypeDef *USBx, USB_OTG_CfgTypeDef cf
|
||||||
|
|
||||||
if (cfg.phy_itface == USB_OTG_ULPI_PHY)
|
if (cfg.phy_itface == USB_OTG_ULPI_PHY)
|
||||||
{
|
{
|
||||||
if (cfg.speed == USB_OTG_SPEED_HIGH)
|
if (cfg.speed == USBD_HS_SPEED)
|
||||||
{
|
{
|
||||||
/* Set High speed phy */
|
/* Set Core speed to High speed mode */
|
||||||
(void)USB_SetDevSpeed(USBx, USB_OTG_SPEED_HIGH);
|
(void)USB_SetDevSpeed(USBx, USB_OTG_SPEED_HIGH);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
/* set High speed phy in Full speed mode */
|
/* Set Core speed to Full speed mode */
|
||||||
(void)USB_SetDevSpeed(USBx, USB_OTG_SPEED_HIGH_IN_FULL);
|
(void)USB_SetDevSpeed(USBx, USB_OTG_SPEED_HIGH_IN_FULL);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else if (cfg.phy_itface == USB_OTG_HS_EMBEDDED_PHY)
|
else if (cfg.phy_itface == USB_OTG_HS_EMBEDDED_PHY)
|
||||||
{
|
{
|
||||||
if (cfg.speed == USB_OTG_SPEED_HIGH)
|
if (cfg.speed == USBD_HS_SPEED)
|
||||||
{
|
{
|
||||||
/* Set High speed phy */
|
/* Set Core speed to High speed mode */
|
||||||
(void)USB_SetDevSpeed(USBx, USB_OTG_SPEED_HIGH);
|
(void)USB_SetDevSpeed(USBx, USB_OTG_SPEED_HIGH);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
/* set High speed phy in Full speed mode */
|
/* Set Core speed to Full speed mode */
|
||||||
(void)USB_SetDevSpeed(USBx, USB_OTG_SPEED_HIGH_IN_FULL);
|
(void)USB_SetDevSpeed(USBx, USB_OTG_SPEED_HIGH_IN_FULL);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
/* Set Full speed phy */
|
/* Set Core speed to Full speed mode */
|
||||||
(void)USB_SetDevSpeed(USBx, USB_OTG_SPEED_FULL);
|
(void)USB_SetDevSpeed(USBx, USB_OTG_SPEED_FULL);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -431,17 +434,6 @@ HAL_StatusTypeDef USB_DevInit(USB_OTG_GlobalTypeDef *USBx, USB_OTG_CfgTypeDef cf
|
||||||
|
|
||||||
USBx_DEVICE->DIEPMSK &= ~(USB_OTG_DIEPMSK_TXFURM);
|
USBx_DEVICE->DIEPMSK &= ~(USB_OTG_DIEPMSK_TXFURM);
|
||||||
|
|
||||||
if (cfg.dma_enable == 1U)
|
|
||||||
{
|
|
||||||
/*Set threshold parameters */
|
|
||||||
USBx_DEVICE->DTHRCTL = USB_OTG_DTHRCTL_TXTHRLEN_6 |
|
|
||||||
USB_OTG_DTHRCTL_RXTHRLEN_6;
|
|
||||||
|
|
||||||
USBx_DEVICE->DTHRCTL |= USB_OTG_DTHRCTL_RXTHREN |
|
|
||||||
USB_OTG_DTHRCTL_ISOTHREN |
|
|
||||||
USB_OTG_DTHRCTL_NONISOTHREN;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Disable all interrupts. */
|
/* Disable all interrupts. */
|
||||||
USBx->GINTMSK = 0U;
|
USBx->GINTMSK = 0U;
|
||||||
|
|
||||||
|
@ -557,16 +549,16 @@ uint8_t USB_GetDevSpeed(USB_OTG_GlobalTypeDef *USBx)
|
||||||
|
|
||||||
if (DevEnumSpeed == DSTS_ENUMSPD_HS_PHY_30MHZ_OR_60MHZ)
|
if (DevEnumSpeed == DSTS_ENUMSPD_HS_PHY_30MHZ_OR_60MHZ)
|
||||||
{
|
{
|
||||||
speed = PCD_SPEED_HIGH;
|
speed = USBD_HS_SPEED;
|
||||||
}
|
}
|
||||||
else if ((DevEnumSpeed == DSTS_ENUMSPD_FS_PHY_30MHZ_OR_60MHZ) ||
|
else if ((DevEnumSpeed == DSTS_ENUMSPD_FS_PHY_30MHZ_OR_60MHZ) ||
|
||||||
(DevEnumSpeed == DSTS_ENUMSPD_FS_PHY_48MHZ))
|
(DevEnumSpeed == DSTS_ENUMSPD_FS_PHY_48MHZ))
|
||||||
{
|
{
|
||||||
speed = PCD_SPEED_FULL;
|
speed = USBD_FS_SPEED;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
speed = 0U;
|
speed = 0xFU;
|
||||||
}
|
}
|
||||||
|
|
||||||
return speed;
|
return speed;
|
||||||
|
@ -663,6 +655,12 @@ HAL_StatusTypeDef USB_DeactivateEndpoint(USB_OTG_GlobalTypeDef *USBx, USB_OTG_EP
|
||||||
/* Read DEPCTLn register */
|
/* Read DEPCTLn register */
|
||||||
if (ep->is_in == 1U)
|
if (ep->is_in == 1U)
|
||||||
{
|
{
|
||||||
|
if ((USBx_INEP(epnum)->DIEPCTL & USB_OTG_DIEPCTL_EPENA) == USB_OTG_DIEPCTL_EPENA)
|
||||||
|
{
|
||||||
|
USBx_INEP(epnum)->DIEPCTL |= USB_OTG_DIEPCTL_SNAK;
|
||||||
|
USBx_INEP(epnum)->DIEPCTL |= USB_OTG_DIEPCTL_EPDIS;
|
||||||
|
}
|
||||||
|
|
||||||
USBx_DEVICE->DEACHMSK &= ~(USB_OTG_DAINTMSK_IEPM & (uint32_t)(1UL << (ep->num & EP_ADDR_MSK)));
|
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_DEVICE->DAINTMSK &= ~(USB_OTG_DAINTMSK_IEPM & (uint32_t)(1UL << (ep->num & EP_ADDR_MSK)));
|
||||||
USBx_INEP(epnum)->DIEPCTL &= ~(USB_OTG_DIEPCTL_USBAEP |
|
USBx_INEP(epnum)->DIEPCTL &= ~(USB_OTG_DIEPCTL_USBAEP |
|
||||||
|
@ -673,6 +671,12 @@ HAL_StatusTypeDef USB_DeactivateEndpoint(USB_OTG_GlobalTypeDef *USBx, USB_OTG_EP
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
if ((USBx_OUTEP(epnum)->DOEPCTL & USB_OTG_DOEPCTL_EPENA) == USB_OTG_DOEPCTL_EPENA)
|
||||||
|
{
|
||||||
|
USBx_OUTEP(epnum)->DOEPCTL |= USB_OTG_DOEPCTL_SNAK;
|
||||||
|
USBx_OUTEP(epnum)->DOEPCTL |= USB_OTG_DOEPCTL_EPDIS;
|
||||||
|
}
|
||||||
|
|
||||||
USBx_DEVICE->DEACHMSK &= ~(USB_OTG_DAINTMSK_OEPM & ((uint32_t)(1UL << (ep->num & EP_ADDR_MSK)) << 16));
|
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_DEVICE->DAINTMSK &= ~(USB_OTG_DAINTMSK_OEPM & ((uint32_t)(1UL << (ep->num & EP_ADDR_MSK)) << 16));
|
||||||
USBx_OUTEP(epnum)->DOEPCTL &= ~(USB_OTG_DOEPCTL_USBAEP |
|
USBx_OUTEP(epnum)->DOEPCTL &= ~(USB_OTG_DOEPCTL_USBAEP |
|
||||||
|
@ -698,11 +702,23 @@ HAL_StatusTypeDef USB_DeactivateDedicatedEndpoint(USB_OTG_GlobalTypeDef *USBx, U
|
||||||
/* Read DEPCTLn register */
|
/* Read DEPCTLn register */
|
||||||
if (ep->is_in == 1U)
|
if (ep->is_in == 1U)
|
||||||
{
|
{
|
||||||
|
if ((USBx_INEP(epnum)->DIEPCTL & USB_OTG_DIEPCTL_EPENA) == USB_OTG_DIEPCTL_EPENA)
|
||||||
|
{
|
||||||
|
USBx_INEP(epnum)->DIEPCTL |= USB_OTG_DIEPCTL_SNAK;
|
||||||
|
USBx_INEP(epnum)->DIEPCTL |= USB_OTG_DIEPCTL_EPDIS;
|
||||||
|
}
|
||||||
|
|
||||||
USBx_INEP(epnum)->DIEPCTL &= ~ USB_OTG_DIEPCTL_USBAEP;
|
USBx_INEP(epnum)->DIEPCTL &= ~ USB_OTG_DIEPCTL_USBAEP;
|
||||||
USBx_DEVICE->DAINTMSK &= ~(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)));
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
if ((USBx_OUTEP(epnum)->DOEPCTL & USB_OTG_DOEPCTL_EPENA) == USB_OTG_DOEPCTL_EPENA)
|
||||||
|
{
|
||||||
|
USBx_OUTEP(epnum)->DOEPCTL |= USB_OTG_DOEPCTL_SNAK;
|
||||||
|
USBx_OUTEP(epnum)->DOEPCTL |= USB_OTG_DOEPCTL_EPDIS;
|
||||||
|
}
|
||||||
|
|
||||||
USBx_OUTEP(epnum)->DOEPCTL &= ~USB_OTG_DOEPCTL_USBAEP;
|
USBx_OUTEP(epnum)->DOEPCTL &= ~USB_OTG_DOEPCTL_USBAEP;
|
||||||
USBx_DEVICE->DAINTMSK &= ~(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));
|
||||||
}
|
}
|
||||||
|
@ -761,9 +777,27 @@ HAL_StatusTypeDef USB_EPStartXfer(USB_OTG_GlobalTypeDef *USBx, USB_OTG_EPTypeDef
|
||||||
{
|
{
|
||||||
USBx_INEP(epnum)->DIEPDMA = (uint32_t)(ep->dma_addr);
|
USBx_INEP(epnum)->DIEPDMA = (uint32_t)(ep->dma_addr);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (ep->type == EP_TYPE_ISOC)
|
||||||
|
{
|
||||||
|
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;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/* EP enable, IN data in FIFO */
|
||||||
|
USBx_INEP(epnum)->DIEPCTL |= (USB_OTG_DIEPCTL_CNAK | USB_OTG_DIEPCTL_EPENA);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
/* EP enable, IN data in FIFO */
|
||||||
|
USBx_INEP(epnum)->DIEPCTL |= (USB_OTG_DIEPCTL_CNAK | USB_OTG_DIEPCTL_EPENA);
|
||||||
|
|
||||||
if (ep->type != EP_TYPE_ISOC)
|
if (ep->type != EP_TYPE_ISOC)
|
||||||
{
|
{
|
||||||
/* Enable the Tx FIFO Empty Interrupt for this EP */
|
/* Enable the Tx FIFO Empty Interrupt for this EP */
|
||||||
|
@ -772,27 +806,20 @@ HAL_StatusTypeDef USB_EPStartXfer(USB_OTG_GlobalTypeDef *USBx, USB_OTG_EPTypeDef
|
||||||
USBx_DEVICE->DIEPEMPMSK |= 1UL << (ep->num & EP_ADDR_MSK);
|
USBx_DEVICE->DIEPEMPMSK |= 1UL << (ep->num & EP_ADDR_MSK);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
if (ep->type == EP_TYPE_ISOC)
|
|
||||||
{
|
|
||||||
if ((USBx_DEVICE->DSTS & (1U << 8)) == 0U)
|
|
||||||
{
|
|
||||||
USBx_INEP(epnum)->DIEPCTL |= USB_OTG_DIEPCTL_SODDFRM;
|
|
||||||
}
|
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
USBx_INEP(epnum)->DIEPCTL |= USB_OTG_DIEPCTL_SD0PID_SEVNFRM;
|
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, dma);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/* EP enable, IN data in FIFO */
|
|
||||||
USBx_INEP(epnum)->DIEPCTL |= (USB_OTG_DIEPCTL_CNAK | USB_OTG_DIEPCTL_EPENA);
|
|
||||||
|
|
||||||
if (ep->type == EP_TYPE_ISOC)
|
|
||||||
{
|
|
||||||
(void)USB_WritePacket(USBx, ep->xfer_buff, ep->num, (uint16_t)ep->xfer_len, dma);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
else /* OUT endpoint */
|
else /* OUT endpoint */
|
||||||
{
|
{
|
||||||
|
@ -890,18 +917,21 @@ HAL_StatusTypeDef USB_EP0StartXfer(USB_OTG_GlobalTypeDef *USBx, USB_OTG_EPTypeDe
|
||||||
{
|
{
|
||||||
USBx_INEP(epnum)->DIEPDMA = (uint32_t)(ep->dma_addr);
|
USBx_INEP(epnum)->DIEPDMA = (uint32_t)(ep->dma_addr);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* EP enable, IN data in FIFO */
|
||||||
|
USBx_INEP(epnum)->DIEPCTL |= (USB_OTG_DIEPCTL_CNAK | USB_OTG_DIEPCTL_EPENA);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
/* 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 */
|
/* Enable the Tx FIFO Empty Interrupt for this EP */
|
||||||
if (ep->xfer_len > 0U)
|
if (ep->xfer_len > 0U)
|
||||||
{
|
{
|
||||||
USBx_DEVICE->DIEPEMPMSK |= 1UL << (ep->num & EP_ADDR_MSK);
|
USBx_DEVICE->DIEPEMPMSK |= 1UL << (ep->num & EP_ADDR_MSK);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/* EP enable, IN data in FIFO */
|
|
||||||
USBx_INEP(epnum)->DIEPCTL |= (USB_OTG_DIEPCTL_CNAK | USB_OTG_DIEPCTL_EPENA);
|
|
||||||
}
|
}
|
||||||
else /* OUT endpoint */
|
else /* OUT endpoint */
|
||||||
{
|
{
|
||||||
|
@ -959,7 +989,7 @@ HAL_StatusTypeDef USB_WritePacket(USB_OTG_GlobalTypeDef *USBx, uint8_t *src, uin
|
||||||
count32b = ((uint32_t)len + 3U) / 4U;
|
count32b = ((uint32_t)len + 3U) / 4U;
|
||||||
for (i = 0U; i < count32b; i++)
|
for (i = 0U; i < count32b; i++)
|
||||||
{
|
{
|
||||||
USBx_DFIFO((uint32_t)ch_ep_num) = *((__packed uint32_t *)pSrc);
|
USBx_DFIFO((uint32_t)ch_ep_num) = __UNALIGNED_UINT32_READ(pSrc);
|
||||||
pSrc++;
|
pSrc++;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -968,15 +998,10 @@ HAL_StatusTypeDef USB_WritePacket(USB_OTG_GlobalTypeDef *USBx, uint8_t *src, uin
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief USB_ReadPacket : read a packet from the Tx FIFO associated
|
* @brief USB_ReadPacket : read a packet from the RX FIFO
|
||||||
* with the EP/channel
|
|
||||||
* @param USBx Selected device
|
* @param USBx Selected device
|
||||||
* @param dest source pointer
|
* @param dest source pointer
|
||||||
* @param len Number of bytes to read
|
* @param len Number of bytes to read
|
||||||
* @param dma USB dma enabled or disabled
|
|
||||||
* This parameter can be one of these values:
|
|
||||||
* 0 : DMA feature not used
|
|
||||||
* 1 : DMA feature used
|
|
||||||
* @retval pointer to destination buffer
|
* @retval pointer to destination buffer
|
||||||
*/
|
*/
|
||||||
void *USB_ReadPacket(USB_OTG_GlobalTypeDef *USBx, uint8_t *dest, uint16_t len)
|
void *USB_ReadPacket(USB_OTG_GlobalTypeDef *USBx, uint8_t *dest, uint16_t len)
|
||||||
|
@ -988,7 +1013,7 @@ void *USB_ReadPacket(USB_OTG_GlobalTypeDef *USBx, uint8_t *dest, uint16_t len)
|
||||||
|
|
||||||
for (i = 0U; i < count32b; i++)
|
for (i = 0U; i < count32b; i++)
|
||||||
{
|
{
|
||||||
*(__packed uint32_t *)pDest = USBx_DFIFO(0U);
|
__UNALIGNED_UINT32_WRITE(pDest, USBx_DFIFO(0U));
|
||||||
pDest++;
|
pDest++;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1260,13 +1285,9 @@ HAL_StatusTypeDef USB_ActivateSetup(USB_OTG_GlobalTypeDef *USBx)
|
||||||
{
|
{
|
||||||
uint32_t USBx_BASE = (uint32_t)USBx;
|
uint32_t USBx_BASE = (uint32_t)USBx;
|
||||||
|
|
||||||
/* Set the MPS of the IN EP based on the enumeration speed */
|
/* Set the MPS of the IN EP0 to 64 bytes */
|
||||||
USBx_INEP(0U)->DIEPCTL &= ~USB_OTG_DIEPCTL_MPSIZ;
|
USBx_INEP(0U)->DIEPCTL &= ~USB_OTG_DIEPCTL_MPSIZ;
|
||||||
|
|
||||||
if ((USBx_DEVICE->DSTS & USB_OTG_DSTS_ENUMSPD) == DSTS_ENUMSPD_LS_PHY_6MHZ)
|
|
||||||
{
|
|
||||||
USBx_INEP(0U)->DIEPCTL |= 3U;
|
|
||||||
}
|
|
||||||
USBx_DEVICE->DCTL |= USB_OTG_DCTL_CGINAK;
|
USBx_DEVICE->DCTL |= USB_OTG_DCTL_CGINAK;
|
||||||
|
|
||||||
return HAL_OK;
|
return HAL_OK;
|
||||||
|
@ -1433,7 +1454,7 @@ HAL_StatusTypeDef USB_HostInit(USB_OTG_GlobalTypeDef *USBx, USB_OTG_CfgTypeDef c
|
||||||
|
|
||||||
if ((USBx->CID & (0x1U << 8)) != 0U)
|
if ((USBx->CID & (0x1U << 8)) != 0U)
|
||||||
{
|
{
|
||||||
if (cfg.speed == USB_OTG_SPEED_FULL)
|
if (cfg.speed == USBH_FSLS_SPEED)
|
||||||
{
|
{
|
||||||
/* Force Device Enumeration to FS/LS mode only */
|
/* Force Device Enumeration to FS/LS mode only */
|
||||||
USBx_HOST->HCFG |= USB_OTG_HCFG_FSLSS;
|
USBx_HOST->HCFG |= USB_OTG_HCFG_FSLSS;
|
||||||
|
@ -1594,9 +1615,9 @@ HAL_StatusTypeDef USB_DriveVbus(USB_OTG_GlobalTypeDef *USBx, uint8_t state)
|
||||||
* @param USBx Selected device
|
* @param USBx Selected device
|
||||||
* @retval speed : Host speed
|
* @retval speed : Host speed
|
||||||
* This parameter can be one of these values:
|
* This parameter can be one of these values:
|
||||||
* @arg USB_OTG_SPEED_HIGH: High speed mode
|
* @arg HCD_SPEED_HIGH: High speed mode
|
||||||
* @arg USB_OTG_SPEED_FULL: Full speed mode
|
* @arg HCD_SPEED_FULL: Full speed mode
|
||||||
* @arg USB_OTG_SPEED_LOW: Low speed mode
|
* @arg HCD_SPEED_LOW: Low speed mode
|
||||||
*/
|
*/
|
||||||
uint32_t USB_GetHostSpeed(USB_OTG_GlobalTypeDef *USBx)
|
uint32_t USB_GetHostSpeed(USB_OTG_GlobalTypeDef *USBx)
|
||||||
{
|
{
|
||||||
|
@ -1774,7 +1795,7 @@ HAL_StatusTypeDef USB_HC_StartXfer(USB_OTG_GlobalTypeDef *USBx, USB_OTG_HCTypeDe
|
||||||
uint16_t num_packets;
|
uint16_t num_packets;
|
||||||
uint16_t max_hc_pkt_count = 256U;
|
uint16_t max_hc_pkt_count = 256U;
|
||||||
|
|
||||||
if (((USBx->CID & (0x1U << 8)) != 0U) && (hc->speed == USB_OTG_SPEED_HIGH))
|
if (((USBx->CID & (0x1U << 8)) != 0U) && (hc->speed == USBH_HS_SPEED))
|
||||||
{
|
{
|
||||||
if ((dma == 0U) && (hc->do_ping == 1U))
|
if ((dma == 0U) && (hc->do_ping == 1U))
|
||||||
{
|
{
|
||||||
|
@ -2002,7 +2023,6 @@ HAL_StatusTypeDef USB_StopHost(USB_OTG_GlobalTypeDef *USBx)
|
||||||
uint32_t value;
|
uint32_t value;
|
||||||
uint32_t i;
|
uint32_t i;
|
||||||
|
|
||||||
|
|
||||||
(void)USB_DisableGlobalInt(USBx);
|
(void)USB_DisableGlobalInt(USBx);
|
||||||
|
|
||||||
/* Flush FIFO */
|
/* Flush FIFO */
|
||||||
|
@ -2041,6 +2061,7 @@ HAL_StatusTypeDef USB_StopHost(USB_OTG_GlobalTypeDef *USBx)
|
||||||
/* Clear any pending Host interrupts */
|
/* Clear any pending Host interrupts */
|
||||||
USBx_HOST->HAINT = 0xFFFFFFFFU;
|
USBx_HOST->HAINT = 0xFFFFFFFFU;
|
||||||
USBx->GINTSTS = 0xFFFFFFFFU;
|
USBx->GINTSTS = 0xFFFFFFFFU;
|
||||||
|
|
||||||
(void)USB_EnableGlobalInt(USBx);
|
(void)USB_EnableGlobalInt(USBx);
|
||||||
|
|
||||||
return HAL_OK;
|
return HAL_OK;
|
||||||
|
|
|
@ -12,7 +12,7 @@
|
||||||
* This software component is licensed by ST under Ultimate Liberty license
|
* This software component is licensed by ST under Ultimate Liberty license
|
||||||
* SLA0044, the "License"; You may not use this file except in compliance with
|
* SLA0044, the "License"; You may not use this file except in compliance with
|
||||||
* the License. You may obtain a copy of the License at:
|
* the License. You may obtain a copy of the License at:
|
||||||
* http://www.st.com/SLA0044
|
* www.st.com/SLA0044
|
||||||
*
|
*
|
||||||
******************************************************************************
|
******************************************************************************
|
||||||
*/
|
*/
|
||||||
|
@ -22,7 +22,7 @@
|
||||||
#define __USBD_CORE_H
|
#define __USBD_CORE_H
|
||||||
|
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
extern "C" {
|
extern "C" {
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
/* Includes ------------------------------------------------------------------*/
|
/* Includes ------------------------------------------------------------------*/
|
||||||
|
@ -84,58 +84,55 @@
|
||||||
*/
|
*/
|
||||||
USBD_StatusTypeDef USBD_Init(USBD_HandleTypeDef *pdev, USBD_DescriptorsTypeDef *pdesc, uint8_t id);
|
USBD_StatusTypeDef USBD_Init(USBD_HandleTypeDef *pdev, USBD_DescriptorsTypeDef *pdesc, uint8_t id);
|
||||||
USBD_StatusTypeDef USBD_DeInit(USBD_HandleTypeDef *pdev);
|
USBD_StatusTypeDef USBD_DeInit(USBD_HandleTypeDef *pdev);
|
||||||
USBD_StatusTypeDef USBD_Start (USBD_HandleTypeDef *pdev);
|
USBD_StatusTypeDef USBD_Start(USBD_HandleTypeDef *pdev);
|
||||||
USBD_StatusTypeDef USBD_Stop (USBD_HandleTypeDef *pdev);
|
USBD_StatusTypeDef USBD_Stop(USBD_HandleTypeDef *pdev);
|
||||||
USBD_StatusTypeDef USBD_RegisterClass(USBD_HandleTypeDef *pdev, USBD_ClassTypeDef *pclass);
|
USBD_StatusTypeDef USBD_RegisterClass(USBD_HandleTypeDef *pdev, USBD_ClassTypeDef *pclass);
|
||||||
|
|
||||||
USBD_StatusTypeDef USBD_RunTestMode (USBD_HandleTypeDef *pdev);
|
USBD_StatusTypeDef USBD_RunTestMode(USBD_HandleTypeDef *pdev);
|
||||||
USBD_StatusTypeDef USBD_SetClassConfig(USBD_HandleTypeDef *pdev, uint8_t cfgidx);
|
USBD_StatusTypeDef USBD_SetClassConfig(USBD_HandleTypeDef *pdev, uint8_t cfgidx);
|
||||||
USBD_StatusTypeDef USBD_ClrClassConfig(USBD_HandleTypeDef *pdev, uint8_t cfgidx);
|
USBD_StatusTypeDef USBD_ClrClassConfig(USBD_HandleTypeDef *pdev, uint8_t cfgidx);
|
||||||
|
|
||||||
USBD_StatusTypeDef USBD_LL_SetupStage(USBD_HandleTypeDef *pdev, uint8_t *psetup);
|
USBD_StatusTypeDef USBD_LL_SetupStage(USBD_HandleTypeDef *pdev, uint8_t *psetup);
|
||||||
USBD_StatusTypeDef USBD_LL_DataOutStage(USBD_HandleTypeDef *pdev , uint8_t epnum, uint8_t *pdata);
|
USBD_StatusTypeDef USBD_LL_DataOutStage(USBD_HandleTypeDef *pdev, uint8_t epnum, uint8_t *pdata);
|
||||||
USBD_StatusTypeDef USBD_LL_DataInStage(USBD_HandleTypeDef *pdev , uint8_t epnum, uint8_t *pdata);
|
USBD_StatusTypeDef USBD_LL_DataInStage(USBD_HandleTypeDef *pdev, uint8_t epnum, uint8_t *pdata);
|
||||||
|
|
||||||
USBD_StatusTypeDef USBD_LL_Reset(USBD_HandleTypeDef *pdev);
|
USBD_StatusTypeDef USBD_LL_Reset(USBD_HandleTypeDef *pdev);
|
||||||
USBD_StatusTypeDef USBD_LL_SetSpeed(USBD_HandleTypeDef *pdev, USBD_SpeedTypeDef speed);
|
USBD_StatusTypeDef USBD_LL_SetSpeed(USBD_HandleTypeDef *pdev, USBD_SpeedTypeDef speed);
|
||||||
USBD_StatusTypeDef USBD_LL_Suspend(USBD_HandleTypeDef *pdev);
|
USBD_StatusTypeDef USBD_LL_Suspend(USBD_HandleTypeDef *pdev);
|
||||||
USBD_StatusTypeDef USBD_LL_Resume(USBD_HandleTypeDef *pdev);
|
USBD_StatusTypeDef USBD_LL_Resume(USBD_HandleTypeDef *pdev);
|
||||||
|
|
||||||
USBD_StatusTypeDef USBD_LL_SOF(USBD_HandleTypeDef *pdev);
|
USBD_StatusTypeDef USBD_LL_SOF(USBD_HandleTypeDef *pdev);
|
||||||
USBD_StatusTypeDef USBD_LL_IsoINIncomplete(USBD_HandleTypeDef *pdev, uint8_t epnum);
|
USBD_StatusTypeDef USBD_LL_IsoINIncomplete(USBD_HandleTypeDef *pdev, uint8_t epnum);
|
||||||
USBD_StatusTypeDef USBD_LL_IsoOUTIncomplete(USBD_HandleTypeDef *pdev, uint8_t epnum);
|
USBD_StatusTypeDef USBD_LL_IsoOUTIncomplete(USBD_HandleTypeDef *pdev, uint8_t epnum);
|
||||||
|
|
||||||
USBD_StatusTypeDef USBD_LL_DevConnected(USBD_HandleTypeDef *pdev);
|
USBD_StatusTypeDef USBD_LL_DevConnected(USBD_HandleTypeDef *pdev);
|
||||||
USBD_StatusTypeDef USBD_LL_DevDisconnected(USBD_HandleTypeDef *pdev);
|
USBD_StatusTypeDef USBD_LL_DevDisconnected(USBD_HandleTypeDef *pdev);
|
||||||
|
|
||||||
/* USBD Low Level Driver */
|
/* USBD Low Level Driver */
|
||||||
USBD_StatusTypeDef USBD_LL_Init (USBD_HandleTypeDef *pdev);
|
USBD_StatusTypeDef USBD_LL_Init(USBD_HandleTypeDef *pdev);
|
||||||
USBD_StatusTypeDef USBD_LL_DeInit (USBD_HandleTypeDef *pdev);
|
USBD_StatusTypeDef USBD_LL_DeInit(USBD_HandleTypeDef *pdev);
|
||||||
USBD_StatusTypeDef USBD_LL_Start(USBD_HandleTypeDef *pdev);
|
USBD_StatusTypeDef USBD_LL_Start(USBD_HandleTypeDef *pdev);
|
||||||
USBD_StatusTypeDef USBD_LL_Stop (USBD_HandleTypeDef *pdev);
|
USBD_StatusTypeDef USBD_LL_Stop(USBD_HandleTypeDef *pdev);
|
||||||
USBD_StatusTypeDef USBD_LL_OpenEP (USBD_HandleTypeDef *pdev,
|
|
||||||
uint8_t ep_addr,
|
|
||||||
uint8_t ep_type,
|
|
||||||
uint16_t ep_mps);
|
|
||||||
|
|
||||||
USBD_StatusTypeDef USBD_LL_CloseEP (USBD_HandleTypeDef *pdev, uint8_t ep_addr);
|
USBD_StatusTypeDef USBD_LL_OpenEP(USBD_HandleTypeDef *pdev, uint8_t ep_addr,
|
||||||
USBD_StatusTypeDef USBD_LL_FlushEP (USBD_HandleTypeDef *pdev, uint8_t ep_addr);
|
uint8_t ep_type, uint16_t ep_mps);
|
||||||
USBD_StatusTypeDef USBD_LL_StallEP (USBD_HandleTypeDef *pdev, uint8_t ep_addr);
|
|
||||||
USBD_StatusTypeDef USBD_LL_ClearStallEP (USBD_HandleTypeDef *pdev, uint8_t ep_addr);
|
|
||||||
uint8_t USBD_LL_IsStallEP (USBD_HandleTypeDef *pdev, uint8_t ep_addr);
|
|
||||||
USBD_StatusTypeDef USBD_LL_SetUSBAddress (USBD_HandleTypeDef *pdev, uint8_t dev_addr);
|
|
||||||
USBD_StatusTypeDef USBD_LL_Transmit (USBD_HandleTypeDef *pdev,
|
|
||||||
uint8_t ep_addr,
|
|
||||||
uint8_t *pbuf,
|
|
||||||
uint16_t size);
|
|
||||||
|
|
||||||
USBD_StatusTypeDef USBD_LL_PrepareReceive(USBD_HandleTypeDef *pdev,
|
USBD_StatusTypeDef USBD_LL_CloseEP(USBD_HandleTypeDef *pdev, uint8_t ep_addr);
|
||||||
uint8_t ep_addr,
|
USBD_StatusTypeDef USBD_LL_FlushEP(USBD_HandleTypeDef *pdev, uint8_t ep_addr);
|
||||||
uint8_t *pbuf,
|
USBD_StatusTypeDef USBD_LL_StallEP(USBD_HandleTypeDef *pdev, uint8_t ep_addr);
|
||||||
uint16_t size);
|
USBD_StatusTypeDef USBD_LL_ClearStallEP(USBD_HandleTypeDef *pdev, uint8_t ep_addr);
|
||||||
|
USBD_StatusTypeDef USBD_LL_SetUSBAddress(USBD_HandleTypeDef *pdev, uint8_t dev_addr);
|
||||||
|
|
||||||
uint32_t USBD_LL_GetRxDataSize (USBD_HandleTypeDef *pdev, uint8_t ep_addr);
|
USBD_StatusTypeDef USBD_LL_Transmit(USBD_HandleTypeDef *pdev, uint8_t ep_addr,
|
||||||
void USBD_LL_Delay (uint32_t Delay);
|
uint8_t *pbuf, uint32_t size);
|
||||||
|
|
||||||
|
USBD_StatusTypeDef USBD_LL_PrepareReceive(USBD_HandleTypeDef *pdev, uint8_t ep_addr,
|
||||||
|
uint8_t *pbuf, uint32_t size);
|
||||||
|
|
||||||
|
uint8_t USBD_LL_IsStallEP(USBD_HandleTypeDef *pdev, uint8_t ep_addr);
|
||||||
|
uint32_t USBD_LL_GetRxDataSize(USBD_HandleTypeDef *pdev, uint8_t ep_addr);
|
||||||
|
|
||||||
|
void USBD_LL_Delay(uint32_t Delay);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @}
|
* @}
|
||||||
|
|
|
@ -12,7 +12,7 @@
|
||||||
* This software component is licensed by ST under Ultimate Liberty license
|
* This software component is licensed by ST under Ultimate Liberty license
|
||||||
* SLA0044, the "License"; You may not use this file except in compliance with
|
* SLA0044, the "License"; You may not use this file except in compliance with
|
||||||
* the License. You may obtain a copy of the License at:
|
* the License. You may obtain a copy of the License at:
|
||||||
* http://www.st.com/SLA0044
|
* www.st.com/SLA0044
|
||||||
*
|
*
|
||||||
******************************************************************************
|
******************************************************************************
|
||||||
*/
|
*/
|
||||||
|
@ -22,7 +22,7 @@
|
||||||
#define __USB_REQUEST_H
|
#define __USB_REQUEST_H
|
||||||
|
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
extern "C" {
|
extern "C" {
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
/* Includes ------------------------------------------------------------------*/
|
/* Includes ------------------------------------------------------------------*/
|
||||||
|
@ -73,16 +73,14 @@
|
||||||
* @{
|
* @{
|
||||||
*/
|
*/
|
||||||
|
|
||||||
USBD_StatusTypeDef USBD_StdDevReq (USBD_HandleTypeDef *pdev, USBD_SetupReqTypedef *req);
|
USBD_StatusTypeDef USBD_StdDevReq(USBD_HandleTypeDef *pdev, USBD_SetupReqTypedef *req);
|
||||||
USBD_StatusTypeDef USBD_StdItfReq (USBD_HandleTypeDef *pdev, USBD_SetupReqTypedef *req);
|
USBD_StatusTypeDef USBD_StdItfReq(USBD_HandleTypeDef *pdev, USBD_SetupReqTypedef *req);
|
||||||
USBD_StatusTypeDef USBD_StdEPReq (USBD_HandleTypeDef *pdev, USBD_SetupReqTypedef *req);
|
USBD_StatusTypeDef USBD_StdEPReq(USBD_HandleTypeDef *pdev, USBD_SetupReqTypedef *req);
|
||||||
|
|
||||||
|
void USBD_CtlError(USBD_HandleTypeDef *pdev, USBD_SetupReqTypedef *req);
|
||||||
|
void USBD_ParseSetupRequest(USBD_SetupReqTypedef *req, uint8_t *pdata);
|
||||||
|
void USBD_GetString(uint8_t *desc, uint8_t *unicode, uint16_t *len);
|
||||||
|
|
||||||
void USBD_CtlError (USBD_HandleTypeDef *pdev, USBD_SetupReqTypedef *req);
|
|
||||||
|
|
||||||
void USBD_ParseSetupRequest (USBD_SetupReqTypedef *req, uint8_t *pdata);
|
|
||||||
|
|
||||||
void USBD_GetString (uint8_t *desc, uint8_t *unicode, uint16_t *len);
|
|
||||||
/**
|
/**
|
||||||
* @}
|
* @}
|
||||||
*/
|
*/
|
||||||
|
|
|
@ -12,7 +12,7 @@
|
||||||
* This software component is licensed by ST under Ultimate Liberty license
|
* This software component is licensed by ST under Ultimate Liberty license
|
||||||
* SLA0044, the "License"; You may not use this file except in compliance with
|
* SLA0044, the "License"; You may not use this file except in compliance with
|
||||||
* the License. You may obtain a copy of the License at:
|
* the License. You may obtain a copy of the License at:
|
||||||
* http://www.st.com/SLA0044
|
* www.st.com/SLA0044
|
||||||
*
|
*
|
||||||
******************************************************************************
|
******************************************************************************
|
||||||
*/
|
*/
|
||||||
|
@ -22,7 +22,7 @@
|
||||||
#define __USBD_DEF_H
|
#define __USBD_DEF_H
|
||||||
|
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
extern "C" {
|
extern "C" {
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
/* Includes ------------------------------------------------------------------*/
|
/* Includes ------------------------------------------------------------------*/
|
||||||
|
@ -61,9 +61,13 @@
|
||||||
#define USBD_SELF_POWERED 1U
|
#define USBD_SELF_POWERED 1U
|
||||||
#endif /*USBD_SELF_POWERED */
|
#endif /*USBD_SELF_POWERED */
|
||||||
|
|
||||||
#ifndef USBD_SUPPORT_USER_STRING
|
#ifndef USBD_SUPPORT_USER_STRING_DESC
|
||||||
#define USBD_SUPPORT_USER_STRING 0U
|
#define USBD_SUPPORT_USER_STRING_DESC 0U
|
||||||
#endif /* USBD_SUPPORT_USER_STRING */
|
#endif /* USBD_SUPPORT_USER_STRING_DESC */
|
||||||
|
|
||||||
|
#ifndef USBD_CLASS_USER_STRING_DESC
|
||||||
|
#define USBD_CLASS_USER_STRING_DESC 0U
|
||||||
|
#endif /* USBD_CLASS_USER_STRING_DESC */
|
||||||
|
|
||||||
#define USB_LEN_DEV_QUALIFIER_DESC 0x0AU
|
#define USB_LEN_DEV_QUALIFIER_DESC 0x0AU
|
||||||
#define USB_LEN_DEV_DESC 0x12U
|
#define USB_LEN_DEV_DESC 0x12U
|
||||||
|
@ -158,37 +162,58 @@
|
||||||
|
|
||||||
typedef struct usb_setup_req
|
typedef struct usb_setup_req
|
||||||
{
|
{
|
||||||
|
uint8_t bmRequest;
|
||||||
|
uint8_t bRequest;
|
||||||
|
uint16_t wValue;
|
||||||
|
uint16_t wIndex;
|
||||||
|
uint16_t wLength;
|
||||||
|
} USBD_SetupReqTypedef;
|
||||||
|
|
||||||
|
typedef struct
|
||||||
|
{
|
||||||
|
uint8_t bLength;
|
||||||
|
uint8_t bDescriptorType;
|
||||||
|
uint8_t wDescriptorLengthLow;
|
||||||
|
uint8_t wDescriptorLengthHigh;
|
||||||
|
uint8_t bNumInterfaces;
|
||||||
|
uint8_t bConfigurationValue;
|
||||||
|
uint8_t iConfiguration;
|
||||||
|
uint8_t bmAttributes;
|
||||||
|
uint8_t bMaxPower;
|
||||||
|
} USBD_ConfigDescTypedef;
|
||||||
|
|
||||||
|
typedef struct
|
||||||
|
{
|
||||||
|
uint8_t bLength;
|
||||||
|
uint8_t bDescriptorType;
|
||||||
|
uint16_t wTotalLength;
|
||||||
|
uint8_t bNumDeviceCaps;
|
||||||
|
} USBD_BosDescTypedef;
|
||||||
|
|
||||||
uint8_t bmRequest;
|
|
||||||
uint8_t bRequest;
|
|
||||||
uint16_t wValue;
|
|
||||||
uint16_t wIndex;
|
|
||||||
uint16_t wLength;
|
|
||||||
}USBD_SetupReqTypedef;
|
|
||||||
|
|
||||||
struct _USBD_HandleTypeDef;
|
struct _USBD_HandleTypeDef;
|
||||||
|
|
||||||
typedef struct _Device_cb
|
typedef struct _Device_cb
|
||||||
{
|
{
|
||||||
uint8_t (*Init) (struct _USBD_HandleTypeDef *pdev , uint8_t cfgidx);
|
uint8_t (*Init)(struct _USBD_HandleTypeDef *pdev, uint8_t cfgidx);
|
||||||
uint8_t (*DeInit) (struct _USBD_HandleTypeDef *pdev , uint8_t cfgidx);
|
uint8_t (*DeInit)(struct _USBD_HandleTypeDef *pdev, uint8_t cfgidx);
|
||||||
/* Control Endpoints*/
|
/* Control Endpoints*/
|
||||||
uint8_t (*Setup) (struct _USBD_HandleTypeDef *pdev , USBD_SetupReqTypedef *req);
|
uint8_t (*Setup)(struct _USBD_HandleTypeDef *pdev, USBD_SetupReqTypedef *req);
|
||||||
uint8_t (*EP0_TxSent) (struct _USBD_HandleTypeDef *pdev );
|
uint8_t (*EP0_TxSent)(struct _USBD_HandleTypeDef *pdev);
|
||||||
uint8_t (*EP0_RxReady) (struct _USBD_HandleTypeDef *pdev );
|
uint8_t (*EP0_RxReady)(struct _USBD_HandleTypeDef *pdev);
|
||||||
/* Class Specific Endpoints*/
|
/* Class Specific Endpoints*/
|
||||||
uint8_t (*DataIn) (struct _USBD_HandleTypeDef *pdev , uint8_t epnum);
|
uint8_t (*DataIn)(struct _USBD_HandleTypeDef *pdev, uint8_t epnum);
|
||||||
uint8_t (*DataOut) (struct _USBD_HandleTypeDef *pdev , uint8_t epnum);
|
uint8_t (*DataOut)(struct _USBD_HandleTypeDef *pdev, uint8_t epnum);
|
||||||
uint8_t (*SOF) (struct _USBD_HandleTypeDef *pdev);
|
uint8_t (*SOF)(struct _USBD_HandleTypeDef *pdev);
|
||||||
uint8_t (*IsoINIncomplete) (struct _USBD_HandleTypeDef *pdev , uint8_t epnum);
|
uint8_t (*IsoINIncomplete)(struct _USBD_HandleTypeDef *pdev, uint8_t epnum);
|
||||||
uint8_t (*IsoOUTIncomplete) (struct _USBD_HandleTypeDef *pdev , uint8_t epnum);
|
uint8_t (*IsoOUTIncomplete)(struct _USBD_HandleTypeDef *pdev, uint8_t epnum);
|
||||||
|
|
||||||
uint8_t *(*GetHSConfigDescriptor)(uint16_t *length);
|
uint8_t *(*GetHSConfigDescriptor)(uint16_t *length);
|
||||||
uint8_t *(*GetFSConfigDescriptor)(uint16_t *length);
|
uint8_t *(*GetFSConfigDescriptor)(uint16_t *length);
|
||||||
uint8_t *(*GetOtherSpeedConfigDescriptor)(uint16_t *length);
|
uint8_t *(*GetOtherSpeedConfigDescriptor)(uint16_t *length);
|
||||||
uint8_t *(*GetDeviceQualifierDescriptor)(uint16_t *length);
|
uint8_t *(*GetDeviceQualifierDescriptor)(uint16_t *length);
|
||||||
#if (USBD_SUPPORT_USER_STRING == 1U)
|
#if (USBD_SUPPORT_USER_STRING_DESC == 1U)
|
||||||
uint8_t *(*GetUsrStrDescriptor)(struct _USBD_HandleTypeDef *pdev ,uint8_t index, uint16_t *length);
|
uint8_t *(*GetUsrStrDescriptor)(struct _USBD_HandleTypeDef *pdev, uint8_t index, uint16_t *length);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
} USBD_ClassTypeDef;
|
} USBD_ClassTypeDef;
|
||||||
|
@ -199,38 +224,44 @@ typedef enum
|
||||||
USBD_SPEED_HIGH = 0U,
|
USBD_SPEED_HIGH = 0U,
|
||||||
USBD_SPEED_FULL = 1U,
|
USBD_SPEED_FULL = 1U,
|
||||||
USBD_SPEED_LOW = 2U,
|
USBD_SPEED_LOW = 2U,
|
||||||
}USBD_SpeedTypeDef;
|
} USBD_SpeedTypeDef;
|
||||||
|
|
||||||
/* Following USB Device status */
|
/* Following USB Device status */
|
||||||
typedef enum {
|
typedef enum
|
||||||
USBD_OK = 0U,
|
{
|
||||||
|
USBD_OK = 0U,
|
||||||
USBD_BUSY,
|
USBD_BUSY,
|
||||||
|
USBD_EMEM,
|
||||||
USBD_FAIL,
|
USBD_FAIL,
|
||||||
}USBD_StatusTypeDef;
|
} USBD_StatusTypeDef;
|
||||||
|
|
||||||
/* USB Device descriptors structure */
|
/* USB Device descriptors structure */
|
||||||
typedef struct
|
typedef struct
|
||||||
{
|
{
|
||||||
uint8_t *(*GetDeviceDescriptor)( USBD_SpeedTypeDef speed , uint16_t *length);
|
uint8_t *(*GetDeviceDescriptor)(USBD_SpeedTypeDef speed, uint16_t *length);
|
||||||
uint8_t *(*GetLangIDStrDescriptor)( USBD_SpeedTypeDef speed , uint16_t *length);
|
uint8_t *(*GetLangIDStrDescriptor)(USBD_SpeedTypeDef speed, uint16_t *length);
|
||||||
uint8_t *(*GetManufacturerStrDescriptor)( USBD_SpeedTypeDef speed , uint16_t *length);
|
uint8_t *(*GetManufacturerStrDescriptor)(USBD_SpeedTypeDef speed, uint16_t *length);
|
||||||
uint8_t *(*GetProductStrDescriptor)( USBD_SpeedTypeDef speed , uint16_t *length);
|
uint8_t *(*GetProductStrDescriptor)(USBD_SpeedTypeDef speed, uint16_t *length);
|
||||||
uint8_t *(*GetSerialStrDescriptor)( USBD_SpeedTypeDef speed , uint16_t *length);
|
uint8_t *(*GetSerialStrDescriptor)(USBD_SpeedTypeDef speed, uint16_t *length);
|
||||||
uint8_t *(*GetConfigurationStrDescriptor)( USBD_SpeedTypeDef speed , uint16_t *length);
|
uint8_t *(*GetConfigurationStrDescriptor)(USBD_SpeedTypeDef speed, uint16_t *length);
|
||||||
uint8_t *(*GetInterfaceStrDescriptor)( USBD_SpeedTypeDef speed , uint16_t *length);
|
uint8_t *(*GetInterfaceStrDescriptor)(USBD_SpeedTypeDef speed, uint16_t *length);
|
||||||
#if (USBD_LPM_ENABLED == 1U)
|
#if (USBD_CLASS_USER_STRING_DESC == 1)
|
||||||
uint8_t *(*GetBOSDescriptor)( USBD_SpeedTypeDef speed , uint16_t *length);
|
uint8_t *(*GetUserStrDescriptor)(USBD_SpeedTypeDef speed, uint8_t idx, uint16_t *length);
|
||||||
|
#endif
|
||||||
|
#if ((USBD_LPM_ENABLED == 1U) || (USBD_CLASS_BOS_ENABLED == 1))
|
||||||
|
uint8_t *(*GetBOSDescriptor)(USBD_SpeedTypeDef speed, uint16_t *length);
|
||||||
#endif
|
#endif
|
||||||
} USBD_DescriptorsTypeDef;
|
} USBD_DescriptorsTypeDef;
|
||||||
|
|
||||||
/* USB Device handle structure */
|
/* USB Device handle structure */
|
||||||
typedef struct
|
typedef struct
|
||||||
{
|
{
|
||||||
uint32_t status;
|
uint32_t status;
|
||||||
uint32_t is_used;
|
uint32_t total_length;
|
||||||
uint32_t total_length;
|
uint32_t rem_length;
|
||||||
uint32_t rem_length;
|
uint32_t maxpacket;
|
||||||
uint32_t maxpacket;
|
uint16_t is_used;
|
||||||
|
uint16_t bInterval;
|
||||||
} USBD_EndpointTypeDef;
|
} USBD_EndpointTypeDef;
|
||||||
|
|
||||||
/* USB Device handle structure */
|
/* USB Device handle structure */
|
||||||
|
@ -241,8 +272,8 @@ typedef struct _USBD_HandleTypeDef
|
||||||
uint32_t dev_default_config;
|
uint32_t dev_default_config;
|
||||||
uint32_t dev_config_status;
|
uint32_t dev_config_status;
|
||||||
USBD_SpeedTypeDef dev_speed;
|
USBD_SpeedTypeDef dev_speed;
|
||||||
USBD_EndpointTypeDef ep_in[15];
|
USBD_EndpointTypeDef ep_in[16];
|
||||||
USBD_EndpointTypeDef ep_out[15];
|
USBD_EndpointTypeDef ep_out[16];
|
||||||
uint32_t ep0_state;
|
uint32_t ep0_state;
|
||||||
uint32_t ep0_data_len;
|
uint32_t ep0_data_len;
|
||||||
uint8_t dev_state;
|
uint8_t dev_state;
|
||||||
|
@ -251,6 +282,7 @@ typedef struct _USBD_HandleTypeDef
|
||||||
uint8_t dev_connection_status;
|
uint8_t dev_connection_status;
|
||||||
uint8_t dev_test_mode;
|
uint8_t dev_test_mode;
|
||||||
uint32_t dev_remote_wakeup;
|
uint32_t dev_remote_wakeup;
|
||||||
|
uint8_t ConfIdx;
|
||||||
|
|
||||||
USBD_SetupReqTypedef request;
|
USBD_SetupReqTypedef request;
|
||||||
USBD_DescriptorsTypeDef *pDesc;
|
USBD_DescriptorsTypeDef *pDesc;
|
||||||
|
@ -258,6 +290,8 @@ typedef struct _USBD_HandleTypeDef
|
||||||
void *pClassData;
|
void *pClassData;
|
||||||
void *pUserData;
|
void *pUserData;
|
||||||
void *pData;
|
void *pData;
|
||||||
|
void *pBosDesc;
|
||||||
|
void *pConfDesc;
|
||||||
} USBD_HandleTypeDef;
|
} USBD_HandleTypeDef;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -269,40 +303,57 @@ typedef struct _USBD_HandleTypeDef
|
||||||
/** @defgroup USBD_DEF_Exported_Macros
|
/** @defgroup USBD_DEF_Exported_Macros
|
||||||
* @{
|
* @{
|
||||||
*/
|
*/
|
||||||
#define SWAPBYTE(addr) (((uint16_t)(*((uint8_t *)(addr)))) + \
|
__STATIC_INLINE uint16_t SWAPBYTE(uint8_t *addr)
|
||||||
(((uint16_t)(*(((uint8_t *)(addr)) + 1U))) << 8U))
|
{
|
||||||
|
uint16_t _SwapVal, _Byte1, _Byte2;
|
||||||
|
uint8_t *_pbuff = addr;
|
||||||
|
|
||||||
#define LOBYTE(x) ((uint8_t)(x & 0x00FFU))
|
_Byte1 = *(uint8_t *)_pbuff;
|
||||||
#define HIBYTE(x) ((uint8_t)((x & 0xFF00U) >> 8U))
|
_pbuff++;
|
||||||
|
_Byte2 = *(uint8_t *)_pbuff;
|
||||||
|
|
||||||
|
_SwapVal = (_Byte2 << 8) | _Byte1;
|
||||||
|
|
||||||
|
return _SwapVal;
|
||||||
|
}
|
||||||
|
|
||||||
|
#define LOBYTE(x) ((uint8_t)((x) & 0x00FFU))
|
||||||
|
#define HIBYTE(x) ((uint8_t)(((x) & 0xFF00U) >> 8U))
|
||||||
#define MIN(a, b) (((a) < (b)) ? (a) : (b))
|
#define MIN(a, b) (((a) < (b)) ? (a) : (b))
|
||||||
#define MAX(a, b) (((a) > (b)) ? (a) : (b))
|
#define MAX(a, b) (((a) > (b)) ? (a) : (b))
|
||||||
|
|
||||||
|
|
||||||
#if defined ( __GNUC__ )
|
#if defined ( __GNUC__ )
|
||||||
#ifndef __weak
|
#ifndef __weak
|
||||||
#define __weak __attribute__((weak))
|
#define __weak __attribute__((weak))
|
||||||
#endif /* __weak */
|
#endif /* __weak */
|
||||||
#ifndef __packed
|
#ifndef __packed
|
||||||
#define __packed __attribute__((__packed__))
|
#define __packed __attribute__((__packed__))
|
||||||
#endif /* __packed */
|
#endif /* __packed */
|
||||||
#endif /* __GNUC__ */
|
#endif /* __GNUC__ */
|
||||||
|
|
||||||
|
|
||||||
/* In HS mode and when the DMA is used, all variables and data structures dealing
|
/* In HS mode and when the DMA is used, all variables and data structures dealing
|
||||||
with the DMA during the transaction process should be 4-bytes aligned */
|
with the DMA during the transaction process should be 4-bytes aligned */
|
||||||
|
|
||||||
#if defined (__GNUC__) /* GNU Compiler */
|
#if defined ( __GNUC__ ) && !defined (__CC_ARM) /* GNU Compiler */
|
||||||
#define __ALIGN_END __attribute__ ((aligned (4)))
|
#ifndef __ALIGN_END
|
||||||
#define __ALIGN_BEGIN
|
#define __ALIGN_END __attribute__ ((aligned (4U)))
|
||||||
|
#endif /* __ALIGN_END */
|
||||||
|
#ifndef __ALIGN_BEGIN
|
||||||
|
#define __ALIGN_BEGIN
|
||||||
|
#endif /* __ALIGN_BEGIN */
|
||||||
#else
|
#else
|
||||||
#define __ALIGN_END
|
#ifndef __ALIGN_END
|
||||||
#if defined (__CC_ARM) /* ARM Compiler */
|
#define __ALIGN_END
|
||||||
#define __ALIGN_BEGIN __align(4)
|
#endif /* __ALIGN_END */
|
||||||
#elif defined (__ICCARM__) /* IAR Compiler */
|
#ifndef __ALIGN_BEGIN
|
||||||
#define __ALIGN_BEGIN
|
#if defined (__CC_ARM) /* ARM Compiler */
|
||||||
#elif defined (__TASKING__) /* TASKING Compiler */
|
#define __ALIGN_BEGIN __align(4U)
|
||||||
#define __ALIGN_BEGIN __align(4)
|
#elif defined (__ICCARM__) /* IAR Compiler */
|
||||||
#endif /* __CC_ARM */
|
#define __ALIGN_BEGIN
|
||||||
|
#endif /* __CC_ARM */
|
||||||
|
#endif /* __ALIGN_BEGIN */
|
||||||
#endif /* __GNUC__ */
|
#endif /* __GNUC__ */
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -12,7 +12,7 @@
|
||||||
* This software component is licensed by ST under Ultimate Liberty license
|
* This software component is licensed by ST under Ultimate Liberty license
|
||||||
* SLA0044, the "License"; You may not use this file except in compliance with
|
* SLA0044, the "License"; You may not use this file except in compliance with
|
||||||
* the License. You may obtain a copy of the License at:
|
* the License. You may obtain a copy of the License at:
|
||||||
* http://www.st.com/SLA0044
|
* www.st.com/SLA0044
|
||||||
*
|
*
|
||||||
******************************************************************************
|
******************************************************************************
|
||||||
*/
|
*/
|
||||||
|
@ -22,7 +22,7 @@
|
||||||
#define __USBD_IOREQ_H
|
#define __USBD_IOREQ_H
|
||||||
|
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
extern "C" {
|
extern "C" {
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
/* Includes ------------------------------------------------------------------*/
|
/* Includes ------------------------------------------------------------------*/
|
||||||
|
@ -77,27 +77,22 @@
|
||||||
* @{
|
* @{
|
||||||
*/
|
*/
|
||||||
|
|
||||||
USBD_StatusTypeDef USBD_CtlSendData (USBD_HandleTypeDef *pdev,
|
USBD_StatusTypeDef USBD_CtlSendData(USBD_HandleTypeDef *pdev,
|
||||||
uint8_t *pbuf,
|
uint8_t *pbuf, uint32_t len);
|
||||||
uint16_t len);
|
|
||||||
|
|
||||||
USBD_StatusTypeDef USBD_CtlContinueSendData (USBD_HandleTypeDef *pdev,
|
USBD_StatusTypeDef USBD_CtlContinueSendData(USBD_HandleTypeDef *pdev,
|
||||||
uint8_t *pbuf,
|
uint8_t *pbuf, uint32_t len);
|
||||||
uint16_t len);
|
|
||||||
|
|
||||||
USBD_StatusTypeDef USBD_CtlPrepareRx (USBD_HandleTypeDef *pdev,
|
USBD_StatusTypeDef USBD_CtlPrepareRx(USBD_HandleTypeDef *pdev,
|
||||||
uint8_t *pbuf,
|
uint8_t *pbuf, uint32_t len);
|
||||||
uint16_t len);
|
|
||||||
|
|
||||||
USBD_StatusTypeDef USBD_CtlContinueRx (USBD_HandleTypeDef *pdev,
|
USBD_StatusTypeDef USBD_CtlContinueRx(USBD_HandleTypeDef *pdev,
|
||||||
uint8_t *pbuf,
|
uint8_t *pbuf, uint32_t len);
|
||||||
uint16_t len);
|
|
||||||
|
|
||||||
USBD_StatusTypeDef USBD_CtlSendStatus (USBD_HandleTypeDef *pdev);
|
USBD_StatusTypeDef USBD_CtlSendStatus(USBD_HandleTypeDef *pdev);
|
||||||
|
USBD_StatusTypeDef USBD_CtlReceiveStatus(USBD_HandleTypeDef *pdev);
|
||||||
|
|
||||||
USBD_StatusTypeDef USBD_CtlReceiveStatus (USBD_HandleTypeDef *pdev);
|
uint32_t USBD_GetRxCount(USBD_HandleTypeDef *pdev, uint8_t ep_addr);
|
||||||
|
|
||||||
uint32_t USBD_GetRxCount (USBD_HandleTypeDef *pdev, uint8_t ep_addr);
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @}
|
* @}
|
||||||
|
|
|
@ -12,7 +12,7 @@
|
||||||
* This software component is licensed by ST under Ultimate Liberty license
|
* This software component is licensed by ST under Ultimate Liberty license
|
||||||
* SLA0044, the "License"; You may not use this file except in compliance with
|
* SLA0044, the "License"; You may not use this file except in compliance with
|
||||||
* the License. You may obtain a copy of the License at:
|
* the License. You may obtain a copy of the License at:
|
||||||
* http://www.st.com/SLA0044
|
* www.st.com/SLA0044
|
||||||
*
|
*
|
||||||
******************************************************************************
|
******************************************************************************
|
||||||
*/
|
*/
|
||||||
|
@ -33,6 +33,7 @@
|
||||||
/** @defgroup USBD_CORE_Private_TypesDefinitions
|
/** @defgroup USBD_CORE_Private_TypesDefinitions
|
||||||
* @{
|
* @{
|
||||||
*/
|
*/
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @}
|
* @}
|
||||||
*/
|
*/
|
||||||
|
@ -50,13 +51,12 @@
|
||||||
/** @defgroup USBD_CORE_Private_Macros
|
/** @defgroup USBD_CORE_Private_Macros
|
||||||
* @{
|
* @{
|
||||||
*/
|
*/
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @}
|
* @}
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/** @defgroup USBD_CORE_Private_FunctionPrototypes
|
/** @defgroup USBD_CORE_Private_FunctionPrototypes
|
||||||
* @{
|
* @{
|
||||||
*/
|
*/
|
||||||
|
@ -73,6 +73,7 @@
|
||||||
* @}
|
* @}
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
|
||||||
/** @defgroup USBD_CORE_Private_Functions
|
/** @defgroup USBD_CORE_Private_Functions
|
||||||
* @{
|
* @{
|
||||||
*/
|
*/
|
||||||
|
@ -85,10 +86,13 @@
|
||||||
* @param id: Low level core index
|
* @param id: Low level core index
|
||||||
* @retval None
|
* @retval None
|
||||||
*/
|
*/
|
||||||
USBD_StatusTypeDef USBD_Init(USBD_HandleTypeDef *pdev, USBD_DescriptorsTypeDef *pdesc, uint8_t id)
|
USBD_StatusTypeDef USBD_Init(USBD_HandleTypeDef *pdev,
|
||||||
|
USBD_DescriptorsTypeDef *pdesc, uint8_t id)
|
||||||
{
|
{
|
||||||
|
USBD_StatusTypeDef ret;
|
||||||
|
|
||||||
/* Check whether the USB Host handle is valid */
|
/* Check whether the USB Host handle is valid */
|
||||||
if(pdev == NULL)
|
if (pdev == NULL)
|
||||||
{
|
{
|
||||||
#if (USBD_DEBUG_LEVEL > 1U)
|
#if (USBD_DEBUG_LEVEL > 1U)
|
||||||
USBD_ErrLog("Invalid Device handle");
|
USBD_ErrLog("Invalid Device handle");
|
||||||
|
@ -96,25 +100,31 @@ USBD_StatusTypeDef USBD_Init(USBD_HandleTypeDef *pdev, USBD_DescriptorsTypeDef *
|
||||||
return USBD_FAIL;
|
return USBD_FAIL;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Unlink previous class*/
|
/* Unlink previous class */
|
||||||
if(pdev->pClass != NULL)
|
if (pdev->pClass != NULL)
|
||||||
{
|
{
|
||||||
pdev->pClass = NULL;
|
pdev->pClass = NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (pdev->pConfDesc != NULL)
|
||||||
|
{
|
||||||
|
pdev->pConfDesc = NULL;
|
||||||
|
}
|
||||||
|
|
||||||
/* Assign USBD Descriptors */
|
/* Assign USBD Descriptors */
|
||||||
if(pdesc != NULL)
|
if (pdesc != NULL)
|
||||||
{
|
{
|
||||||
pdev->pDesc = pdesc;
|
pdev->pDesc = pdesc;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Set Device initial State */
|
/* Set Device initial State */
|
||||||
pdev->dev_state = USBD_STATE_DEFAULT;
|
pdev->dev_state = USBD_STATE_DEFAULT;
|
||||||
pdev->id = id;
|
pdev->id = id;
|
||||||
/* Initialize low level driver */
|
|
||||||
USBD_LL_Init(pdev);
|
|
||||||
|
|
||||||
return USBD_OK;
|
/* Initialize low level driver */
|
||||||
|
ret = USBD_LL_Init(pdev);
|
||||||
|
|
||||||
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -125,19 +135,34 @@ USBD_StatusTypeDef USBD_Init(USBD_HandleTypeDef *pdev, USBD_DescriptorsTypeDef *
|
||||||
*/
|
*/
|
||||||
USBD_StatusTypeDef USBD_DeInit(USBD_HandleTypeDef *pdev)
|
USBD_StatusTypeDef USBD_DeInit(USBD_HandleTypeDef *pdev)
|
||||||
{
|
{
|
||||||
|
USBD_StatusTypeDef ret;
|
||||||
|
|
||||||
/* Set Default State */
|
/* Set Default State */
|
||||||
pdev->dev_state = USBD_STATE_DEFAULT;
|
pdev->dev_state = USBD_STATE_DEFAULT;
|
||||||
|
|
||||||
/* Free Class Resources */
|
/* Free Class Resources */
|
||||||
pdev->pClass->DeInit(pdev, (uint8_t)pdev->dev_config);
|
if (pdev->pClass != NULL)
|
||||||
|
{
|
||||||
|
pdev->pClass->DeInit(pdev, (uint8_t)pdev->dev_config);
|
||||||
|
}
|
||||||
|
|
||||||
/* Stop the low level driver */
|
if (pdev->pConfDesc != NULL)
|
||||||
USBD_LL_Stop(pdev);
|
{
|
||||||
|
pdev->pConfDesc = NULL;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Stop the low level driver */
|
||||||
|
ret = USBD_LL_Stop(pdev);
|
||||||
|
|
||||||
|
if (ret != USBD_OK)
|
||||||
|
{
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
|
||||||
/* Initialize low level driver */
|
/* Initialize low level driver */
|
||||||
USBD_LL_DeInit(pdev);
|
ret = USBD_LL_DeInit(pdev);
|
||||||
|
|
||||||
return USBD_OK;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -147,24 +172,30 @@ USBD_StatusTypeDef USBD_DeInit(USBD_HandleTypeDef *pdev)
|
||||||
* @param pclass: Class handle
|
* @param pclass: Class handle
|
||||||
* @retval USBD Status
|
* @retval USBD Status
|
||||||
*/
|
*/
|
||||||
USBD_StatusTypeDef USBD_RegisterClass(USBD_HandleTypeDef *pdev, USBD_ClassTypeDef *pclass)
|
USBD_StatusTypeDef USBD_RegisterClass(USBD_HandleTypeDef *pdev, USBD_ClassTypeDef *pclass)
|
||||||
{
|
{
|
||||||
USBD_StatusTypeDef status = USBD_OK;
|
uint16_t len = 0U;
|
||||||
if(pclass != 0)
|
|
||||||
{
|
if (pclass == NULL)
|
||||||
/* link the class to the USB Device handle */
|
|
||||||
pdev->pClass = pclass;
|
|
||||||
status = USBD_OK;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
{
|
||||||
#if (USBD_DEBUG_LEVEL > 1U)
|
#if (USBD_DEBUG_LEVEL > 1U)
|
||||||
USBD_ErrLog("Invalid Class handle");
|
USBD_ErrLog("Invalid Class handle");
|
||||||
#endif
|
#endif
|
||||||
status = USBD_FAIL;
|
return USBD_FAIL;
|
||||||
}
|
}
|
||||||
|
|
||||||
return status;
|
/* link the class to the USB Device handle */
|
||||||
|
pdev->pClass = pclass;
|
||||||
|
|
||||||
|
/* Get Device Configuration Descriptor */
|
||||||
|
#ifdef USE_USB_FS
|
||||||
|
pdev->pConfDesc = (void *)pdev->pClass->GetFSConfigDescriptor(&len);
|
||||||
|
#else /* USE_USB_HS */
|
||||||
|
pdev->pConfDesc = (void *)pdev->pClass->GetHSConfigDescriptor(&len);
|
||||||
|
#endif /* USE_USB_FS */
|
||||||
|
|
||||||
|
|
||||||
|
return USBD_OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -173,13 +204,10 @@ USBD_StatusTypeDef USBD_RegisterClass(USBD_HandleTypeDef *pdev, USBD_ClassTypeD
|
||||||
* @param pdev: Device Handle
|
* @param pdev: Device Handle
|
||||||
* @retval USBD Status
|
* @retval USBD Status
|
||||||
*/
|
*/
|
||||||
USBD_StatusTypeDef USBD_Start (USBD_HandleTypeDef *pdev)
|
USBD_StatusTypeDef USBD_Start(USBD_HandleTypeDef *pdev)
|
||||||
{
|
{
|
||||||
|
|
||||||
/* Start the low level driver */
|
/* Start the low level driver */
|
||||||
USBD_LL_Start(pdev);
|
return USBD_LL_Start(pdev);
|
||||||
|
|
||||||
return USBD_OK;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -188,15 +216,25 @@ USBD_StatusTypeDef USBD_Start (USBD_HandleTypeDef *pdev)
|
||||||
* @param pdev: Device Handle
|
* @param pdev: Device Handle
|
||||||
* @retval USBD Status
|
* @retval USBD Status
|
||||||
*/
|
*/
|
||||||
USBD_StatusTypeDef USBD_Stop (USBD_HandleTypeDef *pdev)
|
USBD_StatusTypeDef USBD_Stop(USBD_HandleTypeDef *pdev)
|
||||||
{
|
{
|
||||||
|
USBD_StatusTypeDef ret;
|
||||||
|
|
||||||
/* Free Class Resources */
|
/* Free Class Resources */
|
||||||
pdev->pClass->DeInit(pdev, (uint8_t)pdev->dev_config);
|
if (pdev->pClass != NULL)
|
||||||
|
{
|
||||||
|
pdev->pClass->DeInit(pdev, (uint8_t)pdev->dev_config);
|
||||||
|
}
|
||||||
|
|
||||||
/* Stop the low level driver */
|
if (pdev->pConfDesc != NULL)
|
||||||
USBD_LL_Stop(pdev);
|
{
|
||||||
|
pdev->pConfDesc = NULL;
|
||||||
|
}
|
||||||
|
|
||||||
return USBD_OK;
|
/* Stop the low level driver */
|
||||||
|
ret = USBD_LL_Stop(pdev);
|
||||||
|
|
||||||
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -205,7 +243,7 @@ USBD_StatusTypeDef USBD_Stop (USBD_HandleTypeDef *pdev)
|
||||||
* @param pdev: device instance
|
* @param pdev: device instance
|
||||||
* @retval status
|
* @retval status
|
||||||
*/
|
*/
|
||||||
USBD_StatusTypeDef USBD_RunTestMode (USBD_HandleTypeDef *pdev)
|
USBD_StatusTypeDef USBD_RunTestMode(USBD_HandleTypeDef *pdev)
|
||||||
{
|
{
|
||||||
/* Prevent unused argument compilation warning */
|
/* Prevent unused argument compilation warning */
|
||||||
UNUSED(pdev);
|
UNUSED(pdev);
|
||||||
|
@ -221,17 +259,14 @@ USBD_StatusTypeDef USBD_RunTestMode (USBD_HandleTypeDef *pdev)
|
||||||
* @retval status
|
* @retval status
|
||||||
*/
|
*/
|
||||||
|
|
||||||
USBD_StatusTypeDef USBD_SetClassConfig(USBD_HandleTypeDef *pdev, uint8_t cfgidx)
|
USBD_StatusTypeDef USBD_SetClassConfig(USBD_HandleTypeDef *pdev, uint8_t cfgidx)
|
||||||
{
|
{
|
||||||
USBD_StatusTypeDef ret = USBD_FAIL;
|
USBD_StatusTypeDef ret = USBD_FAIL;
|
||||||
|
|
||||||
if(pdev->pClass != NULL)
|
if (pdev->pClass != NULL)
|
||||||
{
|
{
|
||||||
/* Set configuration and Start the Class*/
|
/* Set configuration and Start the Class */
|
||||||
if(pdev->pClass->Init(pdev, cfgidx) == 0U)
|
ret = (USBD_StatusTypeDef)pdev->pClass->Init(pdev, cfgidx);
|
||||||
{
|
|
||||||
ret = USBD_OK;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return ret;
|
return ret;
|
||||||
|
@ -244,10 +279,14 @@ USBD_StatusTypeDef USBD_SetClassConfig(USBD_HandleTypeDef *pdev, uint8_t cfgidx
|
||||||
* @param cfgidx: configuration index
|
* @param cfgidx: configuration index
|
||||||
* @retval status: USBD_StatusTypeDef
|
* @retval status: USBD_StatusTypeDef
|
||||||
*/
|
*/
|
||||||
USBD_StatusTypeDef USBD_ClrClassConfig(USBD_HandleTypeDef *pdev, uint8_t cfgidx)
|
USBD_StatusTypeDef USBD_ClrClassConfig(USBD_HandleTypeDef *pdev, uint8_t cfgidx)
|
||||||
{
|
{
|
||||||
/* Clear configuration and De-initialize the Class process*/
|
/* Clear configuration and De-initialize the Class process */
|
||||||
pdev->pClass->DeInit(pdev, cfgidx);
|
if (pdev->pClass != NULL)
|
||||||
|
{
|
||||||
|
pdev->pClass->DeInit(pdev, cfgidx);
|
||||||
|
}
|
||||||
|
|
||||||
return USBD_OK;
|
return USBD_OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -260,6 +299,8 @@ USBD_StatusTypeDef USBD_ClrClassConfig(USBD_HandleTypeDef *pdev, uint8_t cfgidx
|
||||||
*/
|
*/
|
||||||
USBD_StatusTypeDef USBD_LL_SetupStage(USBD_HandleTypeDef *pdev, uint8_t *psetup)
|
USBD_StatusTypeDef USBD_LL_SetupStage(USBD_HandleTypeDef *pdev, uint8_t *psetup)
|
||||||
{
|
{
|
||||||
|
USBD_StatusTypeDef ret;
|
||||||
|
|
||||||
USBD_ParseSetupRequest(&pdev->request, psetup);
|
USBD_ParseSetupRequest(&pdev->request, psetup);
|
||||||
|
|
||||||
pdev->ep0_state = USBD_EP0_SETUP;
|
pdev->ep0_state = USBD_EP0_SETUP;
|
||||||
|
@ -268,24 +309,24 @@ USBD_StatusTypeDef USBD_LL_SetupStage(USBD_HandleTypeDef *pdev, uint8_t *psetup)
|
||||||
|
|
||||||
switch (pdev->request.bmRequest & 0x1FU)
|
switch (pdev->request.bmRequest & 0x1FU)
|
||||||
{
|
{
|
||||||
case USB_REQ_RECIPIENT_DEVICE:
|
case USB_REQ_RECIPIENT_DEVICE:
|
||||||
USBD_StdDevReq (pdev, &pdev->request);
|
ret = USBD_StdDevReq(pdev, &pdev->request);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case USB_REQ_RECIPIENT_INTERFACE:
|
case USB_REQ_RECIPIENT_INTERFACE:
|
||||||
USBD_StdItfReq(pdev, &pdev->request);
|
ret = USBD_StdItfReq(pdev, &pdev->request);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case USB_REQ_RECIPIENT_ENDPOINT:
|
case USB_REQ_RECIPIENT_ENDPOINT:
|
||||||
USBD_StdEPReq(pdev, &pdev->request);
|
ret = USBD_StdEPReq(pdev, &pdev->request);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
default:
|
default:
|
||||||
USBD_LL_StallEP(pdev, (pdev->request.bmRequest & 0x80U));
|
ret = USBD_LL_StallEP(pdev, (pdev->request.bmRequest & 0x80U));
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
return USBD_OK;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -298,48 +339,54 @@ USBD_StatusTypeDef USBD_LL_SetupStage(USBD_HandleTypeDef *pdev, uint8_t *psetup)
|
||||||
USBD_StatusTypeDef USBD_LL_DataOutStage(USBD_HandleTypeDef *pdev,
|
USBD_StatusTypeDef USBD_LL_DataOutStage(USBD_HandleTypeDef *pdev,
|
||||||
uint8_t epnum, uint8_t *pdata)
|
uint8_t epnum, uint8_t *pdata)
|
||||||
{
|
{
|
||||||
USBD_EndpointTypeDef *pep;
|
USBD_EndpointTypeDef *pep;
|
||||||
|
USBD_StatusTypeDef ret;
|
||||||
|
|
||||||
if(epnum == 0U)
|
if (epnum == 0U)
|
||||||
{
|
{
|
||||||
pep = &pdev->ep_out[0];
|
pep = &pdev->ep_out[0];
|
||||||
|
|
||||||
if ( pdev->ep0_state == USBD_EP0_DATA_OUT)
|
if (pdev->ep0_state == USBD_EP0_DATA_OUT)
|
||||||
{
|
{
|
||||||
if(pep->rem_length > pep->maxpacket)
|
if (pep->rem_length > pep->maxpacket)
|
||||||
{
|
{
|
||||||
pep->rem_length -= pep->maxpacket;
|
pep->rem_length -= pep->maxpacket;
|
||||||
|
|
||||||
USBD_CtlContinueRx (pdev,
|
(void)USBD_CtlContinueRx(pdev, pdata, MIN(pep->rem_length, pep->maxpacket));
|
||||||
pdata,
|
|
||||||
(uint16_t)MIN(pep->rem_length, pep->maxpacket));
|
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
if((pdev->pClass->EP0_RxReady != NULL)&&
|
if ((pdev->pClass->EP0_RxReady != NULL) &&
|
||||||
(pdev->dev_state == USBD_STATE_CONFIGURED))
|
(pdev->dev_state == USBD_STATE_CONFIGURED))
|
||||||
{
|
{
|
||||||
pdev->pClass->EP0_RxReady(pdev);
|
pdev->pClass->EP0_RxReady(pdev);
|
||||||
}
|
}
|
||||||
USBD_CtlSendStatus(pdev);
|
(void)USBD_CtlSendStatus(pdev);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
#if 0
|
||||||
if (pdev->ep0_state == USBD_EP0_STATUS_OUT)
|
if (pdev->ep0_state == USBD_EP0_STATUS_OUT)
|
||||||
{
|
{
|
||||||
/*
|
/*
|
||||||
* STATUS PHASE completed, update ep0_state to idle
|
* STATUS PHASE completed, update ep0_state to idle
|
||||||
*/
|
*/
|
||||||
pdev->ep0_state = USBD_EP0_IDLE;
|
pdev->ep0_state = USBD_EP0_IDLE;
|
||||||
USBD_LL_StallEP(pdev, 0U);
|
(void)USBD_LL_StallEP(pdev, 0U);
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else if((pdev->pClass->DataOut != NULL) &&
|
else if ((pdev->pClass->DataOut != NULL) &&
|
||||||
(pdev->dev_state == USBD_STATE_CONFIGURED))
|
(pdev->dev_state == USBD_STATE_CONFIGURED))
|
||||||
{
|
{
|
||||||
pdev->pClass->DataOut(pdev, epnum);
|
ret = (USBD_StatusTypeDef)pdev->pClass->DataOut(pdev, epnum);
|
||||||
|
|
||||||
|
if (ret != USBD_OK)
|
||||||
|
{
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
@ -357,69 +404,78 @@ USBD_StatusTypeDef USBD_LL_DataOutStage(USBD_HandleTypeDef *pdev,
|
||||||
* @param epnum: endpoint index
|
* @param epnum: endpoint index
|
||||||
* @retval status
|
* @retval status
|
||||||
*/
|
*/
|
||||||
USBD_StatusTypeDef USBD_LL_DataInStage(USBD_HandleTypeDef *pdev, uint8_t epnum,
|
USBD_StatusTypeDef USBD_LL_DataInStage(USBD_HandleTypeDef *pdev,
|
||||||
uint8_t *pdata)
|
uint8_t epnum, uint8_t *pdata)
|
||||||
{
|
{
|
||||||
USBD_EndpointTypeDef *pep;
|
USBD_EndpointTypeDef *pep;
|
||||||
|
USBD_StatusTypeDef ret;
|
||||||
|
|
||||||
if(epnum == 0U)
|
if (epnum == 0U)
|
||||||
{
|
{
|
||||||
pep = &pdev->ep_in[0];
|
pep = &pdev->ep_in[0];
|
||||||
|
|
||||||
if ( pdev->ep0_state == USBD_EP0_DATA_IN)
|
if (pdev->ep0_state == USBD_EP0_DATA_IN)
|
||||||
{
|
{
|
||||||
if(pep->rem_length > pep->maxpacket)
|
if (pep->rem_length > pep->maxpacket)
|
||||||
{
|
{
|
||||||
pep->rem_length -= pep->maxpacket;
|
pep->rem_length -= pep->maxpacket;
|
||||||
|
|
||||||
USBD_CtlContinueSendData (pdev, pdata, (uint16_t)pep->rem_length);
|
(void)USBD_CtlContinueSendData(pdev, pdata, pep->rem_length);
|
||||||
|
|
||||||
/* Prepare endpoint for premature end of transfer */
|
/* Prepare endpoint for premature end of transfer */
|
||||||
USBD_LL_PrepareReceive (pdev, 0U, NULL, 0U);
|
(void)USBD_LL_PrepareReceive(pdev, 0U, NULL, 0U);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{ /* last packet is MPS multiple, so send ZLP packet */
|
{
|
||||||
if((pep->total_length % pep->maxpacket == 0U) &&
|
/* last packet is MPS multiple, so send ZLP packet */
|
||||||
(pep->total_length >= pep->maxpacket) &&
|
if ((pep->maxpacket == pep->rem_length) &&
|
||||||
(pep->total_length < pdev->ep0_data_len))
|
(pep->total_length >= pep->maxpacket) &&
|
||||||
|
(pep->total_length < pdev->ep0_data_len))
|
||||||
{
|
{
|
||||||
USBD_CtlContinueSendData(pdev, NULL, 0U);
|
(void)USBD_CtlContinueSendData(pdev, NULL, 0U);
|
||||||
pdev->ep0_data_len = 0U;
|
pdev->ep0_data_len = 0U;
|
||||||
|
|
||||||
/* Prepare endpoint for premature end of transfer */
|
/* Prepare endpoint for premature end of transfer */
|
||||||
USBD_LL_PrepareReceive (pdev, 0U, NULL, 0U);
|
(void)USBD_LL_PrepareReceive(pdev, 0U, NULL, 0U);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
if((pdev->pClass->EP0_TxSent != NULL)&&
|
if ((pdev->pClass->EP0_TxSent != NULL) &&
|
||||||
(pdev->dev_state == USBD_STATE_CONFIGURED))
|
(pdev->dev_state == USBD_STATE_CONFIGURED))
|
||||||
{
|
{
|
||||||
pdev->pClass->EP0_TxSent(pdev);
|
pdev->pClass->EP0_TxSent(pdev);
|
||||||
}
|
}
|
||||||
USBD_LL_StallEP(pdev, 0x80U);
|
(void)USBD_LL_StallEP(pdev, 0x80U);
|
||||||
USBD_CtlReceiveStatus(pdev);
|
(void)USBD_CtlReceiveStatus(pdev);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
#if 0
|
||||||
if ((pdev->ep0_state == USBD_EP0_STATUS_IN) ||
|
if ((pdev->ep0_state == USBD_EP0_STATUS_IN) ||
|
||||||
(pdev->ep0_state == USBD_EP0_IDLE))
|
(pdev->ep0_state == USBD_EP0_IDLE))
|
||||||
{
|
{
|
||||||
USBD_LL_StallEP(pdev, 0x80U);
|
(void)USBD_LL_StallEP(pdev, 0x80U);
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
if (pdev->dev_test_mode == 1U)
|
if (pdev->dev_test_mode == 1U)
|
||||||
{
|
{
|
||||||
USBD_RunTestMode(pdev);
|
(void)USBD_RunTestMode(pdev);
|
||||||
pdev->dev_test_mode = 0U;
|
pdev->dev_test_mode = 0U;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else if((pdev->pClass->DataIn != NULL) &&
|
else if ((pdev->pClass->DataIn != NULL) &&
|
||||||
(pdev->dev_state == USBD_STATE_CONFIGURED))
|
(pdev->dev_state == USBD_STATE_CONFIGURED))
|
||||||
{
|
{
|
||||||
pdev->pClass->DataIn(pdev, epnum);
|
ret = (USBD_StatusTypeDef)pdev->pClass->DataIn(pdev, epnum);
|
||||||
|
|
||||||
|
if (ret != USBD_OK)
|
||||||
|
{
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
@ -437,29 +493,30 @@ USBD_StatusTypeDef USBD_LL_DataInStage(USBD_HandleTypeDef *pdev, uint8_t epnum,
|
||||||
* @retval status
|
* @retval status
|
||||||
*/
|
*/
|
||||||
|
|
||||||
USBD_StatusTypeDef USBD_LL_Reset(USBD_HandleTypeDef *pdev)
|
USBD_StatusTypeDef USBD_LL_Reset(USBD_HandleTypeDef *pdev)
|
||||||
{
|
{
|
||||||
/* Open EP0 OUT */
|
/* Upon Reset call user call back */
|
||||||
USBD_LL_OpenEP(pdev, 0x00U, USBD_EP_TYPE_CTRL, USB_MAX_EP0_SIZE);
|
pdev->dev_state = USBD_STATE_DEFAULT;
|
||||||
|
pdev->ep0_state = USBD_EP0_IDLE;
|
||||||
|
pdev->dev_config = 0U;
|
||||||
|
pdev->dev_remote_wakeup = 0U;
|
||||||
|
|
||||||
|
if (pdev->pClassData != NULL)
|
||||||
|
{
|
||||||
|
pdev->pClass->DeInit(pdev, (uint8_t)pdev->dev_config);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Open EP0 OUT */
|
||||||
|
(void)USBD_LL_OpenEP(pdev, 0x00U, USBD_EP_TYPE_CTRL, USB_MAX_EP0_SIZE);
|
||||||
pdev->ep_out[0x00U & 0xFU].is_used = 1U;
|
pdev->ep_out[0x00U & 0xFU].is_used = 1U;
|
||||||
|
|
||||||
pdev->ep_out[0].maxpacket = USB_MAX_EP0_SIZE;
|
pdev->ep_out[0].maxpacket = USB_MAX_EP0_SIZE;
|
||||||
|
|
||||||
/* Open EP0 IN */
|
/* Open EP0 IN */
|
||||||
USBD_LL_OpenEP(pdev, 0x80U, USBD_EP_TYPE_CTRL, USB_MAX_EP0_SIZE);
|
(void)USBD_LL_OpenEP(pdev, 0x80U, USBD_EP_TYPE_CTRL, USB_MAX_EP0_SIZE);
|
||||||
pdev->ep_in[0x80U & 0xFU].is_used = 1U;
|
pdev->ep_in[0x80U & 0xFU].is_used = 1U;
|
||||||
|
|
||||||
pdev->ep_in[0].maxpacket = USB_MAX_EP0_SIZE;
|
pdev->ep_in[0].maxpacket = USB_MAX_EP0_SIZE;
|
||||||
/* Upon Reset call user call back */
|
|
||||||
pdev->dev_state = USBD_STATE_DEFAULT;
|
|
||||||
pdev->ep0_state = USBD_EP0_IDLE;
|
|
||||||
pdev->dev_config= 0U;
|
|
||||||
pdev->dev_remote_wakeup = 0U;
|
|
||||||
|
|
||||||
if (pdev->pClassData)
|
|
||||||
{
|
|
||||||
pdev->pClass->DeInit(pdev, (uint8_t)pdev->dev_config);
|
|
||||||
}
|
|
||||||
|
|
||||||
return USBD_OK;
|
return USBD_OK;
|
||||||
}
|
}
|
||||||
|
@ -470,9 +527,11 @@ USBD_StatusTypeDef USBD_LL_Reset(USBD_HandleTypeDef *pdev)
|
||||||
* @param pdev: device instance
|
* @param pdev: device instance
|
||||||
* @retval status
|
* @retval status
|
||||||
*/
|
*/
|
||||||
USBD_StatusTypeDef USBD_LL_SetSpeed(USBD_HandleTypeDef *pdev, USBD_SpeedTypeDef speed)
|
USBD_StatusTypeDef USBD_LL_SetSpeed(USBD_HandleTypeDef *pdev,
|
||||||
|
USBD_SpeedTypeDef speed)
|
||||||
{
|
{
|
||||||
pdev->dev_speed = speed;
|
pdev->dev_speed = speed;
|
||||||
|
|
||||||
return USBD_OK;
|
return USBD_OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -483,10 +542,11 @@ USBD_StatusTypeDef USBD_LL_SetSpeed(USBD_HandleTypeDef *pdev, USBD_SpeedTypeDef
|
||||||
* @retval status
|
* @retval status
|
||||||
*/
|
*/
|
||||||
|
|
||||||
USBD_StatusTypeDef USBD_LL_Suspend(USBD_HandleTypeDef *pdev)
|
USBD_StatusTypeDef USBD_LL_Suspend(USBD_HandleTypeDef *pdev)
|
||||||
{
|
{
|
||||||
pdev->dev_old_state = pdev->dev_state;
|
pdev->dev_old_state = pdev->dev_state;
|
||||||
pdev->dev_state = USBD_STATE_SUSPENDED;
|
pdev->dev_state = USBD_STATE_SUSPENDED;
|
||||||
|
|
||||||
return USBD_OK;
|
return USBD_OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -497,9 +557,13 @@ USBD_StatusTypeDef USBD_LL_Suspend(USBD_HandleTypeDef *pdev)
|
||||||
* @retval status
|
* @retval status
|
||||||
*/
|
*/
|
||||||
|
|
||||||
USBD_StatusTypeDef USBD_LL_Resume(USBD_HandleTypeDef *pdev)
|
USBD_StatusTypeDef USBD_LL_Resume(USBD_HandleTypeDef *pdev)
|
||||||
{
|
{
|
||||||
pdev->dev_state = pdev->dev_old_state;
|
if (pdev->dev_state == USBD_STATE_SUSPENDED)
|
||||||
|
{
|
||||||
|
pdev->dev_state = pdev->dev_old_state;
|
||||||
|
}
|
||||||
|
|
||||||
return USBD_OK;
|
return USBD_OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -510,15 +574,16 @@ USBD_StatusTypeDef USBD_LL_Resume(USBD_HandleTypeDef *pdev)
|
||||||
* @retval status
|
* @retval status
|
||||||
*/
|
*/
|
||||||
|
|
||||||
USBD_StatusTypeDef USBD_LL_SOF(USBD_HandleTypeDef *pdev)
|
USBD_StatusTypeDef USBD_LL_SOF(USBD_HandleTypeDef *pdev)
|
||||||
{
|
{
|
||||||
if(pdev->dev_state == USBD_STATE_CONFIGURED)
|
if (pdev->dev_state == USBD_STATE_CONFIGURED)
|
||||||
{
|
{
|
||||||
if(pdev->pClass->SOF != NULL)
|
if (pdev->pClass->SOF != NULL)
|
||||||
{
|
{
|
||||||
pdev->pClass->SOF(pdev);
|
pdev->pClass->SOF(pdev);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return USBD_OK;
|
return USBD_OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -528,7 +593,8 @@ USBD_StatusTypeDef USBD_LL_SOF(USBD_HandleTypeDef *pdev)
|
||||||
* @param pdev: device instance
|
* @param pdev: device instance
|
||||||
* @retval status
|
* @retval status
|
||||||
*/
|
*/
|
||||||
USBD_StatusTypeDef USBD_LL_IsoINIncomplete(USBD_HandleTypeDef *pdev, uint8_t epnum)
|
USBD_StatusTypeDef USBD_LL_IsoINIncomplete(USBD_HandleTypeDef *pdev,
|
||||||
|
uint8_t epnum)
|
||||||
{
|
{
|
||||||
/* Prevent unused arguments compilation warning */
|
/* Prevent unused arguments compilation warning */
|
||||||
UNUSED(pdev);
|
UNUSED(pdev);
|
||||||
|
@ -543,7 +609,8 @@ USBD_StatusTypeDef USBD_LL_IsoINIncomplete(USBD_HandleTypeDef *pdev, uint8_t ep
|
||||||
* @param pdev: device instance
|
* @param pdev: device instance
|
||||||
* @retval status
|
* @retval status
|
||||||
*/
|
*/
|
||||||
USBD_StatusTypeDef USBD_LL_IsoOUTIncomplete(USBD_HandleTypeDef *pdev, uint8_t epnum)
|
USBD_StatusTypeDef USBD_LL_IsoOUTIncomplete(USBD_HandleTypeDef *pdev,
|
||||||
|
uint8_t epnum)
|
||||||
{
|
{
|
||||||
/* Prevent unused arguments compilation warning */
|
/* Prevent unused arguments compilation warning */
|
||||||
UNUSED(pdev);
|
UNUSED(pdev);
|
||||||
|
@ -558,7 +625,7 @@ USBD_StatusTypeDef USBD_LL_IsoOUTIncomplete(USBD_HandleTypeDef *pdev, uint8_t e
|
||||||
* @param pdev: device instance
|
* @param pdev: device instance
|
||||||
* @retval status
|
* @retval status
|
||||||
*/
|
*/
|
||||||
USBD_StatusTypeDef USBD_LL_DevConnected(USBD_HandleTypeDef *pdev)
|
USBD_StatusTypeDef USBD_LL_DevConnected(USBD_HandleTypeDef *pdev)
|
||||||
{
|
{
|
||||||
/* Prevent unused argument compilation warning */
|
/* Prevent unused argument compilation warning */
|
||||||
UNUSED(pdev);
|
UNUSED(pdev);
|
||||||
|
@ -572,11 +639,15 @@ USBD_StatusTypeDef USBD_LL_DevConnected(USBD_HandleTypeDef *pdev)
|
||||||
* @param pdev: device instance
|
* @param pdev: device instance
|
||||||
* @retval status
|
* @retval status
|
||||||
*/
|
*/
|
||||||
USBD_StatusTypeDef USBD_LL_DevDisconnected(USBD_HandleTypeDef *pdev)
|
USBD_StatusTypeDef USBD_LL_DevDisconnected(USBD_HandleTypeDef *pdev)
|
||||||
{
|
{
|
||||||
/* Free Class Resources */
|
/* Free Class Resources */
|
||||||
pdev->dev_state = USBD_STATE_DEFAULT;
|
pdev->dev_state = USBD_STATE_DEFAULT;
|
||||||
pdev->pClass->DeInit(pdev, (uint8_t)pdev->dev_config);
|
|
||||||
|
if (pdev->pClass != NULL)
|
||||||
|
{
|
||||||
|
pdev->pClass->DeInit(pdev, (uint8_t)pdev->dev_config);
|
||||||
|
}
|
||||||
|
|
||||||
return USBD_OK;
|
return USBD_OK;
|
||||||
}
|
}
|
||||||
|
|
|
@ -12,7 +12,7 @@
|
||||||
* This software component is licensed by ST under Ultimate Liberty license
|
* This software component is licensed by ST under Ultimate Liberty license
|
||||||
* SLA0044, the "License"; You may not use this file except in compliance with
|
* SLA0044, the "License"; You may not use this file except in compliance with
|
||||||
* the License. You may obtain a copy of the License at:
|
* the License. You may obtain a copy of the License at:
|
||||||
* http://www.st.com/SLA0044
|
* www.st.com/SLA0044
|
||||||
*
|
*
|
||||||
******************************************************************************
|
******************************************************************************
|
||||||
*/
|
*/
|
||||||
|
@ -35,6 +35,7 @@
|
||||||
/** @defgroup USBD_REQ_Private_TypesDefinitions
|
/** @defgroup USBD_REQ_Private_TypesDefinitions
|
||||||
* @{
|
* @{
|
||||||
*/
|
*/
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @}
|
* @}
|
||||||
*/
|
*/
|
||||||
|
@ -52,6 +53,7 @@
|
||||||
/** @defgroup USBD_REQ_Private_Macros
|
/** @defgroup USBD_REQ_Private_Macros
|
||||||
* @{
|
* @{
|
||||||
*/
|
*/
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @}
|
* @}
|
||||||
*/
|
*/
|
||||||
|
@ -60,6 +62,7 @@
|
||||||
/** @defgroup USBD_REQ_Private_Variables
|
/** @defgroup USBD_REQ_Private_Variables
|
||||||
* @{
|
* @{
|
||||||
*/
|
*/
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @}
|
* @}
|
||||||
*/
|
*/
|
||||||
|
@ -68,27 +71,13 @@
|
||||||
/** @defgroup USBD_REQ_Private_FunctionPrototypes
|
/** @defgroup USBD_REQ_Private_FunctionPrototypes
|
||||||
* @{
|
* @{
|
||||||
*/
|
*/
|
||||||
static void USBD_GetDescriptor(USBD_HandleTypeDef *pdev ,
|
static void USBD_GetDescriptor(USBD_HandleTypeDef *pdev, USBD_SetupReqTypedef *req);
|
||||||
USBD_SetupReqTypedef *req);
|
static void USBD_SetAddress(USBD_HandleTypeDef *pdev, USBD_SetupReqTypedef *req);
|
||||||
|
static USBD_StatusTypeDef USBD_SetConfig(USBD_HandleTypeDef *pdev, USBD_SetupReqTypedef *req);
|
||||||
static void USBD_SetAddress(USBD_HandleTypeDef *pdev ,
|
static void USBD_GetConfig(USBD_HandleTypeDef *pdev, USBD_SetupReqTypedef *req);
|
||||||
USBD_SetupReqTypedef *req);
|
static void USBD_GetStatus(USBD_HandleTypeDef *pdev, USBD_SetupReqTypedef *req);
|
||||||
|
static void USBD_SetFeature(USBD_HandleTypeDef *pdev, USBD_SetupReqTypedef *req);
|
||||||
static void USBD_SetConfig(USBD_HandleTypeDef *pdev ,
|
static void USBD_ClrFeature(USBD_HandleTypeDef *pdev, USBD_SetupReqTypedef *req);
|
||||||
USBD_SetupReqTypedef *req);
|
|
||||||
|
|
||||||
static void USBD_GetConfig(USBD_HandleTypeDef *pdev ,
|
|
||||||
USBD_SetupReqTypedef *req);
|
|
||||||
|
|
||||||
static void USBD_GetStatus(USBD_HandleTypeDef *pdev ,
|
|
||||||
USBD_SetupReqTypedef *req);
|
|
||||||
|
|
||||||
static void USBD_SetFeature(USBD_HandleTypeDef *pdev ,
|
|
||||||
USBD_SetupReqTypedef *req);
|
|
||||||
|
|
||||||
static void USBD_ClrFeature(USBD_HandleTypeDef *pdev ,
|
|
||||||
USBD_SetupReqTypedef *req);
|
|
||||||
|
|
||||||
static uint8_t USBD_GetLen(uint8_t *buf);
|
static uint8_t USBD_GetLen(uint8_t *buf);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -108,7 +97,7 @@ static uint8_t USBD_GetLen(uint8_t *buf);
|
||||||
* @param req: usb request
|
* @param req: usb request
|
||||||
* @retval status
|
* @retval status
|
||||||
*/
|
*/
|
||||||
USBD_StatusTypeDef USBD_StdDevReq (USBD_HandleTypeDef *pdev , USBD_SetupReqTypedef *req)
|
USBD_StatusTypeDef USBD_StdDevReq(USBD_HandleTypeDef *pdev, USBD_SetupReqTypedef *req)
|
||||||
{
|
{
|
||||||
USBD_StatusTypeDef ret = USBD_OK;
|
USBD_StatusTypeDef ret = USBD_OK;
|
||||||
|
|
||||||
|
@ -116,41 +105,38 @@ USBD_StatusTypeDef USBD_StdDevReq (USBD_HandleTypeDef *pdev , USBD_SetupReqType
|
||||||
{
|
{
|
||||||
case USB_REQ_TYPE_CLASS:
|
case USB_REQ_TYPE_CLASS:
|
||||||
case USB_REQ_TYPE_VENDOR:
|
case USB_REQ_TYPE_VENDOR:
|
||||||
pdev->pClass->Setup(pdev, req);
|
ret = (USBD_StatusTypeDef)pdev->pClass->Setup(pdev, req);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case USB_REQ_TYPE_STANDARD:
|
case USB_REQ_TYPE_STANDARD:
|
||||||
|
|
||||||
switch (req->bRequest)
|
switch (req->bRequest)
|
||||||
{
|
{
|
||||||
case USB_REQ_GET_DESCRIPTOR:
|
case USB_REQ_GET_DESCRIPTOR:
|
||||||
|
USBD_GetDescriptor(pdev, req);
|
||||||
USBD_GetDescriptor (pdev, req);
|
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case USB_REQ_SET_ADDRESS:
|
case USB_REQ_SET_ADDRESS:
|
||||||
USBD_SetAddress (pdev, req);
|
USBD_SetAddress(pdev, req);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case USB_REQ_SET_CONFIGURATION:
|
case USB_REQ_SET_CONFIGURATION:
|
||||||
USBD_SetConfig (pdev, req);
|
ret = USBD_SetConfig(pdev, req);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case USB_REQ_GET_CONFIGURATION:
|
case USB_REQ_GET_CONFIGURATION:
|
||||||
USBD_GetConfig (pdev, req);
|
USBD_GetConfig(pdev, req);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case USB_REQ_GET_STATUS:
|
case USB_REQ_GET_STATUS:
|
||||||
USBD_GetStatus (pdev, req);
|
USBD_GetStatus(pdev, req);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
|
||||||
case USB_REQ_SET_FEATURE:
|
case USB_REQ_SET_FEATURE:
|
||||||
USBD_SetFeature (pdev, req);
|
USBD_SetFeature(pdev, req);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case USB_REQ_CLEAR_FEATURE:
|
case USB_REQ_CLEAR_FEATURE:
|
||||||
USBD_ClrFeature (pdev, req);
|
USBD_ClrFeature(pdev, req);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
default:
|
default:
|
||||||
|
@ -174,7 +160,7 @@ USBD_StatusTypeDef USBD_StdDevReq (USBD_HandleTypeDef *pdev , USBD_SetupReqType
|
||||||
* @param req: usb request
|
* @param req: usb request
|
||||||
* @retval status
|
* @retval status
|
||||||
*/
|
*/
|
||||||
USBD_StatusTypeDef USBD_StdItfReq (USBD_HandleTypeDef *pdev , USBD_SetupReqTypedef *req)
|
USBD_StatusTypeDef USBD_StdItfReq(USBD_HandleTypeDef *pdev, USBD_SetupReqTypedef *req)
|
||||||
{
|
{
|
||||||
USBD_StatusTypeDef ret = USBD_OK;
|
USBD_StatusTypeDef ret = USBD_OK;
|
||||||
|
|
||||||
|
@ -191,11 +177,11 @@ USBD_StatusTypeDef USBD_StdItfReq (USBD_HandleTypeDef *pdev , USBD_SetupReqType
|
||||||
|
|
||||||
if (LOBYTE(req->wIndex) <= USBD_MAX_NUM_INTERFACES)
|
if (LOBYTE(req->wIndex) <= USBD_MAX_NUM_INTERFACES)
|
||||||
{
|
{
|
||||||
ret = (USBD_StatusTypeDef)pdev->pClass->Setup (pdev, req);
|
ret = (USBD_StatusTypeDef)pdev->pClass->Setup(pdev, req);
|
||||||
|
|
||||||
if ((req->wLength == 0U) && (ret == USBD_OK))
|
if ((req->wLength == 0U) && (ret == USBD_OK))
|
||||||
{
|
{
|
||||||
USBD_CtlSendStatus(pdev);
|
(void)USBD_CtlSendStatus(pdev);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
@ -215,7 +201,7 @@ USBD_StatusTypeDef USBD_StdItfReq (USBD_HandleTypeDef *pdev , USBD_SetupReqType
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
return USBD_OK;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -225,43 +211,31 @@ USBD_StatusTypeDef USBD_StdItfReq (USBD_HandleTypeDef *pdev , USBD_SetupReqType
|
||||||
* @param req: usb request
|
* @param req: usb request
|
||||||
* @retval status
|
* @retval status
|
||||||
*/
|
*/
|
||||||
USBD_StatusTypeDef USBD_StdEPReq (USBD_HandleTypeDef *pdev , USBD_SetupReqTypedef *req)
|
USBD_StatusTypeDef USBD_StdEPReq(USBD_HandleTypeDef *pdev, USBD_SetupReqTypedef *req)
|
||||||
{
|
{
|
||||||
|
USBD_EndpointTypeDef *pep;
|
||||||
uint8_t ep_addr;
|
uint8_t ep_addr;
|
||||||
USBD_StatusTypeDef ret = USBD_OK;
|
USBD_StatusTypeDef ret = USBD_OK;
|
||||||
USBD_EndpointTypeDef *pep;
|
ep_addr = LOBYTE(req->wIndex);
|
||||||
ep_addr = LOBYTE(req->wIndex);
|
|
||||||
|
|
||||||
switch (req->bmRequest & USB_REQ_TYPE_MASK)
|
switch (req->bmRequest & USB_REQ_TYPE_MASK)
|
||||||
{
|
{
|
||||||
|
|
||||||
case USB_REQ_TYPE_CLASS:
|
case USB_REQ_TYPE_CLASS:
|
||||||
case USB_REQ_TYPE_VENDOR:
|
case USB_REQ_TYPE_VENDOR:
|
||||||
pdev->pClass->Setup (pdev, req);
|
ret = (USBD_StatusTypeDef)pdev->pClass->Setup(pdev, req);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case USB_REQ_TYPE_STANDARD:
|
case USB_REQ_TYPE_STANDARD:
|
||||||
/* Check if it is a class request */
|
|
||||||
if ((req->bmRequest & 0x60U) == 0x20U)
|
|
||||||
{
|
|
||||||
ret = (USBD_StatusTypeDef)pdev->pClass->Setup (pdev, req);
|
|
||||||
|
|
||||||
return ret;
|
|
||||||
}
|
|
||||||
|
|
||||||
switch (req->bRequest)
|
switch (req->bRequest)
|
||||||
{
|
{
|
||||||
|
case USB_REQ_SET_FEATURE:
|
||||||
case USB_REQ_SET_FEATURE :
|
|
||||||
|
|
||||||
switch (pdev->dev_state)
|
switch (pdev->dev_state)
|
||||||
{
|
{
|
||||||
case USBD_STATE_ADDRESSED:
|
case USBD_STATE_ADDRESSED:
|
||||||
if ((ep_addr != 0x00U) && (ep_addr != 0x80U))
|
if ((ep_addr != 0x00U) && (ep_addr != 0x80U))
|
||||||
{
|
{
|
||||||
USBD_LL_StallEP(pdev, ep_addr);
|
(void)USBD_LL_StallEP(pdev, ep_addr);
|
||||||
USBD_LL_StallEP(pdev, 0x80U);
|
(void)USBD_LL_StallEP(pdev, 0x80U);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
@ -274,10 +248,10 @@ USBD_StatusTypeDef USBD_StdEPReq (USBD_HandleTypeDef *pdev , USBD_SetupReqTyped
|
||||||
{
|
{
|
||||||
if ((ep_addr != 0x00U) && (ep_addr != 0x80U) && (req->wLength == 0x00U))
|
if ((ep_addr != 0x00U) && (ep_addr != 0x80U) && (req->wLength == 0x00U))
|
||||||
{
|
{
|
||||||
USBD_LL_StallEP(pdev, ep_addr);
|
(void)USBD_LL_StallEP(pdev, ep_addr);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
USBD_CtlSendStatus(pdev);
|
(void)USBD_CtlSendStatus(pdev);
|
||||||
|
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
@ -287,15 +261,15 @@ USBD_StatusTypeDef USBD_StdEPReq (USBD_HandleTypeDef *pdev , USBD_SetupReqTyped
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case USB_REQ_CLEAR_FEATURE :
|
case USB_REQ_CLEAR_FEATURE:
|
||||||
|
|
||||||
switch (pdev->dev_state)
|
switch (pdev->dev_state)
|
||||||
{
|
{
|
||||||
case USBD_STATE_ADDRESSED:
|
case USBD_STATE_ADDRESSED:
|
||||||
if ((ep_addr != 0x00U) && (ep_addr != 0x80U))
|
if ((ep_addr != 0x00U) && (ep_addr != 0x80U))
|
||||||
{
|
{
|
||||||
USBD_LL_StallEP(pdev, ep_addr);
|
(void)USBD_LL_StallEP(pdev, ep_addr);
|
||||||
USBD_LL_StallEP(pdev, 0x80U);
|
(void)USBD_LL_StallEP(pdev, 0x80U);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
@ -308,9 +282,10 @@ USBD_StatusTypeDef USBD_StdEPReq (USBD_HandleTypeDef *pdev , USBD_SetupReqTyped
|
||||||
{
|
{
|
||||||
if ((ep_addr & 0x7FU) != 0x00U)
|
if ((ep_addr & 0x7FU) != 0x00U)
|
||||||
{
|
{
|
||||||
USBD_LL_ClearStallEP(pdev, ep_addr);
|
(void)USBD_LL_ClearStallEP(pdev, ep_addr);
|
||||||
}
|
}
|
||||||
USBD_CtlSendStatus(pdev);
|
(void)USBD_CtlSendStatus(pdev);
|
||||||
|
(USBD_StatusTypeDef)pdev->pClass->Setup(pdev, req);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
@ -329,16 +304,16 @@ USBD_StatusTypeDef USBD_StdEPReq (USBD_HandleTypeDef *pdev , USBD_SetupReqTyped
|
||||||
USBD_CtlError(pdev, req);
|
USBD_CtlError(pdev, req);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
pep = ((ep_addr & 0x80U) == 0x80U) ? &pdev->ep_in[ep_addr & 0x7FU]:\
|
pep = ((ep_addr & 0x80U) == 0x80U) ? &pdev->ep_in[ep_addr & 0x7FU] : \
|
||||||
&pdev->ep_out[ep_addr & 0x7FU];
|
&pdev->ep_out[ep_addr & 0x7FU];
|
||||||
|
|
||||||
pep->status = 0x0000U;
|
pep->status = 0x0000U;
|
||||||
|
|
||||||
USBD_CtlSendData (pdev, (uint8_t *)(void *)&pep->status, 2U);
|
(void)USBD_CtlSendData(pdev, (uint8_t *)&pep->status, 2U);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case USBD_STATE_CONFIGURED:
|
case USBD_STATE_CONFIGURED:
|
||||||
if((ep_addr & 0x80U) == 0x80U)
|
if ((ep_addr & 0x80U) == 0x80U)
|
||||||
{
|
{
|
||||||
if (pdev->ep_in[ep_addr & 0xFU].is_used == 0U)
|
if (pdev->ep_in[ep_addr & 0xFU].is_used == 0U)
|
||||||
{
|
{
|
||||||
|
@ -355,14 +330,14 @@ USBD_StatusTypeDef USBD_StdEPReq (USBD_HandleTypeDef *pdev , USBD_SetupReqTyped
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
pep = ((ep_addr & 0x80U) == 0x80U) ? &pdev->ep_in[ep_addr & 0x7FU]:\
|
pep = ((ep_addr & 0x80U) == 0x80U) ? &pdev->ep_in[ep_addr & 0x7FU] : \
|
||||||
&pdev->ep_out[ep_addr & 0x7FU];
|
&pdev->ep_out[ep_addr & 0x7FU];
|
||||||
|
|
||||||
if ((ep_addr == 0x00U) || (ep_addr == 0x80U))
|
if ((ep_addr == 0x00U) || (ep_addr == 0x80U))
|
||||||
{
|
{
|
||||||
pep->status = 0x0000U;
|
pep->status = 0x0000U;
|
||||||
}
|
}
|
||||||
else if(USBD_LL_IsStallEP(pdev, ep_addr))
|
else if (USBD_LL_IsStallEP(pdev, ep_addr) != 0U)
|
||||||
{
|
{
|
||||||
pep->status = 0x0001U;
|
pep->status = 0x0001U;
|
||||||
}
|
}
|
||||||
|
@ -371,7 +346,7 @@ USBD_StatusTypeDef USBD_StdEPReq (USBD_HandleTypeDef *pdev , USBD_SetupReqTyped
|
||||||
pep->status = 0x0000U;
|
pep->status = 0x0000U;
|
||||||
}
|
}
|
||||||
|
|
||||||
USBD_CtlSendData (pdev, (uint8_t *)(void *)&pep->status, 2U);
|
(void)USBD_CtlSendData(pdev, (uint8_t *)&pep->status, 2U);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
default:
|
default:
|
||||||
|
@ -393,6 +368,8 @@ USBD_StatusTypeDef USBD_StdEPReq (USBD_HandleTypeDef *pdev , USBD_SetupReqTyped
|
||||||
|
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief USBD_GetDescriptor
|
* @brief USBD_GetDescriptor
|
||||||
* Handle Get Descriptor requests
|
* Handle Get Descriptor requests
|
||||||
|
@ -400,18 +377,25 @@ USBD_StatusTypeDef USBD_StdEPReq (USBD_HandleTypeDef *pdev , USBD_SetupReqTyped
|
||||||
* @param req: usb request
|
* @param req: usb request
|
||||||
* @retval status
|
* @retval status
|
||||||
*/
|
*/
|
||||||
static void USBD_GetDescriptor(USBD_HandleTypeDef *pdev ,
|
static void USBD_GetDescriptor(USBD_HandleTypeDef *pdev, USBD_SetupReqTypedef *req)
|
||||||
USBD_SetupReqTypedef *req)
|
|
||||||
{
|
{
|
||||||
uint16_t len;
|
uint16_t len = 0U;
|
||||||
uint8_t *pbuf;
|
uint8_t *pbuf = NULL;
|
||||||
|
uint8_t err = 0U;
|
||||||
|
|
||||||
switch (req->wValue >> 8)
|
switch (req->wValue >> 8)
|
||||||
{
|
{
|
||||||
#if (USBD_LPM_ENABLED == 1U)
|
#if ((USBD_LPM_ENABLED == 1U) || (USBD_CLASS_BOS_ENABLED == 1U))
|
||||||
case USB_DESC_TYPE_BOS:
|
case USB_DESC_TYPE_BOS:
|
||||||
pbuf = pdev->pDesc->GetBOSDescriptor(pdev->dev_speed, &len);
|
if (pdev->pDesc->GetBOSDescriptor != NULL)
|
||||||
|
{
|
||||||
|
pbuf = pdev->pDesc->GetBOSDescriptor(pdev->dev_speed, &len);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
USBD_CtlError(pdev, req);
|
||||||
|
err++;
|
||||||
|
}
|
||||||
break;
|
break;
|
||||||
#endif
|
#endif
|
||||||
case USB_DESC_TYPE_DEVICE:
|
case USB_DESC_TYPE_DEVICE:
|
||||||
|
@ -419,14 +403,14 @@ static void USBD_GetDescriptor(USBD_HandleTypeDef *pdev ,
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case USB_DESC_TYPE_CONFIGURATION:
|
case USB_DESC_TYPE_CONFIGURATION:
|
||||||
if(pdev->dev_speed == USBD_SPEED_HIGH )
|
if (pdev->dev_speed == USBD_SPEED_HIGH)
|
||||||
{
|
{
|
||||||
pbuf = (uint8_t *)pdev->pClass->GetHSConfigDescriptor(&len);
|
pbuf = pdev->pClass->GetHSConfigDescriptor(&len);
|
||||||
pbuf[1] = USB_DESC_TYPE_CONFIGURATION;
|
pbuf[1] = USB_DESC_TYPE_CONFIGURATION;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
pbuf = (uint8_t *)pdev->pClass->GetFSConfigDescriptor(&len);
|
pbuf = pdev->pClass->GetFSConfigDescriptor(&len);
|
||||||
pbuf[1] = USB_DESC_TYPE_CONFIGURATION;
|
pbuf[1] = USB_DESC_TYPE_CONFIGURATION;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
@ -435,81 +419,159 @@ static void USBD_GetDescriptor(USBD_HandleTypeDef *pdev ,
|
||||||
switch ((uint8_t)(req->wValue))
|
switch ((uint8_t)(req->wValue))
|
||||||
{
|
{
|
||||||
case USBD_IDX_LANGID_STR:
|
case USBD_IDX_LANGID_STR:
|
||||||
pbuf = pdev->pDesc->GetLangIDStrDescriptor(pdev->dev_speed, &len);
|
if (pdev->pDesc->GetLangIDStrDescriptor != NULL)
|
||||||
|
{
|
||||||
|
pbuf = pdev->pDesc->GetLangIDStrDescriptor(pdev->dev_speed, &len);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
USBD_CtlError(pdev, req);
|
||||||
|
err++;
|
||||||
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case USBD_IDX_MFC_STR:
|
case USBD_IDX_MFC_STR:
|
||||||
pbuf = pdev->pDesc->GetManufacturerStrDescriptor(pdev->dev_speed, &len);
|
if (pdev->pDesc->GetManufacturerStrDescriptor != NULL)
|
||||||
|
{
|
||||||
|
pbuf = pdev->pDesc->GetManufacturerStrDescriptor(pdev->dev_speed, &len);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
USBD_CtlError(pdev, req);
|
||||||
|
err++;
|
||||||
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case USBD_IDX_PRODUCT_STR:
|
case USBD_IDX_PRODUCT_STR:
|
||||||
pbuf = pdev->pDesc->GetProductStrDescriptor(pdev->dev_speed, &len);
|
if (pdev->pDesc->GetProductStrDescriptor != NULL)
|
||||||
|
{
|
||||||
|
pbuf = pdev->pDesc->GetProductStrDescriptor(pdev->dev_speed, &len);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
USBD_CtlError(pdev, req);
|
||||||
|
err++;
|
||||||
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case USBD_IDX_SERIAL_STR:
|
case USBD_IDX_SERIAL_STR:
|
||||||
pbuf = pdev->pDesc->GetSerialStrDescriptor(pdev->dev_speed, &len);
|
if (pdev->pDesc->GetSerialStrDescriptor != NULL)
|
||||||
|
{
|
||||||
|
pbuf = pdev->pDesc->GetSerialStrDescriptor(pdev->dev_speed, &len);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
USBD_CtlError(pdev, req);
|
||||||
|
err++;
|
||||||
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case USBD_IDX_CONFIG_STR:
|
case USBD_IDX_CONFIG_STR:
|
||||||
pbuf = pdev->pDesc->GetConfigurationStrDescriptor(pdev->dev_speed, &len);
|
if (pdev->pDesc->GetConfigurationStrDescriptor != NULL)
|
||||||
|
{
|
||||||
|
pbuf = pdev->pDesc->GetConfigurationStrDescriptor(pdev->dev_speed, &len);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
USBD_CtlError(pdev, req);
|
||||||
|
err++;
|
||||||
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case USBD_IDX_INTERFACE_STR:
|
case USBD_IDX_INTERFACE_STR:
|
||||||
pbuf = pdev->pDesc->GetInterfaceStrDescriptor(pdev->dev_speed, &len);
|
if (pdev->pDesc->GetInterfaceStrDescriptor != NULL)
|
||||||
|
{
|
||||||
|
pbuf = pdev->pDesc->GetInterfaceStrDescriptor(pdev->dev_speed, &len);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
USBD_CtlError(pdev, req);
|
||||||
|
err++;
|
||||||
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
default:
|
default:
|
||||||
#if (USBD_SUPPORT_USER_STRING == 1U)
|
#if (USBD_SUPPORT_USER_STRING_DESC == 1U)
|
||||||
pbuf = pdev->pClass->GetUsrStrDescriptor(pdev, (req->wValue) , &len);
|
if (pdev->pClass->GetUsrStrDescriptor != NULL)
|
||||||
break;
|
{
|
||||||
|
pbuf = pdev->pClass->GetUsrStrDescriptor(pdev, (req->wValue), &len);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
USBD_CtlError(pdev, req);
|
||||||
|
err++;
|
||||||
|
}
|
||||||
|
#elif (USBD_CLASS_USER_STRING_DESC == 1U)
|
||||||
|
if (pdev->pDesc->GetUserStrDescriptor != NULL)
|
||||||
|
{
|
||||||
|
pbuf = pdev->pDesc->GetUserStrDescriptor(pdev->dev_speed, (req->wValue), &len);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
USBD_CtlError(pdev, req);
|
||||||
|
err++;
|
||||||
|
}
|
||||||
#else
|
#else
|
||||||
USBD_CtlError(pdev , req);
|
USBD_CtlError(pdev, req);
|
||||||
return;
|
err++;
|
||||||
#endif
|
#endif
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case USB_DESC_TYPE_DEVICE_QUALIFIER:
|
|
||||||
|
|
||||||
if(pdev->dev_speed == USBD_SPEED_HIGH)
|
case USB_DESC_TYPE_DEVICE_QUALIFIER:
|
||||||
|
if (pdev->dev_speed == USBD_SPEED_HIGH)
|
||||||
{
|
{
|
||||||
pbuf = (uint8_t *)pdev->pClass->GetDeviceQualifierDescriptor(&len);
|
pbuf = pdev->pClass->GetDeviceQualifierDescriptor(&len);
|
||||||
break;
|
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
USBD_CtlError(pdev , req);
|
USBD_CtlError(pdev, req);
|
||||||
return;
|
err++;
|
||||||
}
|
}
|
||||||
|
break;
|
||||||
|
|
||||||
case USB_DESC_TYPE_OTHER_SPEED_CONFIGURATION:
|
case USB_DESC_TYPE_OTHER_SPEED_CONFIGURATION:
|
||||||
if(pdev->dev_speed == USBD_SPEED_HIGH )
|
if (pdev->dev_speed == USBD_SPEED_HIGH)
|
||||||
{
|
{
|
||||||
pbuf = (uint8_t *)pdev->pClass->GetOtherSpeedConfigDescriptor(&len);
|
pbuf = pdev->pClass->GetOtherSpeedConfigDescriptor(&len);
|
||||||
pbuf[1] = USB_DESC_TYPE_OTHER_SPEED_CONFIGURATION;
|
pbuf[1] = USB_DESC_TYPE_OTHER_SPEED_CONFIGURATION;
|
||||||
break;
|
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
USBD_CtlError(pdev , req);
|
USBD_CtlError(pdev, req);
|
||||||
return;
|
err++;
|
||||||
}
|
}
|
||||||
|
break;
|
||||||
|
|
||||||
default:
|
default:
|
||||||
USBD_CtlError(pdev , req);
|
USBD_CtlError(pdev, req);
|
||||||
|
err++;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (err != 0U)
|
||||||
|
{
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
else
|
||||||
if((len != 0U) && (req->wLength != 0U))
|
|
||||||
{
|
{
|
||||||
|
if (req->wLength != 0U)
|
||||||
len = MIN(len, req->wLength);
|
{
|
||||||
|
if (len != 0U)
|
||||||
USBD_CtlSendData (pdev, pbuf, len);
|
{
|
||||||
}
|
len = MIN(len, req->wLength);
|
||||||
|
(void)USBD_CtlSendData(pdev, pbuf, len);
|
||||||
if(req->wLength == 0U)
|
}
|
||||||
{
|
else
|
||||||
USBD_CtlSendStatus(pdev);
|
{
|
||||||
|
USBD_CtlError(pdev, req);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
(void)USBD_CtlSendStatus(pdev);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -520,8 +582,7 @@ static void USBD_GetDescriptor(USBD_HandleTypeDef *pdev ,
|
||||||
* @param req: usb request
|
* @param req: usb request
|
||||||
* @retval status
|
* @retval status
|
||||||
*/
|
*/
|
||||||
static void USBD_SetAddress(USBD_HandleTypeDef *pdev ,
|
static void USBD_SetAddress(USBD_HandleTypeDef *pdev, USBD_SetupReqTypedef *req)
|
||||||
USBD_SetupReqTypedef *req)
|
|
||||||
{
|
{
|
||||||
uint8_t dev_addr;
|
uint8_t dev_addr;
|
||||||
|
|
||||||
|
@ -531,13 +592,13 @@ static void USBD_SetAddress(USBD_HandleTypeDef *pdev ,
|
||||||
|
|
||||||
if (pdev->dev_state == USBD_STATE_CONFIGURED)
|
if (pdev->dev_state == USBD_STATE_CONFIGURED)
|
||||||
{
|
{
|
||||||
USBD_CtlError(pdev , req);
|
USBD_CtlError(pdev, req);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
pdev->dev_address = dev_addr;
|
pdev->dev_address = dev_addr;
|
||||||
USBD_LL_SetUSBAddress(pdev, dev_addr);
|
(void)USBD_LL_SetUSBAddress(pdev, dev_addr);
|
||||||
USBD_CtlSendStatus(pdev);
|
(void)USBD_CtlSendStatus(pdev);
|
||||||
|
|
||||||
if (dev_addr != 0U)
|
if (dev_addr != 0U)
|
||||||
{
|
{
|
||||||
|
@ -562,8 +623,9 @@ static void USBD_SetAddress(USBD_HandleTypeDef *pdev ,
|
||||||
* @param req: usb request
|
* @param req: usb request
|
||||||
* @retval status
|
* @retval status
|
||||||
*/
|
*/
|
||||||
static void USBD_SetConfig(USBD_HandleTypeDef *pdev, USBD_SetupReqTypedef *req)
|
static USBD_StatusTypeDef USBD_SetConfig(USBD_HandleTypeDef *pdev, USBD_SetupReqTypedef *req)
|
||||||
{
|
{
|
||||||
|
USBD_StatusTypeDef ret = USBD_OK;
|
||||||
static uint8_t cfgidx;
|
static uint8_t cfgidx;
|
||||||
|
|
||||||
cfgidx = (uint8_t)(req->wValue);
|
cfgidx = (uint8_t)(req->wValue);
|
||||||
|
@ -571,63 +633,77 @@ static void USBD_SetConfig(USBD_HandleTypeDef *pdev, USBD_SetupReqTypedef *req)
|
||||||
if (cfgidx > USBD_MAX_NUM_CONFIGURATION)
|
if (cfgidx > USBD_MAX_NUM_CONFIGURATION)
|
||||||
{
|
{
|
||||||
USBD_CtlError(pdev, req);
|
USBD_CtlError(pdev, req);
|
||||||
|
return USBD_FAIL;
|
||||||
}
|
}
|
||||||
else
|
|
||||||
|
switch (pdev->dev_state)
|
||||||
{
|
{
|
||||||
switch (pdev->dev_state)
|
case USBD_STATE_ADDRESSED:
|
||||||
|
if (cfgidx != 0U)
|
||||||
{
|
{
|
||||||
case USBD_STATE_ADDRESSED:
|
pdev->dev_config = cfgidx;
|
||||||
if (cfgidx)
|
|
||||||
|
ret = USBD_SetClassConfig(pdev, cfgidx);
|
||||||
|
|
||||||
|
if (ret != USBD_OK)
|
||||||
{
|
{
|
||||||
pdev->dev_config = cfgidx;
|
USBD_CtlError(pdev, req);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
(void)USBD_CtlSendStatus(pdev);
|
||||||
pdev->dev_state = USBD_STATE_CONFIGURED;
|
pdev->dev_state = USBD_STATE_CONFIGURED;
|
||||||
if(USBD_SetClassConfig(pdev, cfgidx) == USBD_FAIL)
|
|
||||||
{
|
|
||||||
USBD_CtlError(pdev, req);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
USBD_CtlSendStatus(pdev);
|
|
||||||
}
|
}
|
||||||
else
|
|
||||||
{
|
|
||||||
USBD_CtlSendStatus(pdev);
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
|
|
||||||
case USBD_STATE_CONFIGURED:
|
|
||||||
if (cfgidx == 0U)
|
|
||||||
{
|
|
||||||
pdev->dev_state = USBD_STATE_ADDRESSED;
|
|
||||||
pdev->dev_config = cfgidx;
|
|
||||||
USBD_ClrClassConfig(pdev, cfgidx);
|
|
||||||
USBD_CtlSendStatus(pdev);
|
|
||||||
}
|
|
||||||
else if (cfgidx != pdev->dev_config)
|
|
||||||
{
|
|
||||||
/* Clear old configuration */
|
|
||||||
USBD_ClrClassConfig(pdev, (uint8_t)pdev->dev_config);
|
|
||||||
|
|
||||||
/* set new configuration */
|
|
||||||
pdev->dev_config = cfgidx;
|
|
||||||
if(USBD_SetClassConfig(pdev, cfgidx) == USBD_FAIL)
|
|
||||||
{
|
|
||||||
USBD_CtlError(pdev, req);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
USBD_CtlSendStatus(pdev);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
USBD_CtlSendStatus(pdev);
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
|
|
||||||
default:
|
|
||||||
USBD_CtlError(pdev, req);
|
|
||||||
USBD_ClrClassConfig(pdev, cfgidx);
|
|
||||||
break;
|
|
||||||
}
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
(void)USBD_CtlSendStatus(pdev);
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
|
||||||
|
case USBD_STATE_CONFIGURED:
|
||||||
|
if (cfgidx == 0U)
|
||||||
|
{
|
||||||
|
pdev->dev_state = USBD_STATE_ADDRESSED;
|
||||||
|
pdev->dev_config = cfgidx;
|
||||||
|
(void)USBD_ClrClassConfig(pdev, cfgidx);
|
||||||
|
(void)USBD_CtlSendStatus(pdev);
|
||||||
|
}
|
||||||
|
else if (cfgidx != pdev->dev_config)
|
||||||
|
{
|
||||||
|
/* Clear old configuration */
|
||||||
|
(void)USBD_ClrClassConfig(pdev, (uint8_t)pdev->dev_config);
|
||||||
|
|
||||||
|
/* set new configuration */
|
||||||
|
pdev->dev_config = cfgidx;
|
||||||
|
|
||||||
|
ret = USBD_SetClassConfig(pdev, cfgidx);
|
||||||
|
|
||||||
|
if (ret != USBD_OK)
|
||||||
|
{
|
||||||
|
USBD_CtlError(pdev, req);
|
||||||
|
(void)USBD_ClrClassConfig(pdev, (uint8_t)pdev->dev_config);
|
||||||
|
pdev->dev_state = USBD_STATE_ADDRESSED;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
(void)USBD_CtlSendStatus(pdev);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
(void)USBD_CtlSendStatus(pdev);
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
|
||||||
|
default:
|
||||||
|
USBD_CtlError(pdev, req);
|
||||||
|
(void)USBD_ClrClassConfig(pdev, cfgidx);
|
||||||
|
ret = USBD_FAIL;
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -641,7 +717,7 @@ static void USBD_GetConfig(USBD_HandleTypeDef *pdev, USBD_SetupReqTypedef *req)
|
||||||
{
|
{
|
||||||
if (req->wLength != 1U)
|
if (req->wLength != 1U)
|
||||||
{
|
{
|
||||||
USBD_CtlError(pdev , req);
|
USBD_CtlError(pdev, req);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
@ -650,15 +726,15 @@ static void USBD_GetConfig(USBD_HandleTypeDef *pdev, USBD_SetupReqTypedef *req)
|
||||||
case USBD_STATE_DEFAULT:
|
case USBD_STATE_DEFAULT:
|
||||||
case USBD_STATE_ADDRESSED:
|
case USBD_STATE_ADDRESSED:
|
||||||
pdev->dev_default_config = 0U;
|
pdev->dev_default_config = 0U;
|
||||||
USBD_CtlSendData (pdev, (uint8_t *)(void *)&pdev->dev_default_config, 1U);
|
(void)USBD_CtlSendData(pdev, (uint8_t *)&pdev->dev_default_config, 1U);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case USBD_STATE_CONFIGURED:
|
case USBD_STATE_CONFIGURED:
|
||||||
USBD_CtlSendData (pdev, (uint8_t *)(void *)&pdev->dev_config, 1U);
|
(void)USBD_CtlSendData(pdev, (uint8_t *)&pdev->dev_config, 1U);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
default:
|
default:
|
||||||
USBD_CtlError(pdev , req);
|
USBD_CtlError(pdev, req);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -678,28 +754,28 @@ static void USBD_GetStatus(USBD_HandleTypeDef *pdev, USBD_SetupReqTypedef *req)
|
||||||
case USBD_STATE_DEFAULT:
|
case USBD_STATE_DEFAULT:
|
||||||
case USBD_STATE_ADDRESSED:
|
case USBD_STATE_ADDRESSED:
|
||||||
case USBD_STATE_CONFIGURED:
|
case USBD_STATE_CONFIGURED:
|
||||||
if(req->wLength != 0x2U)
|
if (req->wLength != 0x2U)
|
||||||
{
|
{
|
||||||
USBD_CtlError(pdev, req);
|
USBD_CtlError(pdev, req);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
#if ( USBD_SELF_POWERED == 1U)
|
#if (USBD_SELF_POWERED == 1U)
|
||||||
pdev->dev_config_status = USB_CONFIG_SELF_POWERED;
|
pdev->dev_config_status = USB_CONFIG_SELF_POWERED;
|
||||||
#else
|
#else
|
||||||
pdev->dev_config_status = 0U;
|
pdev->dev_config_status = 0U;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
if (pdev->dev_remote_wakeup)
|
if (pdev->dev_remote_wakeup != 0U)
|
||||||
{
|
{
|
||||||
pdev->dev_config_status |= USB_CONFIG_REMOTE_WAKEUP;
|
pdev->dev_config_status |= USB_CONFIG_REMOTE_WAKEUP;
|
||||||
}
|
}
|
||||||
|
|
||||||
USBD_CtlSendData (pdev, (uint8_t *)(void *)&pdev->dev_config_status, 2U);
|
(void)USBD_CtlSendData(pdev, (uint8_t *)&pdev->dev_config_status, 2U);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
default :
|
default:
|
||||||
USBD_CtlError(pdev , req);
|
USBD_CtlError(pdev, req);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -712,16 +788,13 @@ static void USBD_GetStatus(USBD_HandleTypeDef *pdev, USBD_SetupReqTypedef *req)
|
||||||
* @param req: usb request
|
* @param req: usb request
|
||||||
* @retval status
|
* @retval status
|
||||||
*/
|
*/
|
||||||
static void USBD_SetFeature(USBD_HandleTypeDef *pdev ,
|
static void USBD_SetFeature(USBD_HandleTypeDef *pdev, USBD_SetupReqTypedef *req)
|
||||||
USBD_SetupReqTypedef *req)
|
|
||||||
{
|
{
|
||||||
|
|
||||||
if (req->wValue == USB_FEATURE_REMOTE_WAKEUP)
|
if (req->wValue == USB_FEATURE_REMOTE_WAKEUP)
|
||||||
{
|
{
|
||||||
pdev->dev_remote_wakeup = 1U;
|
pdev->dev_remote_wakeup = 1U;
|
||||||
USBD_CtlSendStatus(pdev);
|
(void)USBD_CtlSendStatus(pdev);
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -732,24 +805,23 @@ static void USBD_SetFeature(USBD_HandleTypeDef *pdev ,
|
||||||
* @param req: usb request
|
* @param req: usb request
|
||||||
* @retval status
|
* @retval status
|
||||||
*/
|
*/
|
||||||
static void USBD_ClrFeature(USBD_HandleTypeDef *pdev ,
|
static void USBD_ClrFeature(USBD_HandleTypeDef *pdev, USBD_SetupReqTypedef *req)
|
||||||
USBD_SetupReqTypedef *req)
|
|
||||||
{
|
{
|
||||||
switch (pdev->dev_state)
|
switch (pdev->dev_state)
|
||||||
{
|
{
|
||||||
case USBD_STATE_DEFAULT:
|
case USBD_STATE_DEFAULT:
|
||||||
case USBD_STATE_ADDRESSED:
|
case USBD_STATE_ADDRESSED:
|
||||||
case USBD_STATE_CONFIGURED:
|
case USBD_STATE_CONFIGURED:
|
||||||
if (req->wValue == USB_FEATURE_REMOTE_WAKEUP)
|
if (req->wValue == USB_FEATURE_REMOTE_WAKEUP)
|
||||||
{
|
{
|
||||||
pdev->dev_remote_wakeup = 0U;
|
pdev->dev_remote_wakeup = 0U;
|
||||||
USBD_CtlSendStatus(pdev);
|
(void)USBD_CtlSendStatus(pdev);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
default :
|
default:
|
||||||
USBD_CtlError(pdev , req);
|
USBD_CtlError(pdev, req);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -763,12 +835,23 @@ static void USBD_ClrFeature(USBD_HandleTypeDef *pdev ,
|
||||||
|
|
||||||
void USBD_ParseSetupRequest(USBD_SetupReqTypedef *req, uint8_t *pdata)
|
void USBD_ParseSetupRequest(USBD_SetupReqTypedef *req, uint8_t *pdata)
|
||||||
{
|
{
|
||||||
req->bmRequest = *(uint8_t *) (pdata);
|
uint8_t *pbuff = pdata;
|
||||||
req->bRequest = *(uint8_t *) (pdata + 1);
|
|
||||||
req->wValue = SWAPBYTE (pdata + 2);
|
|
||||||
req->wIndex = SWAPBYTE (pdata + 4);
|
|
||||||
req->wLength = SWAPBYTE (pdata + 6);
|
|
||||||
|
|
||||||
|
req->bmRequest = *(uint8_t *)(pbuff);
|
||||||
|
|
||||||
|
pbuff++;
|
||||||
|
req->bRequest = *(uint8_t *)(pbuff);
|
||||||
|
|
||||||
|
pbuff++;
|
||||||
|
req->wValue = SWAPBYTE(pbuff);
|
||||||
|
|
||||||
|
pbuff++;
|
||||||
|
pbuff++;
|
||||||
|
req->wIndex = SWAPBYTE(pbuff);
|
||||||
|
|
||||||
|
pbuff++;
|
||||||
|
pbuff++;
|
||||||
|
req->wLength = SWAPBYTE(pbuff);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -779,11 +862,12 @@ void USBD_ParseSetupRequest(USBD_SetupReqTypedef *req, uint8_t *pdata)
|
||||||
* @retval None
|
* @retval None
|
||||||
*/
|
*/
|
||||||
|
|
||||||
void USBD_CtlError( USBD_HandleTypeDef *pdev ,
|
void USBD_CtlError(USBD_HandleTypeDef *pdev, USBD_SetupReqTypedef *req)
|
||||||
USBD_SetupReqTypedef *req)
|
|
||||||
{
|
{
|
||||||
USBD_LL_StallEP(pdev , 0x80U);
|
UNUSED(req);
|
||||||
USBD_LL_StallEP(pdev , 0U);
|
|
||||||
|
(void)USBD_LL_StallEP(pdev, 0x80U);
|
||||||
|
(void)USBD_LL_StallEP(pdev, 0U);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -798,18 +882,29 @@ void USBD_CtlError( USBD_HandleTypeDef *pdev ,
|
||||||
void USBD_GetString(uint8_t *desc, uint8_t *unicode, uint16_t *len)
|
void USBD_GetString(uint8_t *desc, uint8_t *unicode, uint16_t *len)
|
||||||
{
|
{
|
||||||
uint8_t idx = 0U;
|
uint8_t idx = 0U;
|
||||||
|
uint8_t *pdesc;
|
||||||
|
|
||||||
if (desc != NULL)
|
if (desc == NULL)
|
||||||
{
|
{
|
||||||
*len = (uint16_t)USBD_GetLen(desc) * 2U + 2U;
|
return;
|
||||||
unicode[idx++] = *(uint8_t *)(void *)len;
|
}
|
||||||
unicode[idx++] = USB_DESC_TYPE_STRING;
|
|
||||||
|
|
||||||
while (*desc != '\0')
|
pdesc = desc;
|
||||||
{
|
*len = ((uint16_t)USBD_GetLen(pdesc) * 2U) + 2U;
|
||||||
unicode[idx++] = *desc++;
|
|
||||||
unicode[idx++] = 0U;
|
unicode[idx] = *(uint8_t *)len;
|
||||||
}
|
idx++;
|
||||||
|
unicode[idx] = USB_DESC_TYPE_STRING;
|
||||||
|
idx++;
|
||||||
|
|
||||||
|
while (*pdesc != (uint8_t)'\0')
|
||||||
|
{
|
||||||
|
unicode[idx] = *pdesc;
|
||||||
|
pdesc++;
|
||||||
|
idx++;
|
||||||
|
|
||||||
|
unicode[idx] = 0U;
|
||||||
|
idx++;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -821,15 +916,16 @@ void USBD_GetString(uint8_t *desc, uint8_t *unicode, uint16_t *len)
|
||||||
*/
|
*/
|
||||||
static uint8_t USBD_GetLen(uint8_t *buf)
|
static uint8_t USBD_GetLen(uint8_t *buf)
|
||||||
{
|
{
|
||||||
uint8_t len = 0U;
|
uint8_t len = 0U;
|
||||||
|
uint8_t *pbuff = buf;
|
||||||
|
|
||||||
while (*buf != '\0')
|
while (*pbuff != (uint8_t)'\0')
|
||||||
{
|
{
|
||||||
len++;
|
len++;
|
||||||
buf++;
|
pbuff++;
|
||||||
}
|
}
|
||||||
|
|
||||||
return len;
|
return len;
|
||||||
}
|
}
|
||||||
/**
|
/**
|
||||||
* @}
|
* @}
|
||||||
|
|
|
@ -12,7 +12,7 @@
|
||||||
* This software component is licensed by ST under Ultimate Liberty license
|
* This software component is licensed by ST under Ultimate Liberty license
|
||||||
* SLA0044, the "License"; You may not use this file except in compliance with
|
* SLA0044, the "License"; You may not use this file except in compliance with
|
||||||
* the License. You may obtain a copy of the License at:
|
* the License. You may obtain a copy of the License at:
|
||||||
* http://www.st.com/SLA0044
|
* www.st.com/SLA0044
|
||||||
*
|
*
|
||||||
******************************************************************************
|
******************************************************************************
|
||||||
*/
|
*/
|
||||||
|
@ -84,16 +84,16 @@
|
||||||
* @param len: length of data to be sent
|
* @param len: length of data to be sent
|
||||||
* @retval status
|
* @retval status
|
||||||
*/
|
*/
|
||||||
USBD_StatusTypeDef USBD_CtlSendData (USBD_HandleTypeDef *pdev, uint8_t *pbuf,
|
USBD_StatusTypeDef USBD_CtlSendData(USBD_HandleTypeDef *pdev,
|
||||||
uint16_t len)
|
uint8_t *pbuf, uint32_t len)
|
||||||
{
|
{
|
||||||
/* Set EP0 State */
|
/* Set EP0 State */
|
||||||
pdev->ep0_state = USBD_EP0_DATA_IN;
|
pdev->ep0_state = USBD_EP0_DATA_IN;
|
||||||
pdev->ep_in[0].total_length = len;
|
pdev->ep_in[0].total_length = len;
|
||||||
pdev->ep_in[0].rem_length = len;
|
pdev->ep_in[0].rem_length = len;
|
||||||
|
|
||||||
/* Start the transfer */
|
/* Start the transfer */
|
||||||
USBD_LL_Transmit (pdev, 0x00U, pbuf, len);
|
(void)USBD_LL_Transmit(pdev, 0x00U, pbuf, len);
|
||||||
|
|
||||||
return USBD_OK;
|
return USBD_OK;
|
||||||
}
|
}
|
||||||
|
@ -106,11 +106,11 @@ USBD_StatusTypeDef USBD_CtlSendData (USBD_HandleTypeDef *pdev, uint8_t *pbuf,
|
||||||
* @param len: length of data to be sent
|
* @param len: length of data to be sent
|
||||||
* @retval status
|
* @retval status
|
||||||
*/
|
*/
|
||||||
USBD_StatusTypeDef USBD_CtlContinueSendData (USBD_HandleTypeDef *pdev,
|
USBD_StatusTypeDef USBD_CtlContinueSendData(USBD_HandleTypeDef *pdev,
|
||||||
uint8_t *pbuf, uint16_t len)
|
uint8_t *pbuf, uint32_t len)
|
||||||
{
|
{
|
||||||
/* Start the next transfer */
|
/* Start the next transfer */
|
||||||
USBD_LL_Transmit (pdev, 0x00U, pbuf, len);
|
(void)USBD_LL_Transmit(pdev, 0x00U, pbuf, len);
|
||||||
|
|
||||||
return USBD_OK;
|
return USBD_OK;
|
||||||
}
|
}
|
||||||
|
@ -123,16 +123,16 @@ USBD_StatusTypeDef USBD_CtlContinueSendData (USBD_HandleTypeDef *pdev,
|
||||||
* @param len: length of data to be received
|
* @param len: length of data to be received
|
||||||
* @retval status
|
* @retval status
|
||||||
*/
|
*/
|
||||||
USBD_StatusTypeDef USBD_CtlPrepareRx (USBD_HandleTypeDef *pdev, uint8_t *pbuf,
|
USBD_StatusTypeDef USBD_CtlPrepareRx(USBD_HandleTypeDef *pdev,
|
||||||
uint16_t len)
|
uint8_t *pbuf, uint32_t len)
|
||||||
{
|
{
|
||||||
/* Set EP0 State */
|
/* Set EP0 State */
|
||||||
pdev->ep0_state = USBD_EP0_DATA_OUT;
|
pdev->ep0_state = USBD_EP0_DATA_OUT;
|
||||||
pdev->ep_out[0].total_length = len;
|
pdev->ep_out[0].total_length = len;
|
||||||
pdev->ep_out[0].rem_length = len;
|
pdev->ep_out[0].rem_length = len;
|
||||||
|
|
||||||
/* Start the transfer */
|
/* Start the transfer */
|
||||||
USBD_LL_PrepareReceive (pdev, 0U, pbuf, len);
|
(void)USBD_LL_PrepareReceive(pdev, 0U, pbuf, len);
|
||||||
|
|
||||||
return USBD_OK;
|
return USBD_OK;
|
||||||
}
|
}
|
||||||
|
@ -145,10 +145,10 @@ USBD_StatusTypeDef USBD_CtlPrepareRx (USBD_HandleTypeDef *pdev, uint8_t *pbuf,
|
||||||
* @param len: length of data to be received
|
* @param len: length of data to be received
|
||||||
* @retval status
|
* @retval status
|
||||||
*/
|
*/
|
||||||
USBD_StatusTypeDef USBD_CtlContinueRx (USBD_HandleTypeDef *pdev, uint8_t *pbuf,
|
USBD_StatusTypeDef USBD_CtlContinueRx(USBD_HandleTypeDef *pdev,
|
||||||
uint16_t len)
|
uint8_t *pbuf, uint32_t len)
|
||||||
{
|
{
|
||||||
USBD_LL_PrepareReceive(pdev, 0U, pbuf, len);
|
(void)USBD_LL_PrepareReceive(pdev, 0U, pbuf, len);
|
||||||
|
|
||||||
return USBD_OK;
|
return USBD_OK;
|
||||||
}
|
}
|
||||||
|
@ -159,13 +159,13 @@ USBD_StatusTypeDef USBD_CtlContinueRx (USBD_HandleTypeDef *pdev, uint8_t *pbuf,
|
||||||
* @param pdev: device instance
|
* @param pdev: device instance
|
||||||
* @retval status
|
* @retval status
|
||||||
*/
|
*/
|
||||||
USBD_StatusTypeDef USBD_CtlSendStatus (USBD_HandleTypeDef *pdev)
|
USBD_StatusTypeDef USBD_CtlSendStatus(USBD_HandleTypeDef *pdev)
|
||||||
{
|
{
|
||||||
/* Set EP0 State */
|
/* Set EP0 State */
|
||||||
pdev->ep0_state = USBD_EP0_STATUS_IN;
|
pdev->ep0_state = USBD_EP0_STATUS_IN;
|
||||||
|
|
||||||
/* Start the transfer */
|
/* Start the transfer */
|
||||||
USBD_LL_Transmit(pdev, 0x00U, NULL, 0U);
|
(void)USBD_LL_Transmit(pdev, 0x00U, NULL, 0U);
|
||||||
|
|
||||||
return USBD_OK;
|
return USBD_OK;
|
||||||
}
|
}
|
||||||
|
@ -176,13 +176,13 @@ USBD_StatusTypeDef USBD_CtlSendStatus (USBD_HandleTypeDef *pdev)
|
||||||
* @param pdev: device instance
|
* @param pdev: device instance
|
||||||
* @retval status
|
* @retval status
|
||||||
*/
|
*/
|
||||||
USBD_StatusTypeDef USBD_CtlReceiveStatus (USBD_HandleTypeDef *pdev)
|
USBD_StatusTypeDef USBD_CtlReceiveStatus(USBD_HandleTypeDef *pdev)
|
||||||
{
|
{
|
||||||
/* Set EP0 State */
|
/* Set EP0 State */
|
||||||
pdev->ep0_state = USBD_EP0_STATUS_OUT;
|
pdev->ep0_state = USBD_EP0_STATUS_OUT;
|
||||||
|
|
||||||
/* Start the transfer */
|
/* Start the transfer */
|
||||||
USBD_LL_PrepareReceive (pdev, 0U, NULL, 0U);
|
(void)USBD_LL_PrepareReceive(pdev, 0U, NULL, 0U);
|
||||||
|
|
||||||
return USBD_OK;
|
return USBD_OK;
|
||||||
}
|
}
|
||||||
|
@ -194,7 +194,7 @@ USBD_StatusTypeDef USBD_CtlReceiveStatus (USBD_HandleTypeDef *pdev)
|
||||||
* @param ep_addr: endpoint address
|
* @param ep_addr: endpoint address
|
||||||
* @retval Rx Data blength
|
* @retval Rx Data blength
|
||||||
*/
|
*/
|
||||||
uint32_t USBD_GetRxCount (USBD_HandleTypeDef *pdev, uint8_t ep_addr)
|
uint32_t USBD_GetRxCount(USBD_HandleTypeDef *pdev, uint8_t ep_addr)
|
||||||
{
|
{
|
||||||
return USBD_LL_GetRxDataSize(pdev, ep_addr);
|
return USBD_LL_GetRxDataSize(pdev, ep_addr);
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,278 +1,244 @@
|
||||||
/**
|
/**
|
||||||
******************************************************************************
|
******************************************************************************
|
||||||
* @file system_stm32f7xx.c
|
* @file system_stm32f7xx.c
|
||||||
* @author MCD Application Team
|
* @author MCD Application Team
|
||||||
* @brief CMSIS Cortex-M7 Device Peripheral Access Layer System Source File.
|
* @brief CMSIS Cortex-M7 Device Peripheral Access Layer System Source File.
|
||||||
*
|
*
|
||||||
* This file provides two functions and one global variable to be called from
|
* This file provides two functions and one global variable to be called from
|
||||||
* user application:
|
* user application:
|
||||||
* - SystemInit(): This function is called at startup just after reset and
|
* - SystemInit(): This function is called at startup just after reset and
|
||||||
* before branch to main program. This call is made inside
|
* before branch to main program. This call is made inside
|
||||||
* the "startup_stm32f7xx.s" file.
|
* the "startup_stm32f7xx.s" file.
|
||||||
*
|
*
|
||||||
* - SystemCoreClock variable: Contains the core clock (HCLK), it can be used
|
* - SystemCoreClock variable: Contains the core clock (HCLK), it can be used
|
||||||
* by the user application to setup the SysTick
|
* by the user application to setup the SysTick
|
||||||
* timer or configure other parameters.
|
* timer or configure other parameters.
|
||||||
*
|
*
|
||||||
* - SystemCoreClockUpdate(): Updates the variable SystemCoreClock and must
|
* - SystemCoreClockUpdate(): Updates the variable SystemCoreClock and must
|
||||||
* be called whenever the core clock is changed
|
* be called whenever the core clock is changed
|
||||||
* during program execution.
|
* during program execution.
|
||||||
*
|
*
|
||||||
*
|
*
|
||||||
******************************************************************************
|
******************************************************************************
|
||||||
* @attention
|
* @attention
|
||||||
*
|
*
|
||||||
* <h2><center>© COPYRIGHT 2016 STMicroelectronics</center></h2>
|
* <h2><center>© Copyright (c) 2016 STMicroelectronics.
|
||||||
*
|
* All rights reserved.</center></h2>
|
||||||
* Redistribution and use in source and binary forms, with or without modification,
|
*
|
||||||
* are permitted provided that the following conditions are met:
|
* This software component is licensed by ST under BSD 3-Clause license,
|
||||||
* 1. Redistributions of source code must retain the above copyright notice,
|
* the "License"; You may not use this file except in compliance with the
|
||||||
* this list of conditions and the following disclaimer.
|
* License. You may obtain a copy of the License at:
|
||||||
* 2. Redistributions in binary form must reproduce the above copyright notice,
|
* opensource.org/licenses/BSD-3-Clause
|
||||||
* this list of conditions and the following disclaimer in the documentation
|
*
|
||||||
* and/or other materials provided with the distribution.
|
******************************************************************************
|
||||||
* 3. Neither the name of STMicroelectronics nor the names of its contributors
|
*/
|
||||||
* may be used to endorse or promote products derived from this software
|
|
||||||
* without specific prior written permission.
|
/** @addtogroup CMSIS
|
||||||
*
|
* @{
|
||||||
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
|
*/
|
||||||
* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
|
||||||
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
/** @addtogroup stm32f7xx_system
|
||||||
* DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
|
* @{
|
||||||
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
|
*/
|
||||||
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
|
|
||||||
* SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
|
/** @addtogroup STM32F7xx_System_Private_Includes
|
||||||
* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
|
* @{
|
||||||
* OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
*/
|
||||||
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
|
||||||
*
|
#include "stm32f7xx.h"
|
||||||
******************************************************************************
|
|
||||||
*/
|
#if !defined (HSE_VALUE)
|
||||||
|
#define HSE_VALUE ((uint32_t)25000000) /*!< Default value of the External oscillator in Hz */
|
||||||
/** @addtogroup CMSIS
|
#endif /* HSE_VALUE */
|
||||||
* @{
|
|
||||||
*/
|
#if !defined (HSI_VALUE)
|
||||||
|
#define HSI_VALUE ((uint32_t)16000000) /*!< Value of the Internal oscillator in Hz*/
|
||||||
/** @addtogroup stm32f7xx_system
|
#endif /* HSI_VALUE */
|
||||||
* @{
|
|
||||||
*/
|
/**
|
||||||
|
* @}
|
||||||
/** @addtogroup STM32F7xx_System_Private_Includes
|
*/
|
||||||
* @{
|
|
||||||
*/
|
/** @addtogroup STM32F7xx_System_Private_TypesDefinitions
|
||||||
|
* @{
|
||||||
#include "stm32f7xx.h"
|
*/
|
||||||
|
|
||||||
#if !defined (HSE_VALUE)
|
/**
|
||||||
#define HSE_VALUE ((uint32_t)25000000) /*!< Default value of the External oscillator in Hz */
|
* @}
|
||||||
#endif /* HSE_VALUE */
|
*/
|
||||||
|
|
||||||
#if !defined (HSI_VALUE)
|
/** @addtogroup STM32F7xx_System_Private_Defines
|
||||||
#define HSI_VALUE ((uint32_t)16000000) /*!< Value of the Internal oscillator in Hz*/
|
* @{
|
||||||
#endif /* HSI_VALUE */
|
*/
|
||||||
|
|
||||||
/**
|
/************************* Miscellaneous Configuration ************************/
|
||||||
* @}
|
|
||||||
*/
|
/*!< Uncomment the following line if you need to relocate your vector Table in
|
||||||
|
Internal SRAM. */
|
||||||
/** @addtogroup STM32F7xx_System_Private_TypesDefinitions
|
/* #define VECT_TAB_SRAM */
|
||||||
* @{
|
#define VECT_TAB_OFFSET 0x00 /*!< Vector Table base offset field.
|
||||||
*/
|
This value must be a multiple of 0x200. */
|
||||||
|
/******************************************************************************/
|
||||||
/**
|
|
||||||
* @}
|
/**
|
||||||
*/
|
* @}
|
||||||
|
*/
|
||||||
/** @addtogroup STM32F7xx_System_Private_Defines
|
|
||||||
* @{
|
/** @addtogroup STM32F7xx_System_Private_Macros
|
||||||
*/
|
* @{
|
||||||
|
*/
|
||||||
/************************* Miscellaneous Configuration ************************/
|
|
||||||
|
/**
|
||||||
/*!< Uncomment the following line if you need to relocate your vector Table in
|
* @}
|
||||||
Internal SRAM. */
|
*/
|
||||||
/* #define VECT_TAB_SRAM */
|
|
||||||
#define VECT_TAB_OFFSET 0x00 /*!< Vector Table base offset field.
|
/** @addtogroup STM32F7xx_System_Private_Variables
|
||||||
This value must be a multiple of 0x200. */
|
* @{
|
||||||
/******************************************************************************/
|
*/
|
||||||
|
|
||||||
/**
|
/* This variable is updated in three ways:
|
||||||
* @}
|
1) by calling CMSIS function SystemCoreClockUpdate()
|
||||||
*/
|
2) by calling HAL API function HAL_RCC_GetHCLKFreq()
|
||||||
|
3) each time HAL_RCC_ClockConfig() is called to configure the system clock frequency
|
||||||
/** @addtogroup STM32F7xx_System_Private_Macros
|
Note: If you use this function to configure the system clock; then there
|
||||||
* @{
|
is no need to call the 2 first functions listed above, since SystemCoreClock
|
||||||
*/
|
variable is updated automatically.
|
||||||
|
*/
|
||||||
/**
|
uint32_t SystemCoreClock = 16000000;
|
||||||
* @}
|
const uint8_t AHBPrescTable[16] = {0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 4, 6, 7, 8, 9};
|
||||||
*/
|
const uint8_t APBPrescTable[8] = {0, 0, 0, 0, 1, 2, 3, 4};
|
||||||
|
|
||||||
/** @addtogroup STM32F7xx_System_Private_Variables
|
/**
|
||||||
* @{
|
* @}
|
||||||
*/
|
*/
|
||||||
|
|
||||||
/* This variable is updated in three ways:
|
/** @addtogroup STM32F7xx_System_Private_FunctionPrototypes
|
||||||
1) by calling CMSIS function SystemCoreClockUpdate()
|
* @{
|
||||||
2) by calling HAL API function HAL_RCC_GetHCLKFreq()
|
*/
|
||||||
3) each time HAL_RCC_ClockConfig() is called to configure the system clock frequency
|
|
||||||
Note: If you use this function to configure the system clock; then there
|
/**
|
||||||
is no need to call the 2 first functions listed above, since SystemCoreClock
|
* @}
|
||||||
variable is updated automatically.
|
*/
|
||||||
*/
|
|
||||||
uint32_t SystemCoreClock = 16000000;
|
/** @addtogroup STM32F7xx_System_Private_Functions
|
||||||
const uint8_t AHBPrescTable[16] = {0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 4, 6, 7, 8, 9};
|
* @{
|
||||||
const uint8_t APBPrescTable[8] = {0, 0, 0, 0, 1, 2, 3, 4};
|
*/
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @}
|
* @brief Setup the microcontroller system
|
||||||
*/
|
* Initialize the Embedded Flash Interface, the PLL and update the
|
||||||
|
* SystemFrequency variable.
|
||||||
/** @addtogroup STM32F7xx_System_Private_FunctionPrototypes
|
* @param None
|
||||||
* @{
|
* @retval None
|
||||||
*/
|
*/
|
||||||
|
void SystemInit(void)
|
||||||
/**
|
{
|
||||||
* @}
|
/* FPU settings ------------------------------------------------------------*/
|
||||||
*/
|
#if (__FPU_PRESENT == 1) && (__FPU_USED == 1)
|
||||||
|
SCB->CPACR |= ((3UL << 10*2)|(3UL << 11*2)); /* set CP10 and CP11 Full Access */
|
||||||
/** @addtogroup STM32F7xx_System_Private_Functions
|
#endif
|
||||||
* @{
|
|
||||||
*/
|
/* Configure the Vector Table location add offset address ------------------*/
|
||||||
|
#ifdef VECT_TAB_SRAM
|
||||||
/**
|
SCB->VTOR = RAMDTCM_BASE | VECT_TAB_OFFSET; /* Vector Table Relocation in Internal SRAM */
|
||||||
* @brief Setup the microcontroller system
|
#else
|
||||||
* Initialize the Embedded Flash Interface, the PLL and update the
|
SCB->VTOR = FLASH_BASE | VECT_TAB_OFFSET; /* Vector Table Relocation in Internal FLASH */
|
||||||
* SystemFrequency variable.
|
#endif
|
||||||
* @param None
|
}
|
||||||
* @retval None
|
|
||||||
*/
|
/**
|
||||||
void SystemInit(void)
|
* @brief Update SystemCoreClock variable according to Clock Register Values.
|
||||||
{
|
* The SystemCoreClock variable contains the core clock (HCLK), it can
|
||||||
/* FPU settings ------------------------------------------------------------*/
|
* be used by the user application to setup the SysTick timer or configure
|
||||||
#if (__FPU_PRESENT == 1) && (__FPU_USED == 1)
|
* other parameters.
|
||||||
SCB->CPACR |= ((3UL << 10*2)|(3UL << 11*2)); /* set CP10 and CP11 Full Access */
|
*
|
||||||
#endif
|
* @note Each time the core clock (HCLK) changes, this function must be called
|
||||||
/* Reset the RCC clock configuration to the default reset state ------------*/
|
* to update SystemCoreClock variable value. Otherwise, any configuration
|
||||||
/* Set HSION bit */
|
* based on this variable will be incorrect.
|
||||||
RCC->CR |= (uint32_t)0x00000001;
|
*
|
||||||
|
* @note - The system frequency computed by this function is not the real
|
||||||
/* Reset CFGR register */
|
* frequency in the chip. It is calculated based on the predefined
|
||||||
RCC->CFGR = 0x00000000;
|
* constant and the selected clock source:
|
||||||
|
*
|
||||||
/* Reset HSEON, CSSON and PLLON bits */
|
* - If SYSCLK source is HSI, SystemCoreClock will contain the HSI_VALUE(*)
|
||||||
RCC->CR &= (uint32_t)0xFEF6FFFF;
|
*
|
||||||
|
* - If SYSCLK source is HSE, SystemCoreClock will contain the HSE_VALUE(**)
|
||||||
/* Reset PLLCFGR register */
|
*
|
||||||
RCC->PLLCFGR = 0x24003010;
|
* - If SYSCLK source is PLL, SystemCoreClock will contain the HSE_VALUE(**)
|
||||||
|
* or HSI_VALUE(*) multiplied/divided by the PLL factors.
|
||||||
/* Reset HSEBYP bit */
|
*
|
||||||
RCC->CR &= (uint32_t)0xFFFBFFFF;
|
* (*) HSI_VALUE is a constant defined in stm32f7xx_hal_conf.h file (default value
|
||||||
|
* 16 MHz) but the real value may vary depending on the variations
|
||||||
/* Disable all interrupts */
|
* in voltage and temperature.
|
||||||
RCC->CIR = 0x00000000;
|
*
|
||||||
|
* (**) HSE_VALUE is a constant defined in stm32f7xx_hal_conf.h file (default value
|
||||||
/* Configure the Vector Table location add offset address ------------------*/
|
* 25 MHz), user has to ensure that HSE_VALUE is same as the real
|
||||||
#ifdef VECT_TAB_SRAM
|
* frequency of the crystal used. Otherwise, this function may
|
||||||
SCB->VTOR = RAMDTCM_BASE | VECT_TAB_OFFSET; /* Vector Table Relocation in Internal SRAM */
|
* have wrong result.
|
||||||
#else
|
*
|
||||||
SCB->VTOR = FLASH_BASE | VECT_TAB_OFFSET; /* Vector Table Relocation in Internal FLASH */
|
* - The result of this function could be not correct when using fractional
|
||||||
#endif
|
* value for HSE crystal.
|
||||||
}
|
*
|
||||||
|
* @param None
|
||||||
/**
|
* @retval None
|
||||||
* @brief Update SystemCoreClock variable according to Clock Register Values.
|
*/
|
||||||
* The SystemCoreClock variable contains the core clock (HCLK), it can
|
void SystemCoreClockUpdate(void)
|
||||||
* be used by the user application to setup the SysTick timer or configure
|
{
|
||||||
* other parameters.
|
uint32_t tmp = 0, pllvco = 0, pllp = 2, pllsource = 0, pllm = 2;
|
||||||
*
|
|
||||||
* @note Each time the core clock (HCLK) changes, this function must be called
|
/* Get SYSCLK source -------------------------------------------------------*/
|
||||||
* to update SystemCoreClock variable value. Otherwise, any configuration
|
tmp = RCC->CFGR & RCC_CFGR_SWS;
|
||||||
* based on this variable will be incorrect.
|
|
||||||
*
|
switch (tmp)
|
||||||
* @note - The system frequency computed by this function is not the real
|
{
|
||||||
* frequency in the chip. It is calculated based on the predefined
|
case 0x00: /* HSI used as system clock source */
|
||||||
* constant and the selected clock source:
|
SystemCoreClock = HSI_VALUE;
|
||||||
*
|
break;
|
||||||
* - If SYSCLK source is HSI, SystemCoreClock will contain the HSI_VALUE(*)
|
case 0x04: /* HSE used as system clock source */
|
||||||
*
|
SystemCoreClock = HSE_VALUE;
|
||||||
* - If SYSCLK source is HSE, SystemCoreClock will contain the HSE_VALUE(**)
|
break;
|
||||||
*
|
case 0x08: /* PLL used as system clock source */
|
||||||
* - If SYSCLK source is PLL, SystemCoreClock will contain the HSE_VALUE(**)
|
|
||||||
* or HSI_VALUE(*) multiplied/divided by the PLL factors.
|
/* PLL_VCO = (HSE_VALUE or HSI_VALUE / PLL_M) * PLL_N
|
||||||
*
|
SYSCLK = PLL_VCO / PLL_P
|
||||||
* (*) HSI_VALUE is a constant defined in stm32f7xx_hal_conf.h file (default value
|
*/
|
||||||
* 16 MHz) but the real value may vary depending on the variations
|
pllsource = (RCC->PLLCFGR & RCC_PLLCFGR_PLLSRC) >> 22;
|
||||||
* in voltage and temperature.
|
pllm = RCC->PLLCFGR & RCC_PLLCFGR_PLLM;
|
||||||
*
|
|
||||||
* (**) HSE_VALUE is a constant defined in stm32f7xx_hal_conf.h file (default value
|
if (pllsource != 0)
|
||||||
* 25 MHz), user has to ensure that HSE_VALUE is same as the real
|
{
|
||||||
* frequency of the crystal used. Otherwise, this function may
|
/* HSE used as PLL clock source */
|
||||||
* have wrong result.
|
pllvco = (HSE_VALUE / pllm) * ((RCC->PLLCFGR & RCC_PLLCFGR_PLLN) >> 6);
|
||||||
*
|
}
|
||||||
* - The result of this function could be not correct when using fractional
|
else
|
||||||
* value for HSE crystal.
|
{
|
||||||
*
|
/* HSI used as PLL clock source */
|
||||||
* @param None
|
pllvco = (HSI_VALUE / pllm) * ((RCC->PLLCFGR & RCC_PLLCFGR_PLLN) >> 6);
|
||||||
* @retval None
|
}
|
||||||
*/
|
|
||||||
void SystemCoreClockUpdate(void)
|
pllp = (((RCC->PLLCFGR & RCC_PLLCFGR_PLLP) >>16) + 1 ) *2;
|
||||||
{
|
SystemCoreClock = pllvco/pllp;
|
||||||
uint32_t tmp = 0, pllvco = 0, pllp = 2, pllsource = 0, pllm = 2;
|
break;
|
||||||
|
default:
|
||||||
/* Get SYSCLK source -------------------------------------------------------*/
|
SystemCoreClock = HSI_VALUE;
|
||||||
tmp = RCC->CFGR & RCC_CFGR_SWS;
|
break;
|
||||||
|
}
|
||||||
switch (tmp)
|
/* Compute HCLK frequency --------------------------------------------------*/
|
||||||
{
|
/* Get HCLK prescaler */
|
||||||
case 0x00: /* HSI used as system clock source */
|
tmp = AHBPrescTable[((RCC->CFGR & RCC_CFGR_HPRE) >> 4)];
|
||||||
SystemCoreClock = HSI_VALUE;
|
/* HCLK frequency */
|
||||||
break;
|
SystemCoreClock >>= tmp;
|
||||||
case 0x04: /* HSE used as system clock source */
|
}
|
||||||
SystemCoreClock = HSE_VALUE;
|
|
||||||
break;
|
/**
|
||||||
case 0x08: /* PLL used as system clock source */
|
* @}
|
||||||
|
*/
|
||||||
/* PLL_VCO = (HSE_VALUE or HSI_VALUE / PLL_M) * PLL_N
|
|
||||||
SYSCLK = PLL_VCO / PLL_P
|
/**
|
||||||
*/
|
* @}
|
||||||
pllsource = (RCC->PLLCFGR & RCC_PLLCFGR_PLLSRC) >> 22;
|
*/
|
||||||
pllm = RCC->PLLCFGR & RCC_PLLCFGR_PLLM;
|
|
||||||
|
/**
|
||||||
if (pllsource != 0)
|
* @}
|
||||||
{
|
*/
|
||||||
/* HSE used as PLL clock source */
|
/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
|
||||||
pllvco = (HSE_VALUE / pllm) * ((RCC->PLLCFGR & RCC_PLLCFGR_PLLN) >> 6);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
/* HSI used as PLL clock source */
|
|
||||||
pllvco = (HSI_VALUE / pllm) * ((RCC->PLLCFGR & RCC_PLLCFGR_PLLN) >> 6);
|
|
||||||
}
|
|
||||||
|
|
||||||
pllp = (((RCC->PLLCFGR & RCC_PLLCFGR_PLLP) >>16) + 1 ) *2;
|
|
||||||
SystemCoreClock = pllvco/pllp;
|
|
||||||
break;
|
|
||||||
default:
|
|
||||||
SystemCoreClock = HSI_VALUE;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
/* Compute HCLK frequency --------------------------------------------------*/
|
|
||||||
/* Get HCLK prescaler */
|
|
||||||
tmp = AHBPrescTable[((RCC->CFGR & RCC_CFGR_HPRE) >> 4)];
|
|
||||||
/* HCLK frequency */
|
|
||||||
SystemCoreClock >>= tmp;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @}
|
|
||||||
*/
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @}
|
|
||||||
*/
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @}
|
|
||||||
*/
|
|
||||||
/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
|
|
||||||
|
|
|
@ -504,7 +504,7 @@ USBD_StatusTypeDef USBD_LL_SetUSBAddress(USBD_HandleTypeDef *pdev, uint8_t dev_a
|
||||||
* @param size: Data size
|
* @param size: Data size
|
||||||
* @retval USBD status
|
* @retval USBD status
|
||||||
*/
|
*/
|
||||||
USBD_StatusTypeDef USBD_LL_Transmit(USBD_HandleTypeDef *pdev, uint8_t ep_addr, uint8_t *pbuf, uint16_t size)
|
USBD_StatusTypeDef USBD_LL_Transmit(USBD_HandleTypeDef *pdev, uint8_t ep_addr, uint8_t *pbuf, uint32_t size)
|
||||||
{
|
{
|
||||||
HAL_StatusTypeDef hal_status = HAL_OK;
|
HAL_StatusTypeDef hal_status = HAL_OK;
|
||||||
USBD_StatusTypeDef usb_status = USBD_OK;
|
USBD_StatusTypeDef usb_status = USBD_OK;
|
||||||
|
@ -524,7 +524,7 @@ USBD_StatusTypeDef USBD_LL_Transmit(USBD_HandleTypeDef *pdev, uint8_t ep_addr, u
|
||||||
* @param size: Data size
|
* @param size: Data size
|
||||||
* @retval USBD status
|
* @retval USBD status
|
||||||
*/
|
*/
|
||||||
USBD_StatusTypeDef USBD_LL_PrepareReceive(USBD_HandleTypeDef *pdev, uint8_t ep_addr, uint8_t *pbuf, uint16_t size)
|
USBD_StatusTypeDef USBD_LL_PrepareReceive(USBD_HandleTypeDef *pdev, uint8_t ep_addr, uint8_t *pbuf, uint32_t size)
|
||||||
{
|
{
|
||||||
HAL_StatusTypeDef hal_status = HAL_OK;
|
HAL_StatusTypeDef hal_status = HAL_OK;
|
||||||
USBD_StatusTypeDef usb_status = USBD_OK;
|
USBD_StatusTypeDef usb_status = USBD_OK;
|
||||||
|
|
|
@ -68,8 +68,6 @@
|
||||||
/*---------- -----------*/
|
/*---------- -----------*/
|
||||||
#define USBD_MAX_STR_DESC_SIZ 512U
|
#define USBD_MAX_STR_DESC_SIZ 512U
|
||||||
/*---------- -----------*/
|
/*---------- -----------*/
|
||||||
#define USBD_SUPPORT_USER_STRING 0U
|
|
||||||
/*---------- -----------*/
|
|
||||||
#define USBD_DEBUG_LEVEL 0U
|
#define USBD_DEBUG_LEVEL 0U
|
||||||
/*---------- -----------*/
|
/*---------- -----------*/
|
||||||
#define USBD_LPM_ENABLED 0U
|
#define USBD_LPM_ENABLED 0U
|
||||||
|
@ -81,6 +79,9 @@
|
||||||
#define DEVICE_FS 0
|
#define DEVICE_FS 0
|
||||||
#define DEVICE_HS 1
|
#define DEVICE_HS 1
|
||||||
|
|
||||||
|
/* Inform USB core that a full speed device is used. */
|
||||||
|
#define USE_USB_FS
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @}
|
* @}
|
||||||
*/
|
*/
|
||||||
|
|
|
@ -123,11 +123,6 @@ uint8_t * USBD_FS_ProductStrDescriptor(USBD_SpeedTypeDef speed, uint16_t *length
|
||||||
uint8_t * USBD_FS_SerialStrDescriptor(USBD_SpeedTypeDef speed, uint16_t *length);
|
uint8_t * USBD_FS_SerialStrDescriptor(USBD_SpeedTypeDef speed, uint16_t *length);
|
||||||
uint8_t * USBD_FS_ConfigStrDescriptor(USBD_SpeedTypeDef speed, uint16_t *length);
|
uint8_t * USBD_FS_ConfigStrDescriptor(USBD_SpeedTypeDef speed, uint16_t *length);
|
||||||
uint8_t * USBD_FS_InterfaceStrDescriptor(USBD_SpeedTypeDef speed, uint16_t *length);
|
uint8_t * USBD_FS_InterfaceStrDescriptor(USBD_SpeedTypeDef speed, uint16_t *length);
|
||||||
|
|
||||||
#ifdef USBD_SUPPORT_USER_STRING_DESC
|
|
||||||
uint8_t * USBD_FS_USRStringDesc(USBD_SpeedTypeDef speed, uint8_t idx, uint16_t *length);
|
|
||||||
#endif /* USBD_SUPPORT_USER_STRING_DESC */
|
|
||||||
|
|
||||||
#if (USBD_LPM_ENABLED == 1)
|
#if (USBD_LPM_ENABLED == 1)
|
||||||
uint8_t * USBD_FS_USR_BOSDescriptor(USBD_SpeedTypeDef speed, uint16_t *length);
|
uint8_t * USBD_FS_USR_BOSDescriptor(USBD_SpeedTypeDef speed, uint16_t *length);
|
||||||
#endif /* (USBD_LPM_ENABLED == 1) */
|
#endif /* (USBD_LPM_ENABLED == 1) */
|
||||||
|
@ -328,7 +323,9 @@ uint8_t * USBD_FS_SerialStrDescriptor(USBD_SpeedTypeDef speed, uint16_t *length)
|
||||||
/* Update the serial number string descriptor with the data from the unique
|
/* Update the serial number string descriptor with the data from the unique
|
||||||
* ID */
|
* ID */
|
||||||
Get_SerialNum();
|
Get_SerialNum();
|
||||||
|
/* USER CODE BEGIN USBD_FS_SerialStrDescriptor */
|
||||||
|
|
||||||
|
/* USER CODE END USBD_FS_SerialStrDescriptor */
|
||||||
return (uint8_t *) USBD_StringSerial;
|
return (uint8_t *) USBD_StringSerial;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Binary file not shown.
|
@ -1,35 +1,35 @@
|
||||||
S01A000064656D6F70726F675F73746D3332663734362E737265638E
|
S01A000064656D6F70726F675F73746D3332663734362E737265638E
|
||||||
S31508008000080500202DA1000875A1000879A100081F
|
S315080080000805002075A10008BDA10008C1A1000847
|
||||||
S315080080107DA1000881A1000885A1000800000000D4
|
S31508008010C5A10008C9A10008CDA1000800000000FC
|
||||||
S3150800802000000000000000000000000089A1000810
|
S31508008020000000000000000000000000D1A10008C8
|
||||||
S315080080308DA100080000000091A10008039A00081D
|
S31508008030D5A1000800000000D9A100089B9A0008F5
|
||||||
S3150800804095A1000899A100089DA10008A1A1000812
|
S31508008040DDA10008E1A10008E5A10008E9A10008F2
|
||||||
S31508008050A5A10008A9A10008ADA10008B1A10008C2
|
S31508008050EDA10008F1A10008F5A10008F9A10008A2
|
||||||
S31508008060B5A10008B9A10008BDA10008C1A1000872
|
S31508008060FDA1000801A2000805A2000809A200084F
|
||||||
S31508008070C5A10008C9A10008CDA10008D1A1000822
|
S315080080700DA2000811A2000815A2000819A20008FE
|
||||||
S31508008080D5A10008D9A10008DDA10008E1A10008D2
|
S315080080801DA2000821A2000825A2000829A20008AE
|
||||||
S31508008090E5A10008E9A10008EDA10008F1A1000882
|
S315080080902DA2000831A2000835A2000839A200085E
|
||||||
S315080080A0F5A10008F9A10008FDA1000801A2000831
|
S315080080A03DA2000841A2000845A2000849A200080E
|
||||||
S315080080B005A2000809A200080DA2000811A20008DE
|
S315080080B04DA2000851A2000855A2000859A20008BE
|
||||||
S315080080C015A2000819A200081DA2000821A200088E
|
S315080080C05DA2000861A2000865A2000869A200086E
|
||||||
S315080080D025A2000829A200082DA2000831A200083E
|
S315080080D06DA2000871A2000875A2000879A200081E
|
||||||
S315080080E035A2000839A200083DA2000841A20008EE
|
S315080080E07DA2000881A2000885A2000889A20008CE
|
||||||
S315080080F045A2000849A200084DA2000851A200089E
|
S315080080F08DA2000891A2000895A2000899A200087E
|
||||||
S3150800810055A2000859A200085DA2000861A200084D
|
S315080081009DA20008A1A20008A5A20008A9A200082D
|
||||||
S3150800811065A2000869A200086DA2000871A20008FD
|
S31508008110ADA20008B1A20008B5A20008B9A20008DD
|
||||||
S3150800812075A2000879A200087DA2000881A20008AD
|
S31508008120BDA20008C1A20008C5A20008C9A200088D
|
||||||
S3150800813085A2000889A200088DA2000891A200085D
|
S31508008130CDA20008D1A20008D5A20008D9A200083D
|
||||||
S3150800814095A2000899A200089DA20008A1A200080D
|
S31508008140DDA20008E1A20008E5A20008E9A20008ED
|
||||||
S31508008150A5A20008A9A20008ADA20008B1A20008BD
|
S31508008150EDA20008F1A20008F5A20008F9A200089D
|
||||||
S31508008160B5A20008B9A20008BDA20008C1A200086D
|
S31508008160FDA2000801A3000805A3000809A300084A
|
||||||
S31508008170C5A20008C9A20008CDA200080000000098
|
S315080081700DA3000811A3000815A3000800000000BD
|
||||||
S31508008180D1A20008D5A20008D9A20008DDA20008DD
|
S3150800818019A300081DA3000821A3000825A30008B9
|
||||||
S31508008190E1A20008E5A20008E9A20008EDA200088D
|
S3150800819029A300082DA3000831A3000835A3000869
|
||||||
S315080081A0F1A20008F5A20008F9A20008FDA200083D
|
S315080081A039A300083DA3000841A3000845A3000819
|
||||||
S315080081B001A3000805A3000809A300080DA30008E9
|
S315080081B049A300084DA3000851A3000855A30008C9
|
||||||
S315080081C011A3000815A30008EE11AA5510B504005E
|
S315080081C059A300085DA30008EE11AA5510B50400CE
|
||||||
S315080081D0002C01D1012035E0A0690028FFD1606F8D
|
S315080081D0002C01D1012035E0A0690028FFD1606F8D
|
||||||
S315080081E0002805D1002084F87000200000F047FB25
|
S315080081E0002805D1002084F87000200000F06AFB02
|
||||||
S315080081F024206067206800684008400021680860FD
|
S315080081F024206067206800684008400021680860FD
|
||||||
S31508008200200000F0B1F8012801D101201AE0606AC7
|
S31508008200200000F0B1F8012801D101201AE0606AC7
|
||||||
S31508008210002802D0200000F06FFA2068406830F489
|
S31508008210002802D0200000F06FFA2068406830F489
|
||||||
|
@ -39,7 +39,7 @@ S3150800824000F0C7FA10BD2DE9F84306000D0014002A
|
||||||
S315080082501F00B06F202840F08480002D03D0200036
|
S315080082501F00B06F202840F08480002D03D0200036
|
||||||
S3150800826080B2002801D101207CE096F87000012830
|
S3150800826080B2002801D101207CE096F87000012830
|
||||||
S3150800827001D1022076E0012086F870000020F06720
|
S3150800827001D1022076E0012086F870000020F06720
|
||||||
S315080082802220B06700F0FCFA8046A6F85840A6F807
|
S315080082802220B06700F03CFB8046A6F85840A6F8C6
|
||||||
S315080082905A40B068B0F5805F0BD13069002804D128
|
S315080082905A40B068B0F5805F0BD13069002804D128
|
||||||
S315080082A040F2FF10A6F85C0023E0FF20A6F85C0069
|
S315080082A040F2FF10A6F85C0023E0FF20A6F85C0069
|
||||||
S315080082B01FE0B06800280AD13069002803D1FF20E2
|
S315080082B01FE0B06800280AD13069002803D1FF20E2
|
||||||
|
@ -47,12 +47,12 @@ S315080082C0A6F85C0015E07F20A6F85C0011E0B0680F
|
||||||
S315080082D0B0F1805F0AD13069002803D17F20A6F863
|
S315080082D0B0F1805F0AD13069002803D17F20A6F863
|
||||||
S315080082E05C0006E03F20A6F85C0002E00020A6F845
|
S315080082E05C0006E03F20A6F85C0002E00020A6F845
|
||||||
S315080082F05C00B6F85C90B068B0F5805F04D1306970
|
S315080082F05C00B6F85C90B068B0F5805F04D1306970
|
||||||
S31508008300002801D1002416E02C00002513E030686F
|
S31508008300002801D1002401E02C000025002086F871
|
||||||
S31508008310406A19EA00002070641C07E0002CF6D1B8
|
S31508008310700013E03068406A19EA00002070641C97
|
||||||
S315080083203068406A19EA00002880AD1CB6F85A0081
|
S3150800832007E0002CF6D13068406A19EA0000288078
|
||||||
S31508008330401EA6F85A00B6F85A0000280AD0009738
|
S31508008330AD1CB6F85A00401EA6F85A00B6F85A0000
|
||||||
S31508008340434600222021300000F064FA0028E5D0D8
|
S3150800834000280AD00097434600222021300000F07A
|
||||||
S31508008350032007E02020B067002086F87000002080
|
S3150800835061FA0028E5D0032004E02020B067002059
|
||||||
S3150800836000E00220BDE8F28338B5040000210025AC
|
S3150800836000E00220BDE8F28338B5040000210025AC
|
||||||
S31508008370A2682069024360690243E06902432068F3
|
S31508008370A2682069024360690243E06902432068F3
|
||||||
S315080083800368DFF8440303401A4320680260206844
|
S315080083800368DFF8440303401A4320680260206844
|
||||||
|
@ -89,20 +89,20 @@ S31508008560004F05D0B0F5404F06D007E0002008E0E0
|
||||||
S31508008570022006E0042004E0082002E0102000E0C3
|
S31508008570022006E0042004E0082002E0102000E0C3
|
||||||
S315080085801020E269B2F5004F4FD1C0B2002808D0DA
|
S315080085801020E269B2F5004F4FD1C0B2002808D0DA
|
||||||
S31508008590012811D002281AD0042821D008282AD068
|
S31508008590012811D002281AD0042821D008282AD068
|
||||||
S315080085A032E000F031FC6168490811EB400160686F
|
S315080085A032E000F097FC6168490811EB4001606809
|
||||||
S315080085B0B1FBF0F189B228E000F031FC61684908A6
|
S315080085B0B1FBF0F189B228E000F097FC6168490840
|
||||||
S315080085C011EB40016068B1FBF0F189B21DE060680B
|
S315080085C011EB40016068B1FBF0F189B21DE060680B
|
||||||
S315080085D0474911EB50016068B1FBF0F189B214E02C
|
S315080085D0474911EB50016068B1FBF0F189B214E02C
|
||||||
S315080085E000F0D7FB6168490811EB40016068B1FBF0
|
S315080085E000F03DFC6168490811EB40016068B1FB89
|
||||||
S315080085F0F0F189B209E06068400810F580306168DA
|
S315080085F0F0F189B209E06068400810F580306168DA
|
||||||
S31508008600B0FBF1F189B200E001254FF6F072B1F145
|
S31508008600B0FBF1F189B200E001254FF6F072B1F145
|
||||||
S315080086101000904207D20A40C1F34200024392B2C8
|
S315080086101000904207D20A40C1F34200024392B2C8
|
||||||
S315080086202068C26048E0012546E0C0B2002808D0AC
|
S315080086202068C26048E0012546E0C0B2002808D0AC
|
||||||
S31508008630012810D0022818D004281FD0082827D0CF
|
S31508008630012810D0022818D004281FD0082827D0CF
|
||||||
S315080086402FE000F0E1FB616810EB51006168B0FBB8
|
S315080086402FE000F047FC616810EB51006168B0FB51
|
||||||
S31508008650F1F189B226E000F0E2FB616810EB510007
|
S31508008650F1F189B226E000F048FC616810EB5100A0
|
||||||
S315080086606168B0FBF1F189B21CE06068214911EB41
|
S315080086606168B0FBF1F189B21CE06068214911EB41
|
||||||
S3150800867050016068B1FBF0F189B213E000F089FBA4
|
S3150800867050016068B1FBF0F189B213E000F0EFFB3E
|
||||||
S31508008680616810EB51006168B0FBF1F189B209E04D
|
S31508008680616810EB51006168B0FBF1F189B209E04D
|
||||||
S315080086906068400810F500406168B0FBF1F189B2E6
|
S315080086906068400810F500406168B0FBF1F189B2E6
|
||||||
S315080086A000E00125B1F110004FF6F072904202D2B7
|
S315080086A000E00125B1F110004FF6F072904202D2B7
|
||||||
|
@ -124,421 +124,421 @@ S3150800879001684A6832F48012016C0A4301684A602B
|
||||||
S315080087A0016CB1F5801F07D101684A6832F4C0022E
|
S315080087A0016CB1F5801F07D101684A6832F4C0022E
|
||||||
S315080087B0416C0A4301684A6090F82410090607D5F7
|
S315080087B0416C0A4301684A6090F82410090607D5F7
|
||||||
S315080087C001684A6832F40022816C0A4300684260F4
|
S315080087C001684A6832F40022816C0A4300684260F4
|
||||||
S315080087D070471CB504000020E06700F051F803005C
|
S315080087D070471CB504000020E06700F091F803001C
|
||||||
S315080087E02068006800070CD57FF07E4000900022C4
|
S315080087E02068006800070CD57FF07E4000900022C4
|
||||||
S315080087F05FF40011200000F00DF8002801D00320D6
|
S315080087F05FF40011200000F00DF8002801D00320D6
|
||||||
S3150800880007E0202060672020A067002084F8700019
|
S3150800880007E0202060672020A067002084F8700019
|
||||||
S31508008810002016BD2DE9F04105000E0090461F0008
|
S31508008810002016BD2DE9F04105000E0090461F0008
|
||||||
S31508008820069C2868C0693040B04201D1012000E0AA
|
S31508008820069C2868C0693040B04201D1012000E0AA
|
||||||
S3150800883000204146C9B288421ED114F1010FF0D07A
|
S3150800883000204146C9B2884241D114F1010FF0D057
|
||||||
S3150800884000F01EF8C01B844201D3002CE9D1286829
|
S3150800884000F05EF8C01B844201D3002C14D12868BE
|
||||||
S31508008850006830F4D0702968086028688068400885
|
S31508008850006830F4D0702968086028688068400885
|
||||||
S31508008860400029688860202068672020A8670020C3
|
S31508008860400029688860202068672020A8670020C3
|
||||||
S3150800887085F87000032000E00020BDE8F08170470D
|
S3150800887085F87000032023E0286800684007D0D5F3
|
||||||
S3150800888001480068704700BF000100202DE9FC413F
|
S315080088802868C0690005CCD54FF4006029680862DD
|
||||||
S3150800889004000025002C01D10120D1E12078C00771
|
S315080088902868006830F4D0702968086028688068FD
|
||||||
S315080088A06DD5DFF89405016811F00C01042909D08B
|
S315080088A04008400029688860202068672020A8675B
|
||||||
S315080088B0006810F00C0008280ED1DFF88005006863
|
S315080088B02020E867002085F87000032000E00020EB
|
||||||
S315080088C0400209D5DFF86C050068800357D5606853
|
S315080088C0BDE8F081704730B4002513E050F8042B5A
|
||||||
S315080088D0002854D10120B3E16068B0F5803F06D185
|
S315080088D0D30744BFA9F101039A18091F042942F8CE
|
||||||
S315080088E0DFF85005016851F48031016026E06068C0
|
S315080088E0045BFAD213468C0744BF15809B1CC90744
|
||||||
S315080088F000280AD1DFF83C05016831F480310160AF
|
S315080088F048BF1D7050F8041B0029E7D130BC7047EB
|
||||||
S31508008900016831F48021016018E06068B0F5A02F95
|
S3150800890001480068704700BF000100202DE9FC41BE
|
||||||
S315080089100AD1DFF82005016851F480210160016859
|
S3150800891004000025002C01D10120F6E12078C007CB
|
||||||
S3150800892051F48031016009E0DFF80805016831F487
|
S315080089206DD5DFF8E005016811F00C01042909D0BE
|
||||||
S3150800893080310160016831F4802101606068002897
|
S31508008930006810F00C0008280ED1DFF8CC05006896
|
||||||
S315080089400ED0FFF79DFF0600DFF8E80400688003F5
|
S31508008940400209D5DFF8B8050068800357D5606886
|
||||||
S3150800895015D4FFF795FF801B6528F5D303206FE133
|
S31508008950002854D10120D8E16068B0F5803F06D1DF
|
||||||
S31508008960FFF78EFF0600DFF8CC040068800306D503
|
S31508008960DFF89C05016851F48031016026E06068F3
|
||||||
S31508008970FFF786FF801B6528F5D3032060E1207882
|
S3150800897000280AD1DFF88805016831F480310160E2
|
||||||
S31508008980800720D5DFF8B004016811F00C0F09D074
|
S31508008980016831F48021016018E06068B0F5A02F15
|
||||||
S31508008990006810F00C0008282ED1DFF8A004006843
|
S315080089900AD1DFF86C05016851F48021016001688D
|
||||||
S315080089A0400229D4DFF88C040168890704D5E168F8
|
S315080089A051F48031016009E0DFF85405016831F4BB
|
||||||
S315080089B0012901D0012043E1016831F0F80122695B
|
S315080089B080310160016831F4802101606068002817
|
||||||
S315080089C051EAC20101602078000759D5606900287C
|
S315080089C00ED0FFF79DFF0600DFF834050068800328
|
||||||
S315080089D043D0DFF86C74386850F001003860FFF750
|
S315080089D015D4FFF795FF801B6528F5D3032094E18E
|
||||||
S315080089E04FFF0600386880074AD4FFF749FF801B07
|
S315080089E0FFF78EFF0600DFF818050068800306D536
|
||||||
S315080089F00328F7D3032023E1E06800281AD0DFF81C
|
S315080089F0FFF786FF801B6528F5D3032085E12078DD
|
||||||
S31508008A003464306850F001003060FFF739FF070022
|
S31508008A00800720D5DFF8FC04016811F00C0F09D0A7
|
||||||
S31508008A103068800706D4FFF733FFC01B0328F7D357
|
S31508008A10006810F00C0008282ED1DFF8EC04006876
|
||||||
S31508008A2003200DE1306830F0F800216950EAC100F2
|
S31508008A20400229D4DFF8D8040168890704D5E1682B
|
||||||
S31508008A303060C8E7DFF8FC733868400840003860E3
|
S31508008A30012901D0012068E1016831F0F8012269B5
|
||||||
S31508008A40FFF71EFF060038688007BCD5FFF718FF3A
|
S31508008A4051EAC20101602078000759D560690028FB
|
||||||
S31508008A50801B0328F7D30320F2E0DFF8E4733868B5
|
S31508008A5043D0DFF8B874386850F001003860FFF783
|
||||||
S31508008A60400840003860FFF70BFF060038688007AB
|
S31508008A604FFF0600386880074AD4FFF749FF801B86
|
||||||
S31508008A7006D5FFF705FF801B0328F7D30320DFE0A1
|
S31508008A700328F7D3032048E1E06800281AD0DFF876
|
||||||
S31508008A802078400740F18280DFF8C0633068C00074
|
S31508008A808064306850F001003060FFF739FF070056
|
||||||
S31508008A9009D4306850F080503060306810F080504B
|
S31508008A903068800706D4FFF733FFC01B0328F7D3D7
|
||||||
S31508008AA0009000980125DFF8A8733868C00511D42E
|
S31508008AA0032032E1306830F0F800216950EAC1004D
|
||||||
S31508008AB0386850F480703860FFF7E2FE8046386800
|
S31508008AB03060C8E7DFF84874386840084000386016
|
||||||
S31508008AC0C00507D4FFF7DCFEB0EB08006528F6D32F
|
S31508008AC0FFF71EFF060038688007BCD5FFF718FFBA
|
||||||
S31508008AD00320B5E0A068012806D1DFF8780301680D
|
S31508008AD0801B0328F7D3032017E1DFF830743868C2
|
||||||
S31508008AE051F00101016025E0A06800280AD1DFF8ED
|
S31508008AE0400840003860FFF70BFF0600386880072B
|
||||||
S31508008AF064030168490849000160016831F004010E
|
S31508008AF006D5FFF705FF801B0328F7D3032004E1FB
|
||||||
S31508008B00016017E0A06805280AD1DFF84803016864
|
S31508008B002078400740F18280DFF810643068C000A2
|
||||||
S31508008B1051F004010160016851F00101016009E0AA
|
S31508008B1009D4306850F080503060306810F08050CA
|
||||||
S31508008B20DFF830030168490849000160016831F03F
|
S31508008B20009000980125DFF8F8733868C00511D45D
|
||||||
S31508008B3004010160A068002810D0FFF7A1FE070015
|
S31508008B30386850F480703860FFF7E2FE804638687F
|
||||||
S31508008B40DFF810030068800719D4FFF799FEC01BE9
|
S31508008B40C00507D4FFF7DCFEB0EB08006528F6D3AE
|
||||||
S31508008B5041F289318842F3D3032071E0FFF790FE92
|
S31508008B500320DAE0A068012806D1DFF8C803016817
|
||||||
S31508008B600700DFF8F0020068800708D5FFF788FEDF
|
S31508008B6051F00101016025E0A06800280AD1DFF86C
|
||||||
S31508008B70C01B41F289318842F3D3032060E0EDB28D
|
S31508008B70B4030168490849000160016831F004013D
|
||||||
S31508008B80012D03D1306830F080503060A06900288C
|
S31508008B80016017E0A06805280AD1DFF89803016894
|
||||||
S31508008B9055D0DFF8A402006810F00C0008284CD065
|
S31508008B9051F004010160016851F00101016009E02A
|
||||||
S31508008BA0A069022836D1DFF88C52286830F0807028
|
S31508008BA0DFF880030168490849000160016831F06F
|
||||||
S31508008BB02860FFF765FE06002868800106D5FFF7DE
|
S31508008BB004010160A068002810D0FFF7A1FE070095
|
||||||
S31508008BC05FFE801B0328F7D3032039E0E169206A9A
|
S31508008BC0DFF860030068800719D4FFF799FEC01B19
|
||||||
S31508008BD00143606A51EA8011A06A4008401E51EAC2
|
S31508008BD041F289318842F3D3032096E0FFF790FEED
|
||||||
S31508008BE00041E06A51EA006151F00051DFF84C0299
|
S31508008BE00700DFF840030068800708D5FFF788FE0E
|
||||||
S31508008BF00160286850F080702860FFF741FE040085
|
S31508008BF0C01B41F289318842F3D3032085E0EDB2E8
|
||||||
S31508008C00286880011BD4FFF73BFE001B0328F7D317
|
S31508008C00012D03D1306830F080503060A06900280B
|
||||||
S31508008C10032015E0DFF81C52286830F080702860C1
|
S31508008C107AD0DFF8F002006810F00C0008284CD073
|
||||||
S31508008C20FFF72EFE04002868800108D5FFF728FE06
|
S31508008C20A069022836D1DFF8D852286830F080705B
|
||||||
S31508008C30001B0328F7D3032002E0012000E00020F0
|
S31508008C302860FFF765FE06002868800106D5FFF75D
|
||||||
S31508008C40BDE8F6812DE9F04104000D000020002C56
|
S31508008C405FFE801B0328F7D303205EE0E169206AF4
|
||||||
S31508008C5001D101209BE0DFF80062306810F00F00B8
|
S31508008C500143606A51EA8011A06A4008401E51EA41
|
||||||
S31508008C60A8420BD2306800090001284330603068FA
|
S31508008C600041E06A51EA006151F00051DFF89802CC
|
||||||
S31508008C7010F00F00A84201D0012088E02078800774
|
S31508008C700160286850F080702860FFF741FE040004
|
||||||
S31508008C8019D52078400705D5DFF8AC01016851F4FD
|
S31508008C802868800140D4FFF73BFE001B0328F7D372
|
||||||
S31508008C90E05101602078000705D5DFF89C010168DE
|
S31508008C9003203AE0DFF86852286830F080702860D0
|
||||||
S31508008CA051F460410160DFF890110A6832F0F00271
|
S31508008CA0FFF72EFE0400286880012DD5FFF728FE61
|
||||||
S31508008CB0A06802430A602078C00733D56068012897
|
S31508008CB0001B0328F7D3032027E0DFF84C020068DF
|
||||||
S31508008CC006D1DFF870010068800310D401205EE049
|
S31508008CC0A16901291ED010F48001E269914219D1E7
|
||||||
S31508008CD06068022805D157480068800107D401203A
|
S31508008CD010F03F01226A914214D147F6C071014053
|
||||||
S31508008CE055E054480068800701D401204FE0524FF0
|
S31508008CE0626AB1EB821F0DD110F44031A26A5208B4
|
||||||
S31508008CF0396889088900606801433960FFF7C0FD53
|
S31508008CF0521EB1EB024F05D110F07060E16AB0EB7D
|
||||||
S31508008D008046386810F00C006168B0EB810F09D016
|
S31508008D00016F01D0012000E00020BDE8F6812DE9C1
|
||||||
S31508008D10FFF7B6FDB0EB080041F289318842F0D37F
|
S31508008D10F04104000D000020002C01D101209CE048
|
||||||
S31508008D20032034E0306810F00F0085420BD230681B
|
S31508008D20DFF80462306810F00F00A8420BD23068F2
|
||||||
S31508008D300009000128433060306810F00F00A8428F
|
S31508008D300009000128433060306810F00F00A8428F
|
||||||
S31508008D4001D0012023E02078400706D53A490A6871
|
S31508008D4001D0012089E02078800719D520784007CE
|
||||||
S31508008D5032F4E052E06802430A602078000707D53B
|
S31508008D5005D5DFF8B001016851F4E05101602078CB
|
||||||
S31508008D603548016831F46041226951EAC20101605F
|
S31508008D60000705D5DFF89C01016851F460410160F0
|
||||||
S31508008D7000F00FF83949304A1268C2F30312895CC9
|
S31508008D70DFF890110A6832F0F002A06802430A6030
|
||||||
S31508008D80C84031490860002000F06EF80020BDE8B0
|
S31508008D802078C00733D56068012806D1DFF870015E
|
||||||
S31508008D90F08110B500200020002000202648006839
|
S31508008D900068800310D401205FE06068022805D1CE
|
||||||
S31508008DA010F00C00002804D0042804D0082804D0A9
|
S31508008DA057480068800107D4012056E054480068F7
|
||||||
S31508008DB025E0244824E02A4822E0204C226812F0C4
|
S31508008DB0800701D4012050E0524F3968890889009C
|
||||||
S31508008DC03F022068400209D52068C0F3881024496C
|
S31508008DC0606801433960FFF79BFD8046386810F0FC
|
||||||
S31508008DD0A1FB0001002300F06DF808E02068C0F34D
|
S31508008DD00C006168B0EB810F09D0FFF791FDB0EB8D
|
||||||
S31508008DE088101849A1FB0001002300F063F82168E8
|
S31508008DE0080041F289318842F0D3032035E0306823
|
||||||
S31508008DF0C1F30141491C4900B0FBF1F000E01148FC
|
S31508008DF010F00F0085420BD23068000900012843A5
|
||||||
S31508008E0010BD11480068704780B5FFF7FAFF15498D
|
S31508008E003060306810F00F00A84201D0012024E03D
|
||||||
S31508008E10094A1268C2F38222895CC84002BD80B53D
|
S31508008E102078400706D53B490A6832F4E052E068F4
|
||||||
S31508008E20FFF7EFFF0F49044A1268C2F34232895C22
|
S31508008E2002430A602078000707D53648016831F4FE
|
||||||
S31508008E30C84002BD003802400838024004380240E3
|
S31508008E306041226951EAC201016000F010F83B491D
|
||||||
S31508008E40743802400024F400040000204038024030
|
S31508008E40304A1268C2F30312895CC8403149086087
|
||||||
S31508008E500070004070380240003C024044A10008FF
|
S31508008E503148006800F070F80020BDE8F08110B5D0
|
||||||
S31508008E6000127A006CA1000810B504004FF47A705D
|
S31508008E6000200020002000202648006810F00C0092
|
||||||
S31508008E700D490978B0FBF1F00C490968B1FBF0F02F
|
S31508008E70002804D0042804D0082804D025E0244873
|
||||||
S31508008E8000F09EF9002801D001200CE0102C09D230
|
S31508008E8024E02B4822E0204C226812F03F0220689A
|
||||||
S31508008E90002221005FF0FF3000F081F904480460E9
|
S31508008E90400209D52068C0F388102549A1FB0001C6
|
||||||
S31508008EA0002000E0012010BD08000020040000207A
|
S31508008EA0002300F06FF808E02068C0F3881018491E
|
||||||
S31508008EB000000020BBBBE1B1B2F5803F80F07E80A8
|
S31508008EB0A1FB0001002300F065F82168C1F3014118
|
||||||
S31508008EC0022A1ED98C46B1FBF2F102FB11C31B0420
|
S31508008EC0491C4900B0FBF1F000E0114810BD1148FB
|
||||||
S31508008ED043EA1043B3FBF2FC02FB1C3380B240EAC0
|
S31508008ED00068704780B5FFF7FAFF1649094A126815
|
||||||
S31508008EE00343B3FBF2F002FB103240EA0C400023C6
|
S31508008EE0C2F38222895CC84002BD80B5FFF7EFFF56
|
||||||
S31508008EF07047022A05D98446B0FBF2F002FB10C27D
|
S31508008EF01049044A1268C2F34232895CC84002BD6E
|
||||||
S31508008F0070474AB105D100F0010249085FEA30000E
|
S31508008F0000380240083802400438024074380240EB
|
||||||
S31508008F10704700220023704700F096B90B00020044
|
S31508008F100024F4000400002000000020403802402D
|
||||||
S31508008F20002100207047904271EB030CF6D3B3F58D
|
S31508008F200070004070380240003C02408CA10008E6
|
||||||
S31508008F30803F2FD2F0B5B3FA83F7B1FA81F4A7F1DF
|
S31508008F3000127A00B4A1000810B504004FF47A7044
|
||||||
S31508008F400F0E3D1B5340CEF1200602FA0EF2F341F6
|
S31508008F400D490978B0FBF1F00C490968B1FBF0F05E
|
||||||
S31508008F505340B5F10F0746D80F3C2C444140C4F1A5
|
S31508008F5000F09EF9002801D001200CE0102C09D25F
|
||||||
S31508008F602006A040F1414140B1FBF3F603FB161180
|
S31508008F60002221005FF0FF3000F081F90448046018
|
||||||
S31508008F70A2FB0645001BA94102D2761E801859415C
|
S31508008F70002000E0012010BD0800002004000020A9
|
||||||
S31508008F8080EA010221FA0EF362FA0EF200215A4033
|
S31508008F8000000020BBBBE1B1B2F5803F80F07E80D7
|
||||||
S31508008F903046F0BD30B4B1FBF3FC03FB1C11A2FB59
|
S31508008F90022A1ED98C46B1FBF2F102FB11C31B044F
|
||||||
S31508008FA00C45001BA94103D2ACF1010C80185941AC
|
S31508008FA043EA1043B3FBF2FC02FB1C3380B240EAEF
|
||||||
S31508008FB030BC02460B46604600217047B2F1807FFE
|
S31508008FB00343B3FBF2F002FB103240EA0C400023F5
|
||||||
S31508008FC065D3F0B5B2FA82F7B1FA81F4C7F10F06A4
|
S31508008FC07047022A05D98446B0FBF2F002FB10C2AC
|
||||||
S31508008FD03D1B22FA06F307F1110EF24120355A40DD
|
S31508008FD070474AB105D100F0010249085FEA30003E
|
||||||
S31508008FE0B5F10F07B8D94140C4F12006A040F141B8
|
S31508008FE0704700220023704700F090B90B0002007A
|
||||||
S31508008FF04140B1FBF3FC03FB1C11A2FB0C45001B13
|
S31508008FF0002100207047904271EB030CF6D3B3F5BD
|
||||||
S31508009000A94103D2BCF1010C801859410F2F12D384
|
S31508009000803F2FD2F0B5B3FA83F7B1FA81F4A7F10E
|
||||||
S315080090100F3FC90341EA5041B1FBF3F603FB1611B2
|
S315080090100F0E3D1B5340CEF1200602FA0EF2F34125
|
||||||
S31508009020A2FB0645D4EBC030A94102D2761E8018B1
|
S315080090205340B5F10F0746D80F3C2C444140C4F1D4
|
||||||
S31508009030594146EACC3C07B34140C7F12006B8403F
|
S315080090302006A040F1414140B1FBF3F603FB1611AF
|
||||||
S31508009040F1414140B1FBF3F603FB1611A2FB0645BD
|
S31508009040A2FB0645001BA94102D2761E801859418B
|
||||||
S31508009050001BA94102D2761E8018594180EA0102F6
|
S3150800905080EA010221FA0EF362FA0EF200215A4062
|
||||||
S3150800906021FA0EF3C7F1200462FA0EF20CFA07F0A1
|
S315080090603046F0BD30B4B1FBF3FC03FB1C11A2FB88
|
||||||
S315080090705A402CFA04F13043F0BD80EA010221FA85
|
S315080090700C45001BA94103D2ACF1010C80185941DB
|
||||||
S315080090800EF3002162FA0EF260465A40F0BD8C4695
|
S3150800908030BC02460B46604600217047B2F1807F2D
|
||||||
S31508009090B1FBF2F102FB11C31B0243EA1063B3FBF7
|
S3150800909065D3F0B5B2FA82F7B1FA81F4C7F10F06D3
|
||||||
S315080090A0F2FC02FB1C331B024CEA002043EA106365
|
S315080090A03D1B22FA06F307F1110EF24120355A400C
|
||||||
S315080090B0B3FBF2FC02FB1C331B024CEA002043EA1A
|
S315080090B0B5F10F07B8D94140C4F12006A040F141E7
|
||||||
S315080090C01063B3FBF2FC02FB1C331B024CEA0020C4
|
S315080090C04140B1FBF3FC03FB1C11A2FB0C45001B42
|
||||||
S315080090D043EA1063B3FBF2FC02FB1C324CEA0020A5
|
S315080090D0A94103D2BCF1010C801859410F2F12D3B4
|
||||||
S315080090E00023704710F007003F4B1A684FF6FF0140
|
S315080090E00F3FC90341EA5041B1FBF3F603FB1611E2
|
||||||
S315080090F00A403E4951EA00210A431A6070473A4835
|
S315080090F0A2FB0645D4EBC030A94102D2761E8018E1
|
||||||
S315080091000068C0F302207047020052B2002A04D455
|
S31508009100594146EACC3C07B34140C7F12006B8406E
|
||||||
S315080091100901374A40B2115407E00901354A40B2FD
|
S31508009110F1414140B1FBF3F603FB1611A2FB0645EC
|
||||||
S3150800912010F00F00104400F8041C704710B410F03B
|
S31508009120001BA94102D2761E8018594180EA010225
|
||||||
S315080091300700D0F10703052B01D3042301E0D0F182
|
S3150800913021FA0EF3C7F1200462FA0EF20CFA07F0D0
|
||||||
S315080091400703041D072C01D2002000E0C01E0124DD
|
S315080091405A402CFA04F13043F0BD80EA010221FAB4
|
||||||
S3150800915014FA03F35B1E1940814014FA00F0401E0E
|
S315080091500EF3002162FA0EF260465A40F0BD8C46C4
|
||||||
S315080091601040084310BC704780B5411EB1F1807F9E
|
S31508009160B1FBF2F102FB11C31B0243EA1063B3FB26
|
||||||
S3150800917001D301200EE0401E1F4908600F215FF051
|
S31508009170F2FC02FB1C331B024CEA002043EA106394
|
||||||
S31508009180FF30FFF7C1FF00201C49086007201C4973
|
S31508009180B3FBF2FC02FB1C331B024CEA002043EA49
|
||||||
S315080091900860002002BD80B5FFF7A4FF01BD70B5C9
|
S315080091901063B3FBF2FC02FB1C331B024CEA0020F3
|
||||||
S315080091A004000D0016000020FFF7A9FF3200290071
|
S315080091A043EA1063B3FBF2FC02FB1C324CEA0020D4
|
||||||
S315080091B0FFF7BCFF0100200040B2FFF7A5FF70BD16
|
S315080091B00023704710F007003F4B1A684FF6FF016F
|
||||||
S315080091C080B5FFF7D1FF02BD042805D10C48016818
|
S315080091C00A403E4951EA00210A431A6070473A4864
|
||||||
S315080091D051F00401016004E00948016831F0040116
|
S315080091D00068C0F302207047020052B2002A04D485
|
||||||
S315080091E001607047000000000CED00E00000FA0581
|
S315080091E00901374A40B2115407E00901354A40B22D
|
||||||
S315080091F000E400E018ED00E014E000E018E000E00C
|
S315080091F010F00F00104400F8041C704710B410F06B
|
||||||
S3150800920010E000E080B500F001F801BD704730B409
|
S315080092000700D0F10703052B01D3042301E0D0F1B1
|
||||||
S31508009210002513E050F8042BD30744BFA9F1010336
|
S315080092100703041D072C01D2002000E0C01E01240C
|
||||||
S315080092209A18091F042942F8045BFAD213468C07D8
|
S3150800922014FA03F35B1E1940814014FA00F0401E3D
|
||||||
S3150800923044BF15809B1CC90748BF1D7050F8041B06
|
S315080092301040084310BC704780B5411EB1F1807FCD
|
||||||
S315080092400029E7D130BC7047704730B40EE0026899
|
S3150800924001D301200EE0401E1F4908600F215FF080
|
||||||
S31508009250436802440830DC0744BFA9F10104E31857
|
S31508009250FF30FFF7C1FF00201C49086007201C49A2
|
||||||
S3150800926052F8045B43F8045B091FF9D150F8041B54
|
S315080092600860002002BD80B5FFF7A4FF01BD70B5F8
|
||||||
S315080092700029ECD130BC704738B50400002C01D168
|
S3150800927004000D0016000020FFF7A9FF32002900A0
|
||||||
S315080092800120AEE094F82000002802D1200000F06A
|
S31508009280FFF7BCFF0100200040B2FFF7A5FF70BD45
|
||||||
S3150800929015FA2068006830F0020021680860FFF7B8
|
S3150800929080B5FFF7D1FF02BD042805D10C48016847
|
||||||
S315080092A0EFFA05002068406880070DD5FFF7E8FA51
|
S315080092A051F00401016004E00948016831F0040145
|
||||||
S315080092B0401B0B28F6D3606A50F400306062052024
|
S315080092B001607047000000000CED00E00000FA05B0
|
||||||
S315080092C084F8200001208CE02068006850F0010036
|
S315080092C000E400E018ED00E014E000E018E000E03B
|
||||||
S315080092D021680860FFF7D4FA050020684068C007CF
|
S315080092D010E000E080B500F001F801BD704730B439
|
||||||
S315080092E00DD4FFF7CDFA401B0B28F6D3606A50F46D
|
S315080092E00EE00268436802440830DC0744BFA9F16F
|
||||||
S315080092F000306062052084F82000012071E0207E9D
|
S315080092F00104E31852F8045B43F8045B091FF9D12B
|
||||||
S31508009300012806D12068006850F0800021680860AE
|
S3150800930050F8041B0029ECD130BC704770470000A8
|
||||||
S3150800931005E02068006830F0800021680860607EFB
|
S3150800931038B50400002C01D10120AEE094F82000F5
|
||||||
S31508009320012806D12068006850F0400021680860CE
|
S31508009320002802D1200000F015FA2068006830F005
|
||||||
S3150800933005E02068006830F0400021680860A07EDB
|
S31508009330020021680860FFF7E3FA05002068406824
|
||||||
S31508009340012806D12068006850F0200021680860CE
|
S3150800934080070DD5FFF7DCFA401B0B28F6D3606AB9
|
||||||
S3150800935005E02068006830F0200021680860E07E9B
|
S3150800935050F400306062052084F8200001208CE07B
|
||||||
S31508009360012806D12068006830F0100021680860DE
|
S315080093602068006850F0010021680860FFF7C8FA15
|
||||||
S3150800937005E02068006850F0100021680860207F2A
|
S31508009370050020684068C0070DD4FFF7C1FA401BF6
|
||||||
S31508009380012806D12068006850F0080021680860A6
|
S315080093800B28F6D3606A50F400306062052084F832
|
||||||
S3150800939005E02068006830F0080021680860607FF2
|
S315080093902000012071E0207E012806D1206800689F
|
||||||
S315080093A0012806D12068006850F00400216808608A
|
S315080093A050F080002168086005E02068006830F009
|
||||||
S315080093B005E02068006830F0040021680860A168AC
|
S315080093B0800021680860607E012806D12068006860
|
||||||
S315080093C0E068014320690143606901436068401E03
|
S315080093C050F040002168086005E02068006830F029
|
||||||
S315080093D001432068C16100206062012084F82000F2
|
S315080093D0400021680860A07E012806D12068006840
|
||||||
S315080093E0002032BD30B4026890F820201300DBB2AA
|
S315080093E050F020002168086005E02068006830F029
|
||||||
S315080093F0012B03D0D2B2022A40F07F80594AD2F814
|
S315080093F0200021680860E07E012806D12068006800
|
||||||
S31508009400000250F00100C2F80002D2F8000230F45F
|
S3150800940030F010002168086005E02068006850F018
|
||||||
S315080094107C50C2F80002D2F800024B6A50EA0320D8
|
S31508009410100021680860207F012806D120680068AE
|
||||||
S31508009420C2F8000201200B7D13F01F0310FA03F3A4
|
S3150800942050F008002168086005E02068006830F000
|
||||||
S31508009430D2F81C029843C2F81C02C869002816D143
|
S31508009430080021680860607F012806D12068006856
|
||||||
S31508009440D2F80C029843C2F80C02486902EBC00035
|
S3150800944050F004002168086005E02068006830F0E4
|
||||||
S31508009450CC684D68C5EA0444C0F84042486902EB46
|
S31508009450040021680860A168E068014320690143A7
|
||||||
S31508009460C0008C680D68C5EA0444C0F84442C8695F
|
S31508009460606901436068401E01432068C1610020AD
|
||||||
S31508009470012816D1D2F80C021843C2F80C02486922
|
S315080094706062012084F82000002032BD30B4026802
|
||||||
S3150800948002EBC0000C684D68C5EA0444C0F84042C7
|
S3150800948090F820201300DBB2012B03D0D2B2022AB7
|
||||||
S31508009490486902EBC0008C68CD68C5EA0444C0F888
|
S3150800949040F07F80594AD2F8000250F00100C2F825
|
||||||
S315080094A044428869002805D1D2F804029843C2F8D4
|
S315080094A00002D2F8000230F47C50C2F80002D2F86A
|
||||||
S315080094B0040204E0D2F804021843C2F80402086958
|
S315080094B000024B6A50EA0320C2F8000201200B7D25
|
||||||
S315080094C0002805D1D2F814029843C2F8140204E021
|
S315080094C013F01F0310FA03F3D2F81C029843C2F8EC
|
||||||
S315080094D0D2F814021843C2F81402086A012804D103
|
S315080094D01C02C869002816D1D2F80C029843C2F8B3
|
||||||
S315080094E0D2F81C020343C2F81C32D2F80002400824
|
S315080094E00C02486902EBC000CC684D68C5EA044422
|
||||||
S315080094F04000C2F80002002004E0416A51F48021CD
|
S315080094F0C0F84042486902EBC0008C680D68C5EAAE
|
||||||
S315080095004162012030BC704738B5040094F8200049
|
S315080095000444C0F84442C869012816D1D2F80C02AE
|
||||||
S31508009510012821D1022084F820002068006840082C
|
S315080095101843C2F80C02486902EBC0000C684D6893
|
||||||
S31508009520400021680860FFF7ABF90500206840682D
|
S31508009520C5EA0444C0F84042486902EBC0008C68AA
|
||||||
S31508009530C0070DD5FFF7A4F9401B0B28F6D3606AC0
|
S31508009530CD68C5EA0444C0F844428869002805D1C4
|
||||||
S3150800954050F400306062052084F82000012008E00D
|
S31508009540D2F804029843C2F8040204E0D2F80402EE
|
||||||
S3150800955000206062002004E0606A50F40020606227
|
S315080095501843C2F804020869002805D1D2F8140293
|
||||||
S31508009560012032BD0064004030B490F82040250048
|
S315080095609843C2F8140204E0D2F814021843C2F869
|
||||||
S31508009570EDB2012D03D0E4B2022C40F09880002908
|
S315080095701402086A012804D1D2F81C020343C2F86F
|
||||||
S315080095800AD10468E46814F0030F10D1416A51F453
|
S315080095801C32D2F8000240084000C2F8000200204F
|
||||||
S315080095900011416201208FE00468246914F0030F6A
|
S3150800959004E0416A51F480214162012030BC7047E1
|
||||||
S315080095A005D1416A51F400114162012084E0046842
|
S315080095A038B5040094F82000012821D1022084F857
|
||||||
S315080095B00D012C44D4F8B04114F004049460946866
|
S315080095B02000206800684008400021680860FFF71E
|
||||||
S315080095C0002C07D104680D012C44D4F8B041640D71
|
S315080095C09FF9050020684068C0070DD5FFF798F990
|
||||||
S315080095D0146006E004680D012C44D4F8B041E40890
|
S315080095D0401B0B28F6D3606A50F400306062052001
|
||||||
S315080095E0546004680D012C44D4F8B041C4F3400417
|
S315080095E084F82000012008E000206062002004E0E2
|
||||||
S315080095F0D46004680D012C44D4F8B44114F00F0467
|
S315080095F0606A50F400206062012032BD00640040B9
|
||||||
S31508009600146104680D012C44D4F8B441C4F307244A
|
S3150800960030B490F820402500EDB2012D03D0E4B225
|
||||||
S31508009610946104680D012C44D4F8B441240C5461B7
|
S31508009610022C40F0988000290AD10468E46814F006
|
||||||
S3150800962002680C012244D2F8B8211A7002680C01AB
|
S31508009620030F10D1416A51F40011416201208FE005
|
||||||
S315080096302244D2F8B821120A5A7002680C01224450
|
S315080096300468246914F0030F05D1416A51F4001136
|
||||||
S31508009640D2F8B821120C9A7002680C012244D2F89A
|
S315080096404162012084E004680D012C44D4F8B0413D
|
||||||
S31508009650B821120EDA7002680C012244D2F8BC2135
|
S3150800965014F0040494609468002C07D104680D0182
|
||||||
S315080096601A7102680C012244D2F8BC21120A5A71F6
|
S315080096602C44D4F8B041640D146006E004680D017A
|
||||||
S3150800967002680C012244D2F8BC21120C9A710268C5
|
S315080096702C44D4F8B041E408546004680D012C4425
|
||||||
S315080096800C012244D2F8BC21120EDA71002906D147
|
S31508009680D4F8B04114F00204D46004680D012C44E7
|
||||||
S315080096900168C96851F020010068C16005E00168E9
|
S31508009690D4F8B44114F00F04146104680D012C4485
|
||||||
S315080096A0096951F0200100680161002004E0416A5F
|
S315080096A0D4F8B441C4F30724946104680D012C442A
|
||||||
S315080096B051F480214162012030BC70477047000098
|
S315080096B0D4F8B441240C546102680C012244D2F84F
|
||||||
S315080096C0BFF34F8FB6490A6812F4E062B548024301
|
S315080096C0B8211A7002680C012244D2F8B821120A8D
|
||||||
S315080096D00A60BFF34F8F00BFFDE780B500F00DF8B5
|
S315080096D05A7002680C012244D2F8B821120C9A700A
|
||||||
S315080096E000F0CDF801BD80B500F021F800F02AF9A8
|
S315080096E002680C012244D2F8B821120EDA70026818
|
||||||
S315080096F001BD80B5FFF7E4FF01BD80B5AA48AB49B7
|
S315080096F00C012244D2F8BC211A7102680C012244DA
|
||||||
S3150800970001604FF461414160002181600021C16020
|
S31508009700D2F8BC21120A5A7102680C012244D2F816
|
||||||
S31508009710002101610C214161002181610021C161A3
|
S31508009710BC21120C9A7102680C012244D2F8BC21B1
|
||||||
S315080097200021016200214162FEF750FD01BD70B5BE
|
S31508009720120EDA71002906D10168C96851F02001C4
|
||||||
S315080097309F4C2078002815D19E4D280000F037F858
|
S315080097300068C16005E00168096951F02001006808
|
||||||
S31508009740012833D12878002830D0287841282DDA06
|
S315080097400161002004E0416A51F480214162012050
|
||||||
S3150800975000F053F9984908600120207000209749C5
|
S3150800975030BC704770470000BFF34F8FB6490A68A0
|
||||||
S31508009760087023E0954D934E28783044401C00F04D
|
S3150800976012F4E062B54802430A60BFF34F8F00BFA8
|
||||||
S315080097701EF8012811D12878401C287028783178DD
|
S31508009770FDE780B500F00DF800F0CDF801BD80B525
|
||||||
S31508009780884213D1002020707078FF280ED12878DF
|
S3150800978000F021F800F02AF901BD80B5FFF7E4FFE3
|
||||||
S3150800979002280BD1FFF7ADFF08E000F02EF9864945
|
S3150800979001BD80B5AA48AB4901604FF461414160FB
|
||||||
S315080097A009686431814201D20020207070BD80B5FD
|
S315080097A0002181600021C160002101610C21416115
|
||||||
S315080097B00100002301227C48FEF745FDC0B20028BF
|
S315080097B0002181610021C16100210162002141620D
|
||||||
S315080097C001D1012000E0002002BDF8B504000D001B
|
S315080097C0FEF704FD01BD70B59F4C2078002815D121
|
||||||
S315080097D016001F00FFF718FB4FF47A71B0FBF1F182
|
S315080097D09E4D280000F037F8012833D12878002854
|
||||||
S315080097E0002200E0521C1000C0B2122845D2744B69
|
S315080097E030D0287841282DDA00F053F998490860D6
|
||||||
S315080097F0200080B294465FFA8CFC13F81CC096468B
|
S315080097F00120207000209749087023E0954D934E6C
|
||||||
S315080098005FFA8EFE03EB4E0E9EF801E01EEB0C0C83
|
S3150800980028783044401C00F01EF8012811D1287829
|
||||||
S315080098101CF1010C0CFB00F0B1FBF0FC00FB1C106A
|
S31508009810401C287028783178884213D1002020709F
|
||||||
S315080098200028DFD1200080B294465FFA8CFC13F83A
|
S315080098207078FF280ED1287802280BD1FFF7ADFFF4
|
||||||
S315080098301CC096465FFA8EFE03EB4E0E9EF801E0BC
|
S3150800983008E000F02EF9864909686431814201D2B0
|
||||||
S315080098401EEB0C0C1CF1010C0CFB00F0B1FBF0F04C
|
S315080098400020207070BD80B50100002301227C48ED
|
||||||
S31508009850288028880028C5D0288840F2014C604511
|
S31508009850FEF7F9FCC0B2002801D1012000E0002083
|
||||||
S31508009860C0DA1000C0B213F810003070D2B203EBA1
|
S3150800986002BDF8B504000D0016001F00FFF732FB15
|
||||||
S31508009870420040783870012000E00020F2BD30B583
|
S315080098704FF47A71B0FBF1F1002200E0521C10009F
|
||||||
S315080098808BB00020ADF8020000208DF80100002002
|
S31508009880C0B2122845D2744B200080B294465FFAC3
|
||||||
S315080098908DF8000040F267656B460DF101020DF187
|
S315080098908CFC13F81CC096465FFA8EFE03EB4E0E40
|
||||||
S315080098A002014FF4FA70FFF790FF464C46482060D5
|
S315080098A09EF801E01EEB0C0C1CF1010C0CFB00F001
|
||||||
S315080098B000202076002060760020A0760120E07641
|
S315080098B0B1FBF0FC00FB1C100028DFD1200080B2B1
|
||||||
S315080098C000202077002060770020A0600020E0605C
|
S315080098C094465FFA8CFC13F81CC096465FFA8EFE27
|
||||||
S315080098D09DF80100401E000420619DF80000401E0E
|
S315080098D003EB4E0E9EF801E01EEB0C0C1CF1010C7E
|
||||||
S315080098E000056061BDF8020060602000FFF7C4FC57
|
S315080098E00CFB00F0B1FBF0F0288028880028C5D0D2
|
||||||
S315080098F0002D02D46D05354805E025F00045ED003C
|
S315080098F0288840F2014C6045C0DA1000C0B213F85F
|
||||||
S3150800990055F00405324800210691002107910121EE
|
S3150800990010003070D2B203EB420040783870012064
|
||||||
S3150800991008912900090C0191ADB202950100090CC4
|
S3150800991000E00020F2BD30B58BB00020ADF80200A3
|
||||||
S31508009920039180B2049000200590012009900E2032
|
S3150800992000208DF8010000208DF8000040F26765E0
|
||||||
S315080099300A9001A92000FFF755FD2000FFF7E4FD76
|
S315080099306B460DF101020DF102014FF4FA70FFF7C3
|
||||||
S315080099400BB030BD30B589B040F2676400256B4670
|
S3150800994090FF464C4648206000202076002060762E
|
||||||
S3150800995002AA00211B48FFF707FE00281ED1002C8B
|
S315080099500020A0760120E07600202077002060779E
|
||||||
S3150800996007D40298A0420DD1049800280AD10125EF
|
S315080099600020A0600020E0609DF80100401E000471
|
||||||
S3150800997008E024F000440398A04203D10498042880
|
S3150800997020619DF80000401E00056061BDF80200E8
|
||||||
S3150800998000D10125EDB2012D08D19DF80000FF2870
|
S3150800998060602000FFF7C4FC002D02D46D05354841
|
||||||
S3150800999004D10698022801D1FFF7ABFE09B030BD05
|
S3150800999005E025F00045ED0055F0040532480021A4
|
||||||
S315080099A00CED00E00400FA050C0000200048004019
|
S315080099A0069100210791012108912900090C0191CE
|
||||||
S315080099B0050100208C000020F8000020040100208A
|
S315080099B0ADB202950100090C039180B20490002013
|
||||||
S315080099C078A00008D0000020006400400400E0FFF2
|
S315080099C00590012009900E200A9001A92000FFF7B2
|
||||||
S315080099D0FCFF1F0080B5FFF714FA4FF47A71B0FB4D
|
S315080099D055FD2000FFF7E4FD0BB030BD30B589B06A
|
||||||
S315080099E0F1F0FFF7EDFB0420FFF7EEFB0022002164
|
S315080099E040F2676400256B4602AA00211B48FFF770
|
||||||
S315080099F05FF0FF30FFF7D3FB01BD80B5FEF740FFF0
|
S315080099F007FE00281ED1002C07D40298A0420DD1DC
|
||||||
S31508009A0002BD80B500F004F8FFF7FCFB01BD0000BD
|
S31508009A00049800280AD1012508E024F000440398A8
|
||||||
S31508009A1003480168034A127889180160704700BF35
|
S31508009A10A04203D10498042800D10125EDB2012DF6
|
||||||
S31508009A200001002008000020F8B4002200220022CD
|
S31508009A2008D19DF80000FF2804D10698022801D124
|
||||||
S31508009A300022002337E00A2704E0DFF8F0219042ED
|
S31508009A30FFF7ABFE09B030BD0CED00E00400FA05F7
|
||||||
S31508009A40F9D10927FFB213F00302D2B29200974068
|
S31508009A400C00002000480040050100208C00002082
|
||||||
S31508009A503E431A00920845F82260DFF8D4512A6876
|
S31508009A50F800002004010020A4A00008D00000207F
|
||||||
S31508009A60A2434E68F60300D522432A60DFF8C451A4
|
S31508009A60006400400400E0FFFCFF1F0080B5FFF71C
|
||||||
S31508009A702A68A2434E68B60300D522432A60DFF857
|
S31508009A702EFA4FF47A71B0FBF1F0FFF709FC0420D7
|
||||||
S31508009A80B8512A68A2434E68F60200D522432A60D6
|
S31508009A80FFF70AFC002200215FF0FF30FFF7EFFB2B
|
||||||
S31508009A90DFF8A8512A68A2434E68B60201D51443D6
|
S31508009A9001BD80B5FEF734FF02BD80B500F004F8BD
|
||||||
S31508009AA022002A605B1C102B80F0B380012515FA72
|
S31508009AA0FFF718FC01BD000003480168034A127855
|
||||||
S31508009AB003F20C6814409442F4D14A68022A02D090
|
S31508009AB089180160704700BF0001002008000020D7
|
||||||
S31508009AC04A68122A17D11A00D20800EB8202166ACF
|
S31508009AC0F8B40022002200220022002337E00A27E9
|
||||||
S31508009AD00F2713F00702D2B292009740BE430F69D0
|
S31508009AD004E0DFF8E4219042F9D10927FFB213F038
|
||||||
S31508009AE013F00702D2B2920097403E431A00D208FA
|
S31508009AE00302D2B2920097403E431A00920845F804
|
||||||
S31508009AF000EB82021662076803261A00D2B25200E9
|
S31508009AF02260DFF8C8512A68A2434E68F60300D5EB
|
||||||
S31508009B0016FA02F2974391F804C01CF0030C1A00E7
|
S31508009B0022432A60DFF8B8512A68A2434E68B60392
|
||||||
S31508009B10D2B252001CFA02FC5CEA070707604A68E0
|
S31508009B1000D522432A60DFF8AC512A68A2434E6872
|
||||||
S31508009B20012A08D04A68022A05D04A68112A02D0B2
|
S31508009B20F60200D522432A60DFF89C512A68A24330
|
||||||
S31508009B304A68122A19D187681A00D2B2520016FA50
|
S31508009B304E68B60201D5144322002A605B1C102B1E
|
||||||
S31508009B4002F29743D1F80CC01A00D2B252001CFA9E
|
S31508009B4080F0AD80012515FA03F20C6814409442A2
|
||||||
S31508009B5002FC5CEA0707876042689D40AA434D6895
|
S31508009B50F4D14A68012A08D04A68022A05D04A6818
|
||||||
S31508009B60C5F300159D402A434260C5681A00D2B263
|
S31508009B60112A02D04A68122A16D1866803271A00D3
|
||||||
S31508009B7052009640B5438E681A00D2B252009640FB
|
S31508009B70D2B252009740BE43CF681A00D2B2520002
|
||||||
S31508009B803543C5604A68D2008CD52D4A156855F408
|
S31508009B8097403E43866042689D40AA434D68C5F3A8
|
||||||
S31508009B9080451560126812F480420092009A294D99
|
S31508009B9000159D402A434260C66803251A00D2B2C2
|
||||||
S31508009BA01A00920855F822600F2713F00302D2B262
|
S31508009BA0520015FA02F296438F681A00D2B2520092
|
||||||
S31508009BB092009740BE43244A904201D1002741E7CC
|
S31508009BB097403E43C6604A68022A02D04A68122A7B
|
||||||
S31508009BC0224A904201D101273CE7214A904201D11D
|
S31508009BC017D11A00D20800EB8202166A0F2713F083
|
||||||
S31508009BD0022737E71F4A904201D1032732E71E4A78
|
S31508009BD00702D2B292009740BE430F6913F00702FC
|
||||||
S31508009BE0904201D104272DE71C4A904201D105274E
|
S31508009BE0D2B2920097403E431A00D20800EB820296
|
||||||
S31508009BF028E71B4A904201D1062723E7194A9042D3
|
S31508009BF0166206681A00D2B252009540AE430D7935
|
||||||
S31508009C0001D107271EE7184A90427FF416AF0827A6
|
S31508009C0015F003051A00D2B2520095402E4306609D
|
||||||
S31508009C1018E7F1BC7047D2B2002A02D089B2816136
|
S31508009C104A68D20092D52D4A156855F480451560D4
|
||||||
S31508009C2002E089B2090481617047000000240240FD
|
S31508009C20126812F480420092009A294D1A0092088E
|
||||||
S31508009C30003C0140043C0140083C01400C3C01400A
|
S31508009C3055F822600F2713F00302D2B2920097401C
|
||||||
S31508009C40443802400838014000000240000402403F
|
S31508009C40BE43244A904201D1002747E7224A904260
|
||||||
S31508009C5000080240000C02400010024000140240B6
|
S31508009C5001D1012742E7214A904201D102273DE777
|
||||||
S31508009C6000180240001C02400020024080B500F0A7
|
S31508009C601F4A904201D1032738E71E4A904201D184
|
||||||
S31508009C7007F8FFF732FD00F010F9FFF734FDFAE7B1
|
S31508009C70042733E71C4A904201D105272EE71B4AE1
|
||||||
S31508009C8080B500F009F800F02DF900F009F8FFF7A3
|
S31508009C80904201D1062729E7194A904201D10727B0
|
||||||
S31508009C90A1FE00F0FBF801BD7448754908607047DD
|
S31508009C9024E7184A90427FF41CAF08271EE7F1BC58
|
||||||
S31508009CA080B592B03022002106A800F026F91422C9
|
S31508009CA07047D2B2002A02D089B2816102E089B235
|
||||||
S31508009CB0002101A800F021F96E48016851F0805191
|
S31508009CB0090481617047000000240240003C01400D
|
||||||
S31508009CC00160006810F08050009000986A480168AA
|
S31508009CC0043C0140083C01400C3C01404438024039
|
||||||
S31508009CD051F440410160006810F44040009000983B
|
S31508009CD00838014000000240000402400008024023
|
||||||
S31508009CE0012006905FF4A020079002200C905FF4F4
|
S31508009CE0000C024000100240001402400018024016
|
||||||
S31508009CF080000D9008200E904FF4D8700F90022027
|
S31508009CF0001C02400020024080B500F007F8FFF77C
|
||||||
S31508009D0010900220119006A8FEF7C0FD002800D08A
|
S31508009D0038FD00F010F9FFF73AFDFAE780B500F0E4
|
||||||
S31508009D10FEE700F0FDF8002800D0FEE70F200190CE
|
S31508009D1009F800F02DF900F009F8FFF7A7FE00F0A2
|
||||||
S31508009D2002200290002003904FF4A05004904FF4B4
|
S31508009D20FBF801BD744875490860704780B592B064
|
||||||
S31508009D3080500590072101A8FEF784FF002800D06F
|
S31508009D303022002106A800F026F91422002101A8E5
|
||||||
S31508009D40FEE713B000BD38B586B04A48016851F041
|
S31508009D4000F021F96E48016851F080510160006801
|
||||||
S31508009D5080510160016811F08051059105994749C4
|
S31508009D5010F08050009000986A48016851F440411C
|
||||||
S31508009D600A6852F480420A60096811F48041059134
|
S31508009D600160006810F440400090009801200690B9
|
||||||
S31508009D70059943490A6852F002020A600A6812F015
|
S31508009D705FF4A020079002200C905FF480000D90FD
|
||||||
S31508009D8002020592059A0A6852F008020A600968F2
|
S31508009D8008200E904FF4D8700F90022010900220F1
|
||||||
S31508009D9011F0080105910599016851F480210160C7
|
S31508009D90119006A8FEF7BAFD002800D0FEE700F0ED
|
||||||
S31508009DA0016811F4802105910599016851F0007147
|
S31508009DA0FDF8002800D0FEE70F200190022002905F
|
||||||
S31508009DB00160006810F00070059005980320FFF711
|
S31508009DB0002003904FF4A05004904FF48050059073
|
||||||
S31508009DC0EAF9002200217FF00B00FFF7E8F90022EC
|
S31508009DC0072101A8FEF7A3FF002800D0FEE713B07D
|
||||||
S31508009DD000217FF00A00FFF7E2F9002200217FF058
|
S31508009DD000BD38B586B04A48016851F08051016027
|
||||||
S31508009DE00900FFF7DCF9002200217FF00400FFF7E5
|
S31508009DE0016811F080510591059947490A6852F4AE
|
||||||
S31508009DF0D6F9002200217FF00300FFF7D0F90022F0
|
S31508009DF080420A60096811F4804105910599434932
|
||||||
S31508009E0000217FF00100FFF7CAF9002200215FF068
|
S31508009E000A6852F002020A600A6812F00202059213
|
||||||
S31508009E10FF30FFF7C4F98020009001200190002050
|
S31508009E10059A0A6852F008020A60096811F00801F2
|
||||||
S31508009E20029000200390174C69462000FFF7FCFDBE
|
S31508009E2005910599016851F480210160016811F4D2
|
||||||
S31508009E304FF44075009502200190002002900320FF
|
S31508009E30802105910599016851F00071016000685B
|
||||||
S31508009E4003900720049069460F48FFF7EDFD00953B
|
S31508009E4010F00070059005980320FFF70CFA002221
|
||||||
S31508009E50022001900020029003200390092004901C
|
S31508009E5000217FF00B00FFF70AFA002200217FF0AD
|
||||||
S31508009E6069462000FFF7E0FD07B030BD0080000816
|
S31508009E600A00FFF704FA002200217FF00900FFF735
|
||||||
S31508009E7008ED00E0403802400070004044380240D7
|
S31508009E70FEF9002200217FF00400FFF7F8F900221E
|
||||||
S31508009E803038024000040240000C024080B500222F
|
S31508009E8000217FF00300FFF7F2F9002200217FF09E
|
||||||
S31508009E9080211148FFF7BFFE01BD38B5FFF7ADFDBC
|
S31508009E900100FFF7ECF9002200215FF0FF30FFF721
|
||||||
S31508009EA004000E4D2868201AB0F5FA7F13D30C4922
|
S31508009EA0E6F9802000900120019000200290002011
|
||||||
S31508009EB00878002807D10120087001228021064869
|
S31508009EB00390174C69462000FFF702FE4FF44075E1
|
||||||
S31508009EC0FFF7A9FE06E0002008700022802102485C
|
S31508009EC000950220019000200290032003900720AD
|
||||||
S31508009ED0FFF7A1FE2C6031BD00040240FC00002003
|
S31508009ED0049069460F48FFF7F3FD009502200190AC
|
||||||
S31508009EE00601002080B50320FFF755F90020FEF78C
|
S31508009EE00020029003200390092004906946200070
|
||||||
S31508009EF0BBFFFFF728FF002002BD10B50446104639
|
S31508009EF0FFF7E6FD07B030BD0080000808ED00E07A
|
||||||
S31508009F000A460146204600F03FF8204610BD0000EC
|
S31508009F004038024000700040443802403038024071
|
||||||
S31508009F107CB500201B48016851F08051016000683B
|
S31508009F1000040240000C024080B50022802111484E
|
||||||
S31508009F2010F0805000900098154E306850F480303C
|
S31508009F20FFF7BFFE01BD38B5FFF7B3FD04000E4DC0
|
||||||
S31508009F303060FEF7A5FC0500104C2068C00308D465
|
S31508009F302868201AB0F5FA7F13D30C490878002848
|
||||||
S31508009F40FEF79EFC401B40F2E9318842F4D3032019
|
S31508009F4007D101200870012280210648FFF7A9FEE3
|
||||||
S31508009F5013E0306850F400303060FEF791FC0500DD
|
S31508009F5006E000200870002280210248FFF7A1FED3
|
||||||
S31508009F602068800308D4FEF78BFC401B40F2E931D9
|
S31508009F602C6031BD00040240FC00002006010020E0
|
||||||
S31508009F708842F5D3032000E0002076BD0470004037
|
S31508009F7080B50320FFF777F90020FEF7DDFFFFF72E
|
||||||
S31508009F80007000404038024062F30F2262F31F421D
|
S31508009F8028FF002002BD10B5044610460A460146C1
|
||||||
S31508009F90401810F0030308D0C91A1FD3DB0748BFBF
|
S31508009F90204600F03FF8204610BD00007CB50020A2
|
||||||
S31508009FA000F8012D28BF20F8022D130030B41446FE
|
S31508009FA01B48016851F080510160006810F080502C
|
||||||
S31508009FB01546103928BF20E93C00FAD8490728BFBA
|
S31508009FB000900098154E306850F480303060FEF7F7
|
||||||
S31508009FC020E90C0048BF40F8042D890028BF20F876
|
S31508009FC09FFC0500104C2068C00308D4FEF798FCD7
|
||||||
S31508009FD0022D48BF00F8012D30BC7047C91818BFBC
|
S31508009FD0401B40F2E9318842F4D3032013E030688D
|
||||||
S31508009FE000F8012DCB0728BF00F8012D70470000A7
|
S31508009FE050F400303060FEF78BFC050020688003D3
|
||||||
S31508009FF00F48016851F4700101600E49086850F075
|
S31508009FF008D4FEF785FC401B40F2E9318842F5D3C8
|
||||||
S3150800A0000100086000200C4A10600A680B480240EC
|
S3150800A000032000E0002076BD047000400070004088
|
||||||
S3150800A0100A600B480B4A1060086830F48020086014
|
S3150800A0104038024062F30F2262F31F42401810F0E4
|
||||||
S3150800A0200020094908605FF0006008490860704729
|
S3150800A020030308D0C91A1FD3DB0748BF00F8012D60
|
||||||
S3150800A03088ED00E00038024008380240FFFFF6FECF
|
S3150800A03028BF20F8022D130030B4144615461039EF
|
||||||
S3150800A04010300024043802400C38024008ED00E0C5
|
S3150800A04028BF20E93C00FAD8490728BF20E90C00B8
|
||||||
S3150800A05010B5074979441831064C7C44163404E097
|
S3150800A05048BF40F8042D890028BF20F8022D48BFC4
|
||||||
S3150800A0600A68081D114488470146A142F8D110BD67
|
S3150800A06000F8012D30BC7047C91818BF00F8012D3B
|
||||||
S3150800A07050000000700000000502060206030703F0
|
S3150800A070CB0728BF00F8012D7047000010B5074927
|
||||||
S3150800A0800803090309040A040B040C040C050D054E
|
S3150800A08079441831064C7C44163404E00A68081DE5
|
||||||
S3150800A0900E050F050F061006100710084EF6885114
|
S3150800A090114488470146A142F8D110BD500000007E
|
||||||
S3150800A0A0CEF20001086840F470000860BFF34F8FD5
|
S3150800A0A070000000050206020603070308030903F9
|
||||||
S3150800A0B0BFF36F8F4FF00070E1EE100A7047000093
|
S3150800A0B009040A040B040C040C050D050E050F050E
|
||||||
S3150800A0C04FF1FFFFFC0000000C000020000000001C
|
S3150800A0C00F061006100710084EF68851CEF200014A
|
||||||
S3150800A0D07BF1FFFF0C000000880000000000002054
|
S3150800A0D0086840F470000860BFF34F8FBFF36F8FB6
|
||||||
S3150800A0E00000000000F00DF8002801D0FFF7B0FFCF
|
S3150800A0E04FF00070E1EE100A70470000DBE7FFFF53
|
||||||
S3150800A0F0AFF300800020AFF30080FFF7B7FD00F054
|
S3150800A0F0FC0000000C00002000000000E3F1FFFF58
|
||||||
S3150800A10002F80120704700F001B8000007463846FB
|
S3150800A1000C000000A4000000000000200000000071
|
||||||
S3150800A11000F002F8FBE7000080B5AFF30080024AC2
|
S3150800A11000F00DF8002801D0FFF7B0FFAFF300807C
|
||||||
S3150800A12011001820ABBEFBE7260002000248854650
|
S3150800A1200020AFF30080FFF7E7FD00F002F80120FA
|
||||||
S3150800A130024880470248004708050020F19F0008AA
|
S3150800A130704700F001B800000746384600F002F8FC
|
||||||
S3150800A14055A10008000000000000000001020304F9
|
S3150800A140FBE7000080B5AFF30080024A1100182033
|
||||||
S3150800A15006070809AFF30080FFF7A0FFFFF7C2FF65
|
S3150800A150ABBEFBE7260002000448016851F4700113
|
||||||
S3150800A160100000000024F4000100000000000000B8
|
S3150800A16001605FF0006002490860704788ED00E012
|
||||||
S3150800A17001020304FFF7FEBFFFF7FEBFFFF7FEBFAE
|
S3150800A17008ED00E002488546024880470248004745
|
||||||
S3150800A180FFF7FEBFFFF7FEBFFFF7FEBFFFF7FEBFF5
|
S3150800A1800805002059A100089DA10008000000004C
|
||||||
S3150800A190FFF7FEBFFFF7FEBFFFF7FEBFFFF7FEBFE5
|
S3150800A190000000000102030406070809AFF3008067
|
||||||
S3150800A1A0FFF7FEBFFFF7FEBFFFF7FEBFFFF7FEBFD5
|
S3150800A1A0FFF792FFFFF7B4FF100000000024F40049
|
||||||
S3150800A1B0FFF7FEBFFFF7FEBFFFF7FEBFFFF7FEBFC5
|
S3150800A1B0010000000000000001020304FFF7FEBFD3
|
||||||
S3150800A1C0FFF7FEBFFFF7FEBFFFF7FEBFFFF7FEBFB5
|
S3150800A1C0FFF7FEBFFFF7FEBFFFF7FEBFFFF7FEBFB5
|
||||||
S3150800A1D0FFF7FEBFFFF7FEBFFFF7FEBFFFF7FEBFA5
|
S3150800A1D0FFF7FEBFFFF7FEBFFFF7FEBFFFF7FEBFA5
|
||||||
S3150800A1E0FFF7FEBFFFF7FEBFFFF7FEBFFFF7FEBF95
|
S3150800A1E0FFF7FEBFFFF7FEBFFFF7FEBFFFF7FEBF95
|
||||||
|
@ -560,5 +560,9 @@ S3150800A2D0FFF7FEBFFFF7FEBFFFF7FEBFFFF7FEBFA4
|
||||||
S3150800A2E0FFF7FEBFFFF7FEBFFFF7FEBFFFF7FEBF94
|
S3150800A2E0FFF7FEBFFFF7FEBFFFF7FEBFFFF7FEBF94
|
||||||
S3150800A2F0FFF7FEBFFFF7FEBFFFF7FEBFFFF7FEBF84
|
S3150800A2F0FFF7FEBFFFF7FEBFFFF7FEBFFFF7FEBF84
|
||||||
S3150800A300FFF7FEBFFFF7FEBFFFF7FEBFFFF7FEBF73
|
S3150800A300FFF7FEBFFFF7FEBFFFF7FEBFFFF7FEBF73
|
||||||
S30D0800A310FFF7FEBFFFF7FEBFD1
|
S3150800A310FFF7FEBFFFF7FEBFFFF7FEBFFFF7FEBF63
|
||||||
S7050800A155FC
|
S3150800A320FFF7FEBFFFF7FEBFFFF7FEBFFFF7FEBF53
|
||||||
|
S3150800A330FFF7FEBFFFF7FEBFFFF7FEBFFFF7FEBF43
|
||||||
|
S3150800A340FFF7FEBFFFF7FEBFFFF7FEBFFFF7FEBF33
|
||||||
|
S3150800A350FFF7FEBFFFF7FEBFFFF7FEBFFFF7FEBF23
|
||||||
|
S7050800A19DB4
|
||||||
|
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue