embox

Форк
0
68 строк · 1.4 Кб
1
/**
2
 * @file
3
 * @brief  Test for extended sleep. It enters extended sleep,
4
 *         then exits on timer trigger and blinks LED.
5
 *
6
 * @date   07.10.2020
7
 * @author Alexander Kalmuk
8
 */
9

10
#include <stdio.h>
11
#include <unistd.h>
12
#include <framework/mod/options.h>
13

14
#include <config/custom_config_qspi.h>
15
#include <hw_gpio.h>
16

17
#define LOOP_CNT     OPTION_GET(NUMBER, loop_cnt)
18
#define SLEEP_SEC    OPTION_GET(NUMBER, sleep_sec)
19

20
/* LED configuration section */
21
#define LED1_PORT       (HW_GPIO_PORT_1)
22
#define LED1_PIN        (HW_GPIO_PIN_1)
23
#define LED1_MODE       (HW_GPIO_MODE_OUTPUT)
24
#define LED1_FUNC       (HW_GPIO_FUNC_GPIO)
25

26
static void busy_loop(unsigned volatile n) {
27
	while (n--) {
28

29
	}
30
}
31

32
static void toggle_led(int led_is_on) {
33
	if (led_is_on) {
34
		HW_GPIO_SET_PIN_FUNCTION(LED1);
35
		hw_gpio_set_active(LED1_PORT, LED1_PIN);
36
		HW_GPIO_PAD_LATCH_ENABLE(LED1);
37
		HW_GPIO_PAD_LATCH_DISABLE(LED1);
38
	} else {
39
		HW_GPIO_SET_PIN_FUNCTION(LED1);
40
		hw_gpio_set_inactive(LED1_PORT, LED1_PIN);
41
		HW_GPIO_PAD_LATCH_ENABLE(LED1);
42
		HW_GPIO_PAD_LATCH_DISABLE(LED1);
43
	}
44
}
45

46
static void deepsleep_test(void) {
47
	int led;
48
	int cnt;
49

50
	led = 1;
51
	toggle_led(led);
52
	busy_loop(1 * 1000000);
53
	led ^= 1;
54
	toggle_led(led);
55

56
	for (cnt = 0; cnt < LOOP_CNT; cnt++) {
57
		usleep(SLEEP_SEC * USEC_PER_SEC);
58

59
		led ^= 1;
60
		toggle_led(led);
61
	}
62
}
63

64
int main(int argc, char **argv) {
65
	deepsleep_test();
66

67
	return 0;
68
}
69

Использование cookies

Мы используем файлы cookie в соответствии с Политикой конфиденциальности и Политикой использования cookies.

Нажимая кнопку «Принимаю», Вы даете АО «СберТех» согласие на обработку Ваших персональных данных в целях совершенствования нашего веб-сайта и Сервиса GitVerse, а также повышения удобства их использования.

Запретить использование cookies Вы можете самостоятельно в настройках Вашего браузера.