Renesas R7FA8D1BH (Cortex®-M85)的PWM控制小车

目录

概述

1 软硬件

1.1 软硬件环境信息

1.2 开发板信息

1.3 调试器信息

2 硬件架构

2.1 硬件框架结构

2.2 小车控制原理

3 软件功能实现

3.1 FSP配置参数

3.2 代码实现

3.3 源代码文件


源代码下载地址:

https://www.firebbs.cn/forum.php?mod=viewthread&tid=37943

详细设计文档:

https://zhuanlan.zhihu.com/p/852031299

概述

本文主要介绍Renesas R7FA8D1BH (Cortex®-M85)的PWM控制小车,包括系统实现的框架结构,小车运行方向的控制实现原理,还使用FSP配置PWM参数,实现小车运行速度和方向的控制功能。

1 软硬件

1.1 软硬件环境信息

软硬件信息版本信息
Renesas MCUR7FA8D1BH
KeilMDK ARM 5.38
FSP 版本5.3.0
调试工具:N32G45XVL-STBDAP-LINK

1.2 开发板信息

笔者选择使用野火耀阳开发板_瑞萨RA8,该板块的主控MCU为R7FA8D1BHECBD,7FA8D1BHECBD的内核为ARM Contex-M85。

1.3 调试器信息

对于R7FA8D1BHECBD芯片,其使用的内核为Cortex®-M85 Core, ST-LINK-V2或者J-LINK-V9不支持下载和调试功能。笔者经过多次尝试,发现N32G45XVL-STB板卡上自带的DAP-LINK可以下载和调试R7FA8D1BHECBD。

下图为N32G45XVL-STB开发板实物图:

2 硬件架构

2.1 硬件框架结构

PWM控制小车接口介绍

左侧车轮控制:

1) 使用GPT1生成PWM控制P105接口

2) 使用GPT2生成PWM控制P102接口

右侧车轮控制:

1) 使用GPT6生成PWM控制PA11接口

1) 使用GPT4生成PWM控制P804接口

系统工作框架结构如下:

2.2 小车控制原理

1)前进功能:

P105:输出PWM

P102:停止输出PWM

PA11:输出PWM

P804:停止输出PWM

2)后退功能

P105:停止输出PWM

P102:输出PWM

PA11:停止输出PWM

P804:输出PWM

3)左转功能

P105:停止输出PWM

P102:输出PWM

PA11:输出PWM

P804:停止输出PWM

4)右转功能

P105:输出PWM

P102:停止输出PWM

PA11:停止输出PWM

P804:输出PWM

3 软件功能实现

3.1 FSP配置参数

1)配置GPT1参数

2)配置GPT2参数 

3)配置GPT6参数  

 4)配置GPT4参数  

3.2 代码实现

在3.1步完成参数配置之后,就可以生成PWM的配置代码,并编写功能代码

1)PWM初始化函数

代码21行:初始化timer1

代码23行:停止PWM输出

代码25行:设置占空比

代码28行:初始化timer2

代码29行:停止PWM输出

代码31行:设置占空比

代码34行:初始化timer3

代码36行:停止PWM输出

代码37行:设置占空比

代码40行:初始化timer4

代码42行:停止PWM输出

代码43行:设置占空比

2)设置占空比函数

代码57行: 获取当前PWM的配置参数

代码64行:设置占空比

 

3.3 源代码文件

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

 /*FILE NAME  :  bsp_pwm.cDescription:  pwm interfaceAuthor     :  tangmingfei2013@126.comDate       :  2024/09/22*/
#include <string.h>
#include <stdio.h>
#include <stdbool.h>
#include "bsp_pwm.h"
#include "hal_data.h"#define INIT_PWM      0
#define MAX_VALUE     100void pwm_init( void )
{// timer 1   GPT_IO_PIN_GTIOCAR_GPT_Open(&g_timer1_ctrl, &g_timer1_cfg);R_GPT_Stop(&g_timer1_ctrl);/* Set the calculated duty cycle. */pwm_SetDuty(&g_timer1_ctrl,INIT_PWM, GPT_IO_PIN_GTIOCA);// timer 2   GPT_IO_PIN_GTIOCBR_GPT_Open(&g_timer2_ctrl, &g_timer2_cfg);R_GPT_Stop(&g_timer2_ctrl);// set duty pwm_SetDuty(&g_timer2_ctrl,INIT_PWM, GPT_IO_PIN_GTIOCB); // timer 3   GPT_IO_PIN_GTIOCA R_GPT_Open(&g_timer3_ctrl, &g_timer3_cfg);// set duty pwm_SetDuty( &g_timer3_ctrl,INIT_PWM, GPT_IO_PIN_GTIOCA);R_GPT_Stop(&g_timer3_ctrl);// timer 4   GPT_IO_PIN_GTIOCA R_GPT_Open(&g_timer4_ctrl, &g_timer4_cfg);// set duty pwm_SetDuty( &g_timer4_ctrl,INIT_PWM, GPT_IO_PIN_GTIOCA);R_GPT_Stop(&g_timer4_ctrl);
}void pwm_SetDuty( timer_ctrl_t * const p_ctrl, uint8_t duty, uint32_t pin)
{fsp_err_t  err;timer_info_t info;uint32_t current_period_counts;uint32_t duty_cycle_counts;uint8_t dutyVal;if (duty > 100)duty = 100; R_GPT_InfoGet(p_ctrl, &info);current_period_counts = info.period_counts;dutyVal = MAX_VALUE - duty;duty_cycle_counts = (uint32_t)(((uint64_t) current_period_counts * dutyVal) / 100);err = R_GPT_DutyCycleSet(p_ctrl, duty_cycle_counts, pin);assert(FSP_SUCCESS == err);
}/* End of this file */

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/443416.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

社工字典生成工具 —— CeWL 使用手册

GitHub - digininja/CeWL: CeWL is a Custom Word List GeneratorCeWL is a Custom Word List Generator. Contribute to digininja/CeWL development by creating an account on GitHub.https://github.com/digininja/CeWL/ 0x01&#xff1a;CeWL 简介 CeWL&#xff08;Cust…

MySQL 联合索引底层存储结构及索引查找过程解读

前言 大家好&#xff0c;我是 Lorin &#xff0c;联合索引&#xff08;Composite Index&#xff09;又称复合索引&#xff0c;它包括两个或更多列。与单列索引不同&#xff0c;联合索引可以覆盖多个列&#xff0c;这有助于加速复杂查询和过滤条件的检索。联合索引的列顺序非常…

从零开始学cv-17:图像绘制基本图形

文章目录 前言一、绘制直线与箭头二、绘制矩形三、绘制圆形椭圆形 前言 随着计算机视觉技术的不断发展&#xff0c;OpenCV作为一款强大的开源图像处理库&#xff0c;受到了越来越多开发者的喜爱。本文将带领读者走进OpenCV的世界&#xff0c;从基础入手&#xff0c;详细介绍如…

冷热数据分离

优质博文&#xff1a;IT-BLOG-CN 一、背景 随着机票业务的快速发展&#xff0c;订单量持续增长对业务性能带来影响&#xff0c;需要进行冷热数据分离。目前机票订单模块主要使用Mysql(InnoDB)作为数据库存储&#xff0c;历史订单信息状态修改频率低并占用大量数据库存储空间&…

腾讯IM SDK:TUIKit发送多张图片

一、问题描述 在使用腾讯IM DEMO&#xff08;https://github.com/TencentCloud/chat-uikit-vue.git&#xff09;时发现其只支持发送一张图片&#xff1a; 二、解决方案 // src\TUIKit\components\TUIChat\message-input-toolbar\image-upload\index.vue<inputref"inp…

AcWing 802. 区间和(离散化算法,python)

本篇博客详细讲解一下离散化知识点&#xff0c;通过讲解和详细列题带大家掌握离散化。 题目&#xff1a; 原题链接&#xff1a;https://www.acwing.com/problem/content/description/804/ 假定有一个无限长的数轴&#xff0c;数轴上每个坐标上的数都是 0。 现在&#xff0c;…

记一次pyc逆向

.py文件   源代码文件。   这是开发者编写的 Python 源代码文件&#xff0c;包含了可执行的 Python 代码。 .pyc文件   字节码文件。   Python 源文件&#xff08;.py&#xff09;在执行时会被编译为字节码&#xff0c;并存储在 __pycache__ 目录下&#xff0c;文件名通…

PHP变量(第④篇)

本栏目教学是php零基础到精通&#xff0c;如果你还没有安装php开发工具请查看下方链接&#xff1a; Vscode、小皮面板安装-CSDN博客 今天来讲一讲php中的变量&#xff0c;变量是用于存储信息的"容器"&#xff0c;这些数据可以在程序执行期间被修改&#xff08;即其…

解决Nginx出现“Too many open files”的问题

解决Nginx出现“Too many open files”的问题 在那个不经意的瞬间&#xff0c;我感到一阵莫名的恍惚。同事突然提出要看我的手机&#xff0c;她的目光落在了我那泛黄的手机壳上。出乎意料地&#xff0c;她开始细心地擦拭&#xff0c;从内到外&#xff0c;动作轻柔而专注。那一刻…

Linux——磁盘分区、挂载

Linux 分区 原理介绍 原理图如下 当我们在/home目录下新建一个文件a.txt时&#xff0c;该文件实际上是存放在硬盘B的分区1中的&#xff0c;这就是图里说的&#xff0c;当进入某个目录&#xff0c;可以进入到该目录下挂载的分区里的意思 硬盘说明 应用实例&#xff1a;挂载一个…

【Flask】Flask数据库

【Flask】Flask数据库 1.概述2.使用Flask-SQLAlchemy管理数据库3.定义模型4.关系5.数据库操作创建表插入行修改行删除行查询行 1.概述 大多数的数据库引擎都有对应的 Python 包&#xff0c;包括开源包和商业包。Flask 并不限制你使用何种类型的数据库包&#xff0c;因此可以根…

PhotoMaker部署文档

一、介绍 PhotoMaker&#xff1a;一种高效的、个性化的文本转图像生成方法&#xff0c;能通过堆叠 ID 嵌入自定义逼真的人类照片。相当于把一张人的照片特征提取出来&#xff0c;然后可以生成你想要的不同风格照片&#xff0c;如写真等等。 主要特点&#xff1a; 在几秒钟内…

前端登录页面验证码

首先&#xff0c;在el-form-item里有两个div&#xff0c;各占一半&#xff0c;左边填验证码&#xff0c;右边生成验证码 <el-form-item prop"code"><div style"display: flex " prop"code"><el-input placeholder"请输入验证…

小赢卡贷公益行:乡村振兴与多元公益并进

在金融科技的浪潮中&#xff0c;小赢卡贷不仅以其创新的金融产品和服务赢得了市场的广泛认可&#xff0c;更以其背后的公益之心&#xff0c;积极履行社会责任&#xff0c;传递着温暖与希望。小赢公益基金会&#xff0c;作为小赢卡贷社会责任的延伸&#xff0c;主要聚焦于乡村振…

Hi3061M开发板——系统时钟频率

这里写目录标题 前言MCU时钟介绍PLLCRG_ConfigPLL时钟配置另附完整系统时钟结构图 前言 Hi3061M使用过程中&#xff0c;AD和APT输出&#xff0c;都需要考虑到时钟频率&#xff0c;特别是APT&#xff0c;关系到PWM的输出频率。于是就研究了下相关的时钟。 MCU时钟介绍 MCU共有…

unix中如何申请进程调度的优先级

一、前言 unix系统中&#xff0c;进程的调度是由内核决定的。在一个系统中&#xff0c;进程的优先级越高&#xff0c;表示其在一定时间中占用cpu的时间越久。本文将介绍unix系统如何修改以及获取进程的优先级。 二、nice值 nice值是unix系统中用于表征进程优先级的一个参数。…

ssh -T git@github.com 出现异常

上传代码到github 私有仓库 步骤 1. 生成 SSH Key&#xff08;如果没有&#xff09; 打开终端并运行&#xff1a; bash 复制 ssh-keygen -t ed25519 -C "your_emailexample.com"按提示保存密钥文件和设置密码短语&#xff08;可选&#xff09;。默认位置是 ~/.…

recyclerView(kotlin)

recyclerView的优点 使用viewHolderRecycledViewPool的方式复用资源&#xff0c;提高性能利用LayoutManager&#xff0c;可根据不同需求使用不同的布局&#xff0c;且可以方便使用对应布局提供的方法&#xff0c;如快速定位item等。RecyclerView 提供了一个 ItemAnimator 接口…

计算机毕业设计Django+Vue.js豆瓣图书推荐系统 图书评论情感分析 豆瓣图书可视化大屏 豆瓣图书爬虫 数据分析 图书大数据 大数据毕业设计 机器学习

《DjangoVue.js豆瓣图书推荐系统》开题报告 一、研究背景与意义 1. 研究背景 随着数字化时代的来临&#xff0c;图书资源日益丰富&#xff0c;用户面临着信息过载的问题。如何在海量图书中快速找到符合个人兴趣和需求的书籍成为了亟待解决的问题。传统的图书检索方式往往基于…

OmniDrive 论文学习

OmniDrive: A Holistic LLM-Agent Framework for Autonomous Driving with 3D Perception, Reasoning and Planning 解决了什么问题&#xff1f;相关工作端到端自动驾驶多模态语言模型&#xff08;MLLMs&#xff09;Drive LLM-Agents and BenchmarksDrive LLM-Agents基准测试 提…