STM8L15x Standard Peripherals Drivers
|
stm8l15x_exti.h
Go to the documentation of this file.
00001 /** 00002 ****************************************************************************** 00003 * @file stm8l15x_exti.h 00004 * @author MCD Application Team 00005 * @version V1.5.0 00006 * @date 13-May-2011 00007 * @brief This file contains all the functions prototypes for the EXTI firmware 00008 * library. 00009 ****************************************************************************** 00010 * @attention 00011 * 00012 * THE PRESENT FIRMWARE WHICH IS FOR GUIDANCE ONLY AIMS AT PROVIDING CUSTOMERS 00013 * WITH CODING INFORMATION REGARDING THEIR PRODUCTS IN ORDER FOR THEM TO SAVE 00014 * TIME. AS A RESULT, STMICROELECTRONICS SHALL NOT BE HELD LIABLE FOR ANY 00015 * DIRECT, INDIRECT OR CONSEQUENTIAL DAMAGES WITH RESPECT TO ANY CLAIMS ARISING 00016 * FROM THE CONTENT OF SUCH FIRMWARE AND/OR THE USE MADE BY CUSTOMERS OF THE 00017 * CODING INFORMATION CONTAINED HEREIN IN CONNECTION WITH THEIR PRODUCTS. 00018 * 00019 * <h2><center>© COPYRIGHT 2011 STMicroelectronics</center></h2> 00020 ****************************************************************************** 00021 */ 00022 00023 /* Define to prevent recursive inclusion -------------------------------------*/ 00024 #ifndef __STM8L15x_EXTI_H 00025 #define __STM8L15x_EXTI_H 00026 00027 /* Includes ------------------------------------------------------------------*/ 00028 #include "stm8l15x.h" 00029 00030 /** @addtogroup STM8L15x_StdPeriph_Driver 00031 * @{ 00032 */ 00033 00034 /** @addtogroup EXTI 00035 * @{ 00036 */ 00037 00038 /* Exported types ------------------------------------------------------------*/ 00039 00040 /** @addtogroup EXTI_Exported_Types 00041 * @{ 00042 */ 00043 00044 /** @defgroup EXTI_Trigger 00045 * @{ 00046 */ 00047 typedef enum 00048 { 00049 EXTI_Trigger_Falling_Low = (uint8_t)0x00, /*!< Interrupt on Falling edge and Low level */ 00050 EXTI_Trigger_Rising = (uint8_t)0x01, /*!< Interrupt on Rising edge only */ 00051 EXTI_Trigger_Falling = (uint8_t)0x02, /*!< Interrupt on Falling edge only */ 00052 EXTI_Trigger_Rising_Falling = (uint8_t)0x03 /*!< Interrupt on Rising and Falling edges */ 00053 } EXTI_Trigger_TypeDef; 00054 00055 /** 00056 * @} 00057 */ 00058 00059 /** @defgroup EXTI_Half_Port 00060 * 00061 * @brief EXTI halfPort possible values 00062 * Values are coded as following: 00063 * - Bit 7: 0 => the half port is in EXTI_CONF1 register 00064 * 1 => the half port is in EXTI_CONF2 register 00065 * - Bits[6:0] => the half port selection mask 00066 * @{ 00067 */ 00068 typedef enum 00069 { 00070 EXTI_HalfPort_B_LSB = (uint8_t)0x01, /*!< Interrupt selector PB(3:0) */ 00071 EXTI_HalfPort_B_MSB = (uint8_t)0x02, /*!< Interrupt selector PB(7:4) */ 00072 EXTI_HalfPort_D_LSB = (uint8_t)0x04, /*!< Interrupt selector PD(3:0) */ 00073 EXTI_HalfPort_D_MSB = (uint8_t)0x08, /*!< Interrupt selector PD(7:4) */ 00074 EXTI_HalfPort_E_LSB = (uint8_t)0x10, /*!< Interrupt selector PE(3:0) */ 00075 EXTI_HalfPort_E_MSB = (uint8_t)0x20, /*!< Interrupt selector PE(7:4) */ 00076 EXTI_HalfPort_F_LSB = (uint8_t)0x40, /*!< Interrupt selector PF(3:0) */ 00077 EXTI_HalfPort_F_MSB = (uint8_t)0x81, /*!< Interrupt selector PF(7:4) */ 00078 EXTI_HalfPort_G_LSB = (uint8_t)0x82, /*!< Interrupt selector PG(3:0) */ 00079 EXTI_HalfPort_G_MSB = (uint8_t)0x84, /*!< Interrupt selector PG(7:4) */ 00080 EXTI_HalfPort_H_LSB = (uint8_t)0x88, /*!< Interrupt selector PH(3:0) */ 00081 EXTI_HalfPort_H_MSB = (uint8_t)0x90 /*!< Interrupt selector PH(7:4) */ 00082 } EXTI_HalfPort_TypeDef; 00083 00084 /** 00085 * @} 00086 */ 00087 00088 /** @defgroup EXTI_Port 00089 * 00090 * @brief EXTI Port possible values 00091 * Values are coded in 0xXY format where 00092 * X: the register index 00093 * X = 0: EXTI_CR3 00094 * X = 1: EXTI_CR4 00095 * Y: the number of shift to be performed 00096 * @{ 00097 */ 00098 typedef enum 00099 { 00100 EXTI_Port_B = (uint8_t)0x00, /*!< GPIO Port B */ 00101 EXTI_Port_D = (uint8_t)0x02, /*!< GPIO Port D */ 00102 EXTI_Port_E = (uint8_t)0x04, /*!< GPIO Port E */ 00103 EXTI_Port_F = (uint8_t)0x06, /*!< GPIO Port F */ 00104 EXTI_Port_G = (uint8_t)0x10, /*!< GPIO Port G */ 00105 EXTI_Port_H = (uint8_t)0x12 /*!< GPIO Port H */ 00106 } EXTI_Port_TypeDef; 00107 00108 /** 00109 * @} 00110 */ 00111 00112 /** @defgroup EXTI_Pin 00113 * 00114 * @brief EXTI PinNum possible values 00115 * Values are coded in 0xXY format where 00116 * X: the register index 00117 * X = 0: EXTI_CR1 00118 * X = 1: EXTI_CR2 00119 * Y: the number of shift to be performed 00120 * @{ 00121 */ 00122 typedef enum 00123 { 00124 EXTI_Pin_0 = (uint8_t)0x00, /*!< GPIO Pin 0 */ 00125 EXTI_Pin_1 = (uint8_t)0x02, /*!< GPIO Pin 1 */ 00126 EXTI_Pin_2 = (uint8_t)0x04, /*!< GPIO Pin 2 */ 00127 EXTI_Pin_3 = (uint8_t)0x06, /*!< GPIO Pin 3 */ 00128 EXTI_Pin_4 = (uint8_t)0x10, /*!< GPIO Pin 4 */ 00129 EXTI_Pin_5 = (uint8_t)0x12, /*!< GPIO Pin 5 */ 00130 EXTI_Pin_6 = (uint8_t)0x14, /*!< GPIO Pin 6 */ 00131 EXTI_Pin_7 = (uint8_t)0x16 /*!< GPIO Pin 7 */ 00132 } EXTI_Pin_TypeDef; 00133 00134 /** 00135 * @} 00136 */ 00137 00138 /** @defgroup EXTI_Interrupts 00139 * 00140 * @brief EXTI IT pending bit possible values 00141 * Values are coded in 0xXY format where 00142 * X: the register index 00143 * X = 00: EXTI_SR1 00144 * X = 01: EXTI_SR2 00145 * Y: the IT pending bit mask 00146 * @{ 00147 */ 00148 typedef enum 00149 { 00150 EXTI_IT_Pin0 = (uint16_t)0x0001, /*!< GPIO Pin pos 0 */ 00151 EXTI_IT_Pin1 = (uint16_t)0x0002, /*!< GPIO Pin pos 1 */ 00152 EXTI_IT_Pin2 = (uint16_t)0x0004, /*!< GPIO Pin pos 2 */ 00153 EXTI_IT_Pin3 = (uint16_t)0x0008, /*!< GPIO Pin pos 3 */ 00154 EXTI_IT_Pin4 = (uint16_t)0x0010, /*!< GPIO Pin pos 4 */ 00155 EXTI_IT_Pin5 = (uint16_t)0x0020, /*!< GPIO Pin pos 5 */ 00156 EXTI_IT_Pin6 = (uint16_t)0x0040, /*!< GPIO Pin pos 6 */ 00157 EXTI_IT_Pin7 = (uint16_t)0x0080, /*!< GPIO Pin pos 7 */ 00158 EXTI_IT_PortB = (uint16_t)0x0101, /*!< GPIO Port B */ 00159 EXTI_IT_PortD = (uint16_t)0x0102, /*!< GPIO Port D */ 00160 EXTI_IT_PortE = (uint16_t)0x0104, /*!< GPIO Port E */ 00161 EXTI_IT_PortF = (uint16_t)0x0108, /*!< GPIO Port F */ 00162 EXTI_IT_PortG = (uint16_t)0x0110, /*!< GPIO Port G */ 00163 EXTI_IT_PortH = (uint16_t)0x0120 /*!< GPIO Port H */ 00164 } EXTI_IT_TypeDef; 00165 00166 /** 00167 * @} 00168 */ 00169 00170 /** 00171 * @} 00172 */ 00173 00174 /* Exported constants --------------------------------------------------------*/ 00175 /* Exported macros -----------------------------------------------------------*/ 00176 00177 /** @addtogroup EXTI_Exported_Macros 00178 * @{ 00179 */ 00180 00181 /** 00182 * @brief Macro used by the assert function to check the different functions parameters. 00183 */ 00184 00185 /** 00186 * @brief Macro used by the assert function in order to check the different values 00187 * of EXTI Sensitivity 00188 */ 00189 #define IS_EXTI_TRIGGER(TRIGGER) \ 00190 (((TRIGGER) == EXTI_Trigger_Falling_Low) || \ 00191 ((TRIGGER) == EXTI_Trigger_Rising) || \ 00192 ((TRIGGER) == EXTI_Trigger_Falling) || \ 00193 ((TRIGGER) == EXTI_Trigger_Rising_Falling)) 00194 00195 /** 00196 * @brief Macro used by the assert function in order to check the different 00197 * half ports values for configuration. 00198 */ 00199 #define IS_EXTI_HALFPORT(HALFPORT) \ 00200 (((HALFPORT) == EXTI_HalfPort_B_LSB) ||\ 00201 ((HALFPORT) == EXTI_HalfPort_B_MSB) ||\ 00202 ((HALFPORT) == EXTI_HalfPort_D_LSB) ||\ 00203 ((HALFPORT) == EXTI_HalfPort_D_MSB) ||\ 00204 ((HALFPORT) == EXTI_HalfPort_E_LSB) ||\ 00205 ((HALFPORT) == EXTI_HalfPort_E_MSB) ||\ 00206 ((HALFPORT) == EXTI_HalfPort_F_LSB) ||\ 00207 ((HALFPORT) == EXTI_HalfPort_F_MSB) ||\ 00208 ((HALFPORT) == EXTI_HalfPort_G_LSB) ||\ 00209 ((HALFPORT) == EXTI_HalfPort_G_MSB) ||\ 00210 ((HALFPORT) == EXTI_HalfPort_H_LSB) ||\ 00211 ((HALFPORT) == EXTI_HalfPort_H_MSB)) 00212 00213 /** 00214 * @brief Macro used by the assert function in order to check the different Port Number values 00215 */ 00216 #define IS_EXTI_PORT(PORT) (((PORT) == EXTI_Port_B) ||\ 00217 ((PORT) == EXTI_Port_D) ||\ 00218 ((PORT) == EXTI_Port_E) ||\ 00219 ((PORT) == EXTI_Port_F) ||\ 00220 ((PORT) == EXTI_Port_G) ||\ 00221 ((PORT) == EXTI_Port_H)) 00222 00223 /** 00224 * @brief Macro used by the assert function in order to check the different Pin numbers values 00225 */ 00226 #define IS_EXTI_PINNUM(PINNUM) \ 00227 (((PINNUM) == EXTI_Pin_0) ||\ 00228 ((PINNUM) == EXTI_Pin_1) ||\ 00229 ((PINNUM) == EXTI_Pin_2) ||\ 00230 ((PINNUM) == EXTI_Pin_3) ||\ 00231 ((PINNUM) == EXTI_Pin_4) ||\ 00232 ((PINNUM) == EXTI_Pin_5) ||\ 00233 ((PINNUM) == EXTI_Pin_6) ||\ 00234 ((PINNUM) == EXTI_Pin_7)) 00235 00236 /** 00237 * @brief Macro used by the assert function in order to check the different flags values 00238 */ 00239 #define IS_EXTI_ITPENDINGBIT(ITPENDINGBIT) \ 00240 (((ITPENDINGBIT) == EXTI_IT_Pin0) ||\ 00241 ((ITPENDINGBIT) == EXTI_IT_Pin1) ||\ 00242 ((ITPENDINGBIT) == EXTI_IT_Pin2) ||\ 00243 ((ITPENDINGBIT) == EXTI_IT_Pin3) ||\ 00244 ((ITPENDINGBIT) == EXTI_IT_Pin4) ||\ 00245 ((ITPENDINGBIT) == EXTI_IT_Pin5) ||\ 00246 ((ITPENDINGBIT) == EXTI_IT_Pin6) ||\ 00247 ((ITPENDINGBIT) == EXTI_IT_Pin7) ||\ 00248 ((ITPENDINGBIT) == EXTI_IT_PortB) ||\ 00249 ((ITPENDINGBIT) == EXTI_IT_PortD) ||\ 00250 ((ITPENDINGBIT) == EXTI_IT_PortE) ||\ 00251 ((ITPENDINGBIT) == EXTI_IT_PortF) ||\ 00252 ((ITPENDINGBIT) == EXTI_IT_PortG) ||\ 00253 ((ITPENDINGBIT) == EXTI_IT_PortH)) 00254 /** 00255 * @} 00256 */ 00257 00258 /* Exported functions ------------------------------------------------------- */ 00259 /* EXTI configuration *********************************************************/ 00260 void EXTI_DeInit(void); 00261 void EXTI_SetPinSensitivity(EXTI_Pin_TypeDef EXTI_Pin, EXTI_Trigger_TypeDef EXTI_Trigger); 00262 void EXTI_SelectPort(EXTI_Port_TypeDef EXTI_Port); 00263 void EXTI_SetHalfPortSelection(EXTI_HalfPort_TypeDef EXTI_HalfPort, FunctionalState NewState); 00264 void EXTI_SetPortSensitivity(EXTI_Port_TypeDef EXTI_Port, EXTI_Trigger_TypeDef EXTI_Trigger); 00265 EXTI_Trigger_TypeDef EXTI_GetPinSensitivity(EXTI_Pin_TypeDef EXTI_Pin); 00266 EXTI_Trigger_TypeDef EXTI_GetPortSensitivity(EXTI_Port_TypeDef EXTI_Port); 00267 00268 /* EXTI Interrupt status management *******************************************/ 00269 ITStatus EXTI_GetITStatus(EXTI_IT_TypeDef EXTI_IT); 00270 void EXTI_ClearITPendingBit(EXTI_IT_TypeDef EXTI_IT); 00271 00272 #endif /* __STM8L15x_EXTI_H */ 00273 00274 /** 00275 * @} 00276 */ 00277 00278 /** 00279 * @} 00280 */ 00281 00282 /******************* (C) COPYRIGHT 2011 STMicroelectronics *****END OF FILE****/