OpenEdv-开源电子网

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

在等大牛解答下 急~~~~~ PWM主从模式

[复制链接]

10

主题

158

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
262
金钱
262
注册时间
2017-4-20
在线时间
102 小时
发表于 2017-6-23 20:11:31 | 显示全部楼层 |阅读模式
50金钱
void Motor_Init(u16 TIM2per, u16 TIM4per, u16 TIM4Compare1)
{
  TIM_TimeBaseInitTypeDef TIM_TimeBaseInitStruct;
  TIM_OCInitTypeDef TIM_OCInitStruct;
  GPIO_InitTypeDef GPIO_InitStruct;
        //TIM_TimeBaseInitTypeDef  TIM_TimeBaseStructure;
        //TIM_OCInitTypeDef  TIM_OCInitStructure;

  RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM2,ENABLE);//ê1Äü¶¨ê±Æ÷2μÄê±Öó
  RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM4,ENABLE);//ê1Äü¶¨ê±Æ÷3μÄê±Öó
  RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA,ENABLE);//ê1ÄüGPIOAê±Öó
       
  RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO,ENABLE);//ê1Äü¸′óÃIOê±Öó


GPIO_InitStruct.GPIO_Mode = GPIO_Mode_AF_PP;//¸′óÃíÆíìêä3ö
  GPIO_InitStruct.GPIO_Pin = GPIO_Pin_0|GPIO_Pin_6;//PA0
  GPIO_InitStruct.GPIO_Speed = GPIO_Speed_50MHz;
  GPIO_Init(GPIOA,&GPIO_InitStruct);
       
        RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB,ENABLE);
GPIO_InitStruct.GPIO_Mode = GPIO_Mode_AF_PP;//¸′óÃíÆíìêä3ö
  GPIO_InitStruct.GPIO_Pin = GPIO_Pin_6;//PA0
  GPIO_InitStruct.GPIO_Speed = GPIO_Speed_50MHz;
  GPIO_Init(GPIOB,&GPIO_InitStruct);

  //TIM21¤×÷Ôúμ¥Âö3åÏÂ
  TIM_TimeBaseInitStruct.TIM_ClockDivision = TIM_CKD_DIV1;//ûóDê±¼ä·Ö¸ô
  TIM_TimeBaseInitStruct.TIM_CounterMode = TIM_CounterMode_Up;//ÏòéϼÆêyÄ£ê½
  TIM_TimeBaseInitStruct.TIM_Prescaler = 7200-1;//ԤװÆμêy£¬Ã¿100US¼Æêyò»′Î
  TIM_TimeBaseInitStruct.TIM_Period = TIM2per;//֨װÖμ
  TIM_TimeBaseInit(TIM2,&TIM_TimeBaseInitStruct);

  TIM_SelectOnePulseMode(TIM2,TIM_OPMode_Single);//éèÖÃTIM2Ôúμ¥Âö3åģ꽣¬ÇòêÇμ¥ò»μÄÂö3壬ÔúÏÂò»¸ö¸üDÂê¼tí£Ö1
  TIM_OC1PreloadConfig(TIM2,TIM_OCPreload_Enable);//ê1Äü¶¨ê±Æ÷2μÄí¨μà1Ô¤×°ÔØ¼Ä′æÆ÷
  TIM_SelectOutputTrigger(TIM2,TIM_TRGOSource_OC1Ref);

  TIM_OCInitStruct.TIM_OCMode = TIM_OCMode_PWM2;//&#212;ù&#207;òé&#207;&#188;&#198;êyê±£&#172;ò&#187;μ&#169;TIMx_CNT<TIMx_CCR1ê±í¨μà1&#206;a&#206;TD§μ&#231;&#198;&#189;£&#172;·&#241;&#212;ò&#206;aóDD§μ&#231;&#198;&#189;
  TIM_OCInitStruct.TIM_OutputState = TIM_OutputState_Enable;//OC1ê&#228;3&#246;ê1&#196;ü
  TIM_OCInitStruct.TIM_OCPolarity = TIM_OCPolarity_High;//óDD§μ&#231;&#198;&#189;&#206;a&#184;&#223;
  TIM_OCInitStruct.TIM_Pulse = 1;//±è&#189;&#207;2&#182;&#187;&#241;1μ&#196;&#212;¤×°&#212;&#216;&#214;μ
  TIM_OC1Init(TIM2,&TIM_OCInitStruct);

  TIM_Cmd(TIM2,DISABLE);//&#207;è2&#187;ê1&#196;üTIM2


  //TIM1¤×÷&#212;ú′ó&#196;£ê&#189;μ&#196;&#195;&#197;&#191;&#216;&#214;&#198;&#207;&#194;μ&#196WMê&#228;3&#246;&#196;£ê&#189;
  TIM_TimeBaseInitStruct.TIM_ClockDivision = TIM_CKD_DIV1;//&#195;&#187;óDê&#194;&#188;t·&#214;&#184;&#238;
  TIM_TimeBaseInitStruct.TIM_CounterMode = TIM_CounterMode_Up;//&#207;òé&#207;&#188;&#198;êy&#196;£ê&#189;
  TIM_TimeBaseInitStruct.TIM_Prescaler = 720-1;//&#212;¤·&#214;&#198;μ&#214;μ£&#172;10us&#188;&#198;êyò&#187;′&#206;
  TIM_TimeBaseInitStruct.TIM_Period = TIM4per;//&#214;&#216;×°&#214;μ
  TIM_TimeBaseInit(TIM4,&TIM_TimeBaseInitStruct);

  TIM_SelectSlaveMode(TIM4, TIM_SlaveMode_Gated);//TIM3&#206;a&#195;&#197;&#191;&#216;&#196;£ê&#189;
  TIM_SelectMasterSlaveMode(TIM4,TIM_MasterSlaveMode_Enable);//ê1&#196;üTIM3μ&#196;&#214;÷′ó&#196;£ê&#189;
  TIM_SelectInputTrigger(TIM4,TIM_TS_ITR1);//&#196;ú2&#191;′¥·¢£&#172;′óTIM2′¥·¢

  TIM_OCInitStruct.TIM_OCMode = TIM_OCMode_PWM2;//&#212;ú&#207;òé&#207;&#188;&#198;êyê±£&#172;ò&#187;μ&#169;TIMxCNT<TIMx_CCR1ê±í¨μà1&#206;a&#206;TD§μ&#231;&#198;&#189;£&#172;·&#241;&#212;ò&#206;aóDD§μ&#231;&#198;&#189;
  TIM_OCInitStruct.TIM_OutputState = TIM_OutputState_Enable;//OC1ê&#228;3&#246;ê1&#196;ü
  TIM_OCInitStruct.TIM_OCPolarity = TIM_OCPolarity_High;//óDD§μ&#231;&#198;&#189;&#206;a&#184;&#223;
  TIM_OCInitStruct.TIM_Pulse = TIM4Compare1;//±è&#189;&#207;2&#182;&#187;&#241;1μ&#196;&#212;¤×°&#212;&#216;&#214;μ
  TIM_OC1Init(TIM4,&TIM_OCInitStruct);

  TIM_Cmd(TIM4,ENABLE);//ê1&#196;üTIM3
}

//éè&#214;&#195WMê&#228;3&#246;
//Cycle:&#206;a&#214;ü&#198;ú£&#172;μ¥&#206;&#187;(us£&#169;
//Pulse_Num:&#206;a&#194;&#246;3&#229;&#184;&#246;êy£¨D&#161;óú3200£&#169;
void TIM2_TIM4_PWM(u16 Cycle, u16 Pulse_Num)
{
  u16 TIM4per = 0;
  u32 Time = 0;
  //&#184;&#196;±&#228;TIM3μ&#196;&#214;&#216;×°&#214;μ&#184;&#196;±&#228;&#194;&#246;3&#229;&#198;μ&#194;ê&#213;aà&#239;éè&#214;&#195;&#194;&#246;3&#229;&#213;&#188;&#191;&#213;±è&#206;a50%
  //&#184;&#196;±&#228;TIM2μ&#196;&#212;¤·&#214;&#198;μ&#198;÷oí&#214;&#216;×°&#214;μ&#184;&#196;±&#228;&#194;&#246;3&#229;&#184;&#246;êy

  Time = Cycle * Pulse_Num;
  Time /= 100;              //&#212;¤·&#214;&#198;μ7200£&#172;100us&#188;&#198;êyò&#187;′&#206;
  TIM4per = Cycle/10;       //&#212;¤·&#214;&#198;μ720£&#172;10us&#188;&#198;êyò&#187;′&#206;

  TIM_SetAutoreload(TIM2, Time+1);//éè&#214;&#195;TIM2μ&#196;&#214;&#216;×°&#214;μ
  TIM_SetAutoreload(TIM4, TIM4per-1);//éè&#214;&#195;TIM3μ&#196;&#214;&#216;×°&#214;μ
  TIM_SetCompare1(TIM4,TIM4per/2);//&#213;&#188;&#191;&#213;±è50%
  TIM_Cmd(TIM2,ENABLE);//ê1&#196;üTIM2
}


把TIM4改成TIM3可以出现脉冲 为什么改成TIM4从定时器没反应  主定时器TIM2有     这是为什么

正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

10

主题

158

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
262
金钱
262
注册时间
2017-4-20
在线时间
102 小时
 楼主| 发表于 2017-6-23 20:14:54 | 显示全部楼层
上程序     这是TIM3是从定时器就有用        改成TIM4就没脉冲
回复

使用道具 举报

10

主题

158

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
262
金钱
262
注册时间
2017-4-20
在线时间
102 小时
 楼主| 发表于 2017-6-23 20:27:41 | 显示全部楼层
才5M  服务器限制
回复

使用道具 举报

10

主题

158

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
262
金钱
262
注册时间
2017-4-20
在线时间
102 小时
 楼主| 发表于 2017-6-23 20:28:34 | 显示全部楼层
回复

使用道具 举报

10

主题

158

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
262
金钱
262
注册时间
2017-4-20
在线时间
102 小时
 楼主| 发表于 2017-6-23 21:00:49 | 显示全部楼层
没人吗?
回复

使用道具 举报

10

主题

158

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
262
金钱
262
注册时间
2017-4-20
在线时间
102 小时
 楼主| 发表于 2017-6-24 08:36:42 | 显示全部楼层
来点人啊0.0
回复

使用道具 举报

10

主题

158

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
262
金钱
262
注册时间
2017-4-20
在线时间
102 小时
 楼主| 发表于 2017-6-24 09:48:52 | 显示全部楼层
回复

使用道具 举报

10

主题

158

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
262
金钱
262
注册时间
2017-4-20
在线时间
102 小时
 楼主| 发表于 2017-6-24 09:50:31 | 显示全部楼层
回复

使用道具 举报

10

主题

158

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
262
金钱
262
注册时间
2017-4-20
在线时间
102 小时
 楼主| 发表于 2017-6-24 10:17:42 | 显示全部楼层
大神们 展现你们正真的实力了
回复

使用道具 举报

10

主题

158

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
262
金钱
262
注册时间
2017-4-20
在线时间
102 小时
 楼主| 发表于 2017-6-24 10:42:09 | 显示全部楼层
回复

使用道具 举报

10

主题

158

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
262
金钱
262
注册时间
2017-4-20
在线时间
102 小时
 楼主| 发表于 2017-6-24 11:43:17 | 显示全部楼层
回复

使用道具 举报

10

主题

158

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
262
金钱
262
注册时间
2017-4-20
在线时间
102 小时
 楼主| 发表于 2017-6-24 11:44:36 | 显示全部楼层
回复

使用道具 举报

10

主题

158

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
262
金钱
262
注册时间
2017-4-20
在线时间
102 小时
 楼主| 发表于 2017-6-24 11:44:56 | 显示全部楼层
  大神指点迷津~~~
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-8-17 20:30

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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