hc32f460_timer4_emb.h 4.7 KB
Newer Older
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115
/*******************************************************************************
 * 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_emb.h
 **
 ** A detailed description is available at
 ** @link Timer4EmbGroup Timer4EMB description @endlink
 **
 **   - 2018-11-02 CDT First version for Device Driver Library of Timer4EMB.
 **
 ******************************************************************************/
#ifndef __HC32F460_TIMER4_EMB_H__
#define __HC32F460_TIMER4_EMB_H__

/*******************************************************************************
 * Include files
 ******************************************************************************/
#include "hc32_common.h"
#include "ddl_config.h"

#if (DDL_TIMER4_EMB_ENABLE == DDL_ON)

/* C binding of definitions if building with C++ compiler */
#ifdef __cplusplus
extern "C"
{
#endif

/**
 *******************************************************************************
 ** \defgroup Timer4EmbGroup Timer4 Emergency Brake(Timer4EMB)
 **
 ******************************************************************************/
//@{

/*******************************************************************************
 * Global type definitions ('typedef')
 ******************************************************************************/

/**
 *******************************************************************************
 ** \brief Timer4 EMB hold function selection enumeration
 **
 ******************************************************************************/
typedef enum en_timer4_emb_hold_mode
{
    EmbChangePwm = 0u,                      ///< Don't hold PWM output when EMB signal occurs
    EmbHoldPwm   = 1u,                      ///< Hold PWM output when EMB signal occurs
} en_timer4_emb_hold_mode_t;

/**
 *******************************************************************************
 ** \brief Timer4 EMB state selection enumeration
 **
 ******************************************************************************/
typedef enum en_timer4_emb_state
{
    EmbTrigPwmOutputNormal    = 0u,         ///< PWM output signal normally.
    EmbTrigPwmOutputHiz       = 1u,         ///< PWM output Hiz signal.
    EmbTrigPwmOutputLowLevel  = 2u,         ///< PWM output low level signal.
    EmbTrigPwmOutputHighLevel = 3u,         ///< PWM output high level signal.
} en_timer4_emb_state_t;

/**
 *******************************************************************************
 ** \brief Timer4 EMB configure
 **
 ******************************************************************************/
typedef struct stc_timer4_emb_init
{
    en_timer4_emb_state_t     enEmbState;   ///< Timer4 EMB state selection and this parameter can be a value of @ref en_timer4_emb_state_t

    en_timer4_emb_hold_mode_t enPwmHold;    ///< Timer4 EMB hold function selection and this parameter can be a value of @ref en_timer4_emb_hold_mode_t
} stc_timer4_emb_init_t;

/*******************************************************************************
 * Global pre-processor symbols/macros ('#define')
 ******************************************************************************/

/*******************************************************************************
 * Global variable definitions ('extern')
 ******************************************************************************/

/*******************************************************************************
 * Global function prototypes (definition in C source)
 ******************************************************************************/
en_result_t TIMER4_EMB_Init(M4_TMR4_TypeDef *TMR4x,
                                const stc_timer4_emb_init_t *pstcInitCfg);
en_result_t TIMER4_EMB_DeInit(M4_TMR4_TypeDef *TMR4x);
en_result_t TIMER4_EMB_SetHoldMode(M4_TMR4_TypeDef *TMR4x,
                                en_timer4_emb_hold_mode_t enHoldMode);
en_timer4_emb_hold_mode_t TIMER4_EMB_GetHoldMode(M4_TMR4_TypeDef *TMR4x);
en_result_t TIMER4_EMB_SetState(const M4_TMR4_TypeDef *TMR4x,
                                en_timer4_emb_state_t enEmbState);
en_timer4_emb_state_t TIMER4_EMB_GetState(const M4_TMR4_TypeDef *TMR4x);

//@} // Timer4EmbGroup

#ifdef __cplusplus
}
#endif

#endif /* DDL_TIMER4_EMB_ENABLE */

#endif /* __HC32F460_TIMER4_EMB_H__ */

/*******************************************************************************
 * EOF (not truncated)
 ******************************************************************************/