历史上的今天
今天是:2025年07月12日(星期六)
2020年07月12日 | STM32蜂鸣器模拟播放歌曲
2020-07-12 来源:51hei
/**********************************************************************
*函数名:BEEP_Init
*功 能:蜂鸣器初始化
*参 数:无
*返 回:无
*备 注:
引脚 点蜂鸣器电平 模式 速度
PC3 高电平 通用推挽输出 50M
**********************************************************************/
void BEEP_Init(void)
{
#if 1
RCC->APB2ENR |= 1<<4;//开启PC口时钟
GPIOC->CRL &=~(0XF<<4*3);//清PC3
GPIOC->CRL |=(0X3<<4*3);//通用推挽输出 50M
GPIOC->ODR &=~(3<<1);//关蜂鸣器
#else
GPIO_InitTypeDef GPIO_InitStructure;
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC, ENABLE);//使能C端口时钟
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_3;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; //通用推挽输出
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;//速度50MHz
GPIO_Init(GPIOC, &GPIO_InitStructure);//PC3
GPIO_ResetBits(GPIOC,GPIO_Pin_3);//关蜂鸣器
#endif
}
//控制发声
void Sound(u16 frq)
{
u32 time;
if(frq != 1000)//休止符
{
time = 500000/((u32)frq);
BEEP = 1;
delay_us(time);
BEEP = 0;
delay_us(time);
}else
delay_us(1000);
}
//生日歌
void play_Music_1(void)
{
//音谱 低1 2 3 4 5 6 7 中1 2 3 4 5 6 7 高1 2 3 4 5 6 7 不发音
uc16 tone[] = {262,294,330,349,392,440,494,523,587,659,698,784,880,988,1047,1175,1319,1397,1568,1760,1967,1000};//音频数据表
//编号 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
//音谱
u8 music[]={4,4,5,4,
7,6,21,
4,4,5,4,
8,7,21,
4,4,11,9,
7,6,5,21,
3,3,9,7,
8,7,21,
};
//节拍
u8 time[] = {2,2,4,4, //时间--2代表半拍(100ms) 4代表一拍(200ms) 8代表两拍(400ms)
4,4,4,
2,2,4,4,
4,4,4,
2,2,4,4,
4,4,4,4,
2,2,4,4,
4,4,4,
};
u32 delayShow;
u16 i,j;
delayShow = 10;//控制播放快慢
for(i=0;i for(j=0;j<((u16)time[i])*tone[music[i]]/delayShow;j++) { Sound((u32)tone[music[i]]); } } } //世间美好与你环环相扣 void play_Music_2(void) { // 低1 2 3 4 5 6 7 中1 2 3 4 5 6 7 高1 2 3 4 5 6 7 不发音 uc16 tone[] = {262,294,330,349,392,440,494,523,587,659,698,784,880,988,1047,1175,1319,1397,1568,1760,1967,1000};//音频数据表 // 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 //音调 u8 music[]={11,11,11,10,9,9,8,8,7,8, 9,9,11,11,9,8,8,9,9, 7,7,7,7,7,9,9,9,8,8,8,7,8, 9,9,9,11,8,21, 11,11,11,11,10,9,8,7,8, 9,9,11,11,9,8,8,7,7, 7,7,7,7,7,9,9,9,8,8,8,7,8, 9,11,11,21,21,9, 8,21,21,4,5,4, 9,9,12,9,10,9,9,7,8,9,8,8,7,7,
史海拾趣
|
我用的是AT89S52的片,把下边的程序烧进去后,只要进了中断就出不来了是怎么会事啊,出不来还好,灯还在哪瞎闪,希望大家帮帮我啊 #include /* 本源程序有三种跑马灯的方式: ...… 查看全部问答> |
|
FLASH换成spansion S29GL了,可jtag无法写进去。好像不支持这片子。。用flash烧写器太麻烦。。 我应该怎么办?哪位高人有这片子的jtag烧写软件? 谢谢!· … 查看全部问答> |
|
需要写一个IE浏览器 请问怎么能检测到当前网络状态(应该是IE的状态)是否连上或者断开, 通过检测无线网卡的方式经过实验发现不行,因为无线网卡的驱动好象也不是时时检测这个连接状态的,我把AP断开,无线网卡的信号还很强, 现在想通过判断IE ...… 查看全部问答> |
|
后仿真信号名中的反斜杠‘\\’,后仿真生成了sdf文件和.v文件,加上testbench,进行仿真。很多信号前面都有\\,比如wire \\data之类的,我想在testbench中display任务中打印下层的信号,功能仿真时,直接用点\".\",就能调用下层信号,可是现在前面 ...… 查看全部问答> |
|
USB 12Mbps的频率误差允许0.25%。而stm32f的HSI允许以40kHz左右的步长调节(改变HSITRIM的值)。40kHz/8MHz=0.5%,可惜呀。如果能以10kHz的步长调节HSI频率,同时保证HSI频率一定的稳定度,就可以用32768单晶振实现USB了!!!希望ST改进 ...… 查看全部问答> |
|
STM32开源开发环境的搭建EclipseSourceryG++ 中间有一段时间没来的及做,现在的进展是我用了3.4的固件库编译之类的都能通过,下载还没弄好,但是郁闷的是同样的程序烧进去却无法运行,哪位做过的给点提示,也欢迎大家讨论。 这两天在尝试着搭建Eclipse+ GNU ARM Eclipse Plug-in+ Sour ...… 查看全部问答> |




