找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開始

搜索
查看: 3176|回復(fù): 0
打印 上一主題 下一主題
收起左側(cè)

STM32驅(qū)動(dòng)LD3320源程序

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ld3320單片機(jī)程序
1、STM32的用戶 可以直接 在工程里面 添加如下4個(gè)文件1》LD3320_main.c  2》LDChip.c  3》Reg_RW.c 4》delay.c

2、51的用戶同時(shí)可以根據(jù)以上操作來(lái)做相關(guān)的修改。


完整的單片機(jī)驅(qū)動(dòng)程序源碼下載:
基于STM32 的 LD3320基本驅(qū)動(dòng)程序.zip (62.69 KB, 下載次數(shù): 30)




部分代碼預(yù)覽:
  1. /************************************************************************************
  2. **        版權(quán)所有:Copyright (c) 2005 - 2010 ICRoute INC.
  3. ** 硬件說(shuō)明:STM32f103vet6  8MHZ  內(nèi)部時(shí)鐘為72MHZ
  4. **                                          LD3320 有源晶振 12MHZ  不同的晶振請(qǐng)修改LDChip.h 中的定義值(#define CLK_IN  12)
  5. ** 軟件說(shuō)明:并行讀寫寄存器方式,如采用其他方式即修改Reg_RW.c 文件即可!
  6. ** 修改者:  http://shop64790118.taobao.com/
  7. ** 時(shí)間:2011.10.15
  8. **
  9. ************************************************************************************/

  10. #include  <stm32f10x_conf.h>
  11. #include  <stm32f10x.h>

  12. #include "LDchip.h"
  13. #include "Reg_RW.h"

  14. #include "delay.h"
  15. #include  "gui_include.h"

  16. /************************************************************************************/
  17. //        nAsrStatus 用來(lái)在main主程序中表示程序運(yùn)行的狀態(tài),不是LD3320芯片內(nèi)部的狀態(tài)寄存器
  18. //        LD_ASR_NONE:                表示沒(méi)有在作ASR識(shí)別
  19. //        LD_ASR_RUNING:                表示LD3320正在作ASR識(shí)別中
  20. //        LD_ASR_FOUNDOK:                表示一次識(shí)別流程結(jié)束后,有一個(gè)識(shí)別結(jié)果
  21. //        LD_ASR_FOUNDZERO:        表示一次識(shí)別流程結(jié)束后,沒(méi)有識(shí)別結(jié)果
  22. //        LD_ASR_ERROR:                表示一次識(shí)別流程中LD3320芯片內(nèi)部出現(xiàn)不正確的狀態(tài)
  23. /***********************************************************************************/
  24. uint8 nAsrStatus=0;        

  25. #define DEMO_SOUND_SIZE 1235

  26. void LD3320_Init(void);

  27. uint8 RunASR(void);
  28. void ProcessInt0(void);
  29. void LD3320_EXTI_Cfg(void);
  30. void LD3320_NVIC_Cfg(void);

  31. u8 ld3320_exti=0;         //中斷標(biāo)志信號(hào),為1是代表中斷產(chǎn)生。以下采用查詢方式。
  32. /************************************************************************************/
  33. //        這個(gè)示范程序是基于STC10L08XE編譯的完整地,可以執(zhí)行的程序
  34. //        實(shí)現(xiàn)了從數(shù)組中播放的功能
  35. //  
  36. //  verygood_withHead.mp3(verygood_withoutHead)是一段MP3格式的聲音文件,播放內(nèi)容為英文單詞"very good"
  37. //        demosound.h 中定義了數(shù)組 bpDemoSound[],
  38. //  數(shù)組的內(nèi)容就是 verygood_withHead.mp3(verygood_withoutHead)文件的內(nèi)容
  39. //  用戶可以用16進(jìn)制閱讀器(比如 UltraEdit )打開verygood_withHead.mp3文件和 bpDemoSound 數(shù)組相對(duì)照
  40. //
  41. //        關(guān)于兩個(gè)MP3文件的差異:  
  42. //        這兩個(gè)MP3文件只差有沒(méi)有ID3文件頭,MP3的數(shù)據(jù)都是一樣的,
  43. //        ID3文件頭傳入LD芯片與否不影響播放
  44. //  用Windows自帶的MediaPlayer播放沒(méi)有ID3頭的vertygood_withoutHead.mp3 后,會(huì)自動(dòng)加上ID3文件頭
  45. //  PlayDemoSound_Once/PlayDemoSound_Continue 函數(shù)就是把 bpDemoSound數(shù)組中的數(shù)據(jù)依次傳入LD3320芯片進(jìn)行播放
  46. //
  47. //  與LD3320芯片有關(guān)的函數(shù)功能,都在"開發(fā)手冊(cè).pdf"中有詳細(xì)說(shuō)明
  48. //        請(qǐng)開發(fā)者對(duì)照"開發(fā)手冊(cè).pdf“閱讀
  49. //        
  50. //        開發(fā)者在學(xué)習(xí)LD3320開始時(shí),可以直接把在這個(gè)main函數(shù)拷貝到自己?jiǎn)纹瑱C(jī)中編譯運(yùn)行
  51. //        
  52. //        當(dāng)然,用戶要根據(jù)自己實(shí)際的單片機(jī)去修改 mcu_init ,以及對(duì)應(yīng)的管腳連接的定義,中斷定義
  53. /************************************************************************************/

  54. void  LD3320_main(void)
  55. {

  56.         nAsrStatus = LD_ASR_NONE;                //        初始狀態(tài):沒(méi)有在作ASR
  57.         while(1)
  58.         {
  59.          switch(nAsrStatus)
  60.                 {
  61.                         case LD_ASR_RUNING:
  62.                         case LD_ASR_ERROR:               
  63.                                                                                                 break;
  64.                         case LD_ASR_NONE:

  65.                                                                                         nAsrStatus=LD_ASR_RUNING;
  66.                                                                                         if (RunASR()==0)        //        啟動(dòng)一次ASR識(shí)別流程:ASR初始化,ASR添加關(guān)鍵詞語(yǔ),啟動(dòng)ASR運(yùn)算
  67.                                                                                         {               
  68.                                                                                                 nAsrStatus = LD_ASR_ERROR;
  69.                                                                                         }
  70.                                                                                         break;

  71.                         case LD_ASR_FOUNDOK:

  72.                                                                                         LD_GetResult();        //        一次ASR識(shí)別流程結(jié)束,去取ASR識(shí)別結(jié)果                                
  73.                                                                                         nAsrStatus = LD_ASR_NONE;
  74.                                                                                         break;
  75.                         
  76.                         case LD_ASR_FOUNDZERO:
  77.                         default:
  78.                                                                 nAsrStatus = LD_ASR_NONE;
  79.                                                                 break;
  80.                         }
  81.         
  82.           if(ld3320_exti !=0) {        /*采用查詢方式進(jìn)入中斷處理*/

  83.                  ld3320_exti =0;
  84.                  ProcessInt0();               
  85.                 }

  86.                   OSTimeDlyHMSM(0,0,0,50);


  87. …………限于本文篇幅 余下代碼請(qǐng)從51黑帖子頂部下載附件…………
復(fù)制代碼


分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏1 分享淘帖 頂 踩
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

手機(jī)版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表