view Common/Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_ll_exti.c @ 970:3123aa8723fd
Evo_2_23
Old / new BT module communication:
The old / new BT module do have a sligthly different command set. To keep them compatible a function has been added which returns, based on the HW identification, the command string which matches to the module. In case a command is not supported the value 0 is returned and the calling function may react. E.g. with skipping of configuration steps like it is done now for the new module.
author
Ideenmodellierer
date
Sun, 19 Jan 2025 20:55:30 +0100 (2 months ago)
parents
c78bcbd5deda
children
line source
/**+ −
******************************************************************************+ −
* @file stm32f4xx_ll_exti.c+ −
* @author MCD Application Team+ −
* @brief EXTI LL module driver.+ −
******************************************************************************+ −
* @attention+ −
*+ −
* <h2><center>© COPYRIGHT(c) 2017 STMicroelectronics</center></h2>+ −
*+ −
* Redistribution and use in source and binary forms, with or without modification,+ −
* are permitted provided that the following conditions are met:+ −
* 1. Redistributions of source code must retain the above copyright notice,+ −
* this list of conditions and the following disclaimer.+ −
* 2. Redistributions in binary form must reproduce the above copyright notice,+ −
* this list of conditions and the following disclaimer in the documentation+ −
* and/or other materials provided with the distribution.+ −
* 3. Neither the name of STMicroelectronics nor the names of its contributors+ −
* may be used to endorse or promote products derived from this software+ −
* without specific prior written permission.+ −
*+ −
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"+ −
* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE+ −
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE+ −
* DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE+ −
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL+ −
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR+ −
* SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER+ −
* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,+ −
* OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE+ −
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.+ −
*+ −
******************************************************************************+ −
*/+ −
#if defined(USE_FULL_LL_DRIVER)+ −
+ −
/* Includes ------------------------------------------------------------------*/+ −
#include "stm32f4xx_ll_exti.h"+ −
#ifdef USE_FULL_ASSERT+ −
#include "stm32_assert.h"+ −
#else+ −
#define assert_param(expr) ((void)0U)+ −
#endif+ −
+ −
/** @addtogroup STM32F4xx_LL_Driver+ −
* @{+ −
*/+ −
+ −
#if defined (EXTI)+ −
+ −
/** @defgroup EXTI_LL EXTI+ −
* @{+ −
*/+ −
+ −
/* Private types -------------------------------------------------------------*/+ −
/* Private variables ---------------------------------------------------------*/+ −
/* Private constants ---------------------------------------------------------*/+ −
/* Private macros ------------------------------------------------------------*/+ −
/** @addtogroup EXTI_LL_Private_Macros+ −
* @{+ −
*/+ −
+ −
#define IS_LL_EXTI_LINE_0_31(__VALUE__) (((__VALUE__) & ~LL_EXTI_LINE_ALL_0_31) == 0x00000000U)+ −
+ −
#define IS_LL_EXTI_MODE(__VALUE__) (((__VALUE__) == LL_EXTI_MODE_IT) \+ −
|| ((__VALUE__) == LL_EXTI_MODE_EVENT) \+ −
|| ((__VALUE__) == LL_EXTI_MODE_IT_EVENT))+ −
+ −
+ −
#define IS_LL_EXTI_TRIGGER(__VALUE__) (((__VALUE__) == LL_EXTI_TRIGGER_NONE) \+ −
|| ((__VALUE__) == LL_EXTI_TRIGGER_RISING) \+ −
|| ((__VALUE__) == LL_EXTI_TRIGGER_FALLING) \+ −
|| ((__VALUE__) == LL_EXTI_TRIGGER_RISING_FALLING))+ −
+ −
/**+ −
* @}+ −
*/+ −
+ −
/* Private function prototypes -----------------------------------------------*/+ −
+ −
/* Exported functions --------------------------------------------------------*/+ −
/** @addtogroup EXTI_LL_Exported_Functions+ −
* @{+ −
*/+ −
+ −
/** @addtogroup EXTI_LL_EF_Init+ −
* @{+ −
*/+ −
+ −
/**+ −
* @brief De-initialize the EXTI registers to their default reset values.+ −
* @retval An ErrorStatus enumeration value:+ −
* - SUCCESS: EXTI registers are de-initialized+ −
* - ERROR: not applicable+ −
*/+ −
uint32_t LL_EXTI_DeInit(void)+ −
{+ −
/* Interrupt mask register set to default reset values */+ −
LL_EXTI_WriteReg(IMR, 0x00000000U);+ −
/* Event mask register set to default reset values */+ −
LL_EXTI_WriteReg(EMR, 0x00000000U);+ −
/* Rising Trigger selection register set to default reset values */+ −
LL_EXTI_WriteReg(RTSR, 0x00000000U);+ −
/* Falling Trigger selection register set to default reset values */+ −
LL_EXTI_WriteReg(FTSR, 0x00000000U);+ −
/* Software interrupt event register set to default reset values */+ −
LL_EXTI_WriteReg(SWIER, 0x00000000U);+ −
/* Pending register set to default reset values */+ −
LL_EXTI_WriteReg(PR, 0x00FFFFFFU);+ −
+ −
return SUCCESS;+ −
}+ −
+ −
/**+ −
* @brief Initialize the EXTI registers according to the specified parameters in EXTI_InitStruct.+ −
* @param EXTI_InitStruct pointer to a @ref LL_EXTI_InitTypeDef structure.+ −
* @retval An ErrorStatus enumeration value:+ −
* - SUCCESS: EXTI registers are initialized+ −
* - ERROR: not applicable+ −
*/+ −
uint32_t LL_EXTI_Init(LL_EXTI_InitTypeDef *EXTI_InitStruct)+ −
{+ −
ErrorStatus status = SUCCESS;+ −
/* Check the parameters */+ −
assert_param(IS_LL_EXTI_LINE_0_31(EXTI_InitStruct->Line_0_31));+ −
assert_param(IS_FUNCTIONAL_STATE(EXTI_InitStruct->LineCommand));+ −
assert_param(IS_LL_EXTI_MODE(EXTI_InitStruct->Mode));+ −
+ −
/* ENABLE LineCommand */+ −
if (EXTI_InitStruct->LineCommand != DISABLE)+ −
{+ −
assert_param(IS_LL_EXTI_TRIGGER(EXTI_InitStruct->Trigger));+ −
+ −
/* Configure EXTI Lines in range from 0 to 31 */+ −
if (EXTI_InitStruct->Line_0_31 != LL_EXTI_LINE_NONE)+ −
{+ −
switch (EXTI_InitStruct->Mode)+ −
{+ −
case LL_EXTI_MODE_IT:+ −
/* First Disable Event on provided Lines */+ −
LL_EXTI_DisableEvent_0_31(EXTI_InitStruct->Line_0_31);+ −
/* Then Enable IT on provided Lines */+ −
LL_EXTI_EnableIT_0_31(EXTI_InitStruct->Line_0_31);+ −
break;+ −
case LL_EXTI_MODE_EVENT:+ −
/* First Disable IT on provided Lines */+ −
LL_EXTI_DisableIT_0_31(EXTI_InitStruct->Line_0_31);+ −
/* Then Enable Event on provided Lines */+ −
LL_EXTI_EnableEvent_0_31(EXTI_InitStruct->Line_0_31);+ −
break;+ −
case LL_EXTI_MODE_IT_EVENT:+ −
/* Directly Enable IT & Event on provided Lines */+ −
LL_EXTI_EnableIT_0_31(EXTI_InitStruct->Line_0_31);+ −
LL_EXTI_EnableEvent_0_31(EXTI_InitStruct->Line_0_31);+ −
break;+ −
default:+ −
status = ERROR;+ −
break;+ −
}+ −
if (EXTI_InitStruct->Trigger != LL_EXTI_TRIGGER_NONE)+ −
{+ −
switch (EXTI_InitStruct->Trigger)+ −
{+ −
case LL_EXTI_TRIGGER_RISING:+ −
/* First Disable Falling Trigger on provided Lines */+ −
LL_EXTI_DisableFallingTrig_0_31(EXTI_InitStruct->Line_0_31);+ −
/* Then Enable Rising Trigger on provided Lines */+ −
LL_EXTI_EnableRisingTrig_0_31(EXTI_InitStruct->Line_0_31);+ −
break;+ −
case LL_EXTI_TRIGGER_FALLING:+ −
/* First Disable Rising Trigger on provided Lines */+ −
LL_EXTI_DisableRisingTrig_0_31(EXTI_InitStruct->Line_0_31);+ −
/* Then Enable Falling Trigger on provided Lines */+ −
LL_EXTI_EnableFallingTrig_0_31(EXTI_InitStruct->Line_0_31);+ −
break;+ −
case LL_EXTI_TRIGGER_RISING_FALLING:+ −
LL_EXTI_EnableRisingTrig_0_31(EXTI_InitStruct->Line_0_31);+ −
LL_EXTI_EnableFallingTrig_0_31(EXTI_InitStruct->Line_0_31);+ −
break;+ −
default:+ −
status = ERROR;+ −
break;+ −
}+ −
}+ −
}+ −
}+ −
/* DISABLE LineCommand */+ −
else+ −
{+ −
/* De-configure EXTI Lines in range from 0 to 31 */+ −
LL_EXTI_DisableIT_0_31(EXTI_InitStruct->Line_0_31);+ −
LL_EXTI_DisableEvent_0_31(EXTI_InitStruct->Line_0_31);+ −
}+ −
return status;+ −
}+ −
+ −
/**+ −
* @brief Set each @ref LL_EXTI_InitTypeDef field to default value.+ −
* @param EXTI_InitStruct Pointer to a @ref LL_EXTI_InitTypeDef structure.+ −
* @retval None+ −
*/+ −
void LL_EXTI_StructInit(LL_EXTI_InitTypeDef *EXTI_InitStruct)+ −
{+ −
EXTI_InitStruct->Line_0_31 = LL_EXTI_LINE_NONE;+ −
EXTI_InitStruct->LineCommand = DISABLE;+ −
EXTI_InitStruct->Mode = LL_EXTI_MODE_IT;+ −
EXTI_InitStruct->Trigger = LL_EXTI_TRIGGER_FALLING;+ −
}+ −
+ −
/**+ −
* @}+ −
*/+ −
+ −
/**+ −
* @}+ −
*/+ −
+ −
/**+ −
* @}+ −
*/+ −
+ −
#endif /* defined (EXTI) */+ −
+ −
/**+ −
* @}+ −
*/+ −
+ −
#endif /* USE_FULL_LL_DRIVER */+ −
+ −
/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/+ −