/** * @file adcs.h * @author xxx * @date 2023-09-04 15:59:16 * @brief LL库ADC驱动 * @copyright Copyright (c) 2023 by xxx, All Rights Reserved. */ #ifndef __ADCS_H__ #define __ADCS_H__ #include "lib.h" #include "main.h" typedef enum { // IN0, // IN1, // IN2, // IN3, // IN4, IN5, IN6, IN7, IN8, IN9, // IN10, IN11, IN12, IN13, IN14, // IN15, INVREF, INTEMP, INMAX, } adc_num_t; // ADC通道号,根据cubemax配置的通道数量而定 typedef struct { ADC_TypeDef *adc; // ADC外设 DMA_TypeDef *dma; // DMA外设 uint32_t dma_channel; // DMA通道 } adc_t; extern volatile uint32_t adcs_ovr_count; // ADC溢出次数 extern void adc_init(adc_t handle); // ADC初始化 extern void adc_start(adc_t handle); // 启动ADC转换 extern void adc_completed_state_change(BOOL state); // ADC转换完成状态改变 extern BOOL adc_completed(void); // ADC转换完成 extern uint16_t adc_get_result_median_average(uint8_t adc_num); // 中位值平均滤波,获取ADC转换结果 extern uint16_t adc_get_result_median(uint8_t adc_num); // 中位值滤波,获取ADC转换结果 extern uint16_t adc_get_result_average(uint8_t adc_num); // 平均值,获取ADC转换结果 extern uint16_t adc_get_n_result_average(uint8_t adc_num); // N次平均值,获取ADC转换结果 extern uint16_t adc_get_result0(uint8_t in_num); // 获取ADC转换结果 extern int32_t compute_temperature(uint16_t measure); // 计算内部温度 extern int32_t compute_value_local(uint16_t measure); // 计算内部电压 extern void adc_dma_callback(adc_t handle); // ADC转换完成回调函数 extern void adc_callback(adc_t handle); // ADC转换完成回调函数 #endif // __ADCS_H__