外部中断+定时器计数-Arduino中文社区 - Powered by Discuz!

Arduino中文社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 3459|回复: 1

[未解决] 外部中断+定时器计数

[复制链接]
发表于 2020-10-27 17:50 | 显示全部楼层 |阅读模式
程序功能如下:
       一个1KHz的方波触发D2引脚的外部中断0,设置上升沿触发,此时开启定时器1(16MHz)开始计数,直到下一次中断,完成一次周期的计数。将定时器值赋给变量count,利用f=16000000/count得到频率。



float count = 1;//定时器值赋给count

void TimerNumber()
{
  count = TCNT1;//定时器值赋给count
  TCNT1=0;//定时器清零

   attachInterrupt(digitalPinToInterrupt(2), TimerNumber,RISING);//开启外部中断,TimerNumber为中断处理函数,RISING上升沿触发
}
void setup()
{
  TCNT1 = 0;
  pinMode( 2 , INPUT);//D2设置位输入模式
  Serial.begin(57600); //波特率57600
  TCCR1A = 0x00;
  TCCR1B = ;//不分频
  attachInterrupt(digitalPinToInterrupt(2), TimerNumber, RISING);//开启外部中断
}

float Get_AD()
{
  float Frequence  = 16000000.0 / count;
  return Frequence;
}

void loop()
{
  float number=Get_AD();
  Serial.println(number);//打印频率值
  delay(1000);
}


频率测不对,外部中断可以肯定触发了,是不是我定时器没有开启呢?感谢各位指教一下。
发表于 2021-5-28 17:09 | 显示全部楼层
中断函数里又有中断,这是不是会无法运行下去?这样是不是会成了递归函数一样了
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|Archiver|手机版|Arduino中文社区

GMT+8, 2024-11-29 05:41 , Processed in 0.071651 second(s), 15 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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