📄 main.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 + -