蜂鸣器概要文件使

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

嗨,对话框中,

我们使用DA14585和SDK 6.0.10定制板。我们想添加一个蜂鸣器,并通过一个服务来控制它。我们已经添加了服务,但我们想要连续的哔哔声,而不是一个音符。我们看到了timer0_pwm示例,并将其作为参考来实现。我们正在使用延长睡眠模式。请问我该如何设置才能听到连续的哔哔声?

设备:
PM_Dialog
离线
最后看到:3小时35秒前
工作人员
加入:2018-02-08 11:03
嗨blebot,

嗨blebot,

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

  1. 您提到希望通过自定义服务控制蜂鸣器。你能解释一下吗?你想写一个“开始”命令,开始产生PWM,当写一个“停止”命令,蜂鸣器应该停止?所以,你想要产生一个连续的哔哔声当你停止广播。我的理解正确吗?除非,请提供更多的细节给我。
  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
离线
最后看到:14小时52分钟前
加入:2017-11-27 16:01
你好,

你好,

谢谢你的回复。

1.是的,没错。

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

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

谢谢,

Blebot。

PM_Dialog
离线
最后看到:3小时35秒前
工作人员
加入: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定时器0,如timer0_pwm示例中所示
  • 如果“val”等于STOP,那么您应该停止timer0 (timer0_stop())。

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

谢谢,PM_Dialog

blebot
离线
最后看到:14小时52分钟前
加入:2017-11-27 16:01
嗨,对话框中,

嗨,对话框中,

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

我们有办法在睡眠模式下锻炼功能吗?

谢谢,

Blebot

PM_Dialog
离线
最后看到:3小时35秒前
工作人员
加入:2018-02-08 11:03
嗨blebot,

嗨blebot,

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

谢谢,PM_Dialog

blebot
离线
最后看到:14小时52分钟前
加入:2017-11-27 16:01
你好,

你好,

谢谢。我可以在设备休眠时发出蜂鸣器的声音,并在设备进入睡眠模式时关闭它吗?

问候,

blebot。

PM_Dialog
离线
最后看到:3小时35秒前
工作人员
加入:2018-02-08 11:03
嗨blebot,

嗨blebot,

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

谢谢,PM_Dialog

blebot
离线
最后看到:14小时52分钟前
加入:2017-11-27 16:01
你好,

你好,

是的,我们在ble_app_sleepmode示例中使用了永久睡眠,但没有从OTP复制。我们只是想在设备醒来时发出蜂鸣器的声音。

谢谢你,blebot。

PM_Dialog
离线
最后看到:3小时35秒前
工作人员
加入: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 -设备进入睡眠。
  • 只有外部设备才能唤醒设备。
  • 一旦按下按钮,app_wakeup_cb()将被触发,广告将重新启动。因此,您可以在app_wakeup_cb()中启动PWM

这是一个可能的实现。如果你觉得有用,请将答案标记为“接受”

谢谢,PM_Dialog