Adds sitara_depot/free_rtos Original one is on server_gorbunov/SmartForce4.0/sitara_depot
57 lines
1.2 KiB
C++
57 lines
1.2 KiB
C++
/*
|
|
* timer.hpp
|
|
*
|
|
* Created on: 10 ìàð. 2023 ã.
|
|
* Author: sychev
|
|
*/
|
|
|
|
#ifndef FREE_RTOS_TIMER_TIMER_HPP_
|
|
#define FREE_RTOS_TIMER_TIMER_HPP_
|
|
|
|
#include <semaphore/semaphore.hpp>
|
|
#include <cstdint>
|
|
#include <kernel/dpl/HwiP.h>
|
|
|
|
|
|
|
|
namespace free_rtos {
|
|
|
|
class Timer {
|
|
public:
|
|
struct Settings {
|
|
uint32_t input_clk_Hz; /// Òàêòîâàÿ ÷àñòîòà â Ãö
|
|
uint32_t base_address; /// Áàçîâûé àäðåñ
|
|
uint32_t clock_src_mux_addr; /// Àäðåñ êëîêà
|
|
uint32_t int_num; /// Íîìåð ïðåðûâàíèÿ
|
|
uint32_t int_priority; /// Ïðèîðèòåò ïðåðûâàíèÿ
|
|
uint32_t period_us; /// Ïåðèîä òàéìåðà â ìêñ
|
|
};
|
|
|
|
/**
|
|
* Èíèöèàëèçàöèÿ òàéìåðà
|
|
*/
|
|
bool Init(Settings& sett);
|
|
|
|
/**
|
|
* Îæèäàíèÿ ïåðåïîëíåíèå òàéìåðà. Áëîêèðóþùåå.
|
|
*/
|
|
void Wait();
|
|
|
|
void Start();
|
|
|
|
void Stop();
|
|
private:
|
|
friend void timer_isr_callback(void * arg);
|
|
|
|
private:
|
|
uint32_t base_addr_; /// Áàçîâûé àäðåñ ðåãèñòðîâ òàéìåðà
|
|
uint32_t int_num_; /// Íîìåð ïðåðûâàíèÿ
|
|
HwiP_Object hwi_obj_; /// Óïðàâëåíèå ïðåðûâàíèÿìè ïî òàéìåðó
|
|
|
|
Semaphore sem_;
|
|
};
|
|
|
|
}
|
|
|
|
#endif /* FREE_RTOS_TIMER_TIMER_HPP_ */
|