全球最实用的IT互联网信息网站!

AI人工智能P2P分享&下载搜索网页发布信息网站地图

当前位置:诺佳网 > 电子/半导体 > 制造与封装 >

瑞萨RA2L1评估板初体验-歌曲切换步骤

时间:2023-10-11 12:57

人气:

作者:admin

标签: 体验  瑞萨  评估  板初  RA2L1 

导读:第一次使用瑞萨的板子和RTT studio开发环境,跟着瑞萨活动的实践步骤,从最初的不适应,到慢慢熟悉,现在觉得RTT studio的IDE做得非常方便,瑞萨的教程也做的十分详细。...

一、前言
第一次使用瑞萨的板子和RTT studio开发环境,跟着瑞萨活动的实践步骤,从最初的不适应,到慢慢熟悉,现在觉得RTT studio的IDE做得非常方便,瑞萨的教程也做的十分详细。但是因为工作原因,空闲时间有限,只跑了相关的几个外设实验,做了一个简易的音乐播放器,用按钮进行歌曲切换。后续将继续研究其他的外设应用。

二、硬件连接

1.jpg

用到的硬件资源:
1、UART9: P109/P110
2、按键输入(P004)
3、PWM输出:P500
4、SPI0

1.jpg

三、软件工具
1、环境搭建
rt-thread studio 安装;
 灵活配置软件包(FSP)
 CPK-RA2L1板级支持包安装
usb转串口工具
(具体的步骤可参考瑞萨RA2L1开发实践指南,图文并茂,十分详细)

2、另外用到软件:
(1)中景园电子1.8寸显示屏自带汉字编码软件
(2)音乐编码软件Music Encode,通过手动输入简谱进行转换,如下图所示。

1.jpg

四、关键代码:

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;
}
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;
}
}
key.h
#define KEY_NEXT_PIN 4
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;
}

温馨提示:以上内容整理于网络,仅供参考,如果对您有帮助,留下您的阅读感言吧!
相关阅读
本类排行
相关标签
本类推荐

CPU | 内存 | 硬盘 | 显卡 | 显示器 | 主板 | 电源 | 键鼠 | 网站地图

Copyright © 2025-2035 诺佳网 版权所有 备案号:赣ICP备2025066733号
本站资料均来源互联网收集整理,作品版权归作者所有,如果侵犯了您的版权,请跟我们联系。

关注微信