參考:
我基本就是按照以上這個連線裡面的來的。其中的define的值就是這些音的頻率。
定義各個變數:
#define d0 -1
#define d1 262//頻率
#define d2 293
#define d3 329
#define d4 349
#define d5 392
#define d6 440
#define d7 494
#define m1 523
#define m2 586
#define m3 658
#define m4 697
#define m5 783
#define m6 879
#define m7 987
#define h1 1045
#define h2 1171
#define h3 1316
#define h4 1393
#define h5 1563
#define h6 1755
#define h7 1971
uint16_t tune_durt[98][2] =
,,,,
,,,,
,,,,
,,,,,,,
,,,,
,,,,
,,,,,,,
,,,,,
,,,,,
,,,,
,,,,
,,,,,
,,,,
,,,,,,,
,,,,,
,,,,,
,,,,
,,,,
,,,,,
,,,,
,,};
uint16_t length_of_whole_music=98;
uint16_t music_tune=0,music_last_tune=0,music_durt_length,durt_count=0;
uint16_t where_is_singing=0;
uint16_t length_of_music_meter=2;//the time of one meter in music
uint16_t music_gap_count=0;
uint16_t music_gap_length=3;
進行控制變數的操作
music_last_tune=music_tune;
if(durt_count>=music_durt_length)
music_gap_count++;
if(music_gap_count>=music_gap_length)//music gap£ºthe gap between two meters
durt_count=0;
music_durt_length=tune_durt[where_is_singing][1]*length_of_music_meter;
music_tune=tune_durt[where_is_singing][0];}}
durt_count++;
利用控制變數對微控制器底層進行操作:
if(music_gap_count>0)
else
if(music_last_tune!=music_tune)
//change tune
最後當然是成功啦~~ 微控制器學習(一) 微控制器基礎 STM32
io四種輸入工作模式 io四種輸出工作模 stm32有8個16位定時器 stm32具有強大的異常響應系統,它把能夠打斷當前 執行流程的事件分為異常 exception 和中斷 interrupt 並把它們用乙個表管理起來,編號為 3 6的中斷向量定義為系統異常,編號從7到19的為外部中斷。中斷向量控...
微控制器 STM32庫開發
1.stm32庫開發是什麼?st公司推出的基於cortex m3核心的mcu 微控制器,也就是通常所說的微控制器 倡導使用韌體庫開發,僅通過呼叫庫裡面的api 應用程式介面 就可以迅速搭建乙個程式,寫出各種使用者需要的應用。庫開發方式自頂向下,可以避免對底層暫存器的繁瑣操作,能大大降低學習門檻和開發...
stm32mcuid規則 STM32微控制器命名規則
stm32 系列微控制器命名規則 stm32 f 103 c 8 t 6 1 2 3 4 5 6 7 8 產品系列名 固定為 stm32 和 產品系列 f 通用系列 0xx 入門級 mcu0x0 超值系列在傳統 位和位市場極具競爭力 0x1 實現了高度的功能整合,提供多種儲存容量和封裝的選擇,為成本...