【Renesas RA6M4开发板之按键和LED的GPIO】

简介: 【Renesas RA6M4开发板之按键和LED的GPIO】

1.0 I/O 设备模型

绝大部分的嵌入式系统都包括一些 I/O(Input/Output,输入 / 输出)设备,例如仪器上的数据显示屏、工业设备上的串口通信、数据采集设备上用于保存数据的 Flash 或 SD 卡,以及网络设备的以太网接口等,都是嵌入式系统中容易找到的 I/O 设备例子。


1.1 I/O 设备模型框架

RT-Thread 提供了一套简单的 I/O 设备模型框架,如下图所示,它位于硬件和应用程序之间,共分成三层,从上到下分别是 I/O 设备管理层、设备驱动框架层、设备驱动层。

1.1.png

应用程序通过 I/O 设备管理接口获得正确的设备驱动,然后通过这个设备驱动与底层 I/O 硬件设备进行数据(或控制)交互。


1.2 I/O 设备模型

RT-Thread 的设备模型是建立在内核对象模型基础之上的,设备被认为是一类对象,被纳入对象管理器的范畴。每个设备对象都是由基对象派生而来,每个具体设备都可以继承其父类对象的属性,并派生出其私有属性,下图是设备对象的继承和派生关系示意图。


1.2.png

2. RT-theard配置

2.1 硬件需求

实现功能:

板载按键切换LED3 不同频闪模式。


1、RA6M4开发板

2.11.png

2、USB下载线,ch340串口和附带2根母母线,rx—p613;tx—p614

实验中采用按键和LED3都板载的(分别对应p105和p106)


2.2 软件配置

Renesas RA6M4开发板环境配置参照:【基于 RT-Thread Studio的CPK-RA6M4 开发板环境搭建】

1、新建项目RA6M4-GPIO工程


2.21.png

2、修改src文件下的main.c文件,其他不变。

main.c

/*
 * Copyright (c) 2006-2021, RT-Thread Development Team
 *
 * SPDX-License-Identifier: Apache-2.0
 *
 * Change Logs:
 * Date           Author        Notes
 * 2021-10-10     Sherman       first version
 * 2021-11-03     Sherman       Add icu_sample
 */
#include <rtthread.h>
#include "hal_data.h"
#include <rtdevice.h>
#define LED3_PIN    BSP_IO_PORT_01_PIN_06
#define USER_INPUT  BSP_IO_PORT_01_PIN_05
void hal_entry(void)
{
    rt_kprintf("\nHello RT-Thread!\n");
    while (1)
    {
        if (rt_pin_read(USER_INPUT)==0) {
            rt_pin_write(LED3_PIN, PIN_HIGH);
            rt_thread_mdelay(500);
            rt_pin_write(LED3_PIN, PIN_LOW);
            rt_thread_mdelay(500);
        } else {
            rt_pin_write(LED3_PIN, PIN_HIGH);
            rt_thread_mdelay(2000);
            rt_pin_write(LED3_PIN, PIN_LOW);
            rt_thread_mdelay(500);
        }
        rt_kprintf("USER_INPUT=%d !\n",rt_pin_read(USER_INPUT));
        rt_thread_mdelay(1);
    }
}


保存完是灰色,没有保存是蓝色。


3. 代码分析

采用轮询方式检查按键是否触发,好像按键默认拉高了


4. 下载验证

1、编译重构


4.1.png

编译成功


2、下载程序

4.2.png


下载成功


3、CMD串口调试

4.3.png


然后板载复位

4.4.png


效果如下

4.5.gif

目录
相关文章
|
应用服务中间件 Linux 网络安全
linux下查找nginx.conf文件路径的方法
nginx.conf文件在哪?云吞铺子介绍Linux系统下查找nginx.conf配置文件的方法。 查找nginx.conf 1、SSH连接Linux服务器,命令:ssh root@你的服务器IP 2、执行命令:nginx -t回车,即可看到nginx.conf文件所在目录 3、cd进入目录,vi nginx.conf编辑nginx.conf文件即可。
10190 10
|
4月前
|
人工智能 自然语言处理 网络协议
2026年阿里云轻量服务器部署OpenClaw(Clawdbot)新手喂饭教程(零代码+全图解)
2026年,OpenClaw(前身为Clawdbot、Moltbot)凭借“自然语言指令+任务自动化执行”的核心优势,成为新手入门AI自动化的首选工具。这款开源AI代理平台无需专业编程基础,仅需输入日常口语化指令,就能完成文件处理、日程管理、多工具协同、代码生成等重复性工作,堪称“私人AI数字员工”。
772 7
|
传感器 机器学习/深度学习 数据采集
【航迹关联】基于NNDA、PDA、JPDA三种算法实现航迹关联附matlab代码
【航迹关联】基于NNDA、PDA、JPDA三种算法实现航迹关联附matlab代码
|
5月前
|
机器学习/深度学习 弹性计算 编解码
2026年阿里云服务器4核8G租用价格,可选实例收费标准与最新活动价格
本文解析2026年阿里云4核8G云服务器租用价格及选择策略。涵盖经济型e实例、通用算力型u1/u2a、计算型c9i等多规格实例,价格从经济型e实例1M带宽年费1595.11元至计算型c9i实例3147.56元不等。不同实例适配不同场景:经济型e适合轻量应用,u2a以高性价比适配预算敏感用户,c9i专为高性能计算设计。
|
7月前
|
存储 SQL 缓存
Delta Join:为超大规模流处理实现计算与历史数据解耦
Delta Join(FLIP-486)是Flink流式Join的范式革新,通过将计算与历史数据解耦,避免传统Join因存储全量状态导致的资源爆炸。它采用无状态查询机制,按需从Fluss或Paimon等外部存储获取数据,显著降低状态大小、Checkpoint时间及恢复成本。实测中消除50TB状态,资源消耗降10倍,CPU内存节省超80%,作业恢复提速87%。兼容标准SQL,自动优化转换,适用于高基数流式关联、实时审计等场景,标志着大规模流处理进入高效稳定新阶段。
317 0
|
数据采集 JavaScript 搜索推荐
ssr(Nuxt+Next.js)
服务器端渲染(SSR)技术可在服务器上生成页面HTML,提升首屏加载速度和SEO效果。Nuxt.js基于Vue.js,提供自动化路由管理、页面级数据获取和模块化扩展;Next.js基于React.js,支持SSR、静态生成和文件系统路由。两者均具备快速加载、SEO友好和处理复杂页面的优点,但也存在服务器压力大、开发限制和调试困难的缺点。开发者可根据项目需求和技术栈选择合适的框架。
342 2
|
前端开发 JavaScript API
前端框架新探索:Svelte在构建高性能Web应用中的优势
【10月更文挑战第26天】近年来,前端技术飞速发展,Svelte凭借独特的编译时优化和简洁的API设计,成为构建高性能Web应用的优选。本文介绍Svelte的特点和优势,包括编译而非虚拟DOM、组件化开发、状态管理及响应式更新机制,并通过示例代码展示其使用方法。
527 2
|
JavaScript Java
kkFileView在线文件预览与项目集成
kkFileView在线文件预览与项目集成
1351 1
|
存储 人工智能 自然语言处理
选择最适合数据的嵌入模型:OpenAI 和开源多语言嵌入的对比测试
OpenAI最近发布了他们的新一代嵌入模型*embedding v3*,他们将其描述为性能最好的嵌入模型,具有更高的多语言性能。这些模型分为两类:较小的称为text- embeddings -3-small,较大且功能更强大的称为text- embeddings -3-large。
1576 0