PWM2参数库函数配置 PWM并未将start位置1
/******************** PCA配置 ********************/
void PWM15_config(void)
{
PWM15_InitTypeDef PWM15_InitStructure;
PWM15_InitStructure.PWM_Enable = ENABLE; //PWM使能, ENABLE, DISABLE
PWM15_InitStructure.PWM_Period = 0x0400; //PWM周期, 0~0x7fff
PWM15_InitStructure.PWM_Clock_Sel = PWMn_CLK_SYS; //时钟源选择, PWMn_CLK_SYS, PWMn_CLK_TM2
PWM15_InitStructure.PWM_Clock_PS = 2; //系统时钟分频参数(PS+1分频), 0~15
PWM15_InitStructure.PWM_Counter = ENABLE; //计数器使能, ENABLE, DISABLE
PWM15_Init(PWM2,&PWM15_InitStructure);
PWMChannelCtrl(PWM20,ENABLE,0,DISABLE,DISABLE,DISABLE); //PWM_ID, 输出使能, 初始电平, PWM中断, 第二个触发点中断, 第一触发点中断
PWMChannelCtrl(PWM21,ENABLE,0,DISABLE,DISABLE,DISABLE); //PWM_ID, 输出使能, 初始电平, PWM中断, 第二个触发点中断, 第一触发点中断
//左臂
PWMChannelCtrl(PWM25,ENABLE,0,DISABLE,DISABLE,DISABLE); //PWM_ID, 输出使能, 初始电平, PWM中断, 第二个触发点中断, 第一触发点中断
PWMChannelCtrl(PWM23,ENABLE,0,DISABLE,DISABLE,DISABLE); //PWM_ID, 输出使能, 初始电平, PWM中断, 第二个触发点中断, 第一触发点中断
//右
PWMChannelCtrl(PWM24,ENABLE,0,DISABLE,DISABLE,DISABLE); //PWM_ID, 输出使能, 初始电平, PWM中断, 第二个触发点中断, 第一触发点中断
PWMChannelCtrl(PWM22,ENABLE,0,DISABLE,DISABLE,DISABLE); //PWM_ID, 输出使能, 初始电平, PWM中断, 第二个触发点中断, 第一触发点中断
PWM15Duty(PWM22,0x000,00); //PWM_ID, 输出低电平位置, 输出高电平位置
PWM15Duty(PWM23,0x000,00); //PWM_ID, 输出低电平位置, 输出高电平位置
PWM15Duty(PWM24,0x000,300); //PWM_ID, 输出低电平位置, 输出高电平位置
PWM15Duty(PWM22,300,0x0000); //PWM_ID, 输出低电平位置, 输出高电平位置
Motor3_Set(1,100);
}
void ADC_Config()
{
PWMCFG23 |= 0x02;//关联PWM>ADC
ADCTIM = 0x80;
P_SW2|= 0x3f;
P_SW2&= 0x7f;
ADCCFG = 0x0f;
ADC_CONTR|=(1<<7);
ADC_CONTR|=(1<<4);
PWM2TADC = 0x0200; //200位置触发
EADC = 1;
EA = 1;
ADC_CONTR |= 0x40; //仅在手动置start后中断了一次
}
|