进一步迭代优化统一管理
This commit is contained in:
175
HAL/Inc/hal_adc.h
Normal file
175
HAL/Inc/hal_adc.h
Normal file
@ -0,0 +1,175 @@
|
||||
/* USER CODE BEGIN Header */
|
||||
/**
|
||||
******************************************************************************
|
||||
* @file : hal_adc.h
|
||||
* @brief : ADC hardware abstraction layer header file
|
||||
******************************************************************************
|
||||
*/
|
||||
/* USER CODE END Header */
|
||||
|
||||
#ifndef HAL_ADC_H
|
||||
#define HAL_ADC_H
|
||||
|
||||
#include <stdint.h>
|
||||
#include <stddef.h>
|
||||
#include "hal.h"
|
||||
|
||||
/**
|
||||
* @brief ADC instance identifier definitions
|
||||
*/
|
||||
typedef enum {
|
||||
HAL_ADC_INSTANCE_1 = 0,
|
||||
HAL_ADC_INSTANCE_2,
|
||||
HAL_ADC_INSTANCE_3,
|
||||
HAL_ADC_INSTANCE_MAX
|
||||
} hal_adc_instance_t;
|
||||
|
||||
/**
|
||||
* @brief ADC resolution definitions
|
||||
*/
|
||||
typedef enum {
|
||||
HAL_ADC_RESOLUTION_12B = 0,
|
||||
HAL_ADC_RESOLUTION_10B,
|
||||
HAL_ADC_RESOLUTION_8B,
|
||||
HAL_ADC_RESOLUTION_6B
|
||||
} hal_adc_resolution_t;
|
||||
|
||||
/**
|
||||
* @brief ADC channel definitions
|
||||
*/
|
||||
typedef enum {
|
||||
HAL_ADC_CHANNEL_0 = 0,
|
||||
HAL_ADC_CHANNEL_1,
|
||||
HAL_ADC_CHANNEL_2,
|
||||
HAL_ADC_CHANNEL_3,
|
||||
HAL_ADC_CHANNEL_4,
|
||||
HAL_ADC_CHANNEL_5,
|
||||
HAL_ADC_CHANNEL_6,
|
||||
HAL_ADC_CHANNEL_7,
|
||||
HAL_ADC_CHANNEL_8,
|
||||
HAL_ADC_CHANNEL_9,
|
||||
HAL_ADC_CHANNEL_10,
|
||||
HAL_ADC_CHANNEL_11,
|
||||
HAL_ADC_CHANNEL_12,
|
||||
HAL_ADC_CHANNEL_13,
|
||||
HAL_ADC_CHANNEL_14,
|
||||
HAL_ADC_CHANNEL_15,
|
||||
HAL_ADC_CHANNEL_16,
|
||||
HAL_ADC_CHANNEL_17,
|
||||
HAL_ADC_CHANNEL_18,
|
||||
HAL_ADC_CHANNEL_MAX
|
||||
} hal_adc_channel_t;
|
||||
|
||||
/**
|
||||
* @brief ADC sample time definitions
|
||||
*/
|
||||
typedef enum {
|
||||
HAL_ADC_SAMPLETIME_3CYCLES = 0,
|
||||
HAL_ADC_SAMPLETIME_15CYCLES,
|
||||
HAL_ADC_SAMPLETIME_28CYCLES,
|
||||
HAL_ADC_SAMPLETIME_56CYCLES,
|
||||
HAL_ADC_SAMPLETIME_84CYCLES,
|
||||
HAL_ADC_SAMPLETIME_112CYCLES,
|
||||
HAL_ADC_SAMPLETIME_144CYCLES,
|
||||
HAL_ADC_SAMPLETIME_480CYCLES
|
||||
} hal_adc_sampletime_t;
|
||||
|
||||
/**
|
||||
* @brief ADC channel configuration structure
|
||||
*/
|
||||
typedef struct {
|
||||
hal_adc_channel_t channel;
|
||||
hal_adc_sampletime_t sampletime;
|
||||
uint8_t rank;
|
||||
uint8_t enable;
|
||||
} hal_adc_channel_config_t;
|
||||
|
||||
/**
|
||||
* @brief ADC configuration structure
|
||||
*/
|
||||
typedef struct {
|
||||
hal_adc_instance_t instance;
|
||||
hal_adc_resolution_t resolution;
|
||||
uint8_t scan_conversion_mode;
|
||||
uint8_t continuous_conversion_mode;
|
||||
uint8_t discontinuous_conversion_mode;
|
||||
uint8_t discontinuous_number_of_conversions;
|
||||
uint8_t nbr_of_conversions;
|
||||
uint8_t channel_count;
|
||||
const hal_adc_channel_config_t* channels;
|
||||
uint32_t timeout;
|
||||
} hal_adc_config_t;
|
||||
|
||||
/**
|
||||
* @brief Initialize ADC hardware
|
||||
* @param config: ADC configuration structure
|
||||
* @retval HAL status code
|
||||
*/
|
||||
hal_ret_t hal_adc_init(const hal_adc_config_t *config);
|
||||
|
||||
/**
|
||||
* @brief Deinitialize ADC hardware
|
||||
* @param instance: ADC instance identifier
|
||||
* @retval HAL status code
|
||||
*/
|
||||
hal_ret_t hal_adc_deinit(hal_adc_instance_t instance);
|
||||
|
||||
/**
|
||||
* @brief Start ADC conversion
|
||||
* @param instance: ADC instance identifier
|
||||
* @retval HAL status code
|
||||
*/
|
||||
hal_ret_t hal_adc_start(hal_adc_instance_t instance);
|
||||
|
||||
/**
|
||||
* @brief Stop ADC conversion
|
||||
* @param instance: ADC instance identifier
|
||||
* @retval HAL status code
|
||||
*/
|
||||
hal_ret_t hal_adc_stop(hal_adc_instance_t instance);
|
||||
|
||||
/**
|
||||
* @brief Get ADC conversion value
|
||||
* @param instance: ADC instance identifier
|
||||
* @param channel: ADC channel
|
||||
* @param value: Pointer to store conversion value
|
||||
* @param timeout: Timeout in milliseconds
|
||||
* @retval HAL status code
|
||||
*/
|
||||
hal_ret_t hal_adc_get_value(hal_adc_instance_t instance, hal_adc_channel_t channel, uint16_t *value, uint32_t timeout);
|
||||
|
||||
/**
|
||||
* @brief Get multiple ADC conversion values
|
||||
* @param instance: ADC instance identifier
|
||||
* @param values: Pointer to store conversion values
|
||||
* @param length: Number of values to get
|
||||
* @param timeout: Timeout in milliseconds
|
||||
* @retval HAL status code
|
||||
*/
|
||||
hal_ret_t hal_adc_get_values(hal_adc_instance_t instance, uint16_t *values, uint8_t length, uint32_t timeout);
|
||||
|
||||
/**
|
||||
* @brief Configure ADC channel
|
||||
* @param instance: ADC instance identifier
|
||||
* @param config: ADC channel configuration structure
|
||||
* @retval HAL status code
|
||||
*/
|
||||
hal_ret_t hal_adc_configure_channel(hal_adc_instance_t instance, const hal_adc_channel_config_t *config);
|
||||
|
||||
/**
|
||||
* @brief Enable ADC channel
|
||||
* @param instance: ADC instance identifier
|
||||
* @param channel: ADC channel
|
||||
* @retval HAL status code
|
||||
*/
|
||||
hal_ret_t hal_adc_enable_channel(hal_adc_instance_t instance, hal_adc_channel_t channel);
|
||||
|
||||
/**
|
||||
* @brief Disable ADC channel
|
||||
* @param instance: ADC instance identifier
|
||||
* @param channel: ADC channel
|
||||
* @retval HAL status code
|
||||
*/
|
||||
hal_ret_t hal_adc_disable_channel(hal_adc_instance_t instance, hal_adc_channel_t channel);
|
||||
|
||||
#endif /* HAL_ADC_H */
|
||||
Reference in New Issue
Block a user