1
完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
扫一扫,分享给好友
1 利用I/O 定时翻转电平产生驱动波形对蜂鸣器进行驱动。设置PWM 的设置占空比、周期等产生符合蜂鸣器要求的频率的波形之后,只要打开PWM 输出就能输出该频率的方波,就可以驱动蜂鸣器了。
2 可以通过PWM 输出口驱动。可以利用PWM 本身可以输出一定的方波来直接驱动蜂鸣器。利用定时器来做定时,通过定时翻转电平产生符合蜂鸣器要求的频率的波形,这个波形就可以用来驱动蜂鸣器了。 |
|
|
|
小Qhhui 发表于 2018-6-1 04:01 感谢您的回复, 由于我现在是使用P1.2作为Buzzer,故若要使用定时器似乎是要使用Timer1,然而我目前发现CC2530与Buzzer相关之资料都是使用Timer3去驱动Buzzer,请问使用Timer1会有影响吗? |
|
|
|
净小空空 发表于 2018-6-1 04:20 您好, 之后我先将Buzzer改至P1_6使用Timer3来做测试,将Code分为下列三部分 1. 初始化Buzzer之GPIO void buzzerInit(void) [ PERCFG |= 0x20; // Timer 3 Alternate location 2 P1DIR |= 0x40; // P1_6 = output P1SEL |= 0x40; // Peripheral function on P1_6 T3CTL &= ~0x10; // Stop timer 3 (if it was running) T3CTL |= 0x04; // Clear timer 3 T3CTL &= ~0x08; // Disable Timer 3 overflow interrupts T3CTL |= 0x03; // Timer 3 mode = 3 - Up/Down T3CCTL0 &= ~0x40; // Disable channel 0 interrupts T3CCTL0 |= 0x04; // Ch0 mode = compare T3CCTL0 |= 0x10; // Ch0 output compare mode = toggle on compare ] 2. 启动Buzzer uint8 buzzerStart(uint16 frequency) [ uint8 prescaler = 0; // Get current Timer tick divisor setting uint8 tickSpdDiv = (CLKCONSTA & 0x38)>>3; // Check if frequency too low if (frequency < (244 >> tickSpdDiv))[ // 244 Hz = 32MHz / 256 (8bit counter) / 4 (up/down counter and toggle on compare) / 128 (max timer prescaler) buzzerStop(); // A lower tick speed will lower this number accordingly. return 0; ] // Calculate nr of ticks required to achieve target frequency uint32 ticks = (8000000/frequency) >> tickSpdDiv; // 8000000 = 32M / 4; // Fit this into an 8bit counter using the timer prescaler while ((ticks & 0xFFFFFF00) != 0) [ ticks >>= 1; prescaler += 32; ] // Update registers T3CTL &= ~0xE0; T3CTL |= prescaler; T3CC0 = (uint8)ticks; // Start timer T3CTL |= 0x10; return 1; ] 3. 停止Buzzer void buzzerStop(void) [ T3CTL &= ~0x10; // Stop timer 3 ] 但当我按下触发键启动buzzerStart,还是无法使用蜂鸣器,请问我是有何处忽略了吗? P.S. 我frequency给2000 |
|
|
|
参考下这个帖子 http://e2e.ti.com/support/low_power_rf/f/155/t/92359.aspx |
|
|
|
再次感謝您的回覆 後來我參考了http://e2e.ti.com/support/low_power_rf/f/158/t/291670.aspx?pi267162=1 Buzzer已可發聲 |
|
|
|
只有小组成员才能发言,加入小组>>
336 浏览 1 评论
529 浏览 2 评论
NA555DR VCC最低电压需要在5V供电,为什么用3.3V供电搭了个单稳态触发器也使用正常?
774 浏览 3 评论
MSP430F249TPMR出现高温存储后失效了的情况,怎么解决?
651 浏览 1 评论
对于多级放大电路板,在PCB布局中,电源摆放的位置应该注意什么?
1130 浏览 1 评论
AT32F407在USART2 DMA发送数据时,接包接到了要发送的数据,程序还是处于等待传输完成的标识判断中,为什么?
62浏览 29评论
157浏览 23评论
请问下tpa3220实际测试引脚功能和官方资料不符,哪位大佬可以帮忙解答下
253浏览 20评论
请教下关于TAS5825PEVM评估模块原理图中不太明白的地方,寻求答疑
202浏览 14评论
两个TMP117传感器一个可以正常读取温度值,一个读取的值一直是0,为什么?
60浏览 13评论
小黑屋| 手机版| Archiver| 德赢Vwin官网 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-23 18:32 , Processed in 1.090390 second(s), Total 85, Slave 69 queries .
Powered by 德赢Vwin官网 网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
德赢Vwin官网 观察
版权所有 © 湖南华秋数字科技有限公司
德赢Vwin官网 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号