你好。
im有点用这个蓝牙,我试图在连接时设置一个别针,当它的断开连接时它很高,所以我希望它通过询问状态机来完成它,我该怎么做?
这就是我所拥有但不起作用。
int状态;
int State2;
state = ke_state_get(app_connected);
而(州== true)
{
gpio_configurepin(gpio_port_0,gpio_pin_6,输出,pid_gpio,true);
gpio_setinactive(gpio_port_0,gpio_pin_6);
}
state2 = ke_state_get(app_connectable);
虽然(state2 == true)
{
gpio_configurepin(gpio_port_0,gpio_pin_6,输出,pid_gpio,false);
gpio_setactive(gpio_port_0,gpio_pin_6);
}
}
thnx。
设备:
如果您的SDK是5,则需要将GPIO初始化放入User_PeriPH_Setup.c中的函数set_pad_functions。
然后在user_callback_config中查看user_app_callbacks结构。
static const struct app_callbacks user_app_callbacks = {
.app_on_connection = default_app_on_connection,
.app_on_disconnect = default_app_on_disconnect,
.app_on_update_params_rejected = null,
.app_on_update_params_complete = null,
.app_on_set_dev_config_complete = default_app_on_set_dev_config_complete,
.app_on_adv_undirect_complete = app_advertise_complete,
.app_on_adv_direct_complete = null,
.app_on_db_init_complete = default_app_on_db_init_complete,
.app_on_scanning_completed = null,
.app_on_adv_report_ind = null,
.app_on_pairing_request = default_app_on_pairing_request,
.app_on_tk_exch_nomitm = default_app_on_tk_exch_nomitm,
.app_on_irk_exch = null,
.app_on_csrk_exch = default_app_on_csrk_exch,
.app_on_ltk_exch = default_app_on_ltk_exch,
.app_on_pairing_succeded = null,
.app_on_encrypt_ind = null,
.app_on_mitm_passcode_req = null,
.app_on_encrypt_req_ind = default_app_on_encrypt_req_ind,
};
default_app_on_connection和default_app_on_disconnect它是您需要的。
在default_app_on_connection中添加gpio_setinactive(gpio_port_0,gpio_pin_6)
和gpio_setactive(gpio_port_0,gpio_pin_6)default_app_on_disconnect内
嗨豪尔赫,
ke_state_get获取任务作为参数(task_app)并返回任务状态(app_connected,app_security等),可以在user_periph_setup.c上配置引脚的功能,并仅使用gpio_setactive和非活动来配置输出别针。快速应用程序要做您想要的是用下面的片段替换app_on_ble_powered null回调:
枚举Arch_Main_Loop_callback_ret user_on_ble_powered(void)
{
if(ke_state_get(task_app)== app_connectable)
gpio_setactive(gpio_port_1,gpio_pin_0);
别的
gpio_setinactive(gpio_port_1,gpio_pin_0);
返回goto_sleep;
}
即使设备在睡眠模式下运行时,这也会起作用,因为它将始终检查应用的状态并将打开LED。如果您处于睡眠模式,并且您在睡眠中切换引脚将保持状态,但在其睡眠中但是唤醒外围设备将从Periph_Init()函数中重新初始化其在任何其他实施(如Slava or orcy)的情况下)您必须记住PIN状态并在PeripH_Init()函数中唤醒时将其重置为该状态。
谢谢mt_dialog.
谢谢很多人,对不起早些时候没有回答。