1 /******************** (C) COPYRIGHT 2007 STMicroelectronics ********************
\r
2 * File Name : stm32f10x_exti.c
\r
3 * Author : MCD Application Team
\r
4 * Date First Issued : 09/29/2006
\r
5 * Description : This file provides all the EXTI firmware functions.
\r
6 ********************************************************************************
\r
11 ********************************************************************************
\r
12 * THE PRESENT SOFTWARE WHICH IS FOR GUIDANCE ONLY AIMS AT PROVIDING CUSTOMERS
\r
13 * WITH CODING INFORMATION REGARDING THEIR PRODUCTS IN ORDER FOR THEM TO SAVE TIME.
\r
14 * AS A RESULT, STMICROELECTRONICS SHALL NOT BE HELD LIABLE FOR ANY DIRECT,
\r
15 * INDIRECT OR CONSEQUENTIAL DAMAGES WITH RESPECT TO ANY CLAIMS ARISING FROM THE
\r
16 * CONTENT OF SUCH SOFTWARE AND/OR THE USE MADE BY CUSTOMERS OF THE CODING
\r
17 * INFORMATION CONTAINED HEREIN IN CONNECTION WITH THEIR PRODUCTS.
\r
18 *******************************************************************************/
\r
20 /* Includes ------------------------------------------------------------------*/
\r
21 #include "stm32f10x_exti.h"
\r
23 /* Private typedef -----------------------------------------------------------*/
\r
24 /* Private define ------------------------------------------------------------*/
\r
25 #define EXTI_LineNone ((u32)0x00000) /* No interrupt selected */
\r
27 /* Private macro -------------------------------------------------------------*/
\r
28 /* Private variables ---------------------------------------------------------*/
\r
29 /* Private function prototypes -----------------------------------------------*/
\r
30 /* Private functions ---------------------------------------------------------*/
\r
32 /*******************************************************************************
\r
33 * Function Name : EXTI_DeInit
\r
34 * Description : Deinitializes the EXTI peripheral registers to their default
\r
39 *******************************************************************************/
\r
40 void EXTI_DeInit(void)
\r
42 EXTI->IMR = 0x00000000;
\r
43 EXTI->EMR = 0x00000000;
\r
44 EXTI->RTSR = 0x00000000;
\r
45 EXTI->FTSR = 0x00000000;
\r
46 EXTI->PR = 0x0007FFFF;
\r
49 /*******************************************************************************
\r
50 * Function Name : EXTI_Init
\r
51 * Description : Initializes the EXTI peripheral according to the specified
\r
52 * parameters in the EXTI_InitStruct.
\r
53 * Input : - EXTI_InitStruct: pointer to a EXTI_InitTypeDef structure
\r
54 * that contains the configuration information for the EXTI
\r
58 *******************************************************************************/
\r
59 void EXTI_Init(EXTI_InitTypeDef* EXTI_InitStruct)
\r
61 /* Check the parameters */
\r
62 assert(IS_EXTI_MODE(EXTI_InitStruct->EXTI_Mode));
\r
63 assert(IS_EXTI_TRIGGER(EXTI_InitStruct->EXTI_Trigger));
\r
64 assert(IS_EXTI_LINE(EXTI_InitStruct->EXTI_Line));
\r
65 assert(IS_FUNCTIONAL_STATE(EXTI_InitStruct->EXTI_LineCmd));
\r
67 if (EXTI_InitStruct->EXTI_LineCmd != DISABLE)
\r
69 *(u32 *)(EXTI_BASE + (u32)EXTI_InitStruct->EXTI_Mode)|= EXTI_InitStruct->EXTI_Line;
\r
71 /* Clear Rising Falling edge configuration */
\r
72 EXTI->RTSR &= ~EXTI_InitStruct->EXTI_Line;
\r
73 EXTI->FTSR &= ~EXTI_InitStruct->EXTI_Line;
\r
75 /* Select the trigger for the selected external interrupts */
\r
76 if (EXTI_InitStruct->EXTI_Trigger == EXTI_Trigger_Rising_Falling)
\r
78 /* Rising Falling edge */
\r
79 EXTI->RTSR |= EXTI_InitStruct->EXTI_Line;
\r
80 EXTI->FTSR |= EXTI_InitStruct->EXTI_Line;
\r
84 *(u32 *)(EXTI_BASE + (u32)EXTI_InitStruct->EXTI_Trigger)|= EXTI_InitStruct->EXTI_Line;
\r
89 /* Disable the selected external lines */
\r
90 *(u32 *)(EXTI_BASE + (u32)EXTI_InitStruct->EXTI_Mode)&= ~EXTI_InitStruct->EXTI_Line;
\r
94 /*******************************************************************************
\r
95 * Function Name : EXTI_StructInit
\r
96 * Description : Fills each EXTI_InitStruct member with its reset value.
\r
97 * Input : - EXTI_InitStruct: pointer to a EXTI_InitTypeDef structure
\r
98 * which will be initialized.
\r
101 *******************************************************************************/
\r
102 void EXTI_StructInit(EXTI_InitTypeDef* EXTI_InitStruct)
\r
104 EXTI_InitStruct->EXTI_Line = EXTI_LineNone;
\r
105 EXTI_InitStruct->EXTI_Mode = EXTI_Mode_Interrupt;
\r
106 EXTI_InitStruct->EXTI_Trigger = EXTI_Trigger_Falling;
\r
107 EXTI_InitStruct->EXTI_LineCmd = DISABLE;
\r
110 /*******************************************************************************
\r
111 * Function Name : EXTI_GenerateSWInterrupt
\r
112 * Description : Generates a Software interrupt.
\r
113 * Input : - EXTI_Line: specifies the EXTI lines to be enabled or
\r
115 * This parameter can be:
\r
116 * - EXTI_Linex: External interrupt line x where x(0..18)
\r
119 *******************************************************************************/
\r
120 void EXTI_GenerateSWInterrupt(u32 EXTI_Line)
\r
122 /* Check the parameters */
\r
123 assert(IS_EXTI_LINE(EXTI_Line));
\r
125 EXTI->SWIER |= EXTI_Line;
\r
128 /*******************************************************************************
\r
129 * Function Name : EXTI_GetFlagStatus
\r
130 * Description : Checks whether the specified EXTI line flag is set or not.
\r
131 * Input : - EXTI_Line: specifies the EXTI lines flag to check.
\r
132 * This parameter can be:
\r
133 * - EXTI_Linex: External interrupt line x where x(0..18)
\r
135 * Return : The new state of EXTI_Line (SET or RESET).
\r
136 *******************************************************************************/
\r
137 FlagStatus EXTI_GetFlagStatus(u32 EXTI_Line)
\r
139 FlagStatus bitstatus = RESET;
\r
141 /* Check the parameters */
\r
142 assert(IS_GET_EXTI_LINE(EXTI_Line));
\r
144 if ((EXTI->PR & EXTI_Line) != (u32)RESET)
\r
155 /*******************************************************************************
\r
156 * Function Name : EXTI_ClearFlag
\r
157 * Description : Clears the EXTI
\92s line pending flags.
\r
158 * Input : - EXTI_Line: specifies the EXTI lines flags to clear.
\r
159 * This parameter can be:
\r
160 * - EXTI_Linex: External interrupt line x where x(0..18)
\r
163 *******************************************************************************/
\r
164 void EXTI_ClearFlag(u32 EXTI_Line)
\r
166 /* Check the parameters */
\r
167 assert(IS_EXTI_LINE(EXTI_Line));
\r
169 EXTI->PR = EXTI_Line;
\r
172 /*******************************************************************************
\r
173 * Function Name : EXTI_GetITStatus
\r
174 * Description : Checks whether the specified EXTI line is asserted or not.
\r
175 * Input : - EXTI_Line: specifies the EXTI lines to check.
\r
176 * This parameter can be:
\r
177 * - EXTI_Linex: External interrupt line x where x(0..18)
\r
179 * Return : The new state of EXTI_Line (SET or RESET).
\r
180 *******************************************************************************/
\r
181 ITStatus EXTI_GetITStatus(u32 EXTI_Line)
\r
183 ITStatus bitstatus = RESET;
\r
184 u32 enablestatus = 0;
\r
186 /* Check the parameters */
\r
187 assert(IS_GET_EXTI_LINE(EXTI_Line));
\r
189 enablestatus = EXTI->IMR & EXTI_Line;
\r
191 if (((EXTI->PR & EXTI_Line) != (u32)RESET) && enablestatus)
\r
202 /*******************************************************************************
\r
203 * Function Name : EXTI_ClearITPendingBit
\r
204 * Description : Clears the EXTI
\92s line pending bits.
\r
205 * Input : - EXTI_Line: specifies the EXTI lines to clear.
\r
206 * This parameter can be:
\r
207 * - EXTI_Linex: External interrupt line x where x(0..18)
\r
210 *******************************************************************************/
\r
211 void EXTI_ClearITPendingBit(u32 EXTI_Line)
\r
213 /* Check the parameters */
\r
214 assert(IS_EXTI_LINE(EXTI_Line));
\r
216 EXTI->PR = EXTI_Line;
\r
219 /******************* (C) COPYRIGHT 2007 STMicroelectronics *****END OF FILE****/
\r