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:
186:707f6e361f3e
mbed library release version 165

Who changed what in which revision?

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