打印
[MSP430]

在子函数中蜂鸣器驱动不了,很棘手的一个问题

[复制链接]
1786|10
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
蜂鸣器的程序没错,但是在子程序中调用时却不发声?到底是为什么啊?如下图,是外部中断的子函数,speak()为蜂鸣器发声程序,其中,case0x40为第一个按键的子函数,可以发声,case0x80为第二个按键的发声程序,却不能发声,到底为什么啊?求高人指点一下!在线等,各位工程师帮帮忙!谢谢...

相关帖子

沙发
学习msp|  楼主 | 2014-8-28 20:56 | 只看该作者
自己写顶一下

使用特权

评论回复
板凳
lnulibin| | 2014-8-28 21:08 | 只看该作者
把CASE 0X40
下面的程序段拷到,CASE 0X80下面。
看一看,按第二个键 发声不。
如果发声,再将CASE 0X80下面的程序段,一条一条的往下删,(注意是最后删SPEAK函数)。看一看删 哪一条的时候不响了,总结规律。呵呵。

这是调程序的基本方法噢。

使用特权

评论回复
地板
学习msp|  楼主 | 2014-8-28 22:39 | 只看该作者
lnulibin 发表于 2014-8-28 21:08
把CASE 0X40
下面的程序段拷到,CASE 0X80下面。
看一看,按第二个键 发声不。

谢谢您的热心回答,按您说的也试过,还是不可以!不过0x40下的第一句是退出低功耗模式,主要是唤醒MCU,接着将相应的标志位置零,再按第二个键时已经在正常模式下工作了,就不需要推出低功耗了..

使用特权

评论回复
5
ayb_ice| | 2014-8-29 08:35 | 只看该作者
这要看你的speak是怎么工作的,
如果利用了中断,有可能不能工作

使用特权

评论回复
6
zhaoyu2005| | 2014-8-29 09:12 | 只看该作者
我告诉你把,很可能是你刚把蜂鸣器打开就关闭了,延时不够,听不到声音。话说,用蜂鸣器,怎么也得保证60mS以上的通电时间吧

使用特权

评论回复
7
学习msp|  楼主 | 2014-8-29 12:24 | 只看该作者
zhaoyu2005 发表于 2014-8-29 09:12
我告诉你把,很可能是你刚把蜂鸣器打开就关闭了,延时不够,听不到声音。话说,用蜂鸣器,怎么也得保证60mS ...

我用的是无源蜂鸣器,相当于给它5KHz的方波信号,使其谐振!蜂鸣器的程序我单独测试过,间断发声和连续发声都可以,就是在这个程序中不可以!谢谢你的回答,还有什么招吗,呵呵...

使用特权

评论回复
8
学习msp|  楼主 | 2014-8-29 12:25 | 只看该作者
ayb_ice 发表于 2014-8-29 08:35
这要看你的speak是怎么工作的,
如果利用了中断,有可能不能工作

没用中断,只是子函数调用

使用特权

评论回复
9
ningling_21| | 2014-8-29 13:36 | 只看该作者
学习msp 发表于 2014-8-29 12:24
我用的是无源蜂鸣器,相当于给它5KHz的方波信号,使其谐振!蜂鸣器的程序我单独测试过,间断发声和连续发 ...

先别用子程序,把它防到主程序中试试看响不响...

使用特权

评论回复
10
学习msp|  楼主 | 2014-8-29 16:21 | 只看该作者
谢谢各位的热心帮助,原因在于由于程序复杂,驱动的外围设备太多,因而导致驱动蜂鸣器的电流不足!板子已经做出来了,在不改变其余外围设备的前提下,除了改电路,还有别的办法吗?用有源蜂鸣器(需要重新购买)行吗?

使用特权

评论回复
11
mmuuss586| | 2014-8-29 19:03 | 只看该作者
应该可以;不放心的话,到时把更改后的图发上来讨论。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

10

主题

32

帖子

0

粉丝