STM8L15x Standard Peripherals Drivers: stm8l15x_exti.h Source File

STM8L15x/16x Standard Peripherals Drivers

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>&copy; 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****/
STM8S Firmware Library: Overview

 

 

 

For complete documentation on STM8L15x 8-bit microcontrollers platform visit www.st.com