23773|6

41

帖子

0

TA的资源

一粒金砂(中级)

楼主
 

PWM输出的占空比如何改变 [复制链接]

void TIM_Configuration(void)//TIM初始化函数
{
  TIM_TimeBaseInitTypeDef  TIM_TimeBaseStructure;//定时器初始化结构
  TIM_OCInitTypeDef  TIM_OCInitStructure;//通道输出初始化结构

//TIM3初始化
  TIM_DeInit(TIM2);
  TIM_TimeBaseStructure.TIM_Period = 719;        //周期719
  TIM_TimeBaseStructure.TIM_Prescaler = 999;          //时钟分频  
  TIM_TimeBaseStructure.TIM_ClockDivision = 0;      //时钟分割
  TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up;//模式
  TIM_TimeBaseInit(TIM2, &TIM_TimeBaseStructure);   //基本初始化
// TIM_ITConfig(TIM2, TIM_IT_CC4, ENABLE);//打开中断,中断需要这行代码
 
//TIM3通道初始化
  TIM_OCStructInit(& TIM_OCInitStructure);                             //默认参数
  TIM_OCInitStructure.TIM_OCMode = TIM_OCMode_PWM1;                    //工作状态,;//配置为PWM1模式
  TIM_OCInitStructure.TIM_OutputState = TIM_OutputState_Enable;         //设定为输出,需要PWM输出才需要这行代码
  TIM_OCInitStructure.TIM_Pulse = 800;                                 //占空长度
  TIM_OCInitStructure.TIM_OCPolarity = TIM_OCPolarity_High;                 //高电平
  TIM_OC4Init(TIM2, &TIM_OCInitStructure);                                 //使用通道4
  TIM_Cmd(TIM2, ENABLE);                                                                          //启动TIM2
}

 

PA3输出的信号周期为5ms,单个周期内高电平持续时间为0.7ms

这时初始化部分,我想知道的是:使用哪条C语句(或者改变哪个已有的参数)可以改变PWM的占空比

谢谢!

此帖出自stm32/stm8论坛

最新回复

请问下,这个800改变的是占空比,那么占空比是怎么计算的呢,和这个800,还有TIM_TimeBaseStructure.TIM_Period = 719;        //周期719   TIM_TimeBaseStructure.TIM_Prescaler = 999;          //时钟分频   有关系吗。我看了很多资料,感觉好像讲的都不一样,大神们求指导啊,  详情 回复 发表于 2015-8-31 15:58
点赞 关注
 

回复
举报

2131

帖子

0

TA的资源

至上芯片

沙发
 

回复 楼主 若如 的帖子

请参考它的例程
此帖出自stm32/stm8论坛
 
个人签名处处留心皆学问!
 

回复

41

帖子

0

TA的资源

一粒金砂(中级)

板凳
 
谢谢提醒,已经找到例程,研究中。
此帖出自stm32/stm8论坛
 
 

回复

17

帖子

0

TA的资源

一粒金砂(中级)

4
 

请看

你自己后面的注释都写了,
TIM_OCInitStructure.TIM_Pulse = 800; //占空长度
你要是想自动改变,就把800设成一个变量,比如这样
unsigned int CCR_Val=800;
TIM_OCInitStructure.TIM_Pulse = CCR_Val;然后你在程序里只要改变这个CCR_Val的值就可以改变占空比了。
  还有一个地方,楼主你确定你算的周期是对的么?因为根据你初始化设置的预分频系数还有分频系数来看,你要得到周期为5ms的pwm波,你的时钟周期为144Mhz,据我所知还没有这么高时钟信号的stm32.
  另外,按照你的说法如果周期是5ms,用800/(999+1)=1ms,而不是你说的0.7ms。
此帖出自stm32/stm8论坛

点评

估计楼主是搞错了吧  详情 回复 发表于 2015-7-26 17:12
 
 
 

回复

42

帖子

0

TA的资源

一粒金砂(中级)

5
 
jassica8888 发表于 2011-8-4 14:14
你自己后面的注释都写了,
TIM_OCInitStructure.TIM_Pulse = 800; //占空长度
你要是想自动改变,就把800 ...

估计楼主是搞错了吧
此帖出自stm32/stm8论坛
 
 
 

回复

164

帖子

0

TA的资源

一粒金砂(中级)

6
 
估计他已经有答案了
此帖出自stm32/stm8论坛
 
个人签名专业电子方案/zigbee方案设计,毕业设计。QQ:1397905781
 
 

回复

4

帖子

0

TA的资源

一粒金砂(初级)

7
 
请问下,这个800改变的是占空比,那么占空比是怎么计算的呢,和这个800,还有TIM_TimeBaseStructure.TIM_Period = 719;        //周期719
  TIM_TimeBaseStructure.TIM_Prescaler = 999;          //时钟分频   有关系吗。我看了很多资料,感觉好像讲的都不一样,大神们求指导啊,
此帖出自stm32/stm8论坛
 
 
 

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

查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/9 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表