mirror of
https://github.com/espressif/esp-idf.git
synced 2025-09-30 19:19:21 +00:00
gptimer: added enable/disable functions
This commit is contained in:
@@ -20,25 +20,31 @@ See the [ESP-IDF Getting Started Guide](https://idf.espressif.com/) for all the
|
||||
|
||||
```
|
||||
I (0) cpu_start: Starting scheduler on APP CPU.
|
||||
I (323) example: Create timer handle
|
||||
I (323) example: Start timer, stop it at alarm event
|
||||
I (1333) example: Timer stopped, count=1000002
|
||||
I (1333) example: Set count value
|
||||
I (1333) example: Get count value
|
||||
I (1333) example: Timer count value=100
|
||||
I (1343) example: Start timer, auto-reload at alarm event
|
||||
I (2343) example: Timer reloaded, count=2
|
||||
I (3343) example: Timer reloaded, count=2
|
||||
I (4343) example: Timer reloaded, count=2
|
||||
I (5343) example: Timer reloaded, count=2
|
||||
I (5343) example: Stop timer
|
||||
I (5343) example: Update alarm value dynamically
|
||||
I (6353) example: Timer alarmed, count=1000002
|
||||
I (7353) example: Timer alarmed, count=2000002
|
||||
I (8353) example: Timer alarmed, count=3000002
|
||||
I (9353) example: Timer alarmed, count=4000002
|
||||
I (9353) example: Stop timer
|
||||
I (9353) example: Delete timer
|
||||
I (326) example: Create timer handle
|
||||
I (326) example: Enable timer
|
||||
I (336) example: Start timer, stop it at alarm event
|
||||
I (1336) example: Timer stopped, count=1000002
|
||||
I (1336) example: Set count value
|
||||
I (1336) example: Get count value
|
||||
I (1346) example: Timer count value=100
|
||||
I (1346) example: Disable timer
|
||||
I (1346) example: Enable timer
|
||||
I (1356) example: Start timer, auto-reload at alarm event
|
||||
I (2356) example: Timer reloaded, count=2
|
||||
I (3356) example: Timer reloaded, count=2
|
||||
I (4356) example: Timer reloaded, count=2
|
||||
I (5356) example: Timer reloaded, count=2
|
||||
I (5356) example: Stop timer
|
||||
I (5356) example: Disable timer
|
||||
I (5356) example: Enable timer
|
||||
I (5366) example: Start timer, update alarm value dynamically
|
||||
I (6366) example: Timer alarmed, count=1000002
|
||||
I (7366) example: Timer alarmed, count=2000002
|
||||
I (8366) example: Timer alarmed, count=3000002
|
||||
I (9366) example: Timer alarmed, count=4000002
|
||||
I (9376) example: Stop timer
|
||||
I (9376) example: Disable timer
|
||||
I (9376) example: Delete timer
|
||||
```
|
||||
|
||||
## Troubleshooting
|
||||
|
@@ -86,6 +86,9 @@ void app_main(void)
|
||||
};
|
||||
ESP_ERROR_CHECK(gptimer_register_event_callbacks(gptimer, &cbs, queue));
|
||||
|
||||
ESP_LOGI(TAG, "Enable timer");
|
||||
ESP_ERROR_CHECK(gptimer_enable(gptimer));
|
||||
|
||||
ESP_LOGI(TAG, "Start timer, stop it at alarm event");
|
||||
gptimer_alarm_config_t alarm_config1 = {
|
||||
.alarm_count = 1000000, // period = 1s
|
||||
@@ -105,9 +108,16 @@ void app_main(void)
|
||||
ESP_ERROR_CHECK(gptimer_get_raw_count(gptimer, &count));
|
||||
ESP_LOGI(TAG, "Timer count value=%llu", count);
|
||||
|
||||
ESP_LOGI(TAG, "Start timer, auto-reload at alarm event");
|
||||
// before updating the alarm callback, we should make sure the timer is not in the enable state
|
||||
ESP_LOGI(TAG, "Disable timer");
|
||||
ESP_ERROR_CHECK(gptimer_disable(gptimer));
|
||||
// set a new callback function
|
||||
cbs.on_alarm = example_timer_on_alarm_cb_v2;
|
||||
ESP_ERROR_CHECK(gptimer_register_event_callbacks(gptimer, &cbs, queue));
|
||||
ESP_LOGI(TAG, "Enable timer");
|
||||
ESP_ERROR_CHECK(gptimer_enable(gptimer));
|
||||
|
||||
ESP_LOGI(TAG, "Start timer, auto-reload at alarm event");
|
||||
gptimer_alarm_config_t alarm_config2 = {
|
||||
.reload_count = 0,
|
||||
.alarm_count = 1000000, // period = 1s
|
||||
@@ -124,13 +134,17 @@ void app_main(void)
|
||||
ESP_LOGW(TAG, "Missed one count event");
|
||||
}
|
||||
}
|
||||
|
||||
ESP_LOGI(TAG, "Stop timer");
|
||||
ESP_ERROR_CHECK(gptimer_stop(gptimer));
|
||||
|
||||
ESP_LOGI(TAG, "Update alarm value dynamically");
|
||||
ESP_LOGI(TAG, "Disable timer");
|
||||
ESP_ERROR_CHECK(gptimer_disable(gptimer));
|
||||
cbs.on_alarm = example_timer_on_alarm_cb_v3;
|
||||
ESP_ERROR_CHECK(gptimer_register_event_callbacks(gptimer, &cbs, queue));
|
||||
ESP_LOGI(TAG, "Enable timer");
|
||||
ESP_ERROR_CHECK(gptimer_enable(gptimer));
|
||||
|
||||
ESP_LOGI(TAG, "Start timer, update alarm value dynamically");
|
||||
gptimer_alarm_config_t alarm_config3 = {
|
||||
.alarm_count = 1000000, // period = 1s
|
||||
};
|
||||
@@ -148,6 +162,8 @@ void app_main(void)
|
||||
|
||||
ESP_LOGI(TAG, "Stop timer");
|
||||
ESP_ERROR_CHECK(gptimer_stop(gptimer));
|
||||
ESP_LOGI(TAG, "Disable timer");
|
||||
ESP_ERROR_CHECK(gptimer_disable(gptimer));
|
||||
ESP_LOGI(TAG, "Delete timer");
|
||||
ESP_ERROR_CHECK(gptimer_del_timer(gptimer));
|
||||
|
||||
|
@@ -26,7 +26,7 @@ def test_gptimer_example(dut: Dut) -> None:
|
||||
assert 0 <= int(reloaded_count) < 10
|
||||
|
||||
dut.expect_exact('Stop timer')
|
||||
dut.expect_exact('Update alarm value dynamically')
|
||||
dut.expect_exact('Start timer, update alarm value dynamically')
|
||||
for i in range(1,5):
|
||||
res = dut.expect(r'Timer alarmed, count=(\d+)', timeout=5)
|
||||
alarm_count = res.group(1).decode('utf8')
|
||||
|
Reference in New Issue
Block a user