2个职位/ 0个新职位
最后发表
朱塞佩
离线
最后看到:4年7个月前
专家
加入:2015-03-25 34
醒来的问题

你好,
我醒着的时候有个问题。
这是代码:

空白periph_init(空白)

//启动外设的电源域
SetBits16 (PMU_CTRL_REG PERIPH_SLEEP 0);
while (!(GetWord16(SYS_STAT_REG) & PER_IS_UP));

SetBits16 (CLK_16M_REG XTAL16_BIAS_SH_DISABLE 1);

/ /罗补丁
patch_func ();

/ /初始化垫
set_pad_functions ();
//启用垫子
SetBits16 (SYS_CTRL_REG PAD_LATCH_EN 1);

//中断GPIO管脚
wkupct_register_callback (app_wkup_handler);
x00000040 wkupct_enable_irq (0, 1, 1, 0 x3f);/ / 3 f = 63毫秒

set_system_timer ();
set_pwm_timer ();


空白app_wkup_handler (void) {

如果(app_env.sleep) {
/ /标志睡眠
app_env.sleep = false;
app_env.cont_sleep = 0;

如果(GetBits16 (SYS_STAT_REG PER_IS_DOWN))
periph_init ();

/ /恢复广播
如果(app_ble_ext_wakeup_get ()) {
SetBits32 (GP_CONTROL_REG BLE_WAKEUP_REQ 1);
app_ble_ext_wakeup_off ();

/ /开始广告
app_adv_start ();

app_timer_set (READ_SENS TASK_APP 1);



Int sleep_on_handler(ke_msg_id_t const msgid, const void *param, ke_task_id_t const dest_id, ke_task_id_t const src_id)

app_env.sleep = true;

如果(ke_state_get (TASK_MYAPP) = = MYAPP_CONNECTED)
app_disconnect ();
其他的
app_adv_stop ();

app_ble_ext_wakeup_on ();

返回(KE_MSG_CONSUMED);


系统从传感器做10个读数,打开LED并调用sleep_on_handler停止广告或断开和关闭LED。如果按下按钮,则调用app_wkup_handler并发布重新启动和传感器重新启动的读数。如果按下按钮后数秒即表示系统关机,则不会有任何问题。
数分钟或数小时后按下按钮,系统未正常启动:
——开始广告
- led不开机
—DA不接受连接
- DA不要关掉
问题并不总是发生,但有一定的频率,大约50%的时间。
有什么问题吗?我在唤醒过程中或在关闭设备之前做错了什么?

设备:
MT_dialog
离线
最后看到:3天12小时前
工作人员
加入:2015-06-08 34
嗨Guiseppe,

嗨Guiseppe,

我可以看到,在唤醒函数中,您设置了对传感器进行轮询的内核计时器。你能遵循这个常见问题解答吗http://support.dialog-semiconductor.com/faq/how-use-ketimer-during-wakeu..。也许这就是你所面临的问题的原因。除此之外,你必须调试你的程序,以检查为什么当你发出中断时,你的设备没有唤醒。

由于MT_dialog