58 lines
1.2 KiB
C
58 lines
1.2 KiB
C
|
|
#ifndef __HAL_CMP_H__
|
||
|
|
#define __HAL_CMP_H__
|
||
|
|
|
||
|
|
#include "drivers/chip/_hal.h"
|
||
|
|
|
||
|
|
#ifdef __cplusplus
|
||
|
|
extern "C"
|
||
|
|
{
|
||
|
|
#endif
|
||
|
|
|
||
|
|
typedef void (*cmp_isr_cb_fn)(void);
|
||
|
|
|
||
|
|
typedef enum __packed
|
||
|
|
{
|
||
|
|
_CMP_OUTPUT_NONE, // 没有任何输出动作
|
||
|
|
_CMP_OUTPUT_IO, // 输出到 IO
|
||
|
|
_CMP_OUTPUT_EXTI, // 触发 中断线
|
||
|
|
_CMP_OUTPUT_TIM, // 触发 定时器的输入
|
||
|
|
} cmp_output_t;
|
||
|
|
|
||
|
|
typedef enum __packed
|
||
|
|
{
|
||
|
|
_CMP_INT_EDGE_NONE,
|
||
|
|
_CMP_INT_EDGE_FALL,
|
||
|
|
_CMP_INT_EDGE_RISE,
|
||
|
|
_CMP_INT_EDGE_BOTH,
|
||
|
|
} cmp_int_edge_t;
|
||
|
|
|
||
|
|
void drv_cmp_pin_configure_in(hal_id_t id, uint8_t pin);
|
||
|
|
void drv_cmp_pin_configure_out(hal_id_t id, uint8_t pin);
|
||
|
|
|
||
|
|
void drv_cmp_enable(hal_id_t id);
|
||
|
|
void drv_cmp_disable(hal_id_t id);
|
||
|
|
|
||
|
|
void drv_cmp_init(hal_id_t id, cmp_output_t output);
|
||
|
|
void drv_cmp_deinit(hal_id_t id);
|
||
|
|
|
||
|
|
int drv_cmp_get_out_value(hal_id_t id);
|
||
|
|
|
||
|
|
int drv_cmp_irq_callback_enable(hal_id_t id, cmp_isr_cb_fn cb);
|
||
|
|
int drv_cmp_irq_callback_disable(hal_id_t id);
|
||
|
|
|
||
|
|
void drv_cmp_irq_enable(hal_id_t id, cmp_int_edge_t edge, int priority);
|
||
|
|
void drv_cmp_irq_disable(hal_id_t id);
|
||
|
|
|
||
|
|
void drv_cmp_start(hal_id_t id);
|
||
|
|
void drv_cmp_stop(hal_id_t id);
|
||
|
|
|
||
|
|
void drv_cmp_set_cmp_value(hal_id_t id, uint16_t value);
|
||
|
|
|
||
|
|
uint8_t drv_cmp_read(hal_id_t id);
|
||
|
|
|
||
|
|
#ifdef __cplusplus
|
||
|
|
}
|
||
|
|
#endif
|
||
|
|
|
||
|
|
#endif
|