/**
|
******************************************************************************
|
* @file xl_irq.h
|
* @author software group
|
* @brief This file contains all the functions prototypes for the IRQ
|
* firmware library.
|
******************************************************************************
|
* @attention
|
*
|
* 2019 by Chipways Communications,Inc. All Rights Reserved.
|
* This software is supplied under the terms of a license
|
* agreement or non-disclosure agreement with Chipways.
|
* Passing on and copying of this document,and communication
|
* of its contents is not permitted without prior written
|
* authorization.
|
*
|
* <h2><center>© COPYRIGHT 2019 Chipways</center></h2>
|
******************************************************************************
|
*/
|
#ifndef XL_IRQ_H__
|
#define XL_IRQ_H__
|
|
#ifdef __cplusplus
|
extern "C" {
|
#endif
|
/* Includes ---------------------------------------------------------------*/
|
#include "XL6600.h"
|
/* Register define ------------------------------------------------------------*/
|
|
/* SC Bit Fields */
|
#define IRQ_SC_IRQMOD_MASK 0x1u
|
#define IRQ_SC_IRQMOD_SHIFT 0
|
#define IRQ_SC_IRQIE_MASK 0x2u
|
#define IRQ_SC_IRQIE_SHIFT 1
|
#define IRQ_SC_IRQACK_MASK 0x4u
|
#define IRQ_SC_IRQACK_SHIFT 2
|
#define IRQ_SC_IRQF_MASK 0x8u
|
#define IRQ_SC_IRQF_SHIFT 3
|
#define IRQ_SC_IRQPE_MASK 0x10u
|
#define IRQ_SC_IRQPE_SHIFT 4
|
#define IRQ_SC_IRQEDG_MASK 0x20u
|
#define IRQ_SC_IRQEDG_SHIFT 5
|
#define IRQ_SC_IRQPDD_MASK 0x40u
|
#define IRQ_SC_IRQPDD_SHIFT 6
|
|
/** IRQ - Register Layout Typedef */
|
typedef struct {
|
__IO uint32_t SC[16]; /*!< ÍⲿÖжÏÒý½ÅÇëÇó״̬ºÍ¿ØÖƼĴæÆ÷, array offset: 0x00, array step: 0x4 */
|
} IRQ_Type, *IRQ_MemMapPtr;
|
extern IRQ_Type * IRQ;
|
|
|
/** @addtogroup XL6600_StdPeriph_Driver
|
* @{
|
*/
|
|
/** @addtogroup IRQ
|
* @{
|
*/
|
|
/* Exported types ------------------------------------------------------------*/
|
|
/**
|
* @brief IRQ³õʼ»¯½á¹¹ÌåµÄ¶¨Òå
|
*
|
*/
|
typedef struct
|
{
|
uint32_t IRQ_EdgeSelect; /*!< ÖжÏÇëÇó±ßÑØÑ¡Ôñ */
|
uint32_t IRQ_ModeSelect; /*!< Öжϼì²âģʽѡÔñ */
|
|
}IRQ_InitTypeDef, *IRQ_InitConfigPtr;
|
|
|
|
/* Exported constants --------------------------------------------------------*/
|
/** @defgroup IRQ_Exported_Constants IRQÄ£¿éʹÓòÎÊý¶¨Òå
|
* @{
|
*/
|
|
/**
|
* @defgroup IRQ_RequestEdge_Select IRQ´¥·¢±ßÑØ»òµçƽѡÔñ
|
* @{
|
*/
|
#define IRQ_Falledge_Lowlevel (uint8_t)0x00 /*!< ϽµÑØºÍµÍµçÆ½´¥·¢ */
|
#define IRQ_Riseedge_Highlevel (uint8_t)0x20 /*!< ÉÏÉýÑØºÍ¸ßµçƽ´¥·¢ */
|
/**
|
* @}
|
*/
|
|
/**
|
* @defgroup IRQ_DetectionMode_Select IRQ´¥·¢Ä£Ê½¶¨Òå
|
* @{
|
*/
|
#define IRQ_Detect_Edge (uint8_t)0x0 /*!< ½ö±ßÑØ´¥·¢ */
|
#define IRQ_Detect_EdgeANDLevel (uint8_t)0x1 /*!< ±ßÑØ´¥·¢ºÍµçƽ´¥·¢ */
|
/**
|
* @}
|
*/
|
|
|
/**
|
* @defgroup IRQ_ChannelList_Select IRQͨµÀÑ¡Ôñ
|
* @{
|
*/
|
#define EXTI0 0 /*!< ÍⲿÖжÏͨµÀ0. */
|
#define EXTI1 1 /*!< ÍⲿÖжÏͨµÀ1. */
|
#define EXTI2 2 /*!< ÍⲿÖжÏͨµÀ2. */
|
#define EXTI3 3 /*!< ÍⲿÖжÏͨµÀ3. */
|
#define EXTI4 4 /*!< ÍⲿÖжÏͨµÀ4. */
|
#define EXTI5 5 /*!< ÍⲿÖжÏͨµÀ5. */
|
#define EXTI6 6 /*!< ÍⲿÖжÏͨµÀ6. */
|
#define EXTI7 7 /*!< ÍⲿÖжÏͨµÀ7. */
|
#define EXTI8 8 /*!< ÍⲿÖжÏͨµÀ8. */
|
#define EXTI9 9 /*!< ÍⲿÖжÏͨµÀ9. */
|
#define EXTI10 10 /*!< ÍⲿÖжÏͨµÀ10. */
|
#define EXTI11 11 /*!< ÍⲿÖжÏͨµÀ11. */
|
#define EXTI12 12 /*!< ÍⲿÖжÏͨµÀ12. */
|
#define EXTI13 13 /*!< ÍⲿÖжÏͨµÀ13. */
|
#define EXTI14 14 /*!< ÍⲿÖжÏͨµÀ14. */
|
#define EXTI15 15 /*!< ÍⲿÖжÏͨµÀ15. */
|
/**
|
* @}
|
*/
|
|
/**
|
* @}
|
*/
|
|
/* Exported macro ------------------------------------------------------------*/
|
/* Exported functions --------------------------------------------------------*/
|
void IRQ_DeInit(IRQ_Type *IRQx,uint8_t IRQ_Channel);
|
void IRQ_Init(IRQ_Type *IRQx, uint8_t IRQ_Channel, const IRQ_InitTypeDef *IRQ_InitStuct);
|
void IRQ_PullDevDisableCmd(IRQ_Type *IRQx,uint8_t IRQ_Channel, FunctionalState NewState);
|
void IRQ_PinEnableCmd(IRQ_Type *IRQx,uint8_t IRQ_Channel,FunctionalState NewState);
|
void IRQ_InterruptEn(IRQ_Type *IRQx,uint8_t IRQ_Channel,FunctionalState NewState);
|
FlagStatus IRQ_GetFlag(const IRQ_Type *IRQx,uint8_t IRQ_Channel);
|
void IRQ_ClrFlag(IRQ_Type *IRQx,uint8_t IRQ_Channel);
|
|
|
#ifdef __cplusplus
|
}
|
#endif
|
|
#endif /*__XL_IRQ_H__ */
|
|
/**
|
* @}
|
*/
|
|
/**
|
* @}
|
*/
|