历史上的今天
返回首页

历史上的今天

今天是: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,

推荐阅读

史海拾趣

HN Electronic Components GmbH & Co Kg公司的发展小趣事

背景:2008年全球金融危机爆发,电子行业受到重创,市场需求大幅下降。

发展:面对严峻的市场环境,HN Electronics迅速调整战略,削减非核心业务,加强成本控制,并加大在研发领域的投入,以技术创新为突破口,寻找新的增长点。

关键事件:在金融危机期间,HN Electronics成功开发出具有更高性价比的物联网传感器芯片,满足了市场对智能家居、智慧城市等新兴领域的需求,从而实现了业绩的稳步增长。

Components Corporation公司的发展小趣事

背景:随着公司实力的增强,HN Electronics开始考虑通过并购来扩大规模和市场份额。

发展:公司精心挑选了几家在电子元件制造和系统集成方面具有优势的中小企业进行并购,通过资源整合和优势互补,进一步巩固了市场地位。同时,HN Electronics还向产业链上下游延伸,涉足原材料供应和终端产品制造领域。

关键事件:2015年,HN Electronics成功并购了一家在被动元件领域具有领先地位的企业,这一并购极大地增强了公司的供应链整合能力和市场竞争力。

Gennum ( Semtech )公司的发展小趣事
确保电路中的元件不会因过热而损坏或引发火灾。可以使用散热片、风扇等散热设备来降低元件温度。
GAIA Converter Inc公司的发展小趣事

位于广东东莞的锋鸣电子有限公司,自2010年成立以来,便明确了自己的市场定位——专注于汽车电子配件的研发与生产。随着汽车行业的快速发展,公司敏锐地捕捉到智能驾驶和车载娱乐系统对高质量电声器件的需求,迅速调整产品结构,推出了一系列符合市场需求的蜂鸣器、扬声器等产品。凭借精准的市场定位和优质的产品质量,锋鸣电子在汽车电子配件领域站稳了脚跟。

EHC(ELECTRONICHARDWARE)公司的发展小趣事

面对日益全球化的市场环境,EHC公司积极实施国际化战略。公司通过与国外知名企业的合作,引进先进的技术和管理经验,不断提升自身的竞争力。同时,EHC公司还积极参加国际展会和论坛,拓展海外市场。经过多年的努力,EHC公司的产品已经成功打入国际市场,并在多个国家和地区建立了稳定的销售渠道。

Aptiv公司的发展小趣事

随着数字化时代的到来,Aptiv积极拥抱数字化转型,通过引入先进的信息技术和管理系统,提升了企业的运营效率和市场竞争力。例如,公司向汽车行业某公司发出EDI对接邀请,计划通过EDI系统实现双方的数据共享和业务协同,从而提高了工作效率和下单准确性。这种数字化转型不仅有助于Aptiv在激烈的市场竞争中保持领先地位,还为整个电子行业的数字化转型提供了有益的借鉴和参考。

这五个故事展示了Aptiv公司在电子行业中的发展历程和成就,从技术创新到全球布局、创新合作、社会责任以及数字化转型等方面,都体现了公司的实力和担当。Aptiv以其卓越的技术实力和市场表现,成为了电子行业中一颗璀璨的明星。

问答坊 | AI 解惑

PWM开关变换器的符号分析

PWM开关变换器的符号分析…

查看全部问答>

MFC背景绘制

   最近在弄透明static text控件,不是一般的那种,而是在对话框有背景图的情况下透明。基本上已经实现了,但是第一次显示的时候会有点闪,原因就是对话框绘制其背景图时,会空出子控件所在的区域,这样当子控件再绘制自己的背景时,就会 ...…

查看全部问答>

初学者:跑马灯+中断出错了怎么会事啊

我用的是AT89S52的片,把下边的程序烧进去后,只要进了中断就出不来了是怎么会事啊,出不来还好,灯还在哪瞎闪,希望大家帮帮我啊 #include /*         本源程序有三种跑马灯的方式:           ...…

查看全部问答>

eboot 烧写问题

FLASH换成spansion S29GL了,可jtag无法写进去。好像不支持这片子。。用flash烧写器太麻烦。。 我应该怎么办?哪位高人有这片子的jtag烧写软件? 谢谢!· …

查看全部问答>

请教关于wince IE问题

需要写一个IE浏览器 请问怎么能检测到当前网络状态(应该是IE的状态)是否连上或者断开, 通过检测无线网卡的方式经过实验发现不行,因为无线网卡的驱动好象也不是时时检测这个连接状态的,我把AP断开,无线网卡的信号还很强, 现在想通过判断IE ...…

查看全部问答>

后仿真信号名中的反斜杠‘\’

后仿真信号名中的反斜杠‘\\’,后仿真生成了sdf文件和.v文件,加上testbench,进行仿真。很多信号前面都有\\,比如wire \\data之类的,我想在testbench中display任务中打印下层的信号,功能仿真时,直接用点\".\",就能调用下层信号,可是现在前面 ...…

查看全部问答>

希望ST增强HSITRIM的功能。

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 ...…

查看全部问答>

关于中断几个小问题

这是一个用中断和计时器控制一个led灯循环闪烁的程序 #include sbit led1=P1^0; void main() {EA=1; ET0=1; TMOD=0x01; TH0=(65536-46083)/256; TH1=(65536-46083)%256; TR0=1; while(1); } void time() interrupt 1 { led1=~l ...…

查看全部问答>

基于stm8和rf905的无线通信程序

大神们急需啊!!!!!!!!!!!!!!…

查看全部问答>