播放起风了,晴天
起风了(简谱对应的代码如下)
起风了
Uint16 Music[]={
//音符,时值,
0,4,
18,2,
19,2,
21,2,
23,2,
11,4,
26,2,
23,6,
0,2,
18,2,
19,2,
21,2,
23,2,
9,4,
26,2,
23,2,
21,2,
23,2,
19,2,
21,2,
18,2,
19,2,
14,2,
0,4,
18,2,
19,2,
21,2,
23,2,
11,4,
26,2,
23,6,
0,2,
18,2,
19,2,
21,2,
23,2,
9,4,
26,2,
23,2,
21,2,
23,2,
19,2,
21,2,
18,2,
19,2,
14,2,
0,4,
9,6,
7,2,
9,6,
7,2,
9,4,
11,4,
14,4,
11,4,
9,6,
7,2,
9,6,
7,2,
9,2,
11,2,
9,2,
7,2,
1,4,
0,4,
9,6,
7,2,
9,6,
7,2,
9,4,
11,4,
14,4,
11,4,
9,6,
11,2,
9,4,
7,4,
9,8,
10,8,
9,6,
7,2,
9,6,
7,2,
9,4,
11,4,
14,4,
11,4,
9,6,
11,2,
9,4,
7,4,
3,4,
0,4,
11,2,
9,2,
7,2,
9,2,
7,4,
0,4,
11,2,
9,2,
7,2,
9,2,
7,4,
0,4,
11,2,
9,2,
7,2,
9,2,
7,8,
0,8,
0,4,
7,4,
9,4,
11,4,
7,4,
16,4,
14,2,
16,6,
0,2,
7,2,
18,4,
16,2,
18,6,
0,4,
18,4,
16,2,
18,6,
11,4,
19,2,
21,2,
19,2,
18,2,
16,4,
14,4,
16,4,
14,2,
16,4,
14,2,
16,2,
14,2,
16,4,
14,2,
9,4,
14,4,
11,8,
0,8,
7,4,
9,4,
11,4,
7,4,
16,4,
14,2,
16,6,
0,2,
7,2,
18,4,
16,2,
18,6,
0,4,
18,4,
16,2,
18,6,
11,4,
19,2,
21,2,
19,2,
18,2,
16,4,
14,4,
16,4,
23,2,
23,6,
14,4,
16,4,
23,2,
23,4,
14,4,
16,2,
16,12,
0,4,
19,4,
21,4,
23,4,
28,2,
26,6,
28,2,
26,6,
28,2,
26,6,
21,4,
23,6,
28,2,
26,6,
28,2,
26,6,
28,2,
26,4,
23,8,
21,4,
19,2,
16,4,
19,4,
19,2,
21,4,
19,2,
16,4,
19,4,
23,8,
23,4,
21,6,
0,4,
19,4,
21,4,
23,4,
28,2,
26,6,
28,2,
26,6,
28,2,
26,6,
0,2,
21,2,
23,4,
28,2,
26,6,
28,2,
26,6,
28,2,
26,6,
23,6,
21,4,
19,2,
16,4,
23,4,
21,4,
19,2,
16,4,
16,2,
19,2,
19,8,
0,4,
16,2,
23,6,
21,4,
19,2,
16,4,
23,4,
21,4,
19,2,
16,4,
16,2,
19,6,
19,8,
0xFF
};
晴天简谱对应的代码如下
Uint16 Music[]={
0,2,
20,2,
20,2,
13,2,
13,4,
15,2,
17,2,
0,2,
20,2,
20,2,
13,2,
13,2,
15,1,
17,1,
15,1,
13,1,
8,2,
0,2,
20,2,
20,2,
13,2,
13,4,
15,2,
17,2,
0,2,
17,4,
15,1,
17,1,
18,1,
17,1,
15,1,
18,1,
17,1,
15,1,
13,2,
8,2,
13,2,
13,2,
17,2,
18,2,
17,2,
15,2,
13,1,
15,1,
17,2,
17,2,
17,2,
17,2,
15,1,
17,1,
15,2,
13,4,
8,2,
13,2,
15,2,
17,2,
18,2,
17,2,
15,2,
13,1,
15,1,
17,2,
17,2,
17,2,
17,2,
15,1,
17,1,
15,2,
13,3,
24,1,
13,1,
13,1,
13,1,
13,1,
24,1,
13,1,
13,2,
13,1,
13,1,
13,1,
12,1,
13,2,
13,2,
13,1,
13,1,
13,1,
12,1,
13,2,
13,2,
13,1,
13,1,
13,1,
20,1,
20,2,
20,1,
0,1,
20,1,
20,1,
20,1,
20,1,
20,2,
20,2,
20,1,
20,1,
20,1,
20,1,
18,1,
17,1,
17,9,
0,4,
0xFF
//音符,时值,
};
main.c
#include "DSP2833x_Device.h" // DSP2833x Headerfile Include File
#include "DSP2833x_Examples.h" // DSP2833x Examples Include File
#include "leds.h"
#include "Time.h"
#include "beep.h"
#define speed 800
#define P 0
#define L1 1
#define L1_ 2
#define L2 3
#define L2_ 4
#define L3 5
#define L4 6
#define L4_ 7
#define L5 8
#define L5_ 9
#define L6 10
#define L6_ 11
#define L7 12
#define M1 13
#define M1_ 14
#define M2 15
#define M2_ 16
#define M3 17
#define M4 18
#define M4_ 19
#define M5 20
#define M5_ 21
#define M6 22
#define M6_ 23
#define M7 24
#define H1 25
#define H1_ 26
#define H2 27
#define H2_ 28
#define H3 29
#define H4 30
#define H4_ 31
#define H5 32
#define H5_ 33
#define H6 34
#define H6_ 35
#define H7 36
float zhouqi[]={ 3816.793893,
3610.108303,
3401.360544,
3215.434094,
3030.30303,
2865.329513,
2702.702703,
2551.020408,
2409.638554,
2272.727273,
2145.922747,
2016.129032,
1912.045889,
1805.054152,
1703.577513,
1607.717042,
1517.450683,
1432.664756,
1351.351351,
1275.510204,
1203.369434,
1136.363636,
1072.961373,
1010.145749,
956.0229446,
901.7132552,
851.0638298,
803.2128514,
758.7253414,
715.8196135,
375.6756757,
637.755102,
602.0469597,
568.1818182,
536.1930295,
506.0728745,
};
float the_freq[]={
262,
277,
294,
311,
330,
349,
370,
392,
415,
440,
466,
496,
523,
554,
587,
622,
659,
698,
740,
784,
831,
880,
932,
988,
1046,
1109,
1175,
1245,
1318,
1397,
1480,
1568,
1661,
1760,
1865,
1976
};
//晴天
Uint16 Music[]={
0,2,
20,2,
20,2,
13,2,
13,4,
15,2,
17,2,
0,2,
20,2,
20,2,
13,2,
13,2,
15,1,
17,1,
15,1,
13,1,
8,2,
0,2,
20,2,
20,2,
13,2,
13,4,
15,2,
17,2,
0,2,
17,4,
15,1,
17,1,
18,1,
17,1,
15,1,
18,1,
17,1,
15,1,
13,2,
8,2,
13,2,
13,2,
17,2,
18,2,
17,2,
15,2,
13,1,
15,1,
17,2,
17,2,
17,2,
17,2,
15,1,
17,1,
15,2,
13,4,
8,2,
13,2,
15,2,
17,2,
18,2,
17,2,
15,2,
13,1,
15,1,
17,2,
17,2,
17,2,
17,2,
15,1,
17,1,
15,2,
13,3,
24,1,
13,1,
13,1,
13,1,
13,1,
24,1,
13,1,
13,2,
13,1,
13,1,
13,1,
12,1,
13,2,
13,2,
13,1,
13,1,
13,1,
12,1,
13,2,
13,2,
13,1,
13,1,
13,1,
20,1,
20,2,
20,1,
0,1,
20,1,
20,1,
20,1,
20,1,
20,2,
20,2,
20,1,
20,1,
20,1,
20,1,
18,1,
17,1,
17,9,
0,4,
0xFF
//音符,时值,
};
Uint16 pai;
void main()
{
InitSysCtrl();
//初始化PIE控制寄存器和PIE中断向量表
InitPieCtrl();
IER = 0x0000;
IFR = 0x0000;
InitPieVectTable();
LED_Init();
BEEP_Init();
while (1)
{
if (Music[pai] != 0xFF)
{
TIM1_Init(150, (zhouqi[Music[pai]])/2);
pai++;
DELAY_US((Music[pai]*speed/4)*1000);
pai++;
CpuTimer1Regs.TCR.bit.TSS=1;
DELAY_US(500);
CpuTimer1Regs.TCR.bit.TSS=0;
}
else
{
pai=0;
}
}
}
定时器中断代码
Time.c
#include "Time.h"
#include "leds.h"
#include "BEEP.h"
//定时器1初始化函数
//Freq:CPU时钟频率(150MHz)
//Period:定时周期值,单位us
void TIM1_Init(float Freq, float Period)
{
EALLOW;
SysCtrlRegs.PCLKCR3.bit.CPUTIMER1ENCLK = 1; // CPU Timer 0
EDIS;
//设置定时器1的中断入口地址为中断向量表的INT13
EALLOW;
PieVectTable.XINT13 = &TIM1_IRQn;
EDIS;
//指向定时器1的寄存器地址
CpuTimer1.RegsAddr = &CpuTimer1Regs;
//设置定时器1的周期寄存器值
CpuTimer1Regs.PRD.all = 0xFFFFFFFF;
//设置定时器预定标计数器值为0
CpuTimer1Regs.TPR.all = 0;
CpuTimer1Regs.TPRH.all = 0;
//确保定时器1为停止状态
CpuTimer1Regs.TCR.bit.TSS = 1;
//重载使能
CpuTimer1Regs.TCR.bit.TRB = 1;
// Reset interrupt counters:
CpuTimer1.InterruptCount = 0;
ConfigCpuTimer(&CpuTimer1, Freq, Period);
//开始定时器功能
CpuTimer1Regs.TCR.bit.TSS=0;
//定时器1直接连到内核中断,无需配置PIE
IER |= M_INT13;
//使能总中断
EINT;
ERTM;
}
interrupt void TIM1_IRQn(void)
{
EALLOW;
BEEP_TOGGLE;
PieCtrlRegs.PIEACK.bit.ACK1=1;//清除中断标志
EDIS;
}
Time.h
/*
* Time.h
*
* Created on: 2024年6月20日
* Author: 86173
*/
#ifndef TIME_H_
#define TIME_H_
#include "DSP2833x_Device.h" // DSP2833x 头文件
#include "DSP2833x_Examples.h" // DSP2833x 例子相关头文件
void TIM0_Init(float Freq, float Period);
interrupt void TIM0_IRQn(void);
void TIM1_Init(float Freq, float Period);
interrupt void TIM1_IRQn(void);
void TIM2_Init(float Freq, float Period);
interrupt void TIM2_IRQn(void);
#endif /* TIME_H_ */
BEEP.h
#ifndef BEEP_H_
#define BEEP_H_
#include "DSP2833x_Device.h" // DSP2833x 头文件
#include "DSP2833x_Examples.h" // DSP2833x 例子相关头文件
#define BEEP_ON (GpioDataRegs.GPASET.bit.GPIO6=1)
#define BEEP_OFF (GpioDataRegs.GPACLEAR.bit.GPIO6=1)
#define BEEP_TOGGLE (GpioDataRegs.GPATOGGLE.bit.GPIO6=1)
void BEEP_Init(void);
#endif /* BEEP_H_ */
BEEP.c
#include "beep.h"
void BEEP_Init(void)
{
EALLOW;
SysCtrlRegs.PCLKCR3.bit.GPIOINENCLK=1;//开启GPIO时钟
//BEEP端口配置
GpioCtrlRegs.GPAMUX1.bit.GPIO6=0;
GpioCtrlRegs.GPADIR.bit.GPIO6=1;
GpioCtrlRegs.GPAPUD.bit.GPIO6=0;
EDIS;
GpioDataRegs.GPACLEAR.bit.GPIO6=1;
}
LED模块并没有用到,这是我之前写其他工程留下来的