OpenEdv-开源电子网

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

PWM疑惑

[复制链接]

72

主题

251

帖子

0

精华

高级会员

Rank: 4

积分
597
金钱
597
注册时间
2012-3-29
在线时间
7 小时
发表于 2012-12-18 16:21:44 | 显示全部楼层 |阅读模式

  定时器输出的结构体如下。在PWM实验的时候TIM_Pulse这个参数为什么不用配置?

是不是在输出一定占空比才要设置?

频率越低那周期就越长。不同频率的PWM周期就不同,

那么要先确认频率还是先确认占空比?

          

typedef struct
{
  uint16_t TIM_OCMode;        /*!< Specifies the TIM mode.
                                   This parameter can be a value of @ref TIM_Output_Compare_and_PWM_modes */

  uint16_t TIM_OutputState;   /*!< Specifies the TIM Output Compare state.
                                   This parameter can be a value of @ref TIM_Output_Compare_state */

  uint16_t TIM_OutputNState;  /*!< Specifies the TIM complementary Output Compare state.
                                   This parameter can be a value of @ref TIM_Output_Compare_N_state
                                   @note This parameter is valid only for TIM1 and TIM8. */

  uint16_t TIM_Pulse;         /*!< Specifies the pulse value to be loaded into the Capture Compare Register.
                                   This parameter can be a number between 0x0000 and 0xFFFF */

  uint16_t TIM_OCPolarity;    /*!< Specifies the output polarity.
                                   This parameter can be a value of @ref TIM_Output_Compare_Polarity */

  uint16_t TIM_OCNPolarity;   /*!< Specifies the complementary output polarity.
                                   This parameter can be a value of @ref TIM_Output_Compare_N_Polarity
                                   @note This parameter is valid only for TIM1 and TIM8. */

  uint16_t TIM_OCIdleState;   /*!< Specifies the TIM Output Compare pin state during Idle state.
                                   This parameter can be a value of @ref TIM_Output_Compare_Idle_State
                                   @note This parameter is valid only for TIM1 and TIM8. */

  uint16_t TIM_OCNIdleState;  /*!< Specifies the TIM Output Compare pin state during Idle state.
                                   This parameter can be a value of @ref TIM_Output_Compare_N_Idle_State
                                   @note This parameter is valid only for TIM1 and TIM8. */
} TIM_OCInitTypeDef;

TIM3_PWM_Init(899,0);//不分频。PWM频率=72000/900=8khz  是否注释错误?

上面这个是80KHZ吧。我查了一下频率计算为=TIM3CLK/(TIM_Priod+1)

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

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2012-12-18 21:29:24 | 显示全部楼层
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

72

主题

251

帖子

0

精华

高级会员

Rank: 4

积分
597
金钱
597
注册时间
2012-3-29
在线时间
7 小时
 楼主| 发表于 2012-12-19 09:20:10 | 显示全部楼层
回复【2楼】正点原子:
---------------------------------
原子大哥想问下,频率最低能到多少?频率低了周期就长了,是不是更明显了
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2012-12-19 10:30:20 | 显示全部楼层
频率最低肯定是0了,你不输出PWM,不就是频率最低了...总不成有负数的频率吧。
至于你说的什么明显,表示不理解。
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

34

主题

805

帖子

4

精华

论坛大神

Rank: 7Rank: 7Rank: 7

积分
1865
金钱
1865
注册时间
2011-3-29
在线时间
140 小时
发表于 2012-12-19 10:53:16 | 显示全部楼层
回复【2楼】正点原子:
---------------------------------
看手册,t3在低速外部总线上,36mhz属于最高频率,不应该倍频啊。不倍频的话时钟应该是36mhz吧,不应该是72mhz啊。不过我还没做实验验证。
业余程序玩家。
回复 支持 反对

使用道具 举报

72

主题

251

帖子

0

精华

高级会员

Rank: 4

积分
597
金钱
597
注册时间
2012-3-29
在线时间
7 小时
 楼主| 发表于 2012-12-19 13:43:52 | 显示全部楼层
回复【4楼】正点原子:
---------------------------------
我的意思是频率越低不是一个周期就越长吗?T=1/f
所以不同的频率PWM的周期就不同了
举个例子。
低电平50US,高电平50US.周期是100US占空比50%
低电平20US,高电平20US.周期是40US.占空比50%
周期最大能到多少?最少到多少?
回复 支持 反对

使用道具 举报

72

主题

251

帖子

0

精华

高级会员

Rank: 4

积分
597
金钱
597
注册时间
2012-3-29
在线时间
7 小时
 楼主| 发表于 2012-12-19 14:52:07 | 显示全部楼层

    还有原子大哥

定时计数器里边  参数 ar:自动重装值  ,参数psc:时钟预分频数
设置这两个参数的目的是得到什么?

PWM,输入捕获也有这两个参数的设定。目的没搞清好晕阿。

输入捕获例子中的TIM5中断函数自己定义了一个寄存器

BIT7                            BIT6                                      BIT5-0
捕获完成标志        捕获到高电平标志         捕获高电平后定时器溢出的次数

捕获完成标志是不是包含捕获高电平和捕获低电平?

中断更新相当于定时到了产生了中断

这里就会有3种情况

1,在我定时的这段时间没有检测到高电平,但产生了更新中断。

2,在定时的这段时间检测到高电平却因为时间到了检测不到低电平,也产生了更新中断

3,在定时的这段时间能检测到高低电平,也产生了更新中断,并产生捕获事件

所以我认为这个定时的时间很重要,就是这两个参数决定的吧。
请帮忙把我疑惑的地方帮忙疏理一下。也不知道我讲清楚我的意思 么

回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2012-12-19 18:22:20 | 显示全部楼层
回复【6楼】grant:
---------------------------------
这个根据公式算就是了,周期最大,无非就是频率最低、分频数最大,arr最大。
假设时钟频率为72M,分频系数为65536,自动重装也是65536,那么频率F=72M/65536/65536=0.01676Hz

回复【7楼】grant:
---------------------------------
arr和psc看《STM32参考手册》对这2个寄存器的描述,我想那上面写的够清楚。

输入捕获,请直接看我的《stm32开发指南》,看不懂,直接电话我吧。
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-7-19 14:59

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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