Files
hc32f460_boot/mcu/lib/inc/hc32_ll_event_port.h
T
2026-04-23 13:49:53 +08:00

234 lines
7.6 KiB
C

/**
*******************************************************************************
* @file hc32_ll_event_port.h
* @brief This file contains all the functions prototypes of the Event Port
* driver library.
@verbatim
Change Logs:
Date Author Notes
2022-03-31 CDT First version
@endverbatim
*******************************************************************************
* Copyright (C) 2022-2023, Xiaohua Semiconductor Co., Ltd. All rights reserved.
*
* This software component is licensed by XHSC under BSD 3-Clause license
* (the "License"); You may not use this file except in compliance with the
* License. You may obtain a copy of the License at:
* opensource.org/licenses/BSD-3-Clause
*
*******************************************************************************
*/
#ifndef __HC32_LL_EVENT_PORT_H__
#define __HC32_LL_EVENT_PORT_H__
/* C binding of definitions if building with C++ compiler */
#ifdef __cplusplus
extern "C"
{
#endif
/*******************************************************************************
* Include files
******************************************************************************/
#include "hc32_ll_def.h"
#include "hc32f4xx.h"
#include "hc32f4xx_conf.h"
/**
* @addtogroup LL_Driver
* @{
*/
/**
* @addtogroup LL_EVENT_PORT
* @{
*/
#if (LL_EVENT_PORT_ENABLE == DDL_ON)
/*******************************************************************************
* Global type definitions ('typedef')
******************************************************************************/
/**
* @defgroup EP_Global_Types Event Port Global Types
* @{
*/
/**
* @brief Event Pin Set and Reset enumeration
*/
typedef enum {
EVT_PIN_RESET = 0U, /*!< Pin reset */
EVT_PIN_SET = 1U /*!< Pin set */
} en_ep_state_t;
typedef struct {
uint32_t u32PinDir; /*!< Input/Output setting, @ref EP_PinDirection_Sel for details */
en_ep_state_t enPinState; /*!< Corresponding pin initial state, @ref en_ep_state_t for details */
uint32_t u32PinTriggerOps; /*!< Corresponding pin state after triggered, @ref EP_TriggerOps_Sel for details */
uint32_t u32Edge; /*!< Event port trigger edge, @ref EP_Trigger_Sel for details */
uint32_t u32Filter; /*!< Filter clock function setting, @ref EP_FilterClock_Sel for details */
uint32_t u32FilterClock; /*!< Filter clock, ref@ EP_FilterClock_Div for details */
} stc_ep_init_t;
/**
* @}
*/
/*******************************************************************************
* Global pre-processor symbols/macros ('#define')
******************************************************************************/
/**
* @defgroup EP_Global_Macros Event Port Global Macros
* @{
*/
/**
* @defgroup EP_Port_source EP Port Source
* @{
*/
#define EVT_PORT_1 (0U) /*!< Event port 1 */
#define EVT_PORT_2 (1U) /*!< Event port 2 */
#define EVT_PORT_3 (2U) /*!< Event port 3 */
#define EVT_PORT_4 (3U) /*!< Event port 4 */
/**
* @}
*/
/**
* @defgroup EP_pins_define EP Pin Source
* @{
*/
#define EVT_PIN_00 (0x0001U) /*!< Event port Pin 00 */
#define EVT_PIN_01 (0x0002U) /*!< Event port Pin 01 */
#define EVT_PIN_02 (0x0004U) /*!< Event port Pin 02 */
#define EVT_PIN_03 (0x0008U) /*!< Event port Pin 03 */
#define EVT_PIN_04 (0x0010U) /*!< Event port Pin 04 */
#define EVT_PIN_05 (0x0020U) /*!< Event port Pin 05 */
#define EVT_PIN_06 (0x0040U) /*!< Event port Pin 06 */
#define EVT_PIN_07 (0x0080U) /*!< Event port Pin 07 */
#define EVT_PIN_08 (0x0100U) /*!< Event port Pin 08 */
#define EVT_PIN_09 (0x0200U) /*!< Event port Pin 09 */
#define EVT_PIN_10 (0x0400U) /*!< Event port Pin 10 */
#define EVT_PIN_11 (0x0800U) /*!< Event port Pin 11 */
#define EVT_PIN_12 (0x1000U) /*!< Event port Pin 12 */
#define EVT_PIN_13 (0x2000U) /*!< Event port Pin 13 */
#define EVT_PIN_14 (0x4000U) /*!< Event port Pin 14 */
#define EVT_PIN_15 (0x8000U) /*!< Event port Pin 15 */
#define EVT_PIN_All (0xFFFFU) /*!< All event pins are selected */
#define EVT_PIN_MASK (0xFFFFU) /*!< Event pin mask for assert test */
/**
* @}
*/
/**
* @defgroup EP_PinDirection_Sel EP Pin Input/Output Direction Selection
* @{
*/
#define EP_DIR_IN (0UL) /*!< EP input */
#define EP_DIR_OUT (1UL) /*!< EP output */
/**
* @}
*/
/**
* @defgroup EP_FilterClock_Sel Event Port Filter Function Selection
* @{
*/
#define EP_FILTER_OFF (0UL) /*!< EP filter function OFF */
#define EP_FILTER_ON (1UL) /*!< EP filter function ON */
/**
* @}
*/
/**
* @defgroup EP_FilterClock_Div Event Port Filter Sampling Clock Division Selection
* @{
*/
#define EP_FCLK_DIV1 (0UL) /*!< PCLK as EP filter clock source */
#define EP_FCLK_DIV8 (1UL << AOS_PEVNTNFCR_DIVS1_POS) /*!< PCLK div8 as EP filter clock source */
#define EP_FCLK_DIV32 (2UL << AOS_PEVNTNFCR_DIVS1_POS) /*!< PCLK div32 as EP filter clock source */
#define EP_FCLK_DIV64 (3UL << AOS_PEVNTNFCR_DIVS1_POS) /*!< PCLK div64 as EP filter clock source */
/**
* @}
*/
/**
* @defgroup EP_Trigger_Sel Event Port Trigger Edge Selection
* @{
*/
#define EP_TRIG_NONE (0UL) /*!< No Trigger by edge */
#define EP_TRIG_FALLING (1UL) /*!< Trigger by falling edge */
#define EP_TRIG_RISING (2UL) /*!< Trigger by rising edge */
#define EP_TRIG_BOTH (3UL) /*!< Trigger by falling and rising edge */
/**
* @}
*/
/**
* @defgroup EP_TriggerOps_Sel Event Port Operation
* @{
*/
#define EP_OPS_NONE (0UL) /*!< Pin no action after triggered */
#define EP_OPS_LOW (1UL) /*!< Pin ouput low after triggered */
#define EP_OPS_HIGH (2UL) /*!< Pin ouput high after triggered */
#define EP_OPS_TOGGLE (3UL) /*!< Pin toggle after triggered */
/**
* @}
*/
/**
* @}
*/
/*******************************************************************************
* Global variable definitions ('extern')
******************************************************************************/
/*******************************************************************************
Global function prototypes (definition in C source)
******************************************************************************/
/**
* @addtogroup EP_Global_Functions
* @{
*/
void EP_DeInit(void);
int32_t EP_StructInit(stc_ep_init_t *pstcEventPortInit);
int32_t EP_Init(uint8_t u8EventPort, uint16_t u16EventPin, const stc_ep_init_t *pstcEventPortInit);
int32_t EP_SetTriggerEdge(uint8_t u8EventPort, uint16_t u16EventPin, uint32_t u32Edge);
int32_t EP_SetTriggerOps(uint8_t u8EventPort, uint16_t u16EventPin, uint32_t u32Ops);
en_ep_state_t EP_ReadInputPins(uint8_t u8EventPort, uint16_t u16EventPin);
uint16_t EP_ReadInputPort(uint8_t u8EventPort);
en_ep_state_t EP_ReadOutputPins(uint8_t u8EventPort, uint16_t u16EventPin);
uint16_t EP_ReadOutputPort(uint8_t u8EventPort);
void EP_SetPins(uint8_t u8EventPort, uint16_t u16EventPin);
void EP_ResetPins(uint8_t u8EventPort, uint16_t u16EventPin);
void EP_SetDir(uint8_t u8EventPort, uint16_t u16EventPin, uint32_t u32Dir);
/**
* @}
*/
#endif /* LL_EVENT_PORT_ENABLE */
/**
* @}
*/
/**
* @}
*/
#ifdef __cplusplus
}
#endif
#endif /* __HC32_LL_EVENT_PORT_H__ */
/*******************************************************************************
* EOF (not truncated)
******************************************************************************/