11481|15

62

帖子

0

TA的资源

一粒金砂(初级)

楼主
 

发送固定个数脉冲的方法 [复制链接]



需要输出500hz的方波,但是只输出20个周期。
我自己的方案,使用定时器输出500hz的方波,利用系统滴答始终计数40ms,然后关闭定时器。(此方案有个问题,经常会出现,定时器不工作的时候,一直处于高电平。)
在网上看到有用两个定时器,一个定时器使能另一个定时器,高电平开启方波输出,低电平关闭,但是一直搞不出来。那位指点一下。
此帖出自stm32/stm8论坛

最新回复

                                 除非有片外的下拉电阻,否则把引脚设置为高阻状态并不能保证信号线变低。  详情 回复 发表于 2010-7-28 14:33
点赞 关注
 

回复
举报

81

帖子

0

TA的资源

一粒金砂(初级)

沙发
 
                                 方案是对的,有问题是你操作有问题。
此帖出自stm32/stm8论坛
 
 

回复

88

帖子

0

TA的资源

一粒金砂(初级)

板凳
 
                                 定时器使能关闭后,输出管脚应该是高电平还是低电平?我用示波器测量的时候,感觉定时器不工作的时候,高低电平也会变换出现。是不是关闭定时器那一时刻,如果是高电平,之后就保持高电平;如果关闭的那一时刻是低电平,之后就保持低电平?
此帖出自stm32/stm8论坛
 
 

回复

67

帖子

0

TA的资源

一粒金砂(初级)

4
 
                                 我是用开发板带的例程更改的,自己调整了一下频率,然后就是在主循环里进行定时开关定时器
此帖出自stm32/stm8论坛
 
 
 

回复

68

帖子

0

TA的资源

一粒金砂(初级)

5
 
使用TIM之间的同步模式中的gate mode,例程库中有个例子LZ可以参考:

STM32F10x_StdPeriph_Examples\TIM\Cascade_Synchro
此帖出自stm32/stm8论坛
 
 
 

回复

69

帖子

0

TA的资源

一粒金砂(初级)

6
 
定时器使能关闭后,输出管脚应该是高电平还是低电平?我用示波器测量的时候,感觉定时器不工作的时候,高低电平也会变换出现。是不是关闭定时器那一时刻,如果是高电平,之后就保持高电平;如果关闭的那一时刻是低电 ...
定时器使能关闭后,输出管脚应该是高电平还是低电平?要看你关闭定时器的那一时刻,输出电平是高还是低,只要控制的好,它就会按照你的要求输出。
此帖出自stm32/stm8论坛
 
 
 

回复

73

帖子

0

TA的资源

一粒金砂(初级)

7
 
                                 手册的意思,端口复用功能开启,外设自动取代GPIO接管IO电平,外设中有关端口输出控制项关闭后,端口电平由GPIO的ODR寄存器决定,如果是TIM1,还可以在刹车寄存器BKR和输出空闲状态寄存器OISR中修改空闲状态电平。
此帖出自stm32/stm8论坛
 
 
 

回复

81

帖子

0

TA的资源

一粒金砂(初级)

8
 
这个控制还没搞明白,版主能不能给点拨一下。
此帖出自stm32/stm8论坛
 
 
 

回复

72

帖子

0

TA的资源

一粒金砂(初级)

9
 
                                 版主已经点拨的很多了,余下来的要自己悟了
此帖出自stm32/stm8论坛
 
 
 

回复

81

帖子

0

TA的资源

一粒金砂(初级)

10
 
                                 悟性太差了,这点东西误了一个星期了,哎
此帖出自stm32/stm8论坛
 
 
 

回复

76

帖子

0

TA的资源

一粒金砂(初级)

11
 
真的是悟性差了点,:PWM信号的特点就是信号电平一会儿高、一会儿低,比如你的500Hz方波就是持续1ms的高电平,再持续1ms的低电平,如果你关闭产生这个方波的定时器的时机,正好是在它输出高电平时,那么关闭了定时器后,如果没有其它动作,这个信号线当然会保持这个高电平了,反之亦然。

所以关闭定时器的时机非常重要。
此帖出自stm32/stm8论坛
 
 
 

回复

68

帖子

0

TA的资源

一粒金砂(初级)

12
 
现在的问题就是这个时机怎么掌握,在关闭之前检测他是不是低电平?不是低电平,等他低了再关?
此帖出自stm32/stm8论坛
 
 
 

回复

60

帖子

0

TA的资源

一粒金砂(初级)

13
 
TIM_TimeBaseStructure.TIM_Period = 7199;
  TIM_TimeBaseStructure.TIM_Prescaler = 0;
  TIM_TimeBaseStructure.TIM_ClockDivision = 0;
  TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up;

  TIM_TimeBaseInit(TIM2, &TIM_TimeBaseStructure);

  TIM_TimeBaseStructure.TIM_Period = 9;
  TIM_TimeBaseInit(TIM3, &TIM_TimeBaseStructure);

  TIM_TimeBaseStructure.TIM_Period = 9;
  TIM_TimeBaseInit(TIM4, &TIM_TimeBaseStructure);

  /* Master Configuration in PWM1 Mode */
  TIM_OCInitStructure.TIM_OCMode = TIM_OCMode_PWM1;
  TIM_OCInitStructure.TIM_OutputState = TIM_OutputState_Enable;
  TIM_OCInitStructure.TIM_Pulse = 3599;
  TIM_OCInitStructure.TIM_OCPolarity = TIM_OCPolarity_High;

  TIM_OC2Init(TIM2, &TIM_OCInitStructure);

  /* Select the Master Slave Mode */
  TIM_SelectMasterSlaveMode(TIM2, TIM_MasterSlaveMode_Enable);

  /* Master Mode selection */
  TIM_SelectOutputTrigger(TIM2, TIM_TRGOSource_OC2Ref);

  /* Slaves Configuration: PWM1 Mode */
  TIM_OCInitStructure.TIM_OCMode = TIM_OCMode_PWM1;
  TIM_OCInitStructure.TIM_OutputState = TIM_OutputState_Enable;
  TIM_OCInitStructure.TIM_Pulse = 4;

  TIM_OC1Init(TIM3, &TIM_OCInitStructure);

  TIM_OC1Init(TIM4, &TIM_OCInitStructure);

  /* Slave Mode selection: TIM3 */
  TIM_SelectSlaveMode(TIM3, TIM_SlaveMode_Gated);
  TIM_SelectInputTrigger(TIM3, TIM_TS_ITR1);

  /* Select the Master Slave Mode */
  TIM_SelectMasterSlaveMode(TIM3, TIM_MasterSlaveMode_Enable);

  /* Master Mode selection: TIM3 */
  TIM_SelectOutputTrigger(TIM3, TIM_TRGOSource_Update);

  /* Slave Mode selection: TIM4 */
  TIM_SelectSlaveMode(TIM4, TIM_SlaveMode_Gated);
  TIM_SelectInputTrigger(TIM4, TIM_TS_ITR2);
  
  /* TIM enable counter */
  TIM_Cmd(TIM3, ENABLE);
  TIM_Cmd(TIM2, ENABLE);
  TIM_Cmd(TIM4, ENABLE);

这是配置的代码,板子上测试高电平的时候工作,低电平的时候有个定时器不工作,现在唯一的问题就是,空闲时的电平有时低有时高
此帖出自stm32/stm8论坛
 
 
 

回复

92

帖子

0

TA的资源

一粒金砂(初级)

14
 
现在的问题就是这个时机怎么掌握,在关闭之前检测他是不是低电平?不是低电平,等他低了再关?
11# 版主
对的,你可以通过测试信号,等它低了再关;因为脉冲的频率和脉冲个数都是已知的,所以也可以通过计算,准确地知道它应该在什么时候变低,并关闭定时器。
此帖出自stm32/stm8论坛
 
 
 

回复

78

帖子

0

TA的资源

一粒金砂(初级)

15
 

把哪只引脚设置为高阻状态不可以吗?
此帖出自stm32/stm8论坛
 
 
 

回复

74

帖子

0

TA的资源

一粒金砂(初级)

16
 
                                 除非有片外的下拉电阻,否则把引脚设置为高阻状态并不能保证信号线变低。
此帖出自stm32/stm8论坛
 
 
 

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

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/10 下一条
【干货上新】电源解决方案和技术第二趴 | DigiKey 应用探索站
当月好物、电源技术资源、特色活动、DigiKey在线实用工具,干货多多~

查看 »

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

 
机器人开发圈

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

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

北京市海淀区中关村大街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
快速回复 返回顶部 返回列表