stm32测频率

2019-08-16 19:51发布

             各位大侠好:stm32测频率  我是利用定时中断+外部中断来实现的。具体做法:外部中断每来一个脉冲上升沿促发中断一次,频率值加1,记到0.5s后定时器中断发生,显示此时频率的值。但是频率上不去,只能到700K左右。有没有更好的方法测频率呢?
/*外部中断处理函数*/
void EXTI0_IRQHandler(void)
{  g_freq++;  //计数值,最后当频率值显示出来
 EXTI->R=1<<0;  //清除LINE0上的中断标志位
}
/*定时器中断服务函数*/ void TIM3_IRQHandler(void)   //TIM3中断
{
  flag = 1;    //之里的flag用于main函数里面判断是否0.5S到了,如果到了则显示出频率值
  TIM_ClearITPendingBit(TIM3, TIM_IT_Update);  //清除TIMx的中断待处理位:TIM 中断源   
}
main函数关键部分:  while(1)
 {

  if(flag)
  {
      Freq_tmp = g_freq;
      printf("%d ", Freq_tmp);//之里用串口打印出频率值在终端上
      g_freq = 0;    //频率值清零,重新计数
      flag = 0;    //清除标记,下次0.5S定时器中断到来后重新显示出来
  }
    
 }

 
 
 
 
 
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
2条回答
JohnsonJiang
1楼-- · 2019-08-17 00:15
 精彩回答 2  元偷偷看……
夏少陵a
2楼-- · 2019-08-17 02:07
可以考虑用定时器,采高频的时候,不宜用外部中断

一周热门 更多>