Компоненты и технологии • №2 '2011 компоненты



Pdf көрінісі
бет127/129
Дата28.09.2023
өлшемі4.1 Mb.
#478975
1   ...   121   122   123   124   125   126   127   128   129
Kurniz

учебная программа
Продемонстрировать использование про-
граммных таймеров позволяет следующая 
учебная программа, в которой происходит 
создание, запуск, изменение периода, а также 
удаление таймера.
В программе будет создан периодический 
таймер с периодом работы 1 с. Функция это-
го таймера каждый раз при его срабатывании 
будет увеличивать период работы на 1 секун-
ду. Кроме того, в программе будут созданы 
3 интервальных таймера с периодом работы 
12 секунд каждый.
Сразу после запуска планировщика от-
счет времени начнут периодический таймер 
и первый интервальный таймер. Через 12 с, 
когда сработает первый интервальный тай-
мер, его функция запустит второй интер-
вальный таймер, еще через 12 с функция вто-
рого интервального таймера запустит третий. 
Функция третьего же интервального таймера 
еще через 12 с удалит периодический таймер.
Таким образом, отсчет времени таймерами 
будет продолжаться 36 с. В моменты вызова 
функций таймеров на дисплей будет выво-
диться время, прошедшее с момента запуска 
планировщика.
Исходный текст учебной программы:
#include
#include
#include “FreeRTOS.h”
#include “task.h”
#include “timers.h”
/*-----------------------------------------------------------*/
/* Количество интервальных таймеров */
#define NUMBER_OF_TIMERS 3
/* Целочисленные идентификаторы интервальных таймеров */
#define ID_TIMER_1
111
#define ID_TIMER_2
222
#define ID_TIMER_3
333
/*-----------------------------------------------------------*/
/* Дескриптор периодического таймера */
xTimerHandle 
xAutoReloadTimer;
/* Массив дескрипторов интервальных таймеров */
xTimerHandle 
xOneShotTimers[NUMBER_OF_TIMERS];
/* Массив идентификаторов интервальных таймеров */
c o n s t u n s i g n e d p o r t B A S E _ T Y P E u x O n e S h o t T i m e r s I D s 
[NUMBER_OF_TIMERS] = { ID_TIMER_1, ID_TIMER_2,
ID_TIMER_3 };
/* Период работы периодического таймера = 1 секунда */
unsigned int uiAutoReloadTimerPeriod = 1000 / portTICK_RATE_MS;
/*-----------------------------------------------------------*/
/* Функция периодического таймера.
* Является функцией обратного вызова.
* В программе не должно быть ее явных вызовов.




Достарыңызбен бөлісу:
1   ...   121   122   123   124   125   126   127   128   129




©dereksiz.org 2024
әкімшілігінің қараңыз

    Басты бет