4个职位/ 0个新职位
最后发表
sklin
离线
最后看到:6年1个月前
专家
加入:2014-08-12 08:01
唤醒BLE核心

嗨对话框
据说BLE核心总是由广告/连接事件等异步事件唤醒。
我如何能立即唤醒BLE核心而不等待异步事件。

Joacimwe
离线
最后看到:一年九个月前
大师
加入:2014-01-14 06:45
试试这个:

试试这个:

if (GetBits16(CLK_RADIO_REG, BLE_ENABLE) == 0) {// BLE clock is off . if (GetBits16(CLK_RADIO_REG, BLE_ENABLE) == 0) {// BLE时钟关闭
SetBits16 (GP_CONTROL_REG BLE_WAKEUP_REQ 1);

sklin
离线
最后看到:6年1个月前
专家
加入:2014-08-12 08:01
嗨Joacimwe

嗨Joacimwe
非常感谢。
我希望得到一个按钮按下事件。所以我启用了唤醒计时器。然后像下面这样配置GPIO:
空白GPIO_reservations(空白)

...
RESERVE_GPIO (PUSH_BUTTON GPIO_PORT_1、GPIO_PIN_3 PID_GPIO);

空白set_pad_functions(空白)

...
GPIO_ConfigurePin (GPIO_PORT_1 GPIO_PIN_3、INPUT_PULLUP PID_GPIO,假);

然后我调用这个函数:
空白app_button_enable(空白)

wkupct_register_callback (app_button_press_cb);
如果(GPIO_GetPinStatus (GPIO_PORT_1 GPIO_PIN_3))
x800 x800 wkupct_enable_irq (0, 0, 1, 0);

我重写了app_button_press_cb因数像下图:
空白app_button_press_cb(空白)

if (GetBits16(CLK_RADIO_REG, BLE_ENABLE) == 0) // BLE时钟关闭

SetBits16 (GP_CONTROL_REG BLE_WAKEUP_REQ 1);

app_button_enable ();
ke_msg_send_basic (APP_WAKEUP_MSG TASK_APP, NULL);

现在,当外部中断发生时,我可以进入app_button_press_cb函数。
但是我还是收不到APP_WAKEUP_MSG在TASK_APP事件。
注意:我定义睡眠模式如下
#定义CFG_EXT_SLEEP
# undef CFG_DEEP_SLEEP

你能帮我吗?

WT_Dialog(未验证)
嗨Sklin,

嗨Sklin,

我很惊讶你的代码不能用。

如果您尝试保留以下两行呢?

app_button_enable ();

ke_msg_send_basic (APP_WAKEUP_MSG TASK_APP, NULL);

如果这仍然不起作用,我将在下面添加一个while循环SetBits16(GP_CONTROL_REG, BLE_WAKEUP_REQ, 1)以确保GetBits16(CLK_RADIO_REG, BLE_ENABLE)返回1。