Renesas R7FA8D1BH (Cortex®-M85) 输入接口的应用

news2024/11/24 11:06:53

Renesas R7FA8D1BH (Cortex®-M85) 控制DS18B20和ADC,实现两个页面的跳转功能

目录

概述

1 软硬件

1.1 软硬件环境信息

1.2 开发板信息

1.3 调试器信息

2 FSP和KEIL配置

2.1 硬件接口电路

2.2  FSB配置KEY的IO 

3 功能实现

3.1 FSP生成项目

3.2 KEY功能实现

4  KEY控制UI跳转

4.1 功能描述

4.2  state功能实现

4.3 源代码

 5 测试


概述

本文主要介绍Renesas R7FA8D1BH (Cortex®-M85)设计一个综合的应用案例:使用板卡上的两个按键实现UI页面跳转功能。page-1: 实现显示ADC的count和实际电压值;page-2:显示DS18B20的实时数据。通过按键实现跳转到下一个页面或者返回到当前页面的功能。

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 FSP和KEIL配置

2.1 硬件接口电路

SW3:  连接PA13引脚,其对应FSP上的配置引脚为BSP_IO_PORT_10_PIN_13

SW4: 连接P404引脚,其对应FSP上的配置引脚为BSP_IO_PORT_04_PIN_04

2.2  FSB配置KEY的IO 

1)  配置SW3,其对应IO: PA13

2) 配置SW4,其对应IO: P404

 

3 功能实现

3.1 FSP生成项目

点击Generate Project,FSP生成项目文件,在pin_data.c文件中生成了pin的相关配置参数。

 3.2 KEY功能实现

1)创建key.h文件,编写如下代码:

#ifndef _KEY_H
#define _KEY_H
#include "hal_data.h"


#define KEY1_SW2_PIN    BSP_IO_PORT_10_PIN_13
#define KEY2_SW3_PIN    BSP_IO_PORT_04_PIN_04

#define KEY_ON  1
#define KEY_OFF 0


#endif  /* _KEY_H */

2)创建key.c文件,编写如下代码:

 /*
 FILE NAME  :  key.c
 Description:  board's key interface 
 Author     :  tangmingfei2013@126.com
 Date       :  2024/06/03
 */
#include "key.h" 
#include "hal_data.h"

#define KEY_DELAY_MS(ms)      R_BSP_SoftwareDelay(ms, BSP_DELAY_UNITS_MILLISECONDS);

 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);
            KEY_DELAY_MS(10);
        } while (BSP_IO_LEVEL_LOW == state);
    }

    return KEY_ON;
}

/* End of this file */

4  KEY控制UI跳转

4.1 功能描述

1) UI功能定义

系统实现两个UI页面:

UI-Page-1: 

             第一行:显示通道0的count值,同时显示实际电压值

             第二行: 显示采集MCU内部的温度值

UI-Page-2: 

             第一行:显示字符串DS18B20

             第二行: 显示DS18B20的温度值 

2) KEY控制页面流程

SW2: 跳转到页面UI-Page-1

SW3: 跳转到页面UI-Page-2

4.2  state功能实现

代码第12行: 定义跳转指针函数

代码第13行:定义跳转函数变量

代码37行:读取SW2的值,如果该键被按下,跳转到NEXT

代码40行:读取SW3的值,如果该键被按下,跳转到BACK

4.3 源代码

 /*
 FILE NAME  :  app_ui.c
 Description:  app UI
 Author     :  tangmingfei2013@126.com
 Date       :  2024/06/03
 */
#include "bsp_i2c.h" 
#include "hal_data.h"
#include "oled_drv.h"
#include "bsp_led.h"
#include "bsp_timer.h"
#include "bsp_uart.h"
#include "bsp_adc.h"
#include "ds18b20.h" 
#include "app_ui.h" 
#include "key.h" 
#include "app_state.h" 

typedef enum{
   INIT_DQ = 0,
   NEXT,
   BACK,
    
}APP_STATE;

static void dispADC_state( void *ptr );
static void dispDS18B20_state( void *ptr );


STATE_FUNC pSt_State = dispADC_state;


 uint8_t key_getState( void )
{
     uint8_t run_state = INIT_DQ;
    
     if( Key_Scan(KEY1_SW2_PIN) == KEY_ON){
         run_state = NEXT;
     }
     else if( Key_Scan(KEY2_SW3_PIN) == KEY_ON){
         run_state = BACK; 
     }
     
     return run_state;
}

void state_machine(void)
{
    pSt_State((void *)pSt_State);
}


static void dispADC_state( void *ptr )
{
    uint8_t run_state;
    
    (void)ptr;
    oled_Clear();
    oled_SetCharSize( FONT_16 );  
    oled_PrintfString(13,0,(uint8_t*)"Renesas MCU ");  
    
    while(1)
    {
        run_state = key_getState();
        if( run_state == NEXT ){
             pSt_State = dispDS18B20_state;
             return;
        }
        ui_active();
    }
}

static void dispDS18B20_state( void *ptr )
{
    uint8_t run_state;
    
    (void)ptr;
    oled_Clear();
    oled_SetCharSize( FONT_16 );  
    oled_PrintfString(13,0,(uint8_t*)"Renesas MCU ");  
    
    while(1)
    {
        run_state = key_getState();
        if( run_state == BACK ){
             pSt_State = dispADC_state; 
             return;
        }
        ui_dispDS18b20();
    }
}


 5 测试

编译代码,下载到板卡中运行,其结果如下:

1)page-1: 显示ADC的值

2)page-2: 显示DS18B20值

 

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

macOS Ventura 13.6.8 (22G820) 正式版发布,ISO、IPSW、PKG 下载

macOS Ventura 13.6.8 (22G820) 正式版发布,ISO、IPSW、PKG 下载 2024 年 7 月 30 日凌晨,macOS Sonoma 14.6 发布,本更新提供了重要的错误修复和安全更新,建议所有用户安装。同时带来了 macOS Ventura 13.6.8 和 macOS Monterey…

java-questions-分析

系列文章目录 文章目录 目录 系列文章目录 文章目录 前言 一、问题案例 1、maven项目compile时候出现告警warn 2、java文件打包然后在命令行中运行java会找不到主类 3、程序找不到数据库驱动和配置实例 4、springboot和mybatis-plus版本不兼容导致 5、springboot项目启动的解释…

中国最受欢迎的起名大师颜廷利:飞蛾投火,拥抱光明

标题:飞蛾投火,拥抱光明;视死如归,石破天惊…(升命学说) 在深邃的夜幕下,一只飞蛾振翅向着熊熊燃烧的火焰。它的行为,似乎暗合了一种前沿而深邃的哲学——升命学说。祖籍齐鲁大地山东济南的当代文化名人,颜廷利教授的这一学说不仅描绘了生命的不屈与顽强,更映射出生命体对于光…

云借阅图书管理系统——用户登录模块

一、用户登录 (一)用户登录流程图 从图中可以看出,用户登录过程中首先要验证用户名和密码是否正确,如果正确,可以成功登录系统,系统会自动跳转到主页;如果错误,则在登录页面给出错误…

浅谈电商数据采集重要的一环:数据清洗

在电子商务的浩瀚数据海洋中,数据采集是获取商业洞察力的第一步,而数据清洗则是这一过程中不可或缺且至关重要的环节。数据清洗不仅关乎数据的准确性与可靠性,更直接影响到后续数据分析的质量与深度。本文将从技术角度出发,深入探…

Mirror学习笔记(二) 传输协议

文章目录 一、KCP传输协议二、Telepathy 传输协议三、WebSockets传输协议四、多路复用传输:五、延迟模拟传输:六、Ignorance协议七、LiteNetLib协议八、FizzSteamworks协议九、FizzyFacepunch协议十、加密协议十一、Edgegap协议 一、KCP传输协议 KCP是M…

脊髓小伙伴的饮食秘籍来啦!吃出满满活力,康复路上不孤单

Hey小伙伴们~👋 是不是有时候觉得,面对美食却有点无从下手,心里那个小小的声音在说:“我该怎么做,才能让身体更喜欢我呢?”别担心,今天就来给你种草一份超级实用的脊髓损伤患者饮食改善攻略&…

天地图电子地图矢量地图底图结合图像学实现风格底图地图

一、基础概念 天地图(TianDiTu),全称为“国家地理信息公共服务平台”,是中国国家测绘地理信息局主导建设的国家级地理信息服务平台。它提供了一系列的地图服务和地理信息数据,包括基础地理信息、专题地理信息、地…

个人健康数据管理小程序的设计

管理员账户功能包括:系统首页,个人中心,用户管理,知识科普管理,健康信息共享管理,健康计划管理,健康数据管理,数据分析管理,系统管理 微信端账号功能包括:系…

【Qt】多线程示例代码(QThread)

从QThread继承方式 1. qdicethread.h #ifndef QDICETHREAD_H #define QDICETHREAD_H#include <QObject> #include <QThread>class QDiceThread : public QThread {Q_OBJECT public:explicit QDiceThread(QThread *parent nullptr);void diceBegin();void dicePau…

公交信息在线查询小程序的设计

管理员账户功能包括&#xff1a;系统首页&#xff0c;个人中心&#xff0c;用户管理&#xff0c;线路信息管理&#xff0c;站点分类管理&#xff0c;站点信息管理&#xff0c;周边分类管理周边信息管理&#xff0c;系统管理 微信端账号功能包括&#xff1a;系统首页&#xff0…

数说故事 | 大数据洞察宠物消费市场数据

“班味”越来越重的年轻人正靠养宠物来“拯救”自己的生活。结束了一天的忙碌&#xff0c;推开家门&#xff0c;撸个猫、遛个狗&#xff0c;哪怕云吸一下&#xff0c;命就续上了&#xff0c;感觉瞬间焕发新生&#xff0c;能量值满满。 宠物对于铲屎官的意义&#xff0c;不止于…

软件统一过程(RUP)

软件统一过程(Rational Unifed Process&#xff0c;RUP)是 Rational 软件公司创造的软件工程方法。RUP 描述了如何有效地利用商业的、可靠的方法开发和部署软件&#xff0c;是一种重量级过程。 1. 统一过程概述 统一过程 统一过程&#xff08;RUP/UP&#xff0c;Rational Unif…

openEuler Repo

openEuler repo 前言 一键创建在线repo&#xff0c;脚本自动识辨系统无须更改&#xff0c;默认脚本走的是华为更改变量即可$repo_url即可。 openEuler Repo 一键更改脚本 兼容一键替换openEuler repo 20 21 22 23 24自动识辨清华大学 openEuler repo华为云源 openEuler repo…

2024.7.31(基于域名和IP地址的主机,上线商城)

将原有的nginx.conf文件备份 [roottomcat ~]# cp /usr/local/nginx/conf/nginx.conf /usr/local/nginx/conf/nginx.conf.bak [roottomcat ~]# grep -Ev "#|^$" /usr/local/nginx/conf/nginx.conf > /usr/local/nginx/conf/nginx.conf 一、基于域名的虚拟主机 创建…

C语言程序设计18

程序设计18 问题18_1代码18_1结果18_1 问题18_2代码18_2结果18_2 问题18_3代码18_3结果18_3 问题18_1 函数 f u n fun fun 的功能是&#xff1a;有 N N N\times N NN 的矩阵&#xff0c;根据给定的 m ( m < N ) m(m<N) m(m<N) 值&#xff0c;将每行元素中的值均右…

Spring Boot 使用 Spring AI 构建知识库服务

目录 前言 环境准备 JDK17 Spring Boot 3.2.4 Ollama PostgreSQL16 下载向量化模型 pom yml EmbeddingController 向量化示例 向量化文本 向量化检索 ChatController 知识库示例 前言 做 AI 大模型技术调研时&#xff0c;参考的开源项目 Maxkb&#xff0c;它基于…

数据结构7月31日作业

问题&#xff1a; 答案&#xff1a;

C语言 ——深入理解指针(1)

目录 1. 内存和地址2. 指针变量和地址2.1 取地址操作符&#xff08;&&#xff09;2.2 指针变量和解引用操作符&#xff08;*&#xff09;2.3 指针变量的大小 3. 指针变量类型的意义3.1 指针的解引用3.2 指针 - 整数3.3 void* 指针 4. const修饰指针4.1 const修饰变量4.2 co…

Flink 实时数仓(二)【DIM 层搭建】

1、DIM 层搭建 1.1、设计要点 DIM层设计要点&#xff1a; DIM层存的是维度表&#xff08;环境信息&#xff0c;比如人、场、货等&#xff09;DIM层的数据存储在 HBase 表中DIM层表名的命名规范为dim_表名 DIM 层表是用于维度关联的&#xff0c;要通过主键&#xff08;维度外…