123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196 |
- /**
- ******************************************************************************
- * @brief EXTI functions of the firmware library.
- ******************************************************************************
- */
- /* Includes ------------------------------------------------------------------*/
- #include "gd32f10x_exti.h"
- /** @addtogroup GD32F10x_Firmware
- * @{
- */
- /** @defgroup EXTI
- * @brief EXTI driver modules
- * @{
- */
- /** @defgroup EXTI_Private_Defines
- * @{
- */
- /* No interrupt line is selected */
- #define EXTI_LINE_NULL ((uint32_t)0x00000000)
- /* ----------------- EXTI Reset Configuration Registers ------------------ */
- /* The reset value of EXTI_IER */
- #define EXTI_IER_RST ((uint32_t)0x00000000)
- /* The reset value of EXTI_EER */
- #define EXTI_EER_RST ((uint32_t)0x00000000)
- /* The reset value of EXTI_RTE */
- #define EXTI_RTE_RST ((uint32_t)0x00000000)
- /* The reset value of EXTI_FTE */
- #define EXTI_FTE_RST ((uint32_t)0x00000000)
- /* The reset value of EXTI_PD */
- #define EXTI_PD_RST ((uint32_t)0x000FFFFF)
- /**
- * @}
- */
- /** @defgroup EXTI_Private_Functions
- * @{
- */
- /**
- * @brief Reset the EXTI peripheral registers and the struct EXTI_InitPara.
- * @param EXTI_InitParaStruct: the struct EXTI_InitPara pointer.
- * @retval None
- */
- void EXTI_DeInit(EXTI_InitPara *EXTI_InitParaStruct)
- {
- /* Reset the EXTI peripheral registers */
- EXTI->IER = EXTI_IER_RST;
- EXTI->EER = EXTI_EER_RST;
- EXTI->RTE = EXTI_RTE_RST;
- EXTI->FTE = EXTI_FTE_RST;
- EXTI->PD = EXTI_PD_RST;
- /* Reset the struct EXTI_InitPara */
- EXTI_InitParaStruct->EXTI_LINE = EXTI_LINE_NULL;
- EXTI_InitParaStruct->EXTI_Mode = EXTI_Mode_Interrupt;
- EXTI_InitParaStruct->EXTI_Trigger = EXTI_Trigger_Falling;
- EXTI_InitParaStruct->EXTI_LINEEnable = DISABLE;
- }
- /**
- * @brief Initialize the EXTI peripheral registers.
- * @param EXTI_InitParaStruct: the struct EXTI_InitPara pointer.
- * @retval None
- */
- void EXTI_Init(EXTI_InitPara *EXTI_InitParaStruct)
- {
- uint32_t temp = 0;
- temp = (uint32_t)EXTI_BASE;
- if (EXTI_InitParaStruct->EXTI_LINEEnable != DISABLE) {
- /* Clear Interrupt and Event from EXTI Lines */
- EXTI->IER &= ~EXTI_InitParaStruct->EXTI_LINE;
- EXTI->EER &= ~EXTI_InitParaStruct->EXTI_LINE;
- temp += EXTI_InitParaStruct->EXTI_Mode;
- *(__IO uint32_t *) temp |= EXTI_InitParaStruct->EXTI_LINE;
- /* Clear the Rising and Falling edge trigger enable registers */
- EXTI->RTE &= ~EXTI_InitParaStruct->EXTI_LINE;
- EXTI->FTE &= ~EXTI_InitParaStruct->EXTI_LINE;
- /* Select the trigger type for the selected EXTI Lines */
- if (EXTI_InitParaStruct->EXTI_Trigger == EXTI_Trigger_Rising_Falling) {
- /* Rising and Falling edge trigger are both selected */
- EXTI->RTE |= EXTI_InitParaStruct->EXTI_LINE;
- EXTI->FTE |= EXTI_InitParaStruct->EXTI_LINE;
- } else {
- temp = (uint32_t)EXTI_BASE;
- temp += EXTI_InitParaStruct->EXTI_Trigger;
- *(__IO uint32_t *) temp |= EXTI_InitParaStruct->EXTI_LINE;
- }
- } else {
- temp += EXTI_InitParaStruct->EXTI_Mode;
- /* Disable the selected EXTI lines */
- *(__IO uint32_t *) temp &= ~EXTI_InitParaStruct->EXTI_LINE;
- }
- }
- /**
- * @brief Activate the software interrupt or event request of the selected EXTI Lines.
- * @param EXTI_LINE: the selected EXTI lines.
- * This parameter can be any combination of EXTI_LINEx where x can be (0..19).
- * @retval None
- */
- void EXTI_SWINT_Enable(uint32_t EXTI_LINE)
- {
- /* Enable the software interrupt or event request of the selected EXTI Lines */
- EXTI->SIE |= EXTI_LINE;
- }
- /**
- * @brief Get the bit flag of the selected EXTI lines.
- * @param EXTI_LINE: the selected EXTI lines.
- * This parameter can be any combination of EXTI_LINEx where x can be (0..19).
- * @retval The new value of EXTI_LINE (SET or RESET).
- */
- TypeState EXTI_GetBitState(uint32_t EXTI_LINE)
- {
- /* Check and get the selected EXTI lines flag */
- if ((EXTI->PD & EXTI_LINE) != (uint32_t)RESET) {
- /* EXTI_LINE bit is SET */
- return SET;
- } else {
- /* EXTI_LINE bit is RESET */
- return RESET;
- }
- }
- /**
- * @brief Clear the bit flag of the selected EXTI lines.
- * @param EXTI_LINE: the selected EXTI lines.
- * This parameter can be any combination of EXTI_LINEx where x can be (0..19).
- * @retval None
- */
- void EXTI_ClearBitState(uint32_t EXTI_LINE)
- {
- /* Clear the bit flag of the selected EXTI lines */
- EXTI->PD = EXTI_LINE;
- }
- /**
- * @brief Get the interrupt bit flag of the selected EXTI lines..
- * @param EXTI_LINE: the selected EXTI lines.
- * This parameter can be any combination of EXTI_LINEx where x can be (0..19).
- * @retval The new value of EXTI_LINE (SET or RESET).
- */
- TypeState EXTI_GetIntBitState(uint32_t EXTI_LINE)
- {
- /* Check and get the interrupt source is set or not */
- if (((EXTI->PD & EXTI_LINE) != (uint32_t)RESET) && ((EXTI->IER & EXTI_LINE) != (uint32_t)RESET)) {
- /* The interrupt bit of EXTI_LINE is SET */
- return SET;
- } else {
- /* The interrupt bit of EXTI_LINE is RESET */
- return RESET;
- }
- }
- /**
- * @brief Clear the interrupt bit flag of the selected EXTI lines.
- * @param EXTI_LINE: the selected EXTI lines.
- * This parameter can be any combination of EXTI_LINEx where x can be (0..19).
- * @retval None
- */
- void EXTI_ClearIntBitState(uint32_t EXTI_LINE)
- {
- /* Clear the interrupt bit flag of the selected EXTI lines */
- EXTI->PD = EXTI_LINE;
- }
- /**
- * @}
- */
- /**
- * @}
- */
- /**
- * @}
- */
|