很多低端MCU没有像STM32 那样拥有强大脉冲捕获测频率,那么MCU只能依靠自身有的资源来实现这个功能,比较通用的方法是使用了外部中断+定时器来实现,该方法经过我在实际项目中的使用来看,频率50/60Hz 完全没问题,最好加个滤波算法,效果会更好。

目录

  • 一、实现原理
  • 二、具体实现
    • 2.1 封装结构
    • 2.2 瑞萨单片机定时中断函数
    • 2.3 瑞萨单片机外部中断函数
    • 2.4 例子
    • 2.5 图片

一、实现原理

思路:

  1. 定时器定时间隔周期512us,外部中断上升沿触发。
  2. 当第一个上升沿到来时,对计数器清理操作,此时定时器中断就会重新对这个计数器不断计数。
  3. 当第二个上升到来时,就可很快算出两个上升沿之间的间隔时间,间隔时间=cnt*512 us,从而获得周期,间而获取频率。

二、具体实现

2.1 封装结构

typedef  struct GET_FRE
{u32 cnt;        /*计数*/u32  cnt_value; /*脉冲计数值*/u16 timeout;   /*超时*/u16 fre;       /*频率*/u8  flag;
};

2.2 瑞萨单片机定时中断函数

CS+ 中配置定时间隔时间

配置好后,点击生成代码即可

注意:定时器周期512us

__interrupt static void r_tau0_channel0_interrupt(void)
{get_fre.cnt++;  /*******2s 内未检测到电平跳变则清零********/get_fre.timeout++;     if(get_fre.timeout>=3906){get_fre.timeout=0;get_fre.fre=0;get_fre.cnt=0;}
}

2.3 瑞萨单片机外部中断函数

配置外中断,上升沿触发,最高优先级,最后点击生成代码即可

__interrupt static void r_intc0_interrupt(void)
{get_fre.cnt_value=get_fre.cnt;get_fre.cnt=0;   get_fre.timeout=0;get_fre.flag=1;
}

2.4 例子

  if(get_fre.flag){get_fre.flag=0;/*频率f=1/t get_fre.cnt_value<<9 =计数值*512us =周期  此时单位是 us,也就是MHzf=1000000/t,1 MHz =1000 000 Hz*/  get_fre.fre =(10000000/(get_fre.cnt_value<<9)); //hz  为提高精度比真数据扩大10 }

2.5 图片

注意:实际程序中加了滤波算法

单片机采集结果:74.9Hz

示波器采集结果:75.08Hz

单片机采集结果:108.3Hz

示波器采集结果:108.2Hz

瑞萨单片机之外部中断实现频率采集(三)相关推荐

  1. 瑞萨e2studio(15)----外部中断定时器配置输入捕获测量频率

    瑞萨e2studio.15--外部中断&定时器配置输入捕获测量频率 概述 视频教学 csdn课程 完整代码下载 样品申请 硬件准备 开发板 新建工程 工程模板 保存工程路径 芯片配置 工程模板 ...

  2. 瑞萨单片机之定时器中断实现数码管动态扫描(四)

    目录 一.实现原理 二.具体实现 三.例子 一.实现原理 数码管的驱动方式很简单,图中的A B C D E F G Dp (8个段 含点)分别代表的数码管的每个段(笔画),需要显示什么就把相应的段点亮 ...

  3. 【瑞萨RA_FSP】外部中断

    文章目录 一.外部引脚中断 二.中断过程 三.按键外部中断 一.外部引脚中断 1. ICU框图 根据ICU的功能框图可以知道,首先需要配置IRQCR寄存器(IRQ Control Register,I ...

  4. 瑞萨单片机之电压检测器(低压复位)(六)

    目录 一.电压检测器的作用 二.电压检测器如何使用 一.电压检测器的作用 顾名思义,电压检测器就是用来检测电压的,电压检测器将检测到的电压与电源电压进行比较,比较完成后执行相应的动作:复位.复位&am ...

  5. 33、基于CACX和R7F0C004M的瑞萨单片机入门教程

    代码资源下载:https://download.csdn.net/download/BaoTTing/58444918 一.开发环境介绍 CS+ for CACX: 瑞萨单片机开发环境,已经停止更新, ...

  6. 瑞萨单片机CAN口复用唤醒

    瑞萨单片机CAN口复用唤醒 瑞萨单片机睡眠模式 CAN总线唤醒的原理 外部GPIO口唤醒步骤 注意事项 目前笔者在公司实习接触到了瑞萨单片机 经过了一个月的踩坑已经对瑞萨单片机的开发有了一定的了解,现 ...

  7. 瑞萨单片机-硬件I2C从设备

    开发环境 1.e2 studio 2.R5F1115AxFL 概述 1.网上关于I2C从机的资料很少,在这里分享下我在瑞萨单片机上实现I2C从机,根据主机发来的数据,从机返回或者保存数据 2.R5F1 ...

  8. 瑞萨单片机C语言,瑞萨单片机学习笔记(1)基本配置

    根据自己的芯片家族选择不同的代码编辑工具及仿真工具 对应78K0系列单片机,推荐的是cubeSuite+集成开发环境,具体使用可以看帮助手册. 有接触过PIC.STC的单片机,瑞萨单片机有其独特的地方 ...

  9. 瑞萨单片机之开发环境的搭建(一)

    目录 一.开发环境搭建 二.开发环境界面设置 三.新建一个demo 四.软件使用(使用发现的功能及坑) 4.1 编译代码后显示当前程序大小 4.2.代码缩进 4.3 代码屏蔽 瑞萨单片机开发环境有三种 ...

最新文章

  1. R语言使用dplyr将特定的数据列移动到最前面、使用dplyr将特定数据列移动到另一指定数据列的后面、使用dplyr将特定数据列移动到另一指定数据列的前面
  2. 人脸识别技术新突破,网友:匪徒带着面罩呢?
  3. js获取网页面的高度和宽度
  4. python文件处理练习
  5. Codeup墓地-问题 D: 继续畅通工程
  6. IOS基础之仿酷狗音乐第1天
  7. 解读阿里巴巴集团的“大中台、小前台”组织战略
  8. CouchDB与Couchbase:区别何在,Membase又将如何?
  9. 在centos服务器上安装配置私人邮箱,并在web端管理邮件
  10. Go语言标准库之strconv
  11. kafka to mysql_Flink实现Kafka到Mysql的Exactly-Once
  12. macbook配置java环境变量_配置java环境变量
  13. Workstation-CentOS-XShell-YUM源 JAVA大数据Week5-DAY1-linux
  14. 字符编码:ASCII,Unicode和UTF-8
  15. 月关“历史网络小说第一人”:第四届橙瓜网络文学奖十佳历史大神
  16. spring boot中小学餐饮配送系统 毕业设计-附源码645661
  17. 数据结构与算法之链表结构寻找p、q最近的公共祖先
  18. C++之相对路径转绝对路径
  19. C#-快递鸟电子面单打印API
  20. IPV6重复地址检测(DAD)

热门文章

  1. ExtAspNet v3.1.4
  2. 万应案例精选|栽好梧桐树,引来凤凰栖,万应工场成产业园区智慧升级领跑“利器”
  3. 基于蒙特卡洛法的概率潮流 以IEEE33节点的电网为研究对象 建立了光伏和风电的概率出力模型
  4. 3-5年的电子工程师最容易遇到的4个瓶颈是什么?
  5. Cesium缓冲区分析
  6. 基于C#的ArcEngine二次开发教程(12):缓冲区分析
  7. 外贸企业邮箱在选择上的5大考虑因素
  8. 7N60-ASEMI高压MOS管7N60
  9. 面试官:建造者模式是什么?
  10. 车路协同 智能路侧设备网络安全接入技术要求