ARMv7 stm32-L476G Как установить определенную высоту звука для воспроизведения в течение определенной продолжительности

#arm

#arm

Вопрос:

Я новичок в программировании сборки ARMv7 (с использованием stm32-L476G), и я не понимаю, как создать звук определенной высоты (например, 110 Гц) для воспроизведения в течение 15 секунд. Я провел свое исследование и зашел в тупик. Кто-нибудь может мне помочь?

Комментарии:

1. Вы имеете в виду синусоидальную волну от АЦП? Какая частота дискретизации? Что показали ваши исследования на данный момент?

2. Откажитесь от программирования этих ПСК на ассемблере. Это бессмысленно, и ваш ассемблер обычно будет хуже, чем сгенерированный компилятором код. Удачи в написании TCP или USB stack im assembler

Ответ №1:

метод A

  1. Настройте таймер на генерацию сигнала 110 Гц PWM 50%.
  2. Настройте другой таймер на переполнение через 15 секунд.
  3. Во втором прерывании таймера отключите генерацию сигнала PWM первым таймером

способ B

1 настройте таймер на переполнение каждые 1/220 секунды.

  1. В прерывании таймера переключите вывод

  2. подсчитайте количество прерываний, когда число достигает таймера отключения 220 * 15

метод C

1 создайте таблицу sine tabue в памяти.

  1. настройте таймер для запуска передачи DMA на ЦАП каждые 1 / (110 * nsamples_per_period)
  2. настройте DMA в циклическом режиме
  3. в прерывании завершения передачи DMA увеличьте счетчик
  4. когда счетчик> = 110 * 15, отключите таймер запуска