File tim.h¶
File List > external-docs > libDaisy > src > per > tim.h
Go to the documentation of this file
Source Code¶
#pragma once
#ifndef DSY_TIM_H
#define DSY_TIM_H
#include <cstdint>
#include "stm32h7xx_hal.h"
namespace daisy
{
class TimerHandle
{
public:
struct Config
{
enum class Peripheral
{
TIM_2 = 0,
TIM_3,
TIM_4,
TIM_5,
};
enum class CounterDir
{
UP = 0,
DOWN,
};
Peripheral periph;
CounterDir dir;
uint32_t period;
bool enable_irq;
/* @brief Constructor for default states */
Config()
: periph(Peripheral::TIM_2),
dir(CounterDir::UP),
period(0xffffffff),
enable_irq(false)
{
}
};
enum class Result
{
OK,
ERR,
};
typedef void (*PeriodElapsedCallback)(void* data);
TimerHandle() : pimpl_(nullptr) {}
TimerHandle(const TimerHandle& other) = default;
TimerHandle& operator=(const TimerHandle& other) = default;
~TimerHandle() {}
Result Init(const Config& config);
Result DeInit();
const Config& GetConfig() const;
Result SetPeriod(uint32_t ticks);
Result SetPrescaler(uint32_t val);
Result Start();
Result Stop();
uint32_t GetFreq();
uint32_t GetTick();
uint32_t GetMs();
uint32_t GetUs();
void DelayTick(uint32_t del);
void DelayMs(uint32_t del);
void DelayUs(uint32_t del);
void SetCallback(PeriodElapsedCallback cb, void* data = nullptr);
class Impl;
private:
Impl* pimpl_;
};
} // namespace daisy
#endif