嵌入式系统原理实验四蜂鸣器

实验蜂鸣器实验
实验目的
控制 ALIENTEK 战舰 STM32 开发板上的蜂鸣器发出:“嘀”…“ 嘀”…
的间隔声,进一步熟悉 STM32 IO 口的使用
内容要点
1.硬件介绍
蜂鸣器是一种一体化结构的电子讯响器,采用直流电压供电,广泛应用于计算机、打印机、复印机、报警器、电子玩具、汽车电子设备、电话机、定时器等电子产品中作发声器件。蜂鸣器主要分为压电式蜂鸣器和电磁式蜂鸣器两种类型。
    战舰 STM32 开发板板载的蜂鸣器是电磁式的有源蜂鸣器
这里的有源不是指电源的“源”,而是指有没有自带震荡电路,有源蜂鸣器自带了震荡电路,一通电就会发声
STM32的单个 IO 漆雾净化器最大可以提供 25mA 电流(来自数据手册),而蜂鸣器的驱动电流是 30mA 左右,两者十分相近,但是全盘考虑, STM32 整个芯片的电流,最大也就 150mA,如果用 IO 口直接驱动蜂鸣器,其他地方用电就得省着点了…所以,我们不用 STM32 IO 直接驱动蜂鸣器, 而是通过三极管扩流后再驱动蜂鸣器,这样 STM32 IO 只需要提供不到 1mA 的电流就足够了。IO 口使用虽然简单,但是和外部电路的匹配设计,还是要十分讲究的,考虑越多,设计就越可靠,可能出现的问题也就越少。
蜂鸣器在硬件上也是直接连接好了的, 不需要经过任何设置,直接编写代码就可以了。 蜂鸣器的驱动信号连接在 STM32 PB8 上。
图1  蜂鸣器与 STM32 连接原理图
PB.8 agagcl参比电极输出高电平的时候,蜂鸣器将发声,当 PB.8 输出低电平的时候,蜂鸣器停止发声
2.软件设计
可以直接打开本实验工程,也可以按下面的步骤在实验 1 的基础上新建蜂鸣器实验工程。 复制上一章的 LED 实验工程,然后打开 USER 目录,把目录下面工程 LED.uvprojx 重命
名为 BEEP.uvprojx。,然后在 HARDWARE 文件夹下新建一个 BEEP 文件夹,用来存放与蜂鸣器相关的代码
beep.h 头文件的路径加入到工程里面
一般的头文件有固定的格式,多个地方调用头文件会重复引用,为了避免头文件内容重复引用,一般通过预编译的方式来写头文件。一般的格式如下:
#ifndef __BEEP_H
#define __BEEP滑步机_H
#endif
第一次调用时会将#define下面这一节全部定义,重复调用时,下面的东西就不会被引用。
头文件里一般用来写函数声明或者宏定义,在源文件中再去定义具体的函数。
#ifndef __BEEP_H
#define __BEEP_H
void BEEP_Init(void);
#endif
滨州玻璃垫片
然后我们打开 USER 文件夹Template. uvprojx,大家可以将其重命名为 BEEP. uvprojx),按新建按钮新建一个文件,然后保存在 HARDWARE->BEEP 文件夹下面,保存为 beep.c。在该文件中输入如下代码:
#include "beep.h"
void BEEP_Init(void)
{
GPIO_InitTypeDef GPIO_InitStructure;
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE);
//使能 GPIOB 端口时钟
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_8; //BEEP-->GPIOB.8 端口配置
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; //推挽输出
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; //速度为 50MHz
GPIO_Init(GPIOB, &GPIO_InitStructure); //根据参数初始化 GPIOB.8
GPIO_ResetBits(GPIOB,GPIO_Pin_8); //输出 0,关闭蜂鸣器输出
} }
    这段代码 仅包含 1 个函数: void BEEP_Init(void),该函数的作用就是使能 PORTB 的时钟,同时配置 PB8 为推挽输出。 这里的初始化内容跟跑马灯实验几乎是一样的
接下来,开始写main.c文件
//蜂鸣器实验
#include "stm32f10x.h"
#include "delay.h"   
#include "led.h"
#include "beep.h"
int main(void)
{
    delay_init();            //延时函数初始化     
    LED_Init();                  //初始化与LED连接的硬件接口
    BEEP_Init();            //初始化蜂鸣器端口超声波放大器
    while(1)
    {
电镀铜包钢        GPIO_ResetBits(GPIOE,GPIO_Pin_5);
        GPIO_ResetBits(GPIOB,GPIO_Pin_8);
        delay_ms(500);//延时300ms
        GPIO_SetBits(GPIOE,GPIO_Pin_5);
        GPIO_SetBits(GPIOB,GPIO_Pin_8);
        delay_ms(500);//延时300ms
    }
}
实验现象:LED灯亮的同时蜂鸣器在叫,LED灯灭时蜂鸣器不叫。
能否让两个LED灯和蜂鸣器配合使用?

本文发布于:2024-09-22 13:36:15,感谢您对本站的认可!

本文链接:https://www.17tex.com/tex/4/164131.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:蜂鸣器   实验   头文件   工程   引用   电路   函数   代码
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2024 Comsenz Inc.Powered by © 易纺专利技术学习网 豫ICP备2022007602号 豫公网安备41160202000603 站长QQ:729038198 关于我们 投诉建议