📄 serial.c
字号:
/*************************************************************************
* File Name:Serial.c
* Description:主文件。该程序实现了延时播放录音的功能。
* S3C44B0x工作频率为20.5MHz,IIS总线CODECLK为2.048MHz,
* CODECLK为256fs(采样频率)。
* 对IISFIF寄存器必须以Sizeof(int)为单位操作。因此,缓
* 冲区是int类型。
* Date:2008-6-07
*************************************************************************/
#include "ISR.h"
#include "Uart.h"
#include "I2S.h"
#include "DMA.h"
#define buflen 0x8000 //单个缓冲区长度为32k*sizeof(int)字节
//缓冲区有两个,共64k*sizeof(int)字节
int iisbuf1[buflen];
int iisbuf2[buflen];
char flag; //用于标志当前被处理的缓冲区
char flag1; //标志BDMA0中断是否发生
int count;
/*
*************************************************************************************************************
- 函数名称 : int main(void)
- 函数说明 : 主程序
- 输入参数 : 无
- 输出参数 : 无
*************************************************************************************************************
*/
int main()
{
uart_init( ); // Uart初始化
isr_init( ); // 中断控制器初始化
dma_init( ); //DMA初始化
UDA1341_init( ); //UDA1341芯片初始化
i2s_init( ); //I2S总线初始化
count = 0;flag = 0;flag1 = 0;
while(1) // 循环,等待标志置位并播放
{
if ((flag==0) && (flag1 == 1))//处理iisbuf2的数据
{
if ((IISFIFCON & (0xF<<4))<=(0x3<<4))
{
IISFIF = iisbuf2[count];
count += 1;
if (count >= buflen) {count = 0;flag1 = 0;}
}
}
else//处理iisbuf2的数据
if ((flag==1) && (flag1 == 1))
{
if ((IISFIFCON & (0xF<<4))<=(0x3<<4))
{
IISFIF = iisbuf1[count];
count += 1;
if (count >= buflen) {count = 0;flag1 = 0;}
}
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -