Stimulate/components/signal_generators/include/sine_generator.h

47 lines
1.4 KiB
C

#ifndef SINE_GENERATOR_H
#define SINE_GENERATOR_H
#include <stdint.h>
#include <stdbool.h>
#ifdef __cplusplus
extern "C" {
#endif
// 正弦波生成器结构体
typedef struct {
// 用户可调参数
float frequency; // 正弦波频率 (Hz)
float amplitude; // 幅值 (V)
// 内部状态
uint32_t sample_count; // 样本计数器
float sample_rate; // 采样率 (Hz)
bool is_running; // 是否正在运行
// 预计算正弦波查找表
float* sine_lookup_table; // 正弦波查找表
uint32_t table_size; // 查找表大小
uint32_t table_index; // 当前索引
} sine_generator_t;
// 函数声明
void sine_generator_init(sine_generator_t *generator, float sample_rate);
void sine_generator_set_frequency(sine_generator_t *generator, float frequency);
void sine_generator_set_amplitude(sine_generator_t *generator, float amplitude_mv);
void sine_generator_start(sine_generator_t *generator);
void sine_generator_stop(sine_generator_t *generator);
void sine_generator_reset(sine_generator_t *generator);
float sine_generator_get_next_sample(sine_generator_t *generator);
void sine_generator_cleanup(sine_generator_t *generator);
// 查找表管理函数
void sine_generator_generate_lookup_table(sine_generator_t *generator);
void sine_generator_free_lookup_table(sine_generator_t *generator);
#ifdef __cplusplus
}
#endif
#endif // SINE_GENERATOR_H