source: S-port/trunk/Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_ll_exti.c

Last change on this file was 1, checked in by AlexLir, 3 years ago
File size: 7.3 KB
Line 
1/**
2 ******************************************************************************
3 * @file stm32f4xx_ll_exti.c
4 * @author MCD Application Team
5 * @brief EXTI LL module driver.
6 ******************************************************************************
7 * @attention
8 *
9 * <h2><center>&copy; Copyright (c) 2016 STMicroelectronics.
10 * All rights reserved.</center></h2>
11 *
12 * This software component is licensed by ST under BSD 3-Clause license,
13 * the "License"; You may not use this file except in compliance with the
14 * License. You may obtain a copy of the License at:
15 * opensource.org/licenses/BSD-3-Clause
16 *
17 ******************************************************************************
18 */
19#if defined(USE_FULL_LL_DRIVER)
20
21/* Includes ------------------------------------------------------------------*/
22#include "stm32f4xx_ll_exti.h"
23#ifdef USE_FULL_ASSERT
24#include "stm32_assert.h"
25#else
26#define assert_param(expr) ((void)0U)
27#endif
28
29/** @addtogroup STM32F4xx_LL_Driver
30 * @{
31 */
32
33#if defined (EXTI)
34
35/** @defgroup EXTI_LL EXTI
36 * @{
37 */
38
39/* Private types -------------------------------------------------------------*/
40/* Private variables ---------------------------------------------------------*/
41/* Private constants ---------------------------------------------------------*/
42/* Private macros ------------------------------------------------------------*/
43/** @addtogroup EXTI_LL_Private_Macros
44 * @{
45 */
46
47#define IS_LL_EXTI_LINE_0_31(__VALUE__) (((__VALUE__) & ~LL_EXTI_LINE_ALL_0_31) == 0x00000000U)
48
49#define IS_LL_EXTI_MODE(__VALUE__) (((__VALUE__) == LL_EXTI_MODE_IT) \
50 || ((__VALUE__) == LL_EXTI_MODE_EVENT) \
51 || ((__VALUE__) == LL_EXTI_MODE_IT_EVENT))
52
53
54#define IS_LL_EXTI_TRIGGER(__VALUE__) (((__VALUE__) == LL_EXTI_TRIGGER_NONE) \
55 || ((__VALUE__) == LL_EXTI_TRIGGER_RISING) \
56 || ((__VALUE__) == LL_EXTI_TRIGGER_FALLING) \
57 || ((__VALUE__) == LL_EXTI_TRIGGER_RISING_FALLING))
58
59/**
60 * @}
61 */
62
63/* Private function prototypes -----------------------------------------------*/
64
65/* Exported functions --------------------------------------------------------*/
66/** @addtogroup EXTI_LL_Exported_Functions
67 * @{
68 */
69
70/** @addtogroup EXTI_LL_EF_Init
71 * @{
72 */
73
74/**
75 * @brief De-initialize the EXTI registers to their default reset values.
76 * @retval An ErrorStatus enumeration value:
77 * - SUCCESS: EXTI registers are de-initialized
78 * - ERROR: not applicable
79 */
80uint32_t LL_EXTI_DeInit(void)
81{
82 /* Interrupt mask register set to default reset values */
83 LL_EXTI_WriteReg(IMR, 0x00000000U);
84 /* Event mask register set to default reset values */
85 LL_EXTI_WriteReg(EMR, 0x00000000U);
86 /* Rising Trigger selection register set to default reset values */
87 LL_EXTI_WriteReg(RTSR, 0x00000000U);
88 /* Falling Trigger selection register set to default reset values */
89 LL_EXTI_WriteReg(FTSR, 0x00000000U);
90 /* Software interrupt event register set to default reset values */
91 LL_EXTI_WriteReg(SWIER, 0x00000000U);
92 /* Pending register set to default reset values */
93 LL_EXTI_WriteReg(PR, 0x00FFFFFFU);
94
95 return SUCCESS;
96}
97
98/**
99 * @brief Initialize the EXTI registers according to the specified parameters in EXTI_InitStruct.
100 * @param EXTI_InitStruct pointer to a @ref LL_EXTI_InitTypeDef structure.
101 * @retval An ErrorStatus enumeration value:
102 * - SUCCESS: EXTI registers are initialized
103 * - ERROR: not applicable
104 */
105uint32_t LL_EXTI_Init(LL_EXTI_InitTypeDef *EXTI_InitStruct)
106{
107 ErrorStatus status = SUCCESS;
108 /* Check the parameters */
109 assert_param(IS_LL_EXTI_LINE_0_31(EXTI_InitStruct->Line_0_31));
110 assert_param(IS_FUNCTIONAL_STATE(EXTI_InitStruct->LineCommand));
111 assert_param(IS_LL_EXTI_MODE(EXTI_InitStruct->Mode));
112
113 /* ENABLE LineCommand */
114 if (EXTI_InitStruct->LineCommand != DISABLE)
115 {
116 assert_param(IS_LL_EXTI_TRIGGER(EXTI_InitStruct->Trigger));
117
118 /* Configure EXTI Lines in range from 0 to 31 */
119 if (EXTI_InitStruct->Line_0_31 != LL_EXTI_LINE_NONE)
120 {
121 switch (EXTI_InitStruct->Mode)
122 {
123 case LL_EXTI_MODE_IT:
124 /* First Disable Event on provided Lines */
125 LL_EXTI_DisableEvent_0_31(EXTI_InitStruct->Line_0_31);
126 /* Then Enable IT on provided Lines */
127 LL_EXTI_EnableIT_0_31(EXTI_InitStruct->Line_0_31);
128 break;
129 case LL_EXTI_MODE_EVENT:
130 /* First Disable IT on provided Lines */
131 LL_EXTI_DisableIT_0_31(EXTI_InitStruct->Line_0_31);
132 /* Then Enable Event on provided Lines */
133 LL_EXTI_EnableEvent_0_31(EXTI_InitStruct->Line_0_31);
134 break;
135 case LL_EXTI_MODE_IT_EVENT:
136 /* Directly Enable IT & Event on provided Lines */
137 LL_EXTI_EnableIT_0_31(EXTI_InitStruct->Line_0_31);
138 LL_EXTI_EnableEvent_0_31(EXTI_InitStruct->Line_0_31);
139 break;
140 default:
141 status = ERROR;
142 break;
143 }
144 if (EXTI_InitStruct->Trigger != LL_EXTI_TRIGGER_NONE)
145 {
146 switch (EXTI_InitStruct->Trigger)
147 {
148 case LL_EXTI_TRIGGER_RISING:
149 /* First Disable Falling Trigger on provided Lines */
150 LL_EXTI_DisableFallingTrig_0_31(EXTI_InitStruct->Line_0_31);
151 /* Then Enable Rising Trigger on provided Lines */
152 LL_EXTI_EnableRisingTrig_0_31(EXTI_InitStruct->Line_0_31);
153 break;
154 case LL_EXTI_TRIGGER_FALLING:
155 /* First Disable Rising Trigger on provided Lines */
156 LL_EXTI_DisableRisingTrig_0_31(EXTI_InitStruct->Line_0_31);
157 /* Then Enable Falling Trigger on provided Lines */
158 LL_EXTI_EnableFallingTrig_0_31(EXTI_InitStruct->Line_0_31);
159 break;
160 case LL_EXTI_TRIGGER_RISING_FALLING:
161 LL_EXTI_EnableRisingTrig_0_31(EXTI_InitStruct->Line_0_31);
162 LL_EXTI_EnableFallingTrig_0_31(EXTI_InitStruct->Line_0_31);
163 break;
164 default:
165 status = ERROR;
166 break;
167 }
168 }
169 }
170 }
171 /* DISABLE LineCommand */
172 else
173 {
174 /* De-configure EXTI Lines in range from 0 to 31 */
175 LL_EXTI_DisableIT_0_31(EXTI_InitStruct->Line_0_31);
176 LL_EXTI_DisableEvent_0_31(EXTI_InitStruct->Line_0_31);
177 }
178 return status;
179}
180
181/**
182 * @brief Set each @ref LL_EXTI_InitTypeDef field to default value.
183 * @param EXTI_InitStruct Pointer to a @ref LL_EXTI_InitTypeDef structure.
184 * @retval None
185 */
186void LL_EXTI_StructInit(LL_EXTI_InitTypeDef *EXTI_InitStruct)
187{
188 EXTI_InitStruct->Line_0_31 = LL_EXTI_LINE_NONE;
189 EXTI_InitStruct->LineCommand = DISABLE;
190 EXTI_InitStruct->Mode = LL_EXTI_MODE_IT;
191 EXTI_InitStruct->Trigger = LL_EXTI_TRIGGER_FALLING;
192}
193
194/**
195 * @}
196 */
197
198/**
199 * @}
200 */
201
202/**
203 * @}
204 */
205
206#endif /* defined (EXTI) */
207
208/**
209 * @}
210 */
211
212#endif /* USE_FULL_LL_DRIVER */
213
214/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
Note: See TracBrowser for help on using the repository browser.