17个员额/ 0个新员额
最后发表
songsayit
离线
最后看到:3年10个月前
加入:2016-05-31 35
唤醒键问题

功能需求:
多个管脚能唤醒系统..
问题描述:
我看应用程序按钮,他的wkupct_enable_irq只能使用一个管脚的呢?我有多个管脚想唤醒。怎么弄呢?

设备:
Gongyu_Dialog
离线
最后看到:1周1天前
加入:2016-04-27 07:07
建议你看一下鼠标演示的工程。

建议你看一下鼠标演示的工程。

void app_kbd_enable_wakeup_irq(void)

// p10 (mot), p11 (bl), p07 (bm), p01 (br)
const uint32_t sel_pins = ((1 < < 7) | (1 < < 1) | (((1 < < 1) | (1 < < 0)) < < 8);/ /支持几路GPIO做唤醒
const uint32_t pol_pins = ((! middle_button_pressed < < 7) | (! right_button_pressed < < 1 )) | ( ((! left_button_pressed < < 1) | (1 < < 0)) < < 8);

wkupct_register_callback (wakeup_handler);//TODO:不需要总是调用,只在appl期间调用一次。初始化。

wkupct_enable_irq(sel_pins,pol_pins,wakeup_events_quota,wakeup_key_debouncing_time_in_ms);

songsayit
离线
最后看到:3年10个月前
加入:2016-05-31 35
我这样试了 的.可是不行哦

我这样试了 的.可是不行哦
wkupct_enable_irq (WKUPCT_PIN_SELECT (GPIO_BUTTON_PORT GPIO_BUTTON_PIN)
| WKUPCT_PIN_SELECT (GPIO_DISMANTLE_CHECK2_PORT GPIO_DISMANTLE_CHECK2_PIN)
, //选择pin (GPIO_BUTTON_PORT, GPIO_BUTTON_PIN)

WKUPCT_PIN_POLARITY (GPIO_BUTTON_PORT GPIO_BUTTON_PIN WKUPCT_PIN_POLARITY_HIGH)
| wkupct_pin_极性(gpio_disable_check2_port, gpio_disable_check2_pin, wkupct_pin_polarity_high)
, / /极性高
1, // 1事件
0 x30);//恢复时间= 0

songsayit
离线
最后看到:3年10个月前
加入:2016-05-31 35
鼠标演示的工程不在sdk5.0.3和5.0

鼠标演示的工程不在sdk5.0.3和5.0.4中的啊

Gongyu_Dialog
离线
最后看到:1周1天前
加入:2016-04-27 07:07
鼠标是单独的项目,可以在参考

鼠标是单独的项目,可以在参考设计里面找。你现在不行是按单个键就换不醒吗?

songsayit
离线
最后看到:3年10个月前
加入:2016-05-31 35
如果单独设置一个按键, 那个按键是没问题的,

如果单独设置一个按键,那个按键是没问题的,可是或上其他一个按键,却导致2个按键都没有唤醒系统的功能的了!

songsayit
离线
最后看到:3年10个月前
加入:2016-05-31 35
你们那边有试过的吗?为什么我这边会不行的呢?

你们那边有试过的吗?为什么我这边会不行的呢?我直接使用的是5.0.3的prox_reporter工程里的user_proxr.c他原来就一个按键。我看他按键的或结构, 所以就添加了一个按键.添加上去后, 原来那个按键都不能唤醒系统了.我的系统睡眠模式是ARCH_EXT_SLEEP_ON。
另外我看他在user_periph_setup.h里面定义了WKUP_ENABLED的。

songsayit
离线
最后看到:3年10个月前
加入:2016-05-31 35
有人回应一下的吗?在线等

有人回应一下的吗?在线等

Gongyu_Dialog
离线
最后看到:1周1天前
加入:2016-04-27 07:07
我这里可以的,添加了一个button2,然后在应用

我这里可以的,添加了一个button2,然后在app_button_press_cb里打印信息

空白app_button_enable(空白)

app_easy_wakeup_set (app_wakeup_cb);
wkupct_register_callback (app_button_press_cb);
#如果USE_PUSH_BUTTON
if (GPIO_GetPinStatus(GPIO_BUTTON_PORT, GPIO_BUTTON_PIN))
WKUPCT_PIN_SELECT(GPIO_BUTTON_PORT, GPIO_BUTTON_PIN), //选择pin (GPIO_BUTTON_PORT, GPIO_BUTTON_PIN)
wkupct_pin_极性(GPIO_BUTTON_PORT, GPIO_BUTTON_PIN, WKUPCT_PIN_POLARITY_LOW), //极性低
1, // 1事件
0);//恢复时间= 0
# endif

songsayit
离线
最后看到:3年10个月前
加入:2016-05-31 35
既然你可以打印信息, 证明你是在非深度睡眠状态下.

既然你可以打印信息, 证明你是在非深度睡眠状态下.请尝试在ARCH_EXT_SLEEP_ON状态下测试确认一下。谢谢.
而且我发表在arch_ext_sleep_on唤醒后,有色其他奇怪现象。这个暂不锈钢。后面再请教一下。

Gongyu_Dialog
离线
最后看到:1周1天前
加入:2016-04-27 07:07
就是在静态sleep_state const

就是在const静态sleep_state_t app_default_sleep_mode = ARCH_EXT_SLEEP_ON;

打印我是放在外设电起来后。

空白app_button_press_cb(空白)

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

printf_string(“hello \ n”);///

空白uart_send_byte (char ch)

而((GetWord16 (UART_LSR_REG) &0x20) = = 0);//读取status reg,检查THR是否为空
SetWord16 (UART_RBR_THR_DLL_REG (0 xff&ch));//写入THR寄存器

Void printf_string(char * str)

而(* str ! = ' \ 0 ')
{//而不是最后一个字符串字符
uart_send_byte (str);//发送下一个字符串字符
str + +;

songsayit
离线
最后看到:3年10个月前
加入:2016-05-31 35
谢谢.我明天把你代码应用到我的系统上看看行不行.

谢谢.我明天把你代码应用到我的系统上看看行不行.
因为我观察唤醒,是我的oled屏被点亮的。或许是点亮失败.因为我发现单独一个按键时,正常应该屏唤醒3 s后再灭屏,但是实际测试时,发现是屏亮一下后,马上又灭了。
明天上班再测测看看咯.

另外我想问一下,你们那边是不是把精力更多地放在sdk5.0.4上的吗?因为我看8月8号发布了sdk5.0.4。我现在用的是5.0.3的。

songsayit
离线
最后看到:3年10个月前
加入:2016-05-31 35
你好。我觉得你的,

你好。我觉得你的,
首先,在user_perph_setup.c里的set_pad_functions()函数里初始化串口:
GPIO_ConfigurePin(UART_GPIO_PORT, UART_TX_PIN, OUTPUT, pid_uart_tx, false); / /输出
GPIO_ConfigurePin(UART_GPIO_PORT, UART_RX_PIN, INPUT, pid_uart_rx, false);
SetBits16 (CLK_PER_REG UART1_ENABLE 1);//为UART 1启用时钟
uart_init (UART_BAUDRATE UART_DATALENGTH);

然后在app_button_press_cb添加打印。但是我是在arch_main.c里屏蔽掉
/ / arch_turn_peripherals_off (sleep_mode);
否则打印不出来.

另外发现有时打印出乱码.
【2016-08-19 11:56:56:454】?
【2016-08-19 11:56:56:712】?!!!问蓂)?>醕失去

songsayit
离线
最后看到:3年10个月前
加入:2016-05-31 35
打印乱码的时候, 就是我程序控制不正常的时候.

打印乱码的时候, 就是我程序控制不正常的时候.
我使用了一个定时器来定时自动关闭屏幕。正常的时候是亮屏3 s后,自动关闭。但是当不正常时, 他亮屏后, 就马上灭屏.我从打印日志中看的到,这个是他调用了定时的处理程序。
【2016-08-19 14:15:23:071】鰴?憽问
【2016-08-19 14:15:23:329】?!!!问蓂)?︷密切

【2016-08-19 14:15:23:538】手

但是他是突然调用的.不是正常按照定时之后的

songsayit
离线
最后看到:3年10个月前
加入:2016-05-31 35
是不是不能在app_button_press_cb ()

是不是不能在app_button_press_cb()里调用用时比较多的函数的。
我这边把他弄到app_wakeup_cb()函码里再看看。

Gongyu_Dialog
离线
最后看到:1周1天前
加入:2016-04-27 07:07
SDK5.0.4刚发布,所以也在熟悉阶段

SDK5.0.4刚发布,所以也在熟悉阶段

Gongyu_Dialog
离线
最后看到:1周1天前
加入:2016-04-27 07:07
打印乱码确实会出现,因为刚在唤醒状态,16米还不稳定。

打印乱码确实会出现,因为刚在唤醒状态,16米还不稳定。
但是不会出现你说的这种情况。

然后在app_button_press_cb添加打印。但是我是在arch_main.c里屏蔽掉
/ / arch_turn_peripherals_off (sleep_mode);
否则打印不出来.