/**************************************************************************//** * @file epwm.h * @version V3.00 * @brief M2351 series EPWM driver header file * * @copyright SPDX-License-Identifier: Apache-2.0 * @copyright Copyright (C) 2017-2020 Nuvoton Technology Corp. All rights reserved. *****************************************************************************/ #ifndef __EPWM_H__ #define __EPWM_H__ #ifdef __cplusplus extern "C" { #endif /** @addtogroup Standard_Driver Standard Driver @{ */ /** @addtogroup EPWM_Driver EPWM Driver @{ */ /** @addtogroup EPWM_EXPORTED_CONSTANTS EPWM Exported Constants @{ */ #define EPWM_CHANNEL_NUM (6UL) /*!< EPWM channel number */ #define EPWM_CH_0_MASK (0x1UL) /*!< EPWM channel 0 mask \hideinitializer */ #define EPWM_CH_1_MASK (0x2UL) /*!< EPWM channel 1 mask \hideinitializer */ #define EPWM_CH_2_MASK (0x4UL) /*!< EPWM channel 2 mask \hideinitializer */ #define EPWM_CH_3_MASK (0x8UL) /*!< EPWM channel 3 mask \hideinitializer */ #define EPWM_CH_4_MASK (0x10UL) /*!< EPWM channel 4 mask \hideinitializer */ #define EPWM_CH_5_MASK (0x20UL) /*!< EPWM channel 5 mask \hideinitializer */ /*---------------------------------------------------------------------------------------------------------*/ /* Counter Type Constant Definitions */ /*---------------------------------------------------------------------------------------------------------*/ #define EPWM_UP_COUNTER (0UL) /*!< Up counter type */ #define EPWM_DOWN_COUNTER (1UL) /*!< Down counter type */ #define EPWM_UP_DOWN_COUNTER (2UL) /*!< Up-Down counter type */ /*---------------------------------------------------------------------------------------------------------*/ /* Aligned Type Constant Definitions */ /*---------------------------------------------------------------------------------------------------------*/ #define EPWM_EDGE_ALIGNED (1UL) /*!< EPWM working in edge aligned type(down count) */ #define EPWM_CENTER_ALIGNED (2UL) /*!< EPWM working in center aligned type */ /*---------------------------------------------------------------------------------------------------------*/ /* Output Level Constant Definitions */ /*---------------------------------------------------------------------------------------------------------*/ #define EPWM_OUTPUT_NOTHING (0UL) /*!< EPWM output nothing */ #define EPWM_OUTPUT_LOW (1UL) /*!< EPWM output low */ #define EPWM_OUTPUT_HIGH (2UL) /*!< EPWM output high */ #define EPWM_OUTPUT_TOGGLE (3UL) /*!< EPWM output toggle */ /*---------------------------------------------------------------------------------------------------------*/ /* Synchronous Start Function Control Constant Definitions */ /*---------------------------------------------------------------------------------------------------------*/ #define EPWM_SSCTL_SSRC_EPWM0 (0UL<CTL1 = (epwm)->CTL1 | (0x7ul<CTL1 = (epwm)->CTL1 & ~(0x7ul<CTL0 = (epwm)->CTL0 | EPWM_CTL0_GROUPEN_Msk) /** * @brief This macro disable group mode * @param[in] epwm The pointer of the specified EPWM module * @return None * @details This macro is used to disable group mode of EPWM module. * \hideinitializer */ #define EPWM_DISABLE_GROUP_MODE(epwm) ((epwm)->CTL0 = (epwm)->CTL0 & ~EPWM_CTL0_GROUPEN_Msk) /** * @brief Enable timer synchronous start counting function of specified channel(s) * @param[in] epwm The pointer of the specified EPWM module * @param[in] u32ChannelMask Combination of enabled channels. Each bit corresponds to a channel * Bit 0 represents channel 0, bit 1 represents channel 1... * @param[in] u32SyncSrc Synchronous start source selection, valid values are: * - \ref EPWM_SSCTL_SSRC_EPWM0 * - \ref EPWM_SSCTL_SSRC_EPWM1 * - \ref EPWM_SSCTL_SSRC_BPWM0 * - \ref EPWM_SSCTL_SSRC_BPWM1 * @return None * @details This macro is used to enable timer synchronous start counting function of specified channel(s). * \hideinitializer */ #define EPWM_ENABLE_TIMER_SYNC(epwm, u32ChannelMask, u32SyncSrc) ((epwm)->SSCTL = ((epwm)->SSCTL & ~EPWM_SSCTL_SSRC_Msk) | (u32SyncSrc) | (u32ChannelMask)) /** * @brief Disable timer synchronous start counting function of specified channel(s) * @param[in] epwm The pointer of the specified EPWM module * @param[in] u32ChannelMask Combination of enabled channels. Each bit corresponds to a channel * Bit 0 represents channel 0, bit 1 represents channel 1... * @return None * @details This macro is used to disable timer synchronous start counting function of specified channel(s). * \hideinitializer */ #define EPWM_DISABLE_TIMER_SYNC(epwm, u32ChannelMask) \ do{ \ int i;\ for(i = 0; i < 6; i++) { \ if((u32ChannelMask) & (1UL << i)) \ { \ (epwm)->SSCTL &= ~(1UL << i); \ } \ } \ }while(0) /** * @brief This macro enable EPWM counter synchronous start counting function. * @param[in] epwm The pointer of the specified EPWM module * @return None * @details This macro is used to make selected EPWM0 and EPWM1 channel(s) start counting at the same time. * To configure synchronous start counting channel(s) by EPWM_ENABLE_TIMER_SYNC() and EPWM_DISABLE_TIMER_SYNC(). * \hideinitializer */ #define EPWM_TRIGGER_SYNC_START(epwm) ((epwm)->SSTRG = EPWM_SSTRG_CNTSEN_Msk) /** * @brief This macro enable output inverter of specified channel(s) * @param[in] epwm The pointer of the specified EPWM module * @param[in] u32ChannelMask Combination of enabled channels. Each bit corresponds to a channel * Bit 0 represents channel 0, bit 1 represents channel 1... * @return None * @details This macro is used to enable output inverter of specified channel(s). * \hideinitializer */ #define EPWM_ENABLE_OUTPUT_INVERTER(epwm, u32ChannelMask) ((epwm)->POLCTL = (u32ChannelMask)) /** * @brief This macro get captured rising data * @param[in] epwm The pointer of the specified EPWM module * @param[in] u32ChannelNum EPWM channel number. Valid values are between 0~5 * @return None * @details This macro is used to get captured rising data of specified channel. * \hideinitializer */ #define EPWM_GET_CAPTURE_RISING_DATA(epwm, u32ChannelNum) ((epwm)->CAPDAT[(u32ChannelNum)].RCAPDAT) /** * @brief This macro get captured falling data * @param[in] epwm The pointer of the specified EPWM module * @param[in] u32ChannelNum EPWM channel number. Valid values are between 0~5 * @return None * @details This macro is used to get captured falling data of specified channel. * \hideinitializer */ #define EPWM_GET_CAPTURE_FALLING_DATA(epwm, u32ChannelNum) ((epwm)->CAPDAT[(u32ChannelNum)].FCAPDAT) /** * @brief This macro mask output logic to high or low * @param[in] epwm The pointer of the specified EPWM module * @param[in] u32ChannelMask Combination of enabled channels. Each bit corresponds to a channel * Bit 0 represents channel 0, bit 1 represents channel 1... * @param[in] u32LevelMask Output logic to high or low * @return None * @details This macro is used to mask output logic to high or low of specified channel(s). If u32ChannelMask parameter is 0, then mask function will be disabled. * \hideinitializer */ #define EPWM_MASK_OUTPUT(epwm, u32ChannelMask, u32LevelMask) \ do{ \ (epwm)->MSKEN = (u32ChannelMask); \ (epwm)->MSK = (u32LevelMask); \ }while(0) /** * @brief This macro set the prescaler of the selected channel * @param[in] epwm The pointer of the specified EPWM module * @param[in] u32ChannelNum EPWM channel number. Valid values are between 0~5 * @param[in] u32Prescaler Clock prescaler of specified channel. Valid values are between 0 ~ 0xFFF * @return None * @details This macro is used to set the prescaler of specified channel. Every even channel N, and channel (N + 1) share a prescaler. So if channel 0 prescaler changed, channel 1 will also be affected. * The clock of EPWM counter is divided by (u32Prescaler + 1). * \hideinitializer */ #define EPWM_SET_PRESCALER(epwm, u32ChannelNum, u32Prescaler) ((epwm)->CLKPSC[(u32ChannelNum) >> 1] = (u32Prescaler)) /** * @brief This macro get the prescaler of the selected channel * @param[in] epwm The pointer of the specified EPWM module * @param[in] u32ChannelNum EPWM channel number. Valid values are between 0~5 * @return Return Clock prescaler of specified channel. Valid values are between 0 ~ 0xFFF * @details This macro is used to get the prescaler of specified channel. Every even channel N, and channel (N + 1) share a prescaler. So if channel 0 prescaler changed, channel 1 will also be affected. * The clock of EPWM counter is divided by (u32Prescaler + 1). * \hideinitializer */ #define EPWM_GET_PRESCALER(epwm, u32ChannelNum) ((epwm)->CLKPSC[(u32ChannelNum) >> 1U]) /** * @brief This macro set the comparator of the selected channel * @param[in] epwm The pointer of the specified EPWM module * @param[in] u32ChannelNum EPWM channel number. Valid values are between 0~5 * @param[in] u32CMR Comparator of specified channel. Valid values are between 0~0xFFFF * @return None * @details This macro is used to set the comparator of specified channel. This new setting will take effect on next EPWM period. * \hideinitializer */ #define EPWM_SET_CMR(epwm, u32ChannelNum, u32CMR) ((epwm)->CMPDAT[(u32ChannelNum)]= (u32CMR)) /** * @brief This macro get the comparator of the selected channel * @param[in] epwm The pointer of the specified EPWM module * @param[in] u32ChannelNum EPWM channel number. Valid values are between 0~5 * @return Return the comparator of specified channel. Valid values are between 0~0xFFFF * @details This macro is used to get the comparator of specified channel. * \hideinitializer */ #define EPWM_GET_CMR(epwm, u32ChannelNum) ((epwm)->CMPDAT[(u32ChannelNum)]) /** * @brief This macro set the free trigger comparator of the selected channel * @param[in] epwm The pointer of the specified EPWM module * @param[in] u32ChannelNum EPWM channel number. Valid values are between 0~5 * @param[in] u32FTCMR Free trigger comparator of specified channel. Valid values are between 0~0xFFFF * @return None * @details This macro is used to set the free trigger comparator of specified channel. This new setting will take effect on next EPWM period. * \hideinitializer */ #define EPWM_SET_FTCMR(epwm, u32ChannelNum, u32FTCMR) (((epwm)->FTCMPDAT[((u32ChannelNum) >> 1U)]) = (u32FTCMR)) /** * @brief This macro set the period of the selected channel * @param[in] epwm The pointer of the specified EPWM module * @param[in] u32ChannelNum EPWM channel number. Valid values are between 0~5 * @param[in] u32CNR Period of specified channel. Valid values are between 0~0xFFFF * @return None * @details This macro is used to set the period of specified channel. This new setting will take effect on next EPWM period. EPWM counter will stop if period length set to 0. * \hideinitializer */ #define EPWM_SET_CNR(epwm, u32ChannelNum, u32CNR) ((epwm)->PERIOD[(u32ChannelNum)] = (u32CNR)) /** * @brief This macro get the period of the selected channel * @param[in] epwm The pointer of the specified EPWM module * @param[in] u32ChannelNum EPWM channel number. Valid values are between 0~5 * @return Return the period of specified channel. Valid values are between 0~0xFFFF * @details This macro is used to get the period of specified channel. * \hideinitializer */ #define EPWM_GET_CNR(epwm, u32ChannelNum) ((epwm)->PERIOD[(u32ChannelNum)]) /** * @brief This macro set the EPWM aligned type * @param[in] epwm The pointer of the specified EPWM module * @param[in] u32ChannelMask Combination of enabled channels. Each bit corresponds to a channel * Bit 0 represents channel 0, bit 1 represents channel 1... * @param[in] u32AlignedType EPWM aligned type, valid values are: * - \ref EPWM_EDGE_ALIGNED * - \ref EPWM_CENTER_ALIGNED * @return None * @details This macro is used to set the EPWM aligned type of specified channel(s). * \hideinitializer */ #define EPWM_SET_ALIGNED_TYPE(epwm, u32ChannelMask, u32AlignedType) \ do{ \ uint32_t i; \ for(i = 0UL; i < 6UL; i++) { \ if((u32ChannelMask) & (1UL << i)) \ { \ (epwm)->CTL1 = (((epwm)->CTL1 & ~(3UL << (i << 1))) | ((u32AlignedType) << (i << 1))); \ } \ } \ }while(0) /** * @brief Set load window of window loading mode for specified channel(s) * @param[in] epwm The pointer of the specified EPWM module * @param[in] u32ChannelMask Combination of enabled channels. Each bit corresponds to a channel * Bit 0 represents channel 0, bit 1 represents channel 1... * @return None * @details This macro is used to set load window of window loading mode for specified channel(s). * \hideinitializer */ #define EPWM_SET_LOAD_WINDOW(epwm, u32ChannelMask) ((epwm)->LOAD |= (u32ChannelMask)) /** * @brief Trigger synchronous event from specified channel(s) * @param[in] epwm The pointer of the specified EPWM module * @param[in] u32ChannelNum EPWM channel number. Valid values are 0, 2, 4 * Bit 0 represents channel 0, bit 1 represents channel 2 and bit 2 represents channel 4 * @return None * @details This macro is used to trigger synchronous event from specified channel(s). * \hideinitializer */ #define EPWM_TRIGGER_SYNC(epwm, u32ChannelNum) ((epwm)->SWSYNC |= (1U << ((u32ChannelNum) >> 1))) /** * @brief Clear counter of specified channel(s) * @param[in] epwm The pointer of the specified EPWM module * @param[in] u32ChannelMask Combination of enabled channels. Each bit corresponds to a channel * Bit 0 represents channel 0, bit 1 represents channel 1... * @return None * @details This macro is used to clear counter of specified channel(s). * \hideinitializer */ #define EPWM_CLR_COUNTER(epwm, u32ChannelMask) ((epwm)->CNTCLR |= (u32ChannelMask)) /** * @brief Set output level at zero, compare up, period(center) and compare down of specified channel(s) * @param[in] epwm The pointer of the specified EPWM module * @param[in] u32ChannelMask Combination of enabled channels. Each bit corresponds to a channel * Bit 0 represents channel 0, bit 1 represents channel 1... * @param[in] u32ZeroLevel output level at zero point, valid values are: * - \ref EPWM_OUTPUT_NOTHING * - \ref EPWM_OUTPUT_LOW * - \ref EPWM_OUTPUT_HIGH * - \ref EPWM_OUTPUT_TOGGLE * @param[in] u32CmpUpLevel output level at compare up point, valid values are: * - \ref EPWM_OUTPUT_NOTHING * - \ref EPWM_OUTPUT_LOW * - \ref EPWM_OUTPUT_HIGH * - \ref EPWM_OUTPUT_TOGGLE * @param[in] u32PeriodLevel output level at period(center) point, valid values are: * - \ref EPWM_OUTPUT_NOTHING * - \ref EPWM_OUTPUT_LOW * - \ref EPWM_OUTPUT_HIGH * - \ref EPWM_OUTPUT_TOGGLE * @param[in] u32CmpDownLevel output level at compare down point, valid values are: * - \ref EPWM_OUTPUT_NOTHING * - \ref EPWM_OUTPUT_LOW * - \ref EPWM_OUTPUT_HIGH * - \ref EPWM_OUTPUT_TOGGLE * @return None * @details This macro is used to Set output level at zero, compare up, period(center) and compare down of specified channel(s). * \hideinitializer */ #define EPWM_SET_OUTPUT_LEVEL(epwm, u32ChannelMask, u32ZeroLevel, u32CmpUpLevel, u32PeriodLevel, u32CmpDownLevel) \ do{ \ uint32_t i; \ for(i = 0UL; i < 6UL; i++) { \ if((u32ChannelMask) & (1UL << i)) { \ (epwm)->WGCTL0 = (((epwm)->WGCTL0 & ~(3UL << (i << 1))) | ((u32ZeroLevel) << (i << 1))); \ (epwm)->WGCTL0 = (((epwm)->WGCTL0 & ~(3UL << (EPWM_WGCTL0_PRDPCTL0_Pos + (i << 1)))) | ((u32PeriodLevel) << (EPWM_WGCTL0_PRDPCTL0_Pos + (i << 1)))); \ (epwm)->WGCTL1 = (((epwm)->WGCTL1 & ~(3UL << (i << 1))) | ((u32CmpUpLevel) << (i << 1))); \ (epwm)->WGCTL1 = (((epwm)->WGCTL1 & ~(3UL << (EPWM_WGCTL1_CMPDCTL0_Pos + (i << 1)))) | ((u32CmpDownLevel) << (EPWM_WGCTL1_CMPDCTL0_Pos + (i << 1)))); \ } \ } \ }while(0) /** * @brief Trigger brake event from specified channel(s) * @param[in] epwm The pointer of the specified EPWM module * @param[in] u32ChannelMask Combination of enabled channels. Each bit corresponds to a channel * Bit 0 represents channel 0, bit 1 represents channel 2 and bit 2 represents channel 4 * @param[in] u32BrakeType Type of brake trigger. * - \ref EPWM_FB_EDGE * - \ref EPWM_FB_LEVEL * @return None * @details This macro is used to trigger brake event from specified channel(s). * \hideinitializer */ #define EPWM_TRIGGER_BRAKE(epwm, u32ChannelMask, u32BrakeType) ((epwm)->SWBRK |= ((u32ChannelMask) << (u32BrakeType))) /** * @brief Set Dead zone clock source * @param[in] epwm The pointer of the specified EPWM module * @param[in] u32ChannelNum EPWM channel number. Valid values are between 0~5 * @param[in] u32AfterPrescaler Dead zone clock source is from prescaler output. Valid values are TRUE (after prescaler) or FALSE (before prescaler). * @return None * @details This macro is used to set Dead zone clock source. Every two channels share the same setting. The write-protection function should be disabled before using this function. * \hideinitializer */ #define EPWM_SET_DEADZONE_CLK_SRC(epwm, u32ChannelNum, u32AfterPrescaler) \ (((epwm)->DTCTL[(u32ChannelNum) >> 1]) = ((epwm)->DTCTL[(u32ChannelNum) >> 1] & ~EPWM_DTCTL0_1_DTCKSEL_Msk) | \ ((u32AfterPrescaler) << EPWM_DTCTL0_1_DTCKSEL_Pos)) /*---------------------------------------------------------------------------------------------------------*/ /* Define EPWM functions prototype */ /*---------------------------------------------------------------------------------------------------------*/ uint32_t EPWM_ConfigCaptureChannel(EPWM_T *epwm, uint32_t u32ChannelNum, uint32_t u32UnitTimeNsec, uint32_t u32CaptureEdge); uint32_t EPWM_ConfigOutputChannel(EPWM_T *epwm, uint32_t u32ChannelNum, uint32_t u32Frequency, uint32_t u32DutyCycle); void EPWM_Start(EPWM_T *epwm, uint32_t u32ChannelMask); void EPWM_Stop(EPWM_T *epwm, uint32_t u32ChannelMask); void EPWM_ForceStop(EPWM_T *epwm, uint32_t u32ChannelMask); void EPWM_EnableADCTrigger(EPWM_T *epwm, uint32_t u32ChannelNum, uint32_t u32Condition); void EPWM_DisableADCTrigger(EPWM_T *epwm, uint32_t u32ChannelNum); void EPWM_ClearADCTriggerFlag(EPWM_T *epwm, uint32_t u32ChannelNum, uint32_t u32Condition); uint32_t EPWM_GetADCTriggerFlag(EPWM_T *epwm, uint32_t u32ChannelNum); void EPWM_EnableDACTrigger(EPWM_T *epwm, uint32_t u32ChannelNum, uint32_t u32Condition); void EPWM_DisableDACTrigger(EPWM_T *epwm, uint32_t u32ChannelNum); void EPWM_ClearDACTriggerFlag(EPWM_T *epwm, uint32_t u32ChannelNum, uint32_t u32Condition); uint32_t EPWM_GetDACTriggerFlag(EPWM_T *epwm, uint32_t u32ChannelNum); void EPWM_EnableFaultBrake(EPWM_T *epwm, uint32_t u32ChannelMask, uint32_t u32LevelMask, uint32_t u32BrakeSource); void EPWM_EnableCapture(EPWM_T *epwm, uint32_t u32ChannelMask); void EPWM_DisableCapture(EPWM_T *epwm, uint32_t u32ChannelMask); void EPWM_EnableOutput(EPWM_T *epwm, uint32_t u32ChannelMask); void EPWM_DisableOutput(EPWM_T *epwm, uint32_t u32ChannelMask); void EPWM_EnablePDMA(EPWM_T *epwm, uint32_t u32ChannelNum, uint32_t u32RisingFirst, uint32_t u32Mode); void EPWM_DisablePDMA(EPWM_T *epwm, uint32_t u32ChannelNum); void EPWM_EnableDeadZone(EPWM_T *epwm, uint32_t u32ChannelNum, uint32_t u32Duration); void EPWM_DisableDeadZone(EPWM_T *epwm, uint32_t u32ChannelNum); void EPWM_EnableCaptureInt(EPWM_T *epwm, uint32_t u32ChannelNum, uint32_t u32Edge); void EPWM_DisableCaptureInt(EPWM_T *epwm, uint32_t u32ChannelNum, uint32_t u32Edge); void EPWM_ClearCaptureIntFlag(EPWM_T *epwm, uint32_t u32ChannelNum, uint32_t u32Edge); uint32_t EPWM_GetCaptureIntFlag(EPWM_T *epwm, uint32_t u32ChannelNum); void EPWM_EnableDutyInt(EPWM_T *epwm, uint32_t u32ChannelNum, uint32_t u32IntDutyType); void EPWM_DisableDutyInt(EPWM_T *epwm, uint32_t u32ChannelNum); void EPWM_ClearDutyIntFlag(EPWM_T *epwm, uint32_t u32ChannelNum); uint32_t EPWM_GetDutyIntFlag(EPWM_T *epwm, uint32_t u32ChannelNum); void EPWM_EnableFaultBrakeInt(EPWM_T *epwm, uint32_t u32BrakeSource); void EPWM_DisableFaultBrakeInt(EPWM_T *epwm, uint32_t u32BrakeSource); void EPWM_ClearFaultBrakeIntFlag(EPWM_T *epwm, uint32_t u32BrakeSource); uint32_t EPWM_GetFaultBrakeIntFlag(EPWM_T *epwm, uint32_t u32BrakeSource); void EPWM_EnablePeriodInt(EPWM_T *epwm, uint32_t u32ChannelNum, uint32_t u32IntPeriodType); void EPWM_DisablePeriodInt(EPWM_T *epwm, uint32_t u32ChannelNum); void EPWM_ClearPeriodIntFlag(EPWM_T *epwm, uint32_t u32ChannelNum); uint32_t EPWM_GetPeriodIntFlag(EPWM_T *epwm, uint32_t u32ChannelNum); void EPWM_EnableZeroInt(EPWM_T *epwm, uint32_t u32ChannelNum); void EPWM_DisableZeroInt(EPWM_T *epwm, uint32_t u32ChannelNum); void EPWM_ClearZeroIntFlag(EPWM_T *epwm, uint32_t u32ChannelNum); uint32_t EPWM_GetZeroIntFlag(EPWM_T *epwm, uint32_t u32ChannelNum); void EPWM_EnableAcc(EPWM_T *epwm, uint32_t u32ChannelNum, uint32_t u32IntFlagCnt, uint32_t u32IntAccSrc); void EPWM_DisableAcc(EPWM_T *epwm, uint32_t u32ChannelNum); void EPWM_EnableAccInt(EPWM_T *epwm, uint32_t u32ChannelNum); void EPWM_DisableAccInt(EPWM_T *epwm, uint32_t u32ChannelNum); void EPWM_ClearAccInt(EPWM_T *epwm, uint32_t u32ChannelNum); uint32_t EPWM_GetAccInt(EPWM_T *epwm, uint32_t u32ChannelNum); void EPWM_EnableAccPDMA(EPWM_T *epwm, uint32_t u32ChannelNum); void EPWM_DisableAccPDMA(EPWM_T *epwm, uint32_t u32ChannelNum); void EPWM_ClearFTDutyIntFlag(EPWM_T *epwm, uint32_t u32ChannelNum); uint32_t EPWM_GetFTDutyIntFlag(EPWM_T *epwm, uint32_t u32ChannelNum); void EPWM_EnableLoadMode(EPWM_T *epwm, uint32_t u32ChannelNum, uint32_t u32LoadMode); void EPWM_DisableLoadMode(EPWM_T *epwm, uint32_t u32ChannelNum, uint32_t u32LoadMode); void EPWM_ConfigSyncPhase(EPWM_T *epwm, uint32_t u32ChannelNum, uint32_t u32SyncSrc, uint32_t u32Direction, uint32_t u32StartPhase); void EPWM_EnableSyncPhase(EPWM_T *epwm, uint32_t u32ChannelMask); void EPWM_DisableSyncPhase(EPWM_T *epwm, uint32_t u32ChannelMask); void EPWM_EnableSyncNoiseFilter(EPWM_T *epwm, uint32_t u32ClkCnt, uint32_t u32ClkDivSel); void EPWM_DisableSyncNoiseFilter(EPWM_T *epwm); void EPWM_EnableSyncPinInverse(EPWM_T *epwm); void EPWM_DisableSyncPinInverse(EPWM_T *epwm); void EPWM_SetClockSource(EPWM_T *epwm, uint32_t u32ChannelNum, uint32_t u32ClkSrcSel); void EPWM_EnableBrakeNoiseFilter(EPWM_T *epwm, uint32_t u32BrakePinNum, uint32_t u32ClkCnt, uint32_t u32ClkDivSel); void EPWM_DisableBrakeNoiseFilter(EPWM_T *epwm, uint32_t u32BrakePinNum); void EPWM_EnableBrakePinInverse(EPWM_T *epwm, uint32_t u32BrakePinNum); void EPWM_DisableBrakePinInverse(EPWM_T *epwm, uint32_t u32BrakePinNum); void EPWM_SetBrakePinSource(EPWM_T *epwm, uint32_t u32BrakePinNum, uint32_t u32SelAnotherModule); void EPWM_SetLeadingEdgeBlanking(EPWM_T *epwm, uint32_t u32TrigSrcSel, uint32_t u32TrigType, uint32_t u32BlankingCnt, uint32_t u32BlankingEnable); uint32_t EPWM_GetWrapAroundFlag(EPWM_T *epwm, uint32_t u32ChannelNum); void EPWM_ClearWrapAroundFlag(EPWM_T *epwm, uint32_t u32ChannelNum); /*@}*/ /* end of group EPWM_EXPORTED_FUNCTIONS */ /*@}*/ /* end of group EPWM_Driver */ /*@}*/ /* end of group Standard_Driver */ #ifdef __cplusplus } #endif #endif /* __EPWM_H__ */