Toggle navigation
首页
问答
文章
积分商城
专家
专区
更多专区...
文档中心
返回主站
搜索
提问
会员
中心
登录
注册
瑞萨-RTT活动
瑞萨RA2L1评估板初体验-歌曲切换
发布于 2023-03-13 12:23:48 浏览:510
订阅该版
**一、前言** 第一次使用瑞萨的板子和RTT studio开发环境,跟着瑞萨活动的实践步骤,从最初的不适应,到慢慢熟悉,现在觉得RTT studio的IDE做得非常方便,瑞萨的教程也做的十分详细。但是因为工作原因,空闲时间有限,只跑了相关的几个外设实验,做了一个简易的音乐播放器,用按钮进行歌曲切换。后续将继续研究其他的外设应用。 **二、硬件连接** ![硬件连接图.jpg](https://oss-club.rt-thread.org/uploads/20230313/5476c9ccfd3a3e742cee85b0c2d2f08b.jpg.webp) 用到的硬件资源: 1、UART9: P109/P110 2、按键输入(P004) 3、PWM输出:P500 4、SPI0 ![2.png](https://oss-club.rt-thread.org/uploads/20230313/bd8a2026b5dbb2d9b832936adabdb006.png.webp) **三、软件工具** 1、环境搭建 rt-thread studio 安装; 灵活配置软件包(FSP) CPK-RA2L1板级支持包安装 usb转串口工具 (具体的步骤可参考瑞萨RA2L1开发实践指南,图文并茂,十分详细) 2、另外用到软件: (1)中景园电子1.8寸显示屏自带汉字编码软件 (2)音乐编码软件Music Encode,通过手动输入简谱进行转换,如下图所示。 ![3.png](https://oss-club.rt-thread.org/uploads/20230313/2a93d4d7707c4697b840a515eba87363.png.webp) **四、关键代码:** ```c play.c int player_next(player_t player) { uint16_t len; rt_uint32_t level; /* 关闭全局中断 */ level = rt_hw_interrupt_disable(); /* 将当前播放歌曲的序号 加一 */ if (player->song_current < player->song_num) { player->song_current ++; } else { player->song_current = 1; } g_songnum = player->song_current; /* 更新播放器的当前歌曲的播放时间以及总时间 */ player->song_time_pass = 0; /* 打开全局中断 */ rt_hw_interrupt_enable(level); player->decode->control(player->song_sheet[player->song_current - 1], DECODE_OPS_CMD_GET_LEN, &len); /* 关闭全局中断 */ level = rt_hw_interrupt_disable(); player->song_time_all = len; /* 打开全局中断 */ rt_hw_interrupt_enable(level); if (player->status != PLAYER_RUNNING) { player_play(player); } return 0; } ``` ```c LCD.c void lcd_thread_handler(void *parameter) { rt_uint8_t temp = 0; rt_kprintf("lcd thread handler!"); LCD_Init(); LCD_Fill(0,0,LCD_W,LCD_H,WHITE); lcd_show_menu(); while(1) { rt_kprintf("lcd thread running!"); if(temp != g_songnum) { rt_kprintf("lcd,temp = %d,g_songnum = %d",temp,g_songnum); temp = g_songnum; LCD_Fill(1,128+8,LCD_W,LCD_H,WHITE); } lcd_show_pic1(); rt_thread_mdelay(500); } } void lcd_show_menu(void) { LCD_ShowPicture(0,0,127,128,gImage_music); LCD_ShowChinese(30,128-10,"正在播放",RED,WHITE,16,0); LCD_ShowChinese(1,128+8,"快乐父子俩",RED,WHITE,16,0); } void lcd_show_pic1(void) { switch (g_songnum){ case 1 :LCD_ShowChinese(1,128+8,"快乐父子俩",RED,WHITE,16,0);break; case 2 :LCD_ShowChinese(1,128+8,"葫芦娃",RED,WHITE,16,0);break; case 3 :LCD_ShowChinese(1,128+8,"送别",RED,WHITE,16,0);break; case 4 :LCD_ShowChinese(1,128+8,"两只老虎",RED,WHITE,16,0);break; default: break; } } ``` ```c key.h #define KEY_NEXT_PIN 4 ``` ```c key.c int key_init(void) { btn_last.press_logic_level = KEY_PRESS_LEVEL; btn_last.hold_cyc_period = 100; btn_last.cb = (my_button_callback)btn_cb; btn_next = btn_play = btn_last; btn_last.pin = KEY_PLAY_PIN; btn_play.pin = KEY_LAST_PIN; btn_next.pin = KEY_NEXT_PIN; my_button_register(&btn_last); my_button_register(&btn_play); my_button_register(&btn_next); my_button_start(); return 0; } ``` 五、实验现象 [DIY演示视频](https://www.bilibili.com/video/BV1ag4y1b7Ra/?vd_source=f5500cbc67ad0d04bc6f38fed13e76e4 "DIY演示视频")
0
条评论
默认排序
按发布时间排序
登录
注册新账号
关于作者
当字符爱上音符
这家伙很懒,什么也没写!
文章
1
回答
0
被采纳
0
关注TA
发私信
相关文章
推荐文章
1
RT-Thread应用项目汇总
2
玩转RT-Thread系列教程
3
国产MCU移植系列教程汇总,欢迎查看!
4
机器人操作系统 (ROS2) 和 RT-Thread 通信
5
五分钟玩转RT-Thread新社区
6
【技术三千问】之《玩转ART-Pi》,看这篇就够了!干货汇总
7
关于STM32H7开发板上使用SDIO接口驱动SD卡挂载文件系统的问题总结
8
STM32的“GPU”——DMA2D实例详解
9
RT-Thread隐藏的宝藏之completion
10
【ART-PI】RT-Thread 开启RTC 与 Alarm组件
热门标签
RT-Thread Studio
串口
Env
LWIP
SPI
AT
Bootloader
Hardfault
CAN总线
FinSH
ART-Pi
USB
DMA
文件系统
RT-Thread
SCons
RT-Thread Nano
线程
MQTT
STM32
RTC
FAL
rt-smart
I2C_IIC
ESP8266
UART
WIZnet_W5500
ota在线升级
cubemx
PWM
flash
freemodbus
BSP
packages_软件包
潘多拉开发板_Pandora
定时器
ADC
flashDB
GD32
socket
编译报错
中断
Debug
rt_mq_消息队列_msg_queue
SFUD
msh
keil_MDK
ulog
C++_cpp
MicroPython
本月问答贡献
出出啊
1518
个答案
343
次被采纳
小小李sunny
1444
个答案
290
次被采纳
张世争
813
个答案
177
次被采纳
crystal266
547
个答案
161
次被采纳
whj467467222
1222
个答案
149
次被采纳
本月文章贡献
出出啊
1
篇文章
5
次点赞
小小李sunny
1
篇文章
1
次点赞
张世争
1
篇文章
3
次点赞
crystal266
2
篇文章
2
次点赞
whj467467222
2
篇文章
2
次点赞
回到
顶部
发布
问题
投诉
建议
回到
底部