STM32f4---蜂鸣器实验代码

发布者:数字狂想最新更新时间:2018-09-29 来源: eefocus关键字:STM32f4  蜂鸣器  实验代码 手机看文章 扫描二维码
随时随地手机看文章

beep.c文件下代码:

#include "beep.h"  

 

//初始化PF8为输出口         

//BEEP IO 初始化

void BEEP_Init(void)

{    

   GPIO_InitTypeDef   GPIO_InitStructure;

 

   RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOF, ENABLE);//使能 GPIOF时钟

//初始化蜂鸣器对应引脚 GPIOF8

   GPIO_InitStructure.GPIO_Pin = GPIO_Pin_8;

   GPIO_InitStructure.GPIO_Mode = GPIO_Mode_OUT;//普通输出模式

   GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;//推挽输出

   GPIO_InitStructure.GPIO_Speed = GPIO_Speed_100MHz;//100MHz

   GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_DOWN;//下拉

   GPIO_Init(GPIOF, &GPIO_InitStructure);//初始化 GPIO

  

   GPIO_ResetBits(GPIOF,GPIO_Pin_8);  //蜂鸣器对应引脚GPIOF8 拉低,  

}

这段代码 仅包含1个函数: void BEEP_Init(void),该函数的作用就是使能PORTF的时钟,然后调用GPIO_Init函数, 配置PF8为推挽输出。 IO口的初始化跟上一讲跑马灯实验非常类似,这里我们就不做过多讲解。

保存 beep.c代码,然后我们按同样的方法,新建一个beep.h 文件,也保存在BEEP 文件夹下面。在 beep.h中输入如下代码:

#ifndef __BEEP_H

#define __BEEP_H    

#include "sys.h"  

//LED 端口定义

#define BEEP PFout(8)  // 蜂鸣器控制 IO  

void BEEP_Init(void);//初始化                    

#endif

和上一章一样,我们这里还是通过位带操作来实现某个 IO 口的输出控制,BEEP 就直接代表了PF8 的输出状态。我们只需要令BEEP=1,就可以让蜂鸣器发声。

 

回到主界面,在main.c里面编写如下代码:

#include "sys.h"

#include "delay.h"

#include "usart.h"

#include "led.h"

#include "beep.h"

int main(void)

{  

  delay_init(168);        //初始化延时函数

  LED_Init();             //初始化 LED 端口

  BEEP_Init();           //初始化蜂鸣器端口

  

  while(1)

  {  

    GPIO_ResetBits(GPIOF,GPIO_Pin_9); // DS0拉低,亮   等同 LED0=0;

    GPIO_ResetBits(GPIOF,GPIO_Pin_8); //BEEP引脚拉低,  等同 BEEP=0;

    delay_ms(300);                    //延时300ms

GPIO_SetBits(GPIOF,GPIO_Pin_9);   // DS0拉高,灭   等同LED0=1;

    GPIO_SetBits(GPIOF,GPIO_Pin_8);   //BEEP引脚拉高, 等同BEEP=1;

    delay_ms(300);                      //延时 300ms

  }

}

注意要将 BEEP 文件夹加入头文件包含路径,不能少,否则编译的时候会报错。这段代码就是通过库函数GPIO_ResetBits和 GPIO_SetBits两个函数实现前面7.1节所阐述的功能,同时加入了 DS0(LED0)的闪烁来提示程序运行(后面的代码,我们基本都会加入这个) ,整个代码比较简单。


关键字:STM32f4  蜂鸣器  实验代码 引用地址:STM32f4---蜂鸣器实验代码

上一篇:STM32f4---串口通信实验代码(01)
下一篇:STM32f4---跑马灯实验代码

推荐阅读最新更新时间:2024-03-16 16:14

52单片机IO口输出-蜂鸣器(硬核)
什么是蜂鸣器 蜂鸣器是一种一体化结构的电子讯响器,广泛应用于电子产品中作发声器件,起到警报提醒的作用。 有源蜂鸣器与无源蜂鸣器 这里的“源”不是指电源,而是指震荡源。 有源蜂鸣器内部带震荡源,所以只要异同点就会叫。而无源内部不带震荡源,所以如果用直流信号无法令其鸣叫。需要用2K~5K的方波去驱动它,有源蜂鸣器往往比无源的贵,就是因为里面多个振荡电路。 无源蜂鸣器的优点是: 1.便宜 2.声音频率可控,可以做出音乐里基本七音符的效果 有源蜂鸣器的优点是: 程序控制方便,接通电源就可以工作,程序简单。 三极管的工作原理 什么是三极管: 三极管全称半导体三极管,也称晶体三极管,是一种控制电流的半导体器件其作用是把
[单片机]
52单片机IO口输出-<font color='red'>蜂鸣器</font>(硬核)
STM32F4中GPIO_PuPd寄存器设置上拉与下拉问题
首先 上下拉 是给IO一个默认的状态 比如控制EN的话,那么高有效的我们就下拉,低有效的话我们就上拉 而 很多IO 由于CMOS工艺问题会出现float的现象,所以不能悬空 需要PU PD。 上拉和下拉是指GPIO输出高电位(上拉)还是低电位(下拉)。 上拉就是输入高电平,然后接一个上拉电阻(起保护作用),知道上拉就表示该端口在默认情况下输入为高电平。 下拉就相反了,指输入低电平,然后接一个下拉电阻。 那么,什么是高电平,什么是低电平呢?这是电路方面的知识,百度百科讲的,表示不太懂。 上拉就是将不确定的信号通过一个电阻钳位在高电平,电阻同时起限流作用。 下拉同理。也是将不确定的信号通过一个电阻钳位在低电平。 不过从程序设计的角度
[单片机]
STM32F407ZET6 关于用PWM(做出呼吸灯)详解
说明:本作者亲测代码在板子上可用。 1、PWM定义 Pulse Width Modulation:脉冲宽度调制(PWM) 脉冲:频率 ,方波 脉冲宽度:占空比,高电平的宽度 :在同一个时间内,高电平所占比例 频率与周期:f = 1/T f:频率(主频) T:周期 2、用途 控制输出的电压和电流 灯光亮度的控制 直流电机速度的控制 3、分析PWM产生与重点 (1)分析PWM产生(看图示PWM) (2)区别PWM1与PWM2模式(STM32F4xx中文参考手册 433页) (3)高低电平极性区别(STM32F4xx中文参考手册 457页) 4、PWM库函数开发流程 (1)使能定时器14和相关IO口时钟。
[单片机]
stm32f4的GPIO和位带区
1、stm32f4的GPIO,有GPIOA~GPIOI,每组GPIO,有16个IO引脚。GPIO地址如下: GPIOA 0x4002 0000 - 0x4002 03FF GPIOB 0x4002 0400 - 0x4002 07FF GPIOC 0x4002 0800 - 0x4002 0BFF GPIOD 0x4002 0C00 - 0x4002 0FFF GPIOE 0x4002 1000 - 0x4002 13FF GPIOF 0x4002 1400 - 0x4002 17FF GPIOG 0x4002 1800 - 0x4002 1BFF GPIOH 0x4002 1C00 - 0x4002 1FFF
[单片机]
51单片机入门案列-一个按键实现点亮LED和开启蜂鸣器
通过一个特殊按键s1实现2个功能,一个是点亮led 灯,一个是开启蜂鸣器,也可以增加其他的功能,比如num=3时同时点亮LED灯和开启蜂鸣器 工具:Keil U3 + STC-SP(v6.86)+BST-v51单片机开发板 晶振:11.0592MHZ 实现代码如下: #include reg52.h #include intrins.h #define uchar unsigned char uchar num = 0; //switch中的选项 sbit led = P1 ^ 0; //LED灯 sbit s1 = P3 ^ 4; //特殊按键 sbit beep = P2 ^ 3
[单片机]
STM32F4的库函数RCC_PLLConfig()代替SystemInit()手动初始化
STM32上电复位后首先执行Reset_Handler,然后调用SystemInit()函数完成时钟等基本初始化,再执行main函数。 ; Reset handler Reset_Handler PROC EXPORT Reset_Handler IMPORT SystemInit IMPORT __main LDR R0, =SystemInit BLX R0 LDR R0, =__main BX R0 ENDP SystemInit()函数在文件system_stm32f4xx
[单片机]
第45章 STM32F429的图形加速器DMA2D的基础知识和HAL库API
45.1 初学者重要提示 DMA2D是专门用于LCD加速的,特别是刷单色屏,刷图片,刷Alpha(透明)混合效果全靠它,而且可以大大降低CPU利用率。 特别注意,大家只需对HAL库提供的DMA2D操作API有个了解即可,实际工程中,并不使用这些API,我们需要使用更加高效的寄存器直接操作,在下一章节会为大家说明。 45.2 DMA2D基础知识 DMA2D主要实现了两个功能,一个是DMA数据传输功能,另一个是2D图形加速功能。 DMA数据传输 主要是两种方式,一个是寄存器到存储器,另一个是存储器到存储器。通过DMA可以大大降低CPU的利用率。 2D图形加速功能 支持硬件的颜色格式转换和Alpha混合效果。 45.
[单片机]
第45章 <font color='red'>STM32F4</font>29的图形加速器DMA2D的基础知识和HAL库API
stm32F4 串口DMA+环形缓冲区的实现
下面是串口DMA+环形缓冲区的实现,将读写接口抽象出来,实现不定长度的数据收发。 关于环形缓冲区参考: http://blog.csdn.net/jieffantfyan/article/details/53572103 /****************************************************************************** * Copyright (C) 2016, roger * All rights reserved. * * 文件名称: tty.h * 摘 要:控制台驱动 * * 当前版本: 3.0 * 作 者: roger *
[单片机]
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

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

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

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