⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 main.c

📁 SPCE061通过串口接收和播放语音程序
💻 C
字号:
#include	"SPCE061V004.H"
#define MaxAddr    	0xFC00
#define StartAddr   0xA000
unsigned int Addr,PlayFlag=0,StopFlag=0,StopAddr=0xFC00;
main()
{ 
 	
	unsigned int Ret,PlayAddr=StartAddr,s480;
	
	*P_UART_BaudScalarHigh=0x02;			//设置UART波特率为19200bps
	*P_UART_BaudScalarLow=0x80;
	
	
	*P_UART_Command1=0x008C;				//允许接受中断,并设置为偶校验
	*P_UART_Command2=0x00C0;                //打开发送和接受管脚

	
	/*以下for循环将要使用的Flash页面进行擦除*/
	for(Addr=StartAddr;Addr<MaxAddr;Addr+=256)							
	{ 
		*P_Watchdog_Clear=0x0001;//清除看门狗
		F_FlashErase(Addr); 	 //按页擦Flash存储器	
	}		
	
	Addr=StartAddr;			//将地址指向要使用Flash的开始地址
	SACM_S480_Initial(0);	//初始化S480的手动播放方式					
		
		
		
 	
        
	__asm("INT IRQ");		//打开中断


	
     while(1)
	{		
		*P_Watchdog_Clear=0x0001;  		//清除看门狗		
		PlayAddr=StartAddr;				//将放音地址指向开始地址	
		SACM_S480_Stop();				//停止上一次播放
   		SACM_S480_InitQueue();			//初始化S480的队列
   		SACM_S480_InitDecoder(1);		//初始化解码方式
   		
		while(PlayFlag==1)				//如果放音标志为1,则开始放音
		{
			//放音部分			
			*P_Watchdog_Clear=0x0001;  	//清除看门狗
			if((SACM_S480_TestQueue()!=1)&&(PlayAddr<Addr))//测试S480队列是否满并且播放的地址小于写入地址
			{
				/*若S480队列未满,则从Flash中取数据并放入队列*/
		     	s480=F_FlashRead(PlayAddr);	//从Flash中取数据
	        	SACM_S480_FillQueue(s480);	//将数据加入S480队列   
	   			PlayAddr++;	   				//播放的地址加1
    		}
    		if(PlayAddr>=StopAddr)			//如果播放地址不小于停止地址
			{		
				SACM_S480_Stop();			//停止S480播放
				PlayFlag=0;					//播放标志置0
			}
			else							//否则
			{
				SACM_S480_Decoder();		//进行S480解码
			}
		}   	
    }  
   	  
   
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -