您的位置:首页 > 娱乐 > 八卦 > Renesas R7FA8D1BH (Cortex®-M85) 输入接口的应用

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

2024/10/7 2:22:46 来源:https://blog.csdn.net/mftang/article/details/140135882  浏览:    关键词:Renesas R7FA8D1BH (Cortex®-M85) 输入接口的应用

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.cDescription:  board's key interface Author     :  tangmingfei2013@126.comDate       :  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.cDescription:  app UIAuthor     :  tangmingfei2013@126.comDate       :  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值

 

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com