Renesas MCU之IO应用介绍

2024-06-20 09:44
文章标签 应用 介绍 io mcu renesas

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

目录

概述

1 软硬件环境

1.1 软件版本信息

1.2 硬件接口介绍

2 FSP配置项目 

2.1 项目参数配置

 2.2 生成项目框架

3 IO OutPut功能

3.1 IO输出功能实现

3.2 IO输出功能测试代码

4 IO InPut功能

4.1 IO Input功能实现

4.2 测试代码实现 

5 测试结果


概述

本文主要介绍Renesas MCU之IO的应用方法,包括输出和输入两种使用方式。笔者使用FSP工具配置项目,生成代码。并编写测试函数验证了输出和输入的功能。

1 软硬件环境

1.1 软件版本信息

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

1.2 硬件接口介绍

MCU接口IO属性功能
P405输出接口控制LED-1
P404输出接口控制LED-2
P002输出接口控制LED-3
P005输入接口控制按键SW-1
P006输入接口控制按键SW-2

硬件连接图如下:

 

2 FSP配置项目 

2.1 项目参数配置

1)配置系统时钟

笔者使用的开发板上配置的晶振为12M Hz,在Clock时钟蓝选择该型号的时钟配置参数

2)配置debug接口,选择swo类型

3)配置IO输出属性

以P404为例介绍IO配置为输出接口的方法,P405和P002的配置方法和P404相同

4)配置IO输入属性

以P005为例介绍IO配置为输出接口的方法,P006的配置方法和P005相同

 2.2 生成项目框架

完成项目参数配置之后,点击Generate Project,生成项目框架。使用Keil打开项目,在pin_data.c中定义IO_pin的初始化配置参数

3 IO OutPut功能

3.1 IO输出功能实现

在FSP project项目框架中,IO初始化的函数不用程序调用,在hal_entry.c中的R_BSP_WarmStart函数已经调用。

3.2 IO输出功能测试代码

控制LED1,使其按照1s的周期进行翻转,代码实现如下:

代码15~17行: 关闭LED

代码23行:  调用LED初始化函数,关闭LED

代码28行:LED1翻转功能

 源代码:

void bsp_Init( void )
{LED1_OFF;LED2_OFF;LED3_OFF;
}void hal_entry(void)
{/* TODO: add your own code here */bsp_Init();GPT_PWM_Init();while(1){LED1_TOGGLE; R_BSP_SoftwareDelay(500, BSP_DELAY_UNITS_MILLISECONDS);}
#if BSP_TZ_SECURE_BUILD/* Enter non-secure code */R_BSP_NonSecureEnter();
#endif
}

在bsb_led.h中定义LED操作的接口

 /*FILE NAME  :  bsp_led.cDescription:  led io portAuthor     :  tangmingfei2013@126.comDate       :  2024/06/03*/#ifndef BSP_LED_H#define BSP_LED_H#include "hal_data.h"/* turn on led */
#define LED1_ON     R_IOPORT_PinWrite(&g_ioport_ctrl, BSP_IO_PORT_04_PIN_05, BSP_IO_LEVEL_HIGH)
#define LED2_ON     R_IOPORT_PinWrite(&g_ioport_ctrl, BSP_IO_PORT_04_PIN_04, BSP_IO_LEVEL_HIGH)
#define LED3_ON     R_IOPORT_PinWrite(&g_ioport_ctrl, BSP_IO_PORT_00_PIN_02, BSP_IO_LEVEL_HIGH)/* turn off led */
#define LED1_OFF    R_IOPORT_PinWrite(&g_ioport_ctrl, BSP_IO_PORT_04_PIN_05, BSP_IO_LEVEL_LOW)
#define LED2_OFF    R_IOPORT_PinWrite(&g_ioport_ctrl, BSP_IO_PORT_04_PIN_04, BSP_IO_LEVEL_LOW)
#define LED3_OFF    R_IOPORT_PinWrite(&g_ioport_ctrl, BSP_IO_PORT_00_PIN_02, BSP_IO_LEVEL_LOW)/* trigger led */
#define LED1_TOGGLE R_PORT4->PODR ^= 1<<(BSP_IO_PORT_04_PIN_05 & 0xFF)
#define LED2_TOGGLE R_PORT4->PODR ^= 1<<(BSP_IO_PORT_04_PIN_04 & 0xFF)
#define LED3_TOGGLE R_PORT0->PODR ^= 1<<(BSP_IO_PORT_00_PIN_02 & 0xFF)#endif   /* BSP_LED_H */

4 IO InPut功能

4.1 IO Input功能实现

采用硬件检测方法,读取IO的状态,以判断是否有按键按下,根据IO-KEY硬件电路可得,按键按下时,IO检测到低电平

 源代码如下:

 /*FILE NAME  :  bsp_pwm.cDescription:  generate pwm by timerAuthor     :  tangmingfei2013@126.comDate       :  2024/06/03*/
#include "bsp_key.h"uint32_t Key_Scan(bsp_io_port_pin_t key)
{bsp_io_level_t state;R_IOPORT_PinRead(&g_ioport_ctrl, key, &state);if (BSP_IO_LEVEL_HIGH == state){return KEY_OFF; }else{do  {R_IOPORT_PinRead(&g_ioport_ctrl, key, &state);} while (BSP_IO_LEVEL_LOW == state);}return KEY_ON;
}/* End of this file */

4.2 测试代码实现 

在hal_entry.c文件中实现按键触发函数,

当KEY_1按下时,触发LED-1

当KEY_2按下时,触发LED-2

源代码 

void hal_entry(void)
{/* TODO: add your own code here */timer1_Init();GPT_PWM_Init();bsp_Init();while(1){if( Key_Scan(KEY1_SW2_PIN) == KEY_ON )  {LED1_TOGGLE; }if( Key_Scan(KEY2_SW3_PIN) == KEY_ON ){LED2_TOGGLE; }}
#if BSP_TZ_SECURE_BUILD/* Enter non-secure code */R_BSP_NonSecureEnter();
#endif
}

5 测试结果

 

这篇关于Renesas MCU之IO应用介绍的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



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

相关文章

SpringShell命令行之交互式Shell应用开发方式

《SpringShell命令行之交互式Shell应用开发方式》本文将深入探讨SpringShell的核心特性、实现方式及应用场景,帮助开发者掌握这一强大工具,具有很好的参考价值,希望对大家有所帮助,如... 目录引言一、Spring Shell概述二、创建命令类三、命令参数处理四、命令分组与帮助系统五、自定

SpringBoot应用中出现的Full GC问题的场景与解决

《SpringBoot应用中出现的FullGC问题的场景与解决》这篇文章主要为大家详细介绍了SpringBoot应用中出现的FullGC问题的场景与解决方法,文中的示例代码讲解详细,感兴趣的小伙伴可... 目录Full GC的原理与触发条件原理触发条件对Spring Boot应用的影响示例代码优化建议结论F

MySQL 分区与分库分表策略应用小结

《MySQL分区与分库分表策略应用小结》在大数据量、复杂查询和高并发的应用场景下,单一数据库往往难以满足性能和扩展性的要求,本文将详细介绍这两种策略的基本概念、实现方法及优缺点,并通过实际案例展示如... 目录mysql 分区与分库分表策略1. 数据库水平拆分的背景2. MySQL 分区策略2.1 分区概念

Spring Shell 命令行实现交互式Shell应用开发

《SpringShell命令行实现交互式Shell应用开发》本文主要介绍了SpringShell命令行实现交互式Shell应用开发,能够帮助开发者快速构建功能丰富的命令行应用程序,具有一定的参考价... 目录引言一、Spring Shell概述二、创建命令类三、命令参数处理四、命令分组与帮助系统五、自定义S

Pytest多环境切换的常见方法介绍

《Pytest多环境切换的常见方法介绍》Pytest作为自动化测试的主力框架,如何实现本地、测试、预发、生产环境的灵活切换,本文总结了通过pytest框架实现自由环境切换的几种方法,大家可以根据需要进... 目录1.pytest-base-url2.hooks函数3.yml和fixture结论你是否也遇到过

C语言函数递归实际应用举例详解

《C语言函数递归实际应用举例详解》程序调用自身的编程技巧称为递归,递归做为一种算法在程序设计语言中广泛应用,:本文主要介绍C语言函数递归实际应用举例的相关资料,文中通过代码介绍的非常详细,需要的朋... 目录前言一、递归的概念与思想二、递归的限制条件 三、递归的实际应用举例(一)求 n 的阶乘(二)顺序打印

Python中随机休眠技术原理与应用详解

《Python中随机休眠技术原理与应用详解》在编程中,让程序暂停执行特定时间是常见需求,当需要引入不确定性时,随机休眠就成为关键技巧,下面我们就来看看Python中随机休眠技术的具体实现与应用吧... 目录引言一、实现原理与基础方法1.1 核心函数解析1.2 基础实现模板1.3 整数版实现二、典型应用场景2

Java的IO模型、Netty原理解析

《Java的IO模型、Netty原理解析》Java的I/O是以流的方式进行数据输入输出的,Java的类库涉及很多领域的IO内容:标准的输入输出,文件的操作、网络上的数据传输流、字符串流、对象流等,这篇... 目录1.什么是IO2.同步与异步、阻塞与非阻塞3.三种IO模型BIO(blocking I/O)NI

Python Dash框架在数据可视化仪表板中的应用与实践记录

《PythonDash框架在数据可视化仪表板中的应用与实践记录》Python的PlotlyDash库提供了一种简便且强大的方式来构建和展示互动式数据仪表板,本篇文章将深入探讨如何使用Dash设计一... 目录python Dash框架在数据可视化仪表板中的应用与实践1. 什么是Plotly Dash?1.1

Android Kotlin 高阶函数详解及其在协程中的应用小结

《AndroidKotlin高阶函数详解及其在协程中的应用小结》高阶函数是Kotlin中的一个重要特性,它能够将函数作为一等公民(First-ClassCitizen),使得代码更加简洁、灵活和可... 目录1. 引言2. 什么是高阶函数?3. 高阶函数的基础用法3.1 传递函数作为参数3.2 Lambda