进一步迭代优化统一管理
This commit is contained in:
313
HAL/Src/hal_adc.c
Normal file
313
HAL/Src/hal_adc.c
Normal file
@ -0,0 +1,313 @@
|
||||
/* USER CODE BEGIN Header */
|
||||
/**
|
||||
******************************************************************************
|
||||
* @file : hal_adc.c
|
||||
* @brief : ADC hardware abstraction layer source file
|
||||
******************************************************************************
|
||||
*/
|
||||
/* USER CODE END Header */
|
||||
|
||||
#include "hal.h"
|
||||
#include "hal_adc.h"
|
||||
|
||||
/**
|
||||
* @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) {
|
||||
if (config == NULL) {
|
||||
return HAL_INVALID_PARAM;
|
||||
}
|
||||
|
||||
if (config->instance >= HAL_ADC_INSTANCE_MAX) {
|
||||
return HAL_INVALID_PARAM;
|
||||
}
|
||||
|
||||
/* Call architecture specific ADC initialization */
|
||||
#if HAL_TARGET_ARCH == HAL_ARCH_STM32F1
|
||||
/* TODO: Implement STM32F1 ADC initialization */
|
||||
return HAL_OK;
|
||||
#elif HAL_TARGET_ARCH == HAL_ARCH_STM32F4
|
||||
/* TODO: Implement STM32F4 ADC initialization */
|
||||
return HAL_OK;
|
||||
#elif HAL_TARGET_ARCH == HAL_ARCH_STM32F7
|
||||
/* TODO: Implement STM32F7 ADC initialization */
|
||||
return HAL_OK;
|
||||
#elif HAL_TARGET_ARCH == HAL_ARCH_STM32L4
|
||||
/* TODO: Implement STM32L4 ADC initialization */
|
||||
return HAL_OK;
|
||||
#else
|
||||
#error "Unsupported HAL architecture"
|
||||
return HAL_ERROR;
|
||||
#endif
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Deinitialize ADC hardware
|
||||
* @param instance: ADC instance identifier
|
||||
* @retval HAL status code
|
||||
*/
|
||||
hal_ret_t hal_adc_deinit(hal_adc_instance_t instance) {
|
||||
if (instance >= HAL_ADC_INSTANCE_MAX) {
|
||||
return HAL_INVALID_PARAM;
|
||||
}
|
||||
|
||||
/* Call architecture specific ADC deinitialization */
|
||||
#if HAL_TARGET_ARCH == HAL_ARCH_STM32F1
|
||||
/* TODO: Implement STM32F1 ADC deinitialization */
|
||||
return HAL_OK;
|
||||
#elif HAL_TARGET_ARCH == HAL_ARCH_STM32F4
|
||||
/* TODO: Implement STM32F4 ADC deinitialization */
|
||||
return HAL_OK;
|
||||
#elif HAL_TARGET_ARCH == HAL_ARCH_STM32F7
|
||||
/* TODO: Implement STM32F7 ADC deinitialization */
|
||||
return HAL_OK;
|
||||
#elif HAL_TARGET_ARCH == HAL_ARCH_STM32L4
|
||||
/* TODO: Implement STM32L4 ADC deinitialization */
|
||||
return HAL_OK;
|
||||
#else
|
||||
#error "Unsupported HAL architecture"
|
||||
return HAL_ERROR;
|
||||
#endif
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Start ADC conversion
|
||||
* @param instance: ADC instance identifier
|
||||
* @retval HAL status code
|
||||
*/
|
||||
hal_ret_t hal_adc_start(hal_adc_instance_t instance) {
|
||||
if (instance >= HAL_ADC_INSTANCE_MAX) {
|
||||
return HAL_INVALID_PARAM;
|
||||
}
|
||||
|
||||
/* Call architecture specific ADC start implementation */
|
||||
#if HAL_TARGET_ARCH == HAL_ARCH_STM32F1
|
||||
/* TODO: Implement STM32F1 ADC start */
|
||||
return HAL_OK;
|
||||
#elif HAL_TARGET_ARCH == HAL_ARCH_STM32F4
|
||||
/* TODO: Implement STM32F4 ADC start */
|
||||
return HAL_OK;
|
||||
#elif HAL_TARGET_ARCH == HAL_ARCH_STM32F7
|
||||
/* TODO: Implement STM32F7 ADC start */
|
||||
return HAL_OK;
|
||||
#elif HAL_TARGET_ARCH == HAL_ARCH_STM32L4
|
||||
/* TODO: Implement STM32L4 ADC start */
|
||||
return HAL_OK;
|
||||
#else
|
||||
#error "Unsupported HAL architecture"
|
||||
return HAL_ERROR;
|
||||
#endif
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Stop ADC conversion
|
||||
* @param instance: ADC instance identifier
|
||||
* @retval HAL status code
|
||||
*/
|
||||
hal_ret_t hal_adc_stop(hal_adc_instance_t instance) {
|
||||
if (instance >= HAL_ADC_INSTANCE_MAX) {
|
||||
return HAL_INVALID_PARAM;
|
||||
}
|
||||
|
||||
/* Call architecture specific ADC stop implementation */
|
||||
#if HAL_TARGET_ARCH == HAL_ARCH_STM32F1
|
||||
/* TODO: Implement STM32F1 ADC stop */
|
||||
return HAL_OK;
|
||||
#elif HAL_TARGET_ARCH == HAL_ARCH_STM32F4
|
||||
/* TODO: Implement STM32F4 ADC stop */
|
||||
return HAL_OK;
|
||||
#elif HAL_TARGET_ARCH == HAL_ARCH_STM32F7
|
||||
/* TODO: Implement STM32F7 ADC stop */
|
||||
return HAL_OK;
|
||||
#elif HAL_TARGET_ARCH == HAL_ARCH_STM32L4
|
||||
/* TODO: Implement STM32L4 ADC stop */
|
||||
return HAL_OK;
|
||||
#else
|
||||
#error "Unsupported HAL architecture"
|
||||
return HAL_ERROR;
|
||||
#endif
|
||||
}
|
||||
|
||||
/**
|
||||
* @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) {
|
||||
if (value == NULL) {
|
||||
return HAL_INVALID_PARAM;
|
||||
}
|
||||
|
||||
if (instance >= HAL_ADC_INSTANCE_MAX || channel >= HAL_ADC_CHANNEL_MAX) {
|
||||
return HAL_INVALID_PARAM;
|
||||
}
|
||||
|
||||
/* Call architecture specific ADC get value implementation */
|
||||
#if HAL_TARGET_ARCH == HAL_ARCH_STM32F1
|
||||
/* TODO: Implement STM32F1 ADC get value */
|
||||
*value = 0;
|
||||
return HAL_OK;
|
||||
#elif HAL_TARGET_ARCH == HAL_ARCH_STM32F4
|
||||
/* TODO: Implement STM32F4 ADC get value */
|
||||
*value = 0;
|
||||
return HAL_OK;
|
||||
#elif HAL_TARGET_ARCH == HAL_ARCH_STM32F7
|
||||
/* TODO: Implement STM32F7 ADC get value */
|
||||
*value = 0;
|
||||
return HAL_OK;
|
||||
#elif HAL_TARGET_ARCH == HAL_ARCH_STM32L4
|
||||
/* TODO: Implement STM32L4 ADC get value */
|
||||
*value = 0;
|
||||
return HAL_OK;
|
||||
#else
|
||||
#error "Unsupported HAL architecture"
|
||||
return HAL_ERROR;
|
||||
#endif
|
||||
}
|
||||
|
||||
/**
|
||||
* @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) {
|
||||
if (values == NULL || length == 0) {
|
||||
return HAL_INVALID_PARAM;
|
||||
}
|
||||
|
||||
if (instance >= HAL_ADC_INSTANCE_MAX) {
|
||||
return HAL_INVALID_PARAM;
|
||||
}
|
||||
|
||||
/* Call architecture specific ADC get values implementation */
|
||||
#if HAL_TARGET_ARCH == HAL_ARCH_STM32F1
|
||||
/* TODO: Implement STM32F1 ADC get values */
|
||||
for (uint8_t i = 0; i < length; i++) {
|
||||
values[i] = 0;
|
||||
}
|
||||
return HAL_OK;
|
||||
#elif HAL_TARGET_ARCH == HAL_ARCH_STM32F4
|
||||
/* TODO: Implement STM32F4 ADC get values */
|
||||
for (uint8_t i = 0; i < length; i++) {
|
||||
values[i] = 0;
|
||||
}
|
||||
return HAL_OK;
|
||||
#elif HAL_TARGET_ARCH == HAL_ARCH_STM32F7
|
||||
/* TODO: Implement STM32F7 ADC get values */
|
||||
for (uint8_t i = 0; i < length; i++) {
|
||||
values[i] = 0;
|
||||
}
|
||||
return HAL_OK;
|
||||
#elif HAL_TARGET_ARCH == HAL_ARCH_STM32L4
|
||||
/* TODO: Implement STM32L4 ADC get values */
|
||||
for (uint8_t i = 0; i < length; i++) {
|
||||
values[i] = 0;
|
||||
}
|
||||
return HAL_OK;
|
||||
#else
|
||||
#error "Unsupported HAL architecture"
|
||||
return HAL_ERROR;
|
||||
#endif
|
||||
}
|
||||
|
||||
/**
|
||||
* @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) {
|
||||
if (config == NULL) {
|
||||
return HAL_INVALID_PARAM;
|
||||
}
|
||||
|
||||
if (instance >= HAL_ADC_INSTANCE_MAX || config->channel >= HAL_ADC_CHANNEL_MAX) {
|
||||
return HAL_INVALID_PARAM;
|
||||
}
|
||||
|
||||
/* Call architecture specific ADC channel configuration implementation */
|
||||
#if HAL_TARGET_ARCH == HAL_ARCH_STM32F1
|
||||
/* TODO: Implement STM32F1 ADC channel configuration */
|
||||
return HAL_OK;
|
||||
#elif HAL_TARGET_ARCH == HAL_ARCH_STM32F4
|
||||
/* TODO: Implement STM32F4 ADC channel configuration */
|
||||
return HAL_OK;
|
||||
#elif HAL_TARGET_ARCH == HAL_ARCH_STM32F7
|
||||
/* TODO: Implement STM32F7 ADC channel configuration */
|
||||
return HAL_OK;
|
||||
#elif HAL_TARGET_ARCH == HAL_ARCH_STM32L4
|
||||
/* TODO: Implement STM32L4 ADC channel configuration */
|
||||
return HAL_OK;
|
||||
#else
|
||||
#error "Unsupported HAL architecture"
|
||||
return HAL_ERROR;
|
||||
#endif
|
||||
}
|
||||
|
||||
/**
|
||||
* @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) {
|
||||
if (instance >= HAL_ADC_INSTANCE_MAX || channel >= HAL_ADC_CHANNEL_MAX) {
|
||||
return HAL_INVALID_PARAM;
|
||||
}
|
||||
|
||||
/* Call architecture specific ADC channel enable implementation */
|
||||
#if HAL_TARGET_ARCH == HAL_ARCH_STM32F1
|
||||
/* TODO: Implement STM32F1 ADC channel enable */
|
||||
return HAL_OK;
|
||||
#elif HAL_TARGET_ARCH == HAL_ARCH_STM32F4
|
||||
/* TODO: Implement STM32F4 ADC channel enable */
|
||||
return HAL_OK;
|
||||
#elif HAL_TARGET_ARCH == HAL_ARCH_STM32F7
|
||||
/* TODO: Implement STM32F7 ADC channel enable */
|
||||
return HAL_OK;
|
||||
#elif HAL_TARGET_ARCH == HAL_ARCH_STM32L4
|
||||
/* TODO: Implement STM32L4 ADC channel enable */
|
||||
return HAL_OK;
|
||||
#else
|
||||
#error "Unsupported HAL architecture"
|
||||
return HAL_ERROR;
|
||||
#endif
|
||||
}
|
||||
|
||||
/**
|
||||
* @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) {
|
||||
if (instance >= HAL_ADC_INSTANCE_MAX || channel >= HAL_ADC_CHANNEL_MAX) {
|
||||
return HAL_INVALID_PARAM;
|
||||
}
|
||||
|
||||
/* Call architecture specific ADC channel disable implementation */
|
||||
#if HAL_TARGET_ARCH == HAL_ARCH_STM32F1
|
||||
/* TODO: Implement STM32F1 ADC channel disable */
|
||||
return HAL_OK;
|
||||
#elif HAL_TARGET_ARCH == HAL_ARCH_STM32F4
|
||||
/* TODO: Implement STM32F4 ADC channel disable */
|
||||
return HAL_OK;
|
||||
#elif HAL_TARGET_ARCH == HAL_ARCH_STM32F7
|
||||
/* TODO: Implement STM32F7 ADC channel disable */
|
||||
return HAL_OK;
|
||||
#elif HAL_TARGET_ARCH == HAL_ARCH_STM32L4
|
||||
/* TODO: Implement STM32L4 ADC channel disable */
|
||||
return HAL_OK;
|
||||
#else
|
||||
#error "Unsupported HAL architecture"
|
||||
return HAL_ERROR;
|
||||
#endif
|
||||
}
|
||||
Reference in New Issue
Block a user