嵌入式系统原理实验四蜂鸣器_精品文档.doc

上传人:b****2 文档编号:1521742 上传时间:2022-10-22 格式:DOC 页数:3 大小:167KB
下载 相关 举报
嵌入式系统原理实验四蜂鸣器_精品文档.doc_第1页
第1页 / 共3页
嵌入式系统原理实验四蜂鸣器_精品文档.doc_第2页
第2页 / 共3页
嵌入式系统原理实验四蜂鸣器_精品文档.doc_第3页
第3页 / 共3页
亲,该文档总共3页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

嵌入式系统原理实验四蜂鸣器_精品文档.doc

《嵌入式系统原理实验四蜂鸣器_精品文档.doc》由会员分享,可在线阅读,更多相关《嵌入式系统原理实验四蜂鸣器_精品文档.doc(3页珍藏版)》请在冰豆网上搜索。

嵌入式系统原理实验四蜂鸣器_精品文档.doc

实验四蜂鸣器实验

实验目的:

控制ALIENTEK战舰STM32开发板上的蜂鸣器发出:

“嘀”…“嘀”…

的间隔声,进一步熟悉STM32IO口的使用

内容要点:

1.硬件介绍

蜂鸣器是一种一体化结构的电子讯响器,采用直流电压供电,广泛应用于计算机、打印机、复印机、报警器、电子玩具、汽车电子设备、电话机、定时器等电子产品中作发声器件。

蜂鸣器主要分为压电式蜂鸣器和电磁式蜂鸣器两种类型。

战舰STM32开发板板载的蜂鸣器是电磁式的有源蜂鸣器

这里的有源不是指电源的“源”,而是指有没有自带震荡电路,有源蜂鸣器自带了震荡电路,一通电就会发声

STM32的单个IO最大可以提供25mA电流(来自数据手册),而蜂鸣器的驱动电流是30mA左右,两者十分相近,但是全盘考虑,STM32整个芯片的电流,最大也就150mA,如果用IO口直接驱动蜂鸣器,其他地方用电就得省着点了…所以,我们不用STM32的IO直接驱动蜂鸣器,而是通过三极管扩流后再驱动蜂鸣器,这样STM32的IO只需要提供不到1mA的电流就足够了。

IO口使用虽然简单,但是和外部电路的匹配设计,还是要十分讲究的,考虑越多,设计就越可靠,可能出现的问题也就越少。

蜂鸣器在硬件上也是直接连接好了的,不需要经过任何设置,直接编写代码就可以了。

蜂鸣器的驱动信号连接在STM32的PB8上。

图1蜂鸣器与STM32连接原理图

当PB.8输出高电平的时候,蜂鸣器将发声,当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

voidBEEP_Init(void);

#endifbeep.h

然后我们打开USER文件夹Template.uvprojx,大家可以将其重命名为BEEP.uvprojx),按新建按钮新建一个文件,然后保存在HARDWARE->BEEP文件夹下面,保存为beep.c。

在该文件中输入如下代码:

#include"beep.h"

voidBEEP_Init(void)

{

GPIO_InitTypeDefGPIO_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个函数:

voidBEEP_Init(void),该函数的作用就是使能PORTB的时钟,同时配置PB8为推挽输出。

这里的初始化内容跟跑马灯实验几乎是一样的

接下来,开始写main.c文件

//蜂鸣器实验

#include"stm32f10x.h"

#include"delay.h"

#include"led.h"

#include"beep.h"

intmain(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灯和蜂鸣器配合使用?

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 求职职场 > 笔试

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1