【致敬未来的攻城狮计划】打卡4:检测按键

按键模块

后台轮询

按键也是一个比较简单的模块,主要是为了学习IO输入模式。

查看RA2E1电路图可见:

image-20230624133704709

按键相关引脚是004引脚,默认上拉高电平,按下接地为低电平。

首先第一步还是设置对应引脚。类似上一期设置LED的方式,只不过Mode改为Input mode。

image-20230624133750237

设置好之后仍然是记得generate。

然后就是程序编写。首先还是明确一下开发流程。首先我们尝试后台轮询的按键检测。在while里不断检测按键电平,如果为高点亮蓝灯,如果为低点亮红灯。

点亮好写,上一次已经尝试过write函数。那么我们接下来再去看类似的read函数。

image-20230624135423601

第一个参数还是传入固定的&g_ioport_ctrl。第二个是引脚。第三个是存放我们要存储的读取按键的值。比如传入变量state的地址 &state,函数执行结束后state的值就是读取的按键电平。

主函数编写:

void hal_entry(void)
{
    
    
	bsp_io_level_t state;
    /* TODO: add your own code here */
		while(1){
    
    
			R_IOPORT_PinRead(&g_ioport_ctrl, BSP_IO_PORT_00_PIN_04,&state);
			if(state==BSP_IO_LEVEL_HIGH){
    
    
				R_IOPORT_PinWrite(&g_ioport_ctrl, BSP_IO_PORT_05_PIN_01, BSP_IO_LEVEL_HIGH);
				R_IOPORT_PinWrite(&g_ioport_ctrl, BSP_IO_PORT_05_PIN_02, BSP_IO_LEVEL_LOW);
			}
			else{
    
    
				R_IOPORT_PinWrite(&g_ioport_ctrl, BSP_IO_PORT_05_PIN_01, BSP_IO_LEVEL_LOW);
				R_IOPORT_PinWrite(&g_ioport_ctrl, BSP_IO_PORT_05_PIN_02, BSP_IO_LEVEL_HIGH);
			}
		}

#if BSP_TZ_SECURE_BUILD
    /* Enter non-secure code */
    R_BSP_NonSecureEnter();
#endif
}

实现效果:

8d99e5ae0be2c97e2e2bb44a1ed92f6

59b0f842762bb1349190932bdcb4e74

猜你喜欢

转载自blog.csdn.net/jtwqwq/article/details/131362619