【STM32嵌入式系统设计与开发】——7有源蜂鸣器应用

这篇具有很好参考价值的文章主要介绍了【STM32嵌入式系统设计与开发】——7有源蜂鸣器应用。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。


STM32资料包:
百度网盘下载链接:链接:https://pan.baidu.com/s/1mWx9Asaipk-2z9HY17wYXQ?pwd=8888
提取码:8888


一、任务描述

【STM32嵌入式系统设计与开发】——7有源蜂鸣器应用,嵌入式单片机STM32,stm32

二、任务实施

观察电路图,核心板PD14连接底板中的P2外接排针,将正负极接上直流电压即可持续发声,频率固定。LED的PA0连接底板的D1灯。
【STM32嵌入式系统设计与开发】——7有源蜂鸣器应用,嵌入式单片机STM32,stm32

1、ActiveBeep工程文件夹创建

步骤1:复制工程模板“1_Template”重命名为“4_ActiveBeep”
【STM32嵌入式系统设计与开发】——7有源蜂鸣器应用,嵌入式单片机STM32,stm32

步骤2:修改项目工程名,先删除projects文件夹内除了Template.uvprojx文件外的所有内容并修改为“ActiveBeep.uvprojx”。并删除output/obj和output/lst中的所有文件。
【STM32嵌入式系统设计与开发】——7有源蜂鸣器应用,嵌入式单片机STM32,stm32
步骤3:运行“ActiveBeep.uvprojx”打开目标选项“Options for Target”中的“Output”输出文件,并修改可执行文件名称为“ActiveBeep”点击“OK”保存设置。最后点击“Rebuild”编译该工程生成ActiveBeep文件。
【STM32嵌入式系统设计与开发】——7有源蜂鸣器应用,嵌入式单片机STM32,stm32

步骤4:复制“2_LEDTest”中的"1_LED"文件复制到hardware中。
【STM32嵌入式系统设计与开发】——7有源蜂鸣器应用,嵌入式单片机STM32,stm32

步骤5:新建“2_ActiveBeep”文件,并在该文件夹下新建“ActiveBeep.c”和“ActiveBeep.h”两个文件。
【STM32嵌入式系统设计与开发】——7有源蜂鸣器应用,嵌入式单片机STM32,stm32

步骤6:工程组文件中添加“led.c”和“ActiveBeep.c”文件。
【STM32嵌入式系统设计与开发】——7有源蜂鸣器应用,嵌入式单片机STM32,stm32

步骤7:目标选项添加添加头文件路径
【STM32嵌入式系统设计与开发】——7有源蜂鸣器应用,嵌入式单片机STM32,stm32

2、函数编辑

(1)主函数编辑

控制蜂鸣器和 LED,每次循环时蜂鸣器和 LED 的状态会交替改变,并且每次循环时延迟的时间会逐渐增加,直到 temp 达到 200,然后重新从 10 开始。这样就会产生一种周期性变化的效果,蜂鸣器和 LED 会以不同的频率闪烁。
【STM32嵌入式系统设计与开发】——7有源蜂鸣器应用,嵌入式单片机STM32,stm32
步骤1:端口初始化准备

	//函数初始化,端口准备
	delay_init(); //启动滴答定时器
	LED_Init();   //LED初始化
	BeepInit();   //有源蜂鸣器初始化

【STM32嵌入式系统设计与开发】——7有源蜂鸣器应用,嵌入式单片机STM32,stm32
步骤2:循环时延迟的时间会逐渐增加,直到 temp 达到 200,然后重新从 10 开始。这样就会产生一种周期性变化的效果,蜂鸣器和 LED 会以不同的频率闪烁。

	while(1)
	{	 										
		delay_ms(temp);// 延迟temp毫秒
		temp += 100;    // 增加延迟时间10毫秒
		
		beep = !beep;  // 切换蜂鸣器状态(取反)
		LED1 = !LED1;    // 切换LED状态(取反)
		
		if(temp == 2000)// 如果延迟时间达到200毫秒,则重置为10毫秒
				temp = 100;
	}

【STM32嵌入式系统设计与开发】——7有源蜂鸣器应用,嵌入式单片机STM32,stm32

(2)LED IO初始化函数(LED_Init())

/*********************************************************************
 @Function  : 开发板LED IO初始化
 @Parameter : N/A 
 @Return    : N/A
**********************************************************************/
void ExpLEDInit(void)
{
    GPIO_InitTypeDef GPIO_InitStructure; // 定义 GPIO 初始化结构体变量
    
    /* 时钟使能 */	
    RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE); // 使能 GPIOA 时钟
    
    /* 引脚配置 */	
    GPIO_InitStructure.GPIO_Pin = LED_ALL; // D1-D8->PA0-PA7 
    GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; // 设置引脚为推挽输出
    GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; // 设置引脚的输出速度为 50MHz
    GPIO_Init(GPIOA, &GPIO_InitStructure); // 应用以上配置到 GPIOA 上
    
    GPIO_SetBits(GPIOA, LED_ALL); // 将 GPIOA 的引脚 PA0-PA7 设置为高电平,使得开发板 LED 灭
}

【STM32嵌入式系统设计与开发】——7有源蜂鸣器应用,嵌入式单片机STM32,stm32

(3)蜂鸣器 IO初始化(BeepInit())

初始化PD14端口,并为推挽输出。

/*********************************************************************
 @Function  : 开发板蜂鸣器 IO初始化
 @Parameter : None 
 @Return    : None
**********************************************************************/
void BeepInit(void)
{
 	GPIO_InitTypeDef  GPIO_InitStructure;
	
	/*时钟使能*/
    RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOD,ENABLE);
	
	/*引脚配置*/
    GPIO_InitStructure.GPIO_Pin = GPIO_Pin_14;       // 将开发板四个按键连接到PE8~PE15
	GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;//设置 GPIO 输出速度为 50MHz
	GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; //推挽输出		 
    GPIO_Init(GPIOD, &GPIO_InitStructure);	
	
	/*引脚初始电平设置*/
	GPIO_SetBits(GPIOD,GPIO_Pin_14);
}

【STM32嵌入式系统设计与开发】——7有源蜂鸣器应用,嵌入式单片机STM32,stm32

3、宏定义

(1)源文件添加头文件

步骤1:按键功能文件中添加相关头文件,源文件报错消失部分

#include "stm32f10x_gpio.h"
#include "stm32f10x_rcc.h"
#include "ActiveBeep.h"

【STM32嵌入式系统设计与开发】——7有源蜂鸣器应用,嵌入式单片机STM32,stm32
步骤2:主函数添加所需的led和KeyBoard头文件,主源文件部分报错消失

/***********Hardweare***************/
#include "led.h"
#include "ActiveBeep.h"

【STM32嵌入式系统设计与开发】——7有源蜂鸣器应用,嵌入式单片机STM32,stm32

(2)有源蜂鸣器头文件编辑

点击编译显示报错
【STM32嵌入式系统设计与开发】——7有源蜂鸣器应用,嵌入式单片机STM32,stm32
步骤1:创建一个宏定义保护

#ifndef _SINGLEKEY_H
#define _SINGLEKEY_H





#endif

【STM32嵌入式系统设计与开发】——7有源蜂鸣器应用,嵌入式单片机STM32,stm32
步骤2:添加宏定义

#define beep PDout(14)   // 定义了一个宏,用于操作PD14引脚的输出状态,此处假设使用的是外部定义的函数或宏

【STM32嵌入式系统设计与开发】——7有源蜂鸣器应用,嵌入式单片机STM32,stm32
步骤3:添加led宏定义

#define LED_ALL GPIO_Pin_0 | GPIO_Pin_1 | GPIO_Pin_2 | GPIO_Pin_3 |GPIO_Pin_4 | GPIO_Pin_5 | GPIO_Pin_6 | GPIO_Pin_7

【STM32嵌入式系统设计与开发】——7有源蜂鸣器应用,嵌入式单片机STM32,stm32
步骤3:添加函数声明

void BeepInit(void);     // 函数声明,用于初始化蜂鸣器

【STM32嵌入式系统设计与开发】——7有源蜂鸣器应用,嵌入式单片机STM32,stm32

步骤4:添加数据类型和宏的头文件

#include "stdint.h"      // 包含标准的C语言头文件,用于定义标准的整数类型

【STM32嵌入式系统设计与开发】——7有源蜂鸣器应用,嵌入式单片机STM32,stm32

4、知识链接

(1)有源蜂鸣器

蜂鸣器是一种能将音频信号转化声音信号的发音器件,在家电器上,在银行、公安的报警系统中,在电子玩具、游戏机中都得到普遍应用。蜂鸣器是一种能将音频信号转化声音信号的发音器件,在家电器上,在银行、公安的报警系统中,在电子玩具、游戏机中都得到普遍应用。蜂鸣器主要用于提示或报警,根据设计和用途的不同,能发出音乐声、汽笛声、蜂鸣声、报警声、声铃声等各种不同的声音。

   内部自带振荡源,将正负极接上直流电压即可持续发声,频率固定。

【STM32嵌入式系统设计与开发】——7有源蜂鸣器应用,嵌入式单片机STM32,stm32

(2)无源蜂鸣器

   内部不带振荡源,需要控制器提供振荡脉冲才可发声,调整提供振荡脉冲的频率,可发出不同频率的声音

【STM32嵌入式系统设计与开发】——7有源蜂鸣器应用,嵌入式单片机STM32,stm32

5、工程测试

【STM32嵌入式系统设计与开发】——7有源蜂鸣器应用,嵌入式单片机STM32,stm32文章来源地址https://www.toymoban.com/news/detail-841971.html

到了这里,关于【STM32嵌入式系统设计与开发】——7有源蜂鸣器应用的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 嵌入式linux物联网毕业设计项目智能语音识别基于stm32mp157开发板

    stm32mp157开发板FS-MP1A是华清远见自主研发的一款高品质、高性价比的Linux+单片机二合一的嵌入式教学级开发板。开发板搭载ST的STM32MP157高性能微处理器,集成2个Cortex-A7核和1个Cortex-M4 核,A7核上可以跑Linux操作系统,M4核上可以跑FreeRTOS、RT-Thread等实时操作系统。开发板搭配仿真

    2024年02月02日
    浏览(60)
  • 【毕业设计】基于RFID的门禁系统 - 单片机 物联网 嵌入式 stm32

    Hi,大家好,这里是丹成学长,今天向大家介绍一个 如何使用RFID技术构建一个单片机门禁系统 基于RFID的门禁系统 大家可用于 课程设计 或 毕业设计 单片机-嵌入式毕设选题大全及项目分享: https://blog.csdn.net/m0_71572576/article/details/125409052 本篇博客,学长先向大家介绍射频识别

    2024年02月03日
    浏览(39)
  • 毕业设计 stm32心率血氧体征监测系统设计与实现 - 单片机 嵌入式 物联网

    🔥 这两年开始毕业设计和毕业答辩的要求和难度不断提升,传统的毕设题目缺少创新和亮点,往往达不到毕业答辩的要求,这两年不断有学弟学妹告诉学长自己做的项目系统达不到老师的要求。 为了大家能够顺利以及最少的精力通过毕设,学长分享优质毕业设计项目,今天

    2024年02月02日
    浏览(44)
  • STM32毕设分享 - 基于单片机的智能鱼缸系统设计与实现 - 嵌入式 物联网 stm32 51单片机 智能鱼缸

    Hi,大家好,今天向大家介绍一个 单片机项目, 大家可用于 课程设计 或 毕业设计 基于单片机的智能鱼缸系统设计与实现 🔥 项目分享与指导: https://gitee.com/sinonfin/sharing 近年以来,随着我国综合实力飞速飙升,人们对物质和精神生活质量的要求也不断提升,各式各样的智能

    2024年04月11日
    浏览(50)
  • 【毕业设计】基于单片机的智能鱼缸系统设计与实现 - 嵌入式 物联网 stm32 51单片机 智能鱼缸

    Hi,大家好,今天向大家介绍一个 单片机项目, 大家可用于 课程设计 或 毕业设计 基于单片机的智能鱼缸系统设计与实现 🔥 项目分享与指导: https://gitee.com/sinonfin/sharing 近年以来,随着我国综合实力飞速飙升,人们对物质和精神生活质量的要求也不断提升,各式各样的智能

    2024年02月04日
    浏览(74)
  • 【物联网毕业设计】 单片机WIFI智能家居温湿度与烟雾检测系统 - Stm32 嵌入式

    🔥 这两年开始毕业设计和毕业答辩的要求和难度不断提升,传统的毕设题目缺少创新和亮点,往往达不到毕业答辩的要求,这两年不断有学弟学妹告诉学长自己做的项目系统达不到老师的要求。 为了大家能够顺利以及最少的精力通过毕设,学长分享优质毕业设计项目,今天

    2023年04月21日
    浏览(45)
  • 物联网毕设 - 基于单片机的智能鱼缸系统设计与实现 - 嵌入式 物联网 stm32 51单片机 智能鱼缸

    Hi,大家好,今天向大家介绍一个 单片机项目, 大家可用于 课程设计 或 毕业设计 基于单片机的智能鱼缸系统设计与实现 🔥 项目分享与指导: https://gitee.com/sinonfin/sharing 近年以来,随着我国综合实力飞速飙升,人们对物质和精神生活质量的要求也不断提升,各式各样的智能

    2024年02月03日
    浏览(69)
  • STM32开发环境搭建&工程创建(嵌入式学习)

    简介 STM32CubeMX是STMicroelectronics公司提供的一款集成开发环境(IDE)工具,用于快速配置和初始化STM32微控制器系列的软件工程。它提供了图形化界面和交互式工具,使开发者能够轻松地生成STM32微控制器的初始化代码和配置文件。 STM32CubeMX具有以下主要功能和特点: 微控制器

    2024年02月11日
    浏览(54)
  • STM32的时钟系统(嵌入式学习)

    时钟是指用于计量和同步时间的装置或系统。时钟是嵌入式系统的脉搏,处理器内核在时钟驱动下完成指令执行,状态变换等动作,外设部件在时钟的驱动下完成各种工作,例如:串口数据的发送、AD转换、定时器计数等。因此时钟对于计算机系统是至关重要的,通常时钟系

    2024年02月16日
    浏览(41)
  • STM32的中断系统详解(嵌入式学习)

    中断是处理器中的一种机制,用于响应和处理突发事件或紧急事件。当发生中断时,当前正在执行的程序会被暂时中止,处理器会跳转到中断处理程序(也称为中断服务例程),对中断事件进行处理。处理完中断后,处理器再返回到被中断的程序继续执行。 中断可以分为内部

    2024年02月12日
    浏览(61)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包