你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

查看: 2973|回复: 1

通用定时器PWM输出不能自动修改周期问题

[复制链接]

5

主题

31

回帖

0

蝴蝶豆

新手上路

最后登录
2019-8-30
发表于 2011-6-28 13:14:30 | 显示全部楼层 |阅读模式
用TIM4输出的PWM波形不能自动修改周期,仿真看到TIM4_ARR的值已经修改,但是PWM周期仍然是原来初始化时的值,请教是怎么回事?程序如下:
void pwm_tim_configuration (void)
{
 TIM_TimeBaseInitTypeDef  TIM_TimeBaseStructure;
 RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM4, ENABLE); //在开启时钟里一定要打开TIM2的时钟 
  TIM_TimeBaseStructure.TIM_Period = 200;        //设定的最大计数值7199,最大计数值是0xffff
  TIM_TimeBaseStructure.TIM_Prescaler = 11;     //分频9999
  TIM_TimeBaseStructure.TIM_ClockDivision = 0;     // 时钟分割
  TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up;  //计数方向向上计数
  TIM_TimeBaseInit(TIM4, &TIM_TimeBaseStructure);
 
}

void pwm_configuration (void)
{
 TIM_OCInitTypeDef TIM_OCInitStructure; 
  
 TIM_OCInitStructure.TIM_OCMode = TIM_OCMode_PWM1;
 TIM_OCInitStructure.TIM_OutputState = TIM_OutputState_Enable;
 TIM_OCInitStructure.TIM_Pulse = 75;
 TIM_OCInitStructure.TIM_OCPolarity = TIM_OCPolarity_High;
 TIM_OC3Init (TIM4,&TIM_OCInitStructure);
 TIM_OC3PreloadConfig(TIM4,TIM_OCPreload_Enable);
 TIM_ARRPreloadConfig(TIM4,ENABLE);
 TIM_Cmd(TIM4,ENABLE);
}
主程序修改频率程序:
TIM_SetAutoreload(TIM4,50*Rx_Idx);
   TIM_SetCompare3(TIM4,50);
程序中没有使用中断,也没有判断更新标志,主程序有2MS时钟控制循环执行,每2MS执行一次修改占空比和周期的值,
回复

使用道具 举报

5

主题

31

回帖

0

蝴蝶豆

新手上路

最后登录
2019-8-30
 楼主| 发表于 2011-7-1 14:05:34 | 显示全部楼层

RE:通用定时器PWM输出不能自动修改周期问题

问题已解决,过程很神奇:我仔细看了一下手册,还在网上看了一下别人做的程序,最后得出结论我的程序没有错,于是上电重新运行,哦也 哈哈 ,不知道之前为毛不可以
回复 支持 反对

使用道具 举报

关于意法半导体
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
招聘信息
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
关注我们
st-img 微信公众号
st-img 手机版