智能车制作

标题: 发一个自己配置K60 PWM的子程序.... [打印本页]

作者: 柯南一梦    时间: 2012-11-5 16:55
标题: 发一个自己配置K60 PWM的子程序....
//-------------------------------------------------------------------------*
// 文件名: PWM_Init.c                                                      *
// 说  明: PWM_Init构件头文件                              *
//-------------------------------------------------------------------------*
#include "PWM_Init.h"

void PWM_Init(uint32 time0,uint32 time1)
{
  SIM_SCGC5|=SIM_SCGC5_PORTA_MASK; //开启A口 时钟
   //设定 A4 A8 口为PWM 三个输出口
  PORTA_PCR7=PORT_PCR_MUX(3)|PORT_PCR_DSE_MASK;   // PTA7选择了FTM0_CH4功能 | 强驱动使能
  PORTA_PCR8=PORT_PCR_MUX(3)|PORT_PCR_DSE_MASK;  //PTA8  FTM1_CH0 ALT3
   //开启 FTM0 FTM1 FTM2 时钟
   SIM_SCGC6|=SIM_SCGC6_FTM0_MASK;         //开启使能FTM0时钟
   SIM_SCGC6|=SIM_SCGC6_FTM1_MASK;         //开启使能FTM1时钟
   //设定FTM0.1.2选项为输出PWM信号
   FTM0_C4SC|=FTM_CnSC_ELSB_MASK;           
   FTM1_C0SC|=FTM_CnSC_ELSB_MASK;
   FTM0_C4SC&=~FTM_CnSC_ELSA_MASK;
   FTM1_C0SC&=~FTM_CnSC_ELSA_MASK;
   FTM0_C4SC|=FTM_CnSC_MSB_MASK;  
   FTM1_C0SC|=FTM_CnSC_MSB_MASK;   
   //控制选择 选择分频
   FTM0_SC = FTM_SC_CLKS(1) | FTM_SC_PS(5);              // 选择了总线时钟 | 32分频
   FTM1_SC = FTM_SC_CLKS(1) | FTM_SC_PS(0);              // 选择了总线时钟 | 1分频
   //禁用写保护
   FTM0_MODE|=FTM_MODE_WPDIS_MASK;     //禁用FTM0写保护
   FTM1_MODE|=FTM_MODE_WPDIS_MASK;     //禁用FTM1写保护
   //设定使能
   FTM0_MODE&=~1;
   FTM1_MODE&=~1;
   //开启FTM0_CHO FTM1_CH0 FTM2_CHO
   FTM0_OUTMASK=0xef;                     //开启FTM0_CH1
   FTM1_OUTMASK=0xfe;                     //开启FTM1_CH1   
   //不使用链接通道
   FTM0_COMBINE=0;
   FTM1_COMBINE=0;
   //
   FTM0_OUTINIT=0;  
   FTM1_OUTINIT=0;
   //禁止外部触发
   FTM0_EXTTRIG=0;                         //禁止FTM0外部触发
   FTM1_EXTTRIG=0;                         //禁止FTM1外部触发
   //选择输出极性 0为正 1为负
   FTM0_POL=0;                            //选择FTM0输出极性为正
   FTM1_POL=0;                            //选择FTM1输出极性为正
   //关闭正交解码器 设置边沿对齐的PWM
   FTM0_QDCTRL&=~FTM_QDCTRL_QUADEN_MASK;
   FTM1_QDCTRL&=~FTM_QDCTRL_QUADEN_MASK;
   //FTM 反向控制
   FTM0_INVCTRL=0;                         //禁用FTM0反向
   FTM1_INVCTRL=0;                         //禁用FTM1反向
   //
   FTM0_SWOCTRL=0;
   FTM1_SWOCTRL=0;
   //
   FTM0_PWMLOAD=0;
   FTM1_PWMLOAD=0;
   //设定输出值
   FTM0_CNTIN=0;
   FTM1_CNTIN=0;
   //设定周期  周期=MOD - CNTIN + 0x0001
   FTM0_MOD=time0;
   FTM1_MOD=time1;
   //设置占空比  占空比=(CnV-CNTIN)/(MOD - CNTIN + 0x0001)mn n
   
   //设定计数值为0
   FTM0_CNT=0;  
   FTM1_CNT=0;
}

作者: jiyiboloann    时间: 2012-11-5 23:26

作者: 河边有棵树    时间: 2012-11-6 17:02
大神

作者: zhth20    时间: 2012-11-12 17:08
牛  学习了
作者: 总是忘记账号    时间: 2012-12-15 22:30
语句写的不全啊
作者: yinsaisai    时间: 2012-12-16 19:05
PORTA_PCR7=PORT_PCR_MUX(3)|PORT_PCR_DSE_MASK;   // PTA7选择了FTM0_CH4功能 | 强驱动使能
  PORTA_PCR8=PORT_PCR_MUX(3)|PORT_PCR_DSE_MASK;  //PTA8  FTM1_CH0 ALT3
这句是为什么呢:(
作者: 洋葱圈    时间: 2012-12-16 19:14
yinsaisai 发表于 2012-12-16 19:05
PORTA_PCR7=PORT_PCR_MUX(3)|PORT_PCR_DSE_MASK;   // PTA7选择了FTM0_CH4功能 | 强驱动使能
  PORTA_PCR ...

开启A7和A8口的FTM复用功能。

作者: 柯南一梦    时间: 2012-12-17 12:40
总是忘记账号 发表于 2012-12-15 22:30
语句写的不全啊

少了给占空比的一句话 别的都没问题 那主句因为放到函数里面了 所以没有复制进来...
作者: 总是忘记账号    时间: 2012-12-17 14:29
柯南一梦 发表于 2012-12-17 12:40
少了给占空比的一句话 别的都没问题 那主句因为放到函数里面了 所以没有复制进来...

善!编程风格不一样啊
作者: 变成纯农民了    时间: 2013-3-4 15:03
大神,请教下,我要输出K60的pwm波形,我要怎么配置,将波形用引脚输出
作者: 变成纯农民了    时间: 2013-3-6 18:41
大神,问句,我在用ftm的pwm,系统时钟是默认配置是96,48,24.ftm设置不分频,但输出的信号再反推,系统时钟是17.4mhz
作者: 变成纯农民了    时间: 2013-3-6 18:42
变成纯农民了 发表于 2013-3-4 15:03
大神,请教下,我要输出K60的pwm波形,我要怎么配置,将波形用引脚输出

先对引脚配置时钟,在配置引脚

作者: jzlyf    时间: 2013-3-9 20:02
再把PWM_Init.h发上来吧。

作者: oscarpanpan    时间: 2013-4-25 00:47

作者: 冬晨夏夜    时间: 2013-10-27 11:18
:):):):):):)
作者: 希望随风    时间: 2013-11-18 21:59
mark
作者: somebodyes    时间: 2014-1-23 10:20

作者: 不再更新    时间: 2014-3-29 11:13
非常需要,学习了!
作者: 603133791    时间: 2014-10-2 16:13
膜拜。
作者: luhan2014    时间: 2014-10-25 08:39





欢迎光临 智能车制作 (http://111.231.132.190/) Powered by Discuz! X3.2