/********************************************************************//** * @brief Configure Edge mode for each PWM channel * @param[in] pwmId The Id of the expected PWM component * * @param[in] PWMChannel PWM channel, should be in range from 2 to 6 * @param[in] ModeOption PWM mode option, should be: * - PWM_CHANNEL_SINGLE_EDGE: Single Edge mode * - PWM_CHANNEL_DUAL_EDGE: Dual Edge mode * @return None * Note: PWM Channel 1 can not be selected for mode option *********************************************************************/ void PWM_ChannelConfig(uint8_t pwmId, uint8_t PWMChannel, uint8_t ModeOption) { LPC_PWM_TypeDef* pPwm = PWM_GetPointer(pwmId); // Single edge mode if (ModeOption == PWM_CHANNEL_SINGLE_EDGE) { pPwm->PCR &= (~ PWM_PCR_PWMSELn(PWMChannel)) & PWM_PCR_BITMASK; } // Double edge mode else if (PWM_CHANNEL_DUAL_EDGE) { pPwm->PCR |= PWM_PCR_PWMSELn(PWMChannel); } }
/********************************************************************//** * @brief Configure Edge mode for each PWM channel * @param[in] PWMx PWM peripheral selected, should be LPC_PWM1 * @param[in] PWMChannel PWM channel, should be in range from 2 to 6 * @param[in] ModeOption PWM mode option, should be: * - PWM_CHANNEL_SINGLE_EDGE: Single Edge mode * - PWM_CHANNEL_DUAL_EDGE: Dual Edge mode * @return None * Note: PWM Channel 1 can not be selected for mode option *********************************************************************/ void PWM_ChannelConfig(LPC_PWM_TypeDef *PWMx, uint8_t PWMChannel, uint8_t ModeOption) { CHECK_PARAM(PARAM_PWMx(PWMx)); CHECK_PARAM(PARAM_PWM1_EDGE_MODE_CHANNEL(PWMChannel)); CHECK_PARAM(PARAM_PWM_CHANNEL_EDGE(ModeOption)); // Single edge mode if (ModeOption == PWM_CHANNEL_SINGLE_EDGE) { PWMx->PCR &= (~PWM_PCR_PWMSELn(PWMChannel)) & PWM_PCR_BITMASK; } // Double edge mode else if (PWM_CHANNEL_DUAL_EDGE) { PWMx->PCR |= PWM_PCR_PWMSELn(PWMChannel); } }