打印

向各位请教一下,在做音频实验遇到的问题

[复制链接]
1668|2
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
hongji2010|  楼主 | 2010-1-17 21:46 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
部分程序如下,请各位随便留点建议。
#include"myApp.h"

void interrupt rxData(void)
{
   
      *(int *)0x61 =DRR12;
      *(int *)0x60 = DRR22;
               
   DXR12= *(int *)0x61;
   DXR22=*(int *)0x60;
   
   
   
}
void interrupt txData(void)
{
}

void interrupt rxData(void)是不是接收中断?void interrupt txData(void)是发送中断?
      *(int *)0x61 =DRR12;
      *(int *)0x60 = DRR22;
               
   DXR12= *(int *)0x61;
   DXR22=*(int *)0x60;
是不是就是把声音接收后就发送出去?

void interrupt txData(void)
{
}
为什么可以空的呢?
如果我要加入压缩和解压的程序,我应该加在哪里呢?谢谢各位的随意讨论!

相关帖子

沙发
aresc| | 2010-1-19 00:52 | 只看该作者
从字面看那两个中断一个接收,一个发送,但更具体用途的看不出来。
如果你要加入压缩、解压的程序,应该放在主程序里面,否则中断里的程序可能太长。
类似的程序结构如下:

接收中断接收PCM数据到一个循环input_buffer里,要保证这个input_buffer足够大用于缓存接收的PCM数据。

主程序里不停按块处理数据,比如MP3压缩则要求1152个PCM/channel,这个块的大小就要看你具体的压缩算法。以MP3为例,主程序里不停的检查input_buffer里的数据是否大于1152*2个数据,有则进行压缩,没有就继续等;压缩完了之后进行解压缩,解压之后的数据存到另外的一个循环output_buffer里。

输出中断按采样频率不停的从output_buffer里读数据输出。由于输出中断是恒定的,所以必须确保output_buffer的数据填充的足够快,否则输出就有噪声了。

使用特权

评论回复
板凳
hongji2010|  楼主 | 2010-2-3 11:01 | 只看该作者
你好,谢谢你的回答,请问一下input_buffer应该设为什么类型的呢?是数组还是,随便一个地址就可以呢?还是就一个变量就可以呢?我现在设了个变量,貌似都可以。另外,我把中断,都去掉,就在主函数里执行,好像也能成功,是不是用到得是查询法呢?谢谢你的回答。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

个人签名:努力成为出色的嵌入式工程师

11

主题

46

帖子

0

粉丝