嗨,我在韩国开发一个设备。
我使用的是DA14580开发工具包-专业版。
我开发的设备基于“SDK5,ble\u app\u peripheral example”
我的设备需要的功能,设备发送(或通知)的价值,智能手机“当我按下按钮”。
该值由“app\u easy\u timer(app\u PERIPHERAL\u CTRL\u timer\u DELAY,app\u adcval1\u timer\u cb\u handler)”更新
不是吗(如果您看到示例“user\u custs1\u impl.c”,您可以得到它)
我添加了按钮源代码来在
用户\u periph \u setup.c--->保留\u GPIO(按钮、GPIO \u按钮\u端口、GPIO \u按钮\u PIN、PID \u GPIO);
user\u periph\u setup.c--->GPIO\u ConfigurePin(GPIO\u BUTTON\u PORT,GPIO\u BUTTON\u PIN,INPUT\u PULLUP,PID\u GPIO,false);
用户\u periph\u setup.h--->
#定义GPIO\按钮\端口GPIO\端口\U 1
#定义GPIO\U按钮\U引脚GPIO\U引脚\U 1
用户\u custs1 \u impl.c--->
void app\u adcval1\u timer\u cb\u handler()
{
..
...
如果(!GPIO_GetPinStatus(GPIO_BUTTON_PORT,GPIO_BUTTON_PIN))//按下按钮时,发送消息(=通知)
{
发送消息(请求);
}
}
此函数使用“CUSTS1\u VAL\u NTF\u REQ:设置/更新特征值并触发通知”
你明白我的想法了吗?
在我更改“APP\u PERIPHERAL\u CTRL\u TIMER\u DELAY”之前,它运行得很好。
我需要“APP\u PERIPHERAL\u CTRL\u TIMER\u DELAY=1”而不是“100”(<--默认值)
因为设备需要非常快速地(尽快)读取从ADC采样的值
我将延迟值“1”改为“100”,在DK板上执行程序,然后用智能手机连接。
当我在“控制点值”处写“01”时,系统停止了。
调试器指向这里。
/**
****************************************************************************************
*@平台重置的简短包装。它将在软件重置前被调用
*从堆栈发出。可能的原因将包含在错误字段中
*@param[in]错误重置的原因。它将是以下之一:
*复位无错误,复位内存分配失败,复位到ROM,复位和加载固件
*@return一无所获。
****************************************************************************************
*/
无效包装平台重置(uint32错误)
{
断言警告(错误==更新后重置)//在SPOTA复位的情况下不要断开
平台复位功能(错误);
}
当我使用“APP\u PERIPHERAL\u CTRL\u TIMER\u DELAY=50”时,效果很好。
当我使用“APP\u PERIPHERAL\u CTRL\u TIMER\u DELAY=30”时,效果并不好。
当我按下按钮时,系统有时会停止。T\T。。。
我需要一个最快的ADC采样值,我想在按下按钮时通知该值。
按下按钮时如何发送采样值?
请帮帮我!
嗨okmegi,
这是因为您生成了更多可以使用的消息,所以堆会被填满,并且会调用platform\u reset。如果我理解正确,您希望每次按下按钮时,您的设备开始通过计时器向客户端发送数据。尝试更改(减少)连接间隔,以便频繁使用通知消息。
谢谢你的对话