ARMv7 stm32-L476G如何设置在特定持续时间内播放的特定音高

时间:2019-04-20 19:35:57

标签: arm

我是ARMv7汇编编程的新手(使用stm32-L476G),我不知道如何产生特定音调的声音(例如110 hz)以播放15秒钟。我完成了研究,陷入了僵局。有人可以帮我吗?

1 个答案:

答案 0 :(得分:0)

方法A

  1. 配置计时器以生成110Hz PWM 50%信号。
  2. 配置另一个计时器,使其在15秒后溢出。
  3. 在第二个计时器中断中,停用第一个计时器的PWM信号生成

方法B

1将计时器配置为每1/220秒溢出一次。

  1. 在计时器中断中切换引脚

  2. 计算到达220 * 15禁用计时器时中断的数量

方法C

1在内存中创建一个正弦禁忌表。

  1. 配置计时器以每次触发DMA传输到DAC 1 /(110 * nsamples_per_period)
  2. 以循环模式配置DMA
  3. 在DMA结束传输中断中增加计数器
  4. 当计数器> = 110 * 15时,禁用触发计时器