diff options
| author | Man, Jianting (Meco) <[email protected]> | 2022-04-22 10:26:41 -0400 |
|---|---|---|
| committer | GitHub <[email protected]> | 2022-04-22 22:26:41 +0800 |
| commit | c2a0995545a0b51f9e69e6e4f4681b71d9e52a6d (patch) | |
| tree | 1bd01809956d0415cb447ef45660fbc9522323f2 /bsp | |
| parent | b06228ec7e20232c268ff47f1f3503db31f116a5 (diff) | |
[adc] 支持adc框架获取BSP的ADC分辨率 (#5853)
Diffstat (limited to 'bsp')
| -rw-r--r-- | bsp/stm32/libraries/HAL_Drivers/drv_adc.c | 28 |
1 files changed, 26 insertions, 2 deletions
diff --git a/bsp/stm32/libraries/HAL_Drivers/drv_adc.c b/bsp/stm32/libraries/HAL_Drivers/drv_adc.c index e76edc8816..dcff684461 100644 --- a/bsp/stm32/libraries/HAL_Drivers/drv_adc.c +++ b/bsp/stm32/libraries/HAL_Drivers/drv_adc.c @@ -70,6 +70,29 @@ static rt_err_t stm32_adc_enabled(struct rt_adc_device *device, rt_uint32_t chan return RT_EOK; } +static rt_uint8_t stm32_adc_get_resolution(struct rt_adc_device *device) +{ + ADC_HandleTypeDef *stm32_adc_handler; + + RT_ASSERT(device != RT_NULL); + + stm32_adc_handler = device->parent.user_data; + + switch(stm32_adc_handler->Init.Resolution) + { + case ADC_RESOLUTION_12B: + return 12; + case ADC_RESOLUTION_10B: + return 10; + case ADC_RESOLUTION_8B: + return 8; + case ADC_RESOLUTION_6B: + return 6; + default: + return 0; + } +} + static rt_uint32_t stm32_adc_get_channel(rt_uint32_t channel) { rt_uint32_t stm32_channel = 0; @@ -147,7 +170,7 @@ static rt_uint32_t stm32_adc_get_channel(rt_uint32_t channel) return stm32_channel; } -static rt_err_t stm32_get_adc_value(struct rt_adc_device *device, rt_uint32_t channel, rt_uint32_t *value) +static rt_err_t stm32_adc_get_value(struct rt_adc_device *device, rt_uint32_t channel, rt_uint32_t *value) { ADC_ChannelConfTypeDef ADC_ChanConf; ADC_HandleTypeDef *stm32_adc_handler; @@ -260,7 +283,8 @@ static rt_err_t stm32_get_adc_value(struct rt_adc_device *device, rt_uint32_t ch static const struct rt_adc_ops stm_adc_ops = { .enabled = stm32_adc_enabled, - .convert = stm32_get_adc_value, + .convert = stm32_adc_get_value, + .get_resolution = stm32_adc_get_resolution, }; static int stm32_adc_init(void) |
