Renesas MCU使用定时器生成PWM

2024-06-05 08:04

本文主要是介绍Renesas MCU使用定时器生成PWM,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

目录

概述

1 软硬件环境

1.1 软件版本信息

1.2 硬件接口

3 FSP配置项目

3.1 配置项目

3.2  生成项目架构

4 实现PWM功能

4.1 功能代码实现

4.2 函数源代码

5 测试

5.1 编写测试代码

5.2 运行功能


概述

本文主要介绍使用Renesas 提供的FSP工具配置参数实现PWM功能,内容包括参数配置,PWM功能代码的实现,以及如何生成项目工程,还使用逻辑分析仪捕捉波形,以验证PWM波形的准确性。

1 软硬件环境

1.1 软件版本信息

软硬件信息版本信息
Renesas MCUR7FA4M2AD3C
KeilMDK ARM 5.38
FSP 版本4.0.0
调试工具:st-linkST-LINK/V2-1

1.2 硬件接口

使用P600作为PWM输出端口-1

使用P600作为PWM输出端口-2

3 FSP配置项目

3.1 配置项目

Keil中已经配置了FSP的链接,在Keil中直接打开FSP进行参数配置

1) 配置时钟

根据板卡的实际时钟的数值配置其工作的时钟,笔者使用的板卡时钟为12M Hz,配置参数如下

2)创建定时器

1)选择定时器的类型

2)使能Output端口

3)配置定时器的基本参数,笔者选择的周期为100ms

3)使能IO接口

1)选择对应的IO接口

2)配置对应的IO的Output属性

4) 配置PWM的占空比,并使能IO

3.2  生成项目架构

 配置完成参数后,就可以使用FSP的组件,完成项目生成任务。

 使用Keil打开项目后,可以看见系统已经生成了一下代码,其功能如下:

代码84行: 配置定时器的周期,PWM占空比等信息

代码85行:配置输出通道

4 实现PWM功能

4.1 功能代码实现

1)初始化定时器和设置输出接口

代码第13行:初始化定时器

代码第15行:启动定时器

代码第17行:设置GPT_IO_PIN_GTIOCA 对应的输出占空比为80%

代码第18行:设置GPT_IO_PIN_GTIOCB对应的输出占空比为40%

2)设置端口输出和占空比函数

代码第30行:获取当前定时器的参数

代码第34行:计算定时器的计数

代码第37行:设置参数

4.2 函数源代码

 创建bsp_pwm.c文件,编写如下代码

 /*FILE NAME  :  bsp_pwm.cDescription:  generate pwm by timerAuthor     :  tangmingfei2013@126.comDate       :  2024/06/03*/
#include "bsp_pwm.h"void GPT_PWM_Init(void)
{R_GPT_Open(&g_timer0_ctrl, &g_timer0_cfg);R_GPT_Start(&g_timer0_ctrl);GPT_PWM_SetDuty(80, GPT_IO_PIN_GTIOCA);GPT_PWM_SetDuty(40, GPT_IO_PIN_GTIOCB);
}void GPT_PWM_SetDuty(uint8_t duty, uint32_t pin)
{timer_info_t info;uint32_t current_period_counts;uint32_t duty_cycle_counts;if (duty > 100)duty = 100; R_GPT_InfoGet(&g_timer0_ctrl, &info);current_period_counts = info.period_counts;duty_cycle_counts = (uint32_t)(((uint64_t) current_period_counts * duty) / 100);R_GPT_DutyCycleSet(&g_timer0_ctrl, duty_cycle_counts, pin);
}/* End of this file */

5 测试

5.1 编写测试代码

编写完成代码后,在hal_entry.c中实现测试代码

5.2 运行功能

编译代码,下载代码至板卡中,使用逻辑分析仪查看波形

1)GPT_IO_PIN_GTIOCA:输出80%

2)GPT_IO_PIN_GTIOCB:输出40%

这篇关于Renesas MCU使用定时器生成PWM的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1032520

相关文章

使用Python构建一个Hexo博客发布工具

《使用Python构建一个Hexo博客发布工具》虽然Hexo的命令行工具非常强大,但对于日常的博客撰写和发布过程,我总觉得缺少一个直观的图形界面来简化操作,下面我们就来看看如何使用Python构建一个... 目录引言Hexo博客系统简介设计需求技术选择代码实现主框架界面设计核心功能实现1. 发布文章2. 加

Python如何自动生成环境依赖包requirements

《Python如何自动生成环境依赖包requirements》:本文主要介绍Python如何自动生成环境依赖包requirements问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑... 目录生成当前 python 环境 安装的所有依赖包1、命令2、常见问题只生成当前 项目 的所有依赖包1、

shell编程之函数与数组的使用详解

《shell编程之函数与数组的使用详解》:本文主要介绍shell编程之函数与数组的使用,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录shell函数函数的用法俩个数求和系统资源监控并报警函数函数变量的作用范围函数的参数递归函数shell数组获取数组的长度读取某下的

使用Python开发一个带EPUB转换功能的Markdown编辑器

《使用Python开发一个带EPUB转换功能的Markdown编辑器》Markdown因其简单易用和强大的格式支持,成为了写作者、开发者及内容创作者的首选格式,本文将通过Python开发一个Markd... 目录应用概览代码结构与核心组件1. 初始化与布局 (__init__)2. 工具栏 (setup_t

Python虚拟环境终极(含PyCharm的使用教程)

《Python虚拟环境终极(含PyCharm的使用教程)》:本文主要介绍Python虚拟环境终极(含PyCharm的使用教程),具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,... 目录一、为什么需要虚拟环境?二、虚拟环境创建方式对比三、命令行创建虚拟环境(venv)3.1 基础命令3

Python Transformer 库安装配置及使用方法

《PythonTransformer库安装配置及使用方法》HuggingFaceTransformers是自然语言处理(NLP)领域最流行的开源库之一,支持基于Transformer架构的预训练模... 目录python 中的 Transformer 库及使用方法一、库的概述二、安装与配置三、基础使用:Pi

关于pandas的read_csv方法使用解读

《关于pandas的read_csv方法使用解读》:本文主要介绍关于pandas的read_csv方法使用,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录pandas的read_csv方法解读read_csv中的参数基本参数通用解析参数空值处理相关参数时间处理相关

使用Node.js制作图片上传服务的详细教程

《使用Node.js制作图片上传服务的详细教程》在现代Web应用开发中,图片上传是一项常见且重要的功能,借助Node.js强大的生态系统,我们可以轻松搭建高效的图片上传服务,本文将深入探讨如何使用No... 目录准备工作搭建 Express 服务器配置 multer 进行图片上传处理图片上传请求完整代码示例

SpringBoot条件注解核心作用与使用场景详解

《SpringBoot条件注解核心作用与使用场景详解》SpringBoot的条件注解为开发者提供了强大的动态配置能力,理解其原理和适用场景是构建灵活、可扩展应用的关键,本文将系统梳理所有常用的条件注... 目录引言一、条件注解的核心机制二、SpringBoot内置条件注解详解1、@ConditionalOn

Python中使用正则表达式精准匹配IP地址的案例

《Python中使用正则表达式精准匹配IP地址的案例》Python的正则表达式(re模块)是完成这个任务的利器,但你知道怎么写才能准确匹配各种合法的IP地址吗,今天我们就来详细探讨这个问题,感兴趣的朋... 目录为什么需要IP正则表达式?IP地址的基本结构基础正则表达式写法精确匹配0-255的数字验证IP地