本文主要是介绍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 MCU | R7FA4M2AD3C |
Keil | MDK ARM 5.38 |
FSP 版本 | 4.0.0 |
调试工具:st-link | ST-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的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!