0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

瑞萨RA8D1单片机输出PWM实现方法

瑞萨嵌入式小百科 来源:strongerHuang 2025-04-11 17:07 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

PWM:Pulse Width Modulation,脉冲宽度调制。

单片机实现PWM输出的方式有很多种,有通过IO延时翻转实现的,比如:

左右滑动查看完整内容

while(1)
{
IO口高电平
Delay延时
IO口低电平
Delay延时
}

2568822e-169b-11f0-9310-92fbcf53809c.png

也有通过定时器中断控制IO高低电平输出实现的。

定时器中断配置——>启动定时器——>响应中断,控制IO高低电平

当然,本文通过,瑞萨RA8D1单片机通用PWM定时器(GPT,General PWM Timer)输出PWM波形,这样既避免了占用CPU资源,又避免了误差(精度相对很高)。

下面手把手教大家基于e2studio环境下,实现RA8单片机输出PWM的方法。

准备工作

01下载并安装e2studio工具

下载地址,推荐瑞萨官方的GitHub:

e2studio工具

https://github.com/renesas/fsp/releases

我们这里基于Windows环境,安装exe文件,基本根据提示信息一路next即可。这里不再详述。

02准备RA8D1开发板

我们这里以瑞萨RA8D1单片机为例:

(当然,其实RA系列单片机也类似)

257efd38-169b-11f0-9310-92fbcf53809c.png

RA8单片机PWM输出方法

本文就瑞萨官方集成开发工具e2studio,它是瑞萨单片机一站式编程工具,只需要动动鼠标点一点就能创建一个单片机工程。

01打开e2studio创建PWM项目

259de428-169b-11f0-9310-92fbcf53809c.jpg

25a8b3e4-169b-11f0-9310-92fbcf53809c.png

我们命名项目名称为:RA8D1_PWM

25b59b18-169b-11f0-9310-92fbcf53809c.png

选择对应芯片型号:R7FA8D1BEC

25c551e8-169b-11f0-9310-92fbcf53809c.png

25d9b502-169b-11f0-9310-92fbcf53809c.png

25e84018-169b-11f0-9310-92fbcf53809c.png

25f4f772-169b-11f0-9310-92fbcf53809c.png

26028996-169b-11f0-9310-92fbcf53809c.png

只需要动动鼠标“点一点”,一个完整的工程就创建好了。

02配置工程

我们使用RA8D1单片机通用PWM定时器(General PWM Timer)GPT4,引脚P301输出PWM。

这里配置时钟、添加GPT模块以相关配置。

配置时钟:

GPT4使用PCLKD分频作为时钟源

26142e80-169b-11f0-9310-92fbcf53809c.png

配置引脚:

我们使用GPT4的P301作为PWM输出引脚。

262334d4-169b-11f0-9310-92fbcf53809c.png

新建定时器模块:

我们添加定时器模块并配置相关属性(配置常用参数,其实默认即可)。

26349666-169b-11f0-9310-92fbcf53809c.png

03添加源代码

我们这里简单添加一个gpt4模块(源代码文件),如图:

26425792-169b-11f0-9310-92fbcf53809c.png

bsp_gpt_pwm_output.c源代码:

左右滑动查看完整内容

#include"bsp_gpt_pwm_output.h"


/* GPT初始化函数 */
voidGPT_PWM_Init(void)
{
 /* 初始化 GPT 模块 */
 R_GPT_Open(&g_timer_gpt4_ctrl, &g_timer_gpt4_cfg);


   /* 启动 GPT 定时器 */
 R_GPT_Start(&g_timer_gpt4_ctrl);
}


/** 设置PWM占空比
  @param duty 占空比范围:0~100 %
*/
voidGPT_PWM_SetDuty(uint8_tduty)
{
 timer_info_tinfo;
 uint32_tcurrent_period_counts;
 uint32_tduty_cycle_counts;


 if(duty >100)
    duty =100;//限制占空比范围:0~100


 /* 获得GPT的信息 */
 R_GPT_InfoGet(&g_timer_gpt4_ctrl, &info);


   /* 获得计时器一个周期需要的计数次数 */
  current_period_counts = info.period_counts;


   /* 根据占空比和一个周期的计数次数计算GTCCR寄存器的值 */
  duty_cycle_counts = (uint32_t)(((uint64_t) current_period_counts * duty) /100);


 /* 最后调用FSP库函数设置占空比 */
 R_GPT_DutyCycleSet(&g_timer_gpt4_ctrl, duty_cycle_counts, GPT_IO_PIN_GTIOCB);
}

bsp_gpt_pwm_output.h头代码:

左右滑动查看完整内容

#ifndef__BSP_GPT_PWM_OUTPUT_H
#define__BSP_GPT_PWM_OUTPUT_H
#include"hal_data.h"


voidGPT_PWM_Init(void);


voidGPT_PWM_SetDuty(uint8_tduty);


#endif

我们这里只有两个简单函数,在我们代码中添加GPT_PWM_Init即可实现(配置中的)200KHz,占空比80%的PWM波形输出。

265469e6-169b-11f0-9310-92fbcf53809c.png

04演示效果

下图是我们配置200KHz,占空比80%的PWM波形:

2662791e-169b-11f0-9310-92fbcf53809c.png

根据源码,你能发现,我们只需要初始化(配置好)PWM输出,后面就不会占用CPU资源。

我们提供了一个简单的接口,修改占空比,如果需要根据需求修改占空比,我们调用一下接口即可。比如我们修改占空比为60%:

266fc9a2-169b-11f0-9310-92fbcf53809c.png

26808d14-169b-11f0-9310-92fbcf53809c.png

当然,更多参数,我们可以根据自己情况封装函数接口。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 单片机
    +关注

    关注

    6074

    文章

    45340

    浏览量

    663446
  • PWM
    PWM
    +关注

    关注

    116

    文章

    5847

    浏览量

    223784
  • 瑞萨
    +关注

    关注

    36

    文章

    22429

    浏览量

    89741
  • 中断
    +关注

    关注

    5

    文章

    912

    浏览量

    43561
  • 定时器
    +关注

    关注

    23

    文章

    3360

    浏览量

    121731
收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    基于电子RA8D1 MCU的USB和I2S数字音频应用解决方案

    今天给大家介绍一下上海觉鑫智能科技有限公司基于电子RA8D1 MCU的USB&I2S数字音频应用解决方案。
    的头像 发表于 04-30 14:47 2468次阅读
    基于<b class='flag-5'>瑞</b><b class='flag-5'>萨</b>电子<b class='flag-5'>RA8D1</b> MCU的USB和I2S数字音频应用解决方案

    使用RA8D1开发板实现人脸识别的应用演示

    随着科技的进步,人脸识别技术已逐渐成为一种主流的安全验证手段。它不依赖传统的密码,而是通过面部特征识别来验证身份,从而提升了安全性并带来了更大的便利性。本文将介绍如何通过RA8D1微控制器与Aizip人脸识别技术结合,
    的头像 发表于 10-14 10:58 3487次阅读
    使用<b class='flag-5'>瑞</b><b class='flag-5'>萨</b><b class='flag-5'>RA8D1</b>开发板<b class='flag-5'>实现</b>人脸识别的应用演示

    RA8D1单片机IO中断配置实现方法

    本文为结合e2 studio工具,以及CPKCOR_RA8D1B评估板,给大家讲述RA8D1
    的头像 发表于 04-09 15:05 1516次阅读
    <b class='flag-5'>瑞</b><b class='flag-5'>萨</b><b class='flag-5'>RA8D1</b><b class='flag-5'>单片机</b>IO中断配置<b class='flag-5'>实现</b><b class='flag-5'>方法</b>

    RA8D1 CPK开发板试用】开箱与点灯

    一、前言 RA8D1 CPK开发板是业界首款基于Arm Cortex-M85内核的32位图形微控制器,板载资源丰富,性能优越。运行在480MHz的主频下可实现超过3000 Core
    发表于 10-08 01:04

    RA8D1 CPK开发板】RA8D1移植ThreadX操作系统

    首先感谢[RA生态工作室]( RA MCU 生态社区)提供的
    发表于 10-20 20:22

    G13单片机PWM输出例程相关资料下载

    G13单片机PWM输出例程
    发表于 04-12 10:39 19次下载

    电子宣布推出RA8D1微控制器(MCU)产品群

    2023年12月12日,电子宣布推出RA8D1微控制器(MCU)产品群。RA8D1产品群作为
    的头像 发表于 12-15 15:58 1867次阅读
    <b class='flag-5'>瑞</b><b class='flag-5'>萨</b>电子宣布推出<b class='flag-5'>RA8D1</b>微控制器(MCU)产品群

    使用e² studio FSP基于RA2E1定时器配置PWM输出

    使用e² studio FSP基于RA2E1定时器配置PWM输出
    的头像 发表于 08-01 00:13 1661次阅读
    使用<b class='flag-5'>瑞</b><b class='flag-5'>萨</b>e² studio FSP基于<b class='flag-5'>RA2E1</b>定时器配置<b class='flag-5'>PWM</b><b class='flag-5'>输出</b>

    基于电子RA系列的野火耀阳RA8D1开发板产品简介

    野火耀阳RA8D1开发板是一款功能强大的开发板,适用于各种嵌入式应用开发。它采用电子的RA系列R7FA8D1BHECBD微控制器作为主控
    的头像 发表于 05-29 14:19 2035次阅读
    基于<b class='flag-5'>瑞</b><b class='flag-5'>萨</b>电子<b class='flag-5'>RA</b>系列的野火耀阳<b class='flag-5'>RA8D1</b>开发板产品简介

    RA8D1试用活动】RA8D1B-CPKCOR开发板移植linux

    RA8D1试用活动】RA8D1B-CPKCOR开发板移植linux
    的头像 发表于 11-16 01:02 1430次阅读
    【<b class='flag-5'>RA8D1</b>试用活动】<b class='flag-5'>RA8D1</b>B-CPKCOR开发板移植linux

    RA8D1加密引擎功能体验和实践

    本次实践完成了RA8D1芯片AES密钥封装和芯片上加解密功能验证
    的头像 发表于 11-23 01:01 1424次阅读
    <b class='flag-5'>RA8D1</b>加密引擎功能体验和实践

    RA8系列教程 | 基于 Keil 开发 RA8单片机

    本文结合Cortext-M85单片机RA8D1、Keil MDK,以及自家的代码初始化工
    的头像 发表于 04-22 17:41 1050次阅读
    <b class='flag-5'>瑞</b><b class='flag-5'>萨</b><b class='flag-5'>RA8</b>系列教程 | 基于 Keil 开发 <b class='flag-5'>RA8</b><b class='flag-5'>单片机</b>

    RA8系列教程 | RA8 开发环境搭建,并点亮一个LED

    今天就给大家讲讲基于Cortex-M85内核RA8单片机快速上手指南。
    的头像 发表于 06-04 17:32 1464次阅读
    <b class='flag-5'>瑞</b><b class='flag-5'>萨</b><b class='flag-5'>RA8</b>系列教程 | <b class='flag-5'>瑞</b><b class='flag-5'>萨</b> <b class='flag-5'>RA8</b> 开发环境搭建,并点亮一个LED

    RA8系列教程 | RA8基于e2s实现RTC实时时钟功能

    本文结合e2 studio开发环境、RA8D1单片机给大家描述RTC这个模块的使用方法
    的头像 发表于 05-13 17:07 1026次阅读
    <b class='flag-5'>瑞</b><b class='flag-5'>萨</b><b class='flag-5'>RA8</b>系列教程 | <b class='flag-5'>RA8</b>基于e2s<b class='flag-5'>实现</b>RTC实时时钟功能

    【有奖评测 】最强Cortex-M85单片机RA8D1套件(显示屏+摄像头)免费评测

    RA8D1套件测评,带显示屏,带摄像头,支持MIPI-DSI显示输出接口。板上除了实现RA8D1
    的头像 发表于 09-02 08:04 646次阅读
    【有奖评测 】最强Cortex-M85<b class='flag-5'>单片机</b>!<b class='flag-5'>RA8D1</b>套件(显示屏+摄像头)免费评测