ADC
简介
MCU 片上集成了 12 位逐次逼近式模数转换器模块(ADC),可以采样来自于 16 个外部通道和 2 个内部通道和一个电池电压(VBAT)通道的模拟信号。这 19 个 ADC 采样通道都支持多种运行模式,采样转换后,转换结果可以按照最低有效位对齐或最高效位对齐的方式保存在相应的数据寄存器中。片上的硬件过采样机制可以通过减少来自 MCU 的相关计算负担来提高性能。
主要特征


具体ADC原理,支持的功能可详看用户手册266页
代码实现:单通道ADC采样(查询模式)
对于初学者来说,最简单的ADC使用方式是软件触发 + 查询模式。就像是你每隔一段时间去问ADC:“你转换好了吗?”,如果好了就读取数据。
下面我们以使用 ADC0 的 通道10 (PC0引脚) 为例,演示如何读取电压值。
1. 初始化步骤详解
配置ADC通常需要以下几个步骤,每一步都必不可少:
- 开启时钟:GPIO端口的时钟和ADC外设的时钟都要打开。
- 配置GPIO:将采集引脚配置为模拟输入模式(
GPIO_MODE_ANALOG),这是ADC专用的模式,防止数字信号干扰。 - 配置ADC时钟:ADC需要一个特定的工作时钟,GD32F470的ADC时钟是挂载在APB2总线上的,需要分频,保证ADC时钟频率在规格范围内(通常不超过40MHz,建议更低以保证精度)。
- 配置ADC参数:
- 工作模式:独立模式(只用一个ADC)。
- 数据对齐:右对齐(比如12位数据,低12位有效,方便直接读取数值)。
- 分辨率:12位(0~4095)。
- 配置规则通道:指定我们要读的是哪个通道,以及采样的顺序和采样时间。
- 校准:上电后进行一次自校准,消除误差。
2. 初始化代码
1 | |
3. 读取数据的函数
因为我们配置的是单次模式,所以每次读取都需要手动触发一次转换。
1 | |
4. 主函数调用
1 | |
ADC库函数
| 库函数名称 | 库函数描述 |
|---|---|
| adc_deinit | 复位 ADCx 外设 |
| adc_clock_config | ADC 时钟配置 |
| adc_special_function_config | 使能或禁能 ADC 特殊功能 |
| adc_data_alignment_config | 配置 ADC 数据对齐方式 |
| adc_enable | 使能 ADCx 外设 |
| adc_disable | 禁能 ADCx 外设 |
| adc_calibration_enable | ADCx 校准复位 |
| adc_channel_16_to_18 | 配置内部温度传感器采集通道,Vrefint 电压采集通道通道,VBAT 电压采集通道 |
| adc_resolution_config | 配置 ADCx 分辨率 |
| adc_oversample_mode_config | 配置 ADCx 过采样模式 |
| adc_oversample_mode_enable | 使能 ADCx 过采样 |
| adc_oversample_mode_disable | 禁能 ADCx 过采样 |
| adc_dma_mode_enable | ADCx DMA 请求使能 |
| adc_dma_mode_disable | ADCx DMA 请求禁能 |
| adc_dma_request_after_last_disable | DMA 机制在 DMA 控制器的传输结束信号之后失能 |
| adc_discontinuous_mode_config | 配置 ADC 间断模式 |
| adc_channel_length_config | 配置规则通道组或注入通道组的长度 |
| adc_regular_channel_config | 配置 ADC 规则通道组 |
| adc_inserted_channel_config | 配置 ADC 注入通道组 |
| adc_inserted_channel_offset_config | 配置 ADC 注入通道组数据偏移值 |
| adc_external_trigger_source_config | 配置 ADC 外部触发源 |
| adc_external_trigger_config | 配置 ADC 外部触发 |
| adc_software_trigger_enable | ADC 软件触发使能 |
| adc_end_of_conversion_config | 配置规则组转换结束模式 |
| adc_regular_data_read | 读 ADC 规则组数据寄存器 |
| adc_inserted_data_read | 读 ADC 注入组数据寄存器 |
| adc_watchdog_single_channel_disable | 配置 ADC 模拟看门狗单通道无效 |
| adc_watchdog_group_channel_enable | 配置 ADC 模拟看门狗在通道组有效 |
| adc_watchdog_disable | ADC 模拟看门狗禁能 |
| adc_watchdog_threshold_config | 配置 ADC 模拟看门狗阈值 |
| adc_flag_get | 获取 ADC 标志位 |
| adc_flag_clear | 清除 ADC 标志位 |
| adc_regular_software_startconv_flag_get | 获取 ADC 规则通道组软件触发转换开始位 |
| adc_inserted_software_startconv_flag_get | 获取 ADC 注入通道组软件触发转换开始位 |
| adc_interrupt_flag_get | 获取 ADC 中断标志位 |
| adc_interrupt_flag_clear | 清除 ADC 中断标志位 |
| adc_interrupt_enable | ADC 中断使能 |
| adc_interrupt_disable | ADC 中断禁能 |
| adc_sync_mode_config | ADC 同步模式配置 |
| adc_sync_delay_config | 配置 ADC 同步模式两次采样之间的延时 |
| adc_sync_dma_request_after_last_enable | 当 SYNCDMA 不为 00 时,根据 SYNCDMA 位来产生 DMA 请求 |
| adc_sync_dma_request_after_last_disable | 当检测到来自 DMA 控制器的传输结束信号后,DMA 机制失能 |
| adc_sync_regular_data_read | ADC 同步模式规则数据读取 |
1. adc_deinit
- 函数原型:
void adc_deinit(uint32_t adc_periph); - 功能描述:复位ADCx外设。
- 先决条件:无
- 被调用函数:
rcu_periph_reset_enable、rcu_periph_reset_disable - 输入参数:
adc_periph:ADC外设,可选值为ADC0、ADC1、ADC2
- 输出参数:无
- 返回值:无
2. adc_clock_config
- 函数原型:
void adc_clock_config(uint32_t pscaler); - 功能描述:配置ADC时钟。
- 先决条件:无
- 被调用函数:无
- 输入参数:
pscaler:预分频器,可选值:ADC_ADCCK_PCLK2_DIV2:PCLK2时钟2分频ADC_ADCCK_PCLK2_DIV4:PCLK2时钟4分频ADC_ADCCK_PCLK2_DIV6:PCLK2时钟6分频ADC_ADCCK_PCLK2_DIV8:PCLK2时钟8分频ADC_ADCCK_HCLK_DIV4:HCLK时钟4分频ADC_ADCCK_HCLK_DIV6:HCLK时钟6分频ADC_ADCCK_HCLK_DIV8:HCLK时钟8分频ADC_ADCCK_HCLK_DIV10:HCLK时钟10分频ADC_ADCCK_HCLK_DIV12:HCLK时钟12分频ADC_ADCCK_HCLK_DIV16:HCLK时钟16分频ADC_ADCCK_HCLK_DIV20:HCLK时钟20分频
- 输出参数:无
- 返回值:无
3. adc_special_function_config
- 函数原型:
void adc_special_function_config(uint32_t adc_periph, uint32_t function, ControlStatus newvalue); - 功能描述:使能或禁能ADC特殊功能。
- 先决条件:无
- 被调用函数:无
- 输入参数:
adc_periph:ADC外设,可选值为ADC0、ADC1、ADC2function:功能配置,可选值:ADC_SCAN_MODE:扫描模式选择ADC_INSERTED_AUTO:注入红自动转换ADC_CONTINUOUS_MODE:连续模式选择
newvalue:功能使能禁能,可选值:ENABLE:使能DISABLE:禁能
- 输出参数:无
- 返回值:无
4. adc_data_alignment_config
- 函数原型:
void adc_data_alignment_config(uint32_t adc_periph, uint32_t data_alignment); - 功能描述:配置ADC数据对齐方式。
- 先决条件:无
- 被调用函数:无
- 输入参数:
adc_periph:ADC外设,可选值为ADC0、ADC1、ADC2data_alignment:数据对齐方式选择,可选值:ADC_DATA_ALIGN_RIGHT:LSB对齐ADC_DATA_ALIGN_LEFT:MSB对齐
- 输出参数:无
- 返回值:无
5. adc_enable
- 函数原型:
void adc_enable(uint32_t adc_periph); - 功能描述:使能ADCx外设。
- 先决条件:无
- 被调用函数:无
- 输入参数:
adc_periph:ADC外设,可选值为ADC0、ADC1、ADC2
- 输出参数:无
- 返回值:无
6. adc_disable
- 函数原型:
void adc_disable(uint32_t adc_periph); - 功能描述:禁能ADCx外设。
- 先决条件:无
- 被调用函数:无
- 输入参数:
adc_periph:ADC外设,可选值为ADC0、ADC1、ADC2
- 输出参数:无
- 返回值:无
7. adc_calibration_enable
- 函数原型:
void adc_calibration_enable(uint32_t adc_periph); - 功能描述:ADCx校准复位。
- 先决条件:无
- 被调用函数:无
- 输入参数:
adc_periph:ADC外设,可选值为ADC0、ADC1、ADC2
- 输出参数:无
- 返回值:无
8. adc_channel_16_to_18
- 函数原型:
void adc_channel_16_to_18(uint32_t function, ControlStatus newvalue); - 功能描述:配置内部温度传感器采集通道,Vrefint电压采集通道,VBAT电压采集通道。
- 先决条件:无
- 被调用函数:无
- 输入参数:
function:选择被配置的内部通道,可选值:ADC_TEMP_SENSOR_CHANNEL:选择内部通道16(温度传感器)ADC_VREFINT_CHANNEL:选择内部通道17(Vrefint电压)ADC_VBAT_CHANNEL:选择内部通道18(VBAT电压)
newvalue:功能使能禁能,可选值:ENABLE:使能DISABLE:禁能
- 输出参数:无
- 返回值:无
9. adc_resolution_config
- 函数原型:
void adc_resolution_config(uint32_t adc_periph, uint32_t resolution); - 功能描述:配置ADCx分辨率。
- 先决条件:无
- 被调用函数:无
- 输入参数:
adc_periph:ADC外设,可选值为ADC0、ADC1、ADC2resolution:ADC分辨率,可选值:ADC_RESOLUTION_12B:12位分辨率ADC_RESOLUTION_10B:10位分辨率ADC_RESOLUTION_8B:8位分辨率ADC_RESOLUTION_6B:6位分辨率
- 输出参数:无
- 返回值:无
10. adc_oversample_mode_config
- 函数原型:
void adc_oversample_mode_config(uint32_t adc_periph, uint32_t mode, uint16_t shift); - 功能描述:配置ADCx过采样模式。
- 先决条件:无
- 被调用函数:无
- 输入参数:
adc_periph:ADC外设,可选值为ADC0、ADC1、ADC2mode:ADC过采样模式,可选值:ADC_OVERSAMPLING_MODE_2X:2倍过采样ADC_OVERSAMPLING_MODE_4X:4倍过采样ADC_OVERSAMPLING_MODE_8X:8倍过采样ADC_OVERSAMPLING_MODE_16X:16倍过采样ADC_OVERSAMPLING_MODE_32X:32倍过采样ADC_OVERSAMPLING_MODE_64X:64倍过采样ADC_OVERSAMPLING_MODE_128X:128倍过采样ADC_OVERSAMPLING_MODE_256X:256倍过采样
shift:ADC过采样移位,可选值:ADC_OVERSAMPLING_SHIFT_1B:1位ADC_OVERSAMPLING_SHIFT_2B:2位ADC_OVERSAMPLING_SHIFT_3B:3位ADC_OVERSAMPLING_SHIFT_4B:4位ADC_OVERSAMPLING_SHIFT_5B:5位ADC_OVERSAMPLING_SHIFT_6B:6位ADC_OVERSAMPLING_SHIFT_7B:7位ADC_OVERSAMPLING_SHIFT_8B:8位
- 输出参数:无
- 返回值:无
11. adc_oversample_mode_enable
- 函数原型:
void adc_oversample_mode_enable(uint32_t adc_periph); - 功能描述:使能ADCx过采样。
- 先决条件:无
- 被调用函数:无
- 输入参数:
adc_periph:ADC外设,可选值为ADC0、ADC1、ADC2
- 输出参数:无
- 返回值:无
12. adc_oversample_mode_disable
- 函数原型:
void adc_oversample_mode_disable(uint32_t adc_periph); - 功能描述:禁能ADCx过采样。
- 先决条件:无
- 被调用函数:无
- 输入参数:
adc_periph:ADC外设,可选值为ADC0、ADC1、ADC2
- 输出参数:无
- 返回值:无
13. adc_dma_mode_enable
- 函数原型:
void adc_dma_mode_enable(uint32_t adc_periph); - 功能描述:ADCx DMA请求使能。
- 先决条件:无
- 被调用函数:无
- 输入参数:
adc_periph:ADC外设,可选值为ADC0、ADC1、ADC2
- 输出参数:无
- 返回值:无
14. adc_dma_mode_disable
- 函数原型:
void adc_dma_mode_disable(uint32_t adc_periph); - 功能描述:ADCx DMA请求禁能。
- 先决条件:无
- 被调用函数:无
- 输入参数:
adc_periph:ADC外设,可选值为ADC0、ADC1、ADC2
- 输出参数:无
- 返回值:无
15. adc_dma_request_after_last_enable
- 函数原型:
void adc_dma_request_after_last_enable(uint32_t adc_periph); - 功能描述:当DMA=1时,在每个规则通道转换结束后提出一个DMA请求。
- 先决条件:无
- 被调用函数:无
- 输入参数:
adc_periph:ADC外设,可选值为ADC0、ADC1、ADC2
- 输出参数:无
- 返回值:无
16. adc_dma_request_after_last_disable
- 函数原型:
void adc_dma_request_after_last_disable(uint32_t adc_periph); - 功能描述:DMA机制在DMA控制器的传输结束信号之后失能。
- 先决条件:无
- 被调用函数:无
- 输入参数:
adc_periph:ADC外设,可选值为ADC0、ADC1、ADC2
- 输出参数:无
- 返回值:无
17. adc_discontinuous_mode_config
- 函数原型:
void adc_discontinuous_mode_config(uint32_t adc_periph, uint8_t adc_channel_group, uint8_t length); - 功能描述:配置ADC间断模式。
- 先决条件:无
- 被调用函数:无
- 输入参数:
adc_periph:ADC外设,可选值为ADC0、ADC1、ADC2adc_channel_group:通道组选择,可选值:ADC_REGULAR_CHANNEL:规则通道组ADC_INSERTED_CHANNEL:注入通道组
length:间断模式下的转换数目,规则通道组取值为1-8,注入通道组取值无意义
- 输出参数:无
- 返回值:无
18. adc_channel_length_config
- 函数原型:
void adc_channel_length_config(uint32_t adc_periph, uint8_t adc_channel_group, uint8_t length); - 功能描述:配置规则通道组或注入通道组的长度。
- 先决条件:无
- 被调用函数:无
- 输入参数:
adc_periph:ADC外设,可选值为ADC0、ADC1、ADC2adc_channel_group:通道组选择,可选值:ADC_REGULAR_CHANNEL:规则通道组ADC_INSERTED_CHANNEL:注入通道组
length:通道长度,规则通道组为1-16,注入通道组为1-4
- 输出参数:无
- 返回值:无
19. adc_regular_channel_config
- 函数原型:
void adc_regular_channel_config(uint32_t adc_periph, uint8_t rank, uint8_t adc_channel, uint32_t sample_time); - 功能描述:配置ADC规则通道组。
- 先决条件:无
- 被调用函数:无
- 输入参数:
adc_periph:ADC外设,可选值为ADC0、ADC1、ADC2rank:规则通道序列,取值范围0-15adc_channel:ADC通道选择,通道x(x=0-18),只有ADC0可使用x=16,18sample_time:采样时间,可选值:ADC_SAMPLETIME_3CYCLE:3周期ADC_SAMPLETIME_15CYCLES:15周期ADC_SAMPLETIME_28CYCLES:28周期ADC_SAMPLETIME_56CYCLES:56周期ADC_SAMPLETIME_84CYCLES:84周期ADC_SAMPLETIME_112CYCLES:112周期ADC_SAMPLETIME_144CYCLES:144周期ADC_SAMPLETIME_480CYCLES:480周期
- 输出参数:无
- 返回值:无
20. adc_inserted_channel_config
- 函数原型:
void adc_inserted_channel_config(uint32_t adc_periph, uint8_t rank, uint8_t adc_channel, uint32_t sample_time); - 功能描述:配置ADC注入通道组。
- 先决条件:无
- 被调用函数:无
- 输入参数:
adc_periph:ADC外设,可选值为ADC0、ADC1、ADC2rank:注入通道序列,取值范围0-3adc_channel:ADC通道选择,通道x(x=0-18),只有ADC0可使用x=16,18sample_time:采样时间,可选值:ADC_SAMPLETIME_3CYCLE:3周期ADC_SAMPLETIME_15CYCLES:15周期ADC_SAMPLETIME_28CYCLES:28周期ADC_SAMPLETIME_56CYCLES:56周期ADC_SAMPLETIME_84CYCLES:84周期ADC_SAMPLETIME_112CYCLES:112周期ADC_SAMPLETIME_144CYCLES:144周期ADC_SAMPLETIME_480CYCLES:480周期
- 输出参数:无
- 返回值:无
21. adc_inserted_channel_offset_config
- 函数原型:
void adc_inserted_channel_offset_config(uint32_t adc_periph, uint8_t inserted_channel, uint16_t offset); - 功能描述:配置ADC注入通道组数据偏移值。
- 先决条件:无
- 被调用函数:无
- 输入参数:
adc_periph:ADC外设,可选值为ADC0、ADC1、ADC2inserted_channel:注入通道选择,可选值ADC_INSERTED_CHANNEL_0、ADC_INSERTED_CHANNEL_1、ADC_INSERTED_CHANNEL_2、ADC_INSERTED_CHANNEL_3(x=0,1,2,3)offset:数据偏移值,取值范围0-0xFF
- 输出参数:无
- 返回值:无
22. adc_external_trigger_source_config
- 函数原型:
void adc_external_trigger_source_config(uint32_t adc_periph, uint8_t adc_channel_group, uint32_t trigger_source); - 功能描述:配置ADC外部触发源。
- 先决条件:无
- 被调用函数:无
- 输入参数:
adc_periph:ADC外设,可选值为ADC0、ADC1、ADC2adc_channel_group:通道组选择,可选值:ADC_REGULAR_CHANNEL:规则通道组ADC_INSERTED_CHANNEL:注入通道组
trigger_source:外部触发源,可选值:ADC_EXT_TRG_TMR1_CC1:TMR1_CH1事件(规则组)ADC_EXT_TRG_TMR1_CC2:TMR1_CH2事件(规则组)ADC_EXT_TRG_TMR1_CC3:TMR1_CH3事件(规则组)ADC_EXT_TRG_TMR2_CC2:TMR2_CH2事件(规则组)ADC_EXT_TRG_TMR2_CC3:TMR2_CH3事件(规则组)ADC_EXT_TRG_TMR2_CC4:TMR2_CH4事件(规则组)ADC_EXT_TRG_TMR3_CC1:TMR3_CH1事件(规则组)ADC_EXT_TRG_TMR3_TRGO:TMR3_TRGO事件(规则组)ADC_EXT_TRG_TMR4_CC4:TMR4_CH4事件(规则组)ADC_EXT_TRG_TMR5_CC1:TMR5_CH1事件(规则组)ADC_EXT_TRG_TMR5_CC2:TMR5_CH2事件(规则组)ADC_EXT_TRG_TMR5_CC3:TMR5_CH3事件(规则组)ADC_EXT_TRG_TMR8_CC1:TMR8_CH1事件(规则组)ADC_EXT_TRG_TMR8_TRGO:TMR8_TRGO事件(规则组)ADC_EXT_TRG_EINT11:EINT线11事件(规则组)ADC_EXT_TRG_SWSTART:软件触发(规则组)ADC_EXT_TRG_TMR1_CC4:TMR1_CH4事件(注入组)ADC_EXT_TRG_TMR1_TRGO:TMR1_TRGO事件(注入组)ADC_EXT_TRG_TMR2_CC1:TMR2_CH1事件(注入组)ADC_EXT_TRG_TMR2_TRGO:TMR2_TRGO事件(注入组)ADC_EXT_TRG_TMR3_CC2:TMR3_CH2事件(注入组)ADC_EXT_TRG_TMR3_CC4:TMR3_CH4事件(注入组)ADC_EXT_TRG_TMR4_CC1:TMR4_CH1事件(注入组)ADC_EXT_TRG_TMR4_CC2:TMR4_CH2事件(注入组)ADC_EXT_TRG_TMR4_CC3:TMR4_CH3事件(注入组)ADC_EXT_TRG_TMR5_TRGO:TMR5_TRGO事件(注入组)ADC_EXT_TRG_TMR8_CC2:TMR8_CH2事件(注入组)ADC_EXT_TRG_TMR8_CC3:TMR8_CH3事件(注入组)ADC_EXT_TRG_TMR8_CC4:TMR8_CH4事件(注入组)ADC_EXT_TRG_EINT15:EINT线15事件(注入组)ADC_EXT_TRG_SWSTART:软件触发(注入组)
- 输出参数:无
- 返回值:无
23. adc_external_trigger_config
- 函数原型:
void adc_external_trigger_config(uint32_t adc_periph, uint8_t adc_channel_group, uint32_t trigger_mode); - 功能描述:配置ADC外部触发。
- 先决条件:无
- 被调用函数:无
- 输入参数:
adc_periph:ADC外设,可选值为ADC0、ADC1、ADC2adc_channel_group:通道组选择,可选值:ADC_REGULAR_CHANNEL:规则通道组ADC_INSERTED_CHANNEL:注入通道组
trigger_mode:通道使能/触发模式,可选值:EXTERNAL_TRIGGER_DISABLE:外部触发禁能EXTERNAL_TRIGGER_RISING:上升沿触发EXTERNAL_TRIGGER_FALLING:下降沿触发EXTERNAL_TRIGGER_BOTH_EDGES:双边沿触发
- 输出参数:无
- 返回值:无
24. adc_software_trigger_enable
- 函数原型:
void adc_software_trigger_enable(uint32_t adc_periph, uint8_t adc_channel_group); - 功能描述:ADC软件触发使能。
- 先决条件:无
- 被调用函数:无
- 输入参数:
adc_periph:ADC外设,可选值为ADC0、ADC1、ADC2adc_channel_group:通道组选择,可选值:ADC_REGULAR_CHANNEL:规则通道组ADC_INSERTED_CHANNEL:注入通道组
- 输出参数:无
- 返回值:无
25. adc_end_of_conversion_config
- 函数原型:
void adc_end_of_conversion_config(uint32_t adc_periph, uint8_t end_selection); - 功能描述:配置规则组转换结束模式。
- 先决条件:无
- 被调用函数:无
- 输入参数:
adc_periph:ADC外设,可选值为ADC0、ADC1、ADC2end_selection:通道组选择,可选值:ADC_EOC_SET_SEQUENCE:只有在规则转换序列转换结束时,才将EOC置1。如果不设置DMA=1,则溢出检测失能ADC_EOC_SET_CONVERSION:在每个规则转换结束时,将EOC置1。溢出检测自动使能
- 输出参数:无
- 返回值:无
26. adc_regular_data_read
- 函数原型:
uint16_t adc_regular_data_read(uint32_t adc_periph); - 功能描述:读ADC规则组数据寄存器。
- 先决条件:无
- 被调用函数:无
- 输入参数:
adc_periph:ADC外设,可选值为ADC0、ADC1、ADC2
- 输出参数:无
- 返回值:
uint16_t,ADC转换值(0x0~0xFFF)
27. adc_inserted_data_read
- 函数原型:
uint16_t adc_inserted_data_read(uint32_t adc_periph, uint8_t inserted_channel); - 功能描述:读ADC注入组数据寄存器。
- 先决条件:无
- 被调用函数:无
- 输入参数:
adc_periph:ADC外设,可选值为ADC0、ADC1、ADC2inserted_channel:注入通道选择,可选值ADC_INSERTED_CHANNEL_0、ADC_INSERTED_CHANNEL_1、ADC_INSERTED_CHANNEL_2、ADC_INSERTED_CHANNEL_3(x=0,1,2,3)
- 输出参数:无
- 返回值:
uint16_t,ADC转换值(0x0~0xFFF)
28. adc_watchdog_single_channel_disable
- 函数原型:
void adc_watchdog_single_channel_disable(uint32_t adc_periph); - 功能描述:配置ADC模拟看门狗单通道无效。
- 先决条件:无
- 被调用函数:无
- 输入参数:
adc_periph:ADC外设,可选值为ADC0、ADC1、ADC2
- 输出参数:无
- 返回值:无
29. adc_watchdog_single_channel_enable
- 函数原型:
void adc_watchdog_single_channel_enable(uint32_t adc_periph, uint8_t adc_channel); - 功能描述:配置ADC模拟看门狗单通道有效。
- 先决条件:无
- 被调用函数:无
- 输入参数:
adc_periph:ADC外设,可选值为ADC0、ADC1、ADC2adc_channel:选择ADC通道,通道x(x=0-17),只有ADC0可使用x=16和17
- 输出参数:无
- 返回值:无
30. adc_watchdog_group_channel_enable
- 函数原型:
void adc_watchdog_group_channel_enable(uint32_t adc_periph, uint8_t adc_channel_group); - 功能描述:配置ADC模拟看门狗在通道组有效。
- 先决条件:无
- 被调用函数:无
- 输入参数:
adc_periph:ADC外设,可选值为ADC0、ADC1、ADC2adc_channel_group:通道组使能看门狗,可选值:ADC_REGULAR_CHANNEL:规则通道组ADC_INSERTED_CHANNEL:注入通道组ADC_REGULAR_INSERTED_CHANNEL:规则和注入通道组
- 输出参数:无
- 返回值:无
31. adc_watchdog_disable
- 函数原型:
void adc_watchdog_disable(uint32_t adc_periph); - 功能描述:ADC模拟看门狗禁能。
- 先决条件:无
- 被调用函数:无
- 输入参数:
adc_periph:ADC外设,可选值为ADC0、ADC1、ADC2
- 输出参数:无
- 返回值:无
32. adc_watchdog_threshold_config
- 函数原型:
void adc_watchdog_threshold_config(uint32_t adc_periph, uint16_t low_threshold, uint16_t high_threshold); - 功能描述:配置ADC模拟看门狗阈值。
- 先决条件:无
- 被调用函数:无
- 输入参数:
adc_periph:ADC外设,可选值为ADC0、ADC1、ADC2low_threshold:低阈值(0x0~0xFFF)high_threshold:高阈值(0x0~0xFFF)
- 输出参数:无
- 返回值:无
33. adc_flag_get
- 函数原型:
FlagStatus adc_flag_get(uint32_t adc_periph, uint32_t adc_flag); - 功能描述:获取ADC标志位。
- 先决条件:无
- 被调用函数:无
- 输入参数:
adc_periph:ADC外设,可选值为ADC0、ADC1、ADC2adc_flag:ADC标志位,可选值:ADC_FLAG_WDE:模拟看门狗事件标志位ADC_FLAG_EOC:组转换结束标志位ADC_FLAG_EOIC:注入通道组转换结束标志位ADC_FLAG_STRC:通道转换开始标志位ADC_FLAG_STIC:注入通道转换开始标志位ADC_FLAG_OVR:溢出标志位
- 输出参数:无
- 返回值:
FlagStatus,SET或RESET
34. adc_flag_clear
- 函数原型:
void adc_flag_clear(uint32_t adc_periph, uint32_t adc_flag); - 功能描述:清除ADC标志位。
- 先决条件:无
- 被调用函数:无
- 输入参数:
adc_periph:ADC外设,可选值为ADC0、ADC1、ADC2adc_flag:ADC标志位,可选值:ADC_FLAG_WDE:模拟看门狗事件标志位ADC_FLAG_EOC:组转换结束标志位ADC_FLAG_EOIC:注入通道组转换结束标志位ADC_FLAG_STRC:通道转换开始标志位ADC_FLAG_STIC:注入通道转换开始标志位ADC_FLAG_OVR:溢出标志位
- 输出参数:无
- 返回值:无
35. adc_regular_software_startconv_flag_get
- 函数原型:
FlagStatus adc_regular_software_startconv_flag_get(uint32_t adc_periph); - 功能描述:获取ADC规则通道组软件触发转换开始位。
- 先决条件:无
- 被调用函数:无
- 输入参数:
adc_periph:ADC外设,可选值为ADC0、ADC1、ADC2
- 输出参数:无
- 返回值:
FlagStatus,SET或RESET
36. adc_inserted_software_startconv_flag_get
- 函数原型:
FlagStatus adc_inserted_software_startconv_flag_get(uint32_t adc_periph); - 功能描述:获取ADC注入通道组软件触发转换开始位。
- 先决条件:无
- 被调用函数:无
- 输入参数:
adc_periph:ADC外设,可选值为ADC0、ADC1、ADC2
- 输出参数:无
- 返回值:
FlagStatus,SET或RESET
37. adc_interrupt_flag_get
- 函数原型:
FlagStatus adc_interrupt_flag_get(uint32_t adc_periph, uint32_t adc_interrupt); - 功能描述:获取ADC中断标志位。
- 先决条件:无
- 被调用函数:无
- 输入参数:
adc_periph:ADC外设,可选值为ADC0、ADC1、ADC2adc_interrupt:ADC中断标志位,可选值:ADC_INT_WDE:模拟看门狗中断标志位ADC_INT_EOC:组转换结束中断标志位ADC_INT_EOIC:注入通道组转换结束中断标志位ADC_INT_OVR:溢出中断标志位
- 输出参数:无
- 返回值:
FlagStatus,SET或RESET
38. adc_interrupt_flag_clear
- 函数原型:
void adc_interrupt_flag_clear(uint32_t adc_periph, uint32_t adc_interrupt); - 功能描述:清除ADC中断标志位。
- 先决条件:无
- 被调用函数:无
- 输入参数:
adc_periph:ADC外设,可选值为ADC0、ADC1、ADC2adc_interrupt:ADC中断标志位,可选值:ADC_INT_WDE:模拟看门狗中断标志位ADC_INT_EOC:组转换结束中断标志位ADC_INT_EOIC:注入通道组转换结束中断标志位ADC_INT_OVR:溢出中断标志位
- 输出参数:无
- 返回值:无
39. adc_interrupt_enable
- 函数原型:
void adc_interrupt_enable(uint32_t adc_periph, uint32_t adc_interrupt); - 功能描述:ADC中断使能。
- 先决条件:无
- 被调用函数:无
- 输入参数:
adc_periph:ADC外设,可选值为ADC0、ADC1、ADC2adc_interrupt:ADC中断标志位,可选值:ADC_INT_WDE:模拟看门狗中断标志位ADC_INT_EOC:组转换结束中断标志位ADC_INT_EOIC:注入通道组转换结束中断标志位ADC_INT_OVR:溢出中断标志位
- 输出参数:无
- 返回值:无
40. adc_interrupt_disable
- 函数原型:
void adc_interrupt_disable(uint32_t adc_periph, uint32_t adc_interrupt); - 功能描述:ADC中断禁能。
- 先决条件:无
- 被调用函数:无
- 输入参数:
adc_periph:ADC外设,可选值为ADC0、ADC1、ADC2adc_interrupt:ADC中断标志位,可选值:ADC_INT_WDE:模拟看门狗中断标志位ADC_INT_EOC:组转换结束中断标志位ADC_INT_EOIC:注入通道组转换结束中断标志位ADC_INT_OVR:溢出中断标志位
- 输出参数:无
- 返回值:无
41. adc_sync_mode_config
- 函数原型:
void adc_sync_mode_config(uint32_t sync_mode); - 功能描述:ADC同步模式配置。
- 先决条件:无
- 被调用函数:无
- 输入参数:
sync_mode:同步模式,可选值:ADC_SYNC_MODE_DISABLE:ADC同步模式失能,所有的ADC都独立工作ADC_PARALLEL_REGULAR_INSERTED_ROTATION:ADC0和ADC1工作在规则并行和注入并行的组合模式,ADC2独立工作ADC_PARALLEL_REGULAR_INSERTED:ADC0和ADC1工作在规则并行和交替触发的组合模式,ADC2独立工作ADC_DUAL_INSERTER:ADC0和ADC1工作在注入并行模式,ADC2独立工作ADC_DUAL_PARALLEL:ADC0和ADC1工作在规则并行模式,ADC2独立工作ADC_FOLLOWUP_ROTATION:ADC0和ADC1工作在跟随模式,ADC2独立工作ADC_FOLLOWUP_INSERTER:ADC0和ADC1工作在跟随模式,ADC2独立工作ADC_FOLLOWUP_PARALLEL:ADC0和ADC1工作在跟随模式,ADC2独立工作ADC_TRIGGERED_ROTATION:ADC0和ADC1工作在交替触发模式,ADC2独立工作ADC_TRIGGERED_INSERTER:ADC0和ADC1工作在交替触发模式,ADC2独立工作ADC_TRIGGERED_PARALLEL:ADC0和ADC1工作在交替触发模式,ADC2独立工作ADC_ALL_REGULAR_INSERTED_ROTATION:所有的ADC都工作在规则并行和注入并行的组合模式ADC_ALL_REGULAR_INSERTED:所有的ADC都工作在规则并行和交替触发的组合模式ADC_ALL_INSERTER:所有的ADC都工作在注入并行模式ADC_ALL_PARALLEL:所有的ADC都工作在规则并行模式ADC_ALL_FOLLOWUP:所有的ADC都工作在跟随模式ADC_ALL_TRIGGERED:所有的ADC都工作在交替触发模式
- 输出参数:无
- 返回值:无
42. adc_sync_delay_config
- 函数原型:
void adc_sync_delay_config(uint32_t adc_sync_delay); - 功能描述:配置ADC同步模式两次采样之间的延时。
- 先决条件:无
- 被调用函数:无
- 输入参数:
adc_sync_delay:采样之间的延时,可选值:ADC_SYNC_DELAY_5CYCLES:5个ADC时钟周期ADC_SYNC_DELAY_10CYCLES:10个ADC时钟周期ADC_SYNC_DELAY_15CYCLES:15个ADC时钟周期ADC_SYNC_DELAY_20CYCLES:20个ADC时钟周期ADC_SYNC_DELAY_25CYCLES:25个ADC时钟周期ADC_SYNC_DELAY_30CYCLES:30个ADC时钟周期ADC_SYNC_DELAY_35CYCLES:35个ADC时钟周期ADC_SYNC_DELAY_40CYCLES:40个ADC时钟周期
- 输出参数:无
- 返回值:无
43. adc_sync_dma_config
- 函数原型:
void adc_sync_dma_config(uint32_t dma_mode); - 功能描述:ADC同步模式DMA选择。
- 先决条件:无
- 被调用函数:无
- 输入参数:
dma_mode:DMA模式,可选值:DMA_DISABLE:DMA失能DMA_MODE_1:ADC同步DMA模式1DMA_MODE_2:ADC同步DMA模式2
- 输出参数:无
- 返回值:无
44. adc_sync_dma_request_after_last_enable
- 函数原型:
void adc_sync_dma_request_after_last_enable(void); - 功能描述:当SYNCDMA不为00时,根据SYNCDMA位来产生DMA请求。
- 先决条件:无
- 被调用函数:无
- 输入参数:无
- 输出参数:无
- 返回值:无
45. adc_sync_dma_request_after_last_disable
- 函数原型:
void adc_sync_dma_request_after_last_disable(void); - 功能描述:当检测到来自DMA控制器的传输结束信号后,DMA机制失能。
- 先决条件:无
- 被调用函数:无
- 输入参数:无
- 输出参数:无
- 返回值:无
46. adc_sync_regular_data_read
- 函数原型:
uint32_t adc_sync_regular_data_read(uint32_t adc_periph); - 功能描述:ADC同步模式规则数据读取。
- 先决条件:无
- 被调用函数:无
- 输入参数:
adc_periph:ADC外设,可选值为ADC0、ADC1、ADC2
- 输出参数:无
- 返回值:
uint32_t,ADC转换值