mbed library sources. Supersedes mbed-src.

Dependents:   Nucleo_Hello_Encoder BLE_iBeaconScan AM1805_DEMO DISCO-F429ZI_ExportTemplate1 ... more

Committer:
AnnaBridge
Date:
Wed Feb 20 22:31:08 2019 +0000
Revision:
189:f392fc9709a3
Parent:
167:e84263d55307
mbed library release version 165

Who changed what in which revision?

UserRevisionLine numberNew contents of line
AnnaBridge 167:e84263d55307 1 /**
AnnaBridge 167:e84263d55307 2 ******************************************************************************
AnnaBridge 167:e84263d55307 3 * @file stm32f2xx_ll_exti.c
AnnaBridge 167:e84263d55307 4 * @author MCD Application Team
AnnaBridge 167:e84263d55307 5 * @version V1.2.1
AnnaBridge 167:e84263d55307 6 * @date 14-April-2017
AnnaBridge 167:e84263d55307 7 * @brief EXTI LL module driver.
AnnaBridge 167:e84263d55307 8 ******************************************************************************
AnnaBridge 167:e84263d55307 9 * @attention
AnnaBridge 167:e84263d55307 10 *
AnnaBridge 167:e84263d55307 11 * <h2><center>&copy; COPYRIGHT(c) 2017 STMicroelectronics</center></h2>
AnnaBridge 167:e84263d55307 12 *
AnnaBridge 167:e84263d55307 13 * Redistribution and use in source and binary forms, with or without modification,
AnnaBridge 167:e84263d55307 14 * are permitted provided that the following conditions are met:
AnnaBridge 167:e84263d55307 15 * 1. Redistributions of source code must retain the above copyright notice,
AnnaBridge 167:e84263d55307 16 * this list of conditions and the following disclaimer.
AnnaBridge 167:e84263d55307 17 * 2. Redistributions in binary form must reproduce the above copyright notice,
AnnaBridge 167:e84263d55307 18 * this list of conditions and the following disclaimer in the documentation
AnnaBridge 167:e84263d55307 19 * and/or other materials provided with the distribution.
AnnaBridge 167:e84263d55307 20 * 3. Neither the name of STMicroelectronics nor the names of its contributors
AnnaBridge 167:e84263d55307 21 * may be used to endorse or promote products derived from this software
AnnaBridge 167:e84263d55307 22 * without specific prior written permission.
AnnaBridge 167:e84263d55307 23 *
AnnaBridge 167:e84263d55307 24 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
AnnaBridge 167:e84263d55307 25 * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
AnnaBridge 167:e84263d55307 26 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
AnnaBridge 167:e84263d55307 27 * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
AnnaBridge 167:e84263d55307 28 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
AnnaBridge 167:e84263d55307 29 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
AnnaBridge 167:e84263d55307 30 * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
AnnaBridge 167:e84263d55307 31 * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
AnnaBridge 167:e84263d55307 32 * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
AnnaBridge 167:e84263d55307 33 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
AnnaBridge 167:e84263d55307 34 *
AnnaBridge 167:e84263d55307 35 ******************************************************************************
AnnaBridge 167:e84263d55307 36 */
AnnaBridge 167:e84263d55307 37 #if defined(USE_FULL_LL_DRIVER)
AnnaBridge 167:e84263d55307 38
AnnaBridge 167:e84263d55307 39 /* Includes ------------------------------------------------------------------*/
AnnaBridge 167:e84263d55307 40 #include "stm32f2xx_ll_exti.h"
AnnaBridge 167:e84263d55307 41 #ifdef USE_FULL_ASSERT
AnnaBridge 167:e84263d55307 42 #include "stm32_assert.h"
AnnaBridge 167:e84263d55307 43 #else
AnnaBridge 167:e84263d55307 44 #define assert_param(expr) ((void)0U)
AnnaBridge 167:e84263d55307 45 #endif
AnnaBridge 167:e84263d55307 46
AnnaBridge 167:e84263d55307 47 /** @addtogroup STM32F2xx_LL_Driver
AnnaBridge 167:e84263d55307 48 * @{
AnnaBridge 167:e84263d55307 49 */
AnnaBridge 167:e84263d55307 50
AnnaBridge 167:e84263d55307 51 #if defined (EXTI)
AnnaBridge 167:e84263d55307 52
AnnaBridge 167:e84263d55307 53 /** @defgroup EXTI_LL EXTI
AnnaBridge 167:e84263d55307 54 * @{
AnnaBridge 167:e84263d55307 55 */
AnnaBridge 167:e84263d55307 56
AnnaBridge 167:e84263d55307 57 /* Private types -------------------------------------------------------------*/
AnnaBridge 167:e84263d55307 58 /* Private variables ---------------------------------------------------------*/
AnnaBridge 167:e84263d55307 59 /* Private constants ---------------------------------------------------------*/
AnnaBridge 167:e84263d55307 60 /* Private macros ------------------------------------------------------------*/
AnnaBridge 167:e84263d55307 61 /** @addtogroup EXTI_LL_Private_Macros
AnnaBridge 167:e84263d55307 62 * @{
AnnaBridge 167:e84263d55307 63 */
AnnaBridge 167:e84263d55307 64
AnnaBridge 167:e84263d55307 65 #define IS_LL_EXTI_LINE_0_31(__VALUE__) (((__VALUE__) & ~LL_EXTI_LINE_ALL_0_31) == 0x00000000U)
AnnaBridge 167:e84263d55307 66
AnnaBridge 167:e84263d55307 67 #define IS_LL_EXTI_MODE(__VALUE__) (((__VALUE__) == LL_EXTI_MODE_IT) \
AnnaBridge 167:e84263d55307 68 || ((__VALUE__) == LL_EXTI_MODE_EVENT) \
AnnaBridge 167:e84263d55307 69 || ((__VALUE__) == LL_EXTI_MODE_IT_EVENT))
AnnaBridge 167:e84263d55307 70
AnnaBridge 167:e84263d55307 71
AnnaBridge 167:e84263d55307 72 #define IS_LL_EXTI_TRIGGER(__VALUE__) (((__VALUE__) == LL_EXTI_TRIGGER_NONE) \
AnnaBridge 167:e84263d55307 73 || ((__VALUE__) == LL_EXTI_TRIGGER_RISING) \
AnnaBridge 167:e84263d55307 74 || ((__VALUE__) == LL_EXTI_TRIGGER_FALLING) \
AnnaBridge 167:e84263d55307 75 || ((__VALUE__) == LL_EXTI_TRIGGER_RISING_FALLING))
AnnaBridge 167:e84263d55307 76
AnnaBridge 167:e84263d55307 77 /**
AnnaBridge 167:e84263d55307 78 * @}
AnnaBridge 167:e84263d55307 79 */
AnnaBridge 167:e84263d55307 80
AnnaBridge 167:e84263d55307 81 /* Private function prototypes -----------------------------------------------*/
AnnaBridge 167:e84263d55307 82
AnnaBridge 167:e84263d55307 83 /* Exported functions --------------------------------------------------------*/
AnnaBridge 167:e84263d55307 84 /** @addtogroup EXTI_LL_Exported_Functions
AnnaBridge 167:e84263d55307 85 * @{
AnnaBridge 167:e84263d55307 86 */
AnnaBridge 167:e84263d55307 87
AnnaBridge 167:e84263d55307 88 /** @addtogroup EXTI_LL_EF_Init
AnnaBridge 167:e84263d55307 89 * @{
AnnaBridge 167:e84263d55307 90 */
AnnaBridge 167:e84263d55307 91
AnnaBridge 167:e84263d55307 92 /**
AnnaBridge 167:e84263d55307 93 * @brief De-initialize the EXTI registers to their default reset values.
AnnaBridge 167:e84263d55307 94 * @retval An ErrorStatus enumeration value:
AnnaBridge 167:e84263d55307 95 * - SUCCESS: EXTI registers are de-initialized
AnnaBridge 167:e84263d55307 96 * - ERROR: not applicable
AnnaBridge 167:e84263d55307 97 */
AnnaBridge 167:e84263d55307 98 uint32_t LL_EXTI_DeInit(void)
AnnaBridge 167:e84263d55307 99 {
AnnaBridge 167:e84263d55307 100 /* Interrupt mask register set to default reset values */
AnnaBridge 167:e84263d55307 101 LL_EXTI_WriteReg(IMR, 0x00000000U);
AnnaBridge 167:e84263d55307 102 /* Event mask register set to default reset values */
AnnaBridge 167:e84263d55307 103 LL_EXTI_WriteReg(EMR, 0x00000000U);
AnnaBridge 167:e84263d55307 104 /* Rising Trigger selection register set to default reset values */
AnnaBridge 167:e84263d55307 105 LL_EXTI_WriteReg(RTSR, 0x00000000U);
AnnaBridge 167:e84263d55307 106 /* Falling Trigger selection register set to default reset values */
AnnaBridge 167:e84263d55307 107 LL_EXTI_WriteReg(FTSR, 0x00000000U);
AnnaBridge 167:e84263d55307 108 /* Software interrupt event register set to default reset values */
AnnaBridge 167:e84263d55307 109 LL_EXTI_WriteReg(SWIER, 0x00000000U);
AnnaBridge 167:e84263d55307 110 /* Pending register set to default reset values */
AnnaBridge 167:e84263d55307 111 LL_EXTI_WriteReg(PR, 0x007FFFFFU);
AnnaBridge 167:e84263d55307 112
AnnaBridge 167:e84263d55307 113 return SUCCESS;
AnnaBridge 167:e84263d55307 114 }
AnnaBridge 167:e84263d55307 115
AnnaBridge 167:e84263d55307 116 /**
AnnaBridge 167:e84263d55307 117 * @brief Initialize the EXTI registers according to the specified parameters in EXTI_InitStruct.
AnnaBridge 167:e84263d55307 118 * @param EXTI_InitStruct pointer to a @ref LL_EXTI_InitTypeDef structure.
AnnaBridge 167:e84263d55307 119 * @retval An ErrorStatus enumeration value:
AnnaBridge 167:e84263d55307 120 * - SUCCESS: EXTI registers are initialized
AnnaBridge 167:e84263d55307 121 * - ERROR: not applicable
AnnaBridge 167:e84263d55307 122 */
AnnaBridge 167:e84263d55307 123 uint32_t LL_EXTI_Init(LL_EXTI_InitTypeDef *EXTI_InitStruct)
AnnaBridge 167:e84263d55307 124 {
AnnaBridge 167:e84263d55307 125 ErrorStatus status = SUCCESS;
AnnaBridge 167:e84263d55307 126 /* Check the parameters */
AnnaBridge 167:e84263d55307 127 assert_param(IS_LL_EXTI_LINE_0_31(EXTI_InitStruct->Line_0_31));
AnnaBridge 167:e84263d55307 128 assert_param(IS_FUNCTIONAL_STATE(EXTI_InitStruct->LineCommand));
AnnaBridge 167:e84263d55307 129 assert_param(IS_LL_EXTI_MODE(EXTI_InitStruct->Mode));
AnnaBridge 167:e84263d55307 130
AnnaBridge 167:e84263d55307 131 /* ENABLE LineCommand */
AnnaBridge 167:e84263d55307 132 if (EXTI_InitStruct->LineCommand != DISABLE)
AnnaBridge 167:e84263d55307 133 {
AnnaBridge 167:e84263d55307 134 assert_param(IS_LL_EXTI_TRIGGER(EXTI_InitStruct->Trigger));
AnnaBridge 167:e84263d55307 135
AnnaBridge 167:e84263d55307 136 /* Configure EXTI Lines in range from 0 to 31 */
AnnaBridge 167:e84263d55307 137 if (EXTI_InitStruct->Line_0_31 != LL_EXTI_LINE_NONE)
AnnaBridge 167:e84263d55307 138 {
AnnaBridge 167:e84263d55307 139 switch (EXTI_InitStruct->Mode)
AnnaBridge 167:e84263d55307 140 {
AnnaBridge 167:e84263d55307 141 case LL_EXTI_MODE_IT:
AnnaBridge 167:e84263d55307 142 /* First Disable Event on provided Lines */
AnnaBridge 167:e84263d55307 143 LL_EXTI_DisableEvent_0_31(EXTI_InitStruct->Line_0_31);
AnnaBridge 167:e84263d55307 144 /* Then Enable IT on provided Lines */
AnnaBridge 167:e84263d55307 145 LL_EXTI_EnableIT_0_31(EXTI_InitStruct->Line_0_31);
AnnaBridge 167:e84263d55307 146 break;
AnnaBridge 167:e84263d55307 147 case LL_EXTI_MODE_EVENT:
AnnaBridge 167:e84263d55307 148 /* First Disable IT on provided Lines */
AnnaBridge 167:e84263d55307 149 LL_EXTI_DisableIT_0_31(EXTI_InitStruct->Line_0_31);
AnnaBridge 167:e84263d55307 150 /* Then Enable Event on provided Lines */
AnnaBridge 167:e84263d55307 151 LL_EXTI_EnableEvent_0_31(EXTI_InitStruct->Line_0_31);
AnnaBridge 167:e84263d55307 152 break;
AnnaBridge 167:e84263d55307 153 case LL_EXTI_MODE_IT_EVENT:
AnnaBridge 167:e84263d55307 154 /* Directly Enable IT & Event on provided Lines */
AnnaBridge 167:e84263d55307 155 LL_EXTI_EnableIT_0_31(EXTI_InitStruct->Line_0_31);
AnnaBridge 167:e84263d55307 156 LL_EXTI_EnableEvent_0_31(EXTI_InitStruct->Line_0_31);
AnnaBridge 167:e84263d55307 157 break;
AnnaBridge 167:e84263d55307 158 default:
AnnaBridge 167:e84263d55307 159 status = ERROR;
AnnaBridge 167:e84263d55307 160 break;
AnnaBridge 167:e84263d55307 161 }
AnnaBridge 167:e84263d55307 162 if (EXTI_InitStruct->Trigger != LL_EXTI_TRIGGER_NONE)
AnnaBridge 167:e84263d55307 163 {
AnnaBridge 167:e84263d55307 164 switch (EXTI_InitStruct->Trigger)
AnnaBridge 167:e84263d55307 165 {
AnnaBridge 167:e84263d55307 166 case LL_EXTI_TRIGGER_RISING:
AnnaBridge 167:e84263d55307 167 /* First Disable Falling Trigger on provided Lines */
AnnaBridge 167:e84263d55307 168 LL_EXTI_DisableFallingTrig_0_31(EXTI_InitStruct->Line_0_31);
AnnaBridge 167:e84263d55307 169 /* Then Enable Rising Trigger on provided Lines */
AnnaBridge 167:e84263d55307 170 LL_EXTI_EnableRisingTrig_0_31(EXTI_InitStruct->Line_0_31);
AnnaBridge 167:e84263d55307 171 break;
AnnaBridge 167:e84263d55307 172 case LL_EXTI_TRIGGER_FALLING:
AnnaBridge 167:e84263d55307 173 /* First Disable Rising Trigger on provided Lines */
AnnaBridge 167:e84263d55307 174 LL_EXTI_DisableRisingTrig_0_31(EXTI_InitStruct->Line_0_31);
AnnaBridge 167:e84263d55307 175 /* Then Enable Falling Trigger on provided Lines */
AnnaBridge 167:e84263d55307 176 LL_EXTI_EnableFallingTrig_0_31(EXTI_InitStruct->Line_0_31);
AnnaBridge 167:e84263d55307 177 break;
AnnaBridge 167:e84263d55307 178 case LL_EXTI_TRIGGER_RISING_FALLING:
AnnaBridge 167:e84263d55307 179 LL_EXTI_EnableRisingTrig_0_31(EXTI_InitStruct->Line_0_31);
AnnaBridge 167:e84263d55307 180 LL_EXTI_EnableFallingTrig_0_31(EXTI_InitStruct->Line_0_31);
AnnaBridge 167:e84263d55307 181 break;
AnnaBridge 167:e84263d55307 182 default:
AnnaBridge 167:e84263d55307 183 status = ERROR;
AnnaBridge 167:e84263d55307 184 break;
AnnaBridge 167:e84263d55307 185 }
AnnaBridge 167:e84263d55307 186 }
AnnaBridge 167:e84263d55307 187 }
AnnaBridge 167:e84263d55307 188 }
AnnaBridge 167:e84263d55307 189 /* DISABLE LineCommand */
AnnaBridge 167:e84263d55307 190 else
AnnaBridge 167:e84263d55307 191 {
AnnaBridge 167:e84263d55307 192 /* De-configure EXTI Lines in range from 0 to 31 */
AnnaBridge 167:e84263d55307 193 LL_EXTI_DisableIT_0_31(EXTI_InitStruct->Line_0_31);
AnnaBridge 167:e84263d55307 194 LL_EXTI_DisableEvent_0_31(EXTI_InitStruct->Line_0_31);
AnnaBridge 167:e84263d55307 195 }
AnnaBridge 167:e84263d55307 196 return status;
AnnaBridge 167:e84263d55307 197 }
AnnaBridge 167:e84263d55307 198
AnnaBridge 167:e84263d55307 199 /**
AnnaBridge 167:e84263d55307 200 * @brief Set each @ref LL_EXTI_InitTypeDef field to default value.
AnnaBridge 167:e84263d55307 201 * @param EXTI_InitStruct Pointer to a @ref LL_EXTI_InitTypeDef structure.
AnnaBridge 167:e84263d55307 202 * @retval None
AnnaBridge 167:e84263d55307 203 */
AnnaBridge 167:e84263d55307 204 void LL_EXTI_StructInit(LL_EXTI_InitTypeDef *EXTI_InitStruct)
AnnaBridge 167:e84263d55307 205 {
AnnaBridge 167:e84263d55307 206 EXTI_InitStruct->Line_0_31 = LL_EXTI_LINE_NONE;
AnnaBridge 167:e84263d55307 207 EXTI_InitStruct->LineCommand = DISABLE;
AnnaBridge 167:e84263d55307 208 EXTI_InitStruct->Mode = LL_EXTI_MODE_IT;
AnnaBridge 167:e84263d55307 209 EXTI_InitStruct->Trigger = LL_EXTI_TRIGGER_FALLING;
AnnaBridge 167:e84263d55307 210 }
AnnaBridge 167:e84263d55307 211
AnnaBridge 167:e84263d55307 212 /**
AnnaBridge 167:e84263d55307 213 * @}
AnnaBridge 167:e84263d55307 214 */
AnnaBridge 167:e84263d55307 215
AnnaBridge 167:e84263d55307 216 /**
AnnaBridge 167:e84263d55307 217 * @}
AnnaBridge 167:e84263d55307 218 */
AnnaBridge 167:e84263d55307 219
AnnaBridge 167:e84263d55307 220 /**
AnnaBridge 167:e84263d55307 221 * @}
AnnaBridge 167:e84263d55307 222 */
AnnaBridge 167:e84263d55307 223
AnnaBridge 167:e84263d55307 224 #endif /* defined (EXTI) */
AnnaBridge 167:e84263d55307 225
AnnaBridge 167:e84263d55307 226 /**
AnnaBridge 167:e84263d55307 227 * @}
AnnaBridge 167:e84263d55307 228 */
AnnaBridge 167:e84263d55307 229
AnnaBridge 167:e84263d55307 230 #endif /* USE_FULL_LL_DRIVER */
AnnaBridge 167:e84263d55307 231
AnnaBridge 167:e84263d55307 232 /************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/