OpenEdv-开源电子网

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

pwm输出波形乱的。。。。

[复制链接]

78

主题

271

帖子

0

精华

高级会员

Rank: 4

积分
695
金钱
695
注册时间
2013-10-20
在线时间
36 小时
发表于 2014-6-29 20:44:54 | 显示全部楼层 |阅读模式
5金钱



TIM_SetCompare1(TIM2,30);  用这个输出的  怎么回事乱的呢。我设置了tim2的四路输出  昨天测试时候还好着呢。请教大家。

最佳答案

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

回复【10楼】l692519765: --------------------------------- 重映射要开启AFIO,貌似你没开AFIO时钟
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2014-6-29 20:44:55 | 显示全部楼层
回复【10楼】l692519765:
---------------------------------
重映射要开启AFIO,貌似你没开AFIO时钟
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2014-6-30 01:02:14 | 显示全部楼层
完整点的代码呢?
看波形,确实很乱。
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

78

主题

271

帖子

0

精华

高级会员

Rank: 4

积分
695
金钱
695
注册时间
2013-10-20
在线时间
36 小时
 楼主| 发表于 2014-6-30 07:58:15 | 显示全部楼层
回复【2楼】正点原子:
---------------------------------
我截图发上来。发个初始化的代码。




void pwm_Init(void)

  GPIO_InitTypeDef GPIO_InitStructure;
  TIM_OCInitTypeDef  TIM_OCInitStructure;
  TIM_TimeBaseInitTypeDef  TIM_TimeBaseStructure;


  RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA|RCC_APB2Periph_GPIOB ,ENABLE);
  RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM2|RCC_APB1Periph_TIM3,ENABLE);

 
  GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
  GPIO_InitStructure.GPIO_Mode=GPIO_Mode_AF_PP ;
  GPIO_InitStructure.GPIO_Pin = GPIO_Pin_3|GPIO_Pin_10|GPIO_Pin_11;
  GPIO_Init(GPIOB, &GPIO_InitStructure);
 

  GPIO_InitStructure.GPIO_Pin = GPIO_Pin_15|GPIO_Pin_6|GPIO_Pin_7;
  GPIO_Init(GPIOA, &GPIO_InitStructure);

  GPIO_PinRemapConfig(GPIO_FullRemap_TIM2,ENABLE); //管脚重映射

  TIM_DeInit(TIM2);
  TIM_DeInit(TIM3);

  TIM_TimeBaseStructure.TIM_Prescaler = 0x009F;  //timmer frequency=(72/4)/(prescaler+1)=18mhz  
  TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up; //tim module up counter 
  TIM_TimeBaseStructure.TIM_Period = 999;//reload number   
  TIM_TimeBaseStructure.TIM_ClockDivision = TIM_CKD_DIV1;  
  TIM_TimeBaseInit(TIM2, &TIM_TimeBaseStructure);  
  TIM_TimeBaseInit(TIM3, &TIM_TimeBaseStructure);

  TIM_OCInitStructure.TIM_OCMode=TIM_OCMode_PWM1;
  TIM_OCInitStructure.TIM_OCPolarity = TIM_OCPolarity_High;
  TIM_OCInitStructure.TIM_OutputState=TIM_OutputState_Enable;
  TIM_OCInitStructure.TIM_Pulse = 1500;
  TIM_OC1Init(TIM2, & TIM_OCInitStructure);
  TIM_OC2Init(TIM2, & TIM_OCInitStructure);
  TIM_OC3Init(TIM2, & TIM_OCInitStructure);
  TIM_OC4Init(TIM2, & TIM_OCInitStructure);
  TIM_OC1Init(TIM3, & TIM_OCInitStructure);
  TIM_OC2Init(TIM3, & TIM_OCInitStructure);
  TIM_OC2PreloadConfig(TIM2,TIM_OCPreload_Enable);
  TIM_OC2PreloadConfig(TIM3,TIM_OCPreload_Enable);
  
  TIM_ARRPreloadConfig(TIM2, ENABLE);   // 使能TIM3重载寄存器ARR 
  TIM_ARRPreloadConfig(TIM3, ENABLE);
                                    
  TIM_Cmd(TIM2, ENABLE);
  TIM_Cmd(TIM3, ENABLE); 

  TIM_SetCompare1(TIM2,30);
  TIM_SetCompare2(TIM2,30);
  TIM_SetCompare3(TIM2,30);
  TIM_SetCompare4(TIM2,30);
  TIM_SetCompare1(TIM3,30);
  TIM_SetCompare2(TIM3,30);


}
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2014-6-30 09:30:32 | 显示全部楼层
pwm_Init,你只调用了一次吧?
如果是的话,就不会产生你这样的波形才对,肯定是其它地方修改了参数。
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

15

主题

46

帖子

0

精华

初级会员

Rank: 2

积分
126
金钱
126
注册时间
2013-10-15
在线时间
0 小时
发表于 2014-6-30 09:46:06 | 显示全部楼层
回复【3楼】l692519765:
---------------------------------
最好的解决办法就是,一路一路调试过来,成功一路再调第二路,我就是这么干的,代码太多,情绪焦躁
书山有路,悬崖辅路
回复

使用道具 举报

11

主题

127

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
220
金钱
220
注册时间
2013-7-14
在线时间
3 小时
发表于 2014-6-30 13:35:55 | 显示全部楼层
给你个建议,重新建工程,先调试成功一个后  再做打算,这样条例清晰   你也好弄
因为爱所以爱
回复

使用道具 举报

78

主题

271

帖子

0

精华

高级会员

Rank: 4

积分
695
金钱
695
注册时间
2013-10-20
在线时间
36 小时
 楼主| 发表于 2014-6-30 17:39:18 | 显示全部楼层
回复【4楼】正点原子:
---------------------------------
在主函数中 循环了这句  TIM_SetCompare2(TIM3,30);
回复

使用道具 举报

78

主题

271

帖子

0

精华

高级会员

Rank: 4

积分
695
金钱
695
注册时间
2013-10-20
在线时间
36 小时
 楼主| 发表于 2014-6-30 17:39:59 | 显示全部楼层
回复【6楼】lvoe倩99:
---------------------------------
一个通道是成功的。并且上面的代码用软件仿真 输出波形是对的。。。。就不是很明白了。
回复

使用道具 举报

78

主题

271

帖子

0

精华

高级会员

Rank: 4

积分
695
金钱
695
注册时间
2013-10-20
在线时间
36 小时
 楼主| 发表于 2014-6-30 17:40:26 | 显示全部楼层
回复【5楼】1045426595:
---------------------------------
一路是通的。。。我就是这么调过来的。。但是多路就不对啦。
回复

使用道具 举报

78

主题

271

帖子

0

精华

高级会员

Rank: 4

积分
695
金钱
695
注册时间
2013-10-20
在线时间
36 小时
 楼主| 发表于 2014-6-30 18:36:41 | 显示全部楼层
回复【2楼】正点原子:
---------------------------------原子哥,管脚不重映射的话,输出波形对的,但是重映射的话就会出现上面那张图那种乱波形,这个有遇到过吗。这个配置在pwm初始化之后管脚配置都没改变过的哇。pwm初始化是整个初始化最后一个初始化函数,主函数是也是空的。。。
回复

使用道具 举报

78

主题

271

帖子

0

精华

高级会员

Rank: 4

积分
695
金钱
695
注册时间
2013-10-20
在线时间
36 小时
 楼主| 发表于 2014-7-2 07:05:22 | 显示全部楼层
回复【11楼】正点原子:
---------------------------------
是的,没开。一直以为用串口啊这些第二功能才哎afio。。。重映射也要开哇。。。谢谢
回复

使用道具 举报

11

主题

127

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
220
金钱
220
注册时间
2013-7-14
在线时间
3 小时
发表于 2014-8-13 12:53:12 | 显示全部楼层
回复【8楼】l692519765:
---------------------------------
看样子已经好了,自己多看看  也就没几句
因为爱所以爱
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-7-3 19:42

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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