5帖/ 0新
最后一篇
roc0106
离线
最后一次露面:9个月2周前
加入:2016年8月31日01:55
DA14681-01休眠唤醒问题

对话:

你好!

我根据“kbscn_demo”案例添加一个休眠唤醒功能!
在工程没有执行任何定时器任务时是可以正常休眠和唤醒的!可是在执行定时器任务后休眠就无法正常唤醒!
不知道还有什么设置没有设置到,请指教!
谢谢!

的#define USER_TIMER_NOTIF(1 << 3)

静态常量ad_kbscn_pin_setup kbscn_row [] = {
AD_KBSCN_PIN_SETUP(HW_GPIO_PORT_4,HW_GPIO_PIN_1)
// AD_KBSCN_PIN_SETUP(HW_GPIO_PORT_4,HW_GPIO_PIN_1),
// AD_KBSCN_PIN_SETUP(HW_GPIO_PORT_4,HW_GPIO_PIN_2),
// AD_KBSCN_PIN_SETUP(HW_GPIO_PORT_4,HW_GPIO_PIN_3),
};

静态常量ad_kbscn_pin_setup kbscn_col [] = {
AD_KBSCN_PIN_SETUP(HW_GPIO_PORT_3,HW_GPIO_PIN_6)
AD_KBSCN_PIN_SETUP(HW_GPIO_PORT_4,HW_GPIO_PIN_0)
// AD_KBSCN_PIN_SETUP(HW_GPIO_PORT_4,HW_GPIO_PIN_6),
// AD_KBSCN_PIN_SETUP(HW_GPIO_PORT_4,HW_GPIO_PIN_7),
};

静态常量字符kbscn_matrix [] = {
'*', '#',
// '1', '2', '3', 'A',
// '4', '5', '6', 'B',
// '7', '8', '9', 'C',
// '*', '0', '#', 'd',
};

静态无效kbscn_cb(AD_KBSCN_EVENT事件,炭C);
/ *
静态常量ad_kbscn_config kbscn_config = AD_KBSCN_CONFIG_WITH_INACTIVE_TIME(kbscn_row,kbscn_col,kbscn_matrix,
AD_KBSCN_CLOCK_DIV_16,150,10,10,127,
kbscn_cb);
* /
静态常量ad_kbscn_config kbscn_config = AD_KBSCN_CONFIG(kbscn_row,kbscn_col,kbscn_matrix,
AD_KBSCN_CLOCK_DIV_16,150,10,10,
kbscn_cb);

PRIVILEGED_DATA OS_TASK app_task;

/ *
*当cancel_sleep是真的假的适配器始终阻止的平台,进入休眠状态。
*这让检查键盘扫描适配器是否电源管理方面
*有正确的行为时,睡眠已经启动,后来取消了。
* /
PRIVILEGED_DATA布尔cancel_sleep = FALSE;

静态布尔prepare_for_sleep_cb(无效)
{
返回cancel_sleep!;
}

静态常量adapter_call_backs_t pm_callbacks = {
.ad_prepare_for_sleep = prepare_for_sleep_cb,
};

/ *
* KEY_FIFO_SIZE必须是2的幂,以获得最佳性能
* /
的#define KEY_FIFO_SIZE 32
的#if KEY_FIFO_SIZE&(KEY_FIFO_SIZE - 1)
#错误“KEY_FIFO_SIZE必须是2的幂”
#万一

PRIVILEGED_DATA静态炭key_fifo [KEY_FIFO_SIZE];
PRIVILEGED_DATA静态的size_t key_fifo_h;
PRIVILEGED_DATA静态的size_t key_fifo_t;

静态无效kbscn_cb(AD_KBSCN_EVENT事件,炭c)中
{
如果(事件!= AD_KBSCN_EVENT_PRESSED){
返回;
}

key_fifo [key_fifo_t] = C;
key_fifo_t ++;
key_fifo_t%= KEY_FIFO_SIZE;

OS_TASK_NOTIFY_FROM_ISR(app_task,USER_TIMER_NOTIF,OS_NOTIFY_SET_BITS);
}

空隙kbscn_task_init(无效)
{
布尔RET;
hw_gpio_configure_pin(HW_GPIO_PORT_4,HW_GPIO_PIN_1,HW_GPIO_MODE_OUTPUT,HW_GPIO_FUNC_GPIO,假); //
app_task = OS_GET_CURRENT_TASK();

pm_register_adapter(&pm_callbacks);
RET = ad_kbscn_init(&kbscn_config);
ASSERT_WARNING(RET);
}

空隙kbscn_task(uint32_t的通知符)
{
如果(通知符&USER_TIMER_NOTIF){
OS_ENTER_CRITICAL_SECTION();
如果(key_fifo_h == key_fifo_t){
OS_LEAVE_CRITICAL_SECTION();
} 别的{
OS_LEAVE_CRITICAL_SECTION();

炭C = key_fifo [key_fifo_h];
key_fifo_h ++;
key_fifo_h%= KEY_FIFO_SIZE;

的printf( “%C”,C);
fflush(stdout中);
如果(C == '*'){
的printf( “%C \ r \ n” 个,C);
的printf( “%d \ n” 个,pm_get_sleep_mode());
如果(pm_get_sleep_mode()== pm_mode_active){
的printf( “恢复睡眠\ n”);
pm_resume_sleep();
的printf( “%d \ n” 个,pm_get_sleep_mode());
} 别的{
的printf( “活着\ n”);
pm_stay_alive();
的printf( “%d \ n” 个,pm_get_sleep_mode());
}
}否则如果(C == '#'){
的printf( “%C \ r \ n” 个,C);
!// cancel_sleep = cancel_sleep;
//如果(cancel_sleep){
//的printf( “取消启用休眠\ n”);
// } 别的 {
// printf的( “取消睡眠禁用\ n”);
//}
}
}
}
}

设备:
CYibin
离线
最后一次露面:9个月2周前
职员
加入:2017年12月14日02:48
您好,

您好,

我看您在论坛上提问了挺多68X的API接口阅读,使用的问题;方便的话留下联系方式,以便提高沟通效率

roc0106
离线
最后一次露面:9个月2周前
加入:2016年8月31日01:55
你好

你好

最近一直在用681做开发遇到点问题,感谢你们的解答

我的邮箱是renpeng0106@163.com

CYibin
离线
最后一次露面:9个月2周前
职员
加入:2017年12月14日02:48
好的,已经与您联系,请注意查看邮箱

好的,已经与您联系,请注意查看邮箱

lanxuefeng1644
离线
最后一次露面:4个月3天前
加入:2020年3月3日06:28
你好,我在使用1468x的过程中遇到点问题

你好,我在使用1468x的过程中遇到点问题,请问可以请教一下您么我的QQ:250318049,QQ用邮箱沟通亦可