[STM32F2] 测更大的频率

[复制链接]
 楼主| xxrs 发表于 2021-1-4 23:46 | 显示全部楼层 |阅读模式

P1SEL|=BIT0;                              // 设置 P1.0 为 TimerA 外部计数信号输入口
          P1DIR&=~BIT0;                             // 设置 P1.0 为输入口
                                           // TimerA 配置
          TACTL=TASSEL_0;                           // 定时器 A 时钟源选择:TACLK 记上升沿次数
          TACTL=ID_0;                               // 计数时钟分频系数选择:1
          while(1)
          {
           TAR=0x0000;                             // 定时器 A 计数寄存器内容清零
            TACTL=MC_2;                             // 定时器 A 工作模式选择:连续模式
               delay_nms(261);                        // 产生 1s 计数闸门
               TACTL=MC_0;                             // 定时器 A 工作模式选择:停止模式
            count=TAR;  // 6553X 最大极限值
......
这个程序是用定时器A来在1S内测上升沿的次数得出信号的频率,
TAR 只能计数到6553X左右,不能再上去了,有什么办法测更大的频率吗?
huwr 发表于 2021-1-4 23:49 | 显示全部楼层
这是要测更小的频率吧?
huanghuac 发表于 2021-1-4 23:53 | 显示全部楼层
可以增加一个计数变量,每当TAR 计数到6553X变量加1
happy_10 发表于 2021-1-4 23:55 | 显示全部楼层
看你的程序也是要测量更小的频率
happy_10 发表于 2021-1-4 23:58 | 显示全部楼层
更大的平率收到晶振限制   8M晶振不分频只能到1/8us
jiahy 发表于 2021-1-5 21:05 | 显示全部楼层
选择DSP这个可以实现。
wenfen 发表于 2021-1-5 21:10 | 显示全部楼层
使用定时器计算中断次数。
tian111 发表于 2021-1-5 21:14 | 显示全部楼层
我觉得最简单就是捕获实现。
songqian17 发表于 2021-1-5 21:18 | 显示全部楼层
可以使用频率转换电压芯片。
chenho 发表于 2021-1-5 21:22 | 显示全部楼层
楼主的可以使用捕获电路实现。
zwll 发表于 2021-1-5 21:28 | 显示全部楼层
这个也需要由晶振的最大频率决定的吧。
chuxh 发表于 2021-1-5 21:32 | 显示全部楼层
是的,楼主可以使用捕获电路实现。
juventus9554 发表于 2021-1-5 21:35 | 显示全部楼层
定时器级联,也就是一个定时器输出作为另一个定时器的时钟源
juventus9554 发表于 2021-1-5 21:40 | 显示全部楼层
把延时时间缩短。比如你1ms读一次计数值,然后乘以1000即可。优点简单,缺点对低频不好处理。
stly 发表于 2021-1-5 21:44 | 显示全部楼层
在更新中断设置一个计数,最后计数值+更新中断计数值*65536
llljh 发表于 2021-1-5 21:50 | 显示全部楼层
把输入做为定时器的外部时钟
dingy 发表于 2021-1-5 21:57 | 显示全部楼层
以上几种方式组合可测试最大频率几十Mhz不在话下。
stly 发表于 2021-1-5 22:01 | 显示全部楼层
用循环签到可以不
 楼主| xxrs 发表于 2021-1-5 22:05 | 显示全部楼层
哦,那我就知道怎么回事了,多谢大家
木木guainv 发表于 2021-2-1 23:01 | 显示全部楼层
楼主的 要求太高了点
您需要登录后才可以回帖 登录 | 注册

本版积分规则

405

主题

7415

帖子

1

粉丝
快速回复 在线客服 返回列表 返回顶部