STM32控制蜂鸣器间隔发出声音(响1s,关闭1s)

这篇具有很好参考价值的文章主要介绍了STM32控制蜂鸣器间隔发出声音(响1s,关闭1s)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一.蜂鸣器介绍

我现在这个蜂鸣器是有缘蜂鸣器,只能发出一种声音。而且是低电平触发(根据你们自己的蜂鸣器决定),现在我要做的一个实验就是蜂鸣器响1s,关闭1s。实现间隔的发出声音。

二 代码讲解

这里我使用的是定时器6进行计时。

2.1 初始化蜂鸣器引脚

我这边蜂鸣器对应的引脚是GPIOA_Pin_8

void Buzzer_GPIO_Configuration(void)
{ 
  RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA,ENABLE);
  GPIO_InitTypeDef GPIO_InitStructure;
  GPIO_InitStructure.GPIO_Pin =  GPIO_Pin_8;
  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
  GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
  GPIO_Init(GPIOA, &GPIO_InitStructure);
}

2.2 配置中断优先级和定时器

static void TIME6_NVIC_Configuration(void)
{
	NVIC_InitTypeDef NVIC_InitStructure;
	
	NVIC_InitStructure.NVIC_IRQChannel = TIM6_IRQn;
	NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 3 ;
	NVIC_InitStructure.NVIC_IRQChannelSubPriority = 2;
	NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
	NVIC_Init(&NVIC_InitStructure);
	
}

static void TIME6_cfg(void)
{
	TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure;

	//允许TIM6的时钟
	RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM6,ENABLE);

	//初始化Timer
	TIM_DeInit(TIM6);

	//采用内部时钟给TIM2提供时钟源
	//TIM_InternalClockConfig(TIM6);

	//预分频系数为71,这样计数器时钟为72MHz/72= 1us
	TIM_TimeBaseStructure.TIM_Prescaler = 72 -1;

	//设置时钟分割
	TIM_TimeBaseStructure.TIM_ClockDivision = TIM_CKD_DIV1;

	//设置计数器模式为向上计数模式
	TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up;

	//设置计数溢出大小,每计1000个数就产生一个更新事件  1ms
	TIM_TimeBaseStructure.TIM_Period = 1000-1;//
	//将配置应用到TIM6中
	TIM_TimeBaseInit(TIM6,&TIM_TimeBaseStructure);
	
	//清除溢出中断标志
	TIM_ClearFlag(TIM6, TIM_FLAG_Update);

	//禁止ARR预装载缓冲器
	TIM_ARRPreloadConfig(TIM6, ENABLE);

	//开启TIM6的中断
	TIM_ITConfig(TIM6,TIM_IT_Update,ENABLE);

}

2.3 中断处理

void TIM6_IRQHandler(void)
{
	
	static int data=0;
   //检测是否发生溢出更新事件
   if(TIM_GetITStatus(TIM6, TIM_IT_Update) != RESET)
   {        
     
		 //清除TIM6的中断待处理位
		 TIM_ClearITPendingBit(TIM6 , TIM_FLAG_Update);
         data++;
       	if(data>=2000)
			{
				data=0;
			}
       if(data<=1000)
       {
		GPIO_ResetBits(GPIOA ,GPIO_Pin_8);
         
       }
       
       else 
       {
           GPIO_SetBits(GPIOA ,GPIO_Pin_8);
          
       }
				
		   
     }
}

2.4 main 函数

void main()
{
TIME6_NVIC_Configuration();
//引脚初始化
Buzzer_GPIO_Configuration();
TIME6_cfg();	
//开启定时6
TIM_Cmd(TIM6,ENABLE);
while(1);
}

三.结语

代码也不算多,到这里就结束了,如果你想修改间隔值,就直接修改中断里面data的值就可以了。这个代码只是一个demo。最后谢谢大家阅读。文章来源地址https://www.toymoban.com/news/detail-522562.html

到了这里,关于STM32控制蜂鸣器间隔发出声音(响1s,关闭1s)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

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

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

相关文章

  • 【STM32】STM32学习笔记-按键控制LED 光敏传感器控制蜂鸣器(08)

    led.h led.c key.h key.c main.c 电路图: 实物图: buzzer.h buzzere.c lightsensor.h lightsensor.cpp main.c 04-Key控制LED.rar 05-光敏传感器控制蜂鸣器.rar 参考: 【STM32】江科大STM32学习笔记汇总

    2024年04月23日
    浏览(42)
  • 【STM32】控制LED灯和蜂鸣器的按键实验

    🐱作者:一只大喵咪1201 🐱专栏:《STM32学习》 🔥格言: 你只管努力,剩下的交给时间! 本喵这次介绍的实验是按键实验,同样使用STM32F103ZE型号的芯片,在开发板上有4个按键,实验目的是每按一个按键就会让LED灯或者是蜂鸣器的工作状态发生反转,下面本喵来详细介绍。

    2024年02月03日
    浏览(46)
  • STM32第三课:按键控制LED灯,光敏传感器控制蜂鸣器

            STM32的第三课,我们来学习如何使用按键来控制LED灯的亮灭。上一节课我们通过代码控制了LED的状态,但是还是处于一种较为低级的方式控制LED灯,缺少交互性,用按键进行控制属于更高的一个层次。然后我们将学习通过光敏传感器控制蜂鸣器的通断,让我们的学

    2024年04月29日
    浏览(24)
  • stm32控制蜂鸣器源代码(附带proteus线路图)

    2 蜂鸣器电阻值如果太大会导致电流太小,发不出声音; 3蜂鸣器额定电压需要设置得低一点,可以是2V,但不能高于3V(后来发现设置为5V也是可以的,实际物理世界应该是5V的额定电压,我觉得就应该使用5V来模拟,但是物理世界的人一定会考虑到电压可能不足,所以会允许

    2024年02月12日
    浏览(31)
  • 基于STM32制作的音乐播放器,用PWM控制蜂鸣器

    目录 效果展示  前言         一、设计背景         1.1、知识储备          二、系统设计方案         2.1、实现功能          2.2、硬件部分         2.3、软件部分          三、软件设计          3.1、设计流程图          3.2、音乐频率的设置          3.3、编

    2024年02月03日
    浏览(62)
  • stm32单片机开关输入控制蜂鸣器参考代码(附PROTEUS电路图)

    说明:这个buzzer的额定电压需要改为3V,否则不会叫,源代码几乎是完全一样的

    2024年02月12日
    浏览(34)
  • 【stm32】hal库学习笔记-GPIO按键控制LED和蜂鸣器(超详细!)

    注:本学习笔记基于stm32f4系列 使用的开发板为正点原子stmf407ZGT6探索者开发板 GPIO引脚使用时,可输入或输出数字信号 例如: 检测按键输入信号(Read_Pin)输出信号(Write_Pin) 输出信号点亮或熄灭LED GPIO引脚内部结构图 GPIO状态 输入浮空状态 :上拉下拉电阻均不使用(复位时

    2024年01月20日
    浏览(38)
  • 基于STM32CubeMX与keil采用按键外部中断方式控制LED与蜂鸣器

    这篇文章详细记录外部中断方式控制LED的亮灭以及蜂鸣器的开关;本文从原理图开始到最后实现功能,内容详细。 本栏目的所有都是基于STM32F407ZET6芯片,博主采用的是普中的天马F407开发板。 实现功能:LED0与LED1默认熄灭,蜂鸣器默认关闭。按下按键KEY0,控LED0亮灭;按下按

    2024年02月16日
    浏览(39)
  • fpga开发--蜂鸣器发出连续不同的音调

    使用fpga蜂鸣器连续发出do,re,mi,fa,so,la,xi七个不同的音调,每个音调的持续时间为0.5s。 采用状态机实现音调的转化,当do状态持续了0.5s之后转移到re状态,以此类推...采用0.5s的时间flag信号控制状态机的转变。因为不同的音调有不同的频率,所以在每个时钟周期内需要

    2024年02月15日
    浏览(29)
  • 无源蜂鸣器按特定频率发出相对应的音调

    蜂鸣器是什么呢?相信大家在做项目中肯定多多少少都会用到蜂鸣器,蜂鸣器呢是一种一体化结构的电子讯响器,采用直流电压供电,广泛应用于计算机、打印机、复印机、报警器、电子玩具、汽车电子设备、电话机、定时器等电子产品中作发声器件。比如台式电脑的主机开

    2024年02月02日
    浏览(29)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包