📄 music.c
字号:
/*********音乐示例***************/
#include <stdio.h>
#include "DSP28_Device.h"
#include "music.h"
#include "DSP28_Globalprototypes.h"
#define HIGH GpioDataRegs.GPADAT.bit.GPIOA7=1
#define LOW GpioDataRegs.GPADAT.bit.GPIOA7=0
//float a[100],b[100];
unsigned int Flag1 = 0,Flag;
unsigned int i,k;
float a[]={LAL,DO, ME, DO, RE, DO, XIL,ME, RE, LAL,
DO, ME, SO, SO, LA, SO, FA, ME,
FA_S, SO_S, XI, LA, ME, XIL,LAL,ME, RE, FA,
SO, FA, ME, RE, DO, ME, RE, LAL,HHH,0,0};
float b[]={P2, P2, P2, P2, P4, P2, P2, P4, P4, P8,
P2, P2, P2, P2, P4, P2, P2, P8,
P4, P4, P2, P2, P6, P4, P2, P2, P2, P8,
P2, P2, P4, P2, P2, P4, P4, P8, P8,0,0};
interrupt void ISRTimer1(void);
interrupt void ISRTimer2(void);
void main(void)
{
/*初始化音节*/
/*float a[]={LAL,DO, ME, DO, RE, DO, XIL,ME, RE, LAL,
DO, ME, SO, SO, LA, SO, FA, ME,
FA_S, SO_S, XI, LA, ME, XIL,LAL,ME, RE, FA,
SO, FA, ME, RE, DO, ME, RE, LAL,HHH,0};
*/
/*输入音节音长*/
/*float b[]={P2, P2, P2, P2, P4, P2, P2, P4, P4, P8,
P2, P2, P2, P2, P4, P2, P2, P8,
P4, P4, P2, P2, P6, P4, P2, P2, P2, P8,
P2, P2, P4, P2, P2, P4, P4, P8, P8};
*/
/*初始化系统*/
// printf("This is a test.\n");
InitSysCtrl();
/*关中断*/
DINT;
IER = 0x0000;
IFR = 0x0000;
EALLOW;
GpioMuxRegs.GPAMUX.all=0x0000;
GpioMuxRegs.GPADIR.all=0xFFFF;
GpioMuxRegs.GPAQUAL.all=0x0000;
EDIS;
/*初始化PIE*/
InitPieCtrl();
/*初始化PIE中断矢量表*/
InitPieVectTable();
/*初始化时钟*/
InitCpuTimers();
/*初始化中断服务子程序入口*/
EALLOW;
PieVectTable.XINT13 = &ISRTimer1;
PieVectTable.TINT2 = &ISRTimer2;
EDIS;
/*开中断*/
IER |= M_INT13;
IER |= M_INT14;
EINT; // Enable Global interrupt INTM
ERTM; // Enable Global realtime interrupt DBGM
for(;;)
{
for(i=0;;i++)
{
printf("a[%d]=%f\n",i,a[i]);
// printf("b[%d]=%f\n",i,b[i]);
// printf("Flag=%d\n",Flag);
if(a[i]==0)
{
i = 0;
break;
}
/*初始化CPU时钟*/
ConfigCpuTimer(&CpuTimer1, 150, b[i]);
ConfigCpuTimer(&CpuTimer2, 150, a[i]);
StartCpuTimer1();
StartCpuTimer2();
Flag=0;
for(;;)
{
if(Flag==1)break;
}
}
}
}
/*CPUTimer2中断服务子程序*/
interrupt void ISRTimer2(void)
{
CpuTimer2.InterruptCount++;
if(Flag1 == 0)
{
HIGH;
Flag1 = 1;
}
else
{
LOW;
Flag1 = 0;
}
}
/*CPUTimer1中断服务子程序*/
interrupt void ISRTimer1(void)
{
CpuTimer1.InterruptCount++;
if(Flag == 0)
{
Flag = 1;
}
}
// No more.//
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -