1 | #include <stdio.h>
|
2 | #include "freertos/FreeRTOS.h"
|
3 | #include "freertos/task.h"
|
4 | #include "freertos/queue.h"
|
5 | #include "driver/timer.h"
|
6 |
|
7 | #define TIMER_DIVIDER (16)
|
8 | #define TIMER_SCALE (TIMER_BASE_CLK / TIMER_DIVIDER)
|
9 |
|
10 | uint64_t counter_value;
|
11 |
|
12 | static void app_timer_init(int group, int timer, bool auto_reload, int timer_interval_sec)
|
13 | {
|
14 |
|
15 | timer_config_t config = {
|
16 | .divider = TIMER_DIVIDER,
|
17 | .counter_dir = TIMER_COUNT_UP,
|
18 | .counter_en = TIMER_PAUSE,
|
19 | .alarm_en = TIMER_ALARM_EN,
|
20 | .auto_reload = auto_reload,
|
21 | };
|
22 | timer_init(group, timer, &config);
|
23 |
|
24 | timer_set_alarm_value(group, timer, timer_interval_sec * TIMER_SCALE);
|
25 |
|
26 | timer_start(group, timer);
|
27 |
|
28 | }
|
29 |
|
30 |
|
31 | void show_timer_task()
|
32 | {
|
33 |
|
34 | while(1) {
|
35 |
|
36 | timer_get_counter_value(TIMER_GROUP_0, TIMER_0, &counter_value);
|
37 | printf("%.0f\n", (float) counter_value / TIMER_SCALE);
|
38 |
|
39 | vTaskDelay(1000 / portTICK_PERIOD_MS);
|
40 | }
|
41 | }
|
42 |
|
43 |
|
44 | void app_main(void)
|
45 | {
|
46 |
|
47 | app_timer_init(TIMER_GROUP_0, TIMER_0, true, 10);
|
48 |
|
49 | xTaskCreatePinnedToCore( show_timer_task, "show_timer_task", 2048, NULL, 1, NULL, 1 );
|