и FreeRTOS, есть такой код:
void vApplicationIdleHook(void) {
static uint32_t last_tick;
static uint32_t count;
count++;
if ((xTaskGetTickCount() - last_tick) > pdMS_TO_TICKS(1000)) {
last_tick = xTaskGetTickCount();
usage = count;
count = 0;
}
}
Отсутствуют какие-либо задачи. В пике я получаю около 500 000 тиков, хотя по логике, 24 000 000 операций в секунду, допустим, ртос, но точно не 500 000 тиков, что тут не так?
я бы рекомендовал построить цепочку вычислений частот, оттолкнувшись от переменной которая отдается через xTaskGetTickCount(); там все на дефайнах и их не очень много
так 24мгц это частота тикания ядра, вот 2 сложения сделали уже прошло 2 тика, вход выход из задачи еще 160 тиков
Я это понимаю, но не должно же за 1 секунду при 24 000 000 тиках на сложение уйти лишь 500 000 тиков. Ладно там, пару миллионов тиков уйдёт на freertos и на переключение функций, но не всё же время
ну так ты вызовы функций делаешь, условия проверяешь, считаешь
Обсуждают сегодня