【Follow me第二季第3期】ek-ra6m5 led 和按钮的接口使用
本帖最后由 zsy-s 于 2024-11-29 23:16 编辑# 备忘
活动地址:https://www.eeworld.com.cn/huodong/digikey_follow_me_2024_03/
# 日志输出
由于使用usb接口模拟串口代码量太大,所以使用rtt输出日志比较方便。
本次使用了例程:gpt_ek_ra6m5_ep
查看项目文件可知,启动包含SEGGER_RTT,官方已经添加进去对rtt的支持,可支持使用
例程已经封装了rtt的接口,实际不能输出。
打开编译成果,打开.map文件,找到.bss._SEGGER_RTT,复制结果到 J-Link RTT Viewer里的地址,就能输出日志了。
难受的很,每次编译,rtt的地址都变化,每次都查询,累得很。
# api 介绍
R_ICU_ExternalIrqOpen() 用于打开一个外部中断模块实例。
R_ICU_ExternalIrqEnable() 用于使能外部中断,使能后即可触发产生外部中断。
控制引脚
```c
R_BSP_PinAccessEnable(); //开启PFS registers
R_BSP_PinWrite(pin1, BSP_IO_LEVEL_HIGH); //写高电平
R_BSP_PinWrite(pin2, BSP_IO_LEVEL_LOW); //写低电平
R_BSP_PinAccessDisable(); //禁止PFS registers
```
# 代码
查看按钮和led引脚
有两个按钮,三个led灯。
配置引脚
```c
static const uint16_t g_bsp_prv_leds[] =
{
(uint16_t) BSP_IO_PORT_00_PIN_06,///< LED1
(uint16_t) BSP_IO_PORT_00_PIN_07,///< LED2
(uint16_t) BSP_IO_PORT_00_PIN_08,///< LED3
};
const bsp_leds_t g_bsp_leds =
{
.led_count = (uint16_t) ((sizeof(g_bsp_prv_leds) / sizeof(g_bsp_prv_leds))),
.p_leds = &g_bsp_prv_leds
};
```
最方便简单的方法通过官方提供的工具配置引脚
如下
项目中已配置按键引脚为输入,开启中断服务函数,三个led为输出。
链接文件,写的好复杂
启动入口函数: Reset_Handler
system.c 文件中声明函数:void R_BSP_WarmStart(bsp_warm_start_event_t event) __attribute__((weak));
标记为weak。在我们的主文件 hal_entry.c文件中,重新定义了函数R_BSP_WarmStart。
程序启动过程中,启动文件会调用 函数 R_BSP_WarmStart。
配置引脚中断,需要把此引脚的inpu配置取消掉,此处按照下图模式改掉。
如下图所示,增加一个中断
写代码,开启我们配置的中断。
# 烧录固件
编译程序,生成hex格式的固件。
打开flash lite 工具,如下图。
选中设备,找到生成的hex固件,点击 ‘programe device’,烧录下固件,如下图。
使用另一个按钮,开启中断,并控制另外一个led绿灯,效果如下
820e1ce69d7a5ee48f0337d9de4f56e0<br/>
#疑难问题
如果中断的配置,没有找到属性窗口,可以如下,调出来
# 代码
<p>rtt输出日志确实方便,而且还能省一个串口。</p>
页:
[1]