蜂鸣器概要文件使

⚠️
大家好. .感谢来到论坛。令人兴奋的消息!我们现在正在转移到新的论坛平台的过程中,它将提供更好的功能,并包含在主对话网站。所有的帖子和账号已经迁移。我们现在只接受新论坛的流量-请发布任何新的帖子在//www.wsdof.com/support.我们会在接下来的几天修复bug /优化搜索和标记。
10个帖子/ 0个新帖子
最后发表
blebot
离线
最后看到:3周6天前
加入:2017-11-27 16:01
蜂鸣器概要文件使

嗨,对话框中,

我们使用的是带有DA14585和SDK 6.0.10的定制板。我们想添加一个蜂鸣器,并通过服务控制它。我们已经添加了这项服务,但我们想要的是连续的哔哔声,而不是音符。我们看到了timer0_pwm的例子,并将其作为参考来实现。我们使用的是扩展睡眠模式。你能告诉我如何配置它,让我能听到连续的哔哔声吗?

设备:
PM_Dialog
离线
最后看到:2周2天前
工作人员
加入:2018-02-08 11:03
嗨blebot,

嗨blebot,

让我问你下面的一些问题,以更深入地了解你的要求是什么,你想完成什么。

  1. 你提到你想通过你的自定义服务来控制蜂鸣器。你能解释一下吗?你想写一个“START”命令,开始产生PWM,当写一个“STOP”命令,蜂鸣器应该停止?所以,你想要产生一个连续的哔哔声一旦你停止它在空中。我的理解正确吗?除非,请提供更多的细节。
  2. 请查看SDK中timer0_pwm示例中的timer0_pwm_test_expiration_counter变量。该变量的值为TIMER0_PWM_TEST_EXPIRATION_COUNTER_RELOAD_VALUE(默认为50)。当你得到一个SWTIM_IRQn中断,pwm0_user_callback_function将被触发,如果你检查源代码,timer0_pwm_test_expiration_counter将减少每次回调击中。当timer0_pwm_test_expiration_counter变为0时,timer0-将停止。
  3. 此外,您提到您正在使用扩展睡眠模式,请注意,当设备进入睡眠模式时,所有外围模块,包括计时器模块,都将关闭电源。

谢谢,PM_Dialog

blebot
离线
最后看到:3周6天前
加入:2017-11-27 16:01
你好,

你好,

谢谢您的回复。

1.是的,没错。

2.在timer0_pwm的例子中,正如你所说的,timer0_pwm_test_expiration_counter每次递减,当它去0时,timer_0将停止,但我不想它停止,除非我给命令停止。我想让蜂鸣器发出连续的哔哔声,直到我停止。有办法做到吗?在这个例子中也有一个音符但我不想演奏音符,只是一个简单的哔哔声。

3.当设备进入睡眠模式时,我可以使计时器块不关机吗?如果是,怎么做?

谢谢,

Blebot。

PM_Dialog
离线
最后看到:2周2天前
工作人员
加入:2018-02-08 11:03
嗨blebot,

嗨blebot,

请检查SDK的ble_app_peripheral示例,并关注user_catch_rest_hndl()回调函数,它处理SDK内部机制没有处理的消息。假设为了发送START/STOP命令,您有一个可写特征。在ble_app_peripheral示例中,当写入“控制点”特征时,您将得到SVC1_IDX_CONTROL_POINT_VAL,并且将启动user_svc1_ctrl_wr_ind_handler(),这是控制点写入指示处理程序。“控制点”特性的长度为1字节。您应该为您的案例实现相同的方法:例如START: 0x01 - STOP: 0x00。写入特征的值存储在¶m->值[0]中,所以你应该将它复制到val中。

  • 如果“val”等于START,那么你应该启用-set- START timer0,就像timer0_pwm的例子
  • 如果" val "等于STOP,那么应该停止timer0 (timer0_stop())。

关于timer0_pwm例子,如前所述,每次产生中断时,都会触发pwm0_user_callback_function()。notes存储在notes[]数组中。在您的情况下,您应该找到哪个是适当的蜂鸣声波形,并相应地修改回调。关于你的最后一个问题,这是不可能的。如果你发现任何有用的答案,请标记为“接受”。

谢谢,PM_Dialog

blebot
离线
最后看到:3周6天前
加入:2017-11-27 16:01
嗨,对话框中,

嗨,对话框中,

谢谢您的回复。我们知道如何编写和处理“控制点”特性。

有没有一种方法可以让我们在睡眠模式下锻炼功能?

谢谢,

Blebot

PM_Dialog
离线
最后看到:2周2天前
工作人员
加入:2018-02-08 11:03
嗨blebot,

嗨blebot,

正如前面提到的,一旦设备进入睡眠状态,所有的外围模块都会断电。

谢谢,PM_Dialog

blebot
离线
最后看到:3周6天前
加入:2017-11-27 16:01
你好,

你好,

谢谢。我是否可以在设备脱离睡眠状态时发出蜂鸣器的声音,并在设备进入睡眠模式时关闭蜂鸣器?

问候,

blebot。

PM_Dialog
离线
最后看到:2周2天前
工作人员
加入:2018-02-08 11:03
嗨blebot,

嗨blebot,

一般来说,设备会在广告和连接之间进入休眠状态。pin在进入睡眠之前的状态被保留,但不保留配置或pin的功能。当设备唤醒时,将调用peripher_init()函数,以便在每次唤醒时重新配置引脚,并且引脚返回它们的默认应用程序状态。因此,如果任何gpio在进入睡眠状态之前是高值的,那么在睡眠期间它将保持高值,并在唤醒时由peripher_init()函数重新配置。你想要进入永久休眠,就像在ble_app_sleepmode的SDK示例中实现的那样?

谢谢,PM_Dialog

blebot
离线
最后看到:3周6天前
加入:2017-11-27 16:01
你好,

你好,

是的,我们正在使用ble_app_sleepmode示例中实现的永久休眠,但不是从OTP复制。我们只是想在设备每次醒来时发出蜂鸣器的声音。

谢谢你,blebot。

PM_Dialog
离线
最后看到:2周2天前
工作人员
加入:2018-02-08 11:03
嗨blebot,

嗨blebot,

好的,让我给你们描述一个可能的实现。请检查SDK的ble_app_sleepmode示例。

  • 该设备进入延长睡眠模式与OTP拷贝之间的广告和连接间隔。请注意,这是对OPT复制的模拟,因为CFG_DEVELOPMENT_DEBUG是在da1458x_config_basic.h中定义的。请在听者文件中检查这个宏,并阅读注释以获得更多信息。
  • 芯片开始发布广告,直到定时器在预定义的APP_ADV_DATA_UPDATE_TO秒后超时,并触发adv_data_update_timer_cb()回调。
  • 在这个回调函数中调用app_easy_gap_advertise_stop(),它向堆栈发送一个GAPM_CANCEL_CMD
  • 当发送消息时,会触发user_app_adv_undirect_complete()。所以,在这个回调中,你可以停止PWM -设备进入睡眠。
  • 只有外部设备才能唤醒设备。
  • 一旦a按钮被按下,app_wakeup_cb()将被触发,广告将重新启动。你可以在app_wakeup_cb()中启动PWM

这是一个可能的实现。如果你觉得有用,请在答案上注明“接受”

谢谢,PM_Dialog