参考代码

This commit is contained in:
LokLiang
2024-03-28 12:19:52 +08:00
commit 7b86aa3362
96 changed files with 19986 additions and 0 deletions

View File

@@ -0,0 +1,136 @@
#ifndef __TIM_H__
#define __TIM_H__
#include "drivers/chip/_hal.h"
#ifdef __cplusplus
extern "C"
{
#endif
/**
* @param channel_id: 0..n
* @param channel_mask: 1 << 0, 1 << 1, ... 1 << n
*/
typedef void (*tim_isr_cb_fn)(void);
/** @defgroup time base
* @{
*/
void drv_tim_enable(hal_id_t id);
void drv_tim_disable(hal_id_t id);
void drv_tim_init(hal_id_t id, unsigned period_ns, unsigned reload_enable);
void drv_tim_deinit(hal_id_t id);
int drv_tim_irq_callback_enable(hal_id_t id, tim_isr_cb_fn cb);
int drv_tim_irq_callback_disable(hal_id_t id);
void drv_tim_irq_enable(hal_id_t id, int priority);
void drv_tim_irq_disable(hal_id_t id);
void drv_tim_base_start(hal_id_t id);
void drv_tim_base_stop(hal_id_t id);
unsigned drv_tim_get_period_ns(hal_id_t id);
unsigned drv_tim_get_cost_ns(hal_id_t id);
unsigned drv_tim_get_remain_ns(hal_id_t id);
/**
* @}
*/
/** @defgroup PWM
* @{
*/
void drv_pwm_pin_configure(hal_id_t id, uint8_t pin);
void drv_pwm_enable(hal_id_t id);
void drv_pwm_disable(hal_id_t id);
void drv_pwm_init(hal_id_t id, unsigned period_ns, unsigned reload_enable);
void drv_pwm_deinit(hal_id_t id);
int drv_pwm_irq_callback_enable(hal_id_t id, tim_isr_cb_fn cb);
int drv_pwm_irq_callback_disable(hal_id_t id);
void drv_pwm_irq_enable(hal_id_t id, unsigned channel_mask, int priority);
void drv_pwm_irq_disable(hal_id_t id, unsigned channel_mask);
void drv_pwm_start(hal_id_t id, unsigned channel_mask, unsigned active_level, unsigned pulse_ns);
void drv_pwm_stop(hal_id_t id, unsigned channel_mask, unsigned active_level);
bool drv_pwm_is_busy(hal_id_t id);
/**
* @}
*/
/** @defgroup one pluse
* @{
*/
void drv_pluse_pin_configure(hal_id_t id, uint8_t pin);
void drv_pluse_enable(hal_id_t id);
void drv_pluse_disable(hal_id_t id);
void drv_pluse_init(hal_id_t id);
void drv_pluse_deinit(hal_id_t id);
int drv_pluse_irq_callback_enable(hal_id_t id, tim_isr_cb_fn cb);
int drv_pluse_irq_callback_disable(hal_id_t id);
void drv_pluse_irq_enable(hal_id_t id, unsigned channel_mask, int priority);
void drv_pluse_irq_disable(hal_id_t id, unsigned channel_mask);
void drv_pluse_set(hal_id_t id, unsigned channel_mask, unsigned active_level, unsigned period_ns, unsigned pulse_ns);
bool drv_pluse_is_busy(hal_id_t id, unsigned channel);
/**
* @}
*/
/** @defgroup input capture
* @{
*/
typedef enum __packed
{
_IC_EDGE_RISING,
_IC_EDGE_FALLING,
_IC_EDGE_BOTH,
} capture_edge_t;
void drv_capture_pin_configure(hal_id_t id, uint8_t pin);
void drv_capture_enable(hal_id_t id);
void drv_capture_disable(hal_id_t id);
void drv_capture_init(hal_id_t id, unsigned channel_mask, capture_edge_t polarity);
void drv_capture_deinit(hal_id_t id);
int drv_capture_irq_callback_enable(hal_id_t id, tim_isr_cb_fn cb);
int drv_capture_irq_callback_disable(hal_id_t id);
void drv_capture_irq_enable(hal_id_t id, unsigned channel_mask, int priority);
void drv_capture_irq_disable(hal_id_t id, unsigned channel_mask);
void drv_capture_start(hal_id_t id, unsigned channel_mask);
void drv_capture_stop(hal_id_t id, unsigned channel_mask);
unsigned drv_capture_get_cap_value(hal_id_t id, uint8_t channel_id);
/**
* @}
*/
#ifdef __cplusplus
}
#endif
#endif