1
完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
|
|
相关推荐
1个回答
|
|
一、蜂鸣器工作原理
这里给出蜂鸣器的原理图,可以看出蜂鸣器是高电平响,低电平不响。 再来看蜂鸣器的引脚,不同的引脚,初始化不一样。 蜂鸣器所在的引脚为PC0,蜂鸣器通过三极管连接到芯片PC0引脚,而PC0引脚接三极管的基极,当 PC0输出高电平时,三极管基极电流变大,集电极电流也变大,蜂鸣器导通。 当 PC0 引脚输出低电平时,三极管截止,蜂鸣器停止发声。 二、代码编写 1.beep.c 代码如下: #include "beep.h" //beep初始化 void Beep_Config(void) { //1.开时钟 RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC, ENABLE); //2.配置端口 GPIO_InitTypeDef GPIO_InitStructure;//定义结构体变量 GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0;//引脚 GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;//速度 GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;//推免输出模式 GPIO_Init(GPIOC, &GPIO_InitStructure); } //beep应用函数 void BEEP(int flag) { if(flag==0) { //开 低电平 GPIO_ResetBits(GPIOC, GPIO_Pin_0); } else if(flag==1) { //关 高电平 GPIO_SetBits(GPIOC, GPIO_Pin_0); } } 对蜂鸣器进行初始化 2.beep.h 代码如下: #ifndef __BEEP_H #define __BEEP_H #include "stm32f10x.h" void Beep_Config(void); void BEEP(int flag); #endif 这里就是对用到的函数进行声明 3.main.c #include "main.h" #include "delay.h" #include "beep.h" int main(void) { JTAG_SWD_Config(); SysTick_Init(72000);//系统定时器初始化 1ms beep_Init(); beep(1); while(1) { beep(1); Delay_nms(300); beep(0);//蜂鸣器响 Delay_nms(300); } } void JTAG_SWD_Config(void) { RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO,ENABLE); GPIO_PinRemapConfig(GPIO_Remap_SWJ_JTAGDisable, ENABLE); //禁用JTAG } 总结 蜂鸣器实验基本上和点亮LED灯一样,可以对照一下哪些不同,相信会有所收获。 |
|
|
|
只有小组成员才能发言,加入小组>>
3310 浏览 9 评论
2991 浏览 16 评论
3492 浏览 1 评论
9055 浏览 16 评论
4086 浏览 18 评论
1174浏览 3评论
603浏览 2评论
const uint16_t Tab[10]={0}; const uint16_t *p; p = Tab;//报错是怎么回事?
596浏览 2评论
用NUC131单片机UART3作为打印口,但printf没有输出东西是什么原因?
2333浏览 2评论
NUC980DK61YC启动随机性出现Err-DDR是为什么?
1894浏览 2评论
小黑屋| 手机版| Archiver| 德赢Vwin官网 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-21 16:54 , Processed in 1.104187 second(s), Total 78, Slave 59 queries .
Powered by 德赢Vwin官网 网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
德赢Vwin官网 观察
版权所有 © 湖南华秋数字科技有限公司
德赢Vwin官网 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号