我不怕自己努力了不成功,我隻怕比我成功的人,比我更努力。 今天開始給大家分享幹貨啦!!
MP3播放器,很多年以前可是很流行的,而且價格不菲,現在一個智能手機不近打敗了MP3,連數碼相機,單反相機也幾乎全部幹掉了,這就是趨勢,跟不上趨勢終将被淘汰。
我們這裡演示MP3主要是前面項目裡面正好用到了這個模塊,而且對于新手來也容易上手,學習這個例子呢,其實你可能會感歎,産品開發原來也不難嘛!!事實也确實如此,開發産品其實就是把現有的技術拿來組裝,要不怎麼說工程師呢,其實就是幹貨的,農民工差不多,都是搬磚的,呵呵,扯遠了。但是要真正開發出一款好産品,不僅僅是簡單組合,而是要組合的恰到好處,即好看,又可靠,這才是合格産品設計師,往大了說才是合格的架構師。
言歸正傳,我們今天的例子是基于ARM的,說到ARM可能大家首先想到的是ST公司的STM32系列,确實現在單片機領域STM32占領了32位單片機領域的大半邊天,但是TM32太貴了,這裡給大家推薦一個兆易創新的GD32F130,國産的芯片性價比更高,穩定性也不錯。這次MP3播放器也是給予這個芯片演示的。
MP3播放器的功能比較簡單,就是在主循環裡面,循環播放SD卡裡面預存的8個MP3歌曲,所以流程圖太簡單,就不上了,直接上代碼了,總共十幾行代碼。
int main(void)
{
int song=0;//定義當前播放的歌曲
rcu_config();//配置模塊時鐘
gpio_config();//GPIO初始化
gd_eval_ledinit(LED1);//LED指示燈初始化
systick_config();//系統時鐘初始化
uartInit();//串口初始化,通過串口給MP3模塊發指令
delay_1ms(1000); //延時1000ms,主要是等待MP3模塊上電初始化完成,否則的話發指令會不響應
SendDataN((uint8_t *)(Command1[0]),6);//設置音量大小
delay_1ms(100); //延時100毫秒
SendDataN((uint8_t *)(songs[song ]),7); //播放第一首歌曲,同時song指向下一首要播放的歌曲
while (1)//主循環
{
delay_1ms(1000*60); //延時1分鐘,一首歌曲播放一分鐘後切換到下一首
SendDataN((uint8_t *)(songs[song ]),7); //發送播放歌曲指令,同時song指向下一首要播放的歌曲
if(song7)song=0;//歌曲總共有8首,播放到最後一首後,回到第一首循環播放
}
}
最後上效果視頻:
,
更多精彩资讯请关注tft每日頭條,我们将持续为您更新最新资讯!