123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227 |
- /*
- * Copyright (c) 2006-2020, YICHIP Development Team
- * @file yc_exit.c
- * @brief source file for setting exit
- *
- * Change Logs:
- * Date Author Version Notes
- * 2021-12-24 yangzhengfeng V1.0.0 Modify the register module configuration
- * 2021-01-03 wangjingfan V1.0.1 Compile error correction
- * 2021-01-20 yangzhengfeng V1.0.2 Update library function
- */
- #include "yc_exti.h"
- /**
- * @brief Clear interrupt flag
- * @param EXTI_Line:EXTI_Line_0...EXTI_Line_4
- * @param EXTI_PinSource:EXTI_PinSource0...EXTI_PinSource15
- * @retval none
- */
- void EXTI_ClearITPendingBit(EXTI_LineTypeDef EXTI_Line, EXTI_PIN_TypeDef EXTI_PinSource)
- {
- _ASSERT(IS_EXTI_LINE(EXTI_Line));
- _ASSERT(IS_EXTI_PIN_SOURCE(EXTI_PinSource));
- MGPIO->IRQ_STATUS.reg[EXTI_Line] |= EXTI_PinSource;
- }
- /**
- * @brief Deinitializes the EXTI registers to default reset values.
- * @param none
- * @retval none
- */
- void EXTI_DeInit()
- {
- uint32_t i;
- for (i = 0; i < EXIT_Num; i++)
- {
- MGPIO->INTR.reg[i] = 0;
- MGPIO->IRQ_LEVEL.reg[i] = 0;
- MGPIO->IRQ_RISE.reg[i] = 0;
- MGPIO->IRQ_FALL.reg[i] = 0;
- }
- }
- /**
- * @brief get interrupt status
- * @param EXTI_Line:EXTI_Line_0...EXTI_Line_4
- * @retval none
- */
- uint16_t EXTI_GetITLineStatus(EXTI_LineTypeDef EXTI_Line)
- {
- _ASSERT(IS_EXTI_LINE(EXTI_Line));
- return MGPIO->INTR.reg[EXTI_Line];
- }
- /**
- * @brief get interrupt pinsource status
- * @param EXTI_Line:EXTI_Line_0...EXTI_Line_4
- * @param EXTI_PinSource:EXTI_PinSource0...EXTI_PinSource15
- * @retval none
- */
- uint16_t EXTI_GetITEXTI_PinSourceStatus(EXTI_LineTypeDef EXTI_Line, EXTI_PIN_TypeDef EXTI_PinSource)
- {
- _ASSERT(IS_EXTI_LINE(EXTI_Line));
- _ASSERT(IS_EXTI_PIN_SOURCE(EXTI_PinSource));
- if(MGPIO->INTR.reg[EXTI_Line] & EXTI_PinSource)
- {
- return ENABLE;
- }
- else
- {
- return DISABLE;
- }
- }
- /**
- * @brief EXTI LineConfig
- * @param EXTI_Line:EXTI_Line_0...EXTI_Line_4
- * @param EXTI_PinSource:EXTI_PinSource0...EXTI_PinSource15
- * @param EXTI_Trigger:EXTI Trigger mode
- * @retval none
- */
- void EXTI_LineConfig(EXTI_LineTypeDef EXTI_Line, EXTI_PIN_TypeDef EXTI_PinSource, EXTI_TriggerTypeDef EXTI_Trigger)
- {
- _ASSERT(IS_EXTI_LINE(EXTI_Line));
- _ASSERT(IS_EXTI_PIN_SOURCE(EXTI_PinSource));
- _ASSERT(IS_TRIG_TYPEDEF(EXTI_Trigger));
- uint16_t val_intr_lts,val_intr_rts,val_intr_fts,val_intr_en;
- switch (EXTI_Trigger)
- {
- case EXTI_Trigger_Off:
- val_intr_en = ~EXTI_PinSource;
- val_intr_lts = ~EXTI_PinSource;
- val_intr_rts = ~EXTI_PinSource;
- val_intr_fts = ~EXTI_PinSource;
- break;
- case EXTI_Trigger_HighLev:
- val_intr_en = EXTI_PinSource;
- val_intr_lts = ~EXTI_PinSource;
- val_intr_rts = ~EXTI_PinSource;
- val_intr_fts = ~EXTI_PinSource;
- break;
- case EXTI_Trigger_LowLev:
- val_intr_en = EXTI_PinSource;
- val_intr_lts = EXTI_PinSource;
- val_intr_rts = ~EXTI_PinSource;
- val_intr_fts = ~EXTI_PinSource;
- break;
- case EXTI_Trigger_Rising:
- val_intr_en = EXTI_PinSource;
- val_intr_lts = ~EXTI_PinSource;
- val_intr_rts = EXTI_PinSource;
- val_intr_fts = ~EXTI_PinSource;
- break;
- case EXTI_Trigger_Falling:
- val_intr_en = EXTI_PinSource;
- val_intr_lts = ~EXTI_PinSource;
- val_intr_rts = ~EXTI_PinSource;
- val_intr_fts = EXTI_PinSource;
- break;
- case EXTI_Trigger_Rising_Falling:
- val_intr_en = EXTI_PinSource;
- val_intr_lts = ~EXTI_PinSource;
- val_intr_rts = EXTI_PinSource;
- val_intr_fts = EXTI_PinSource;
- break;
- default:
- break;
- }
- if (EXTI_Trigger == EXTI_Trigger_Off)
- {
- MGPIO->INTR.reg[EXTI_Line] &= val_intr_en;
- MGPIO->IRQ_LEVEL.reg[EXTI_Line] &= val_intr_lts;
- MGPIO->IRQ_RISE.reg[EXTI_Line] &= val_intr_rts;
- MGPIO->IRQ_FALL.reg[EXTI_Line] &= val_intr_fts;
- }
- else if (EXTI_Trigger == EXTI_Trigger_HighLev )
- {
- MGPIO->IRQ_LEVEL.reg[EXTI_Line] &= val_intr_lts;
- MGPIO->IRQ_RISE.reg[EXTI_Line] &= val_intr_rts;
- MGPIO->IRQ_FALL.reg[EXTI_Line] &= val_intr_fts;
- MGPIO->INTR.reg[EXTI_Line] |= val_intr_en;
- }
- else if (EXTI_Trigger == EXTI_Trigger_LowLev )
- {
- MGPIO->IRQ_LEVEL.reg[EXTI_Line] |= val_intr_lts;
- MGPIO->IRQ_RISE.reg[EXTI_Line] &= val_intr_rts;
- MGPIO->IRQ_FALL.reg[EXTI_Line] &= val_intr_fts;
- MGPIO->INTR.reg[EXTI_Line] |= val_intr_en;
- }
- else if (EXTI_Trigger == EXTI_Trigger_Rising )
- {
- MGPIO->IRQ_LEVEL.reg[EXTI_Line] &= val_intr_lts;
- MGPIO->IRQ_RISE.reg[EXTI_Line] |= val_intr_rts;
- MGPIO->IRQ_FALL.reg[EXTI_Line] &= val_intr_fts;
- MGPIO->INTR.reg[EXTI_Line] |= val_intr_en;
- }
- else if (EXTI_Trigger == EXTI_Trigger_Falling )
- {
- MGPIO->IRQ_LEVEL.reg[EXTI_Line] &= val_intr_lts;
- MGPIO->IRQ_RISE.reg[EXTI_Line] &= val_intr_rts;
- MGPIO->IRQ_FALL.reg[EXTI_Line] |= val_intr_fts;
- MGPIO->INTR.reg[EXTI_Line] |= val_intr_en;
- }
- else if (EXTI_Trigger == EXTI_Trigger_Rising_Falling )
- {
- MGPIO->IRQ_LEVEL.reg[EXTI_Line] &= val_intr_lts;
- MGPIO->IRQ_RISE.reg[EXTI_Line] |= val_intr_rts;
- MGPIO->IRQ_FALL.reg[EXTI_Line] |= val_intr_fts;
- MGPIO->INTR.reg[EXTI_Line] |= val_intr_en;
- }
- }
- //extern void VBAT_IRQHandler(void);
- //extern void EXTI0_IRQHandler(void);
- //extern void EXTI1_IRQHandler(void);
- //extern void EXTI2_IRQHandler(void);
- //extern void EXTI3_IRQHandler(void);
- //extern void EXTI4_IRQHandler(void);
- //void GPIO_IRQHandler()
- //{
- // uint8_t Exti_irq_index;
- // NVIC_DisableIRQ(GPIO_IRQn);
- // if (MSYSCTRL->CHGR_EVENT_IRQ.bit.VBAT_OV & MSYSCTRL->CHGR_EVENT_ICTRL.bit.VBAT_OV_IE)
- // {
- // //VBAT_IRQHandler();
- // }
- // Exti_irq_index = MGPIO->IRQ_NUM.reg;
- // if(MGPIO->INTR.reg[Exti_irq_index/EXIT_Pin_Num] &(1 << (Exti_irq_index%EXIT_Pin_Num)))
- // {
- // switch (Exti_irq_index/EXIT_Pin_Num)
- // {
- // case EXTI_Line_0:
- // EXTI0_IRQHandler();
- // break;
- // case EXTI_Line_1:
- // EXTI1_IRQHandler();
- // break;
- // case EXTI_Line_2:
- // EXTI2_IRQHandler();
- // break;
- // case EXTI_Line_3:
- // EXTI3_IRQHandler();
- // break;
- // case EXTI_Line_4:
- // EXTI4_IRQHandler();
- // break;
- // default:
- // break;
- // }
- // EXTI_ClearITPendingBit((EXTI_LineTypeDef)(Exti_irq_index/EXIT_Pin_Num),(EXTI_PIN_TypeDef)(BIT(Exti_irq_index%EXIT_Pin_Num)));
- // }
- // NVIC_EnableIRQ(GPIO_IRQn);
- //}
- /************************ (C) COPYRIGHT Yichip Microelectronics *****END OF FILE****/
|