#arm
#arm
Вопрос:
Я новичок в программировании сборки ARMv7 (с использованием stm32-L476G), и я не понимаю, как создать звук определенной высоты (например, 110 Гц) для воспроизведения в течение 15 секунд. Я провел свое исследование и зашел в тупик. Кто-нибудь может мне помочь?
Комментарии:
1. Вы имеете в виду синусоидальную волну от АЦП? Какая частота дискретизации? Что показали ваши исследования на данный момент?
2. Откажитесь от программирования этих ПСК на ассемблере. Это бессмысленно, и ваш ассемблер обычно будет хуже, чем сгенерированный компилятором код. Удачи в написании TCP или USB stack im assembler
Ответ №1:
метод A
- Настройте таймер на генерацию сигнала 110 Гц PWM 50%.
- Настройте другой таймер на переполнение через 15 секунд.
- Во втором прерывании таймера отключите генерацию сигнала PWM первым таймером
способ B
1 настройте таймер на переполнение каждые 1/220 секунды.
-
В прерывании таймера переключите вывод
-
подсчитайте количество прерываний, когда число достигает таймера отключения 220 * 15
метод C
1 создайте таблицу sine tabue в памяти.
- настройте таймер для запуска передачи DMA на ЦАП каждые 1 / (110 * nsamples_per_period)
- настройте DMA в циклическом режиме
- в прерывании завершения передачи DMA увеличьте счетчик
- когда счетчик> = 110 * 15, отключите таймер запуска