注册 登录
查看: 460|回复: 18

PWM初始化

[复制链接]
发表于 2014-12-8 16:18:48 | 显示全部楼层 |阅读模式
本帖最后由 板正的 于 2014-12-8 16:23 编辑

void FTM_PWM_init(FTMn_e ftmn, FTM_CHn_e ch, uint32 freq, uint32 duty)
/*!
*  @brief      初始化FTM 的PWM 功能
*  @param      FTMn_e    模块号(FTM0、  FTM1、  FTM2)
*  @param      FTM_CHn_e     通道号(CH0~CH7)
*  @param      freq    频率(单位为Hz)
*  @param      duty    占空比分子,占空比 = duty / FTMn_PRECISON
*  @since      v5.0
*  @note       同一个FTM,PWM频率是必须一样的,但占空比可不一样。共3个FTM,即可以输出3个不同频率PWM
*  Sample usage:       FTM_PWM_init(FTM0, FTM_CH6,200, 10);    //初始化 FTM0_CH6 为 频率 200Hz 的PWM,占空比为 10/FTM0_PRECISON
*/

以上是FTM的PWM初始化

在我修改freq的时候,为什么能改变延时函数DELAY_MS的延时时间??
void main()
{
  FTM_PWM_init(FTM0,FTM_CH1,10,0);//初始化 FTM0_CH1 为 频率 10Hz 的PWM,占空比为 0/10000
  gpio_init (PTB20, GPO,1);         //初始化 PTB20 管脚为输出

  while(1)
  {
    FTM_PWM_Duty(FTM0,FTM_CH1,500);    //设置 FTM0_CH1占空比为 x/10000
    gpio_set (PTB20,1);    // PTB20 管脚 输出 1
    DELAY_MS(100);
    gpio_set (PTB20,0);    // PTB20 管脚 输出 0
    DELAY_MS(100);
  }
}

程序如上,在改变了FTM_PWM_init(FTM0,FTM_CH1,10,0);中的10之后,D1(PTB20引脚)灯随着变化,具体是:数越大,闪烁的越快。
freq不是只改变PWM的频率么?

回复

使用道具 举报

 楼主| 发表于 2014-12-8 16:19:33 | 显示全部楼层
而且此时电机疯转。
回复 支持 反对

使用道具 举报

发表于 2014-12-8 16:20:16 | 显示全部楼层
频率越快,闪烁越快,这不是一样的意思吗?
来自PC客户端 来自PC客户端
回复 支持 反对

使用道具 举报

 楼主| 发表于 2014-12-8 16:22:56 | 显示全部楼层
山外メ雲ジ 发表于 2014-12-8 16:20
频率越快,闪烁越快,这不是一样的意思吗?

山外哥,这个freq修改的不是PWM的频率么?怎么会与DELAY_MS有关系呢?
回复 支持 反对

使用道具 举报

发表于 2014-12-8 16:26:31 | 显示全部楼层
板正的 发表于 1418026976
山外哥,这个freq修改的不是PWM的频率么?怎么会与DELAY_MS有关系呢?
没关系的啊,你可以删掉他。
来自PC客户端 来自PC客户端
回复 支持 反对

使用道具 举报

 楼主| 发表于 2014-12-8 16:27:33 | 显示全部楼层
山外メ雲ジ 发表于 2014-12-8 16:26
没关系的啊,你可以删掉他。

删掉??什么意思?这个不是用来设置PWM频率的参数么??
回复 支持 反对

使用道具 举报

 楼主| 发表于 2014-12-8 16:28:28 | 显示全部楼层
山外メ雲ジ 发表于 2014-12-8 16:26
没关系的啊,你可以删掉他。

真的是有关系的,这个参数改的越大,LED灯闪的越快
回复 支持 反对

使用道具 举报

发表于 2014-12-8 16:35:11 | 显示全部楼层
板正的 发表于 1418027253
删掉??什么意思?这个不是用来设置PWM频率的参数么??
删掉 DELAY_MS 函数
来自PC客户端 来自PC客户端
回复 支持 反对

使用道具 举报

 楼主| 发表于 2014-12-8 16:36:18 | 显示全部楼层
您是说PWM不能正常输出是由这个delay引起的??
回复 支持 反对

使用道具 举报

 楼主| 发表于 2014-12-8 16:51:37 | 显示全部楼层

山外哥,PTA4用作BDM接口了,还能用来输出PWM么?
回复 支持 反对

使用道具 举报

发表于 2014-12-8 16:57:27 | 显示全部楼层
板正的 发表于 1418028697
山外哥,PTA4用作BDM接口了,还能用来输出PWM么?
不建议用A4口
来自PC客户端 来自PC客户端
回复 支持 反对

使用道具 举报

发表于 2014-12-8 16:57:58 | 显示全部楼层
板正的 发表于 1418027778
您是说PWM不能正常输出是由这个delay引起的??
不是,而是说pwm输出跟这个DELAY_MS函数无关。
来自PC客户端 来自PC客户端
回复 支持 反对

使用道具 举报

 楼主| 发表于 2014-12-8 17:08:06 | 显示全部楼层
山外メ雲ジ 发表于 2014-12-8 16:57
不是,而是说pwm输出跟这个DELAY_MS函数无关。

恩恩 我改成PTA5口之后PWM就可以正常输出了,但是如果没关系为什么改了参数后,LED灯的闪烁频率也变了呢?
回复 支持 反对

使用道具 举报

发表于 2014-12-8 17:09:16 | 显示全部楼层
板正的 发表于 1418029686
恩恩 我改成PTA5口之后PWM就可以正常输出了,但是如果没关系为什么改了参数后,LED灯的闪烁频率也变了呢?
跟你改了频率有关啊。你修改了频率,LED等闪烁频率变了,这不是很正常吗?
来自PC客户端 来自PC客户端
回复 支持 反对

使用道具 举报

 楼主| 发表于 2014-12-8 17:10:50 | 显示全部楼层
山外メ雲ジ 发表于 2014-12-8 17:09
跟你改了频率有关啊。你修改了频率,LED等闪烁频率变了,这不是很正常吗?

可是我没有用PWM驱动LED灯呀。
回复 支持 反对

使用道具 举报

发表于 2014-12-8 17:12:48 | 显示全部楼层
板正的 发表于 1418029850
可是我没有用PWM驱动LED灯呀。
哦,我看错了。
万用表测一下是否短路了。

你示波器测一下B20的波形
来自PC客户端 来自PC客户端
回复 支持 反对

使用道具 举报

 楼主| 发表于 2014-12-8 17:23:20 | 显示全部楼层
山外メ雲ジ 发表于 2014-12-8 17:12
哦,我看错了。
万用表测一下是否短路了。

好的  我看看
回复 支持 反对

使用道具 举报

 楼主| 发表于 2014-12-8 17:37:39 | 显示全部楼层
山外メ雲ジ 发表于 2014-12-8 16:57
不是,而是说pwm输出跟这个DELAY_MS函数无关。

改成PTA5之后,在改变freq的值,对LED灯的闪烁无影响,但是若是freq过大,电机就不转了,应该是频率太高(20K)。
回复 支持 反对

使用道具 举报

发表于 2014-12-8 19:00:06 | 显示全部楼层
板正的 发表于 2014-12-8 17:37
改成PTA5之后,在改变freq的值,对LED灯的闪烁无影响,但是若是freq过大,电机就不转了,应该是频率太高 ...

你用5.1版本的代码看看。
来自安卓客户端来自安卓客户端
回复 支持 反对

使用道具 举报

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

本版积分规则

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