main_ubi_sdk v 0.1.3
This is UBI4 documentation
base_soft_timer.h
Go to the documentation of this file.
1/*
2 ******************************************************************************
3 * @file base_soft_timer.h
4 * @author A.Alborov
5 ******************************************************************************
6*/
7
8#ifndef __BASE_SOFT_TIMER_H
9#define __BASE_SOFT_TIMER_H
10
11
12#ifdef __cplusplus
13extern "C" {
14#endif
15
16
17#include "stdint.h"
18#include "stdbool.h"
19
20
21typedef void (* soft_timer_event_handler_t)(void* soft_timer_obj, int instance,void* p);
22typedef void (* soft_timer_finish_handler_t)(int instance);
23typedef void (* soft_timer_handler_t)(void* timer_obj, int instance, void* p);
24
116
129
133typedef struct
134{
135
136 uint8_t timers_size;
137 uint32_t tick_step_us;
138 uint32_t (*GetTick)(void);
139
140 void (*StartTickTimer)(void);
141 void (*StopTickTimer)(void);
142 uint8_t (*isTimerEnable)(void);
143
145
146
150typedef struct
151{
155 uint16_t time_ms;
156 void* p;
157 uint8_t mode: 1;
158 uint8_t repeat: 1;
159 uint8_t overflow: 1;
161 uint8_t run: 1;
162
164
174
175
176
177
183
184void soft_timer_init(soft_timer_init_struct* init_struct, soft_timer_class_struct** soft_timer_obj);
185
196int create_soft_timer(soft_timer_class_struct* soft_timer_obj, soft_timer_handler_t handler, void* p, bool repeat, bool delete_on_completion, soft_timer_mode_enum handler_exec_mode);
197
204bool remove_soft_timer(soft_timer_class_struct* soft_timer_obj, int instance);
205
212bool stop_soft_timer(soft_timer_class_struct* soft_timer_obj, int instance);
213
221bool start_soft_timer(soft_timer_class_struct* soft_timer_obj, int instance, uint32_t time_ms);
222
228
233void timer_owerflow(soft_timer_class_struct* soft_timer_obj);
234
240bool soft_timer_is_run(soft_timer_class_struct* soft_timer_obj, int instance);
241
242//void start_soft_while_timer(uint16_t ms, void (*callback)(void* ptr));
243//bool start_soft_timer(void (*handler)(int instance, void* p), uint32_t time_ms,void* p, bool repeat,soft_timer_mode_enum handler_exec_mode);
244//bool restart_soft_timer(void (*handler)(void* p), uint32_t time_ms,void* p, bool repeat,soft_timer_mode_enum handler_exec_mode);
245//bool stop_soft_timer(void (*handler)(void* p));
246//void soft_timer_ms_tick_exec();
247// void soft_timer_overflow_reset();
248
250
251
252
253#ifdef __cplusplus
254}
255#endif
256
257
258
259#endif //__BASE_SOFT_TIMER_H
void(* soft_timer_handler_t)(void *timer_obj, int instance, void *p)
Definition base_soft_timer.h:23
void(* soft_timer_finish_handler_t)(int instance)
Definition base_soft_timer.h:22
void(* soft_timer_event_handler_t)(void *soft_timer_obj, int instance, void *p)
Definition base_soft_timer.h:21
void soft_timer_tick_exec(soft_timer_class_struct *soft_timer_obj)
Функция тика soft_timer. Эту функцию нужно вызывать в прерывании таймера (или SysTick()) для работы s...
Definition base_soft_timer.c:168
bool stop_soft_timer(soft_timer_class_struct *soft_timer_obj, int instance)
Функция остановки soft_timerа
Definition base_soft_timer.c:117
bool remove_soft_timer(soft_timer_class_struct *soft_timer_obj, int instance)
Функция удаления soft_timerа
Definition base_soft_timer.c:105
bool soft_timer_is_run(soft_timer_class_struct *soft_timer_obj, int instance)
Функция получения статуса soft_timerа.
Definition base_soft_timer.c:160
int create_soft_timer(soft_timer_class_struct *soft_timer_obj, soft_timer_handler_t handler, void *p, bool repeat, bool delete_on_completion, soft_timer_mode_enum handler_exec_mode)
Функция создания нового soft_timerа
Definition base_soft_timer.c:60
soft_timer_mode_enum
enum режимов исполнения soft_timer
Definition base_soft_timer.h:122
bool start_soft_timer(soft_timer_class_struct *soft_timer_obj, int instance, uint32_t time_ms)
Функция запуска soft_timerа
Definition base_soft_timer.c:130
void soft_timer_init(soft_timer_init_struct *init_struct, soft_timer_class_struct **soft_timer_obj)
Функция инициализции soft_timer.
Definition base_soft_timer.c:30
void timer_owerflow(soft_timer_class_struct *soft_timer_obj)
Функция переполнения таймера.
Definition base_soft_timer.c:50
@ SOFT_TIMER_EXEC_WHILE_MODE
Definition base_soft_timer.h:124
@ SOFT_TIMER_EXEC_IRQ_MODE
Definition base_soft_timer.h:125
Верхнеуровневая структура soft_timer, с которой предстоит работать.
Definition base_soft_timer.h:169
uint8_t soft_timer_count
Definition base_soft_timer.h:170
soft_timer_init_struct * init_struct
Definition base_soft_timer.h:172
soft_timer_handler_struct * soft_timer_buffer
Definition base_soft_timer.h:171
Внутренняя структура soft_timer.
Definition base_soft_timer.h:151
uint8_t delete_on_completion
Definition base_soft_timer.h:160
void * p
Definition base_soft_timer.h:156
uint8_t repeat
Definition base_soft_timer.h:158
uint8_t mode
Definition base_soft_timer.h:157
uint8_t overflow
Definition base_soft_timer.h:159
int instance
Definition base_soft_timer.h:152
uint32_t start_time_ms
Definition base_soft_timer.h:154
uint16_t time_ms
Definition base_soft_timer.h:155
uint8_t run
Definition base_soft_timer.h:161
soft_timer_event_handler_t handler
Definition base_soft_timer.h:153
Структура для инициализации soft_timer.
Definition base_soft_timer.h:134
uint8_t(* isTimerEnable)(void)
Definition base_soft_timer.h:142
void(* StopTickTimer)(void)
Definition base_soft_timer.h:141
uint32_t(* GetTick)(void)
Definition base_soft_timer.h:138
void(* StartTickTimer)(void)
Definition base_soft_timer.h:140
uint32_t tick_step_us
Definition base_soft_timer.h:137
uint8_t timers_size
Definition base_soft_timer.h:136