⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 lpc177x_8x_mcpwm.c

📁 LPC1788的USBHOST的FATFS移植
💻 C
📖 第 1 页 / 共 2 页
字号:
*                    		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 >= 0) && (channelNum <= 2))
	{
		if (countMode == ENABLE)
		{
			MCPWMx->CNTCON_SET = MCPWM_CNTCON_CNTR(channelNum);

			if (countConfig->countFalling == ENABLE)
			{
				MCPWMx->CNTCON_SET = MCPWM_CNTCON_TCMCI_FE(countConfig->counterChannel,channelNum);
			}
			else
			{
				MCPWMx->CNTCON_CLR = MCPWM_CNTCON_TCMCI_FE(countConfig->counterChannel,channelNum);
			}

			if (countConfig->countRising == ENABLE)
			{
				MCPWMx->CNTCON_SET = MCPWM_CNTCON_TCMCI_RE(countConfig->counterChannel,channelNum);
			}
			else
			{
				MCPWMx->CNTCON_CLR = MCPWM_CNTCON_TCMCI_RE(countConfig->counterChannel,channelNum);
			}
		}
		else
		{
			MCPWMx->CNTCON_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->CON_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->CON_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->CON_SET = MCPWM_CON_ACMODE;
	}
	else
	{
		MCPWMx->CON_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->CON_SET = MCPWM_CON_DCMODE;
	}
	else
	{
		MCPWMx->CON_CLR = MCPWM_CON_DCMODE;
	}

	if (outputInvered)
	{
		MCPWMx->CON_SET = MCPWM_CON_INVBDC;
	}
	else
	{
		MCPWMx->CON_CLR = MCPWM_CON_INVBDC;
	}

	MCPWMx->CP = 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->INTEN_SET = ulIntType;
	}
	else
	{
		MCPWMx->INTEN_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->INTF_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->INTF_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->INTF & ulIntType) ? SET : RESET);
}

/**
 * @}
 */


/**
 * @}
 */

/* --------------------------------- End Of File ------------------------------ */

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -