?? music.c
字號(hào):
/*********音樂(lè)示例***************/
#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)
{
/*初始化音節(jié)*/
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};
/*輸入音節(jié)音長(zhǎng)*/
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};
/*初始化系統(tǒng)*/
// printf("This is a test.\n");
InitSysCtrl();
/*關(guān)中斷*/
DINT;
IER = 0x0000;
IFR = 0x0000;
EALLOW;
GpioMuxRegs.GPAMUX.all=0x0000;
GpioMuxRegs.GPADIR.all=0xFFFF;
GpioMuxRegs.GPAQUAL.all=0x0000;
EDIS;
/*初始化PIE*/
InitPieCtrl();
/*初始化PIE中斷矢量表*/
InitPieVectTable();
/*初始化時(shí)鐘*/
InitCpuTimers();
/*初始化中斷服務(wù)子程序入口*/
EALLOW;
PieVectTable.XINT13 = &ISRTimer1;
PieVectTable.TINT2 = &ISRTimer2;
EDIS;
/*開(kāi)中斷*/
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時(shí)鐘*/
ConfigCpuTimer(&CpuTimer1, 150, b[i]);
ConfigCpuTimer(&CpuTimer2, 150, a[i]);
StartCpuTimer1();
StartCpuTimer2();
Flag=0;
for(;;)
{
if(Flag==1)break;
}
}
}
}
/*CPUTimer2中斷服務(wù)子程序*/
interrupt void ISRTimer2(void)
{
CpuTimer2.InterruptCount++;
if(Flag1 == 0)
{
HIGH;
Flag1 = 1;
}
else
{
LOW;
Flag1 = 0;
}
}
/*CPUTimer1中斷服務(wù)子程序*/
interrupt void ISRTimer1(void)
{
CpuTimer1.InterruptCount++;
if(Flag == 0)
{
Flag = 1;
}
}
// No more.//
?? 快捷鍵說(shuō)明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號(hào)
Ctrl + =
減小字號(hào)
Ctrl + -