Date: March 20, 2011 This library is created from "LPC17xx CMSIS-Compliant Standard Peripheral Firmware Driver Library (GNU, Keil, IAR) (Jan 28, 2011)", available from NXP's website, under "All microcontrollers support documents" [[http://ics.nxp.com/support/documents/microcontrollers/?type=software]] You will need to follow [[/projects/libraries/svn/mbed/trunk/LPC1768/LPC17xx.h]] while using this library Examples provided here [[/users/frank26080115/programs/LPC1700CMSIS_Examples/]] The beautiful thing is that NXP does not place copyright protection on any of the files in here Only a few modifications are made to make it compile with the mbed online compiler, I fixed some warnings as well. This is untested as of March 20, 2011 Forum post about this library: [[/forum/mbed/topic/2030/]]

Revision:
0:84d7747641aa
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/lpc17xx_mcpwm.c	Sun Mar 20 18:45:15 2011 +0000
@@ -0,0 +1,497 @@
+/***********************************************************************//**
+ * @file        lpc17xx_mcpwm.c
+ * @brief        Contains all functions support for Motor Control PWM firmware
+ *                 library on LPC17xx
+ * @version        2.0
+ * @date        21. May. 2010
+ * @author        NXP MCU SW Application Team
+ **************************************************************************
+ * Software that is described herein is for illustrative purposes only
+ * which provides customers with programming information regarding the
+ * products. This software is supplied "AS IS" without any warranties.
+ * NXP Semiconductors assumes no responsibility or liability for the
+ * use of the software, conveys no license or title under any patent,
+ * copyright, or mask work right to the product. NXP Semiconductors
+ * reserves the right to make changes in the software without
+ * notification. NXP Semiconductors also make no representation or
+ * warranty that such application will be suitable for the specified
+ * use without further testing or modification.
+ **********************************************************************/
+
+/* Peripheral group ----------------------------------------------------------- */
+/** @addtogroup MCPWM
+ * @{
+ */
+
+/* Includes ------------------------------------------------------------------- */
+#include "lpc17xx_mcpwm.h"
+#include "lpc17xx_clkpwr.h"
+
+/* If this source file built with example, the LPC17xx FW library configuration
+ * file in each example directory ("lpc17xx_libcfg.h") must be included,
+ * otherwise the default FW library configuration file must be included instead
+ */
+#ifdef __BUILD_WITH_EXAMPLE__
+#include "lpc17xx_libcfg.h"
+#else
+#include "lpc17xx_libcfg_default.h"
+#endif /* __BUILD_WITH_EXAMPLE__ */
+
+
+#ifdef _MCPWM
+
+/* Public Functions ----------------------------------------------------------- */
+/** @addtogroup MCPWM_Public_Functions
+ * @{
+ */
+
+/*********************************************************************//**
+ * @brief        Initializes the MCPWM peripheral
+ * @param[in]    MCPWMx         Motor Control PWM peripheral selected,
+ *                 Should be: LPC_MCPWM
+ * @return        None
+ **********************************************************************/
+void MCPWM_Init(LPC_MCPWM_TypeDef *MCPWMx)
+{
+
+    /* Turn On MCPWM PCLK */
+    CLKPWR_ConfigPPWR (CLKPWR_PCONP_PCMC, ENABLE);
+    /* As default, peripheral clock for MCPWM module
+     * is set to FCCLK / 2 */
+    // CLKPWR_SetPCLKDiv(CLKPWR_PCLKSEL_MC, CLKPWR_PCLKSEL_CCLK_DIV_2);
+
+    MCPWMx->MCCAP_CLR = MCPWM_CAPCLR_CAP(0) | MCPWM_CAPCLR_CAP(1) | MCPWM_CAPCLR_CAP(2);
+    MCPWMx->MCINTFLAG_CLR = MCPWM_INT_ILIM(0) | MCPWM_INT_ILIM(1) | MCPWM_INT_ILIM(2) \
+                            | MCPWM_INT_IMAT(0) | MCPWM_INT_IMAT(1) | MCPWM_INT_IMAT(2) \
+                            | MCPWM_INT_ICAP(0) | MCPWM_INT_ICAP(1) | MCPWM_INT_ICAP(2);
+    MCPWMx->MCINTEN_CLR = MCPWM_INT_ILIM(0) | MCPWM_INT_ILIM(1) | MCPWM_INT_ILIM(2) \
+                            | MCPWM_INT_IMAT(0) | MCPWM_INT_IMAT(1) | MCPWM_INT_IMAT(2) \
+                            | MCPWM_INT_ICAP(0) | MCPWM_INT_ICAP(1) | MCPWM_INT_ICAP(2);
+}
+
+
+/*********************************************************************//**
+ * @brief        Configures each channel in MCPWM peripheral according to the
+ *                 specified parameters in the MCPWM_CHANNEL_CFG_Type.
+ * @param[in]    MCPWMx             Motor Control PWM peripheral selected
+ *                                 should be: LPC_MCPWM
+ * @param[in]    channelNum        Channel number, should be: 0..2.
+ * @param[in]    channelSetup    Pointer to a MCPWM_CHANNEL_CFG_Type structure
+*                                that contains the configuration information for the
+*                                specified MCPWM channel.
+ * @return        None
+ **********************************************************************/
+void MCPWM_ConfigChannel(LPC_MCPWM_TypeDef *MCPWMx, uint32_t channelNum,
+                        MCPWM_CHANNEL_CFG_Type * channelSetup)
+{
+    if (channelNum <= 2) {
+        if (channelNum == 0) {
+            MCPWMx->MCTIM0 = channelSetup->channelTimercounterValue;
+            MCPWMx->MCPER0 = channelSetup->channelPeriodValue;
+            MCPWMx->MCPW0 = channelSetup->channelPulsewidthValue;
+        } else if (channelNum == 1) {
+            MCPWMx->MCTIM1 = channelSetup->channelTimercounterValue;
+            MCPWMx->MCPER1 = channelSetup->channelPeriodValue;
+            MCPWMx->MCPW1 = channelSetup->channelPulsewidthValue;
+        } else if (channelNum == 2) {
+            MCPWMx->MCTIM2 = channelSetup->channelTimercounterValue;
+            MCPWMx->MCPER2 = channelSetup->channelPeriodValue;
+            MCPWMx->MCPW2 = channelSetup->channelPulsewidthValue;
+        } else {
+            return;
+        }
+
+        if (channelSetup->channelType /* == MCPWM_CHANNEL_CENTER_MODE */){
+            MCPWMx->MCCON_SET = MCPWM_CON_CENTER(channelNum);
+        } else {
+            MCPWMx->MCCON_CLR = MCPWM_CON_CENTER(channelNum);
+        }
+
+        if (channelSetup->channelPolarity /* == MCPWM_CHANNEL_PASSIVE_HI */){
+            MCPWMx->MCCON_SET = MCPWM_CON_POLAR(channelNum);
+        } else {
+            MCPWMx->MCCON_CLR = MCPWM_CON_POLAR(channelNum);
+        }
+
+        if (channelSetup->channelDeadtimeEnable /* == ENABLE */){
+            MCPWMx->MCCON_SET = MCPWM_CON_DTE(channelNum);
+            MCPWMx->MCDEADTIME &= ~(MCPWM_DT(channelNum, 0x3FF));
+            MCPWMx->MCDEADTIME |= MCPWM_DT(channelNum, channelSetup->channelDeadtimeValue);
+        } else {
+            MCPWMx->MCCON_CLR = MCPWM_CON_DTE(channelNum);
+        }
+
+        if (channelSetup->channelUpdateEnable /* == ENABLE */){
+            MCPWMx->MCCON_CLR = MCPWM_CON_DISUP(channelNum);
+        } else {
+            MCPWMx->MCCON_SET = MCPWM_CON_DISUP(channelNum);
+        }
+    }
+}
+
+
+/*********************************************************************//**
+ * @brief        Write to MCPWM shadow registers - Update the value for period
+ *                 and pulse width in MCPWM peripheral.
+ * @param[in]    MCPWMx             Motor Control PWM peripheral selected
+ *                                 Should be: LPC_MCPWM
+ * @param[in]    channelNum        Channel Number, should be: 0..2.
+ * @param[in]    channelSetup    Pointer to a MCPWM_CHANNEL_CFG_Type structure
+*                                that contains the configuration information for the
+*                                specified MCPWM channel.
+ * @return        None
+ **********************************************************************/
+void MCPWM_WriteToShadow(LPC_MCPWM_TypeDef *MCPWMx, uint32_t channelNum,
+                                MCPWM_CHANNEL_CFG_Type *channelSetup)
+{
+    if (channelNum == 0){
+        MCPWMx->MCPER0 = channelSetup->channelPeriodValue;
+        MCPWMx->MCPW0 = channelSetup->channelPulsewidthValue;
+    } else if (channelNum == 1) {
+        MCPWMx->MCPER1 = channelSetup->channelPeriodValue;
+        MCPWMx->MCPW1 = channelSetup->channelPulsewidthValue;
+    } else if (channelNum == 2) {
+        MCPWMx->MCPER2 = channelSetup->channelPeriodValue;
+        MCPWMx->MCPW2 = channelSetup->channelPulsewidthValue;
+    }
+}
+
+
+
+/*********************************************************************//**
+ * @brief        Configures capture function in MCPWM peripheral
+ * @param[in]    MCPWMx             Motor Control PWM peripheral selected
+ *                                 Should be: LPC_MCPWM
+ * @param[in]    channelNum        MCI (Motor Control Input pin) number
+ *                                 Should be: 0..2
+ * @param[in]    captureConfig    Pointer to a MCPWM_CAPTURE_CFG_Type structure
+*                                that contains the configuration information for the
+*                                specified MCPWM capture.
+ * @return
+ **********************************************************************/
+void MCPWM_ConfigCapture(LPC_MCPWM_TypeDef *MCPWMx, uint32_t channelNum,
+                        MCPWM_CAPTURE_CFG_Type *captureConfig)
+{
+    if (channelNum <= 2) {
+
+        if (captureConfig->captureFalling /* == ENABLE */) {
+            MCPWMx->MCCAPCON_SET = MCPWM_CAPCON_CAPMCI_FE(captureConfig->captureChannel, channelNum);
+        } else {
+            MCPWMx->MCCAPCON_CLR = MCPWM_CAPCON_CAPMCI_FE(captureConfig->captureChannel, channelNum);
+        }
+
+        if (captureConfig->captureRising /* == ENABLE */) {
+            MCPWMx->MCCAPCON_SET = MCPWM_CAPCON_CAPMCI_RE(captureConfig->captureChannel, channelNum);
+        } else {
+            MCPWMx->MCCAPCON_CLR = MCPWM_CAPCON_CAPMCI_RE(captureConfig->captureChannel, channelNum);
+        }
+
+        if (captureConfig->timerReset /* == ENABLE */){
+            MCPWMx->MCCAPCON_SET = MCPWM_CAPCON_RT(captureConfig->captureChannel);
+        } else {
+            MCPWMx->MCCAPCON_CLR = MCPWM_CAPCON_RT(captureConfig->captureChannel);
+        }
+
+        if (captureConfig->hnfEnable /* == ENABLE */){
+            MCPWMx->MCCAPCON_SET = MCPWM_CAPCON_HNFCAP(channelNum);
+        } else {
+            MCPWMx->MCCAPCON_CLR = MCPWM_CAPCON_HNFCAP(channelNum);
+        }
+    }
+}
+
+
+/*********************************************************************//**
+ * @brief        Clears current captured value in specified capture channel
+ * @param[in]    MCPWMx         Motor Control PWM peripheral selected
+ *                             Should be: LPC_MCPWM
+ * @param[in]    captureChannel    Capture channel number, should be: 0..2
+ * @return        None
+ **********************************************************************/
+void MCPWM_ClearCapture(LPC_MCPWM_TypeDef *MCPWMx, uint32_t captureChannel)
+{
+    MCPWMx->MCCAP_CLR = MCPWM_CAPCLR_CAP(captureChannel);
+}
+
+/*********************************************************************//**
+ * @brief        Get current captured value in specified capture channel
+ * @param[in]    MCPWMx         Motor Control PWM peripheral selected,
+ *                             Should be: LPC_MCPWM
+ * @param[in]    captureChannel    Capture channel number, should be: 0..2
+ * @return        None
+ **********************************************************************/
+uint32_t MCPWM_GetCapture(LPC_MCPWM_TypeDef *MCPWMx, uint32_t captureChannel)
+{
+    if (captureChannel == 0){
+        return (MCPWMx->MCCR0);
+    } else if (captureChannel == 1) {
+        return (MCPWMx->MCCR1);
+    } else if (captureChannel == 2) {
+        return (MCPWMx->MCCR2);
+    }
+    return (0);
+}
+
+
+/*********************************************************************//**
+ * @brief        Configures Count control in MCPWM peripheral
+ * @param[in]    MCPWMx         Motor Control PWM peripheral selected
+ *                             Should be: LPC_MCPWM
+ * @param[in]    channelNum    Channel number, should be: 0..2
+ * @param[in]    countMode    Count mode, should be:
+ *                             - ENABLE: Enables count mode.
+ *                             - DISABLE: Disable count mode, the channel is in timer mode.
+ * @param[in]    countConfig    Pointer to a MCPWM_COUNT_CFG_Type structure
+*                            that contains the configuration information for the
+*                            specified MCPWM count control.
+ * @return        None
+ **********************************************************************/
+void MCPWM_CountConfig(LPC_MCPWM_TypeDef *MCPWMx, uint32_t channelNum,
+                    uint32_t countMode, MCPWM_COUNT_CFG_Type *countConfig)
+{
+    if (channelNum <= 2) {
+        if (countMode /* == ENABLE */){
+            MCPWMx->MCCNTCON_SET = MCPWM_CNTCON_CNTR(channelNum);
+            if (countConfig->countFalling /* == ENABLE */) {
+                MCPWMx->MCCNTCON_SET = MCPWM_CNTCON_TCMCI_FE(countConfig->counterChannel,channelNum);
+            } else {
+                MCPWMx->MCCNTCON_CLR = MCPWM_CNTCON_TCMCI_FE(countConfig->counterChannel,channelNum);
+            }
+            if (countConfig->countRising /* == ENABLE */) {
+                MCPWMx->MCCNTCON_SET = MCPWM_CNTCON_TCMCI_RE(countConfig->counterChannel,channelNum);
+            } else {
+                MCPWMx->MCCNTCON_CLR = MCPWM_CNTCON_TCMCI_RE(countConfig->counterChannel,channelNum);
+            }
+        } else {
+            MCPWMx->MCCNTCON_CLR = MCPWM_CNTCON_CNTR(channelNum);
+        }
+    }
+}
+
+
+/*********************************************************************//**
+ * @brief        Start MCPWM activity for each MCPWM channel
+ * @param[in]    MCPWMx         Motor Control PWM peripheral selected
+ *                             Should be: LPC_MCPWM
+ * @param[in]    channel0    State of this command on channel 0:
+ *                             - ENABLE: 'Start' command will effect on channel 0
+ *                             - DISABLE: 'Start' command will not effect on channel 0
+ * @param[in]    channel1    State of this command on channel 1:
+ *                             - ENABLE: 'Start' command will effect on channel 1
+ *                             - DISABLE: 'Start' command will not effect on channel 1
+ * @param[in]    channel2    State of this command on channel 2:
+ *                             - ENABLE: 'Start' command will effect on channel 2
+ *                             - DISABLE: 'Start' command will not effect on channel 2
+ * @return        None
+ **********************************************************************/
+void MCPWM_Start(LPC_MCPWM_TypeDef *MCPWMx, uint32_t channel0,
+                    uint32_t channel1, uint32_t channel2)
+{
+    uint32_t regVal = 0;
+    regVal = (channel0 ? MCPWM_CON_RUN(0) : 0) | (channel1 ? MCPWM_CON_RUN(1) : 0) \
+                | (channel2 ? MCPWM_CON_RUN(2) : 0);
+    MCPWMx->MCCON_SET = regVal;
+}
+
+
+/*********************************************************************//**
+ * @brief        Stop MCPWM activity for each MCPWM channel
+ * @param[in]    MCPWMx         Motor Control PWM peripheral selected
+ *                             Should be: LPC_MCPWM
+ * @param[in]    channel0    State of this command on channel 0:
+ *                             - ENABLE: 'Stop' command will effect on channel 0
+ *                             - DISABLE: 'Stop' command will not effect on channel 0
+ * @param[in]    channel1    State of this command on channel 1:
+ *                             - ENABLE: 'Stop' command will effect on channel 1
+ *                             - DISABLE: 'Stop' command will not effect on channel 1
+ * @param[in]    channel2    State of this command on channel 2:
+ *                             - ENABLE: 'Stop' command will effect on channel 2
+ *                             - DISABLE: 'Stop' command will not effect on channel 2
+ * @return        None
+ **********************************************************************/
+void MCPWM_Stop(LPC_MCPWM_TypeDef *MCPWMx, uint32_t channel0,
+        uint32_t channel1, uint32_t channel2)
+{
+    uint32_t regVal = 0;
+    regVal = (channel0 ? MCPWM_CON_RUN(0) : 0) | (channel1 ? MCPWM_CON_RUN(1) : 0) \
+                | (channel2 ? MCPWM_CON_RUN(2) : 0);
+    MCPWMx->MCCON_CLR = regVal;
+}
+
+
+/*********************************************************************//**
+ * @brief        Enables/Disables 3-phase AC motor mode on MCPWM peripheral
+ * @param[in]    MCPWMx         Motor Control PWM peripheral selected
+ *                             Should be: LPC_MCPWM
+ * @param[in]    acMode        State of this command, should be:
+ *                             - ENABLE.
+ *                             - DISABLE.
+ * @return        None
+ **********************************************************************/
+void MCPWM_ACMode(LPC_MCPWM_TypeDef *MCPWMx, uint32_t acMode)
+{
+    if (acMode){
+        MCPWMx->MCCON_SET = MCPWM_CON_ACMODE;
+    } else {
+        MCPWMx->MCCON_CLR = MCPWM_CON_ACMODE;
+    }
+}
+
+
+/*********************************************************************//**
+ * @brief        Enables/Disables 3-phase DC motor mode on MCPWM peripheral
+ * @param[in]    MCPWMx             Motor Control PWM peripheral selected
+ *                                 Should be: LPC_MCPWM
+ * @param[in]    dcMode            State of this command, should be:
+ *                                 - ENABLE.
+ *                                 - DISABLE.
+ * @param[in]    outputInvered    Polarity of the MCOB outputs for all 3 channels,
+ *                                 should be:
+ *                                 - ENABLE: The MCOB outputs have opposite polarity
+ *                                     from the MCOA outputs.
+ *                                 - DISABLE: The MCOB outputs have the same basic
+ *                                     polarity as the MCOA outputs.
+ * @param[in]    outputPattern    A value contains bits that enables/disables the specified
+ *                                 output pins route to the internal MCOA0 signal, should be:
+                                - MCPWM_PATENT_A0:      MCOA0 tracks internal MCOA0
+                                - MCPWM_PATENT_B0:      MCOB0 tracks internal MCOA0
+                                - MCPWM_PATENT_A1:      MCOA1 tracks internal MCOA0
+                                - MCPWM_PATENT_B1:      MCOB1 tracks internal MCOA0
+                                - MCPWM_PATENT_A2:      MCOA2 tracks internal MCOA0
+                                - MCPWM_PATENT_B2:      MCOB2 tracks internal MCOA0
+ * @return        None
+ *
+ * Note: all these outputPatent values above can be ORed together for using as input parameter.
+ **********************************************************************/
+void MCPWM_DCMode(LPC_MCPWM_TypeDef *MCPWMx, uint32_t dcMode,
+                    uint32_t outputInvered, uint32_t outputPattern)
+{
+    if (dcMode){
+        MCPWMx->MCCON_SET = MCPWM_CON_DCMODE;
+    } else {
+        MCPWMx->MCCON_CLR = MCPWM_CON_DCMODE;
+    }
+
+    if (outputInvered) {
+        MCPWMx->MCCON_SET = MCPWM_CON_INVBDC;
+    } else {
+        MCPWMx->MCCON_CLR = MCPWM_CON_INVBDC;
+    }
+
+    MCPWMx->MCCCP = outputPattern;
+}
+
+
+/*********************************************************************//**
+ * @brief        Configures the specified interrupt in MCPWM peripheral
+ * @param[in]    MCPWMx         Motor Control PWM peripheral selected
+ *                             Should be: LPC_MCPWM
+ * @param[in]    ulIntType    Interrupt type, should be:
+ *                             - MCPWM_INTFLAG_LIM0: Limit interrupt for channel (0)
+ *                             - MCPWM_INTFLAG_MAT0: Match interrupt for channel (0)
+ *                             - MCPWM_INTFLAG_CAP0: Capture interrupt for channel (0)
+ *                             - MCPWM_INTFLAG_LIM1: Limit interrupt for channel (1)
+ *                             - MCPWM_INTFLAG_MAT1: Match interrupt for channel (1)
+ *                             - MCPWM_INTFLAG_CAP1: Capture interrupt for channel (1)
+ *                             - MCPWM_INTFLAG_LIM2: Limit interrupt for channel (2)
+ *                             - MCPWM_INTFLAG_MAT2: Match interrupt for channel (2)
+ *                             - MCPWM_INTFLAG_CAP2: Capture interrupt for channel (2)
+ *                             - MCPWM_INTFLAG_ABORT: Fast abort interrupt
+ * @param[in]    NewState    New State of this command, should be:
+ *                             - ENABLE.
+ *                             - DISABLE.
+ * @return        None
+ *
+ * Note: all these ulIntType values above can be ORed together for using as input parameter.
+ **********************************************************************/
+void MCPWM_IntConfig(LPC_MCPWM_TypeDef *MCPWMx, uint32_t ulIntType, FunctionalState NewState)
+{
+    if (NewState) {
+        MCPWMx->MCINTEN_SET = ulIntType;
+    } else {
+        MCPWMx->MCINTEN_CLR = ulIntType;
+    }
+}
+
+
+/*********************************************************************//**
+ * @brief        Sets/Forces the specified interrupt for MCPWM peripheral
+ * @param[in]    MCPWMx         Motor Control PWM peripheral selected
+ *                             Should be LPC_MCPWM
+ * @param[in]    ulIntType    Interrupt type, should be:
+ *                             - MCPWM_INTFLAG_LIM0: Limit interrupt for channel (0)
+ *                             - MCPWM_INTFLAG_MAT0: Match interrupt for channel (0)
+ *                             - MCPWM_INTFLAG_CAP0: Capture interrupt for channel (0)
+ *                             - MCPWM_INTFLAG_LIM1: Limit interrupt for channel (1)
+ *                             - MCPWM_INTFLAG_MAT1: Match interrupt for channel (1)
+ *                             - MCPWM_INTFLAG_CAP1: Capture interrupt for channel (1)
+ *                             - MCPWM_INTFLAG_LIM2: Limit interrupt for channel (2)
+ *                             - MCPWM_INTFLAG_MAT2: Match interrupt for channel (2)
+ *                             - MCPWM_INTFLAG_CAP2: Capture interrupt for channel (2)
+ *                             - MCPWM_INTFLAG_ABORT: Fast abort interrupt
+ * @return        None
+ * Note: all these ulIntType values above can be ORed together for using as input parameter.
+ **********************************************************************/
+void MCPWM_IntSet(LPC_MCPWM_TypeDef *MCPWMx, uint32_t ulIntType)
+{
+    MCPWMx->MCINTFLAG_SET = ulIntType;
+}
+
+
+/*********************************************************************//**
+ * @brief        Clear the specified interrupt pending for MCPWM peripheral
+ * @param[in]    MCPWMx         Motor Control PWM peripheral selected,
+ *                             should be: LPC_MCPWM
+ * @param[in]    ulIntType    Interrupt type, should be:
+ *                             - MCPWM_INTFLAG_LIM0: Limit interrupt for channel (0)
+ *                             - MCPWM_INTFLAG_MAT0: Match interrupt for channel (0)
+ *                             - MCPWM_INTFLAG_CAP0: Capture interrupt for channel (0)
+ *                             - MCPWM_INTFLAG_LIM1: Limit interrupt for channel (1)
+ *                             - MCPWM_INTFLAG_MAT1: Match interrupt for channel (1)
+ *                             - MCPWM_INTFLAG_CAP1: Capture interrupt for channel (1)
+ *                             - MCPWM_INTFLAG_LIM2: Limit interrupt for channel (2)
+ *                             - MCPWM_INTFLAG_MAT2: Match interrupt for channel (2)
+ *                             - MCPWM_INTFLAG_CAP2: Capture interrupt for channel (2)
+ *                             - MCPWM_INTFLAG_ABORT: Fast abort interrupt
+ * @return        None
+ * Note: all these ulIntType values above can be ORed together for using as input parameter.
+ **********************************************************************/
+void MCPWM_IntClear(LPC_MCPWM_TypeDef *MCPWMx, uint32_t ulIntType)
+{
+    MCPWMx->MCINTFLAG_CLR = ulIntType;
+}
+
+
+/*********************************************************************//**
+ * @brief        Check whether if the specified interrupt in MCPWM is set or not
+ * @param[in]    MCPWMx         Motor Control PWM peripheral selected,
+ *                             should be: LPC_MCPWM
+ * @param[in]    ulIntType    Interrupt type, should be:
+ *                             - MCPWM_INTFLAG_LIM0: Limit interrupt for channel (0)
+ *                             - MCPWM_INTFLAG_MAT0: Match interrupt for channel (0)
+ *                             - MCPWM_INTFLAG_CAP0: Capture interrupt for channel (0)
+ *                             - MCPWM_INTFLAG_LIM1: Limit interrupt for channel (1)
+ *                             - MCPWM_INTFLAG_MAT1: Match interrupt for channel (1)
+ *                             - MCPWM_INTFLAG_CAP1: Capture interrupt for channel (1)
+ *                             - MCPWM_INTFLAG_LIM2: Limit interrupt for channel (2)
+ *                             - MCPWM_INTFLAG_MAT2: Match interrupt for channel (2)
+ *                             - MCPWM_INTFLAG_CAP2: Capture interrupt for channel (2)
+ *                             - MCPWM_INTFLAG_ABORT: Fast abort interrupt
+ * @return        None
+ **********************************************************************/
+FlagStatus MCPWM_GetIntStatus(LPC_MCPWM_TypeDef *MCPWMx, uint32_t ulIntType)
+{
+    return ((MCPWMx->MCINTFLAG & ulIntType) ? SET : RESET);
+}
+
+/**
+ * @}
+ */
+
+#endif /* _MCPWM */
+
+/**
+ * @}
+ */
+
+/* --------------------------------- End Of File ------------------------------ */