- иерархическая и универсальная структура меню, которую относительно удобно расширять и добавлять - заготовик меню для таймера и секундомера - работающие игры (выбить 1.00 сек, тест реакции, кликер)
27 lines
783 B
C
27 lines
783 B
C
#ifndef MELODY_H
|
|
#define MELODY_H
|
|
|
|
#include "stm32f1xx_hal.h"
|
|
#include "songs.h"
|
|
#include "sounds.h"
|
|
|
|
typedef struct {
|
|
TIM_HandleTypeDef* htim;
|
|
uint32_t channel;
|
|
uint32_t timer_clock_hz; // частота тактирования таймера в Гц
|
|
Melody_t *melody;
|
|
uint16_t current_index;
|
|
uint32_t note_start_time;
|
|
uint8_t is_playing;
|
|
uint16_t bpm;
|
|
} MelodyHandle;
|
|
extern MelodyHandle melody;
|
|
|
|
void Melody_Init(MelodyHandle* mh, TIM_HandleTypeDef* htim, uint32_t channel, uint32_t timer_clock_hz);
|
|
void Melody_SetBPM(MelodyHandle* mh, uint16_t bpm);
|
|
void Melody_Play(MelodyHandle* mh, Melody_t* melody, uint16_t bpm);
|
|
void Melody_Stop(MelodyHandle* mh);
|
|
void Melody_Update(MelodyHandle* mh);
|
|
uint8_t Melody_IsPlaying(MelodyHandle* mh);
|
|
|
|
#endif |