71|0

57

帖子

0

TA的资源

一粒金砂(中级)

楼主
 

【Follow me第二季第3期】入门任务 [复制链接]

 
入门任务提交贴
安装 e2studio
双击 setup_fsp_v5_5_0_e2s_v2024-07.exe,一路 next 即可。
默认安装了 IDE 和 FSP 软件包,只用 e2studio 开发 RA6M5 即可,无需 Kei MDK。
导入工程
  1. 首先解压缩 ek-ra6m5 示例工程压缩包 r20an0619eu0140-ek-ra6m5-exampleprojects.zip 文件,
  2. 然后打开 e2studio,按照下图操作,导入解压缩包中的 _quickstart 工程
刚导入的工程结构如下,只有 include, src, script, util 4个目录。
编译下载
点击工具栏中的锤子图标或者快捷键Ctrl+B开始编译成功。
注意,开始编译工程,会根据工程的配置文件 configuration.xml 文件自动生成下图中的 ra, ra_gen, ra_cfg 以及 Debug 4个文件夹,最后编译成功,如下图所示。
ra 文件夹说明
此文件夹是 SDK 中的内核文件、第三方组件、板级支持包、fsp 驱动文件,这些文件是 fsp 库基础文件。
如下图所示,
  1. arm 文件夹下包含 CMSIS_6 组件,即 ARM 内核相关的组件;mbedtls 是一个C语言写的加密库;
  2. aws 下包含 FreeROTS 源码以及 FreeRTOS-Plus 组件;
  3. board 文件夹是 ra6m5_ek 开发板板级资源文件,如 LED 定义和 以太网 PHY 资源定义;
  4. freertos 下包含 FAT 文件系统针对 FreeRTOS 适配的版本;
  5. fsp 即 Renesas FSP 驱动库,用户无需更改;
fsp 文件夹展开
ra_gen 文件夹说明
它是 Renesas 工程模版文件,自动生成的,用户不要修改这些文件。
而且 main() 函数定义在这里,当前工程是 FreeRTOS 版本,所以会在 main() 函数中新建线程。如果工程不带OS,则 main() 函数调用 hal_entry(),用户代码的入口函数在 hal_entry()。
ra_cfg 文件夹说明
这个文件夹是各个模块的配置文件,例如 mbedtls 的配置文件 config.h 放在这里,FreeRTOS 的配置文件 FreeRTOSConfig.h 也放在这里,且目录结构和 ra/ 文件夹的目录结构相同。
Debug 文件夹说明
这个文件夹是工程的编译输出文件夹,包含 map 文件、hex、elf 等文件。一般用户无需关心。
如果用户有其他的配置,如 Release ,则工程的输出文件夹是 Release 而不是 Debug。
开发板连接
开发板上的 USB Full Speed J11 是串口通信端口;
开发板上的 Debug1 J10 是 JLink 调试器端口;
一般情况下调试、下载代码需要连接J10 (下图右侧),此外还需要通过串口打印日志、输入命令需要连接J11.(下图左侧)
调试工程
在 main() 入口第一个断点,然后点击工具栏上的锤子图标,开始调试。
第一次进入调试,提示 e2-server-gdb.exe 防火墙拦截提示,两个都允许,确认。
弹窗提醒切换到调试视图
代码停在 Reset_Handler()
左侧提示当前断点在 Reset_Handler()函数,位于文件 startup.c 第48行,对应右侧文件和函数名。
点击工具栏中的 Resume 图标,运行到 main() 入口。
按键和LED的原理图
板卡上有两个用户按键 S1 和 S2,还有一个红色的 RESET 按键。
用户按键的原理图如下, S1 接在 P005,对应 IRQ10 中断; S2 接在 P004,对应 IRQ9 中断。两个用户按键空闲时读取为高电平,用户按下是读取低电平。
板卡上有3个用户 LED,如下图所示,3个管脚输出高电平点亮 LED。
  1. LED1 接在 P006;
  2. LED2 接在 P007;
  3. LED3 接在 P008;
Blink
闪烁频率和亮度等级定义
经过查找,定义蓝色LED闪烁频率和亮度等级的变量如下:
  1. g_pwm_dcs 数组定义蓝色LED亮度等级,当前定义了3个等级,是10%、50%和90%,这个变量用在 led_duty_cycle_update() 和 gpt_blue_callback() 函数中,修改该 PWM 占空比;而另外一个内容相似的变量 g_pwm_dcs_data 数组,用在菜单、网页字符串中,作为显示字符;【如果新增、删减亮度等级,这两个变量需要同步修改】
  2. g_pwm_rates 数组定义蓝色 LED 闪烁频率,用在 R_GPT_PeriodSet() 修改PWM频率,当前定义了3组闪烁频率,1Hz, 5Hz 和 10Hz;另一个数值内容相似的变量是 g_pwm_rates_data 数组,它用在菜单和网页字符串中,作为显示字符。【如果新增、删减闪烁频率,这两个变量需要同步修改】
修改闪烁频率
考虑到修改闪烁频率比修改亮度等级更容易目视观察,这里选择修改闪烁频率为 1, 5, 10, 20, 60,即新增2个档位。
增加 BLINK_FREQ_20HZ 和 BLINK_FREQ_60HZ
数组 g_pwm_rates 和 g_pwm_rates_data 分别新增两个元素
此外代码中和LED闪烁频率相关的一个变量是 g_board_status.led_frequency,每当 SW2 按键按下它就会遍历这5个宏定义中的下一个。之前的代码是
修改所有 g_board_status.led_frequency 变量所有和闪烁频率数组长度相关的代码,使用 BLINK_FREQ_NUM 而不是数值5.
按键
SW1 按键修改LED亮度等级
SW1 按键触发 irq10 对应的函数是 button_irq10_callback()。
最关键的一行代码是 g_board_status.led_intensity = (uint16_t)((g_board_status.led_intensity + 1) % 3) 表示LED亮度变量 led_intensity 只在0/1/2 循环,对应 uint32_t g_pwm_dcs[3] 数组的下标。
SW2 按键修改LED闪烁频率
SW2按键触发 irq9,对应的函数是 button_irq9_callback()。
最关键的一行代码是 g_board_status.led_frequency = (uint16_t)((g_board_status.led_frequency) % BLINK_FREQ_NUM) 表示 LED 闪烁频率变量 led_frequency 只在 0/1/2/3/4 循环,对应 uint32_t g_pwm_rates[] 数组的下标。
演示
串口观察 LED 闪烁频率 1/5/10/20/60

 

开发板实测
每次按下SW2按键,闪烁频率依次是 1/5/10/20/60.
 

 

 

点赞 关注
 
 

回复
举报
您需要登录后才可以回帖 登录 | 注册

查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/10 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表