5545|13

82

帖子

0

TA的资源

一粒金砂(初级)

楼主
 

问个简单的TIM问题. [复制链接]

 大家帮我看看程序吧,,我想在TIM3的channel1中输出同频率但不同占空比的PWM..采用的策略是当TIM3发生TIM_IT_Update时,修改CCR1的值..
但用下面的程序,程序一运行到倒数第二行TIM_ITConfig(TIM3,TIM_IT_Update,ENABLE);
就死掉了...不知道什么原因..
如果去去掉这个语句,则正常运行,输出占空比为50%的波形,,,这个有点废话了...
俺对TIM不甚了解,大虾看看


在main.c中这样来设置TIM3和Channel1

  TIM_TimeBaseStructure.TIM_Period = 9999;
  TIM_TimeBaseStructure.TIM_Prescaler = 0;
  TIM_TimeBaseStructure.TIM_ClockDivision =TIM_CKD_DIV4;
  TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up;

  TIM_TimeBaseInit(TIM3, &TIM_TimeBaseStructure);

  /* PWM1 Mode configuration: Channel1 */
  TIM_OCInitStructure.TIM_OCMode = TIM_OCMode_PWM1;
  TIM_OCInitStructure.TIM_OutputState = TIM_OutputState_Enable;
  TIM_OCInitStructure.TIM_Pulse = CCR1_Val;
  TIM_OCInitStructure.TIM_OCPolarity = TIM_OCPolarity_High;
  TIM_OC1Init(TIM3, &TIM_OCInitStructure);
  TIM_OC1PreloadConfig(TIM3, TIM_OCPreload_Disable);

  /* PWM1 Mode configuration: Channel2 */
  TIM_OCInitStructure.TIM_OutputState = TIM_OutputState_Enable;
  TIM_OCInitStructure.TIM_Pulse = CCR2_Val;

  TIM_OC2Init(TIM3, &TIM_OCInitStructure);

TIM_OC2PreloadConfig(TIM3, TIM_OCPreload_Disable);

  /* PWM1 Mode configuration: Channel3 */
  TIM_OCInitStructure.TIM_OutputState = TIM_OutputState_Enable;
  TIM_OCInitStructure.TIM_Pulse = CCR3_Val;

  TIM_OC3Init(TIM3, &TIM_OCInitStructure);

TIM_OC3PreloadConfig(TIM3, TIM_OCPreload_Disable);

  /* PWM1 Mode configuration: Channel4 */
  TIM_OCInitStructure.TIM_OutputState = TIM_OutputState_Enable;
  TIM_OCInitStructure.TIM_Pulse = CCR4_Val;

  TIM_OC4Init(TIM3, &TIM_OCInitStructure);

 TIM_OC4PreloadConfig(TIM3, TIM_OCPreload_Disable);

TIM_ARRPreloadConfig(TIM3, ENABLE);
  TIM_ITConfig(TIM3,TIM_IT_Update,ENABLE);
  /* TIM3 enable counter */
  TIM_Cmd(TIM3, ENABLE);
在stm3210x_it.c中,来设置中断.
u16 f[]={5000,3750,2500,1250};
u8 i=1;
void TIM3_IRQHandler(void)
{
  if (TIM_GetITStatus(TIM3,TIM_IT_Update)!=RESET)
  {
    TIM_SetCompare1(TIM3,f);
  i++;
  if(i==3)i=0;
 TIM_ClearITPendingBit(TIM3,TIM_IT_Update);
  }
}
此帖出自stm32/stm8论坛

最新回复

                                 主要是看库说明有时候看得烦了,就上来问了,,,,呵呵,,,   详情 回复 发表于 2008-8-6 09:24
点赞 关注
 

回复
举报

56

帖子

0

TA的资源

一粒金砂(初级)

沙发
 

自己来顶一下.....

                                 发现STM32的库函数读起来真正是不容易啊,,尤其是书写...忍着..
此帖出自stm32/stm8论坛
 
 

回复

64

帖子

0

TA的资源

一粒金砂(初级)

板凳
 

香水,帮帮忙吧,,,,

                                 香水,抽点时间看看啊.
此帖出自stm32/stm8论坛
 
 

回复

64

帖子

0

TA的资源

一粒金砂(初级)

4
 

CCRx和ARR的预装载

到现在为止还没有搞清楚预装载的作用???

谁告诉我.
此帖出自stm32/stm8论坛
 
 
 

回复

87

帖子

0

TA的资源

一粒金砂(初级)

5
 

还是没有人回答我..

等待啊..
此帖出自stm32/stm8论坛
 
 
 

回复

84

帖子

0

TA的资源

一粒金砂(初级)

6
 

你下面的代码出错

TIM_OC1PreloadConfig(TIM3, TIM_OCPreload_Disable);
                           ^^^^^^^^^^^^^^^^^^^^^^
应该为TIM_OCPreload_Enable。
此帖出自stm32/stm8论坛
 
 
 

回复

63

帖子

0

TA的资源

一粒金砂(初级)

7
 

回ST_ARM,不会,为什么要启动预装载呢??

                                 我试试看.
此帖出自stm32/stm8论坛
 
 
 

回复

86

帖子

0

TA的资源

一粒金砂(初级)

8
 

ST_ARM兄弟

你说得不对啊,,,错误应该不是你说的啊....
我试过了,,没有用,,,,不该开预装载才对的....

谁告诉我预装载的具体作用,到现在都还迷胡..
此帖出自stm32/stm8论坛
 
 
 

回复

62

帖子

0

TA的资源

一粒金砂(初级)

9
 

TIM_ITConfig(TIM3,TIM_IT_Update,ENABLE)就死掉

加上这个语句就没有办法开启TIM了,
就是CNT都没有开始计数,,,

一运行到这个语句就死在那了...
此帖出自stm32/stm8论坛
 
 
 

回复

60

帖子

0

TA的资源

一粒金砂(初级)

10
 

召唤香水,,,,香水今天一直没有出现过...

                                 香水快出现
此帖出自stm32/stm8论坛
 
 
 

回复

71

帖子

0

TA的资源

一粒金砂(初级)

11
 

请贴一下你的NVIC初始化设置的代码

                                  
此帖出自stm32/stm8论坛
 
 
 

回复

72

帖子

0

TA的资源

一粒金砂(初级)

12
 

搞定了,,净给自己整麻烦,

中断向量放错地方了,,
我在问了下,在库中,,
TIM_Prescaler,TIM_ClockDivision都是用来分TIM clock的,可TIM_ClockDivision总是没有用啊,给我讲讲他们的用法??????

这库说明写得看人头疼....
此帖出自stm32/stm8论坛
 
 
 

回复

68

帖子

0

TA的资源

一粒金砂(初级)

13
 

哈哈,看样子下次你问问题时需要给你一段冷静期,可以好

我们还特意就你的问题作了一个实验,很奇怪为什么你那里有问题~~~~~~~

TIM_ClockDivision是指如果使用TIM的输入功能,采样时有一个滤波器,可以是每个TIM时钟采样一次,或每两个TIM时钟采样一次,也可以每四个TIM时钟采样一次,这样可以减少干扰。如果你不用TIM的输入功能,当然不起作用。
此帖出自stm32/stm8论坛
 
 
 

回复

84

帖子

0

TA的资源

一粒金砂(中级)

14
 

谢谢香水,,,

                                 主要是看库说明有时候看得烦了,就上来问了,,,,呵呵,,,
此帖出自stm32/stm8论坛
 
 
 

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

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

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

 
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
快速回复 返回顶部 返回列表