8459|15

84

帖子

0

TA的资源

一粒金砂(中级)

楼主
 

定时器中断中IO口能输出最高频率? [复制链接]

                                 本人做实验时直接在定时器中断中把IO口取反输出频率信号,但输出频率始终达不到1M以上,为什么呢?谢谢各位!
此帖出自stm32/stm8论坛

最新回复

up   详情 回复 发表于 2019-10-15 11:14
点赞 关注
 

回复
举报

79

帖子

0

TA的资源

一粒金砂(初级)

沙发
 
                                 为什么不呢?
此帖出自stm32/stm8论坛
 
 

回复

68

帖子

0

TA的资源

一粒金砂(初级)

板凳
 
                                 不知道什么原因,频率就是上不去!郁闷!
此帖出自stm32/stm8论坛
 
 

回复

58

帖子

0

TA的资源

一粒金砂(初级)

4
 
                                 频率信号输出端有没有接滤波电容?
此帖出自stm32/stm8论坛
 
 
 

回复

66

帖子

0

TA的资源

一粒金砂(初级)

5
 
                                 需要考虑中断的响应时间和中断内程序执行的时间,如果你的程序比较长,这个水准就不错了。
此帖出自stm32/stm8论坛
 
 
 

回复

62

帖子

0

TA的资源

一粒金砂(初级)

6
 
                                 1M应该是很容易达到的呀
此帖出自stm32/stm8论坛
 
 
 

回复

74

帖子

0

TA的资源

一粒金砂(初级)

7
 
如果定时器定时的频率本来就比较小,那想快也快不起来啊

如版主所言,首先要保证中断的频率满足你的要求,还要考虑中断的响应时间及执行时间
此帖出自stm32/stm8论坛
 
 
 

回复

67

帖子

0

TA的资源

一粒金砂(初级)

8
 
                                 版主分析的很有道理
此帖出自stm32/stm8论坛
 
 
 

回复

78

帖子

0

TA的资源

一粒金砂(初级)

9
 
                                 首先感谢各位的热情帮助!我在输出口上没有接电容,而且为了做实验中断中只把口线取反其他什么都不做,主程序也不做任何事情的!就是不行!
此帖出自stm32/stm8论坛
 
 
 

回复

81

帖子

0

TA的资源

一粒金砂(初级)

10
 
首先感谢各位的热情帮助!我在输出口上没有接电容,而且为了做实验中断中只把口线取反其他什么都不做,主程序也不做任何事情的!就是不行!
你希望什么结果?

请你把中断的响应时间和执行程序的时间加起来,计算一下。
此帖出自stm32/stm8论坛
 
 
 

回复

65

帖子

0

TA的资源

一粒金砂(中级)

11
 
最好将定时器部分的设定发上来看看,说不定就是你设定的问题

这部分好像跟接没接电容关系不大吧?
此帖出自stm32/stm8论坛
 
 
 

回复

83

帖子

0

TA的资源

一粒金砂(初级)

12
 
程序代码如下:
/* Time2 base configuration 系统频率为72M*/
  TIM_TimeBaseStructure.TIM_Prescaler = 1;    //定时器2的时钟频率为:72M/(1+1) = 36M
  TIM_TimeBaseStructure.TIM_Period = 89;    //定时器的溢出频率为400k
  TIM_TimeBaseStructure.TIM_ClockDivision = 0;
  TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up;
  TIM_TimeBaseInit(TIM2, &TIM_TimeBaseStructure);
  TIM_ITConfig(TIM2, TIM_IT_Update, ENABLE);
  TIM_Cmd(TIM2, ENABLE);
  中断函数为:
  void TIM2_IRQHandler(void)
{
  if(TIM_GetITStatus(TIM2, TIM_IT_Update) == SET)
  {
    /* Clear TIM3 Capture compare interrupt pending bit */
    TIM_ClearITPendingBit(TIM2, TIM_IT_Update);
GPIO_WriteBit(GPIOB, GPIO_Pin_8, (BitAction)(1 - GPIO_ReadOutputDataBit(GPIOB, GPIO_Pin_8)));
  }
}
现在的程序现象为:
1。当设定 TIM_TimeBaseStructure.TIM_Period = 89; 时定时器的溢出频率为400K,用示波器测试PB8口为200K,这时完全正确。
2。当设定 TIM_TimeBaseStructure.TIM_Period = 39; 时定时器的溢出频率为900K,用示波器测试PB8口为225.2K,这时输出频率就不正确了。
烦请各位帮忙分析原因,主程序不做任何事情的.
此帖出自stm32/stm8论坛
 
 
 

回复

72

帖子

0

TA的资源

一粒金砂(初级)

13
 
设定 TIM_TimeBaseStructure.TIM_Period = 39,我用软件仿真的测试PB8频率这时输出也不正确。
当然如果设定 TIM_TimeBaseStructure.TIM_Period = 89, 用软件仿真的测试PB8频率为200K,这时完全正确。
为何呢??
此帖出自stm32/stm8论坛
 
 
 

回复

74

帖子

0

TA的资源

一粒金砂(初级)

14
 
楼主显然没有考虑我在10楼提出的问题。

你的中断程序中处理时间太长了,CPU没有你想象的快!
此帖出自stm32/stm8论坛
 
 
 

回复

7

帖子

1

TA的资源

一粒金砂(初级)

15
 
碰到同样的问题了,请问楼主,解决问题了没有?
此帖出自stm32/stm8论坛
 
 
 

回复

3

帖子

0

TA的资源

一粒金砂(初级)

16
 

up

此帖出自stm32/stm8论坛
 
 
 

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

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

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

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