STM32蜂鸣器模拟播放歌曲

发布者:梦中徐来最新更新时间:2020-07-12 来源: 51hei关键字:STM32  蜂鸣器  模拟播放歌曲 手机看文章 扫描二维码
随时随地手机看文章

/**********************************************************************

*函数名: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,

[1] [2]
关键字:STM32  蜂鸣器  模拟播放歌曲 引用地址:STM32蜂鸣器模拟播放歌曲

上一篇:STM32+LCD12864汉字显示与定位 时钟,闹钟Proteus仿真程序
下一篇:STM32控制步进电机源代码

推荐阅读最新更新时间:2024-11-21 11:55

STM32如何配置使用SPI通信
简介:SPI是一种高速的,全双工,同步的通信总线,原理和使用简单,占用引脚资源少,是一种常用的通信方式。 STM32通常有2~3个SPI接口 根据STM32手册的使用方法: 1. Enable peripheral clock 2. Enable SCK, MOSI, MISO and NSS GPIO clocks 3. Peripherals alternate function:  Connect the pin to the desired peripherals' Alternate Function (AF)  Call GPIO_Init() function. 4. P
[单片机]
再造STM32---第十一部分:GPIO—位带操作
本章参考资料:《STM32F4xx 中文参考手册》存储器和总线构架章节、 GPIO 章节,《Cortex®-M4 内核编程手册》 2.2.5 Bit-banding。学习本章时,配套这些参考资料学习效果会更佳。 11.1 位带简介: 位操作就是可以单独的对一个比特位读和写,这个在 51 单片机中非常常见。 51 单片机中通过关键字 sbit 来实现位定义, F429 中没有这样的关键字,而是通过访问位带别名区来实现。 在 F429 中,有两个地方实现了位带,一个是 SRAM 区的最低 1MB 空间,另一个是外设区最低 1MB 空间。这两个 1MB 的空间除了可以像正常的 RAM 一样操作外,他们还有自己的
[单片机]
再造STM32---第十一部分:GPIO—位带操作
Stm32的TFT LCD显示器控制学习笔记
学习stm32,TFT LCD显示屏控制是很重要的一章,本人在初步学习STM32遇到了很多困难,所以把学习中积累的部分感觉重要的知识点罗列出来。目前常用的TFT液晶内部驱动芯片是ILI9320,ILI9325系列,内部原理基本一致,我用的是ILI9320。用stm32驱动液晶,实际上就是驱动ILI9320芯片。点亮TFT LCD的具体步骤有: (1)stm32与ILI9320芯片管脚的初始化。 void LCD_Init(void); /*初始化LCD,也就是初始化LCD控制器ILI9320芯片与stm32控制器的管脚连接配置*/其中包括CS:TFTLCD片选信号,WR:向TFTLCD写入信号,RD:从TFTLCD读取信号,DB(
[单片机]
STM32 外部GPIO中断配置
源起:项目中需要使用统一的时间触发信号使得采样时间同步,因此需要某一个管脚来进行触发。 硬件情况:采用PA11管脚 需要明确的是,PxN管脚共用外部中断线EXTIN和外部中断向量EXTIN_IRQn和中断服务程序入口EXTIN_IRQHandler,但是需要注意的是 共用EXTI9_5_IRQn和EXTI9_5_IRQHandler、 共用EXTI15_10_IRQn和EXTI15_10_IRQHandler 基本过程: 1、设置时钟 RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA | RCC_APB2Periph_AFIO, ENABLE);  注意需要打开AFIO时钟
[单片机]
STM32学习之GPIO与SYSTICK使用+软件仿真
简介:小弟也是刚刚学习STM32,有什么不懂的还望大师们指点。以下程序是利用SYSTICK作为延时程序使GPIOA_Pin0产生1S的电压变化。初学,也就会这些了,拿出来与大家分享一下。 #include stm32f10x_conf.h void delay_ms(u32 ms); 声明延时函数 void GPIO_Config(void); 声明GPIO配置函数 int main(void) 主程序 { SystemInit(); 初始化系统时钟默认72MHZ RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA,ENABLE); 使能GPIOA时钟 GPIO_Config(); 调用GP
[单片机]
<font color='red'>STM32</font>学习之GPIO与SYSTICK使用+软件仿真
毕业设计| STM32单片机控制的智能家居系统设计
☞ 智能家居系统功能概述 上面视频演示的STM32智能家居的功能是: ✔ 通过语音识别和上位机App进行控制 ✔ 实现有人闯入自动警报 ✔ 照明控制,温度和湿度控制,空气质量测量,家用电器定时和自动窗帘等功能的控制 主控是STM32F103RCT6单片机,连接到每个传感器。通过LD3320语音芯片生成语音信号到MCU的串口,在串口识别出发送的数据后,可以控制每个传感器,还通过蓝牙HC05将AT命令连接发送到手机App的控制端,进而控制家电。 ☞ 离线语音识别功能: 该功能的语音识别词分为两级: 第一级识别词:“小白”用来唤醒智能家居系统,此时LD3320的模块灯常亮。 第二级识别词用来控制“家居”,如:“开灯”“
[单片机]
毕业设计| <font color='red'>STM32</font>单片机控制的智能家居系统设计
STM32菜鸟成长记录---普通定时器应用
一、STM32通用定时器原理 STM32 系列的CPU,有多达8个定时器,其中TIM1和TIM8是能够产生三对PWM互补输出的高级定时器,常用于三相电机的驱动,它们的时钟由APB2的输出产生。其它6个为普通定时器,时钟由APB1的输出产生。 下图是STM32参考手册上时钟分配图中,有关定时器时钟部分的截图: 从图中可以看出,定时器的时钟不是直接来自APB1或APB2,而是来自于输入为APB1或APB2的一个倍频器,图中的蓝色部分。 下面以通用定时器2的时钟说明这个倍频器的作用:当APB1的预分频系数为1时,这个倍频器不起作用,定时器的时钟频率等于APB1的频率;当APB1的预分频系数为其它数值(即预
[单片机]
<font color='red'>STM32</font>菜鸟成长记录---普通定时器应用
意法STM32系列获ARM RealView微控制器开发工具包支持
ARM公司日前宣布RealView微控制器开发工具包将支持意法半导体基于ARM Cortex-M3处理器的全新STM32F1xx系列器件。 STM32F101(接入行)和STM32F103(性能行)将是意法半导体首个基于ARM Cortex-M3处理器的器件系列,兼具卓越的高性能和低功耗。该系列器件拥有高达72MHz的CPU时钟速度、128Kbyte片上闪存ROM及20Kbyte片上RAM,还包括A/D、CAN、USB、SPI、I2C等众多外设及多达80个GPIO。 RealView微控制器开发工具包3.1可为新器件提供支持。这一最新版本保留了Keil Vision 3集成开发环境(IDE)易于使用的特性,并增加了针对STM3
[焦点新闻]
小广播
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved