智能车制作

 找回密码
 注册

扫一扫,访问微社区

查看: 2639|回复: 1
打印 上一主题 下一主题

求个K60的PWM波形输出例程

[复制链接]

4

主题

6

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
212
威望
121
贡献
61
兑换币
60
注册时间
2013-4-18
在线时间
15 小时
毕业学校
哈尔滨工业大学
跳转到指定楼层
1#
发表于 2013-7-12 16:40:30 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
我想拿去研究一下 最好是codewarrior的例程 多谢各位大神

1

主题

63

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1247
威望
698
贡献
385
兑换币
359
注册时间
2012-7-18
在线时间
82 小时
2#
发表于 2013-7-21 16:58:19 | 只看该作者
void PWM_INIT(void)
{             
  SIM_SCGC6 |= SIM_SCGC6_FTM0_MASK; //使能FTM0时钟
  FTM0_C0SC |= FTM_CnSC_ELSB_MASK;
  FTM0_C0SC &= ~FTM_CnSC_ELSA_MASK;//clear output on match
  FTM0_C0SC |= FTM_CnSC_MSB_MASK;//·边沿对齐模式
  SIM_SCGC5 |= SIM_SCGC5_PORTC_MASK;
  PORT_PCR_REG(PORTC_BASE_PTR, 1) = PORT_PCR_MUX(4);  // PTC1,输出到电机PWM

  FTM0_C1SC |= FTM_CnSC_ELSB_MASK;
  FTM0_C1SC &= ~FTM_CnSC_ELSA_MASK;//clear output on match
  FTM0_C1SC |= FTM_CnSC_MSB_MASK;//边沿对齐模式
  SIM_SCGC5 |= SIM_SCGC5_PORTC_MASK;
  PORT_PCR_REG(PORTC_BASE_PTR, 2) = PORT_PCR_MUX(4);  // PTC2,输出到电机PWM
  
  FTM0_SC = FTM_SC_PS(0) | FTM_SC_CLKS(1);//not enable the interrupt mask,select system clock,上升模式
                       //divide by 1   50MHz
  FTM0_MODE &= ~3;     //BIT0   FTM Enable
  FTM0_MODE |= 0x04;
  FTM0_OUTMASK &= ~3;  //0 Channel output is not masked. It continues to operate normally.                           
  FTM0_COMBINE=0;      //Function for Linked Channels (FTMx_COMBINE)
  FTM0_OUTINIT=0;
  FTM0_EXTTRIG=0;      //FTM External Trigger (FTMx_EXTTRIG)
  FTM0_POL=0;          //Channels Polarity (FTMx_POL)
                           //0 The channel polarity is active high.
                           //1 The channel polarity is active low.
  
  FTM0_INVCTRL=0;     //反转控制
  FTM0_SWOCTRL=0;     //软件输出控制F TM Software Output Control (FTMx_SWOCTRL)
  FTM0_PWMLOAD=0;     //FTM PWM Load
                      //BIT9: 0 Loading updated values is disabled.
                      //1 Loading updated values is enabled.
  FTM0_CNTIN=0;       //Counter Initial Value      
  FTM0_MOD=5000;      //Modulo value,The EPWM period is determined by (MOD - CNTIN + 0x0001)
                      //PMW频率=50000000/5000=5000HZ
  FTM0_C0V=0;       //设置 the pulse width(duty cycle) is determined by (CnV - CNTIN).
  FTM0_C1V=0;       //设置 the pulse width(duty cycle) is determined by (CnV - CNTIN).
  FTM1_CNT=0;         //只有低16位可用
                      //PMW频率=50000000/5000=5000HZ
  
  
      
  SIM_SCGC3 |= SIM_SCGC3_FTM2_MASK;//使能FTM2时钟
  FTM2_C0SC |= FTM_CnSC_ELSB_MASK;
  FTM2_C0SC &= ~FTM_CnSC_ELSA_MASK;//clear output on match
  FTM2_C0SC |= FTM_CnSC_MSB_MASK;//边沿对齐模式
  SIM_SCGC5 |= SIM_SCGC5_PORTB_MASK;
  PORT_PCR_REG(PORTB_BASE_PTR, 18) = PORT_PCR_MUX(3);  // PTB18,舵机PWM
  
  FTM2_SC = FTM_SC_PS(7) | FTM_SC_CLKS(1);//not enable the interrupt mask,select system clock,上升模式
                       //divide by 128   195312.5Hz
  FTM2_MODE &= ~3;     //BIT0   FTM Enable      
  FTM2_OUTMASK &= ~3;  //0 Channel output is not masked. It continues to operate normally.                           
  FTM2_COMBINE=0;      //Function for Linked Channels (FTMx_COMBINE)
  FTM2_OUTINIT=0;
  FTM2_EXTTRIG=0;      //FTM External Trigger (FTMx_EXTTRIG)
  FTM2_POL=0;          //Channels Polarity (FTMx_POL)
                           //0 The channel polarity is active high.
                           //1 The channel polarity is active low.
  
  FTM2_INVCTRL=0;     //反转控制
  FTM2_SWOCTRL=0;     //软件输出控制F TM Software Output Control (FTMx_SWOCTRL)
  FTM2_PWMLOAD=0;     //FTM PWM Load
                      //BIT9: 0 Loading updated values is disabled.
                      //1 Loading updated values is enabled.
  FTM2_CNTIN=0;       //Counter Initial Value      
  FTM2_MOD=8000;      //Modulo value,The EPWM period is determined by (MOD - CNTIN + 0x0001)
                      //PMW频率=195312.5/4000=50HZ
  FTM2_C0V=610;//545~675
}
回复 支持 反对

使用道具 举报

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

本版积分规则

关于我们|联系我们|小黑屋|智能车制作 ( 黑ICP备2022002344号

GMT+8, 2024-9-22 05:25 , Processed in 0.037812 second(s), 27 queries , Gzip On.

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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