进一步迭代优化统一管理

This commit is contained in:
冯佳
2026-01-23 14:35:51 +08:00
parent 988cc7ad4a
commit 075e8299cf
36 changed files with 6146 additions and 1590 deletions

313
HAL/Src/hal_adc.c Normal file
View 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
}