这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » 企业专区 » Renesas » 【EK-RA6M5开发板】移植面向对象之按键驱动

共6条 1/1 1 跳转至

【EK-RA6M5开发板】移植面向对象之按键驱动

助工
2024-10-30 20:59:02     打赏

【前言】

处理按键是常用的编程基础之一,在官方以及野火、百问网都有按键驱动的示例,但是本篇介绍一个面向对象的驱动库,只需要修改对应的驱动就可以实现按建的多种状态的实现。

【驱动库】

issac wan/以面向对象思想编写的按键管理框架 - 码云 - 开源中国

【移植步骤】

1、将驱动的key_manage.h/c添加到工程的src目录下面。

2、编写基于RA6M5的按键驱动。我们先找到开发板的原理图,按建的原理图如下:

image.png

从原理图上,按键分别接到了P005、P004上面,并且有上拉输入,因些我们进入RSCA进行配置,将PIN配置为input即可。

4、编译key_driver.h如下:

#ifndef __KEY_DRIVER_H__
#define __KEY_DRIVER_H__

#ifdef __cplusplus
extern "C" {
#endif

#include "hal_data.h"
#define KEY1_SW2_PIN    BSP_IO_PORT_00_PIN_04
#define KEY2_SW3_PIN    BSP_IO_PORT_00_PIN_05

/* 可以为单个引脚设置电平和读取电平 */


uint8_t key_sw1_read_pin(void);
uint8_t key_sw2_read_pin(void);

#ifdef __cplusplus
}
#endif
#endif /* __KEY_DRIVER_H */

key_driver.c如下:

#include "key_driver.h"

uint8_t key_sw1_read_pin(void)
{
  bsp_io_level_t p_port_value_port_004;
  R_IOPORT_PinRead(&g_ioport_ctrl, BSP_IO_PORT_00_PIN_04, &p_port_value_port_004);
  if(p_port_value_port_004)
		return 1;
	else
		return 0;
}

uint8_t key_sw2_read_pin(void)
{
  bsp_io_level_t p_port_value_port_005;
  R_IOPORT_PinRead(&g_ioport_ctrl, BSP_IO_PORT_00_PIN_05, &p_port_value_port_005);
  if(p_port_value_port_005)
		return 1;
	else
		return 0;
}

在驱动中,我们只输要读取两个IO的电平,并返回即可。

【按键的初始化与注册】

这里我只做了一个按键的驱动注册,在hal_enty.c中编写测试代码如下:

static struct key_handle _key1_sw2;
static struct key_handle _key2_sw3;

static void key1_sw2_callback(key_handle_t key)
{
  switch (key->event) {
  case Press_Down:
    APP_PRINT("SW Press Down\r\n");
		break;
	case Press_Up:
		APP_PRINT("SW Press UP\r\n");
		break;
  }
}

    key_init(&_key1_sw2, key_sw1_read_pin, 0);
    key_event_callback_register(&_key1_sw2,
                                Press_Down,
                                key1_sw2_callback);
																key_event_callback_register(&_key1_sw2,
                                Press_Up,
                                key1_sw2_callback);
    key_handle_register(&_key1_sw2);

同时在while循环里调用key_tick。

【实验效果】

下载程序到开发板,按下按键就可以打印出即定的效果:

image.png

【总结】

移植面向对象的驱动,可以快速的实现驱动,此驱动可以方便的移植到不同的单片机中,实现按建的用户功能!




关键词: 瑞萨     单片机     连载     RA6M5    

专家
2024-10-30 23:57:03     打赏
2楼

感谢分享


专家
2024-10-30 23:58:23     打赏
3楼

感谢分享


专家
2024-10-30 23:58:58     打赏
4楼

感谢分享


专家
2024-10-31 08:04:56     打赏
5楼

感谢分享


菜鸟
2024-11-05 11:32:49     打赏
6楼

感谢分享


共6条 1/1 1 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]