- 打卡等级:偶尔看看I
- 打卡总天数:10
- 最近打卡:2025-10-10 09:10:39
注册会员
- 积分
- 175
|
void PWMB_PWMAOutput_init(void)//使能PWMB触发PWMA输出
{
PWMx_InitDefine PWMx_InitStructure;
PWMA_Duty1.PWM2_Duty = 100;
PWMB_Duty.PWM5_Duty = 100;
// PWMA_Prescaler(23);//预分频器设置
// PWMB_Prescaler(23);//预分频器设置
PWMB_MainModeSel(1);// //主模式选择
PWMA_SMCR_Source(2);// //触发源选择
PWMA_SMCR_SMS(SMCR_SMSA_TRIG);// ///触发模式
PWMA_Counter(500);// //计数器设置
PWMx_InitStructure.PWM_Mode = CCMRn_PWM_MODE1; //模式,CCMRn_FREEZE,CCMRn_MATCH_VALID,CCMRn_MATCH_INVALID,CCMRn_ROLLOVER,CCMRn_FORCE_INVALID,CCMRn_FORCE_VALID,CCMRn_PWM_MODE1,CCMRn_PWM_MODE2
PWMx_InitStructure.PWM_Duty = PWMB_Duty.PWM5_Duty; //PWM占空比时间, 0~Period
PWMx_InitStructure.PWM_EnoSelect = ENO5P; //输出通道选择, ENO1P,ENO1N,ENO2P,ENO2N,ENO3P,ENO3N,ENO4P,ENO4N / ENO5P,ENO6P,ENO7P,ENO8P
PWM_Configuration(PWM5, &PWMx_InitStructure); //初始化PWM, PWMA,PWMB
PWMx_InitStructure.PWM_Mode = CCMRn_PWM_MODE1; //模式, CCMRn_FREEZE,CCMRn_MATCH_VALID,CCMRn_MATCH_INVALID,CCMRn_ROLLOVER,CCMRn_FORCE_INVALID,CCMRn_FORCE_VALID,CCMRn_PWM_MODE1,CCMRn_PWM_MODE2
PWMx_InitStructure.PWM_Duty = PWMA_Duty1.PWM2_Duty; //PWM占空比时间, 0~Period
PWMx_InitStructure.PWM_EnoSelect = ENO2P ; //输出通道选择, ENO1P,ENO1N,ENO2P,ENO2N,ENO3P,ENO3N,ENO4P,ENO4N / ENO5P,ENO6P,ENO7P,ENO8P
PWM_Configuration(PWM2, &PWMx_InitStructure); //初始化PWM, PWMA,PWMB
PWMx_InitStructure.PWM_Period = 1000; //周期时间, 0~65535
PWMx_InitStructure.PWM_DeadTime = 0; //死区发生器设置, 0~255
PWMx_InitStructure.PWM_MainOutEnable= ENABLE; //主输出使能, ENABLE,DISABLE
PWMx_InitStructure.PWM_CEN_Enable = ENABLE; //使能计数器, ENABLE,DISABLE
PWM_Configuration(PWMB, &PWMx_InitStructure); //初始化PWM通用寄存器, PWMA,PWMB
PWMx_InitStructure.PWM_Period = 1000; //周期时间, 0~65535
PWMx_InitStructure.PWM_DeadTime = 0; //死区发生器设置, 0~255
PWMx_InitStructure.PWM_MainOutEnable= ENABLE; //主输出使能, ENABLE,DISABLE
PWMx_InitStructure.PWM_CEN_Enable = ENABLE; //使能计数器, ENABLE,DISABLE
PWM_Configuration(PWMA, &PWMx_InitStructure); //初始化PWM通用寄存器, PWMA,PWMB
NVIC_PWM_Init(PWMA,DISABLE,Priority_0);
NVIC_PWM_Init(PWMB,DISABLE,Priority_0);
P2_MODE_IO_PU(GPIO_Pin_LOW); // 设置为准双向口
}
上面的代码可实现P22和P20引脚的相位差PWM,但是预分频器打开的话,波形就不再是相位差PWM了,有懂的高手给讲讲
|
|