程序源代码如下://需要详细解释看附件
#include "stm32f10x.h"
#include "tim1.h"
#include "delay.h"
#define proport 10000 //Tclk/(psc+1)=72000000/(7199+1)
#define L1 ((proport/131)-1)
#define L2 ((proport/147)-1)
#define L3 ((proport/165)-1)
#define L4 ((proport/176)-1)
#define L5 ((proport/196)-1)
#define L6 ((proport/220)-1)
#define L7 ((proport/247)-1)
#define M1 ((proport/262)-1)
#define M2 ((proport/296)-1)
#define M3 ((proport/330)-1)
#define M4 ((proport/349)-1)
#define M5 ((proport/392)-1)
#define M6 ((proport/440)-1)
#define M7 ((proport/494)-1)
#define H1 ((proport/523)-1)
#define H2 ((proport/587)-1)
#define H3 ((proport/659)-1)
#define H4 ((proport/699)-1)
#define H5 ((proport/784)-1)
#define H6 ((proport/880)-1)
#define H7 ((proport/988)-1)
/*
#define L1 262
#define L2 294
#define L3 330
#define L4 349
#define L5 392
#define L6 440
#define L7 494
#define M1 523
#define M2 587
#define M3 659
#define M4 698
#define M5 784
#define M6 880
#define M7 988
#define H1 1047
#define H2 1175
#define H3 1319
#define H4 1397
#define H5 1568
#define H6 1760
#define H7 1976
**/
int music[]=
{
M5,50,M5,25,M5,25,
M6,100,M5,100,H1,100,
M7,100,M7,100,M5,50,M5,25,M5,25,
M6,100,M5,100,H2,100,
H1,100,H1,100,M5,50,M5,25,M5,25,
H5,100,H3,100,H1,100,
M7,100,M6,100,H4,50,H4,25,H4,25,
H3,100,H1,100,H2,100,H1,100,H1,100
/*
M3,8,M3,8,M4,8,M5,8,
M5,8,M4,8,M3,8,M2,8,
M1,8,M1,8,M2,8,M3,8,
M3,12,M2,4,M2,16,
M3,8,M3,8,M4,8,M5,8,
M5,8,M4,8,M3,8,M2,8,
M1,8,M1,8,M2,8,M3,8,
M2,12,M1,4,M1,16,
M2,8,M2,8,M3,8,M1,8,
M2,8,M3,4,M4,4,M3,8,M1,8,
M2,8,M3,4,M4,4,M3,8,M2,8,
M1,8,M2,8,L5,8,M3,8,
M3,8,M3,8,M4,8,M5,8,
M5,8,M4,8,M3,8,M4,4,M2,4,
M1,8,M1,8,M2,8,M3,8,
M2,12,M1,4,M1,16,
M2,8,M2,8,M3,8,M1,8,
M2,8,M3,4,M4,4,M3,8,M1,8,
M2,8,M3,4,M4,4,M3,8,M2,8,
M1,8,M2,8,L5,8,M3,8,
M3,8,M3,8,M4,8,M5,8,
M5,8,M4,8,M3,8,M4,4,M2,4,
M1,8,M1,8,M2,8,M3,8,
M2,12,M1,4,M1,16
*/
};
int length = sizeof(music)/sizeof(music[0]);
int main()
{
int i=0;
while(100)
{
for(i=0; i<(length/2); i++)
{
BASIC_TIM_MODE_Config1(TIM3,music[2*i]);
delay_ms(5*music[2*i+1]);
}
if(i>=(length/2))
{
i=0;
}
}
}
|