TIM1的CH1N通道能单独作为PWM使用码?
在使用STM32F407驱动直流电机正反转,能不能使用TIM1的CH1驱动正转,CH1N驱动反转。正转时CH1输出PWM,CH1N脚保持低电平。反转时CH1N输出PWM,CH1脚保持低电平。由于个人水平低,把F4的PDF手册看了好几遍,也没有整明白可不可这样应用。如果可以,这块功能应该怎么实现,请各个大咖指点!可以的吧,内部能生成pwm吗,有输出吗 STM32F407必须连接外部驱动缓冲才能够驱动直流电机。直接驱动CPU要烧毁的。 是可以做到的。只使用该通道的PWM功能,其他不要打开,当做一个普通IO操作即可。 按理说,应该是可以的,不过没试过。
用户手册仅供参考
肯定是可以的,好像是有几个寄存器位可以控制 应该是可以的。不知道驱动电流够不够,我一般都是用驱动芯片控制电机的 感谢toofree,问题解决,能够实现,下面是实现代码:
case 0: //电机静止
HAL_TIM_PWM_Stop(&htim1, TIM_CHANNEL_2);
HAL_TIMEx_PWMN_Stop(&htim1, TIM_CHANNEL_2);
break;
case 1: //电机正转
sConfig.OCMode = TIM_OCMODE_PWM1;
sConfig.OCPolarity = TIM_OCPOLARITY_HIGH; //输出极性高电平
sConfig.OCNPolarity = TIM_OCPOLARITY_HIGH; //输出极性高电平
sConfig.OCFastMode = TIM_OCFAST_DISABLE;
sConfig.OCIdleState = TIM_OCIDLESTATE_RESET;
sConfig.OCNIdleState = TIM_OCNIDLESTATE_RESET;
sConfig.Pulse = TIMERCOUNTER * speed /100; //设置通道PWM值
if(HAL_TIM_PWM_ConfigChannel(&htim1, &sConfig, TIM_CHANNEL_2) != HAL_OK)
{
Error_Handler();//Configuration Error
}
HAL_TIM_PWM_Start(&htim1, TIM_CHANNEL_2);
HAL_TIMEx_PWMN_Stop(&htim1, TIM_CHANNEL_2);
break;
case 2: //电机反转
sConfig.OCMode = TIM_OCMODE_PWM1;
sConfig.OCPolarity = TIM_OCPOLARITY_HIGH; //输出极性高电平
sConfig.OCNPolarity = TIM_OCPOLARITY_HIGH; //输出极性高电平
sConfig.OCFastMode = TIM_OCFAST_DISABLE;
sConfig.OCIdleState = TIM_OCIDLESTATE_RESET;
sConfig.OCNIdleState = TIM_OCNIDLESTATE_RESET;
sConfig.Pulse = TIMERCOUNTER * speed /100; //设置通道PWM值
if(HAL_TIM_PWM_ConfigChannel(&htim1, &sConfig, TIM_CHANNEL_2) != HAL_OK)
{
Error_Handler();//Configuration Error
}
HAL_TIM_PWM_Stop(&htim1, TIM_CHANNEL_2);
HAL_TIMEx_PWMN_Start(&htim1, TIM_CHANNEL_2);
break; 学习了,正好用到 直流电机无非就是高低电平的变换,楼主小心,用MCU直接控制不好,最好用一个功率放大电路,个人想法
页:
[1]
2