OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 4858|回复: 25

新手求助,如何用寄存器使蜂鸣器长响

[复制链接]

10

主题

31

帖子

0

精华

初级会员

Rank: 2

积分
164
金钱
164
注册时间
2018-6-21
在线时间
25 小时
发表于 2018-6-21 16:53:48 | 显示全部楼层 |阅读模式
3金钱
初试STM32F103ZET6开发板,感觉功能特别强大,特别复杂,从最简单的开始,配置GPIO寄存器点亮一个LED灯,以下为代码,通过KEIL烧录已经实现了最基本的LED1常亮,同理,我觉的蜂鸣器也是同样的道理使能时钟后给一个电平即可使其长响,但是为何一直实现不了?有没有大神指点一下,不需要那么复杂的功能,我只是想实现最基本的,让蜂鸣器长响。


LED代码

LED代码

蜂鸣器代码

蜂鸣器代码


最佳答案

查看完整内容[请看2#楼]

终于找到答案了,,,被万恶的规格书给坑死了 我没看清楚 ,我的开发板是PZ6806L,是无源蜂鸣器
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

10

主题

31

帖子

0

精华

初级会员

Rank: 2

积分
164
金钱
164
注册时间
2018-6-21
在线时间
25 小时
 楼主| 发表于 2018-6-21 16:53:49 | 显示全部楼层

终于找到答案了,,,被万恶的规格书给坑死了
www.png

ssssss.png

我没看清楚 :'( :'( :'( ,我的开发板是PZ6806L,是无源蜂鸣器:'( :'( :'( :'( :'( :'( :'(




回复

使用道具 举报

39

主题

535

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1065
金钱
1065
注册时间
2018-3-27
在线时间
378 小时
发表于 2018-6-21 17:20:50 | 显示全部楼层
看蜂鸣器是低电平响还是高电平响,配置成低电平试试
回复

使用道具 举报

64

主题

446

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1032
金钱
1032
注册时间
2017-7-26
在线时间
275 小时
发表于 2018-6-21 17:32:44 | 显示全部楼层
你引脚初始化确定是对的吗。。。。。。
蜂鸣器是高电平开启还是低电平?
回复

使用道具 举报

1

主题

882

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
3071
金钱
3071
注册时间
2018-2-7
在线时间
285 小时
发表于 2018-6-21 17:36:40 | 显示全部楼层
如果直接用IO口控制蜂鸣器的话肯定响不了。蜂鸣器的电流比较大,一般通过三极管驱动。先验证你的硬件电路有没有问题。
回复

使用道具 举报

31

主题

265

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
413
金钱
413
注册时间
2018-1-9
在线时间
65 小时
发表于 2018-6-21 17:40:00 | 显示全部楼层
板载蜂鸣器吗?看看是什么蜂鸣器,有一种蜂鸣器需要给PWM,才可以响的。你可以主循环里演示1毫秒,翻转GPIO口试试。
回复

使用道具 举报

20

主题

450

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
4889
金钱
4889
注册时间
2017-7-6
在线时间
719 小时
发表于 2018-6-21 17:41:39 | 显示全部楼层
要看你的蜂鸣器是无源的还是有源的,无源的就得产生一个1K~5K的方波,有源的就看是低电平导通还是高电平导通。
我是小白,很白很白的小白!!!
回复

使用道具 举报

39

主题

535

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1065
金钱
1065
注册时间
2018-3-27
在线时间
378 小时
发表于 2018-6-22 08:27:43 | 显示全部楼层
受教了
回复

使用道具 举报

10

主题

31

帖子

0

精华

初级会员

Rank: 2

积分
164
金钱
164
注册时间
2018-6-21
在线时间
25 小时
 楼主| 发表于 2018-6-22 08:46:29 | 显示全部楼层
qiuzhicheng 发表于 2018-6-21 17:20
看蜂鸣器是低电平响还是高电平响,配置成低电平试试


是有源蜂鸣器,使能时钟应该没问题 ,然后通过配置 GPIOB->CRL为推挽输出模式即可

aaaaaaaaaaaaaaaaaaaaaaaaaa.png
C:\Users\Administrator\Desktop QQ图片20180622083839.png       xxxxxx.png
回复

使用道具 举报

9

主题

83

帖子

0

精华

高级会员

Rank: 4

积分
647
金钱
647
注册时间
2013-3-28
在线时间
64 小时
发表于 2018-6-22 09:16:56 | 显示全部楼层
个人感觉你的电路有问题,NPN管做开关,按图中接法应该很容易造成蜂鸣器失声,注意发射极和基极的电压关系
回复

使用道具 举报

39

主题

535

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1065
金钱
1065
注册时间
2018-3-27
在线时间
378 小时
发表于 2018-6-22 09:33:59 | 显示全部楼层
强大的腰 发表于 2018-6-22 08:46
是有源蜂鸣器,使能时钟应该没问题 ,然后通过配置 GPIOB->CRL为推挽输出模式即可

嗯,解决了就好
回复

使用道具 举报

1

主题

29

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
249
金钱
249
注册时间
2018-5-12
在线时间
56 小时
发表于 2018-6-22 09:35:15 | 显示全部楼层
首先蜂鸣器分为两种,一种是有源的,一种是无源的。
有源的蜂鸣器,地线脚接地,另一脚接高电平就会发声,不过只能发一种单一频率的声音。
无源的蜂鸣器,仅仅接高电平是不会发声的,需要在管脚上加载按某一音频频率交替高低变化的电平才能发声,一般需要使用定时器,或者简单使用设置高电平和低电平的代码,并在中间插入适当的延时代码来实现。
回复

使用道具 举报

15

主题

866

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
7527
金钱
7527
注册时间
2016-11-30
在线时间
641 小时
发表于 2018-6-22 09:35:46 | 显示全部楼层
用万用表量一下IO口是否输出高电平了。
回复

使用道具 举报

10

主题

31

帖子

0

精华

初级会员

Rank: 2

积分
164
金钱
164
注册时间
2018-6-21
在线时间
25 小时
 楼主| 发表于 2018-6-22 12:51:31 | 显示全部楼层

大哥 ,就是还没解决,,就是使能时钟后,配置GPIOB->CRL为推挽输出模式,还是没有任何效果,但是我用同样的方法操作LED灯就能把灯点亮
回复

使用道具 举报

39

主题

535

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1065
金钱
1065
注册时间
2018-3-27
在线时间
378 小时
发表于 2018-6-22 13:43:22 | 显示全部楼层
强大的腰 发表于 2018-6-22 12:51
大哥 ,就是还没解决,,就是使能时钟后,配置GPIOB->CRL为推挽输出模式,还是没有任何效果,但是我用同 ...

你试试把主循环那句改成:
GPIOB->ODR &= !(1<<5);  //置低电平

GPIOB->ODR |= (1<<5);     //置高电平
都不行就看看你蜂鸣器有没有问题了
回复

使用道具 举报

10

主题

31

帖子

0

精华

初级会员

Rank: 2

积分
164
金钱
164
注册时间
2018-6-21
在线时间
25 小时
 楼主| 发表于 2018-6-22 14:23:41 | 显示全部楼层
qiuzhicheng 发表于 2018-6-22 13:43
你试试把主循环那句改成:
GPIOB->ODR &= !(1

还是不行 ,,,,  但是蜂鸣器肯定没坏,因为我用实例的实验源码烧录进去可以让蜂鸣器响,不过实验源码是库函数版本,我想从寄存器开始学起,用寄存器实现
回复

使用道具 举报

39

主题

535

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1065
金钱
1065
注册时间
2018-3-27
在线时间
378 小时
发表于 2018-6-22 14:38:08 | 显示全部楼层
强大的腰 发表于 2018-6-22 14:23
还是不行 ,,,,  但是蜂鸣器肯定没坏,因为我用实例的实验源码烧录进去可以让蜂鸣器响,不过实验源码 ...

是GPIOB->ODR &= ~(1 << 5);,不好意思哈
回复

使用道具 举报

10

主题

31

帖子

0

精华

初级会员

Rank: 2

积分
164
金钱
164
注册时间
2018-6-21
在线时间
25 小时
 楼主| 发表于 2018-6-22 14:58:16 | 显示全部楼层

也不行 ,,,ODR第5位写1我试过,配置输出,已经试过了
回复

使用道具 举报

39

主题

535

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1065
金钱
1065
注册时间
2018-3-27
在线时间
378 小时
发表于 2018-6-22 15:07:46 | 显示全部楼层
强大的腰 发表于 2018-6-22 14:58
也不行 ,,,ODR第5位写1我试过,配置输出,已经试过了

GPIOB->ODR &= ~(1 << 5);这句是配置PB5为低,就是写0,如果高低电平都试过的话,我也不知道哪里有问题了
回复

使用道具 举报

39

主题

535

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1065
金钱
1065
注册时间
2018-3-27
在线时间
378 小时
发表于 2018-6-22 15:09:05 | 显示全部楼层
RCC->APB2ENR |= 1<<3;
回复

使用道具 举报

39

主题

535

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1065
金钱
1065
注册时间
2018-3-27
在线时间
378 小时
发表于 2018-6-22 15:47:05 | 显示全部楼层
强大的腰 发表于 2018-6-22 14:23
还是不行 ,,,,  但是蜂鸣器肯定没坏,因为我用实例的实验源码烧录进去可以让蜂鸣器响,不过实验源码 ...

那你按照库函数改就好了,其实都一样
回复

使用道具 举报

10

主题

31

帖子

0

精华

初级会员

Rank: 2

积分
164
金钱
164
注册时间
2018-6-21
在线时间
25 小时
 楼主| 发表于 2018-6-22 15:52:52 | 显示全部楼层

先捋一下思路,让蜂鸣器响,首先使能时钟,然后配置CRL为推挽输出模式,再通过ODR输出高电平/低电平,应该就可以了吧,我是这样想的,但是确实没有效果。
回复

使用道具 举报

39

主题

535

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1065
金钱
1065
注册时间
2018-3-27
在线时间
378 小时
发表于 2018-6-22 16:27:58 | 显示全部楼层
强大的腰 发表于 2018-6-22 15:52
先捋一下思路,让蜂鸣器响,首先使能时钟,然后配置CRL为推挽输出模式,再通过ODR输出高电平/低电平,应 ...

应该是可以的呀
回复

使用道具 举报

39

主题

535

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1065
金钱
1065
注册时间
2018-3-27
在线时间
378 小时
发表于 2018-6-22 16:53:39 | 显示全部楼层
强大的腰 发表于 2018-6-22 16:40
终于找到答案了,,,被万恶的规格书给坑死了

按库函数版本改成寄存器版本挺好改的呀,对照数据手册就好了
我也没接触过无源蜂鸣器,学习了
回复

使用道具 举报

10

主题

31

帖子

0

精华

初级会员

Rank: 2

积分
164
金钱
164
注册时间
2018-6-21
在线时间
25 小时
 楼主| 发表于 2018-6-23 08:59:37 | 显示全部楼层
admvip 发表于 2018-6-22 09:35
首先蜂鸣器分为两种,一种是有源的,一种是无源的。
有源的蜂鸣器,地线脚接地,另一脚接高电平就会发声, ...

已经确认了,是无源蜂鸣器,我写了个简单的while循环来实现延迟 ,但是蜂鸣器还是没有响,

ttttt.png
回复

使用道具 举报

1

主题

29

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
249
金钱
249
注册时间
2018-5-12
在线时间
56 小时
发表于 2018-6-24 15:39:23 | 显示全部楼层
强大的腰 发表于 2018-6-23 08:59
已经确认了,是无源蜂鸣器,我写了个简单的while循环来实现延迟 ,但是蜂鸣器还是没有响,

如果时钟和引脚配置没有问题的话,在72M主频下,按你主函数里的循环值,应该震荡频率应该在人耳能听到的音频范围内,但是主频如果是8M的话,估计频率就太低了,人耳听不到,你可以用示波器或者逻辑分析仪看看引脚的波形,然后来调整延时参数。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-5-26 09:12

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表