|
楼主 |
发表于 2022-6-8 14:01:31
|
显示全部楼层
TIM17_CH1Handler.OCMode=TIM_OCMODE_PWM1; //模式选择PWM1,CNT<CCR为有效
if(mode == 0)
{
if(digital_output_channel_set[0].output_state == 0x00)
TIM17_CH1Handler.Pulse=0;
else
TIM17_CH1Handler.Pulse=10142;
}
else
TIM17_CH1Handler.Pulse=(u16)(101.41f*digital_output_channel_set[0].output_state);
TIM17_CH1Handler.OCPolarity=TIM_OCPOLARITY_HIGH;
TIM17_CH1Handler.OCNPolarity = TIM_OCNPOLARITY_HIGH;
TIM17_CH1Handler.OCFastMode = TIM_OCFAST_DISABLE;
TIM17_CH1Handler.OCIdleState = TIM_OCIDLESTATE_RESET;
TIM17_CH1Handler.OCNIdleState = TIM_OCNIDLESTATE_RESET;
HAL_TIM_PWM_ConfigChannel(&TIM17_Handler,&TIM17_CH1Handler,TIM_CHANNEL_1);
if(mode == 2)
{
HAL_TIM_PWM_Stop(&TIM17_Handler,TIM_CHANNEL_1);
HAL_TIM_PWM_Start_IT(&TIM17_Handler,TIM_CHANNEL_1);//开启PWM通道1
}
else
{
HAL_TIM_PWM_Stop_IT(&TIM17_Handler,TIM_CHANNEL_1);
HAL_TIM_PWM_Start(&TIM17_Handler,TIM_CHANNEL_1);//开启PWM通道1
}
可能在单个脉冲输出和PWN输出之间来回切换,目前定位问题在相应IO口配置,将IO口设置为无上下拉正常了,但TIM16的IO口上拉没问题。 |
|