damoplus
发表于 2011-4-27 11:43:03
好东西立马收下,谢谢楼主!
shi_90
发表于 2011-4-27 13:41:08
楼主很牛啊!!!
sharpufo
发表于 2011-4-27 14:28:41
回复【96楼】oyjpt
-----------------------------------------------------------------------
无关紧要的警告。
例如:中文字符的警告、有些变量未用到的警告,函数隐式声明,等等,我也比较懒,这些警告都没改掉。
建议使用最新版本 0.03 在【67楼】.
注意:我使用的ZE外部晶振是16.9344M,默认6倍频。你的ZE不必是这个频率,但是应该修改倍频数使速度至少在64MHZ以上。
同时初始化TIM3的时候应该使其中断周期为10ms.即修改Timer_Config(100,(6773)*RCC_PLL_CLOCKMUL/4);这一行
另外ATMEGA48接的晶振必须是16.9344M. 音轨文件采样率必须为44100,16位,可以是单声道或者双声道.
FLAC文件压缩率只能是在LV0-LV2
按键说明:
正常播放模式时: 上- 短按进入当前目录的音轨选择,长按进入目录选择
下- 长按改变重复播放模式,依次为 全部、目录、单曲、随机(所有文件不重复乱序)
左- 短按上一曲 ,长按快退10秒
右- 短按下一曲,长按快进10秒
中- 短按暂停、播放切换
在选择界面时:
上- 短按、按住光标向上滚动
下- 短按、按住光标向下滚动
左- 退出
右- ENTER
中- 短按下一页,长按上一页。
lvhaian
发表于 2011-4-27 15:55:32
我一开始是直接替换成 3.5 的库和 Fatfs0.08A, 但是发觉 fatfs 0.08 和 0.07 有些不一样。于是换回来了。
我用的屏是 SSD1963.
sharpufo
发表于 2011-4-27 18:25:43
回复【103楼】lvhaian 安哥
我一开始是直接替换成 3.5 的库和 fatfs0.08a, 但是发觉 fatfs 0.08 和 0.07 有些不一样。于是换回来了。
我用的屏是 ssd1963.
-----------------------------------------------------------------------
为了通过f_readdir函数得到文件的长文件名unicode,这个工程中的0.07e中的ff.c是修改过的。
没有开启长文件名支持,但是可以通过f_readdir函数得到文件的长文件名unicode.文件寻址操作(f_open)是通过短文件名的。
用的库是2.0.3的,屏幕我的是otm3225,具体lcd驱动部分在tft_otm3225.c需要根据你的屏幕修改。
sharpufo
发表于 2011-4-27 18:55:19
回复【84楼】mldcq
-----------------------------------------------------------------------
不好意思,敝人没做录音模块。貌似网上就有很多吧?
oyjpt
发表于 2011-4-27 20:42:58
老大你的那个tft屏在哪里买的,能不能给个链接,谢谢了!
sharpufo
发表于 2011-4-27 22:37:30
回复【106楼】oyjpt
-----------------------------------------------------------------------
不想有广告嫌疑,自己去找吧,2.4寸 TFT C51 AVR STM32 单片机配件,你问下是不是otm3225.
LGDSTM
发表于 2011-4-27 22:46:55
强悍
oyjpt
发表于 2011-4-27 23:12:36
好的谢谢了
zzh90513
发表于 2011-4-27 23:34:50
好东西
wuguoyan
发表于 2011-5-5 08:58:18
牛人 ~~~~
wuliaodew
发表于 2011-5-5 14:37:49
下来看看,支持个
myyule
发表于 2011-5-8 22:16:44
先手了
yusufu
发表于 2011-5-9 11:11:49
mark下~
bjj9217
发表于 2011-5-9 11:34:36
mark
lwg998
发表于 2011-5-9 12:40:31
做的很好,就是代码开起来有些费劲,技术不过关,呵呵。
zprs
发表于 2011-5-9 12:43:03
mark
flagyan
发表于 2011-5-9 14:22:56
绿色按键换成金属光泽的外观会更好看
relotus
发表于 2011-5-9 15:59:53
mark
cunlingwang
发表于 2011-5-13 11:02:37
强,没有你做的好!
lab1224
发表于 2011-5-14 16:48:59
学习学习
ansai0089
发表于 2011-5-14 16:56:21
顶一下
w3154
发表于 2011-5-18 09:46:10
很强悍啊。学习
zhzp
发表于 2011-5-18 10:18:29
这个要帮顶
10086
发表于 2011-5-19 18:47:10
音频的东东,最喜欢,谢谢楼主!!
tantao820
发表于 2011-5-23 16:40:01
楼主 0 0 3 更新下载不了,解压缩错误!
blackhorse21
发表于 2011-5-23 16:59:20
mark~珍藏~
jianbo513
发表于 2011-5-23 20:43:52
mark!
candice357
发表于 2011-5-25 17:06:23
好想收藏,但是下载不到唉。
liguozheng2008
发表于 2011-5-30 14:15:39
mark
dofly
发表于 2011-5-30 23:38:08
收藏了 谢谢
xuav
发表于 2011-5-31 10:12:18
STM32 music player
GNMXD
发表于 2011-5-31 11:44:14
mark and thanks
astankvai
发表于 2011-5-31 13:14:44
楼主注意身体啊,身体要紧啊。
革_命的本钱啊!
lwqdyxgood
发表于 2011-5-31 13:17:56
标题写得真是人才呀!
ouyj_0210
发表于 2011-5-31 14:09:37
mark
zgslynn
发表于 2011-5-31 14:27:23
mark 下~~不容易啊~
ep1c3
发表于 2011-6-24 17:31:14
下班了,明天再看
tmfwt
发表于 2011-6-24 18:17:47
当然的Cool了!
qq2203049
发表于 2011-6-24 19:52:51
mark 支持楼主
orange2348
发表于 2011-6-24 20:42:38
Mark 学习
Ideal-007
发表于 2011-6-25 18:54:21
好东西,要顶!
lsz7269
发表于 2011-6-26 21:00:02
楼主提供的TFT图纸LCD_RS-->A0,
程序中#define Bank1_SRAM4_ADDR ((u32)0x6C000000)
#define LCD_DATA_ADDR (Bank1_SRAM4_ADDR + 0x20000F)
#define LCD_CMD_ADDR(Bank1_SRAM4_ADDR + 0)
我不是很明白,我理解应该为:
#define Bank1_SRAM4_ADDR ((u32)0x6C000000)
#define LCD_DATA_ADDR (Bank1_SRAM4_ADDR + 1)// Bank1_SRAM4_ADDR + 2是不是也可以?
#define LCD_CMD_ADDR(Bank1_SRAM4_ADDR + 0)
我是菜鸟,不知理解对不对,烦请解惑,谢谢!
LitePuter_uvn
发表于 2011-6-27 15:00:08
很专业~
linux5Blue19
发表于 2011-6-27 16:04:44
支持LZ,就是机器的作工要改进一下。我也准备做一个带功放和音箱一体的。
cxjnet
发表于 2011-6-29 00:27:21
太好了有时间要搞一个玩玩
spk459
发表于 2011-7-2 23:13:04
MARK 一下。
au730
发表于 2011-7-3 00:51:09
mark
billbot501
发表于 2011-7-4 22:03:08
mark
lzz000655
发表于 2011-7-5 14:51:27
不错不错!
sharpufo
发表于 2011-7-8 20:52:20
回复【127楼】tantao820
楼主 0 0 3 更新下载不了,解压缩错误!
-----------------------------------------------------------------------
请用迅雷等下载工具再次下载,注意看文件大小,看压缩包是否完整。
kingboy100
发表于 2011-8-2 07:57:55
mark
dragonbbc
发表于 2011-8-2 08:43:22
mark,有空慢慢研究
jyjmaster
发表于 2011-8-2 10:05:44
MARK==
Spunky
发表于 2011-8-2 15:27:00
mark
shuian_10
发表于 2011-8-6 08:42:07
mark
silence-7
发表于 2011-8-7 10:28:49
强烈围观中。。。。
sibaru
发表于 2011-8-8 10:45:16
现在也在做类似的东西,用了大大的代码中的flac解码部分,但现在解出来的PCM码失真很大
看到说明里讲flac模块用的是traxmod的代码,但现在traxmod的官网上不去了,希望大大能发一份traxmod的flac代码上来,谢谢了!
cheungman
发表于 2011-8-8 12:03:17
回复【159楼】sibaru
现在也在做类似的东西,用了大大的代码中的flac解码部分,但现在解出来的pcm码失真很大
看到说明里讲flac模块用的是traxmod的代码,但现在traxmod的官网上不去了,希望大大能发一份traxmod的flac代码上来,谢谢了!
-----------------------------------------------------------------------
解码出来的PCM不能会有失真的, 不然FLAC就不叫无损了... 估计是你音频I2S输出有问题.
sibaru
发表于 2011-8-8 22:51:35
回复【160楼】cheungman
-----------------------------------------------------------------------
我没有用I2S输出,就是简单地将生成的PCM码流加上WAV文件头,作为WAV文件写入文件系统。
发现生成的WAV文件大小比正常解出来的WAV大小少了整整一半,播放出来的话,能听出大致声音,但是有失真。
现在我找不出什么可能的错误的地方,只能先找找lz提到的traxmod的flac模块看看了。
sibaru
发表于 2011-8-8 22:53:11
while(br= fread(flac_read_buf,1,fc.max_framesize,flacfile))
{
j++;
bytesleft = br;
i = flac_decode_frame(&fc, decoded_buf, flac_read_buf,bytesleft);
if(i < 0)
{
eof=1;
bytesleft=0;
printf("fail!\n");
return 1;
}
decoded_buf_sz=fc.blocksize*fc.channels;
consumed = fc.gb.index / 8;
//fwrite(decoded_buf,1,decoded_buf_sz,outfile);
fwrite(decoded_buf,1,decoded_buf_sz,outfile);
for(i=0;i<2*FLAC_MAX_BLOCKSIZE;i++)
decoded_buf=0;
fseek(flacfile,consumed-bytesleft,SEEK_CUR);
}
大致循环就是这样,其中调用的都是lz的flac库里的函数,我觉得应该没啥问题的啊
lixupeng
发表于 2011-8-12 13:03:28
mark!!
moyuker
发表于 2011-8-13 22:45:23
有创意。好好学习。
fickle
发表于 2011-8-14 03:12:08
好好学习。
yeson
发表于 2011-8-23 15:46:28
我用PCM 1794 也是用I2S 不知道是否一样,考虑用触摸屏,我已经购买了,不过论坛好像关于触摸的程序不多!
jiangguoliang
发表于 2011-8-24 08:40:09
mark
sen0210
发表于 2011-8-24 16:48:57
回复【楼主位】sharpufo 风生水起月皎白
-----------------------------------------------------------------------
收藏
yeson
发表于 2011-8-25 18:23:19
用maga16代替maga48可以吗?
xintaisniper
发表于 2011-8-25 21:16:07
mark!!
Mleaf
发表于 2011-8-27 00:01:37
厉害啊,支持楼主了,感谢分享。
yeson
发表于 2011-8-30 14:05:42
楼主,我也在做STM32的播放机。能留下联系方式,有很多问题咨询
yeson
发表于 2011-9-3 10:49:36
楼主你的TFT_OTM3225.c 里面的函数能否给多一点注释。作用是什么?但不知道后面有些函数的作用!我的TFT跟楼主的不同。我的学习板例程当中TFT程序能正常使用,于是我就更改fsmc_lcd.c和fsmc_lcd.h替换了你的,试着把只是改了LCD_WRITE_CMD() 和LCD_WRITE_DATA()这两个函数内部,也是不能点亮TFT.估计要把otm3225.c里面函数改才行。
例如:好像
void LCD_PutChar8x16()和void LCD_PutChar8x16_OR 不知道到各自的作用是什么?
void LCD_PutChar()和void LCD_PutChar_OR()有什么不同,从名称上看不出的它的作用
void LCD_Txt_Putc(unsigned char c)和void LCD_Txt_Roll_Up(void)又不知道是作用是什么?
yeson
发表于 2011-9-3 11:15:46
__inline void LCD_WRITE_CMD(U16 index) //写命令到TFT
{
*(vu8*)LCD_CMD_ADDR=(index>>8);
*(vu8*)LCD_CMD_ADDR=(index);
//FSMC_LCD_Write_Byte(index>>8,0);
//FSMC_LCD_Write_Byte(index,0);
}
__inline void LCD_WRITE_DATA(U16 Data) //写数据到TFT
{
*(vu8*)LCD_DATA_ADDR=(Data>>8);
*(vu8*)LCD_DATA_ADDR=(Data);
//FSMC_LCD_Write_Byte(Data>>8,1);
//FSMC_LCD_Write_Byte(Data,1);
}
这段也不太明白,*(vu8*)是什么来的,在哪里定义了。而且后面FSMC_LCD_Write_Byte()为什么给注释掉。 这个不是写入TFT的主要函数吗?
mydust
发表于 2011-9-8 13:25:25
做的不错
lkl10800139
发表于 2011-9-10 11:43:57
mark
sharpufo
发表于 2011-9-11 23:46:51
回复【162楼】sibaru
-----------------------------------------------------------------------
"fwrite(decoded_buf,1,decoded_buf_sz,outfile); "
这里错了,decoded_buf_sz是解码后缓冲区的大小,但其指decoded_buf是short int型(16位),每采样是2字节,所以应该是
"fwrite(decoded_buf,1,decoded_buf_sz*2,outfile); "
回复【175楼】yeson
-----------------------------------------------------------------------
void LCD_PutChar8x16()和void LCD_PutChar8x16_OR 的差别是一个是背景会被指定颜色覆盖,后一个会保留背景。
void LCD_PutChar()和void LCD_PutChar_OR()同上
void LCD_Txt_Putc(unsigned char c)向文本ASC缓存里输入一个字符c
void LCD_Txt_Roll_Up(void) 文本ASC缓存向上滚动一行
vu8:volatile unsigned char 的宏定义
该操作直接向TFT的地址进行字节写操作,而FSMC_LCD_Write_Byte()是函数,被替换掉可以省掉调用函数的开销.
majia256
发表于 2011-9-13 12:54:23
很好很强大
yeson
发表于 2011-9-20 15:53:34
回复【180楼】sharpufo
-----------------------------------------------------------------------
你好,有没有之前用128*64类似的液晶显示,只播WAV的,我是103RBT,看了你的介绍估计不能解码FLAC吧!我想先仿造一个,我一只想把你的移植到我的TFT上面也弄一个听,光移植TFT搞了2个星期还是不行。所以打算从简!
yeson
发表于 2011-9-22 18:29:51
如何把otm3225的程序改成ILI93XX系列的TFT啊!我尝试过,好像两个驱动芯片相差很远,比较复杂!有无人高手有移植的经验
yeson
发表于 2011-9-23 10:07:49
回复【180楼】sharpufo
-----------------------------------------------------------------------
我用学习板做了一个界面,已经能显示根目录,子目录,带触摸的。现在想加入WAV播放。但对楼主的WAV播放源代码有很多不明白。不知道是如何实现播放的?
我理解是这样,不知道是否正确。应该在先用WAV_Check_PCM_Buf_And_Refill()检查PCM_Buf 里面是否有内容,然后WAV_Fill_PCM_Buf()把读出的wav内容填入,然后执行playWAV()
int playWAV(char * filename)
{
FIL file;
UINT br;
int i,pause_play,pause_disp;
int eof;
struct wavhead head;
U32 freq;
INIT_PLAY_WAV:
pause_play=0;
DISABLE_AUDIO;
if(f_open(&file,filename,FA_READ)!=FR_OK)return 1;
LoadWavHead(&file,&head);
DumpWavHead(&head);
freq=head.fmt.SamplePerSec;
if(
//freq!=I2S_AudioFreq_48k &&
freq!=I2S_AudioFreq_44k// &&
//freq!=I2S_AudioFreq_22k &&
// freq!=I2S_AudioFreq_16k &&
// freq!=I2S_AudioFreq_8k
)
{f_close(&file);return 2;}
if(head.fmt.Channels!=2 && head.fmt.Channels!=1)
{f_close(&file);return 2;}
if(head.fmt.BitsPerSample!=16)
{f_close(&file);return 2;}
if(head.dataOffset)
f_lseek(&file,head.dataOffset);
else return 2;
//I2S_SetFreq(head.fmt.SamplePerSec);/*if use iis in stm32 instead you have to set samplerate before enable audio play 。*/
LCD_Txt_Set_YX(TIM_DIS_LINE,0);
LCD_Printf("PLAYTIME :");
LCD_Txt_Display();
LCD_BMP( 0,0,15,15,icon_folder);
LCD_BMP( 0,3*16,15,3*16+15,icon_music_red);
//播放前先填充满缓冲区
WAV_Fill_PCM_Buf(&file,&head);
eof=0;oldtime=-1;
pcm_send_data=0;
sync_lrck=1;
ENABLE_AUDIO;
while(eof==0)
{
if(key_right||key_left||key_up ||key_up_long)
{
DISABLE_AUDIO;
f_close(&file);
if(nowtime>10 && key_left){key_left=0;goto INIT_PLAY_WAV;}
return 0;
}
//检测并重填缓冲区
WAV_Check_PCM_Buf_And_Refill(&file,&eof,&head);
//更新时间显示
WAV_TimeUpdate(&file,&head);
//暂停<->播放 pause<->play
if(key_play)
{
key_play=0;
if(pause_play==0)
{
pause_play=1;
DISABLE_AUDIO;
LCD_PutString(200,(TIM_DIS_LINE)*16,"PAUSE",RED,BLACK);
}
else
{
LCD_PutString(200,(TIM_DIS_LINE)*16," ",RED,BLACK);
pause_play=0;
pcm_buf.ptr &= 0xfffe;
sync_lrck=1;
ENABLE_AUDIO;
}
}
//暂停状态时跳动显示"PAUSE"字符
if(pause_play)
{
pause_disp++;
if(pause_disp==PAUSE_DISP_TIME)
LCD_PutString(200,(TIM_DIS_LINE)*16," ",RED,BLACK);
if(pause_disp>=2*PAUSE_DISP_TIME)
{
pause_disp=0;
LCD_PutString(200,(TIM_DIS_LINE)*16,"PAUSE",RED,BLACK);
}
}
}
//等待剩余数据发送完
for(eof=0;;)
{
for(i=0;i<PCM_BUFFER_NUM;i++)
if(pcm_buf.ptr>=pcm_buf.size)eof++;
if(eof>=PCM_BUFFER_NUM)break;
}
DISABLE_AUDIO;
f_close(&file);
return 0;
}
但我省略了快进部分代码贴出来,对playWAV()里面的运作过程就是不太明白,既然是从SPI,应该有接受到主MEGA48发出信号,才送出信号,但为什么在这函数里面没有检测,如何把WAV送到SPI2上面的呢?还有比如INIT_PLAY_WAV作用是什么;不知道在那里定义。没有找到!DISABLE_AUDIO ENABLE_AUDIO; 我在commone.h里面找到定义,只是SPI发送一个指令?这个指令到底什么作用 到底那个部分说明了把数据传到spi口,怎么好像没有找到这部分的命令,另外PCM_BUM 是定义为SPI的数据寄存器吗的地址吗?怎么我没有找到的!
也上问题请楼主帮忙解答,小弟万分感激
yeson
发表于 2011-9-23 11:54:31
回复【63楼】sharpufo
(原文件名:sd_card.jpg)
引用图片
-----------------------------------------------------------------------
void SPI2_GPIO_config(void)
{
GPIO_InitTypeDef GPIO_InitStructure;
/* Disable the JTAG interface and enable the SWJ interface */
/* Configure SPI2 pins: CK, WS and SD */
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_12 | GPIO_Pin_13 | GPIO_Pin_15;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;
GPIO_Init(GPIOB, &GPIO_InitStructure);
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_14;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_OD;
GPIO_Init(GPIOB, &GPIO_InitStructure);
}
怎么SPI2 SD卡接口跟上面的原理图好像不对应
automaticdai
发表于 2011-9-23 11:54:42
感谢楼主分享。
rj1985
发表于 2011-9-23 13:26:28
Mark,太帅了
sharpufo
发表于 2011-9-23 20:41:01
回复【184楼】yeson
-----------------------------------------------------------------------
SPI2做从机,在atmega48发送的CS片选信号周期内,SPI2被激活并在BCK信号的每个周期送出SPI发送寄存器的1位数据,共16位。发送完16位数据后会同时接收到16位数据并进入【接收中断】。在【接收中断】里准备下一次SPI传输的数据,注意,接收到的是无用的数据,进入接收中断是为了准备下次SPI传输的数据。
把SPI2使能就开始传送音频数据了,禁能就停止传送。
先填充满缓冲区数据,然后使能SPI2就开始传送数据,在playWAV主循环中不断检查缓冲区是否发送完,并进行重填,直至文件结束或者检查到有相关按键。
yangyi
发表于 2011-9-23 21:36:13
很强悍!
yeson
发表于 2011-9-25 11:45:59
回复【188楼】sharpufo
回复【184楼】yeson
-----------------------------------------------------------------------
spi2做从机,在atmega48发送的cs片选信号周期内,spi2被激活并在bck信号的每个周期送出spi发送寄存器的1位数据,共16位。发送完16位数据后会同时接收到16位数据并进入【接收中断】。在【接收中断】里准备下一次spi传输的数据,注意,接收到的是无用的数据,进入接收中断是为了准备下次spi传输的数据。
把spi2使能就开始传送音频数据了,禁能就停止传送。
先填充满缓冲区数据,然后使能spi2就开始传送数据,在playwav主循环中不断检查缓冲区是否发送完,并进行重填,直至文件结束或者检查到有相关按键。
-----------------------------------------------------------------------
感谢,sharpufo的热心解答,但我之前好象看到你有说到用到TIM3触发,作用是什么?
我一直想想跑起你的程序,发现来的103ZE用到了GPIOG口,我的实验板却是103RBT6没有G口。所以只好找回你以前发布的HELLO WAV PLAER。同样的都是RBT6的芯片,已经成功改了TFT程序,能点亮TFT和显示英文字符,但却无法显示中文,估计在SPI1卡了,无法读取SD,导致字库无法读取。我大概看了你的MMC代码,好象只有CS跟我的实验板不同,我也相应更改了PA3,但还是不行这个项目都没有找到关于IO口设定的语句,另外发现你HELLO WAVPLAYER的WAV播放好象跟现在ZE这个不一样。好象用到TIM。还望指导
yeson
发表于 2011-9-26 08:56:46
sharpufo 能留下你的QQ吗?或者加我:1951873 关于HELL WAV PLAYER ,我现在已经移植到我的实验板,能显示TFT,但卡在LCD初始化,三个颜色部分,后来我把TFT程序单独建立一个项目,发现,能先显示英文字符,但中文不能显示,通过调试发现,原来不能读SD取得字库文件,整个程序卡在SD读取部分 。我后来也认真研究过,可能我的板子很的SPI1 CS 引脚不同,我已经在MMC.c里面,这里改成我的板子CS 为PA.3引脚。但还是未能读取SD卡,想请教的程序,还有那部分是关于SPI1的设置,我知道SPI口关于GPIOA的设置了。
#define SELECT() GPIO_ResetBits(GPIOA, GPIO_Pin_3)
#define DESELECT() GPIO_SetBits(GPIOA, GPIO_Pin_3)
另外我发现,你的ZE那个播放机SD卡,怎么用那么多IO脚,不是就4个吗,难道不是SPI模式
sharpufo
发表于 2011-9-27 21:53:09
回复【191楼】yeson
-----------------------------------------------------------------------
由于种种原因,已经离开这个圈子,几个月不接触这个了,HELLO WAV PLAYER 更久,很多细节已经淡忘。
ZE SD卡是SDIO 4bit模式,不是SPI模式.
HELLO WAV PLAYER用 的RB 是SPI模式.
shi_90
发表于 2011-9-28 08:54:26
mark
yeson
发表于 2011-9-28 10:14:36
回复【192楼】sharpufo
回复【191楼】yeson
-----------------------------------------------------------------------
由于种种原因,已经离开这个圈子,几个月不接触这个了,hello wav player 更久,很多细节已经淡忘。
ze sd卡是sdio模式,不是spi模式.
hello wav player用 的rb 是spi模式.
-----------------------------------------------------------------------
很谢谢你,公开源代码,为我们这些后来的菜鸟提供很好借鉴。我理解你因为自己的原因不在涉及这方面的内容,抱歉给你带来麻烦,也希望你能见谅,作为一个后来学习者,遇到问题,有暂无发处理的心情。如果真的如果,有时间能否把你关于这方面的代码资料,打包发一次给我,不必专门整理。因为HELLO WAV PLAYER。实在有部分函数丢失了。如果真的没有时间和已经没有资料,按就算了。由衷感谢你的帮助。
也回报一下这几天的成绩,TFT我从其他地方拿来了函数,自己更改,终于能显示了,中文英文都可以了。原来不能读卡是因为hello wav plaer 里面的SD卡底层 mmc.c里面缺失了SPI1的使能和对应IO配置函数!我也补充上去终于能读卡了。但显示还是存在问题,只限BMP显示,我还会努力去理解你的程序的。当然还发现主程序当中,不知道什么原因 delayms无法启动 ms10_counter无法增加, 导致程序卡死!
我想你现在也对这个不太感兴趣。仍然最后感谢!我还是会努力尝试去做。尽管可能最后结果未如所愿!谢谢你
sharpufo
发表于 2011-9-28 12:09:26
其实也没有更多的代码资料,不知道丢失是哪些函数呢?
ms10_counter不增加表明没有正常进入TIM3中断。
yeson
发表于 2011-9-28 23:16:05
回复【195楼】sharpufo
其实也没有更多的代码资料,不知道丢失是哪些函数呢?
ms10_counter不增加表明没有正常进入tim3中断。
-----------------------------------------------------------------------
没有了stm32_Init(); 所以这个程序无法运行,我后来自己增加上去。能编译了,然后能出到上面的菜单,但通过JTAG调试发觉ms10_counter 没有增加,正如你所说可能没有进入TIM3中断,我查看TIM3的寄存器,也没有使能,那么我想估计你丢失了TIM3的使能函数,TIM2有使能,却没有相关中断或者作用函数,还有所有中断函数的文件好像没有了。没有了,不知道你原来的中断如何设定的。有SPI2的使能,但却没有SPI2 IO配置 包括按键KEY几个键的IO口输出输入配置。
因为HELLO WAV PLAYER这个播放器跟我的实验板 MCU都是 STM32F103RBT 比较接近,所以比较好移植,但楼主你之前公布的HELLO WAV PLAYER这个单WAV播放器的rar包应该是半成品,就如上面我说的那些函数都没有,,而OOPLAYER 这个又相差比较大。所以不好替换!希望楼主真的有时间能找着,HELLO WAV PLAYER之后成功后的这个项目我想先弄好这个,才搞OOPLAYER这个带FLAC的项目。
weichao4808335
发表于 2011-9-29 07:50:49
mark
conanbob
发表于 2011-10-8 10:29:04
mark ,学习了
esdart
发表于 2011-10-8 11:08:33
漂亮的很啊。
yaya001
发表于 2011-10-8 13:20:41
mark
726544893
发表于 2011-10-8 18:02:01
不错的播放器,标记学习!
wanwanmcu
发表于 2011-10-9 20:20:14
回复【102楼】sharpufo
-----------------------------------------------------------------------
顶
jackiezeng
发表于 2011-10-9 21:12:37
mark