智能车制作

 找回密码
 注册

扫一扫,访问微社区

查看: 11570|回复: 31
打印 上一主题 下一主题

自己刚刚编写的K60 PWM,超简洁,需要的可以看看

    [复制链接]

2

主题

56

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1810
威望
801
贡献
509
兑换币
528
注册时间
2013-6-19
在线时间
250 小时
跳转到指定楼层
1#
发表于 2013-9-14 16:31:34 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
新手第一次做小车,老师直接让用K60了,,现在就开始学K60啦。
今天准备PWM模块,原本想直接用野火或拉普兰德的底层库,搞了一上午都没成功(太笨了我。。)
最后决定把FTM寄存器仔细看下。模仿着别人的代码终于成功了。代码如下。
通道默认为 FTM0的CH4  即  PTA7 。

以下是一点总结,也贴出来给大家看看吧
      FTM:
1.      使用SIM模块开启对应的FTMx的时钟:SIM_SCGC6|=SIM_SCGC6_FTM0_MASK;   
2.      开启之后对应的FTM的寄存器显示复位值。但是定时器并没有开始计数
3.      直到FTMx_SC中的CLKS位不为0时,计数器开始计数。
4.      计数到MOD后TOF置位,若TOIE为1,对应中断打开(enable_irq(62)),则进入中断函数。

5.      FTM中的系统时钟应该是BUS_CLK..即48MHz
PWM:
   1.  FTM0_CnV必须在CnSC之后赋值????(这里本人试了发现当CnV在CnSC之前赋值的话不成功。。不知道原因,知道的解释下吧)
  2.   当置位了MSB后,打开了通道的匹配功能,(当CNT==CnV时匹配发生,翻转对应通道的电平,之后CNT继续计数直到等于MOD,计数器重新开始计数)


#include "mypwm.h"

extern int periph_clk_khz;

void FTM_Init(u32 freq,u32 duty)    //默认为PTA 7
{
    u32 clk_hz = (periph_clk_khz * 1000) ;       //bus频率
    u16 mod;
    u8 sc_ps;
    u16 cv;

    mod = (clk_hz >> 16 ) / freq ;         //  以下5行是为了将参数给的频率、占空比转化为寄存器的值
    for(sc_ps = 0; (mod >> sc_ps) >= 1; sc_ps++);
    if(freq < 1000)sc_ps++;
    mod = (clk_hz >> sc_ps) / freq;
    cv = (duty * (mod - 0 + 1)) / 100;

    SIM_SCGC6|=SIM_SCGC6_FTM0_MASK;  //开启FTM0时钟
    PORTA_PCR7=PORT_PCR_MUX(3);       //PTA7 第三功能
    FTM0_CNT=0;                       //清计数器                          
    FTM0_CNTIN=0;                      //初始值为0
    FTM0_C4SC=0x28;                    //MSB ELSB置1    EPWM模式
    FTM0_C4V=cv;                       //匹配值,即占空比
    FTM0_MOD=mod;                      //计数终值,决定频率
    FTM0_SC=FTM_SC_PS(sc_ps) | FTM_SC_CLKS(1);   //定时器时钟为BUS时钟和分频
}

14

主题

607

帖子

0

精华

会长

魅影

Rank: 8Rank: 8

积分
3808

活跃会员奖章在线王奖章优秀会员奖章

威望
1736
贡献
952
兑换币
1177
注册时间
2013-7-27
在线时间
560 小时
2#
发表于 2013-9-19 14:26:03 | 只看该作者
支持原创,加油
回复 支持 反对

使用道具 举报

11

主题

224

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2958

优秀会员奖章活跃会员奖章

威望
1538
贡献
888
兑换币
848
注册时间
2013-3-19
在线时间
266 小时
3#
发表于 2013-9-22 11:55:11 | 只看该作者
顶你的原创
回复 支持 反对

使用道具 举报

5

主题

59

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1595
威望
817
贡献
420
兑换币
221
注册时间
2012-1-13
在线时间
179 小时
4#
发表于 2013-9-23 23:06:08 | 只看该作者
有两通道级联的吗?
回复 支持 反对

使用道具 举报

2

主题

56

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1810
威望
801
贡献
509
兑换币
528
注册时间
2013-6-19
在线时间
250 小时
5#
 楼主| 发表于 2013-9-24 18:35:46 | 只看该作者
焱煚 发表于 2013-9-23 23:06
有两通道级联的吗?

这个没用过。。
回复 支持 反对

使用道具 举报

1

主题

184

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1686
QQ
威望
792
贡献
472
兑换币
517
注册时间
2013-4-12
在线时间
211 小时
6#
发表于 2013-9-24 19:09:17 | 只看该作者
回复 支持 反对

使用道具 举报

0

主题

269

帖子

0

精华

跨届大侠

Rank: 10Rank: 10Rank: 10

积分
6363
威望
3187
贡献
2038
兑换币
2042
注册时间
2012-6-19
在线时间
569 小时
7#
发表于 2013-9-25 23:58:11 | 只看该作者
回复 支持 反对

使用道具 举报

5

主题

171

帖子

0

精华

常驻嘉宾

Rank: 8Rank: 8

积分
3616
QQ
威望
1742
贡献
1148
兑换币
1163
注册时间
2013-8-5
在线时间
363 小时
8#
发表于 2013-9-26 13:31:03 | 只看该作者
回复 支持 反对

使用道具 举报

34

主题

742

帖子

0

精华

常驻嘉宾

Rank: 8Rank: 8

积分
4757

活跃会员奖章优秀会员奖章在线王奖章论坛元老奖章

威望
2352
贡献
1351
兑换币
1264
注册时间
2013-8-5
在线时间
527 小时
9#
发表于 2013-9-26 15:03:07 | 只看该作者
回复 支持 反对

使用道具 举报

13

主题

171

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1427
威望
716
贡献
447
兑换币
398
注册时间
2013-8-23
在线时间
132 小时
10#
发表于 2013-9-26 15:13:15 | 只看该作者
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-11-5 18:27 , Processed in 0.068026 second(s), 27 queries , Gzip On.

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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