fix(mic): исправлен таймер на TIM3

This commit is contained in:
2025-12-25 23:17:39 +03:00
parent 3306b8083b
commit 063cced2a5
7 changed files with 223 additions and 213 deletions

View File

@@ -1,6 +1,8 @@
#ifndef FREERTOS_CONFIG_H
#define FREERTOS_CONFIG_H
#define configCHECK_FOR_STACK_OVERFLOW 2
#define configUSE_PREEMPTION 1
#define configUSE_IDLE_HOOK 0
#define configUSE_TICK_HOOK 0

View File

@@ -4,31 +4,18 @@
#include <stdint.h>
// Audio Configuration
#define AUDIO_SAMPLE_RATE 22050U // Hz (22.05 kHz)
#define AUDIO_BUFFER_SIZE 512U // Samples per buffer (для FFT)
#define AUDIO_NUM_BUFFERS 2U
#define AUDIO_SAMPLE_RATE 22050U
#define AUDIO_BUFFER_SIZE 512U
// ADC Configuration
#define AUDIO_ADC_CHANNEL 1U // PA1 = ADC1_IN1
#define AUDIO_ADC_GPIO_PORT GPIOA
#define AUDIO_ADC_GPIO_PIN 1U // PA1
// Timer Configuration
// Timer2 будет триггерить ADC на частоте AUDIO_SAMPLE_RATE
// APB1 Timer clock = 72 MHz (на STM32F103 при SYSCLK=72MHz)
// Формула: Timer_Freq = Timer_Clock / ((PSC + 1) * (ARR + 1))
// Для 22050 Hz: 72000000 / 22050 = 3265.3
// Используем PSC=0, ARR=3264 → 72MHz / 3265 = 22051 Hz (погрешность 0.004%)
// Timer Configuration (TIM2 для 72 MHz)
#define AUDIO_TIMER_PRESCALER 0U
#define AUDIO_TIMER_PERIOD 3264U // ARR value
// DMA Configuration
#define AUDIO_DMA_CHANNEL DMA1_Channel1 // ADC1 использует DMA1_CH1
#define AUDIO_TIMER_PERIOD 3264U // 72MHz / 3265 ≈ 22050 Hz
// Data Types
typedef uint16_t audio_sample_t;
// Callback вызывается когда буфер заполнен
typedef void (
*audio_buffer_ready_callback_t)(audio_sample_t* buffer, uint32_t size);

View File

@@ -19,8 +19,8 @@ extern "C" {
// Конфигурация CDC (Communication Device Class)
#define CFG_TUD_CDC 1
#define CFG_TUD_CDC_RX_BUFSIZE 64
#define CFG_TUD_CDC_TX_BUFSIZE 64
#define CFG_TUD_CDC_RX_BUFSIZE 256
#define CFG_TUD_CDC_TX_BUFSIZE 256
// Endpoint буферизация
#define CFG_TUD_ENDPOINT0_SIZE 64