【Follow me第二季第3期】入门任务:Blink,按键
[复制链接]
本帖最后由 Juggernaut 于 2024-11-28 08:44 编辑
先把工程建立起来,FSP很方便,选择好芯片型号:
Blink配置
根据EK-RA6M5的PCB,P006,P007,P008分别对应LED1,LED2,LED3,逐一配置好,此处为输出模式,本案例LED1/LED2用于blink,LED3用于响应案件事件。
代码为
R_IOPORT_PinWrite(&g_ioport_ctrl, BSP_IO_PORT_00_PIN_06, BSP_IO_LEVEL_HIGH); //LED1亮
R_IOPORT_PinWrite(&g_ioport_ctrl, BSP_IO_PORT_00_PIN_07, BSP_IO_LEVEL_HIGH); //LED2亮
R_BSP_SoftwareDelay(500, BSP_DELAY_UNITS_MILLISECONDS); //延时500ms
R_IOPORT_PinWrite(&g_ioport_ctrl, BSP_IO_PORT_00_PIN_06, BSP_IO_LEVEL_LOW); //LED1灭亮
R_IOPORT_PinWrite(&g_ioport_ctrl, BSP_IO_PORT_00_PIN_07, BSP_IO_LEVEL_LOW); //LED2灭亮
R_BSP_SoftwareDelay(500, BSP_DELAY_UNITS_MILLISECONDS); //延时500ms
按键功能
按键选择按钮2,对应的pin为P005:
同样配置好,此处为输入模式:
代码为:
R_IOPORT_PinRead(&g_ioport_ctrl, BSP_IO_PORT_00_PIN_05, &key_state);
if(key_state==BSP_IO_LEVEL_LOW){
//软件消抖
R_BSP_SoftwareDelay(10, BSP_DELAY_UNITS_MILLISECONDS);
//点亮LED3
R_IOPORT_PinWrite(&g_ioport_ctrl, BSP_IO_PORT_00_PIN_08, BSP_IO_LEVEL_HIGH); //LED3亮
//等待按键松开
while(key_state==BSP_IO_LEVEL_LOW)
{
R_IOPORT_PinRead(&g_ioport_ctrl, BSP_IO_PORT_00_PIN_05, &key_state);
}
//熄灭LED3
R_IOPORT_PinWrite(&g_ioport_ctrl, BSP_IO_PORT_00_PIN_08, BSP_IO_LEVEL_LOW); //LED3灭
}
运行测试
配置好后,点击生成代码按钮,FSP很方便的生成配置和代码。
编辑好:
Extracting support files...
08:40:33 **** 项目blink配置Release的增量构建 ****
make -r -j8 all
arm-none-eabi-size --format=berkeley "blink.elf"
text data bss dec hex filename
4284 8 2580 6872 1ad8 blink.elf
08:40:34 Build Finished. 0 errors, 0 warnings. (took 157ms)
下载至EK-RA65板子:
可以看出LED1 LED2都在blink了,LED3根据按键2的动作响应。
146
至此,BLINK和按键任务完成!
|