完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
|
|
相关推荐
1个回答
|
|
蜂鸣器的控制仍是GPIO的入门开发,本篇仅罗列下蜂鸣器的相关概念和蜂鸣器开发源码
1、蜂鸣器 蜂鸣器是一种一体化结构的电子讯响器,采用直流电压供电,广泛应用于计算机、打印机、复印机、报警器、电子玩具、汽车电子设备、电话机、定时器等电子产品中作发声器件。 蜂鸣器主要分为压电式蜂鸣器和电磁式蜂鸣器两种类型。 蜂鸣器在电路中用字母“H”或“HA”(旧标准用“FM”、“ZZG”、“LB”、“JD”等)表示。 本篇学习的板子上的蜂鸣器是电磁式的有源蜂鸣器,有源蜂鸣器是指自带震荡电路而不是指自带电源。(无源蜂鸣器没有自带震荡电路,必须外部提供2~5Khz左右的方波驱动才能发声。) 所用板子的蜂鸣器的原理图如下: 从原理图可以看出板子上的蜂鸣器接了一个三极管放大器,使用三极管的原因是stm32 IO的驱动电流不够大驱动蜂鸣器发声很吃劲,所以用一个放大器增大电流来驱动放大器。 看原理图我们会发现在R36旁还接了一个R38电阻,该电阻的作用是分流保证stm32 IO空闲状态下不会驱动蜂鸣器发声,因为stm32 IO空闲状态是浮空状态的,其输出的电压值不确定,所以旁接R38电阻目的是风流掉浮空状态下低电压产生的小电流。 从stm32原理图中,我们可以知道蜂鸣器接的IO口是PB8,如下图: 2、程序 #include “beep.h” //初始化PB8为输出口。并使能这个口的时钟 //蜂鸣器初始化 void BEEP_Init(void) { GPIO_InitTypeDef GPIO_InitStructure; RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE); //使能GPIOB端口时钟 GPIO_InitStructure.GPIO_Pin = GPIO_Pin_8; //BEEP--》PB.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,关闭蜂鸣器输出 } #include “std32f10x.h” #include “beep.h” int main(void) { delay_init(); //延时函数初始化 BEEP_Init(); //初始化蜂鸣器端口 while(1) { GPIO_ResetBits(GPIOB,GPIO_Pin_8); delay_ms(300);//延时300ms GPIO_SetBits(GPIOB,GPIO_Pin_8); delay_ms(300);//延时300ms } } |
|
|
|
只有小组成员才能发言,加入小组>>
2611 浏览 0 评论
808浏览 1评论
250浏览 1评论
578浏览 0评论
312浏览 0评论
528浏览 0评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2025-2-3 11:08 , Processed in 1.107137 second(s), Total 44, Slave 37 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号