《嵌入式系统原理实验四蜂鸣器(共3页).doc》由会员分享,可在线阅读,更多相关《嵌入式系统原理实验四蜂鸣器(共3页).doc(3页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、精选优质文档-倾情为你奉上实验四 蜂鸣器实验实验目的:控制 ALIENTEK 战舰 STM32 开发板上的蜂鸣器发出:“嘀”“ 嘀”的间隔声,进一步熟悉 STM32 IO 口的使用内容要点:1. 硬件介绍蜂鸣器是一种一体化结构的电子讯响器,采用直流电压供电,广泛应用于计算机、打印机、复印机、报警器、电子玩具、汽车电子设备、电话机、定时器等电子产品中作发声器件。蜂鸣器主要分为压电式蜂鸣器和电磁式蜂鸣器两种类型。 战舰 STM32 开发板板载的蜂鸣器是电磁式的有源蜂鸣器这里的有源不是指电源的“源”,而是指有没有自带震荡电路,有源蜂鸣器自带了震荡电路,一通电就会发声STM32的单个 IO 最大可以提
2、供 25mA 电流(来自数据手册),而蜂鸣器的驱动电流是 30mA 左右,两者十分相近,但是全盘考虑, STM32 整个芯片的电流,最大也就 150mA,如果用 IO 口直接驱动蜂鸣器,其他地方用电就得省着点了所以,我们不用 STM32 的 IO 直接驱动蜂鸣器, 而是通过三极管扩流后再驱动蜂鸣器,这样 STM32 的 IO 只需要提供不到 1mA 的电流就足够了。IO 口使用虽然简单,但是和外部电路的匹配设计,还是要十分讲究的,考虑越多,设计就越可靠,可能出现的问题也就越少。蜂鸣器在硬件上也是直接连接好了的, 不需要经过任何设置,直接编写代码就可以了。 蜂鸣器的驱动信号连接在 STM32 的
3、 PB8 上。图1 蜂鸣器与 STM32 连接原理图当 PB.8 输出高电平的时候,蜂鸣器将发声,当 PB.8 输出低电平的时候,蜂鸣器停止发声2. 软件设计可以直接打开本实验工程,也可以按下面的步骤在实验 1 的基础上新建蜂鸣器实验工程。 复制上一章的 LED 实验工程,然后打开 USER 目录,把目录下面工程 LED.uvprojx 重命名为 BEEP.uvprojx。,然后在 HARDWARE 文件夹下新建一个 BEEP 文件夹,用来存放与蜂鸣器相关的代码 将 beep.h 头文件的路径加入到工程里面一般的头文件有固定的格式,多个地方调用头文件会重复引用,为了避免头文件内容重复引用,一般
4、通过预编译的方式来写头文件。一般的格式如下:#ifndef _BEEP_H#define _BEEP_H#endif第一次调用时会将#define下面这一节全部定义,重复调用时,下面的东西就不会被引用。头文件里一般用来写函数声明或者宏定义,在源文件中再去定义具体的函数。#ifndef _BEEP_H#define _BEEP_Hvoid BEEP_Init(void);#endifbeep.h然后我们打开 USER 文件夹Template. uvprojx,大家可以将其重命名为 BEEP. uvprojx),按新建按钮新建一个文件,然后保存在 HARDWARE-BEEP 文件夹下面,保存为 b
5、eep.c。在该文件中输入如下代码:#include beep.hvoid 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
6、= GPIO_Speed_50MHz; /速度为 50MHzGPIO_Init(GPIOB, &GPIO_InitStructure); /根据参数初始化 GPIOB.8GPIO_ResetBits(GPIOB,GPIO_Pin_8); /输出 0,关闭蜂鸣器输出 这段代码 仅包含 1 个函数: void BEEP_Init(void),该函数的作用就是使能 PORTB 的时钟,同时配置 PB8 为推挽输出。 这里的初始化内容跟跑马灯实验几乎是一样的接下来,开始写main.c文件/蜂鸣器实验#include stm32f10x.h#include delay.h#include led.h #
7、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);/延时300msGPIO_SetBits(GPIOE,GPIO_Pin_5); GPIO_SetBits(GPIOB,GPIO_Pin_8);delay_ms(500);/延时300ms 实验现象:LED灯亮的同时蜂鸣器在叫,LED灯灭时蜂鸣器不叫。能否让两个LED灯和蜂鸣器配合使用?专心-专注-专业