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

  • 概述
  • 视频教学
  • csdn课程
  • 完整代码下载
  • 样品申请
  • 硬件准备
  • 开发板
  • 新建工程
  • 工程模板
  • 保存工程路径
  • 芯片配置
  • 工程模板选择
  • 时钟设置
  • 时钟配置
  • uart配置
  • uart属性配置
  • 回调函数user_uart_callback ()
  • 设置e2studio堆栈
  • e2studio的重定向printf设置
  • e2studio的重定向printf设置
  • printf输出重定向到串口
  • 选择定时器
  • PWM(脉冲宽度调制)
  • 定时器配置
  • 定时器输出PWM配置
  • 定时器做计数器配置
  • IRQ配置
  • IRQ属性配置
  • 工程文件
  • 占空比与频率计算
  • 回调函数exit4_callback()
  • 完整代码
  • 最后
  • 结果演示

概述

本篇文章主要介绍如何使用e2studio对瑞萨单片机外部中断进行输入捕获,同时通过定时器计算其频率和占空比,同时输入一个PWM验证是否正确。
需要样片的可以加Q_QUN申请:6_15061293。

视频教学

听不到声音的请点击跳转进行观看。
https://www.bilibili.com/video/BV1XP4y1o7nJ/

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

csdn课程

csdn课程更加详细。
https://edu.csdn.net/course/detail/36131

完整代码下载

https://download.csdn.net/download/qq_24312945/87017450

样品申请

https://www.wjx.top/vm/wBbmSFp.aspx#

硬件准备

首先需要准备一个开发板,这里我准备的是芯片型号R7FAM2AD3CFP的开发板:

开发板

新建工程

工程模板

保存工程路径

芯片配置

本文中使用R7FA4M2AD3CFP来进行演示。

工程模板选择

时钟设置

开发板上的外部高速晶振为12M,需要修改XTAL为12M.

时钟配置

开发板上的外部高速晶振为12M,需要修改XTAL为12M.

uart配置

点击Stacks->New Stack->Driver->Connectivity -> UART Driver on r_sci_uart。

uart属性配置

回调函数user_uart_callback ()

发送完毕可以用UART_EVENT_TX_COMPLETE进行判断。

volatile bool uart_send_complete_flag = false;
void user_uart_callback (uart_callback_args_t * p_args)
{if(p_args->event == UART_EVENT_TX_COMPLETE){uart_send_complete_flag = true;}
}

设置e2studio堆栈

e2studio的重定向printf设置

e2studio的重定向printf设置

C++ 构建->设置->GNU ARM Cross C Linker->Miscellaneous去掉Other linker flags中的 “–specs=rdimon.specs”

printf输出重定向到串口

打印最常用的方法是printf,所以要解决的问题是将printf的输出重定向到串口,然后通过串口将数据发送出去。
注意一定要加上头文件#include <stdio.h>

#ifdef __GNUC__//串口重定向#define PUTCHAR_PROTOTYPE int __io_putchar(int ch)
#else#define PUTCHAR_PROTOTYPE int fputc(int ch, FILE *f)
#endifPUTCHAR_PROTOTYPE
{err = R_SCI_UART_Write(&g_uart9_ctrl, (uint8_t *)&ch, 1);if(FSP_SUCCESS != err) __BKPT();while(uart_send_complete_flag == false){}uart_send_complete_flag = false;return ch;
}int _write(int fd,char *pBuffer,int size)
{for(int i=0;i<size;i++){__io_putchar(*pBuffer++);}return size;
}

选择定时器

RA MCU 有两个定时器外设:通用 PWM 定时器 (GPT) 和异步通用定时器 (AGT)。在它们之间进行选择时,请考虑以下因素:

时钟源在这设置的是PCKLD 50M 。
可以通过修改该频率来修改占空比频率。

PWM(脉冲宽度调制)

脉冲宽度调制是一种模拟控制方式,根据相应载荷的变化来调制晶体管基极或MOS管栅极的偏置,来实现晶体管或MOS管导通时间的改变,从而实现开关稳压电源输出的改变。这种方式能使电源的输出电压在工作条件变化时保持恒定,是利用微处理器的数字信号对模拟电路进行控制的一种非常有效的技术。脉冲宽度调制是利用微处理器的数字输出来对模拟电路进行控制的一种非常有效的技术,广泛应用在从测量、通信到功率控制与变换的许多领域中。
在瑞萨RA系列MCU中有两种定时器,一种是通用PWM定时器GPT,另外一种是异步通用定时器AGT。
频率=主频/period
+占空比=cycle/period

定时器配置

点击Stacks->New Stack->Driver->Timers->Timer Driver on r_gpt。

定时器输出PWM配置

设置PWM输出,输出频率为1kHz,占空比为80%。

定时器做计数器配置

点击Stacks->New Stack->Driver->Timers->Timer Driver on r_gpt。

设置定时器制作计数器配置,由于不需要对上升沿和下降沿进行捕获,故只需配置为计数模式即可。

IRQ配置

点击Stacks->New Stack->Driver->Input -> External IRQ Driver on r_icu 。

IRQ属性配置

由于需要计算频率和占空比,故需要设置触发方式为双边触发的模式。

工程文件

打开hal_entry.c,可以看到在hal_entry函数内,注释着可以在这输入自己的代码。

占空比与频率计算


占空比=(t1-t0)/(t2-t0)
频率=(t2-t0)/时钟频率= =(t2-t0)/50M

回调函数exit4_callback()

由于设置了上升沿和下降沿都会进入回调函数中,故需要判断引脚电平来判断是属于高电平还是低电平。

bsp_io_level_t p_port_value_port_111;
/*读取端口电平状态,如果是低电平则发生的是下降沿,高电平则是上升沿*/
R_IOPORT_PinRead(&g_ioport_ctrl, BSP_IO_PORT_01_PIN_11, &p_port_value_port_111);

周期需要2个上升沿去判断,设定第一个上升沿time_flag由0变为1,则第二个上升沿则为time_flag由1变为0.
计算周期需要注意定时器周期计数器溢出,若存在time_flag= 0->1读取的计数值大于time_flag= 1->0读取的计数值,则一个周期为g_capture_num=current_period_counts+g_capture_num1-g_capture_num0。
若没有溢出,则g_capture_num=g_capture_num1-g_capture_num0。


频率则需要计算下降沿到time_flag=1的一个周期,在除以g_capture_num(48M)。
计算频率需要注意定时器周期计数器溢出,若存在time_flag= 0->1读取的计数值大于g_capture_duty_cycle_num0读取的计数值,则一个周期为g_capture_num=current_period_counts+g_capture_num1-g_capture_num0。
若没有溢出,则g_capture_duty_cycle_num=g_capture_duty_cycle_num0-g_capture_num0。

完整代码

https://download.csdn.net/download/qq_24312945/86509099

最后

以上的代码会在Q_QUN里分享。Q_QUN:615061293。
或者关注『记帖』,持续更新文章和学习资料!

结果演示

频率1K 占空比80%

串口打印。

频率4K 占空比30%


串口打印。

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

  1. 瑞萨单片机之外部中断实现频率采集(三)

    很多低端MCU没有像STM32 那样拥有强大脉冲捕获测频率,那么MCU只能依靠自身有的资源来实现这个功能,比较通用的方法是使用了外部中断+定时器来实现,该方法经过我在实际项目中的使用来看,频率50/6 ...

  2. 瑞萨e2studio(15)----Code FlashData Flash读写

    瑞萨e2studio.15--Code Flash&Data Flash读写 概述 硬件准备 新建工程 工程模板 保存工程路径 芯片配置 工程模板选择 FLASH配置 FLASH属性配置 设置 ...

  3. 【瑞萨RA_FSP】外部中断

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

  4. 瑞萨e2studio(19)----RTC时钟日历闹钟周期性中断

    瑞萨e2studio.19--RTC时钟日历&闹钟&周期性中断 概述 视频教学 csdn课程 样品申请 完整代码下载 硬件准备 新建工程 工程模板 保存工程路径 芯片配置 工程模板选择 ...

  5. 瑞萨e2studio(8)----PWM

    瑞萨e2studio.8--PWM 概述 视频教学 csdn课程 样品申请 硬件准备 新建工程 工程模板 保存工程路径 芯片配置 工程模板选择 时钟设置 选择定时器 开发板 PWM(脉冲宽度调制) 定 ...

  6. 瑞萨e2studio(17)----IIC,12864OLED移植

    瑞萨e2studio.17--IIC,12864OLED移植 概述 视频教学 csdn课程 样品申请 完整代码下载 硬件准备 新建工程 工程模板 保存工程路径 芯片配置 工程模板选择 时钟配置 IIC ...

  7. 瑞萨e2studio(16)----基于DTC的多通道ADC采集

    瑞萨e2studio.16--基于DTC的多通道ADC采集 概述 视频教学 csdn课程 样品申请 完整代码下载 硬件准备 开发板 新建工程 工程模板 保存工程路径 芯片配置 工程模板选择 uart配 ...

  8. 瑞萨e2studio(7)----ADC通过单次扫描多通道方式采样

    瑞萨e2studio.7--ADC通过单次扫描多通道方式采样 概述 视频教学 csdn课程 样品申请 硬件准备 开发板 新建工程 工程模板 保存工程路径 芯片配置 工程模板选择 时钟设置 UART配置 ...

  9. 瑞萨e2studio(22)----移植兆易创新SPI Nor Flash之GD25Q64Flash

    瑞萨e2studio.22--移植兆易创新SPI Nor Flash之GD25Q64Flash spi概述 视频教学 csdn课程 样品申请 完整代码下载 硬件准备 新建工程 工程模板 保存工程路径 ...

最新文章

  1. copy 修改时间_DAY5-step3 Python用shutil.copy(), shutil.copystat()复制文件
  2. 【大会】AI向多媒体各细分场景渗透
  3. 【SpringMVC】SpringMVC 对 Date 类型转换
  4. kill 和 pgrep 和 pidof 和 awk 和 pkill 和 killall
  5. RN做的Android应用反编译,macOS Catalina配置Android反编译三件套 apktool/dex2jar/enjarify/jd-gui...
  6. linux+mysql+导出备份_Linux系统MySQL备份的导入导出的具体分析
  7. 制作 docker 镜像
  8. CSS自定义文件上传按钮
  9. 【华为云技术分享】【论文阅读】增量学习近期进展及未来趋势预测
  10. Springboot响应处理
  11. TensorFlow 笔记 (五)自定义训练: 演示
  12. HTTP 请求消息头部实例:
  13. Python自动化键盘事件详解
  14. 视频直播声音不清晰的解决办法(小蜜蜂无线麦克风使用方式)
  15. 微信小程序-001-抽签功能-008-简单登录
  16. 点击密码框显示密码(点击密码框小眼睛可显示输入密码)
  17. scale与zoom的差异
  18. Python+pywin32批量读取带密码的Excel文件数据导出为CSV文件
  19. ssm基于web图书租售管理系统的设计与实现毕业设计源码161609
  20. voip是利用计算机网络,计算机三级网络技术VoIP概述

热门文章

  1. 【白板动画制作软件】万彩手影大师教程 | 声音编辑器
  2. 激光尺如何测量:逆向工程
  3. asp.net+sqlserver房屋中介管理信息系统
  4. 从串口驱动到Linux驱动模型,想转Linux的必会!
  5. 专精特新小巨人申报流程
  6. Happy May Day
  7. T270714 地鼠的远亲
  8. Es6-Es13使用方法及特性
  9. 设计模式相关内容介绍—UML
  10. POJ1222熄灯问题(枚举练习题)