Реализация задержки DSP в сборке ARM STM32L4 - PullRequest
0 голосов
/ 18 апреля 2019

Я пытаюсь реализовать задержку звука в ARM Assembly. У меня есть список точек в массиве источника данных, который генерирует прямоугольную волну. Размер массива 60000 байт, и каждая точка хранится в виде половины слова. Исходный звуковой тон составляет от 0 16000 точек, и delay записывает новые точки с 16000 до 22000, а delay2 записывает новые точки с 22000 до 30000. Я не получаю звук задержки и не могу понять, почему ,

soundStored:
  mov r8, 0
  mov r6, 22000
  mov r10, 16000
  b delay

delay:
  mov r1, 4
  cmp r10, r6
  beq soundDelayed
  ldr r9, =array
  lsl r8, r7, 1
  add r8, r9, r8
  ldrh r0, [r8]
  lsl r11, r10, 1
  add r11, r9, r11
  ldrh r12, [r11]
  sub r0, r0, 600
  add r0, r0, r12
  strh r0, [r11]
  add r7, 1
  add r10, 1
  b delay

soundDelayed:
  mov r8, 0
  mov r6, 30000
  mov r10, 22000
  b delay1

delay1:
  mov r1, 4
  cmp r10, r6
  beq soundDelayed1
  ldr r9, =array
  lsl r8, r7, 1
  add r8, r9, r8
  ldrh r0, [r8]
  lsl r11, r10, 1
  add r11, r9, r11
  ldrh r12, [r11]
  sub r0, r0, 1200
  add r0, r0, r12
  strh r0, [r11]
  add r7, 1
  add r10, 1
  b delay1

soundDelayed1:
  mov r7, 0
  mov r6, 30000
  b loadSound

Я не могу понять, сделал ли я что-то в корне неправильно. Любая помощь будет оценена.

...