在ARM组件STM32L4中实现DSP延迟

时间:2019-04-18 17:07:49

标签: assembly arm signal-processing stm32ldiscovery

我正在尝试在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

我不知道我是否做过根本上错误的事情。任何帮助将不胜感激。

0 个答案:

没有答案