Rajath Ravi / Mbed 2 deprecated ADC_DMA_POST_LEC12

Dependencies:   mbed

Committer:
rajathr
Date:
Fri Oct 29 20:56:20 2021 +0000
Revision:
0:716b93ab9a58
AS ON 29TH OCT AT 5PM

Who changed what in which revision?

UserRevisionLine numberNew contents of line
rajathr 0:716b93ab9a58 1 /**
rajathr 0:716b93ab9a58 2 ******************************************************************************
rajathr 0:716b93ab9a58 3 * @file stm32f4xx_exti.c
rajathr 0:716b93ab9a58 4 * @author MCD Application Team
rajathr 0:716b93ab9a58 5 * @version V1.8.0
rajathr 0:716b93ab9a58 6 * @date 04-November-2016
rajathr 0:716b93ab9a58 7 * @brief This file provides firmware functions to manage the following
rajathr 0:716b93ab9a58 8 * functionalities of the EXTI_MORT peripheral:
rajathr 0:716b93ab9a58 9 * + Initialization and Configuration
rajathr 0:716b93ab9a58 10 * + Interrupts and flags management
rajathr 0:716b93ab9a58 11 *
rajathr 0:716b93ab9a58 12 @verbatim
rajathr 0:716b93ab9a58 13
rajathr 0:716b93ab9a58 14 ===============================================================================
rajathr 0:716b93ab9a58 15 ##### EXTI_MORT features #####
rajathr 0:716b93ab9a58 16 ===============================================================================
rajathr 0:716b93ab9a58 17
rajathr 0:716b93ab9a58 18 [..] External interrupt/event lines are mapped as following:
rajathr 0:716b93ab9a58 19 (#) All available GPIO pins are connected to the 16 external
rajathr 0:716b93ab9a58 20 interrupt/event lines from EXTI0 to EXTI15.
rajathr 0:716b93ab9a58 21 (#) EXTI_MORT line 16 is connected to the PVD Output
rajathr 0:716b93ab9a58 22 (#) EXTI_MORT line 17 is connected to the RTC Alarm event
rajathr 0:716b93ab9a58 23 (#) EXTI_MORT line 18 is connected to the USB OTG FS Wakeup from suspend event
rajathr 0:716b93ab9a58 24 (#) EXTI_MORT line 19 is connected to the Ethernet Wakeup event
rajathr 0:716b93ab9a58 25 (#) EXTI_MORT line 20 is connected to the USB OTG HS (configured in FS) Wakeup event
rajathr 0:716b93ab9a58 26 (#) EXTI_MORT line 21 is connected to the RTC Tamper and Time Stamp events
rajathr 0:716b93ab9a58 27 (#) EXTI_MORT line 22 is connected to the RTC Wakeup event
rajathr 0:716b93ab9a58 28 (#) EXTI_MORT line 23 is connected to the LPTIM Wakeup event
rajathr 0:716b93ab9a58 29
rajathr 0:716b93ab9a58 30 ##### How to use this driver #####
rajathr 0:716b93ab9a58 31 ===============================================================================
rajathr 0:716b93ab9a58 32
rajathr 0:716b93ab9a58 33 [..] In order to use an I/O pin as an external interrupt source, follow steps
rajathr 0:716b93ab9a58 34 below:
rajathr 0:716b93ab9a58 35 (#) Configure the I/O in input mode using GPIO_Init()
rajathr 0:716b93ab9a58 36 (#) Select the input source pin for the EXTI_MORT line using SYSCFG_EXTILineConfig()
rajathr 0:716b93ab9a58 37 (#) Select the mode(interrupt, event) and configure the trigger
rajathr 0:716b93ab9a58 38 selection (Rising, falling or both) using EXTI_Init_mort()
rajathr 0:716b93ab9a58 39 (#) Configure NVIC IRQ channel mapped to the EXTI_MORT line using NVIC_Init()
rajathr 0:716b93ab9a58 40
rajathr 0:716b93ab9a58 41 [..]
rajathr 0:716b93ab9a58 42 (@) SYSCFG APB clock must be enabled to get write access to SYSCFG_EXTICRx
rajathr 0:716b93ab9a58 43 registers using RCC_APB2PeriphClockCmd(RCC_APB2Periph_SYSCFG, ENABLE);
rajathr 0:716b93ab9a58 44
rajathr 0:716b93ab9a58 45 @endverbatim
rajathr 0:716b93ab9a58 46 *
rajathr 0:716b93ab9a58 47 ******************************************************************************
rajathr 0:716b93ab9a58 48 * @attention
rajathr 0:716b93ab9a58 49 *
rajathr 0:716b93ab9a58 50 * <h2><center>&copy; COPYRIGHT 2016 STMicroelectronics</center></h2>
rajathr 0:716b93ab9a58 51 *
rajathr 0:716b93ab9a58 52 * Licensed under MCD-ST Liberty SW License Agreement V2, (the "License");
rajathr 0:716b93ab9a58 53 * You may not use this file except in compliance with the License.
rajathr 0:716b93ab9a58 54 * You may obtain a copy of the License at:
rajathr 0:716b93ab9a58 55 *
rajathr 0:716b93ab9a58 56 * http://www.st.com/software_license_agreement_liberty_v2
rajathr 0:716b93ab9a58 57 *
rajathr 0:716b93ab9a58 58 * Unless required by applicable law or agreed to in writing, software
rajathr 0:716b93ab9a58 59 * distributed under the License is distributed on an "AS IS" BASIS,
rajathr 0:716b93ab9a58 60 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
rajathr 0:716b93ab9a58 61 * See the License for the specific language governing permissions and
rajathr 0:716b93ab9a58 62 * limitations under the License.
rajathr 0:716b93ab9a58 63 *
rajathr 0:716b93ab9a58 64 ******************************************************************************
rajathr 0:716b93ab9a58 65 */
rajathr 0:716b93ab9a58 66
rajathr 0:716b93ab9a58 67 /* Includes ------------------------------------------------------------------*/
rajathr 0:716b93ab9a58 68 #include "stm32f4xx_exti_mort.h"
rajathr 0:716b93ab9a58 69
rajathr 0:716b93ab9a58 70 /** @addtogroup STM32F4xx_StdPeriph_Driver
rajathr 0:716b93ab9a58 71 * @{
rajathr 0:716b93ab9a58 72 */
rajathr 0:716b93ab9a58 73
rajathr 0:716b93ab9a58 74 /** @defgroup EXTI_MORT
rajathr 0:716b93ab9a58 75 * @brief EXTI_MORT driver modules
rajathr 0:716b93ab9a58 76 * @{
rajathr 0:716b93ab9a58 77 */
rajathr 0:716b93ab9a58 78
rajathr 0:716b93ab9a58 79 /* Private typedef -----------------------------------------------------------*/
rajathr 0:716b93ab9a58 80 /* Private define ------------------------------------------------------------*/
rajathr 0:716b93ab9a58 81
rajathr 0:716b93ab9a58 82 #define EXTI_LINENONE_MORT ((uint32_t)0x00000) /* No interrupt selected */
rajathr 0:716b93ab9a58 83
rajathr 0:716b93ab9a58 84 /* Private macro -------------------------------------------------------------*/
rajathr 0:716b93ab9a58 85 /* Private variables ---------------------------------------------------------*/
rajathr 0:716b93ab9a58 86 /* Private function prototypes -----------------------------------------------*/
rajathr 0:716b93ab9a58 87 /* Private functions ---------------------------------------------------------*/
rajathr 0:716b93ab9a58 88
rajathr 0:716b93ab9a58 89 /** @defgroup EXTI_Private_Functions
rajathr 0:716b93ab9a58 90 * @{
rajathr 0:716b93ab9a58 91 */
rajathr 0:716b93ab9a58 92
rajathr 0:716b93ab9a58 93 /** @defgroup EXTI_Group1 Initialization and Configuration functions
rajathr 0:716b93ab9a58 94 * @brief Initialization and Configuration functions
rajathr 0:716b93ab9a58 95 *
rajathr 0:716b93ab9a58 96 @verbatim
rajathr 0:716b93ab9a58 97 ===============================================================================
rajathr 0:716b93ab9a58 98 ##### Initialization and Configuration functions #####
rajathr 0:716b93ab9a58 99 ===============================================================================
rajathr 0:716b93ab9a58 100
rajathr 0:716b93ab9a58 101 @endverbatim
rajathr 0:716b93ab9a58 102 * @{
rajathr 0:716b93ab9a58 103 */
rajathr 0:716b93ab9a58 104
rajathr 0:716b93ab9a58 105 /**
rajathr 0:716b93ab9a58 106 * @brief Deinitializes the EXTI_MORT peripheral registers to their default reset values.
rajathr 0:716b93ab9a58 107 * @param None
rajathr 0:716b93ab9a58 108 * @retval None
rajathr 0:716b93ab9a58 109 */
rajathr 0:716b93ab9a58 110 void EXTI_DeInit_mort(void)
rajathr 0:716b93ab9a58 111 {
rajathr 0:716b93ab9a58 112 EXTI_MORT->IMR = 0x00000000;
rajathr 0:716b93ab9a58 113 EXTI_MORT->EMR = 0x00000000;
rajathr 0:716b93ab9a58 114 EXTI_MORT->RTSR = 0x00000000;
rajathr 0:716b93ab9a58 115 EXTI_MORT->FTSR = 0x00000000;
rajathr 0:716b93ab9a58 116 EXTI_MORT->PR = 0x007FFFFF;
rajathr 0:716b93ab9a58 117 }
rajathr 0:716b93ab9a58 118
rajathr 0:716b93ab9a58 119 /**
rajathr 0:716b93ab9a58 120 * @brief Initializes the EXTI_MORT peripheral according to the specified
rajathr 0:716b93ab9a58 121 * parameters in the EXTI_InitStruct.
rajathr 0:716b93ab9a58 122 * @param EXTI_InitStruct: pointer to a EXTI_InitTypeDef_mort structure
rajathr 0:716b93ab9a58 123 * that contains the configuration information for the EXTI_MORT peripheral.
rajathr 0:716b93ab9a58 124 * @retval None
rajathr 0:716b93ab9a58 125 */
rajathr 0:716b93ab9a58 126 void EXTI_Init_mort(EXTI_InitTypeDef_mort* EXTI_InitStruct)
rajathr 0:716b93ab9a58 127 {
rajathr 0:716b93ab9a58 128 uint32_t tmp = 0;
rajathr 0:716b93ab9a58 129
rajathr 0:716b93ab9a58 130 /* Check the parameters */
rajathr 0:716b93ab9a58 131 assert_param(IS_EXTI_MODE_MORT(EXTI_InitStruct->EXTI_Mode));
rajathr 0:716b93ab9a58 132 assert_param(IS_EXTI_TRIGGER_MORT(EXTI_InitStruct->EXTI_Trigger));
rajathr 0:716b93ab9a58 133 assert_param(IS_EXTI_LINE_MORT(EXTI_InitStruct->EXTI_Line));
rajathr 0:716b93ab9a58 134 assert_param(IS_FUNCTIONAL_STATE(EXTI_InitStruct->EXTI_LineCmd));
rajathr 0:716b93ab9a58 135
rajathr 0:716b93ab9a58 136 tmp = (uint32_t)EXTI_BASE_MORT;
rajathr 0:716b93ab9a58 137
rajathr 0:716b93ab9a58 138 if (EXTI_InitStruct->EXTI_LineCmd != DISABLE)
rajathr 0:716b93ab9a58 139 {
rajathr 0:716b93ab9a58 140 /* Clear EXTI_MORT line configuration */
rajathr 0:716b93ab9a58 141 EXTI_MORT->IMR &= ~EXTI_InitStruct->EXTI_Line;
rajathr 0:716b93ab9a58 142 EXTI_MORT->EMR &= ~EXTI_InitStruct->EXTI_Line;
rajathr 0:716b93ab9a58 143
rajathr 0:716b93ab9a58 144 tmp += EXTI_InitStruct->EXTI_Mode;
rajathr 0:716b93ab9a58 145
rajathr 0:716b93ab9a58 146 *(__IO uint32_t *) tmp |= EXTI_InitStruct->EXTI_Line;
rajathr 0:716b93ab9a58 147
rajathr 0:716b93ab9a58 148 /* Clear Rising Falling edge configuration */
rajathr 0:716b93ab9a58 149 EXTI_MORT->RTSR &= ~EXTI_InitStruct->EXTI_Line;
rajathr 0:716b93ab9a58 150 EXTI_MORT->FTSR &= ~EXTI_InitStruct->EXTI_Line;
rajathr 0:716b93ab9a58 151
rajathr 0:716b93ab9a58 152 /* Select the trigger for the selected external interrupts */
rajathr 0:716b93ab9a58 153 if (EXTI_InitStruct->EXTI_Trigger == EXTI_Trigger_Rising_Falling)
rajathr 0:716b93ab9a58 154 {
rajathr 0:716b93ab9a58 155 /* Rising Falling edge */
rajathr 0:716b93ab9a58 156 EXTI_MORT->RTSR |= EXTI_InitStruct->EXTI_Line;
rajathr 0:716b93ab9a58 157 EXTI_MORT->FTSR |= EXTI_InitStruct->EXTI_Line;
rajathr 0:716b93ab9a58 158 }
rajathr 0:716b93ab9a58 159 else
rajathr 0:716b93ab9a58 160 {
rajathr 0:716b93ab9a58 161 tmp = (uint32_t)EXTI_BASE_MORT;
rajathr 0:716b93ab9a58 162 tmp += EXTI_InitStruct->EXTI_Trigger;
rajathr 0:716b93ab9a58 163
rajathr 0:716b93ab9a58 164 *(__IO uint32_t *) tmp |= EXTI_InitStruct->EXTI_Line;
rajathr 0:716b93ab9a58 165 }
rajathr 0:716b93ab9a58 166 }
rajathr 0:716b93ab9a58 167 else
rajathr 0:716b93ab9a58 168 {
rajathr 0:716b93ab9a58 169 tmp += EXTI_InitStruct->EXTI_Mode;
rajathr 0:716b93ab9a58 170
rajathr 0:716b93ab9a58 171 /* Disable the selected external lines */
rajathr 0:716b93ab9a58 172 *(__IO uint32_t *) tmp &= ~EXTI_InitStruct->EXTI_Line;
rajathr 0:716b93ab9a58 173 }
rajathr 0:716b93ab9a58 174 }
rajathr 0:716b93ab9a58 175
rajathr 0:716b93ab9a58 176 /**
rajathr 0:716b93ab9a58 177 * @brief Fills each EXTI_InitStruct member with its reset value.
rajathr 0:716b93ab9a58 178 * @param EXTI_InitStruct: pointer to a EXTI_InitTypeDef_mort structure which will
rajathr 0:716b93ab9a58 179 * be initialized.
rajathr 0:716b93ab9a58 180 * @retval None
rajathr 0:716b93ab9a58 181 */
rajathr 0:716b93ab9a58 182 void EXTI_StructInit_mort(EXTI_InitTypeDef_mort* EXTI_InitStruct)
rajathr 0:716b93ab9a58 183 {
rajathr 0:716b93ab9a58 184 EXTI_InitStruct->EXTI_Line = EXTI_LINENONE_MORT;
rajathr 0:716b93ab9a58 185 EXTI_InitStruct->EXTI_Mode = EXTI_Mode_Interrupt;
rajathr 0:716b93ab9a58 186 EXTI_InitStruct->EXTI_Trigger = EXTI_Trigger_Falling;
rajathr 0:716b93ab9a58 187 EXTI_InitStruct->EXTI_LineCmd = DISABLE;
rajathr 0:716b93ab9a58 188 }
rajathr 0:716b93ab9a58 189
rajathr 0:716b93ab9a58 190 /**
rajathr 0:716b93ab9a58 191 * @brief Generates a Software interrupt on selected EXTI_MORT line.
rajathr 0:716b93ab9a58 192 * @param EXTI_Line: specifies the EXTI_MORT line on which the software interrupt
rajathr 0:716b93ab9a58 193 * will be generated.
rajathr 0:716b93ab9a58 194 * This parameter can be any combination of EXTI_Linex where x can be (0..22)
rajathr 0:716b93ab9a58 195 * @retval None
rajathr 0:716b93ab9a58 196 */
rajathr 0:716b93ab9a58 197 void EXTI_GenerateSWInterrupt_mort(uint32_t EXTI_Line)
rajathr 0:716b93ab9a58 198 {
rajathr 0:716b93ab9a58 199 /* Check the parameters */
rajathr 0:716b93ab9a58 200 assert_param(IS_EXTI_LINE_MORT(EXTI_Line));
rajathr 0:716b93ab9a58 201
rajathr 0:716b93ab9a58 202 EXTI_MORT->SWIER |= EXTI_Line;
rajathr 0:716b93ab9a58 203 }
rajathr 0:716b93ab9a58 204
rajathr 0:716b93ab9a58 205 /**
rajathr 0:716b93ab9a58 206 * @}
rajathr 0:716b93ab9a58 207 */
rajathr 0:716b93ab9a58 208
rajathr 0:716b93ab9a58 209 /** @defgroup EXTI_Group2 Interrupts and flags management functions
rajathr 0:716b93ab9a58 210 * @brief Interrupts and flags management functions
rajathr 0:716b93ab9a58 211 *
rajathr 0:716b93ab9a58 212 @verbatim
rajathr 0:716b93ab9a58 213 ===============================================================================
rajathr 0:716b93ab9a58 214 ##### Interrupts and flags management functions #####
rajathr 0:716b93ab9a58 215 ===============================================================================
rajathr 0:716b93ab9a58 216
rajathr 0:716b93ab9a58 217 @endverbatim
rajathr 0:716b93ab9a58 218 * @{
rajathr 0:716b93ab9a58 219 */
rajathr 0:716b93ab9a58 220
rajathr 0:716b93ab9a58 221 /**
rajathr 0:716b93ab9a58 222 * @brief Checks whether the specified EXTI_MORT line flag is set or not.
rajathr 0:716b93ab9a58 223 * @param EXTI_Line: specifies the EXTI_MORT line flag to check.
rajathr 0:716b93ab9a58 224 * This parameter can be EXTI_Linex where x can be(0..22)
rajathr 0:716b93ab9a58 225 * @retval The new state of EXTI_Line (SET or RESET).
rajathr 0:716b93ab9a58 226 */
rajathr 0:716b93ab9a58 227 FlagStatus EXTI_GetFlagStatus_mort(uint32_t EXTI_Line)
rajathr 0:716b93ab9a58 228 {
rajathr 0:716b93ab9a58 229 FlagStatus bitstatus = RESET;
rajathr 0:716b93ab9a58 230 /* Check the parameters */
rajathr 0:716b93ab9a58 231 assert_param(IS_GET_EXTI_LINE_MORT(EXTI_Line));
rajathr 0:716b93ab9a58 232
rajathr 0:716b93ab9a58 233 if ((EXTI_MORT->PR & EXTI_Line) != (uint32_t)RESET)
rajathr 0:716b93ab9a58 234 {
rajathr 0:716b93ab9a58 235 bitstatus = SET;
rajathr 0:716b93ab9a58 236 }
rajathr 0:716b93ab9a58 237 else
rajathr 0:716b93ab9a58 238 {
rajathr 0:716b93ab9a58 239 bitstatus = RESET;
rajathr 0:716b93ab9a58 240 }
rajathr 0:716b93ab9a58 241 return bitstatus;
rajathr 0:716b93ab9a58 242 }
rajathr 0:716b93ab9a58 243
rajathr 0:716b93ab9a58 244 /**
rajathr 0:716b93ab9a58 245 * @brief Clears the EXTI_MORT's line pending flags.
rajathr 0:716b93ab9a58 246 * @param EXTI_Line: specifies the EXTI_MORT lines flags to clear.
rajathr 0:716b93ab9a58 247 * This parameter can be any combination of EXTI_Linex where x can be (0..22)
rajathr 0:716b93ab9a58 248 * @retval None
rajathr 0:716b93ab9a58 249 */
rajathr 0:716b93ab9a58 250 void EXTI_ClearFlag_mort(uint32_t EXTI_Line)
rajathr 0:716b93ab9a58 251 {
rajathr 0:716b93ab9a58 252 /* Check the parameters */
rajathr 0:716b93ab9a58 253 assert_param(IS_EXTI_LINE_MORT(EXTI_Line));
rajathr 0:716b93ab9a58 254
rajathr 0:716b93ab9a58 255 EXTI_MORT->PR = EXTI_Line;
rajathr 0:716b93ab9a58 256 }
rajathr 0:716b93ab9a58 257
rajathr 0:716b93ab9a58 258 /**
rajathr 0:716b93ab9a58 259 * @brief Checks whether the specified EXTI_MORT line is asserted or not.
rajathr 0:716b93ab9a58 260 * @param EXTI_Line: specifies the EXTI_MORT line to check.
rajathr 0:716b93ab9a58 261 * This parameter can be EXTI_Linex where x can be(0..22)
rajathr 0:716b93ab9a58 262 * @retval The new state of EXTI_Line (SET or RESET).
rajathr 0:716b93ab9a58 263 */
rajathr 0:716b93ab9a58 264 ITStatus EXTI_GetITStatus_mort(uint32_t EXTI_Line)
rajathr 0:716b93ab9a58 265 {
rajathr 0:716b93ab9a58 266 FlagStatus bitstatus = RESET;
rajathr 0:716b93ab9a58 267 /* Check the parameters */
rajathr 0:716b93ab9a58 268 assert_param(IS_GET_EXTI_LINE_MORT(EXTI_Line));
rajathr 0:716b93ab9a58 269
rajathr 0:716b93ab9a58 270 if ((EXTI_MORT->PR & EXTI_Line) != (uint32_t)RESET)
rajathr 0:716b93ab9a58 271 {
rajathr 0:716b93ab9a58 272 bitstatus = SET;
rajathr 0:716b93ab9a58 273 }
rajathr 0:716b93ab9a58 274 else
rajathr 0:716b93ab9a58 275 {
rajathr 0:716b93ab9a58 276 bitstatus = RESET;
rajathr 0:716b93ab9a58 277 }
rajathr 0:716b93ab9a58 278 return bitstatus;
rajathr 0:716b93ab9a58 279
rajathr 0:716b93ab9a58 280 }
rajathr 0:716b93ab9a58 281
rajathr 0:716b93ab9a58 282 /**
rajathr 0:716b93ab9a58 283 * @brief Clears the EXTI_MORT's line pending bits.
rajathr 0:716b93ab9a58 284 * @param EXTI_Line: specifies the EXTI_MORT lines to clear.
rajathr 0:716b93ab9a58 285 * This parameter can be any combination of EXTI_Linex where x can be (0..22)
rajathr 0:716b93ab9a58 286 * @retval None
rajathr 0:716b93ab9a58 287 */
rajathr 0:716b93ab9a58 288 void EXTI_ClearITPendingBit_mort(uint32_t EXTI_Line)
rajathr 0:716b93ab9a58 289 {
rajathr 0:716b93ab9a58 290 /* Check the parameters */
rajathr 0:716b93ab9a58 291 assert_param(IS_EXTI_LINE_MORT(EXTI_Line));
rajathr 0:716b93ab9a58 292
rajathr 0:716b93ab9a58 293 EXTI_MORT->PR = EXTI_Line;
rajathr 0:716b93ab9a58 294 }
rajathr 0:716b93ab9a58 295
rajathr 0:716b93ab9a58 296 /**
rajathr 0:716b93ab9a58 297 * @}
rajathr 0:716b93ab9a58 298 */
rajathr 0:716b93ab9a58 299
rajathr 0:716b93ab9a58 300 /**
rajathr 0:716b93ab9a58 301 * @}
rajathr 0:716b93ab9a58 302 */
rajathr 0:716b93ab9a58 303
rajathr 0:716b93ab9a58 304 /**
rajathr 0:716b93ab9a58 305 * @}
rajathr 0:716b93ab9a58 306 */
rajathr 0:716b93ab9a58 307
rajathr 0:716b93ab9a58 308 /**
rajathr 0:716b93ab9a58 309 * @}
rajathr 0:716b93ab9a58 310 */
rajathr 0:716b93ab9a58 311
rajathr 0:716b93ab9a58 312 /************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
rajathr 0:716b93ab9a58 313
rajathr 0:716b93ab9a58 314
rajathr 0:716b93ab9a58 315
rajathr 0:716b93ab9a58 316
rajathr 0:716b93ab9a58 317
rajathr 0:716b93ab9a58 318