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

📄 music.c

📁 本源代码是用c语言编写的一个TMSF2812的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 + -