天嵌 ARM开发社区

 找回密码
 注册
查看: 2650|回复: 5

PWMDriver里怎么没有停止控制字呢?

[复制链接]
melon 发表于 2010-8-28 11:43:26 | 显示全部楼层 |阅读模式
我现在想利用这个PWMDriver驱动实现触摸按键发声的功能,就是类似于windows下的Beep功能,可是一使用IOCTL_PWM_START这个控制字,蜂鸣器就一起响了,没办法停止,如果驱动程序里有stop控制字的话,就方便了。
另外询问一下,还有没有其它方法实现Beep的功能呢?
天嵌_support1 发表于 2010-8-28 11:55:49 | 显示全部楼层
你想像Windows那样启动就发出声音?
 楼主| melon 发表于 2010-8-28 12:45:33 | 显示全部楼层
就是在按对话框上的按钮的时候发出一声“嘀”的声音,给用户一个反馈的信息。
Windows下面VC编程只要调用一下Beep()函数就行了,现在我用天嵌的板,可以使它发出声音,但是要停下来只能通过关闭线程的方式,每次按按钮都是一个创建线程和关闭线程的过程,但是如果下面驱动程序里有停止PWM控制字的话,我就可以方便的让蜂鸣器停止
天嵌_support1 发表于 2010-8-28 13:46:48 | 显示全部楼层
这个你干嘛去改驱动阿,自己用户程序实现不就行了么?
你似乎把驱动的功能和用户应用的功能浑着开发了阿
 楼主| melon 发表于 2010-8-28 14:29:45 | 显示全部楼层
哦,不是的,我只是想建议在驱动里添加一个PWM停止的控制字,方便用户程序开发,我想这个在驱动里只是小小的改动。
当然了,我们买开发板并不是想直接得到鱼,而是捕鱼的方法,关于这个驱动的更改,我自己也会去研究一下的。谢谢版主的关注。
那我问一下,根据现有的条件,想要在触摸屏上按按钮的时候,发出“嘀”的蜂鸣声,有什么好的方法可以实现呢?我觉得做人机界面很多场合都要用到的。
 楼主| melon 发表于 2010-9-3 14:45:34 | 显示全部楼层
已经解决了,虽然不是通过修改驱动程序实现的,但也不失为一个简单有效的方法,下面是具体实现过程,给其它有需要的人分享一下:
创建一个函数,在函数里完成三个控制命令,即IOCTL_PWM_SET_PRESCALER,IOCTL_PWM_SET_DIVIDER,IOCTL_PWM_START,这个函数是让蜂鸣器开始发声的,另外再建一个函数,里面也是要完成上面的三个控制命令,所不同的是,在IOCTL_PWM_START之前把占空比设成0,这样,这个函数就可以用来停止蜂鸣了。
在按钮事件里,先是调用蜂鸣的函数,然后创建一个定时器,定时时间为200ms左右,在定时器事件处理函数里调用停止蜂鸣的函数,并且KillTimer(),这样就实现了按钮发声的过程。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

i.MX8系列ARM cortex A53 M4 工控板上一条 /1 下一条

Archiver|手机版|小黑屋|天嵌 嵌入式开发社区 ( 粤ICP备11094220号 )

GMT+8, 2024-5-21 14:38 , Processed in 1.046875 second(s), 18 queries .

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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