PSC #define BUZZER_CCR TIM1->CCR1 extern uint8_t songNote_1[]; // 똑같아요 extern uint8_t songLength_1[]; extern uint8_t songNote_1_Len; extern uint8_t songNote_2[]; // 엘리제를 위하여 extern uint8_t songLength_2[]; extern uint8_t songNote_2_Len; extern uint8_t songNote_3[]; // 이웃집 토토로 OST 산책? extern uint8_t songLength_3[]; extern uint8_t songNote_3_Len; extern uint8_t songNote_4[]; // 하울의 움직이는 성 OST 인생의 회전목마? extern uint8_t songLength_4[]; extern uint8_t songNote_4_Len; void buzzerStart(uint8_t index, uint16_t volumn); #endif /* INC_BUZZER_H_ */"> PSC #define BUZZER_CCR TIM1->CCR1 extern uint8_t songNote_1[]; // 똑같아요 extern uint8_t songLength_1[]; extern uint8_t songNote_1_Len; extern uint8_t songNote_2[]; // 엘리제를 위하여 extern uint8_t songLength_2[]; extern uint8_t songNote_2_Len; extern uint8_t songNote_3[]; // 이웃집 토토로 OST 산책? extern uint8_t songLength_3[]; extern uint8_t songNote_3_Len; extern uint8_t songNote_4[]; // 하울의 움직이는 성 OST 인생의 회전목마? extern uint8_t songLength_4[]; extern uint8_t songNote_4_Len; void buzzerStart(uint8_t index, uint16_t volumn); #endif /* INC_BUZZER_H_ */"> PSC #define BUZZER_CCR TIM1->CCR1 extern uint8_t songNote_1[]; // 똑같아요 extern uint8_t songLength_1[]; extern uint8_t songNote_1_Len; extern uint8_t songNote_2[]; // 엘리제를 위하여 extern uint8_t songLength_2[]; extern uint8_t songNote_2_Len; extern uint8_t songNote_3[]; // 이웃집 토토로 OST 산책? extern uint8_t songLength_3[]; extern uint8_t songNote_3_Len; extern uint8_t songNote_4[]; // 하울의 움직이는 성 OST 인생의 회전목마? extern uint8_t songLength_4[]; extern uint8_t songNote_4_Len; void buzzerStart(uint8_t index, uint16_t volumn); #endif /* INC_BUZZER_H_ */">
#ifndef INC_BUZZER_H_
#define INC_BUZZER_H_

#include "main.h"

#define BUZZER_PSC		TIM1->PSC
#define BUZZER_CCR		TIM1->CCR1

extern uint8_t songNote_1[];		// 똑같아요
extern uint8_t songLength_1[];
extern uint8_t songNote_1_Len;
extern uint8_t songNote_2[];		// 엘리제를 위하여
extern uint8_t songLength_2[];
extern uint8_t songNote_2_Len;
extern uint8_t songNote_3[];		// 이웃집 토토로 OST 산책?
extern uint8_t songLength_3[];
extern uint8_t songNote_3_Len;
extern uint8_t songNote_4[];		// 하울의 움직이는 성 OST 인생의 회전목마?
extern uint8_t songLength_4[];
extern uint8_t songNote_4_Len;

void buzzerStart(uint8_t index, uint16_t volumn);

#endif /* INC_BUZZER_H_ */
// buzzer.c
#include "buzzer.h"

// 음계 도 C, C#, 레 D, D#, 미 E, 파 F, F#, 솔 G, G#, 라 A, A#, 시 B
uint16_t buzzerNote[] = {
	// 2옥타브 - 0도, 1도#, 2레, 3레#, 4미, 5파, 6파#, 7솔, 8솔#, 9라, 10라#, 11시
		1529, 1445, 1362, 1287, 1213, 1145, 1082, 1021, 963, 909, 858, 810,
	// 3옥타브 - 12도, 13도#, 14레, 15레#, 16미, 17파, 18파#, 19솔, 20솔#, 21라, 22라#, 23시
		764, 722, 681, 643, 606, 572, 540, 510, 481, 454, 429, 405,
	// 4옥타브 - 24도, 25도#, 26레, 27레#, 28미, 29파, 30파#, 31솔, 32솔#, 33라, 34라#, 35시
		382, 360, 340, 321, 303, 286, 270, 255, 240, 227, 214, 202,
	// 5옥타브 - 36도, 37도#, 38레, 39레#, 40미, 41파, 42파#, 43솔, 44솔#, 45라, 46라#, 47시
		191, 180, 170, 160, 151, 143, 135, 127, 120, 113, 107, 101,
	// 6옥타브 - 48도, 49도#, 50레, 51레#, 52미, 53파, 54파#, 55솔, 56솔#, 57라, 58라#, 59시
		95, 90, 85, 80, 75, 71, 67, 63, 60, 56, 53, 50
};

void buzzerStart(uint8_t index, uint16_t volumn) {
	BUZZER_PSC = buzzerNote[index];
	BUZZER_CCR = volumn;
}

// 엘리제를 위하여
uint8_t songNote_2[] = {
		28, 27, 28, 27, 28, 23, 26, 24, 21,	12, 16, 21, 23, 16, 20, 23, 24,
		16, 28, 27, 28, 27, 28, 23, 26, 24, 21,	12, 16, 21, 23, 16, 24, 23, 21,
		23, 24, 26, 28, 19, 29, 28, 26,	17, 28, 26, 24, 16, 26, 24, 23,
		28, 16, 28, 28, 40, 27, 28, 27, 28, 27, 28,	27, 28, 27, 28, 27, 28, 23, 26, 24, 21,
		12, 16, 21, 23, 16, 20, 23, 24
};
uint8_t songLength_2[] = {
		4, 4, 4, 4, 4, 4, 4, 4, 12,	4, 4, 4, 12, 4, 4, 4, 12,
		4, 4, 4, 4, 4, 4, 4, 4, 4, 12, 4, 4, 4, 12, 4, 4, 4, 12,
		4, 4, 4, 12, 4, 4, 4, 12, 4, 4, 4, 12, 4, 4, 4, 12,
		4, 4, 4, 4, 8, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 12,
		4, 4, 4, 12, 4, 4, 4, 12
};
uint8_t songNote_2_Len = sizeof(songNote_2) / sizeof(songNote_2[0]);

// 하울의 움직이는 성 OST 인생의 회전목마?
uint8_t songNote_4[] = {
		// Intro
		28, 26, 24, 28, 31, 29,	28, 26, 24, 28, 26, 23,	24, 28, 26, 24,
		// A Theme
		21, 23, 24, 26, 28, 29,	28, 26, 24, 23, 24, 28,	31, 29, 28, 26, 24,
		// A Repeat
		21, 23, 24, 26, 28, 29,	28, 26, 24, 23, 24, 28,	29, 28, 26, 24,
		// Bridge (전개부)
		24, 26, 28, 29, 31, 33,	31, 29, 28, 26, 28, 31,	29, 26, 24,
		// C Theme (전조 후)
		24, 26, 28, 31, 33, 35,	36, 35, 33, 31, 28,	29, 28, 26, 24,
		// Outro
		21, 23, 24, 26, 28, 26,	24, 23, 21
};
uint8_t songLength_4[] = {
		// Intro
		8, 8, 4, 8, 8, 4, 8, 8, 4, 8, 8, 4, 8, 8, 4, 2,
		// A Theme
		8, 8, 8, 8, 4, 4, 4, 4, 8, 8, 4, 4,	8, 8, 4, 4, 2,
		// A Repeat
		8, 8, 8, 8, 4, 4, 4, 4, 8, 8, 4, 4,	8, 8, 4, 2,
		// Bridge
		8, 8, 8, 8, 4, 4, 8, 8, 4, 4, 8, 8,	4, 4, 2,
		// C Theme
		8, 8, 8, 8, 4, 4, 4, 4, 8, 8, 4, 8, 8, 4, 2,
		// Outro
		8, 8, 8, 8, 4, 4, 4, 4, 1
};
uint8_t songNote_4_Len = sizeof(songNote_4) / sizeof(songNote_4[0]);