你好。
我有点新的这种蓝牙,我试图设置一个引脚低时,其连接和断开时,它设置在高,所以我想它这样做,要求国家机器,我怎么做呢?
这是我所拥有的,但不起作用。
int状态;
int状态2;
状态=keu state\u get(APP\u CONNECTED);
while(state==true)
{
GPIO\ U配置引脚(GPIO\ U端口\ U 0,GPIO\ U引脚\ U 6,输出,PID\ GPIO,真);
GPIO\ U SetInactive(GPIO\ U端口\ U 0,GPIO\ U引脚\ U 6);
}
state2=ke\u state\u get(应用程序可连接);
while(state2==true)
{
GPIO\ U配置引脚(GPIO\ U端口\ U 0,GPIO\ U引脚\ U 6,输出,PID\ GPIO,false);
GPIO\ U设置激活(GPIO\ U端口\ U 0,GPIO\ U引脚\ U 6);
}
}
泰恩。
设备:
如果sdk为5,则需要将gpio初始化放到user\u periph\u setup.c中的function set\u pad\u functions中。
然后查看user\u callback\u config.h中的user\u app\u callbacks结构。
静态常量结构app\u回调用户app\u回调={
.app\u on \u connection=默认的\u app\u on \u连接,
.app\u on \u disconnect=默认的\u app\u on \u disconnect,
.app\u on\u update\u params\u rejected=NULL,
.app\u on\u update\u params\u complete=空,
.app \u on \u set \u dev \u config \u complete=默认的\u app \u on \u set \u dev \u config \u complete,
.app\u on\u adv\u undirect\u complete=应用程序广告\u complete,
.app\u on\u adv\u direct\u complete=空,
.app \u on \u db \u init \u complete=默认的\u app \u on \u db \u init \u complete,
.app\u on\u scanning\u completed=空,
.app\u on\u adv\u report\u ind=空,
.app \u on \u pairing \u request=默认的\u app \u on \u pairing \u请求,
.app \u on \u tk \u exch \u nomitm=默认值\u app \u on \u tk \u exch \u nomitm,
.app\u on\u irk\u exch=空,
.app\u on \u csrk \u exch=默认的\u app\u on \u csrk \u exch,
.app\u on \u ltk \u exch=默认的\u app\u on \u ltk \u exch,
.app\u on\u pairing\u succeeded=空,
.app\u on\u encrypt\u ind=空,
.app\u on\u mitm\u passcode\u req=空,
.app \u on \u encrypt \u req \u ind=默认的\u app \u on \u encrypt \u req \u ind,
};
连接上的默认应用程序和断开连接上的默认应用程序是您所需要的。
将GPIO\ U SetInactive(GPIO\ U PORT\ U 0,GPIO\ U PIN\ U 6)添加到默认的\应用程序\ on\ U连接中
和GPIO\ U SetActive(GPIO\ U端口\ U 0,GPIO\ U插脚\ U 6)在默认的\应用程序\上\断开连接
你好,乔治,
keu state获取一个任务作为参数(task\u APP)并返回任务状态(APP\u CONNECTED、APP\u SECURITY等),您可以在user\u periph\u setup.c中配置pin的功能,并仅使用GPIO\u SetActive和Inactive来配置pin的输出。一个快速的应用程序可以做您想要做的事情,就是用下面的代码片段替换由\u ble\u支持的空回调上的app\u:
枚举arch\u main\u loop\u callback\u ret user\u on \u ble\u powered(void)
{
if(ke\u state\u get(TASK\u APP)==APP\u CONNECTABLE)
GPIO\ U设置激活(GPIO\ U端口\ U 1,GPIO\ U引脚\ U 0);
其他的
GPIO\ U SetInactive(GPIO\ U端口\ U 1,GPIO\ U引脚\ U 0);
回到睡眠状态;
}
即使设备在睡眠模式下运行,它也能工作,因为它总是检查应用程序的状态并打开LED。如果您处于睡眠模式,并且您打开了一个管脚,那么管脚将在处于睡眠状态时保持其状态,但在唤醒时,外围设备将从periphƏu init()函数重新初始化到其原始状态,因此在任何其他实现(如斯拉瓦善意地建议)中,您必须记住管脚状态,并在唤醒时将其重置为该状态在periph\u init()函数中。
谢谢你的对话
多谢各位,抱歉没早点回复。