STM32 微控制器控制無源蜂鳴器唱歌 歡樂頌

2021-07-31 00:08:42 字數 1747 閱讀 8617

參考:

我基本就是按照以上這個連線裡面的來的。其中的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 實現了高度的功能整合,提供多種儲存容量和封裝的選擇,為成本...