summaryrefslogtreecommitdiff
path: root/Libraries/LTimers
diff options
context:
space:
mode:
Diffstat (limited to 'Libraries/LTimers')
-rw-r--r--Libraries/LTimers/ltimers.c122
-rw-r--r--Libraries/LTimers/ltimers.h29
-rw-r--r--Libraries/LTimers/ltimers_config.c56
-rw-r--r--Libraries/LTimers/ltimers_config.h15
4 files changed, 0 insertions, 222 deletions
diff --git a/Libraries/LTimers/ltimers.c b/Libraries/LTimers/ltimers.c
deleted file mode 100644
index 61c9e6f..0000000
--- a/Libraries/LTimers/ltimers.c
+++ /dev/null
@@ -1,122 +0,0 @@
-/* Описание модуля ltimers.c
-
- Этот модуль используется для создания неограниченного количества
-программных таймеров для программы. Модуль использует аппаратный таймер,
-который генерирует прерывание каждую 1мс (можно использовать любой другой
-промежуток времени, просто 1 мс это очень удобно и хватает для многих
-программных пауз, задержек, таймеров и тд. в программе).
-В прерывании вызывается ф-я ProcessLTimers(), которая инкрементирует значения
-всех таймеров. Таймеры создаются в файле ltimers.h.
- Модуль универсален, прост и может использоваться на любой платформе,
-компиляторе, любом МК.
- Для подключения модуля настройте аппаратный таймер на прерывание в 1мс (или
-любой другой нужный промежуток времени) и добавьте в обработчик прерывания
-этого таймера ф-ю ProcessLTimers();. Затем добавьте #include "ltimers.h" в тот
-файл программы, где будут использоваться ф-ии модуля. Собственно,
-в всего нужны две функции для работы с таймерами:
-
-StartLTimer ( LTIMER_LED_BLINK ); // запустить таймер
-GetLTimer ( LTIMER_LED_BLINK ); // получить текущее значение таймера
-
- Пример использования:
-...
-// Предварительно ltimers.h создаем перечисление, в котором создаем имена для
-// программных таймеров, а также в конце перечисления всегда MAX_LTIMERS
-#include "ltimers.h"
-...
-
-int main ()
-{
- ...
- // Настройка аппаратного таймера на прерывание раз в 1 мс
- InitLTimersHardWare();
-
- // Стартовая инициализация (просто обнуление) всех программных таймеров
- InitLTimers ();
-
- // Запускаем таймер
- StartLTimer ( LTIMER_LED_BLINK );
-
- // Основной цикл программы
- while (1)
- {
- // Проверяем значение таймера
- if ( GetLTimer ( LTIMER_LED_BLINK ) >= 500 )
- {
- LED_ON;
- }
- }
-}
-
-***Примечание
-
- 1. Необходимо учитывать разрядность МК и атомарность при проверке значений
-таймера. То есть, если произойдет прерывание в момент проверки полубайтов на
-8-ми разрядном МК, то, возможно, могут быть трудноуловимые глюки.
-
- 2. Обратите внимание, что в ф-ии ProcessLTimers() значения таймеров
-инкрементируются постоянно и не перестают изменяться. Ф-я StartLTimer только
-сбрасывает значение таймера в ноль, а потом программа уже ловит тот момент,
-когда это значение превысило или сравнялось с нужным. И когда мы провели
-сравнение, то таймер все равно продолжает маслать. Но это не важно. Пусть себе
-маслает.
-
- 3. Псевдоним для типа uint32_t можно заменить на необходимый в зависимости
-от среды разработки и компилятора.
-*/
-
-#include "ltimers.h"
-#include "ltimers_config.h"
-
-uint32_t LTimers [MAX_LTIMERS] = { 0 };
-
-
-// ----------------------------------------------------------------------------
-// Стартовая инициализация всех программных таймеров программиста.
-// Ф-я вызывается при старте МК и просто устанавливает все значения таймеров
-// в ноль.
-// ----------------------------------------------------------------------------
-void InitLTimers (void)
-{
- LTimersConfig ();
-}
-
-
-// ----------------------------------------------------------------------------
-// Ф-я получения значения программного счетчика
-// Используется программистом для проверки значения запущенного таймера
-// Ф-я принимает имя таймера из перечисления LTimerNum_t в файле ltimers.h
-// Ф-я возвращает значение таймера, которое увеличивается каждую 1мс
-// ----------------------------------------------------------------------------
-uint32_t GetLTimer ( LTimersNames_t LTimer )
-{
- return LTimers[ LTimer ];
-}
-
-
-// ----------------------------------------------------------------------------
-// Ф-я запуска программного таймера для использования программистом для
-// любых программных задержек разрешением 1мс
-// Ф-я принимает имя таймера из перечисления LTimerNum_t в файле ltimers.h
-// ----------------------------------------------------------------------------
-void StartLTimer ( LTimersNames_t LTimer )
-{
- LTimers[ LTimer ] = 0;
-}
-
-
-// ----------------------------------------------------------------------------
-// Ф-я, инкрементирующая значения программных таймеров. Количество этих
-// программных таймеров нее ограничено и задается программистом в ltimers.h
-// в тайпдефе LTimerNum_t. Просто дописываем в перечислении перед MAX_LTIMERS
-// имя нового таймера.
-// Вызывается эта ф-я в обреботчике TIM6_IRQHandler каждую 1 мс.
-// 1 мс это удобный квант времени для разных программных задержек
-// ----------------------------------------------------------------------------
-void ProcessLTimers (void)
-{
- for ( uint32_t i = 0; i < MAX_LTIMERS; i++ )
- {
- LTimers[i]++;
- }
-}
diff --git a/Libraries/LTimers/ltimers.h b/Libraries/LTimers/ltimers.h
deleted file mode 100644
index 4514841..0000000
--- a/Libraries/LTimers/ltimers.h
+++ /dev/null
@@ -1,29 +0,0 @@
-#ifndef LTIMERS_H_INCLUDED
-#define LTIMERS_H_INCLUDED
-
-#include <stdint.h>
-
-// Имена таймеров LTIMER_<TIMERNAME> ---------------------------------------- //
-typedef enum {
-
- LTIMER_SENSE_PAD = 0,
- LTIMER_PRGBAR_SPEED,
- LTIMER_HL_CHANGE_BRIGHT_SPEED,
- LTIMER_HL_BUT_LED,
- LTIMER_BUTTON_LONG_PRESS,
- LTIMER_INDIC_MODE_BLINK_OFF,
- LTIMER_INDIC_MODE_BLINK_ON,
- LTIMER_MENU_ADJ_TIME_OUT,
- LTIMER_LIGHT_SENSOR,
- LTIMER_SENSOR_BUT_DEBOUNCE,
-
- MAX_LTIMERS
-
-} LTimersNames_t;
-
-void InitLTimers ( void );
-void ProcessLTimers ( void );
-uint32_t GetLTimer ( LTimersNames_t LTIMER );
-void StartLTimer ( LTimersNames_t LTIMER );
-
-#endif // LTIMERS_H_INCLUDED
diff --git a/Libraries/LTimers/ltimers_config.c b/Libraries/LTimers/ltimers_config.c
deleted file mode 100644
index a30b36f..0000000
--- a/Libraries/LTimers/ltimers_config.c
+++ /dev/null
@@ -1,56 +0,0 @@
-#include "ltimers_config.h"
-
-#include "stm32f0xx_conf.h"
-
-
-// ----------------------------------------------------------------------------
-// Инициализация аппаратного таймера для генерирования прерываний каждую 1мс
-// ----------------------------------------------------------------------------
-void LTimersConfig ( void )
-{
- NVIC_InitTypeDef NVIC_InitStructure;
- TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure;
-
- /* LTIMER_TIMx clock enable */
- LTIMER_RCC_APBxPeriphClockCmd ( LTIMER_TIM_RCC, ENABLE );
-
- /* Enable the LTIMER_TIMx gloabal Interrupt */
- NVIC_InitStructure.NVIC_IRQChannel = LTIMER_TIM_IRQx;
- NVIC_InitStructure.NVIC_IRQChannelPriority = 1;
- NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
- NVIC_Init ( &NVIC_InitStructure );
-
- /* -----------------------------------------------------------------------
- In this example TIM7 counter clock (TIM7CLK) is set to APB1 clock (PCLK1), since
- APB1 prescaler is set to 1 and TIM7 prescaler is set to 0.
-
- In this example TIM7 input clock (TIM7CLK) is set to APB1 clock (PCLK1),
- since APB1 prescaler is set to 1.
- TIM7CLK = PCLK1 = HCLK = SystemCoreClock
-
- With Prescaler set to 479 and Period to 24999, the TIM7 counter is updated each 250 ms
- (i.e. and interrupt is generated each 250 ms)
- TIM7 counter clock = TIM7CLK /((Prescaler + 1)*(Period + 1))
- = 48 MHz / ((25000)*(480))
- = 4 Hz
- ==> TIM7 counter period = 250 ms
-
- Note:
- SystemCoreClock variable holds HCLK frequency and is defined in system_stm32f0xx.c file.
- Each time the core clock (HCLK) changes, user had to call SystemCoreClockUpdate()
- function to update SystemCoreClock variable value. Otherwise, any configuration
- based on this variable will be incorrect.
- ----------------------------------------------------------------------- */
- /* Time base configuration */
- TIM_TimeBaseStructure.TIM_Period = 1000; //24999;
- TIM_TimeBaseStructure.TIM_Prescaler = (SystemCoreClock/1000000)-1; //479;
- TIM_TimeBaseStructure.TIM_ClockDivision = TIM_CKD_DIV1;
- TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up;
- TIM_TimeBaseInit ( LTIMER_TIMx, &TIM_TimeBaseStructure );
-
- /* LTIMER_TIMx Interrupts enable */
- TIM_ITConfig ( LTIMER_TIMx, TIM_IT_Update, ENABLE );
-
- /* LTIMER_TIMx enable counter */
- TIM_Cmd ( LTIMER_TIMx, ENABLE );
-}
diff --git a/Libraries/LTimers/ltimers_config.h b/Libraries/LTimers/ltimers_config.h
deleted file mode 100644
index 50a75db..0000000
--- a/Libraries/LTimers/ltimers_config.h
+++ /dev/null
@@ -1,15 +0,0 @@
-#ifndef LTIMERS_CONFIG_INCLUDED
-#define LTIMERS_CONFIG_INCLUDED
-
-// Примечание
-// Обратить внимание на то, что таймеры тактируются от разных шин APB1 или APB2
-
-#define LTIMER_IRQHandler TIM17_IRQHandler
-#define LTIMER_TIMx TIM17
-#define LTIMER_TIM_RCC RCC_APB2Periph_TIM17
-#define LTIMER_TIM_IRQx TIM17_IRQn
-#define LTIMER_RCC_APBxPeriphClockCmd RCC_APB2PeriphClockCmd
-
-void LTimersConfig ( void );
-
-#endif // LTIMERS_CONFIG_INCLUDED