HwA_Flagchip_FC7240_V2/Inc/HwA_qdt.h

1859 lines
57 KiB
C
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

/**
* @file HwA_qdt.h
* @author Flagchip0084
* @brief Hardware access layer for QDT
* @version 2.0.0
* @date 2024-07-25
*
* SDK Version: 2.6.0
*
* @copyright Copyright (c) 2022 Flagchip Semiconductors Co., Ltd.
*
*/
/* ********************************************************************************
* Revision History:
*
* Version Date Initials CR# Descriptions
* --------- ---------- ------------ ---------- ---------------
* 0.1.0 2023-12-15 Flagchip084 N/A First version for FC7300
* 2.0.0 2024-10-12 Flagchip084 N/A Change version and release
******************************************************************************** */
#ifndef _HWA_QDT_H_
#define _HWA_QDT_H_
#include "device_header.h"
#if QDT_INSTANCE_COUNT > 0U
/**
* @defgroup HwA_qdt
* @ingroup fc7xxx_driver_qdt
* @{
*/
/**
* @brief Get the value of EXTCLK_SEL.
* External Clock Select
* Selects the external clock as the QDT function clock.
* This field is write protected (depends on WPDIS/WPEN).
* 00b - QDT_TCLK0 pin as QDT external clock.
* 01b - QDT_TCLK1 pin as QDT external clock.
* 10b - QDT_TCLK2 pin as QDT external clock.
* 11b - No clock input
* @param pQdt the base address of the QDT instance.
* @return uint8_t the value of EXTCLK_SEL.
*/
LOCAL_INLINE uint8_t QDT_HWA_GetEXTCLK_SEL(const QDT_Type *const pQdt)
{
uint8_t u8TmpVal = (pQdt->SC & QDT_SC_EXTCLK_SEL_MASK) >> QDT_SC_EXTCLK_SEL_SHIFT;
return u8TmpVal;
}
/**
* @brief Set EXTCLK_SEL.
* External Clock Select
* Selects the external clock as the QDT function clock.
* This field is write protected (depends on WPDIS/WPEN).
* 00b - QDT_TCLK0 pin as QDT external clock.
* 01b - QDT_TCLK1 pin as QDT external clock.
* 10b - QDT_TCLK2 pin as QDT external clock.
* 11b - No clock input
* @param pQdt the base address of the QDT instance.
* @param uint8_t u8Value EXTCLK_SEL value.
*/
LOCAL_INLINE void QDT_HWA_SetEXTCLK_SEL(QDT_Type *const pQdt, uint8_t u8Value)
{
pQdt->SC = (pQdt->SC & ~QDT_SC_EXTCLK_SEL_MASK) | QDT_SC_EXTCLK_SEL(u8Value);
}
/**
* @brief Get the value of WDOGF.
* WDOG Timerout Flag
* Same as WDOG[WDOGF].
* @param pQdt the base address of the QDT instance.
* @return uint8_t the value of WDOGF.
*/
LOCAL_INLINE uint8_t QDT_HWA_SC_GetWDOGF(const QDT_Type *const pQdt)
{
uint8_t u8TmpVal = (pQdt->SC & QDT_SC_WDOGF_MASK) >> QDT_SC_WDOGF_SHIFT;
return u8TmpVal;
}
/**
* @brief Clear WDOGF.
* WDOG Timerout Flag
* Same as WDOG[WDOGF].
* @param pQdt the base address of the QDT instance.
*/
LOCAL_INLINE void QDT_HWA_SC_ClearWDOGF(QDT_Type *const pQdt)
{
pQdt->SC &= ~QDT_SC_WDOGF_MASK;
}
/**
* @brief Get the value of CHNF.
* Channel (n) Flag
* Same as CSnC[CHF].
* MSB is CH3, LSB is CH0.
* @param pQdt the base address of the QDT instance.
* @return uint8_t the value of CHNF.
*/
LOCAL_INLINE uint8_t QDT_HWA_GetCHNF(const QDT_Type *const pQdt)
{
uint8_t u8TmpVal = (pQdt->SC & QDT_SC_CHNF_MASK) >> QDT_SC_CHNF_SHIFT;
return u8TmpVal;
}
/**
* @brief Clear CHNF.
* Channel (n) Flag
* Same as CSnC[CHF].
* MSB is CH3, LSB is CH0.
* @param pQdt the base address of the QDT instance.
*/
LOCAL_INLINE void QDT_HWA_ClearCHNF(QDT_Type *const pQdt)
{
pQdt->SC &= ~QDT_SC_CHNF_MASK;
}
/**
* @brief Get the value of TOF.
* Timer Overflow Flag
* When the QDT counter (also is position counter) passes the value in the MOD register, this bit asserted.
* The TOF bit is cleared by reading the SC register while TOF is set and then writing a 0 to TOF bit. Writing a 1 to TOF has no effect.
* If another QDT overflow occurs between the read and write operations, the write operation has no effect; therefore, TOF remains set indicating an overflow has occurred. In this case, a TOF interrupt request is not lost due to the clearing sequence for a previous TOF.
* 0b - QDT counter has not overflowed.
* 1b - QDT counter has overflowed.
* @param pQdt the base address of the QDT instance.
* @return uint8_t the value of TOF.
*/
LOCAL_INLINE uint8_t QDT_HWA_GetTOF(const QDT_Type *const pQdt)
{
uint8_t u8TmpVal = (pQdt->SC & QDT_SC_TOF_MASK) >> QDT_SC_TOF_SHIFT;
return u8TmpVal;
}
/**
* @brief Clear TOF.
* Timer Overflow Flag
* When the QDT counter (also is position counter) passes the value in the MOD register, this bit asserted.
* The TOF bit is cleared by reading the SC register while TOF is set and then writing a 0 to TOF bit. Writing a 1 to TOF has no effect.
* If another QDT overflow occurs between the read and write operations, the write operation has no effect; therefore, TOF remains set indicating an overflow has occurred. In this case, a TOF interrupt request is not lost due to the clearing sequence for a previous TOF.
* 0b - QDT counter has not overflowed.
* 1b - QDT counter has overflowed.
* @param pQdt the base address of the QDT instance.
*/
LOCAL_INLINE void QDT_HWA_ClearTOF(QDT_Type *const pQdt)
{
pQdt->SC &= ~QDT_SC_TOF_MASK;
}
/**
* @brief Get the value of TOIE.
* Timer Overflow Interrupt Enable
* 0b - Disable TOF interrupts.
* 1b - Enable TOF interrupts. An interrupt is generated when TOF asserted.
* @param pQdt the base address of the QDT instance.
* @return uint8_t the value of TOIE.
*/
LOCAL_INLINE uint8_t QDT_HWA_GetTOIE(const QDT_Type *const pQdt)
{
uint8_t u8TmpVal = (pQdt->SC & QDT_SC_TOIE_MASK) >> QDT_SC_TOIE_SHIFT;
return u8TmpVal;
}
/**
* @brief Set TOIE.
* Timer Overflow Interrupt Enable
* 0b - Disable TOF interrupts.
* 1b - Enable TOF interrupts. An interrupt is generated when TOF asserted.
* @param pQdt the base address of the QDT instance.
* @param uint8_t u8Value TOIE value.
*/
LOCAL_INLINE void QDT_HWA_SetTOIE(QDT_Type *const pQdt, uint8_t u8Value)
{
pQdt->SC = (pQdt->SC & ~QDT_SC_TOIE_MASK) | QDT_SC_TOIE(u8Value);
}
/**
* @brief Get the value of WPDIS.
* Write Protection Disable
* When write protection is enabled (WPDIS = 0), write protected bits cannot be written. When write protection is disabled (WPDIS = 1), write protected bits can be written. The WPDIS bit is the negation of the WPEN bit. WPDIS is cleared when 1 is written to WPEN. WPDIS is set when WPEN bit is read as a 1 and then 1 is written to WPDIS. Writing 0 to WPDIS has no effect.
* @param pQdt the base address of the QDT instance.
* @return uint8_t the value of WPDIS.
*/
LOCAL_INLINE uint8_t QDT_HWA_GetWPDIS(const QDT_Type *const pQdt)
{
uint8_t u8TmpVal = (pQdt->SC & QDT_SC_WPDIS_MASK) >> QDT_SC_WPDIS_SHIFT;
return u8TmpVal;
}
/**
* @brief Set WPDIS.
* Write Protection Disable
* When write protection is enabled (WPDIS = 0), write protected bits cannot be written. When write protection is disabled (WPDIS = 1), write protected bits can be written. The WPDIS bit is the negation of the WPEN bit. WPDIS is cleared when 1 is written to WPEN. WPDIS is set when WPEN bit is read as a 1 and then 1 is written to WPDIS. Writing 0 to WPDIS has no effect.
* @param pQdt the base address of the QDT instance.
* @param uint8_t u8Value WPDIS value.
*/
LOCAL_INLINE void QDT_HWA_SetWPDIS(QDT_Type *const pQdt, uint8_t u8Value)
{
pQdt->SC = (pQdt->SC & ~QDT_SC_WPDIS_MASK) | QDT_SC_WPDIS(u8Value);
}
/**
* @brief Disable the Write protection.
* @param pQdt the base address of the QDT instance.
*/
LOCAL_INLINE void QDT_HWA_DisableWP(QDT_Type *const pQdt)
{
pQdt->SC = (pQdt->SC | QDT_SC_WPDIS_MASK) & ~QDT_SC_WPEN_MASK;
}
/**
* @brief Get the value of WPEN.
* Write Protection Enable
* The WPEN bit is the negation of the WPDIS bit. WPEN is set when 1 is written to it. WPEN is cleared when WPEN bit is read as a 1 and then 1 is written to WPDIS. Writing 0 to WPEN has no effect.
* 0b - Write protection is disabled. Write protected bits can be written.
* 1b - Write protection is enabled. Write protected bits cannot be written.
* @param pQdt the base address of the QDT instance.
* @return uint8_t the value of WPEN.
*/
LOCAL_INLINE uint8_t QDT_HWA_GetWPEN(const QDT_Type *const pQdt)
{
uint8_t u8TmpVal = (pQdt->SC & QDT_SC_WPEN_MASK) >> QDT_SC_WPEN_SHIFT;
return u8TmpVal;
}
/**
* @brief Set WPEN.
* Write Protection Enable
* The WPEN bit is the negation of the WPDIS bit. WPEN is set when 1 is written to it. WPEN is cleared when WPEN bit is read as a 1 and then 1 is written to WPDIS. Writing 0 to WPEN has no effect.
* 0b - Write protection is disabled. Write protected bits can be written.
* 1b - Write protection is enabled. Write protected bits cannot be written.
* @param pQdt the base address of the QDT instance.
* @param uint8_t u8Value WPEN value.
*/
LOCAL_INLINE void QDT_HWA_SetWPEN(QDT_Type *const pQdt, uint8_t u8Value)
{
pQdt->SC = (pQdt->SC & ~QDT_SC_WPEN_MASK) | QDT_SC_WPEN(u8Value);
}
/**
* @brief Enable the Write protection.
* @param pQdt the base address of the QDT instance.
*/
LOCAL_INLINE void QDT_HWA_EnableWP(QDT_Type *const pQdt)
{
pQdt->SC = (pQdt->SC & ~QDT_SC_WPDIS_MASK) | QDT_SC_WPEN_MASK;
}
/**
* @brief Get the value of DBG.
* Debug Mode
* Selects the QDT behavior in Debug Mode.
* This field is write protected (depends on WPDIS/WPEN).
* 0b - All counters in QDT are stopped.
* 1b - QDT works as function mode.
* @param pQdt the base address of the QDT instance.
* @return uint8_t the value of DBG.
*/
LOCAL_INLINE uint8_t QDT_HWA_GetDBG(const QDT_Type *const pQdt)
{
uint8_t u8TmpVal = (pQdt->SC & QDT_SC_DBG_MASK) >> QDT_SC_DBG_SHIFT;
return u8TmpVal;
}
/**
* @brief Set DBG.
* Debug Mode
* Selects the QDT behavior in Debug Mode.
* This field is write protected (depends on WPDIS/WPEN).
* 0b - All counters in QDT are stopped.
* 1b - QDT works as function mode.
* @param pQdt the base address of the QDT instance.
* @param uint8_t u8Value DBG value.
*/
LOCAL_INLINE void QDT_HWA_SetDBG(QDT_Type *const pQdt, uint8_t u8Value)
{
pQdt->SC = (pQdt->SC & ~QDT_SC_DBG_MASK) | QDT_SC_DBG(u8Value);
}
/**
* @brief Get the value of MTRIGCTRL.
* Match Trigger Control
* Match Trigger Control controls the pulsing of the match trigger output signal.
* 0b - Match Trigger pulses when a match occurs between the position counters (POS) and the corresponding channel value (CV)
* 1b - Match Trigger pulses when the POSCNT, REVCNT, or POSDCNT are read
* @param pQdt the base address of the QDT instance.
* @return uint8_t the value of MTRIGCTRL.
*/
LOCAL_INLINE uint8_t QDT_HWA_GetMTRIGCTRL(const QDT_Type *const pQdt)
{
uint8_t u8TmpVal = (pQdt->SC & QDT_SC_MTRIGCTRL_MASK) >> QDT_SC_MTRIGCTRL_SHIFT;
return u8TmpVal;
}
/**
* @brief Set MTRIGCTRL.
* Match Trigger Control
* Match Trigger Control controls the pulsing of the match trigger output signal.
* 0b - Match Trigger pulses when a match occurs between the position counters (POS) and the corresponding channel value (CV)
* 1b - Match Trigger pulses when the POSCNT, REVCNT, or POSDCNT are read
* @param pQdt the base address of the QDT instance.
* @param uint8_t u8Value MTRIGCTRL value.
*/
LOCAL_INLINE void QDT_HWA_SetMTRIGCTRL(QDT_Type *const pQdt, uint8_t u8Value)
{
pQdt->SC = (pQdt->SC & ~QDT_SC_MTRIGCTRL_MASK) | QDT_SC_MTRIGCTRL(u8Value);
}
/**
* @brief Get the value of QUADIR.
* QDT Counter Direction In Quadrature Decoder Mode
* Indicates the counting direction.
* 0b - QDT counter decrement.
* 1b - QDT counter increment.
* @param pQdt the base address of the QDT instance.
* @return uint8_t the value of QUADIR.
*/
LOCAL_INLINE uint8_t QDT_HWA_GetQUADIR(const QDT_Type *const pQdt)
{
uint8_t u8TmpVal = (pQdt->SC & QDT_SC_QUADIR_MASK) >> QDT_SC_QUADIR_SHIFT;
return u8TmpVal;
}
/**
* @brief Get the value of TOFDIR.
* Timer Overflow Direction In Quadrature Decoder Mode
* Indicates if the TOF bit was set on the top or the bottom of counting.
* 0b - TOF bit was set on the bottom of counting. QDT counter decrement and counter changes from CNTIN to MOD.
* 1b - TOF bit was set on the top of counting. QDT counter increment and counter changes from MOD to CNTIN.
* @param pQdt the base address of the QDT instance.
* @return uint8_t the value of TOFDIR.
*/
LOCAL_INLINE uint8_t QDT_HWA_GetTOFDIR(const QDT_Type *const pQdt)
{
uint8_t u8TmpVal = (pQdt->SC & QDT_SC_TOFDIR_MASK) >> QDT_SC_TOFDIR_SHIFT;
return u8TmpVal;
}
/**
* @brief Get the value of QUADMODE.
* Quadrature Decoder Mode
* Selects the encoding mode used in the Quadrature Decoder mode.
* 0b - Phase A and phase B encoding mode.
* 1b - Count and direction encoding mode.
* @param pQdt the base address of the QDT instance.
* @return uint8_t the value of QUADMODE.
*/
LOCAL_INLINE uint8_t QDT_HWA_GetQUADMODE(const QDT_Type *const pQdt)
{
uint8_t u8TmpVal = (pQdt->SC & QDT_SC_QUADMODE_MASK) >> QDT_SC_QUADMODE_SHIFT;
return u8TmpVal;
}
/**
* @brief Set QUADMODE.
* Quadrature Decoder Mode
* Selects the encoding mode used in the Quadrature Decoder mode.
* 0b - Phase A and phase B encoding mode.
* 1b - Count and direction encoding mode.
* @param pQdt the base address of the QDT instance.
* @param uint8_t u8Value QUADMODE value.
*/
LOCAL_INLINE void QDT_HWA_SetQUADMODE(QDT_Type *const pQdt, uint8_t u8Value)
{
pQdt->SC = (pQdt->SC & ~QDT_SC_QUADMODE_MASK) | QDT_SC_QUADMODE(u8Value);
}
/**
* @brief Get the value of QUADEN.
* Quadrature Decoder Mode Enable
* Enables the Quadrature Decoder mode. In this mode, the phase A and B input signals control the QDT counter. this mode has precedence over the other modes.
* This field is write protected (depends on WPDIS/WPEN).
* 0b - Quadrature Decoder mode is disabled.
* 1b - Quadrature Decoder mode is enabled.
* @param pQdt the base address of the QDT instance.
* @return uint8_t the value of QUADEN.
*/
LOCAL_INLINE uint8_t QDT_HWA_GetQUADEN(const QDT_Type *const pQdt)
{
uint8_t u8TmpVal = (pQdt->SC & QDT_SC_QUADEN_MASK) >> QDT_SC_QUADEN_SHIFT;
return u8TmpVal;
}
/**
* @brief Set QUADEN.
* Quadrature Decoder Mode Enable
* Enables the Quadrature Decoder mode. In this mode, the phase A and B input signals control the QDT counter. this mode has precedence over the other modes.
* This field is write protected (depends on WPDIS/WPEN).
* 0b - Quadrature Decoder mode is disabled.
* 1b - Quadrature Decoder mode is enabled.
* @param pQdt the base address of the QDT instance.
* @param uint8_t u8Value QUADEN value.
*/
LOCAL_INLINE void QDT_HWA_SetQUADEN(QDT_Type *const pQdt, uint8_t u8Value)
{
pQdt->SC = (pQdt->SC & ~QDT_SC_QUADEN_MASK) | QDT_SC_QUADEN(u8Value);
}
/**
* @brief Get the value of CLKS.
* Clock Source Selection
* This field is write protected (depends on WPDIS/WPEN).
* 00b - No clock selected.
* 01b - QDT input clock
* 10b - Reserved
* 11b - External pin input clock
* @param pQdt the base address of the QDT instance.
* @return uint8_t the value of CLKS.
*/
LOCAL_INLINE uint8_t QDT_HWA_GetCLKS(const QDT_Type *const pQdt)
{
uint8_t u8TmpVal = (pQdt->SC & QDT_SC_CLKS_MASK) >> QDT_SC_CLKS_SHIFT;
return u8TmpVal;
}
/**
* @brief Set CLKS.
* Clock Source Selection
* This field is write protected (depends on WPDIS/WPEN).
* 00b - No clock selected.
* 01b - QDT input clock
* 10b - Reserved
* 11b - External pin input clock
* @param pQdt the base address of the QDT instance.
* @param uint8_t u8Value CLKS value.
*/
LOCAL_INLINE void QDT_HWA_SetCLKS(QDT_Type *const pQdt, uint8_t u8Value)
{
pQdt->SC = (pQdt->SC & ~QDT_SC_CLKS_MASK) | QDT_SC_CLKS(u8Value);
}
/**
* @brief Get the value of PS.
* Prescale Setting
* This field would affect the QDT counter clock frequency.
* This field is write protected (depends on WPDIS/WPEN).
* 000b - Divide by 1
* 001b - Divide by 2
* ...
* 111b - Divide by 128
* @param pQdt the base address of the QDT instance.
* @return uint8_t the value of PS.
*/
LOCAL_INLINE uint8_t QDT_HWA_GetPS(const QDT_Type *const pQdt)
{
uint8_t u8TmpVal = (pQdt->SC & QDT_SC_PS_MASK) >> QDT_SC_PS_SHIFT;
return u8TmpVal;
}
/**
* @brief Set PS.
* Prescale Setting
* This field would affect the QDT counter clock frequency.
* This field is write protected (depends on WPDIS/WPEN).
* 000b - Divide by 1
* 001b - Divide by 2
* ...
* 111b - Divide by 128
* @param pQdt the base address of the QDT instance.
* @param uint8_t u8Value PS value.
*/
LOCAL_INLINE void QDT_HWA_SetPS(QDT_Type *const pQdt, uint8_t u8Value)
{
pQdt->SC = (pQdt->SC & ~QDT_SC_PS_MASK) | QDT_SC_PS(u8Value);
}
/**
* @brief Get the value of SYNCMODE.
* CV SYNC MODE
* This field is write protected (depends on WPDIS/WPEN).
* This field define different synchronization behavior, for more information, please refer to Function Description chapter
* @param pQdt the base address of the QDT instance.
* @return uint8_t the value of SYNCMODE.
*/
LOCAL_INLINE uint8_t QDT_HWA_GetSYNCMODE(const QDT_Type *const pQdt)
{
uint8_t u8TmpVal = (pQdt->SYNC & QDT_SYNC_SYNCMODE_MASK) >> QDT_SYNC_SYNCMODE_SHIFT;
return u8TmpVal;
}
/**
* @brief Set SYNCMODE.
* CV SYNC MODE
* This field is write protected (depends on WPDIS/WPEN).
* This field define different synchronization behavior, for more information, please refer to Function Description chapter
* @param pQdt the base address of the QDT instance.
* @param uint8_t u8Value SYNCMODE value.
*/
LOCAL_INLINE void QDT_HWA_SetSYNCMODE(QDT_Type *const pQdt, uint8_t u8Value)
{
pQdt->SYNC = (pQdt->SYNC & ~QDT_SYNC_SYNCMODE_MASK) | QDT_SYNC_SYNCMODE(u8Value);
}
/**
* @brief Get the value of TRIG_UPHOLD.
* Hardware Trigger Update Hold Registers
* • When Hardware Trigger Update Hold Registers is set (=1), it allows the TRIGGER input to cause an update of the POSCNTH, REVCNTH and POSDCNTH registers
* • When Hardware Trigger Update Hold Registers is clear (=0), the hold registers (POSCNTH, REVCNTH and POSDCNTH) are not updated by the TRIGGER input
* Updating the Position Difference Counter Hold Register (POSDH) will also cause the Position Difference Counter Register (POSD) to be cleared.
* 0b - Disable updates of hold registers on the rising edge of TRIGGER input signal
* 1b - Enable updates of hold registers on the rising edge of TRIGGER input signal
* @param pQdt the base address of the QDT instance.
* @return uint8_t the value of TRIG_UPHOLD.
*/
LOCAL_INLINE uint8_t QDT_HWA_GetTRIG_UPHOLD(const QDT_Type *const pQdt)
{
uint8_t u8TmpVal = (pQdt->SYNC & QDT_SYNC_TRIG_UPHOLD_MASK) >> QDT_SYNC_TRIG_UPHOLD_SHIFT;
return u8TmpVal;
}
/**
* @brief Set TRIG_UPHOLD.
* Hardware Trigger Update Hold Registers
* • When Hardware Trigger Update Hold Registers is set (=1), it allows the TRIGGER input to cause an update of the POSCNTH, REVCNTH and POSDCNTH registers
* • When Hardware Trigger Update Hold Registers is clear (=0), the hold registers (POSCNTH, REVCNTH and POSDCNTH) are not updated by the TRIGGER input
* Updating the Position Difference Counter Hold Register (POSDH) will also cause the Position Difference Counter Register (POSD) to be cleared.
* 0b - Disable updates of hold registers on the rising edge of TRIGGER input signal
* 1b - Enable updates of hold registers on the rising edge of TRIGGER input signal
* @param pQdt the base address of the QDT instance.
* @param uint8_t u8Value TRIG_UPHOLD value.
*/
LOCAL_INLINE void QDT_HWA_SetTRIG_UPHOLD(QDT_Type *const pQdt, uint8_t u8Value)
{
pQdt->SYNC = (pQdt->SYNC & ~QDT_SYNC_TRIG_UPHOLD_MASK) | QDT_SYNC_TRIG_UPHOLD(u8Value);
}
/**
* @brief Get the value of TRIG_RSTCNT.
* Hardware Trigger Reset Counter
* Allow Hardware TRIGGER input event to reset POSCNT, REVCNT and POSDCNT
* 0b - Hardware Trigger input event will not reset the counters.
* 1b - Hardware Trigger input event will reset the counters.
* @param pQdt the base address of the QDT instance.
* @return uint8_t the value of TRIG_RSTCNT.
*/
LOCAL_INLINE uint8_t QDT_HWA_GetTRIG_RSTCNT(const QDT_Type *const pQdt)
{
uint8_t u8TmpVal = (pQdt->SYNC & QDT_SYNC_TRIG_RSTCNT_MASK) >> QDT_SYNC_TRIG_RSTCNT_SHIFT;
return u8TmpVal;
}
/**
* @brief Set TRIG_RSTCNT.
* Hardware Trigger Reset Counter
* Allow Hardware TRIGGER input event to reset POSCNT, REVCNT and POSDCNT
* 0b - Hardware Trigger input event will not reset the counters.
* 1b - Hardware Trigger input event will reset the counters.
* @param pQdt the base address of the QDT instance.
* @param uint8_t u8Value TRIG_RSTCNT value.
*/
LOCAL_INLINE void QDT_HWA_SetTRIG_RSTCNT(QDT_Type *const pQdt, uint8_t u8Value)
{
pQdt->SYNC = (pQdt->SYNC & ~QDT_SYNC_TRIG_RSTCNT_MASK) | QDT_SYNC_TRIG_RSTCNT(u8Value);
}
/**
* @brief Get the value of TRIG0.
* Synchronization Hardware Trigger Input 0
* Enables hardware trigger 0 to the synchronization and reset. Hardware trigger 0 occurs when a rising edge is detected at the trigger 0 input signal.
* 0b - Trigger is disabled.
* 1b - Trigger is enabled.
* @param pQdt the base address of the QDT instance.
* @return uint8_t the value of TRIG0.
*/
LOCAL_INLINE uint8_t QDT_HWA_GetTRIG0(const QDT_Type *const pQdt)
{
uint8_t u8TmpVal = (pQdt->SYNC & QDT_SYNC_TRIG0_MASK) >> QDT_SYNC_TRIG0_SHIFT;
return u8TmpVal;
}
/**
* @brief Set TRIG0.
* Synchronization Hardware Trigger Input 0
* Enables hardware trigger 0 to the synchronization and reset. Hardware trigger 0 occurs when a rising edge is detected at the trigger 0 input signal.
* 0b - Trigger is disabled.
* 1b - Trigger is enabled.
* @param pQdt the base address of the QDT instance.
* @param uint8_t u8Value TRIG0 value.
*/
LOCAL_INLINE void QDT_HWA_SetTRIG0(QDT_Type *const pQdt, uint8_t u8Value)
{
pQdt->SYNC = (pQdt->SYNC & ~QDT_SYNC_TRIG0_MASK) | QDT_SYNC_TRIG0(u8Value);
}
/**
* @brief Get the value of SW_RSTCNT.
* SW Reset Counter
* Allow SW event to reset POSCNT, REVCNT and POSDCNT
* 0b - SW event will only reset the POSCNT.
* 1b - SW event will reset the POSCNT, REVCNT and POSDCNT.
* @param pQdt the base address of the QDT instance.
* @return uint8_t the value of SW_RSTCNT.
*/
LOCAL_INLINE uint8_t QDT_HWA_GetSW_RSTCNT(const QDT_Type *const pQdt)
{
uint8_t u8TmpVal = (pQdt->SYNC & QDT_SYNC_SW_RSTCNT_MASK) >> QDT_SYNC_SW_RSTCNT_SHIFT;
return u8TmpVal;
}
/**
* @brief Set SW_RSTCNT.
* SW Reset Counter
* Allow SW event to reset POSCNT, REVCNT and POSDCNT
* 0b - SW event will only reset the POSCNT.
* 1b - SW event will reset the POSCNT, REVCNT and POSDCNT.
* @param pQdt the base address of the QDT instance.
* @param uint8_t u8Value SW_RSTCNT value.
*/
LOCAL_INLINE void QDT_HWA_SetSW_RSTCNT(QDT_Type *const pQdt, uint8_t u8Value)
{
pQdt->SYNC = (pQdt->SYNC & ~QDT_SYNC_SW_RSTCNT_MASK) | QDT_SYNC_SW_RSTCNT(u8Value);
}
/**
* @brief Get the value of SWSYNC.
* Synchronization Software Trigger
* Selects the software trigger as the synchronization trigger. The software trigger happens when a 1 is written to SWSYNC bit. It will be cleared automatic.
* 0b - Software trigger is not selected.
* 1b - Software trigger is selected.
* @param pQdt the base address of the QDT instance.
* @return uint8_t the value of SWSYNC.
*/
LOCAL_INLINE uint8_t QDT_HWA_GetSWSYNC(const QDT_Type *const pQdt)
{
uint8_t u8TmpVal = (pQdt->SYNC & QDT_SYNC_SWSYNC_MASK) >> QDT_SYNC_SWSYNC_SHIFT;
return u8TmpVal;
}
/**
* @brief Set SWSYNC.
* Synchronization Software Trigger
* Selects the software trigger as the synchronization trigger. The software trigger happens when a 1 is written to SWSYNC bit. It will be cleared automatic.
* 0b - Software trigger is not selected.
* 1b - Software trigger is selected.
* @param pQdt the base address of the QDT instance.
* @param uint8_t u8Value SWSYNC value.
*/
LOCAL_INLINE void QDT_HWA_SetSWSYNC(QDT_Type *const pQdt, uint8_t u8Value)
{
pQdt->SYNC = (pQdt->SYNC & ~QDT_SYNC_SWSYNC_MASK) | QDT_SYNC_SWSYNC(u8Value);
}
/**
* @brief Get the value of PHZPOL.
* Phase Z Input Polarity
* Selects the polarity for ICDM pair channel input.
* This field is write protected (depends on WPDIS/WPEN).
* 0b - Low-active for ICDM.
* 1b - High-active for ICDM.
* @param pQdt the base address of the QDT instance.
* @return uint8_t the value of PHZPOL.
*/
LOCAL_INLINE uint8_t QDT_HWA_GetPHZPOL(const QDT_Type *const pQdt)
{
uint8_t u8TmpVal = (pQdt->POL & QDT_POL_PHZPOL_MASK) >> QDT_POL_PHZPOL_SHIFT;
return u8TmpVal;
}
/**
* @brief Set PHZPOL.
* Phase Z Input Polarity
* Selects the polarity for ICDM pair channel input.
* This field is write protected (depends on WPDIS/WPEN).
* 0b - Low-active for ICDM.
* 1b - High-active for ICDM.
* @param pQdt the base address of the QDT instance.
* @param uint8_t u8Value PHZPOL value.
*/
LOCAL_INLINE void QDT_HWA_SetPHZPOL(QDT_Type *const pQdt, uint8_t u8Value)
{
pQdt->POL = (pQdt->POL & ~QDT_POL_PHZPOL_MASK) | QDT_POL_PHZPOL(u8Value);
}
/**
* @brief Get the value of PHBPOL.
* Phase B Input Polarity
* Selects the polarity for the quadrature decoder phase B input.
* This field is write protected (depends on WPDIS/WPEN).
* 0b - Normal polarity.
* 1b - Inverted polarity.
* Phase B input signal is inverted before identifying the rising and falling edges of this signal.
* @param pQdt the base address of the QDT instance.
* @return uint8_t the value of PHBPOL.
*/
LOCAL_INLINE uint8_t QDT_HWA_GetPHBPOL(const QDT_Type *const pQdt)
{
uint8_t u8TmpVal = (pQdt->POL & QDT_POL_PHBPOL_MASK) >> QDT_POL_PHBPOL_SHIFT;
return u8TmpVal;
}
/**
* @brief Set PHBPOL.
* Phase B Input Polarity
* Selects the polarity for the quadrature decoder phase B input.
* This field is write protected (depends on WPDIS/WPEN).
* 0b - Normal polarity.
* 1b - Inverted polarity.
* Phase B input signal is inverted before identifying the rising and falling edges of this signal.
* @param pQdt the base address of the QDT instance.
* @param uint8_t u8Value PHBPOL value.
*/
LOCAL_INLINE void QDT_HWA_SetPHBPOL(QDT_Type *const pQdt, uint8_t u8Value)
{
pQdt->POL = (pQdt->POL & ~QDT_POL_PHBPOL_MASK) | QDT_POL_PHBPOL(u8Value);
}
/**
* @brief Get the value of PHAPOL.
* Phase A Input Polarity
* Selects the polarity for the quadrature decoder phase A input.
* Selects the polarity for ICDM pair channel input.
* This field is write protected (depends on WPDIS/WPEN).
* 0b - Normal polarity for phase A; Low-active for ICDM.
* 1b - Inverted polarity for phase A; High-active for ICDM.
* Phase A input signal is inverted before identifying the rising and falling edges of this signal.
* @param pQdt the base address of the QDT instance.
* @return uint8_t the value of PHAPOL.
*/
LOCAL_INLINE uint8_t QDT_HWA_GetPHAPOL(const QDT_Type *const pQdt)
{
uint8_t u8TmpVal = (pQdt->POL & QDT_POL_PHAPOL_MASK) >> QDT_POL_PHAPOL_SHIFT;
return u8TmpVal;
}
/**
* @brief Set PHAPOL.
* Phase A Input Polarity
* Selects the polarity for the quadrature decoder phase A input.
* Selects the polarity for ICDM pair channel input.
* This field is write protected (depends on WPDIS/WPEN).
* 0b - Normal polarity for phase A; Low-active for ICDM.
* 1b - Inverted polarity for phase A; High-active for ICDM.
* Phase A input signal is inverted before identifying the rising and falling edges of this signal.
* @param pQdt the base address of the QDT instance.
* @param uint8_t u8Value PHAPOL value.
*/
LOCAL_INLINE void QDT_HWA_SetPHAPOL(QDT_Type *const pQdt, uint8_t u8Value)
{
pQdt->POL = (pQdt->POL & ~QDT_POL_PHAPOL_MASK) | QDT_POL_PHAPOL(u8Value);
}
/**
* @brief Set PHxPOL.
* Phase x Input Polarity
* Selects the polarity for the quadrature decoder phase X input.
* Selects the polarity for ICDM pair channel input.
* This field is write protected (depends on WPDIS/WPEN).
* 0b - Normal polarity for phase X; Low-active for ICDM.
* 1b - Inverted polarity for phase X; High-active for ICDM.
* Phase X input signal is inverted before identifying the rising and falling edges of this signal.
* @param pQdt the base address of the QDT instance.
* @param u8Channel QDT Channel.
* @param uint8_t u8Value PHXPOL value.
*/
LOCAL_INLINE void QDT_HWA_SetPHXPOL(QDT_Type *const pQdt, uint8_t u8Channel, uint8_t u8Value)
{
pQdt->POL = (pQdt->POL & ~(QDT_POL_PHAPOL_MASK << u8Channel)) | (QDT_POL_PHAPOL(u8Value) << u8Channel);
}
/**
* @brief Get PHxPOL value.
* Phase x Input Polarity
* Selects the polarity for the quadrature decoder phase X input.
* Selects the polarity for ICDM pair channel input.
* This field is write protected (depends on WPDIS/WPEN).
* 0b - Normal polarity for phase X; Low-active for ICDM.
* 1b - Inverted polarity for phase X; High-active for ICDM.
* Phase X input signal is inverted before identifying the rising and falling edges of this signal.
* @param pQdt the base address of the QDT instance.
* @param u8Channel QDT Channel.
* @return uint8_t u8Value PHXPOL value.
*/
LOCAL_INLINE uint8_t QDT_HWA_GetPHXPOL(QDT_Type *const pQdt, uint8_t u8Channel)
{
uint8_t u8TmpVal = (uint8_t)((pQdt->POL & (QDT_POL_PHAPOL_MASK << u8Channel)) >> (QDT_POL_PHAPOL_SHIFT << u8Channel));
return u8TmpVal;
}
/**
* @brief Get the value of HOMEGFVAL.
* HOME Input Filter
* Selects the filter value for the HOME input. The filter is disabled when the value is zero.
* The filter value is HOMEGFVAL*4
* @param pQdt the base address of the QDT instance.
* @return uint8_t the value of HOMEGFVAL.
*/
LOCAL_INLINE uint8_t QDT_HWA_GetHOMEGFVAL(const QDT_Type *const pQdt)
{
uint8_t u8TmpVal = (pQdt->FILTER & QDT_FILTER_HOMEGFVAL_MASK) >> QDT_FILTER_HOMEGFVAL_SHIFT;
return u8TmpVal;
}
/**
* @brief Set HOMEGFVAL.
* HOME Input Filter
* Selects the filter value for the HOME input. The filter is disabled when the value is zero.
* The filter value is HOMEGFVAL*4
* @param pQdt the base address of the QDT instance.
* @param uint8_t u8Value HOMEGFVAL value.
*/
LOCAL_INLINE void QDT_HWA_SetHOMEGFVAL(QDT_Type *const pQdt, uint8_t u8Value)
{
pQdt->FILTER = (pQdt->FILTER & ~QDT_FILTER_HOMEGFVAL_MASK) | QDT_FILTER_HOMEGFVAL(u8Value);
}
/**
* @brief Get the value of PHZGFVAL.
* PHZ Input Filter
* Selects the filter value for the PHZ input. The filter is disabled when the value is zero.
* The filter value is PHZGFVAL*4
* @param pQdt the base address of the QDT instance.
* @return uint8_t the value of PHZGFVAL.
*/
LOCAL_INLINE uint8_t QDT_HWA_GetPHZGFVAL(const QDT_Type *const pQdt)
{
uint8_t u8TmpVal = (pQdt->FILTER & QDT_FILTER_PHZGFVAL_MASK) >> QDT_FILTER_PHZGFVAL_SHIFT;
return u8TmpVal;
}
/**
* @brief Set PHZGFVAL.
* PHZ Input Filter
* Selects the filter value for the PHZ input. The filter is disabled when the value is zero.
* The filter value is PHZGFVAL*4
* @param pQdt the base address of the QDT instance.
* @param uint8_t u8Value PHZGFVAL value.
*/
LOCAL_INLINE void QDT_HWA_SetPHZGFVAL(QDT_Type *const pQdt, uint8_t u8Value)
{
pQdt->FILTER = (pQdt->FILTER & ~QDT_FILTER_PHZGFVAL_MASK) | QDT_FILTER_PHZGFVAL(u8Value);
}
/**
* @brief Get the value of PHBGFVAL.
* PHB Input Filter
* Selects the filter value for the PHB input. The filter is disabled when the value is zero.
* The filter value is PHBGFVAL*4
* @param pQdt the base address of the QDT instance.
* @return uint8_t the value of PHBGFVAL.
*/
LOCAL_INLINE uint8_t QDT_HWA_GetPHBGFVAL(const QDT_Type *const pQdt)
{
uint8_t u8TmpVal = (pQdt->FILTER & QDT_FILTER_PHBGFVAL_MASK) >> QDT_FILTER_PHBGFVAL_SHIFT;
return u8TmpVal;
}
/**
* @brief Set PHBGFVAL.
* PHB Input Filter
* Selects the filter value for the PHB input. The filter is disabled when the value is zero.
* The filter value is PHBGFVAL*4
* @param pQdt the base address of the QDT instance.
* @param uint8_t u8Value PHBGFVAL value.
*/
LOCAL_INLINE void QDT_HWA_SetPHBGFVAL(QDT_Type *const pQdt, uint8_t u8Value)
{
pQdt->FILTER = (pQdt->FILTER & ~QDT_FILTER_PHBGFVAL_MASK) | QDT_FILTER_PHBGFVAL(u8Value);
}
/**
* @brief Get the value of PHAGFVAL.
* PHA Input Filter
* Selects the filter value for the PHA input. The filter is disabled when the value is zero.
* The filter value is PHAGFVAL*4
* @param pQdt the base address of the QDT instance.
* @return uint8_t the value of PHAGFVAL.
*/
LOCAL_INLINE uint8_t QDT_HWA_GetPHAGFVAL(const QDT_Type *const pQdt)
{
uint8_t u8TmpVal = (pQdt->FILTER & QDT_FILTER_PHAGFVAL_MASK) >> QDT_FILTER_PHAGFVAL_SHIFT;
return u8TmpVal;
}
/**
* @brief Set PHAGFVAL.
* PHA Input Filter
* Selects the filter value for the PHA input. The filter is disabled when the value is zero.
* The filter value is PHAGFVAL*4
* @param pQdt the base address of the QDT instance.
* @param uint8_t u8Value PHAGFVAL value.
*/
LOCAL_INLINE void QDT_HWA_SetPHAGFVAL(QDT_Type *const pQdt, uint8_t u8Value)
{
pQdt->FILTER = (pQdt->FILTER & ~QDT_FILTER_PHAGFVAL_MASK) | QDT_FILTER_PHAGFVAL(u8Value);
}
/**
* @brief Get the value of FLTPS.
* Filter Prescaler
* HOME/PHZ/PHB/PHA input glitch filters clock prescaler
* Writing to the bits FLTPS has immediate effect.
* 0000b - Divide by 1
* 0001b - Divide by 2
* ...
* 1111b - Divide by 16
* @param pQdt the base address of the QDT instance.
* @return uint8_t the value of FLTPS.
*/
LOCAL_INLINE uint8_t QDT_HWA_GetFLTPS(const QDT_Type *const pQdt)
{
uint8_t u8TmpVal = (pQdt->FILTER & QDT_FILTER_FLTPS_MASK) >> QDT_FILTER_FLTPS_SHIFT;
return u8TmpVal;
}
/**
* @brief Set FLTPS.
* Filter Prescaler
* HOME/PHZ/PHB/PHA input glitch filters clock prescaler
* Writing to the bits FLTPS has immediate effect.
* 0000b - Divide by 1
* 0001b - Divide by 2
* ...
* 1111b - Divide by 16
* @param pQdt the base address of the QDT instance.
* @param uint8_t u8Value FLTPS value.
*/
LOCAL_INLINE void QDT_HWA_SetFLTPS(QDT_Type *const pQdt, uint8_t u8Value)
{
pQdt->FILTER = (pQdt->FILTER & ~QDT_FILTER_FLTPS_MASK) | QDT_FILTER_FLTPS(u8Value);
}
/**
* @brief Get the value of WDOGVAL.
* WDOG Timeout Value
* WDOG is disabled if WDOGVAL = 0
* @param pQdt the base address of the QDT instance.
* @return uint16_t the value of WDOGVAL.
*/
LOCAL_INLINE uint16_t QDT_HWA_GetWDOGVAL(const QDT_Type *const pQdt)
{
uint16_t u16TmpVal = (pQdt->WDOG & QDT_WDOG_WDOGVAL_MASK) >> QDT_WDOG_WDOGVAL_SHIFT;
return u16TmpVal;
}
/**
* @brief Set WDOGVAL.
* WDOG Timeout Value
* WDOG is disabled if WDOGVAL = 0
* @param pQdt the base address of the QDT instance.
* @param uint16_t u8Value WDOGVAL value.
*/
LOCAL_INLINE void QDT_HWA_SetWDOGVAL(QDT_Type *const pQdt, uint16_t u16Value)
{
pQdt->WDOG = (pQdt->WDOG & ~QDT_WDOG_WDOGVAL_MASK) | QDT_WDOG_WDOGVAL(u16Value);
}
/**
* @brief Get the value of WDOGF.
* WDOG Timerout Flag
* When the WDOG counter passes the value in the WDOGVAL register, this bit asserted.
* The WDOGF bit is cleared by reading the WDOG register while WDOGF is set and then writing a 0 to WDOGF bit. Writing a 1 to WDOGF has no effect.
* If another WDOG Timeout occurs between the read and write operations, the write operation has no effect; therefore, WDOGF remains set indicating an overflow has occurred. In this case, a WDOGF interrupt request is not lost due to the clearing sequence for a previous WDOGF.
* 0b - WODG counter has not timeout.
* 1b - WDOG counter has timeout.
* @param pQdt the base address of the QDT instance.
* @return uint8_t the value of WDOGF.
*/
LOCAL_INLINE uint8_t QDT_HWA_GetWDOGF(const QDT_Type *const pQdt)
{
uint8_t u8TmpVal = (pQdt->WDOG & QDT_WDOG_WDOGF_MASK) >> QDT_WDOG_WDOGF_SHIFT;
return u8TmpVal;
}
/**
* @brief Clear WDOGF.
* WDOG Timerout Flag
* When the WDOG counter passes the value in the WDOGVAL register, this bit asserted.
* The WDOGF bit is cleared by reading the WDOG register while WDOGF is set and then writing a 0 to WDOGF bit. Writing a 1 to WDOGF has no effect.
* If another WDOG Timeout occurs between the read and write operations, the write operation has no effect; therefore, WDOGF remains set indicating an overflow has occurred. In this case, a WDOGF interrupt request is not lost due to the clearing sequence for a previous WDOGF.
* 0b - WODG counter has not timeout.
* 1b - WDOG counter has timeout.
* @param pQdt the base address of the QDT instance.
*/
LOCAL_INLINE void QDT_HWA_ClearWDOGF(QDT_Type *const pQdt)
{
pQdt->WDOG &= ~QDT_WDOG_WDOGF_MASK;
}
/**
* @brief Get the value of WDOGIE.
* WDOG Timerout Interrupt Enable
* 0b - Disable WDOGF interrupts.
* 1b - Enable WDOGF interrupts. An interrupt is generated when WDOGF asserted.
* @param pQdt the base address of the QDT instance.
* @return uint8_t the value of WDOGIE.
*/
LOCAL_INLINE uint8_t QDT_HWA_GetWDOGIE(const QDT_Type *const pQdt)
{
uint8_t u8TmpVal = (pQdt->WDOG & QDT_WDOG_WDOGIE_MASK) >> QDT_WDOG_WDOGIE_SHIFT;
return u8TmpVal;
}
/**
* @brief Set WDOGIE.
* WDOG Timerout Interrupt Enable
* 0b - Disable WDOGF interrupts.
* 1b - Enable WDOGF interrupts. An interrupt is generated when WDOGF asserted.
* @param pQdt the base address of the QDT instance.
* @param uint8_t u8Value WDOGIE value.
*/
LOCAL_INLINE void QDT_HWA_SetWDOGIE(QDT_Type *const pQdt, uint8_t u8Value)
{
pQdt->WDOG = (pQdt->WDOG & ~QDT_WDOG_WDOGIE_MASK) | QDT_WDOG_WDOGIE(u8Value);
}
/**
* @brief Get the value of WDOGEN.
* WDOG Enable
* @param pQdt the base address of the QDT instance.
* @return uint8_t the value of WDOGEN.
*/
LOCAL_INLINE uint8_t QDT_HWA_GetWDOGEN(const QDT_Type *const pQdt)
{
uint8_t u8TmpVal = (pQdt->WDOG & QDT_WDOG_WDOGEN_MASK) >> QDT_WDOG_WDOGEN_SHIFT;
return u8TmpVal;
}
/**
* @brief Set WDOGEN.
* WDOG Enable
* @param pQdt the base address of the QDT instance.
* @param uint8_t u8Value WDOGEN value.
*/
LOCAL_INLINE void QDT_HWA_SetWDOGEN(QDT_Type *const pQdt, uint8_t u8Value)
{
pQdt->WDOG = (pQdt->WDOG & ~QDT_WDOG_WDOGEN_MASK) | QDT_WDOG_WDOGEN(u8Value);
}
/**
* @brief Get the value of ICEXP_NUM_ICM_ECNT.
* Edge number counter in even channel (ICM_ECNT), read, write 8'h5a clear
* Expect number of edge in odd channel (ICEXP_NUM) read-write (rw)
* This field is write protected (depends on WPDIS/WPEN).
* @param pQdt the base address of the QDT instance.
* @param u8Channel QDT Channel.
* @return uint8_t the value of ICEXP_NUM_ICM_ECNT.
*/
LOCAL_INLINE uint8_t QDT_HWA_GetICEXP_NUM_ICM_ECNT(const QDT_Type *const pQdt, uint8_t u8Channel)
{
uint8_t u8TmpVal = (pQdt->Channel[u8Channel].CSC & QDT_CSC_ICEXP_NUM_ICM_ECNT_MASK) >> QDT_CSC_ICEXP_NUM_ICM_ECNT_SHIFT;
return u8TmpVal;
}
/**
* @brief Clear CSC register.
* @param pQdt the base address of the QDT instance.
* @param u8Channel QDT Channel.
*/
LOCAL_INLINE void QDT_HWA_ClearCSC(QDT_Type *const pQdt, uint8_t u8Channel)
{
pQdt->Channel[u8Channel].CSC = 0U;
}
/**
* @brief Set ICEXP_NUM_ICM_ECNT.
* Edge number counter in even channel (ICM_ECNT), read, write 8'h5a clear
* Expect number of edge in odd channel (ICEXP_NUM) read-write (rw)
* This field is write protected (depends on WPDIS/WPEN).
* @param pQdt the base address of the QDT instance.
* @param u8Channel QDT Channel.
* @param uint8_t u8Value ICEXP_NUM_ICM_ECNT value.
*/
LOCAL_INLINE void QDT_HWA_SetICEXP_NUM_ICM_ECNT(QDT_Type *const pQdt, uint8_t u8Channel, uint8_t u8Value)
{
pQdt->Channel[u8Channel].CSC = (pQdt->Channel[u8Channel].CSC & ~QDT_CSC_ICEXP_NUM_ICM_ECNT_MASK) | QDT_CSC_ICEXP_NUM_ICM_ECNT(u8Value);
}
/**
* @brief Get the value of ICM_SIG_REG.
* Re-start a measurement in Single Measurement Mode
* Valid in EVEN Channel
* @param pQdt the base address of the QDT instance.
* @param u8Channel QDT Channel.
* @return uint8_t the value of ICM_SIG_REG.
*/
LOCAL_INLINE uint8_t QDT_HWA_GetICM_SIG_REG(const QDT_Type *const pQdt, uint8_t u8Channel)
{
uint8_t u8TmpVal = (pQdt->Channel[u8Channel].CSC & QDT_CSC_ICM_SIG_REG_MASK) >> QDT_CSC_ICM_SIG_REG_SHIFT;
return u8TmpVal;
}
/**
* @brief Set ICM_SIG_REG.
* Re-start a measurement in Single Measurement Mode
* Valid in EVEN Channel
* @param pQdt the base address of the QDT instance.
* @param u8Channel QDT Channel.
* @param uint8_t u8Value ICM_SIG_REG value.
*/
LOCAL_INLINE void QDT_HWA_SetICM_SIG_REG(QDT_Type *const pQdt, uint8_t u8Channel, uint8_t u8Value)
{
pQdt->Channel[u8Channel].CSC = (pQdt->Channel[u8Channel].CSC & ~QDT_CSC_ICM_SIG_REG_MASK) | QDT_CSC_ICM_SIG_REG(u8Value);
}
/**
* @brief Get the value of ICDPM_START.
* Start in ICDM & ICPM
* (value in ODD Channel is the same as EVEN)
* This field is write protected (depends on WPDIS/WPEN).
* 0b the channel starts measuring after the first edge is detected.
* 1b the measurement starts immediately after activating the channel by ICDM=1 or ICPM=1.
* @param pQdt the base address of the QDT instance.
* @param u8Channel QDT Channel.
* @return uint8_t the value of ICDPM_START.
*/
LOCAL_INLINE uint8_t QDT_HWA_GetICDPM_START(const QDT_Type *const pQdt, uint8_t u8Channel)
{
uint8_t u8TmpVal = (pQdt->Channel[u8Channel].CSC & QDT_CSC_ICDPM_START_MASK) >> QDT_CSC_ICDPM_START_SHIFT;
return u8TmpVal;
}
/**
* @brief Set ICDPM_START.
* Start in ICDM & ICPM
* (value in ODD Channel is the same as EVEN)
* This field is write protected (depends on WPDIS/WPEN).
* 0b the channel starts measuring after the first edge is detected.
* 1b the measurement starts immediately after activating the channel by ICDM=1 or ICPM=1.
* @param pQdt the base address of the QDT instance.
* @param u8Channel QDT Channel.
* @param uint8_t u8Value ICDPM_START value.
*/
LOCAL_INLINE void QDT_HWA_SetICDPM_START(QDT_Type *const pQdt, uint8_t u8Channel, uint8_t u8Value)
{
pQdt->Channel[u8Channel].CSC = (pQdt->Channel[u8Channel].CSC & ~QDT_CSC_ICDPM_START_MASK) | QDT_CSC_ICDPM_START(u8Value);
}
/**
* @brief Get the value of ICM_CONT.
* The measurement is single or continuous
* (value in ODD Channel is the same as EVEN)
* This field is write protected (depends on WPDIS/WPEN).
* 0b single mode.
* 1b continuous mode.
* @param pQdt the base address of the QDT instance.
* @param u8Channel QDT Channel.
* @return uint8_t the value of ICM_CONT.
*/
LOCAL_INLINE uint8_t QDT_HWA_GetICM_CONT(const QDT_Type *const pQdt, uint8_t u8Channel)
{
uint8_t u8TmpVal = (pQdt->Channel[u8Channel].CSC & QDT_CSC_ICM_CONT_MASK) >> QDT_CSC_ICM_CONT_SHIFT;
return u8TmpVal;
}
/**
* @brief Set ICM_CONT.
* The measurement is single or continuous
* (value in ODD Channel is the same as EVEN)
* This field is write protected (depends on WPDIS/WPEN).
* 0b single mode.
* 1b continuous mode.
* @param pQdt the base address of the QDT instance.
* @param u8Channel QDT Channel.
* @param uint8_t u8Value ICM_CONT value.
*/
LOCAL_INLINE void QDT_HWA_SetICM_CONT(QDT_Type *const pQdt, uint8_t u8Channel, uint8_t u8Value)
{
pQdt->Channel[u8Channel].CSC = (pQdt->Channel[u8Channel].CSC & ~QDT_CSC_ICM_CONT_MASK) | QDT_CSC_ICM_CONT(u8Value);
}
/**
* @brief Get the value of ICM_MODE.
* Channel Input Measurement Mode
* (value in ODD Channel is the same as EVEN)
* This field is write protected (depends on WPDIS/WPEN).
* 001b select ICDM mode.
* 010b select ICPM mode.
* 011b select ICENM mode.
* 100b select ICEXPENM mode.
* @param pQdt the base address of the QDT instance.
* @param u8Channel QDT Channel.
* @return uint8_t the value of ICM_MODE.
*/
LOCAL_INLINE uint8_t QDT_HWA_GetICM_MODE(const QDT_Type *const pQdt, uint8_t u8Channel)
{
uint8_t u8TmpVal = (pQdt->Channel[u8Channel].CSC & QDT_CSC_ICM_MODE_MASK) >> QDT_CSC_ICM_MODE_SHIFT;
return u8TmpVal;
}
/**
* @brief Set ICM_MODE.
* Channel Input Measurement Mode
* (value in ODD Channel is the same as EVEN)
* This field is write protected (depends on WPDIS/WPEN).
* 001b select ICDM mode.
* 010b select ICPM mode.
* 011b select ICENM mode.
* 100b select ICEXPENM mode.
* @param pQdt the base address of the QDT instance.
* @param u8Channel QDT Channel.
* @param uint8_t u8Value ICM_MODE value.
*/
LOCAL_INLINE void QDT_HWA_SetICM_MODE(QDT_Type *const pQdt, uint8_t u8Channel, uint8_t u8Value)
{
pQdt->Channel[u8Channel].CSC = (pQdt->Channel[u8Channel].CSC & ~QDT_CSC_ICM_MODE_MASK) | QDT_CSC_ICM_MODE(u8Value);
}
/**
* @brief Get the value of REVMODE.
* Match point is POSCNT or REVCNT
* 0b Match point is POSCNT (CV==POSCNT).
* 1b Match point is REVCNT (CV==REVCNT).
* @param pQdt the base address of the QDT instance.
* @param u8Channel QDT Channel.
* @return uint8_t the value of REVMODE.
*/
LOCAL_INLINE uint8_t QDT_HWA_GetREVMODE(const QDT_Type *const pQdt, uint8_t u8Channel)
{
uint8_t u8TmpVal = (pQdt->Channel[u8Channel].CSC & QDT_CSC_REVMODE_MASK) >> QDT_CSC_REVMODE_SHIFT;
return u8TmpVal;
}
/**
* @brief Set REVMODE.
* Match point is POSCNT or REVCNT
* 0b Match point is POSCNT (CV==POSCNT).
* 1b Match point is REVCNT (CV==REVCNT).
* @param pQdt the base address of the QDT instance.
* @param u8Channel QDT Channel.
* @param uint8_t u8Value REVMODE value.
*/
LOCAL_INLINE void QDT_HWA_SetREVMODE(QDT_Type *const pQdt, uint8_t u8Channel, uint8_t u8Value)
{
pQdt->Channel[u8Channel].CSC = (pQdt->Channel[u8Channel].CSC & ~QDT_CSC_REVMODE_MASK) | QDT_CSC_REVMODE(u8Value);
}
/**
* @brief Get the value of CHTRIG.
* Channel (n) Match Trigger Enable
* Enables the generation of the match Trigger when QDT counter (also is POSCNT) = CV if channel is in quad mode.
* This field is write protected (depends on WPDIS/WPEN).
* 0b - The generation of this match Trigger is disabled.
* 1b - The generation of this match Trigger is enabled.
* @param pQdt the base address of the QDT instance.
* @param u8Channel QDT Channel.
* @return uint8_t the value of CHTRIG.
*/
LOCAL_INLINE uint8_t QDT_HWA_GetCHTRIG(const QDT_Type *const pQdt, uint8_t u8Channel)
{
uint8_t u8TmpVal = (pQdt->Channel[u8Channel].CSC & QDT_CSC_CHTRIG_MASK) >> QDT_CSC_CHTRIG_SHIFT;
return u8TmpVal;
}
/**
* @brief Set CHTRIG.
* Channel (n) Match Trigger Enable
* Enables the generation of the match Trigger when QDT counter (also is POSCNT) = CV if channel is in quad mode.
* This field is write protected (depends on WPDIS/WPEN).
* 0b - The generation of this match Trigger is disabled.
* 1b - The generation of this match Trigger is enabled.
* @param pQdt the base address of the QDT instance.
* @param u8Channel QDT Channel.
* @param uint8_t u8Value CHTRIG value.
*/
LOCAL_INLINE void QDT_HWA_SetCHTRIG(QDT_Type *const pQdt, uint8_t u8Channel, uint8_t u8Value)
{
pQdt->Channel[u8Channel].CSC = (pQdt->Channel[u8Channel].CSC & ~QDT_CSC_CHTRIG_MASK) | QDT_CSC_CHTRIG(u8Value);
}
/**
* @brief Get the value of CHIS.
* Channel (n) Input State
* The CHIS bit has the value of the channel (n) input before the double-sampling.
* 0b - The channel (n) input is zero.
* 1b - The channel (n) input is one.
* @param pQdt the base address of the QDT instance.
* @param u8Channel QDT Channel.
* @return uint8_t the value of CHIS.
*/
LOCAL_INLINE uint8_t QDT_HWA_GetCHIS(const QDT_Type *const pQdt, uint8_t u8Channel)
{
uint8_t u8TmpVal = (pQdt->Channel[u8Channel].CSC & QDT_CSC_CHIS_MASK) >> QDT_CSC_CHIS_SHIFT;
return u8TmpVal;
}
/**
* @brief Get the value of FLTCHIS.
* Channel (n) Input Filter State
* The CHIS bit has the value of the channel (n) input after the double-sampling and the filtering (if the channel (n) filter is enabled).
* 0b - The channel (n) input is zero.
* 1b - The channel (n) input is one.
* @param pQdt the base address of the QDT instance.
* @param u8Channel QDT Channel.
* @return uint8_t the value of FLTCHIS.
*/
LOCAL_INLINE uint8_t QDT_HWA_GetFLTCHIS(const QDT_Type *const pQdt, uint8_t u8Channel)
{
uint8_t u8TmpVal = (pQdt->Channel[u8Channel].CSC & QDT_CSC_FLTCHIS_MASK) >> QDT_CSC_FLTCHIS_SHIFT;
return u8TmpVal;
}
/**
* @brief Get the value of CHF.
* Channel (n) Flag
* Set by hardware when an event occurs on the channel (n) if channel is in input capture mode.
* Also set by hardware when channel value is equal to POSCNT (REVMODE=0) or REVCNT (REVMODE=1) if channel is in quad mode.
* CHF is cleared by reading the CSC register while CHF is set and then writing a 0 to the CHF bit.
* Writing a 1 to CHF has no effect.
* @param pQdt the base address of the QDT instance.
* @param u8Channel QDT Channel.
* @return uint8_t the value of CHF.
*/
LOCAL_INLINE uint8_t QDT_HWA_GetCHF(const QDT_Type *const pQdt, uint8_t u8Channel)
{
uint8_t u8TmpVal = (pQdt->Channel[u8Channel].CSC & QDT_CSC_CHF_MASK) >> QDT_CSC_CHF_SHIFT;
return u8TmpVal;
}
/**
* @brief Clear CHF.
* Channel (n) Flag
* Set by hardware when an event occurs on the channel (n) if channel is in input capture mode.
* Also set by hardware when channel value is equal to POSCNT (REVMODE=0) or REVCNT (REVMODE=1) if channel is in quad mode.
* CHF is cleared by reading the CSC register while CHF is set and then writing a 0 to the CHF bit.
* Writing a 1 to CHF has no effect.
* @param pQdt the base address of the QDT instance.
* @param u8Channel QDT Channel.
*/
LOCAL_INLINE void QDT_HWA_ClearCHF(QDT_Type *const pQdt, uint8_t u8Channel)
{
pQdt->Channel[u8Channel].CSC &= ~QDT_CSC_CHF_MASK;
}
/**
* @brief Get the value of CHIE.
* Channel (n) Interrupt Enable
* 0b - Disable channel (n) interrupt.
* 1b - Enable channel (n) interrupt.
* @param pQdt the base address of the QDT instance.
* @param u8Channel QDT Channel.
* @return uint8_t the value of CHIE.
*/
LOCAL_INLINE uint8_t QDT_HWA_GetCHIE(const QDT_Type *const pQdt, uint8_t u8Channel)
{
uint8_t u8TmpVal = (pQdt->Channel[u8Channel].CSC & QDT_CSC_CHIE_MASK) >> QDT_CSC_CHIE_SHIFT;
return u8TmpVal;
}
/**
* @brief Set CHIE.
* Channel (n) Interrupt Enable
* 0b - Disable channel (n) interrupt.
* 1b - Enable channel (n) interrupt.
* @param pQdt the base address of the QDT instance.
* @param u8Channel QDT Channel.
* @param uint8_t u8Value CHIE value.
*/
LOCAL_INLINE void QDT_HWA_SetCHIE(QDT_Type *const pQdt, uint8_t u8Channel, uint8_t u8Value)
{
pQdt->Channel[u8Channel].CSC = (pQdt->Channel[u8Channel].CSC & ~QDT_CSC_CHIE_MASK) | QDT_CSC_CHIE(u8Value);
}
/**
* @brief Get the value of ELSB.
* Channel (n) Edge or Level Select
* This field is write protected (depends on WPDIS/WPEN).
* @param pQdt the base address of the QDT instance.
* @param u8Channel QDT Channel.
* @return uint8_t the value of ELSB.
*/
LOCAL_INLINE uint8_t QDT_HWA_GetELSB(const QDT_Type *const pQdt, uint8_t u8Channel)
{
uint8_t u8TmpVal = (pQdt->Channel[u8Channel].CSC & QDT_CSC_ELSB_MASK) >> QDT_CSC_ELSB_SHIFT;
return u8TmpVal;
}
/**
* @brief Set ELSB.
* Channel (n) Edge or Level Select
* This field is write protected (depends on WPDIS/WPEN).
* @param pQdt the base address of the QDT instance.
* @param u8Channel QDT Channel.
* @param uint8_t u8Value ELSB value.
*/
LOCAL_INLINE void QDT_HWA_SetELSB(QDT_Type *const pQdt, uint8_t u8Channel, uint8_t u8Value)
{
pQdt->Channel[u8Channel].CSC = (pQdt->Channel[u8Channel].CSC & ~QDT_CSC_ELSB_MASK) | QDT_CSC_ELSB(u8Value);
}
/**
* @brief Get the value of ELSA.
* Channel (n) Edge or Level Select
* This field is write protected (depends on WPDIS/WPEN).
* @param pQdt the base address of the QDT instance.
* @param u8Channel QDT Channel.
* @return uint8_t the value of ELSA.
*/
LOCAL_INLINE uint8_t QDT_HWA_GetELSA(const QDT_Type *const pQdt, uint8_t u8Channel)
{
uint8_t u8TmpVal = (pQdt->Channel[u8Channel].CSC & QDT_CSC_ELSA_MASK) >> QDT_CSC_ELSA_SHIFT;
return u8TmpVal;
}
/**
* @brief Set ELSA.
* Channel (n) Edge or Level Select
* This field is write protected (depends on WPDIS/WPEN).
* @param pQdt the base address of the QDT instance.
* @param u8Channel QDT Channel.
* @param uint8_t u8Value ELSA value.
*/
LOCAL_INLINE void QDT_HWA_SetELSA(QDT_Type *const pQdt, uint8_t u8Channel, uint8_t u8Value)
{
pQdt->Channel[u8Channel].CSC = (pQdt->Channel[u8Channel].CSC & ~QDT_CSC_ELSA_MASK) | QDT_CSC_ELSA(u8Value);
}
/**
* @brief Get the value of ICRST.
* QDT counter reset is driven by the selected event of the channel (n) in the Input Capture mode.
* This field is write protected (depends on WPDIS/WPEN).
* 0b - QDT counter is not reset when the selected channel (n) input event is detected.
* 1b - QDT counter is reset when the selected channel (n) input event is detected.
* @param pQdt the base address of the QDT instance.
* @param u8Channel QDT Channel.
* @return uint8_t the value of ICRST.
*/
LOCAL_INLINE uint8_t QDT_HWA_GetICRST(const QDT_Type *const pQdt, uint8_t u8Channel)
{
uint8_t u8TmpVal = (pQdt->Channel[u8Channel].CSC & QDT_CSC_ICRST_MASK) >> QDT_CSC_ICRST_SHIFT;
return u8TmpVal;
}
/**
* @brief Set ICRST.
* QDT counter reset is driven by the selected event of the channel (n) in the Input Capture mode.
* This field is write protected (depends on WPDIS/WPEN).
* 0b - QDT counter is not reset when the selected channel (n) input event is detected.
* 1b - QDT counter is reset when the selected channel (n) input event is detected.
* @param pQdt the base address of the QDT instance.
* @param u8Channel QDT Channel.
* @param uint8_t u8Value ICRST value.
*/
LOCAL_INLINE void QDT_HWA_SetICRST(QDT_Type *const pQdt, uint8_t u8Channel, uint8_t u8Value)
{
pQdt->Channel[u8Channel].CSC = (pQdt->Channel[u8Channel].CSC & ~QDT_CSC_ICRST_MASK) | QDT_CSC_ICRST(u8Value);
}
/**
* @brief Get the value of CV.
* Channel Value
* Captured QDT counter value of the input modes or the match value for the quadrature decoder modes
* @param pQdt the base address of the QDT instance.
* @param u8Channel QDT Channel.
* @return uint32_t the value of CV.
*/
LOCAL_INLINE uint32_t QDT_HWA_GetCV(const QDT_Type *const pQdt, uint8_t u8Channel)
{
uint32_t u32TmpVal = (pQdt->Channel[u8Channel].CV & QDT_CV_CV_MASK) >> QDT_CV_CV_SHIFT;
return u32TmpVal;
}
/**
* @brief Set CV.
* Channel Value
* Captured QDT counter value of the input modes or the match value for the quadrature decoder modes
* @param pQdt the base address of the QDT instance.
* @param u8Channel QDT Channel.
* @param uint32_t u8Value CV value.
*/
LOCAL_INLINE void QDT_HWA_SetCV(QDT_Type *const pQdt, uint8_t u8Channel, uint32_t u32Value)
{
pQdt->Channel[u8Channel].CV = (pQdt->Channel[u8Channel].CV & ~QDT_CV_CV_MASK) | QDT_CV_CV(u32Value);
}
/**
* @brief Get the value of REVCNT.
* Revolution Counter
* @param pQdt the base address of the QDT instance.
* @return uint16_t the value of REVCNT.
*/
LOCAL_INLINE uint16_t QDT_HWA_GetREVCNT(const QDT_Type *const pQdt)
{
uint16_t u16TmpVal = (pQdt->REVCNT & QDT_REVCNT_REVCNT_MASK) >> QDT_REVCNT_REVCNT_SHIFT;
return u16TmpVal;
}
/**
* @brief Get the value of REVCNT_HOLD.
* Revolution Hold Counter
* @param pQdt the base address of the QDT instance.
* @return uint16_t the value of REVCNT_HOLD.
*/
LOCAL_INLINE uint16_t QDT_HWA_GetREVCNT_HOLD(const QDT_Type *const pQdt)
{
uint16_t u16TmpVal = (pQdt->REVCNT_HOLD & QDT_REVCNT_HOLD_REVCNT_HOLD_MASK) >> QDT_REVCNT_HOLD_REVCNT_HOLD_SHIFT;
return u16TmpVal;
}
/**
* @brief Get the value of POSCNT.
* Position Counter
* Write action will reset Position Counter
* @param pQdt the base address of the QDT instance.
* @return uint32_t the value of POSCNT.
*/
LOCAL_INLINE uint32_t QDT_HWA_GetPOSCNT(const QDT_Type *const pQdt)
{
uint32_t u32TmpVal = (pQdt->POSCNT & QDT_POSCNT_POSCNT_MASK) >> QDT_POSCNT_POSCNT_SHIFT;
return u32TmpVal;
}
/**
* @brief Set POSCNT.
* Position Counter
* Write action will reset Position Counter
* @param pQdt the base address of the QDT instance.
* @param uint32_t u8Value POSCNT value.
*/
LOCAL_INLINE void QDT_HWA_SetPOSCNT(QDT_Type *const pQdt, uint32_t u8Value)
{
pQdt->POSCNT = (pQdt->POSCNT & ~QDT_POSCNT_POSCNT_MASK) | QDT_POSCNT_POSCNT(u8Value);
}
/**
* @brief Get the value of POSCNT_HOLD.
* Position Hold Counter
* @param pQdt the base address of the QDT instance.
* @return uint32_t the value of POSCNT_HOLD.
*/
LOCAL_INLINE uint32_t QDT_HWA_GetPOSCNT_HOLD(const QDT_Type *const pQdt)
{
uint32_t u32TmpVal = (pQdt->POSCNT_HOLD & QDT_POSCNT_HOLD_POSCNT_HOLD_MASK) >> QDT_POSCNT_HOLD_POSCNT_HOLD_SHIFT;
return u32TmpVal;
}
/**
* @brief Get the value of POSDCNT.
* Position Difference Counter
* @param pQdt the base address of the QDT instance.
* @return uint16_t the value of POSDCNT.
*/
LOCAL_INLINE uint16_t QDT_HWA_GetPOSDCNT(const QDT_Type *const pQdt)
{
uint16_t u16TmpVal = (pQdt->POSDCNT & QDT_POSDCNT_POSDCNT_MASK) >> QDT_POSDCNT_POSDCNT_SHIFT;
return u16TmpVal;
}
/**
* @brief Get the value of POSDCNT_HOLD.
* Position Difference Hold Counter
* @param pQdt the base address of the QDT instance.
* @return uint16_t the value of POSDCNT_HOLD.
*/
LOCAL_INLINE uint16_t QDT_HWA_GetPOSDCNT_HOLD(const QDT_Type *const pQdt)
{
uint16_t u16TmpVal = (pQdt->POSDCNT_HOLD & QDT_POSDCNT_HOLD_POSDCNT_HOLD_MASK) >> QDT_POSDCNT_HOLD_POSDCNT_HOLD_SHIFT;
return u16TmpVal;
}
/**
* @brief Get the value of LECNT.
* Last PHA/B Edge Time Counter
* @param pQdt the base address of the QDT instance.
* @return uint16_t the value of LECNT.
*/
LOCAL_INLINE uint16_t QDT_HWA_GetLECNT(const QDT_Type *const pQdt)
{
uint16_t u16TmpVal = (pQdt->LECNT & QDT_LECNT_LECNT_MASK) >> QDT_LECNT_LECNT_SHIFT;
return u16TmpVal;
}
/**
* @brief Get the value of LECNT_HOLD.
* Last PHA/B Edge Time Hold Counter
* @param pQdt the base address of the QDT instance.
* @return uint16_t the value of LECNT_HOLD.
*/
LOCAL_INLINE uint16_t QDT_HWA_GetLECNT_HOLD(const QDT_Type *const pQdt)
{
uint16_t u16TmpVal = (pQdt->LECNT_HOLD & QDT_LECNT_HOLD_LECNT_HOLD_MASK) >> QDT_LECNT_HOLD_LECNT_HOLD_SHIFT;
return u16TmpVal;
}
/**
* @brief Get the value of POSDTMRCNT.
* Position Difference Time Counter
* @param pQdt the base address of the QDT instance.
* @return uint16_t the value of POSDTMRCNT.
*/
LOCAL_INLINE uint16_t QDT_HWA_GetPOSDTMRCNT(const QDT_Type *const pQdt)
{
uint16_t u16TmpVal = (pQdt->POSDTMRCNT & QDT_POSDTMRCNT_POSDTMRCNT_MASK) >> QDT_POSDTMRCNT_POSDTMRCNT_SHIFT;
return u16TmpVal;
}
/**
* @brief Get the value of POSDTMRCNT_HOLD.
* Position Difference Time Hold Counter
* @param pQdt the base address of the QDT instance.
* @return uint16_t the value of POSDTMRCNT_HOLD.
*/
LOCAL_INLINE uint16_t QDT_HWA_GetPOSDTMRCNT_HOLD(const QDT_Type *const pQdt)
{
uint16_t u16TmpVal = (pQdt->POSDTMRCNT_HOLD & QDT_POSDTMRCNT_HOLD_POSDTMRCNT_HOLD_MASK) >> QDT_POSDTMRCNT_HOLD_POSDTMRCNT_HOLD_SHIFT;
return u16TmpVal;
}
#endif
/** @}*/
#endif /* _HWA_QDT_H_ */