按键模块
后台轮询
按键也是一个比较简单的模块,主要是为了学习IO输入模式。
查看RA2E1电路图可见:
按键相关引脚是004引脚,默认上拉高电平,按下接地为低电平。
首先第一步还是设置对应引脚。类似上一期设置LED的方式,只不过Mode改为Input mode。
设置好之后仍然是记得generate。
然后就是程序编写。首先还是明确一下开发流程。首先我们尝试后台轮询的按键检测。在while里不断检测按键电平,如果为高点亮蓝灯,如果为低点亮红灯。
点亮好写,上一次已经尝试过write函数。那么我们接下来再去看类似的read函数。
第一个参数还是传入固定的&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
}
实现效果: