嵌入式系统原理实验四蜂鸣器_精品文档.doc
- 文档编号:1521742
- 上传时间:2022-10-22
- 格式:DOC
- 页数:3
- 大小:167KB
嵌入式系统原理实验四蜂鸣器_精品文档.doc
《嵌入式系统原理实验四蜂鸣器_精品文档.doc》由会员分享,可在线阅读,更多相关《嵌入式系统原理实验四蜂鸣器_精品文档.doc(3页珍藏版)》请在冰豆网上搜索。
实验四蜂鸣器实验
实验目的:
控制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灯和蜂鸣器配合使用?
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 嵌入式 系统 原理 实验 蜂鸣器 精品 文档