mirror of
https://github.com/QIDITECH/klipper.git
synced 2026-01-31 07:58:42 +03:00
153 lines
12 KiB
C
153 lines
12 KiB
C
/*******************************************************************************
|
||
* Copyright (C) 2020, Huada Semiconductor Co., Ltd. All rights reserved.
|
||
*
|
||
* This software component is licensed by HDSC 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
|
||
*/
|
||
/******************************************************************************/
|
||
/** \file hc32f460_timer4_sevt.h
|
||
**
|
||
** A detailed description is available at
|
||
** @link Timer4SevtGroup Timer4SEVT description @endlink
|
||
**
|
||
** - 2018-11-02 CDT First version for Device Driver Library of Timer4SEVT.
|
||
**
|
||
******************************************************************************/
|
||
#ifndef __HC32F460_TIMER4_SEVT_H__
|
||
#define __HC32F460_TIMER4_SEVT_H__
|
||
|
||
/*******************************************************************************
|
||
* Include files
|
||
******************************************************************************/
|
||
#include "hc32_common.h"
|
||
|
||
/* C binding of definitions if building with C++ compiler */
|
||
#ifdef __cplusplus
|
||
extern "C"
|
||
{
|
||
#endif
|
||
|
||
/**
|
||
*******************************************************************************
|
||
** \defgroup Timer4SevtGroup Timer4 Special Event(Timer4SEVT)
|
||
**
|
||
******************************************************************************/
|
||
//@{
|
||
|
||
/*******************************************************************************
|
||
* Global type definitions ('typedef')
|
||
******************************************************************************/
|
||
/**
|
||
*******************************************************************************
|
||
** \brief Timer4 SEVT channel enumeration
|
||
**
|
||
******************************************************************************/
|
||
typedef enum en_timer4_sevt_ch
|
||
{
|
||
Timer4SevtCh0 = 0u, ///< Timer4 SEVT channel:0
|
||
Timer4SevtCh1 = 1u, ///< Timer4 SEVT channel:1
|
||
Timer4SevtCh2 = 2u, ///< Timer4 SEVT channel:2
|
||
Timer4SevtCh3 = 3u, ///< Timer4 SEVT channel:3
|
||
Timer4SevtCh4 = 4u, ///< Timer4 SEVT channel:4
|
||
Timer4SevtCh5 = 5u, ///< Timer4 SEVT channel:5
|
||
} en_timer4_sevt_ch_t;
|
||
|
||
/**
|
||
*******************************************************************************
|
||
** \brief Timer4 Special-EVT buffer type of SCCR and SCMR
|
||
**
|
||
******************************************************************************/
|
||
typedef enum en_timer4_sevt_buf
|
||
{
|
||
SevtBufDisable = 0u, ///< Disable Timer4 Special-EVT buffer function
|
||
SevtBufCntZero = 1u, ///< Timer4 Special-EVT transfer buffer register of SCCR and SCMR when counter value of Cnt connected= 0x0000
|
||
SevtBufCntPeak = 2u, ///< Timer4 Special-EVT transfer buffer register of SCCR and SCMR when counter value of Cnt connected= TCCP
|
||
SevtBufCntZeroOrCntPeak = 3u, ///< Timer4 Special-EVT transfer buffer register of SCCR and SCMR both when counter value of Cnt connected= 0x0000 and TCCP
|
||
SevtBufCntZeroZicZero = 4u, ///< Timer4 Special-EVT transfer buffer register of SCCR and SCMR when counter value of Cnt connected= 0x0000 and zero value detection mask counter value is 0
|
||
SevtBufCntPeakPicZero = 5u, ///< Timer4 Special-EVT transfer buffer register of SCCR and SCMR when counter value of Cnt connected= peak and peak value detection mask counter value is 0
|
||
SevtBufCntZeroZicZeroOrCntPeakPicZero = 6u, ///< Timer4 Special-EVT transfer buffer register of SCCR and SCMR when counter value of Cnt connected= 0x0000 and zero value detection mask counter value is 0
|
||
///< or counter value of CNT connected= peak and peak value detection mask counter value is 0
|
||
} en_timer4_sevt_buf_t;
|
||
|
||
/**
|
||
*******************************************************************************
|
||
** \brief Timer4 Special-EVT output trigger signal type
|
||
**
|
||
******************************************************************************/
|
||
typedef enum en_timer4_sevt_trigger_evt
|
||
{
|
||
SevtTrgEvtSCMUH = 0u, ///< Timer4 Special-EVT Event: TMR4_Ux_SCMUH
|
||
SevtTrgEvtSCMUL = 1u, ///< Timer4 Special-EVT Event: TMR4_Ux_SCMUL
|
||
SevtTrgEvtSCMVH = 2u, ///< Timer4 Special-EVT Event: TMR4_Ux_SCMVH
|
||
SevtTrgEvtSCMVL = 3u, ///< Timer4 Special-EVT Event: TMR4_Ux_SCMVL
|
||
SevtTrgEvtSCMWH = 4u, ///< Timer4 Special-EVT Event: TMR4_Ux_SCMWH
|
||
SevtTrgEvtSCMWL = 5u, ///< Timer4 Special-EVT Event: TMR4_Ux_SCMWL
|
||
} en_timer4_sevt_trigger_evt_t;
|
||
|
||
/**
|
||
*******************************************************************************
|
||
** \brief Timer4 Special-EVT OCCRx select type
|
||
**
|
||
******************************************************************************/
|
||
typedef enum en_timer4_sevt_occr_sel
|
||
{
|
||
SevtSelOCCRxh = 0u, ///< Select OCCRxh of high channel
|
||
SevtSelOCCRxl = 1u, ///< Select OCCRxl of low channel
|
||
} en_timer4_sevt_occr_sel_t;
|
||
|
||
/**
|
||
*******************************************************************************
|
||
** \brief Timer4 Special-EVT running mode
|
||
**
|
||
******************************************************************************/
|
||
typedef enum en_timer4_sevt_mode
|
||
{
|
||
SevtCompareTrigMode = 0u, ///< Select Timer4 Special-EVT compare mode
|
||
SevtDelayTrigMode = 1u, ///< Select Timer4 Special-EVT delay mode
|
||
} en_timer4_sevt_mode_t;
|
||
|
||
/**
|
||
*******************************************************************************
|
||
** \brief Timer4 SEVT mask times enumeration
|
||
**
|
||
******************************************************************************/
|
||
typedef enum en_timer4_sevt_mask
|
||
{
|
||
Timer4SevtMask0 = 0u, ///< Mask 0 time.
|
||
Timer4SevtMask1 = 1u, ///< Mask 1 times.
|
||
Timer4SevtMask2 = 2u, ///< Mask 2 times.
|
||
Timer4SevtMask3 = 3u, ///< Mask 3 times.
|
||
Timer4SevtMask4 = 4u, ///< Mask 4 times.
|
||
Timer4SevtMask5 = 5u, ///< Mask 5 times.
|
||
Timer4SevtMask6 = 6u, ///< Mask 6 times.
|
||
Timer4SevtMask7 = 7u, ///< Mask 7 times.
|
||
Timer4SevtMask8 = 8u, ///< Mask 8 times.
|
||
Timer4SevtMask9 = 9u, ///< Mask 9 times.
|
||
Timer4SevtMask10 = 10u, ///< Mask 10 times.
|
||
Timer4SevtMask11 = 11u, ///< Mask 11 times.
|
||
Timer4SevtMask12 = 12u, ///< Mask 12 times.
|
||
Timer4SevtMask13 = 13u, ///< Mask 13 times.
|
||
Timer4SevtMask14 = 14u, ///< Mask 14 times.
|
||
Timer4SevtMask15 = 15u, ///< Mask 15 times.
|
||
} en_timer4_sevt_mask_t;
|
||
|
||
/**
|
||
*******************************************************************************
|
||
** \brief Timer4 Special-EVT trigger condition
|
||
**
|
||
******************************************************************************/
|
||
typedef struct stc_timer4_sevt_trigger_cond
|
||
{
|
||
en_functional_state_t enDownMatchCmd; ///< Enable: Send trigger signal when match with SCCR&SCMR and Timer4CNT count down.
|
||
///< Disable: Don't send trigger signal when match with SCCR&SCMR and Timer4CNT count down.
|
||
|
||
en_functional_state_t enPeakMatchCmd; ///< Enable: Send trigger signal when match with SCCR&SCMR and Timer4CNT count peak.
|
||
///< Disable: Don't send trigger signal when match with SCCR&SCMR and Timer4CNT count peak.
|
||
|
||
en_functional_state_t enUpMatchCmd; ///< Enable: Send trigger signal when match with SCCR&SCMR and Timer4CNT count up.
|
||
///< Disable: Don't send trigger signal when match with SCCR&SCMR and Timer4CNT count up.
|
||
|
||
en_functional_state_t enZeroMatchCmd; ///< Enable: Send trigger signal when match with SCCR&SCMR and Timer4CNT count zero.
|
||
|