stm32f103 nes模拟器60帧有声音

2019-07-20 23:57发布

stm32f103 nes模拟器60帧有声音,声音播放可以是Timer+pwm+低通滤波器或者Timer+dac,
没做同步,声音有点怪怪的,望同好改进后上传。
现在这个做了同步的,声音好了很多
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
49条回答
ye781205
1楼-- · 2019-07-22 12:12
回复【11楼】正点原子:
---------------------------------
我是这么处理声音的,效果很好
void NES_SoundOutput(void)//(uint8 *wave)
                                  
{
  int i;
  
  apu_process(wave_buffers, MAX_PCM);
  clocks=0;
  
     while(Abuf[whichbuf][MAX_PCM]);//等待adc转换完成
  for (i = 0; i < MAX_PCM; i++) 
  {      
 Abuf[whichbuf]=wave_buffers;
  }
  Abuf[whichbuf][MAX_PCM]=1;
  whichbuf++;
  if(whichbuf==Framemun)whichbuf=0;
}

void TIM4_IRQHandler(void)  
{  
if(TIM4->SR&0X0001)//溢出中断(TIM4->SR)  
    {   
     //播放NES音乐
    if(Abuf[zheng][MAX_PCM])
{
 DAC->DHR8R2=Abuf[zheng][DApc];//通道1的12位右对齐数据
 DApc++;
if(DApc==MAX_PCM)//每帧数据长
{
  Abuf[zheng][MAX_PCM]=0;
  DApc=0;      
  zheng++;
  if(zheng==Framemun)zheng=0;
}
}
        }
      TIM4->SR&=~(1<<0);//清除中断标志位  
}
正点原子
2楼-- · 2019-07-22 16:58
 精彩回答 2  元偷偷看……
ye781205
3楼-- · 2019-07-22 17:19
回复【15楼】正点原子:
---------------------------------
应该是没有一点噪音的,效果很好的,我不知道你用的什么播放方式,这pcm数据我
为了用dac输出8位是0---255, 128是没有输出的,你如果用i2s  dac的话要处理下。
正点原子
4楼-- · 2019-07-22 18:59
回复【16楼】ye781205:
---------------------------------
我用I2S.
正点原子
5楼-- · 2019-07-22 19:51
回复【16楼】ye781205:
---------------------------------
移植出来了,不过声音还是有点怪异,呵呵.
ye781205
6楼-- · 2019-07-23 01:29
 精彩回答 2  元偷偷看……

一周热门 更多>