OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 4414|回复: 3

通过TIM输出四路PWM控制两个步进电机的问题

[复制链接]

4

主题

14

帖子

0

精华

初级会员

Rank: 2

积分
103
金钱
103
注册时间
2021-3-25
在线时间
28 小时
发表于 2021-4-24 11:08:07 | 显示全部楼层 |阅读模式
10金钱
为啥我的步进电机没啥反应,下面是我写的初始化函数
        GPIO_InitTypeDef GpioAInit;        TIM_TimeBaseInitTypeDef Tim1Init;
        TIM_OCInitTypeDef Tim1Ch1Init;
        TIM_OCInitTypeDef Tim1Ch2Init;
        TIM_OCInitTypeDef Tim1Ch3Init;
        TIM_OCInitTypeDef Tim1Ch4Init;
       
        RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA|RCC_APB2Periph_TIM1,ENABLE);//使能相应时钟
       
        GpioAInit.GPIO_Mode=GPIO_Mode_AF_PP;//复用推挽输出
        GpioAInit.GPIO_Pin=GPIO_Pin_8|GPIO_Pin_9|GPIO_Pin_10|GPIO_Pin_11;
        GpioAInit.GPIO_Speed=GPIO_Speed_50MHz;
        GPIO_Init(GPIOA,&GpioAInit);
       
        Tim1Init.TIM_ClockDivision=0;
        Tim1Init.TIM_CounterMode=TIM_CounterMode_Up;//向上计数
        Tim1Init.TIM_Period=arr;//计数周期
        Tim1Init.TIM_Prescaler=psc;//分频因子
        TIM_TimeBaseInit(TIM1,&Tim1Init);
       
        Tim1Ch1Init.TIM_OCMode=TIM_OCMode_PWM2;//PWM2模式(计数值大于比较值为有效电平)
        Tim1Ch1Init.TIM_OCIdleState=TIM_OutputState_Enable;//输出比较使能
        Tim1Ch1Init.TIM_OCPolarity=TIM_OCPolarity_High;//高电平有效
        Tim1Ch1Init.TIM_Pulse=0;//设置比较值
        TIM_OC1Init(TIM1,&Tim1Ch1Init);//IN1
       
        Tim1Ch2Init.TIM_OCMode=TIM_OCMode_PWM2;
        Tim1Ch2Init.TIM_OCIdleState=TIM_OutputState_Enable;
        Tim1Ch2Init.TIM_OCPolarity=TIM_OCPolarity_High;
        Tim1Ch2Init.TIM_Pulse=0;
        TIM_OC2Init(TIM1,&Tim1Ch2Init);//IN2
       
        Tim1Ch3Init.TIM_OCMode=TIM_OCMode_PWM2;
        Tim1Ch3Init.TIM_OCIdleState=TIM_OutputState_Enable;
        Tim1Ch3Init.TIM_OCPolarity=TIM_OCPolarity_High;
        Tim1Ch3Init.TIM_Pulse=0;
        TIM_OC3Init(TIM1,&Tim1Ch3Init);//IN3
       
        Tim1Ch4Init.TIM_OCMode=TIM_OCMode_PWM2;
        Tim1Ch4Init.TIM_OCIdleState=TIM_OutputState_Enable;
        Tim1Ch4Init.TIM_OCPolarity=TIM_OCPolarity_High;
        Tim1Ch4Init.TIM_Pulse=0;
        TIM_OC4Init(TIM1,&Tim1Ch4Init);        //IN4
       
        TIM_CtrlPWMOutputs(TIM1,ENABLE);
       
        TIM_ARRPreloadConfig(TIM1,ENABLE);
       
        TIM_OC1PreloadConfig(TIM1,TIM_OCPreload_Enable);
       
        TIM_OC2PreloadConfig(TIM1,TIM_OCPreload_Enable);
       
        TIM_OC3PreloadConfig(TIM1,TIM_OCPreload_Enable);
       
        TIM_OC4PreloadConfig(TIM1,TIM_OCPreload_Enable);
       
        TIM_Cmd(TIM1,ENABLE);

最佳答案

查看完整内容[请看2#楼]

Tim1Ch1Init.TIM_OCIdleState=TIM_OutputState_Enable;//输出比较使能 没注意到这句错了。。。打扰了。。。
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

4

主题

14

帖子

0

精华

初级会员

Rank: 2

积分
103
金钱
103
注册时间
2021-3-25
在线时间
28 小时
 楼主| 发表于 2021-4-24 11:08:08 | 显示全部楼层
Tim1Ch1Init.TIM_OCIdleState=TIM_OutputState_Enable;//输出比较使能

没注意到这句错了。。。打扰了。。。
回复

使用道具 举报

109

主题

5564

帖子

0

精华

资深版主

Rank: 8Rank: 8

积分
10569
金钱
10569
注册时间
2017-2-18
在线时间
1913 小时
发表于 2021-4-25 20:05:02 | 显示全部楼层
测试定时器PWM输出引脚看有波形没
回复

使用道具 举报

11

主题

2147

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
4894
金钱
4894
注册时间
2015-1-10
在线时间
612 小时
发表于 2021-4-26 09:29:41 | 显示全部楼层
你这个比较值设置都是0?那4路都是一个频率的PWM,步进电机驱动的相序你怎么实现呢
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-5-24 21:55

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表