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

相关文章

C语言中联合体union的使用

本文编辑整理自: http://bbs.chinaunix.net/forum.php?mod=viewthread&tid=179471 一、前言 “联合体”(union)与“结构体”(struct)有一些相似之处。但两者有本质上的不同。在结构体中,各成员有各自的内存空间, 一个结构变量的总长度是各成员长度之和。而在“联合”中,各成员共享一段内存空间, 一个联合变量

51单片机学习记录———定时器

文章目录 前言一、定时器介绍二、STC89C52定时器资源三、定时器框图四、定时器模式五、定时器相关寄存器六、定时器练习 前言 一个学习嵌入式的小白~ 有问题评论区或私信指出~ 提示:以下是本篇文章正文内容,下面案例可供参考 一、定时器介绍 定时器介绍:51单片机的定时器属于单片机的内部资源,其电路的连接和运转均在单片机内部完成。 定时器作用: 1.用于计数系统,可

Tolua使用笔记(上)

目录   1.准备工作 2.运行例子 01.HelloWorld:在C#中,创建和销毁Lua虚拟机 和 简单调用。 02.ScriptsFromFile:在C#中,对一个lua文件的执行调用 03.CallLuaFunction:在C#中,对lua函数的操作 04.AccessingLuaVariables:在C#中,对lua变量的操作 05.LuaCoroutine:在Lua中,

Vim使用基础篇

本文内容大部分来自 vimtutor,自带的教程的总结。在终端输入vimtutor 即可进入教程。 先总结一下,然后再分别介绍正常模式,插入模式,和可视模式三种模式下的命令。 目录 看完以后的汇总 1.正常模式(Normal模式) 1.移动光标 2.删除 3.【:】输入符 4.撤销 5.替换 6.重复命令【. ; ,】 7.复制粘贴 8.缩进 2.插入模式 INSERT

Lipowerline5.0 雷达电力应用软件下载使用

1.配网数据处理分析 针对配网线路点云数据,优化了分类算法,支持杆塔、导线、交跨线、建筑物、地面点和其他线路的自动分类;一键生成危险点报告和交跨报告;还能生成点云数据采集航线和自主巡检航线。 获取软件安装包联系邮箱:2895356150@qq.com,资源源于网络,本介绍用于学习使用,如有侵权请您联系删除! 2.新增快速版,简洁易上手 支持快速版和专业版切换使用,快速版界面简洁,保留主

如何免费的去使用connectedpapers?

免费使用connectedpapers 1. 打开谷歌浏览器2. 按住ctrl+shift+N,进入无痕模式3. 不需要登录(也就是访客模式)4. 两次用完,关闭无痕模式(继续重复步骤 2 - 4) 1. 打开谷歌浏览器 2. 按住ctrl+shift+N,进入无痕模式 输入网址:https://www.connectedpapers.com/ 3. 不需要登录(也就是

android 带与不带logo的二维码生成

该代码基于ZXing项目,这个网上能下载得到。 定义的控件以及属性: public static final int SCAN_CODE = 1;private ImageView iv;private EditText et;private Button qr_btn,add_logo;private Bitmap logo,bitmap,bmp; //logo图标private st

Toolbar+DrawerLayout使用详情结合网络各大神

最近也想搞下toolbar+drawerlayout的使用。结合网络上各大神的杰作,我把大部分的内容效果都完成了遍。现在记录下各个功能效果的实现以及一些细节注意点。 这图弹出两个菜单内容都是仿QQ界面的选项。左边一个是drawerlayout的弹窗。右边是toolbar的popup弹窗。 开始实现步骤详情: 1.创建toolbar布局跟drawerlayout布局 <?xml vers

C#中,decimal类型使用

在Microsoft SQL Server中numeric类型,在C#中使用的时候,需要用decimal类型与其对应,不能使用int等类型。 SQL:numeric C#:decimal

探索Elastic Search:强大的开源搜索引擎,详解及使用

🎬 鸽芷咕:个人主页  🔥 个人专栏: 《C++干货基地》《粉丝福利》 ⛺️生活的理想,就是为了理想的生活! 引入 全文搜索属于最常见的需求,开源的 Elasticsearch (以下简称 Elastic)是目前全文搜索引擎的首选,相信大家多多少少的都听说过它。它可以快速地储存、搜索和分析海量数据。就连维基百科、Stack Overflow、