欢迎来到天天文库
浏览记录
ID:46409539
大小:167.00 KB
页数:3页
时间:2019-11-23
《嵌入式系统原理实验四蜂鸣器》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、实验四蜂鸣器实验实验目的:控制ALIENTEK战舰STM32开发板上的蜂鸣器发出:“嘀”…“嘀”…的间隔声,进一步熟悉STM32IO口的使用内容要点:1.硬件介绍蜂鸣器是一种一体化结构的电子讯响器,采用直流电压供电,广泛应用于计算机、打印机、复印机、报警器、电子玩具、汽车电子设备、电话机、定时器等电子产品中作发声器件。蜂鸣器主要分为压电式蜂鸣器和电磁式蜂鸣器两种类型。战舰STM32开发板板载的蜂鸣器是电磁式的有源蜂鸣器这里的有源不是指电源的“源”,而是指有没有自带震荡电路,有源蜂鸣器自带了震荡电路,一通电就会发声ST
2、M32的单个IO最大可以提供25mA电流(来自数据手册),而蜂鸣器的驱动电流是30mA左右,两者十分相近,但是全盘考虑,STM32整个芯片的电流,最大也就150mA,如果用IO口直接驱动蜂鸣器,其他地方用电就得省着点了…所以,我们不用STM32的IO直接驱动蜂鸣器,而是通过三极管扩流后再驱动蜂鸣器,这样STM32的IO只需要提供不到1mA的电流就足够了。IO口使用虽然简单,但是和外部电路的匹配设计,还是要十分讲究的,考虑越多,设计就越可靠,可能出现的问题也就越少。蜂鸣器在硬件上也是直接连接好了的,不需要经过任何设置,
3、直接编写代码就可以了。蜂鸣器的驱动信号连接在STM32的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_HvoidBEEP_Init(void);#endifbeep.h然后我们打开USER文件夹Template.
5、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_P
6、in_8;//BEEP-->GPIOB.8端口配置GPIO_InitStructure.GPIO_Mode=GPIO_Mode_Out_PP;//推挽输出GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;//速度为50MHzGPIO_Init(GPIOB,&GPIO_InitStructure);//根据参数初始化GPIOB.8GPIO_ResetBits(GPIOB,GPIO_Pin_8);//输出0,关闭蜂鸣器输出}}这段代码仅包含1个函数:voidBEEP_Init(
7、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(GPI
8、OE,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灯亮的同时蜂鸣
此文档下载收益归作者所有