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

[复制链接]
2420|10
 楼主| 学习msp 发表于 2014-8-28 19:55 | 显示全部楼层 |阅读模式
蜂鸣器的程序没错,但是在子程序中调用时却不发声?到底是为什么啊?如下图,是外部中断的子函数,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,接着将相应的标志位置零,再按第二个键时已经在正常模式下工作了,就不需要推出低功耗了..
ayb_ice 发表于 2014-8-29 08:35 | 显示全部楼层
这要看你的speak是怎么工作的,
如果利用了中断,有可能不能工作
zhaoyu2005 发表于 2014-8-29 09:12 | 显示全部楼层
我告诉你把,很可能是你刚把蜂鸣器打开就关闭了,延时不够,听不到声音。话说,用蜂鸣器,怎么也得保证60mS以上的通电时间吧
 楼主| 学习msp 发表于 2014-8-29 12:24 | 显示全部楼层
zhaoyu2005 发表于 2014-8-29 09:12
我告诉你把,很可能是你刚把蜂鸣器打开就关闭了,延时不够,听不到声音。话说,用蜂鸣器,怎么也得保证60mS ...

我用的是无源蜂鸣器,相当于给它5KHz的方波信号,使其谐振!蜂鸣器的程序我单独测试过,间断发声和连续发声都可以,就是在这个程序中不可以!谢谢你的回答,还有什么招吗,呵呵...
 楼主| 学习msp 发表于 2014-8-29 12:25 | 显示全部楼层
ayb_ice 发表于 2014-8-29 08:35
这要看你的speak是怎么工作的,
如果利用了中断,有可能不能工作

没用中断,只是子函数调用
ningling_21 发表于 2014-8-29 13:36 | 显示全部楼层
学习msp 发表于 2014-8-29 12:24
我用的是无源蜂鸣器,相当于给它5KHz的方波信号,使其谐振!蜂鸣器的程序我单独测试过,间断发声和连续发 ...

先别用子程序,把它防到主程序中试试看响不响...
 楼主| 学习msp 发表于 2014-8-29 16:21 | 显示全部楼层
谢谢各位的热心帮助,原因在于由于程序复杂,驱动的外围设备太多,因而导致驱动蜂鸣器的电流不足!板子已经做出来了,在不改变其余外围设备的前提下,除了改电路,还有别的办法吗?用有源蜂鸣器(需要重新购买)行吗?
mmuuss586 发表于 2014-8-29 19:03 来自手机 | 显示全部楼层
应该可以;不放心的话,到时把更改后的图发上来讨论。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

10

主题

32

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部