OpenEdv-开源电子网

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

请教高手:定时器单脉冲输出的问题

[复制链接]

12

主题

21

帖子

0

精华

初级会员

Rank: 2

积分
89
金钱
89
注册时间
2012-3-8
在线时间
0 小时
发表于 2012-3-8 17:46:32 | 显示全部楼层 |阅读模式
 我想用定时器的单脉冲模式,用它接受方波的上升沿,在上升沿的激励下产生一个脉冲,但是对单脉冲模式的设置不是很了解,在网上的搜集资料后做了下面的程序:

单脉冲模式配置:fficeffice" />

TIM_TimeBaseStructure.TIM_Period = 30;

  TIM_TimeBaseStructure.TIM_Prescaler =36000-1;

  TIM_TimeBaseStructure.TIM_ClockDivision = 0;

  TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up; //设置定时器输出频率

 

  TIM_TimeBaseInit(TIM3, &TIM_TimeBaseStructure);

 

  TIM_OCInitStructure.TIM_OCMode = TIM_OCMode_PWM2;

  TIM_OCInitStructure.TIM_OutputState = TIM_OutputState_Enable;

  TIM_OCInitStructure.TIM_Pulse =15;

  TIM_OCInitStructure.TIM_OCPolarity = TIM_OCPolarity_High;

 

  TIM_OC1Init(TIM3, &TIM_OCInitStructure);

 

  /* TIM4 configuration in Input Capture Mode */

 

  TIM_ICStructInit(&TIM_ICInitStructure);

 

  TIM_ICInitStructure.TIM_Channel = TIM_Channel_2;

  TIM_ICInitStructure.TIM_ICPolarity = TIM_ICPolarity_Rising;

  TIM_ICInitStructure.TIM_ICSelection = TIM_ICSelection_DirectTI;

  TIM_ICInitStructure.TIM_ICPrescaler = TIM_ICPSC_DIV1;

  TIM_ICInitStructure.TIM_ICFilter = 0;

 

  TIM_ICInit(TIM3, &TIM_ICInitStructure);

  TIM_Cmd(TIM3, ENABLE);    //开启时钟

  /* One Pulse Mode selection */

  TIM_SelectOnePulseMode(TIM3, TIM_OPMode_Single);

 

  /* Input Trigger selection */

  TIM_SelectInputTrigger(TIM3, TIM_TS_TI2FP2);

 

  /* Slave Mode selection: Trigger Mode */

  TIM_SelectSlaveMode(TIM3, TIM_SlaveMode_Trigger);

但是产生的脉冲波形与方波的上升沿有很大的相位差,不知道是什么原因,有哪位大侠出手相救啊??
注:方波是50hz的,我自己用定时器产生的,然后将两个端口接起来,给TIM3的CH2传输PWM波。

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

使用道具 举报

12

主题

21

帖子

0

精华

初级会员

Rank: 2

积分
89
金钱
89
注册时间
2012-3-8
在线时间
0 小时
 楼主| 发表于 2012-3-8 17:48:38 | 显示全部楼层
TIM_TimeBaseStructure.TIM_Period = 30;
  TIM_TimeBaseStructure.TIM_Prescaler =36000-1;
  TIM_TimeBaseStructure.TIM_ClockDivision = 0;
  TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up;

  TIM_TimeBaseInit(TIM3, &TIM_TimeBaseStructure);

  /* TIM4 WM2 Mode configuration: Channel1 */
  TIM_OCInitStructure.TIM_OCMode = TIM_OCMode_PWM2;
  TIM_OCInitStructure.TIM_OutputState = TIM_OutputState_Enable;
  TIM_OCInitStructure.TIM_Pulse =15;
  TIM_OCInitStructure.TIM_OCPolarity = TIM_OCPolarity_High;

  TIM_OC1Init(TIM3, &TIM_OCInitStructure);
这部分配置有延时的功能吗?是不是应该接受到方波就产生脉冲啊?
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165516
金钱
165516
注册时间
2010-12-1
在线时间
2116 小时
发表于 2012-3-8 18:03:59 | 显示全部楼层
回复【2楼】山东王大瓜:
---------------------------------
没有延时功能.
相位差多少?
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

12

主题

21

帖子

0

精华

初级会员

Rank: 2

积分
89
金钱
89
注册时间
2012-3-8
在线时间
0 小时
 楼主| 发表于 2012-3-8 20:44:25 | 显示全部楼层
差将近4ms
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165516
金钱
165516
注册时间
2010-12-1
在线时间
2116 小时
发表于 2012-3-8 21:17:14 | 显示全部楼层
不知道是不是你配置的延时了.
呵呵
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

54

主题

537

帖子

0

精华

高级会员

Rank: 4

积分
797
金钱
797
注册时间
2012-2-27
在线时间
7 小时
发表于 2013-11-22 15:26:30 | 显示全部楼层
搞定了么哥们
回复 支持 反对

使用道具 举报

25

主题

80

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
213
金钱
213
注册时间
2014-5-14
在线时间
6 小时
发表于 2015-3-24 17:04:50 | 显示全部楼层
楼主,想问问上面的定时器设置程序是不是正确的?我也是使用定时器3的CH1输出单脉冲,CH2捕捉外部信号的上升沿,但是可以实现捕捉,定时器的计数器也出发了,但就是没有脉冲输出,想参考你的设置
回复 支持 反对

使用道具 举报

0

主题

1

帖子

0

精华

新手入门

积分
17
金钱
17
注册时间
2016-5-30
在线时间
2 小时
发表于 2016-10-11 11:31:59 | 显示全部楼层
延时的问题跟:
        TIM_SetAutoreload(TIM4,499);
        TIM_SetCompare1(TIM4,100);
设定有关系哦。
回复 支持 反对

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-5-24 02:29

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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