#include "CH57x_common.h" // 引入通用头文件
// PWMX_CycleCfg函数:PWM4-PWM11基准时钟配置
void PWMX_CycleCfg( PWMX_CycleTypeDef cyc )
{
switch( cyc ) // 根据输入的cyc参数选择不同的基准时钟配置
{
case PWMX_Cycle_256:
R8_PWM_CONFIG = R8_PWM_CONFIG & 0xf0; // 清除低四位,设置基准时钟为256
break;
case PWMX_Cycle_255:
R8_PWM_CONFIG = (R8_PWM_CONFIG & 0xf0) | 0x01; // 清除低四位,设置基准时钟为255
break;
case PWMX_Cycle_128:
R8_PWM_CONFIG = (R8_PWM_CONFIG & 0xf0) | (1<<2); // 清除低四位,设置基准时钟为128
break;
case PWMX_Cycle_127:
R8_PWM_CONFIG = (R8_PWM_CONFIG & 0xf0) | (1<<2) | 0x01; // 清除低四位,设置基准时钟为127
break;
case PWMX_Cycle_64:
R8_PWM_CONFIG = (R8_PWM_CONFIG & 0xf0) | (2<<2); // 清除低四位,设置基准时钟为64
break;
case PWMX_Cycle_63:
R8_PWM_CONFIG = (R8_PWM_CONFIG & 0xf0) | (2<<2) | 0x01; // 清除低四位,设置基准时钟为63
break;
case PWMX_Cycle_32:
R8_PWM_CONFIG = (R8_PWM_CONFIG & 0xf0) | (3<<2); // 清除低四位,设置基准时钟为32
break;
case PWMX_Cycle_31:
R8_PWM_CONFIG = (R8_PWM_CONFIG & 0xf0) | (3<<2) | 0x01; // 清除低四位,设置基准时钟为31
break;
default :
break;
}
}
// PWMX_ACTOUT函数:PWM4-PWM11通道输出波形配置
void PWMX_ACTOUT( UINT8 ch, UINT8 da, PWMX_PolarTypeDef pr, UINT8 s)
{
UINT8 i;
if(s == DISABLE) R8_PWM_OUT_EN &= ~(ch); // 如果s为DISABLE,关闭对应通道的PWM输出
else
{
(pr)?(R8_PWM_POLAR|=(ch)):(R8_PWM_POLAR&=~(ch)); // 根据pr参数设置极性
for(i=0; i<8; i++)
{
if((ch>>i)&1) *((PUINT8V)((&R8_PWM4_DATA)+i)) = da; // 设置对应通道的数据宽度
}
R8_PWM_OUT_EN |= (ch); // 打开对应通道的PWM输出
}
}
// PWMX_AlterOutCfg函数:PWM交替输出模式配置
void PWMX_AlterOutCfg( UINT8 ch, UINT8 s)
{
if(s == DISABLE) R8_PWM_CONFIG &= ~(ch); // 如果s为DISABLE,关闭交替输出功能
else R8_PWM_CONFIG |= (ch); // 否则,打开交替输出功能
}
|