12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576 |
- #include "yc11xx_pwm.h"
- #include "yc11xx_gpio.h"
- #include "yc_drv_common.h"
- #define __IO volatile
- void PWM_ClockSwitch(PWM_ClkSwitchDef PWM_ClkSwitch)
- {
- _ASSERT(IS_PWM_ClkSwitchDef(PWM_ClkSwitch));
- switch(PWM_ClkSwitch)
- {
- case PWMCLK_ENABLE:
- HWRITE(CORE_CLKOFF+1,HREAD(CORE_CLKOFF+1) & ~(PWMCLK_DISABLE));
- break;
- case PWMCLK_DISABLE:
- HWRITE(CORE_CLKOFF+1,HREAD(CORE_CLKOFF+1) | PWMCLK_DISABLE);
- break;
- default:
- break;
- }
- }
- void PWM_setcnt(PWM_ChxTypeDef pwm_channel,uint16_t pcnt,uint16_t ncnt)
- {
- _ASSERT(IS_PWM_ChxTypeDef(pwm_channel));
- _ASSERT(IS_PERIOD_VALUE(pcnt));
- _ASSERT(IS_PERIOD_VALUE(ncnt));
- HW_REG_16BIT(reg_map(CORE_PWM_PCNT(pwm_channel)),pcnt);
- HW_REG_16BIT(reg_map(CORE_PWM_NCNT(pwm_channel)),ncnt);
- }
- void PWM_SWITCH(PWM_ChxTypeDef pwm_channel,PWM_SwitchDef SWITCH)
- {
- _ASSERT(IS_PWM_ChxTypeDef(pwm_channel));
- _ASSERT(IS_PWM_SWITCH(SWITCH));
- switch(SWITCH)
- {
- case PWM_ENABLE:
- HWRITE(CORE_PWM_CTRL(pwm_channel),HREAD(CORE_PWM_CTRL(pwm_channel))|PWM_ENABLE);
- break;
- case PWM_DISENABLE:
- HWRITE(CORE_PWM_CTRL(pwm_channel),HREAD(CORE_PWM_CTRL(pwm_channel)) & ~(PWM_ENABLE));
- break;
- default:
- break;
- }
- }
- void PWM_Init(PWM_InitTypeDef* PWM_InitStruct)
- {
- uint8_t CtrValue = 0;
- _ASSERT(IS_PWM_GPIO(PWM_InitStruct->pwm_gpio));
- _ASSERT(IS_PWM_ChxTypeDef(PWM_InitStruct->PWM_Channel));
- _ASSERT(IS_PERIOD_VALUE(PWM_InitStruct->HighLevelPeriod));
- _ASSERT(IS_PERIOD_VALUE(PWM_InitStruct->LowLevelPeriod));
- _ASSERT(IS_CLK_DIVISION(PWM_InitStruct->pwm_ctrl.clk_div));
- _ASSERT(IS_PWM_START(PWM_InitStruct->pwm_ctrl.StartLevel));
- _ASSERT(IS_PWM_SWITCH(PWM_InitStruct->pwm_ctrl.pwm_switch));
- GPIO_SetGpioMultFunction(PWM_InitStruct->pwm_gpio,GPCFG_PWM_OUT0 |(PWM_InitStruct->PWM_Channel));
-
- HWCOR(CORE_CLKOFF+1, 0x20);
- CtrValue |= PWM_InitStruct -> pwm_ctrl.clk_div;
- CtrValue |= PWM_InitStruct -> pwm_ctrl.StartLevel;
- CtrValue |= PWM_InitStruct -> pwm_ctrl.pwm_switch;
- HW_REG_16BIT(reg_map(CORE_PWM_PCNT(PWM_InitStruct->PWM_Channel)),PWM_InitStruct->HighLevelPeriod);
- HW_REG_16BIT(reg_map(CORE_PWM_NCNT(PWM_InitStruct->PWM_Channel)),PWM_InitStruct->LowLevelPeriod);
- HW_REG_8BIT(reg_map(CORE_PWM_CTRL(PWM_InitStruct->PWM_Channel)),CtrValue);
- }
|