From 8d46c4754278aa405c964088b53992e641f190af Mon Sep 17 00:00:00 2001 From: qqwang Date: Thu, 5 Aug 2021 19:52:22 +0800 Subject: [PATCH] [feat][examples/pm] add hbn gpio wakeup and hbn rtc wakeup case --- examples/pm/hbn_gpio_wakeup/CMakeLists.txt | 4 ++ examples/pm/hbn_gpio_wakeup/main.c | 55 +++++++++++++++++ examples/pm/hbn_gpio_wakeup/readme.md | 8 +++ examples/pm/hbn_rtc_wakeup/CMakeLists.txt | 4 ++ examples/pm/hbn_rtc_wakeup/main.c | 72 ++++++++++++++++++++++ examples/pm/hbn_rtc_wakeup/readme.md | 6 ++ 6 files changed, 149 insertions(+) create mode 100644 examples/pm/hbn_gpio_wakeup/CMakeLists.txt create mode 100644 examples/pm/hbn_gpio_wakeup/main.c create mode 100644 examples/pm/hbn_gpio_wakeup/readme.md create mode 100644 examples/pm/hbn_rtc_wakeup/CMakeLists.txt create mode 100644 examples/pm/hbn_rtc_wakeup/main.c create mode 100644 examples/pm/hbn_rtc_wakeup/readme.md diff --git a/examples/pm/hbn_gpio_wakeup/CMakeLists.txt b/examples/pm/hbn_gpio_wakeup/CMakeLists.txt new file mode 100644 index 00000000..27d34535 --- /dev/null +++ b/examples/pm/hbn_gpio_wakeup/CMakeLists.txt @@ -0,0 +1,4 @@ +set(TARGET_REQUIRED_LIBS shell) +set(mains main.c) +generate_bin() + diff --git a/examples/pm/hbn_gpio_wakeup/main.c b/examples/pm/hbn_gpio_wakeup/main.c new file mode 100644 index 00000000..ce4b8417 --- /dev/null +++ b/examples/pm/hbn_gpio_wakeup/main.c @@ -0,0 +1,55 @@ +/** + * @file main.c + * @brief + * + * Copyright (c) 2021 Bouffalolab team + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. The + * ASF licenses this file to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance with the + * License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the + * License for the specific language governing permissions and limitations + * under the License. + * + */ +#include "hal_rtc.h" +#include "hal_pm.h" +#include "hal_uart.h" +#include "shell.h" + +void shell_irq_callback(struct device *dev, void *args, uint32_t size, uint32_t state) +{ + uint8_t data; + if (state == UART_EVENT_RX_FIFO) { + data = *(uint8_t *)args; + shell_handler(data); + } +} + +int main(void) +{ + bflb_platform_init(0); + shell_init(); + struct device *uart = device_find("debug_log"); + if (uart) { + device_set_callback(uart, shell_irq_callback); + device_control(uart, DEVICE_CTRL_SET_INT, (void *)(UART_RX_FIFO_IT)); + } + + MSG("gpio wake up case,enter hbn1 mode\r\n"); + bflb_platform_delay_ms(50); + + pm_hbn_mode_enter(PM_HBN_LEVEL_1); + + while (1) { + bflb_platform_delay_ms(100); + } +} \ No newline at end of file diff --git a/examples/pm/hbn_gpio_wakeup/readme.md b/examples/pm/hbn_gpio_wakeup/readme.md new file mode 100644 index 00000000..99eebe71 --- /dev/null +++ b/examples/pm/hbn_gpio_wakeup/readme.md @@ -0,0 +1,8 @@ +**board/bl706_lp/pinmux_config.h** 中 **CONFIG_GPIO12_FUNC** 选择 **GPIO_FUN_WAKEUP** + + +```bash + +$ make APP=hbn_gpio_wakeup BOARD=bl706_lp + +``` \ No newline at end of file diff --git a/examples/pm/hbn_rtc_wakeup/CMakeLists.txt b/examples/pm/hbn_rtc_wakeup/CMakeLists.txt new file mode 100644 index 00000000..27d34535 --- /dev/null +++ b/examples/pm/hbn_rtc_wakeup/CMakeLists.txt @@ -0,0 +1,4 @@ +set(TARGET_REQUIRED_LIBS shell) +set(mains main.c) +generate_bin() + diff --git a/examples/pm/hbn_rtc_wakeup/main.c b/examples/pm/hbn_rtc_wakeup/main.c new file mode 100644 index 00000000..3177163a --- /dev/null +++ b/examples/pm/hbn_rtc_wakeup/main.c @@ -0,0 +1,72 @@ +/** + * @file main.c + * @brief + * + * Copyright (c) 2021 Bouffalolab team + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. The + * ASF licenses this file to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance with the + * License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the + * License for the specific language governing permissions and limitations + * under the License. + * + */ +#include "hal_rtc.h" +#include "hal_pm.h" +#include "hal_uart.h" +#include "shell.h" + +void shell_irq_callback(struct device *dev, void *args, uint32_t size, uint32_t state) +{ + uint8_t data; + if (state == UART_EVENT_RX_FIFO) { + data = *(uint8_t *)args; + shell_handler(data); + } +} + +int main(void) +{ + bflb_platform_init(0); + shell_init(); + struct device *uart = device_find("debug_log"); + if (uart) { + device_set_callback(uart, shell_irq_callback); + device_control(uart, DEVICE_CTRL_SET_INT, (void *)(UART_RX_FIFO_IT)); + } + + BL_CASE_SUCCESS; + while (1) { + bflb_platform_delay_ms(100); + } +} + +int hbn_enter(int argc, char *argv[]) +{ + int second = 0; + + if (argc == 2) { + second = atoi(argv[1]); + } else { + second = 1; + } + + MSG("rtc wake up case,enter hbn1 mode\r\n"); + bflb_platform_delay_ms(50); + + rtc_init(second); //sleep time,unit is second + pm_hbn_mode_enter(PM_HBN_LEVEL_1); + + return 0; +} + +SHELL_CMD_EXPORT(hbn_enter, hbn1 rtc wakeup test) \ No newline at end of file diff --git a/examples/pm/hbn_rtc_wakeup/readme.md b/examples/pm/hbn_rtc_wakeup/readme.md new file mode 100644 index 00000000..b6473429 --- /dev/null +++ b/examples/pm/hbn_rtc_wakeup/readme.md @@ -0,0 +1,6 @@ + +```bash + +$ make APP=hbn_rtc_wakeup BOARD=bl706_lp + +``` \ No newline at end of file