readme添加内容

This commit is contained in:
dufresne 2025-09-13 18:15:31 +08:00
parent a134a33ed5
commit feccee151f
2 changed files with 42 additions and 1 deletions

View File

@ -53,10 +53,10 @@ void adc_config(void)
// 打开扫描模式 // 打开扫描模式
adc_special_function_config(ADCX, ADC_SCAN_MODE, ENABLE); adc_special_function_config(ADCX, ADC_SCAN_MODE, ENABLE);
// 禁止连续模式 -> 单次转换模式 // 禁止连续模式 -> 单次转换模式
adc_special_function_config(ADCX, ADC_CONTINUOUS_MODE, ENABLE); adc_special_function_config(ADCX, ADC_CONTINUOUS_MODE, ENABLE);
// 使能外部触发:这里使用软件触发,所以先禁用硬件触发 // 使能外部触发:这里使用软件触发,所以先禁用硬件触发
adc_external_trigger_config(ADCX, ADC_ROUTINE_CHANNEL, DISABLE); adc_external_trigger_config(ADCX, ADC_ROUTINE_CHANNEL, DISABLE);

View File

@ -183,3 +183,44 @@ C1 -->|读取注入组<br>有专用寄存器| A2
* **What to do** (DMA/中断):定义了结果数据的处理方式。 * **What to do** (DMA/中断):定义了结果数据的处理方式。
三者协同工作,共同构成了一个高效、可靠且响应及时的数据采集系统。 三者协同工作,共同构成了一个高效、可靠且响应及时的数据采集系统。
在GD32微控制器的ADC驱动库中`adc_routine_channel_config`函数用于配置规则组(常规序列)的通道序列。
### 🧾 函数原型
在GD32的库函数中该函数的原型通常类似于
```c
void adc_routine_channel_config(uint32_t adc_periph, uint8_t rank, uint8_t channel, uint32_t sample_time);
```
### 📊 参数详解
为了更直观地理解第二和第三个参数的区别与联系,请看下表:
| 特性 | 第二个参数 (`rank`) | 第三个参数 (`channel`) |
| :------------------- | :------------------------------------------------------------------------------ | :-------------------------------------------------------------------------------------------- |
| **参数含义** | 指定**转换顺序中的序号**(即该通道在规则组序列中的**位置** | 指定**具体的ADC物理通道**(即连接模拟信号的**输入源** |
| **参数目的** | 决定**多个通道的转换先后顺序** | 决定**转换哪个引脚或内部信号源** |
| **取值范围** | 通常从 `0`开始最大取决于规则组通道总数例如16个通道则是 `0``15` | 取决于MCU型号例如 `ADC_CHANNEL_0`, `ADC_CHANNEL_1`, ..., `ADC_CHANNEL_17`(内部通道) |
| **配置寄存器** | `ADC_RSQ2`, `ADC_RSQ1`, `ADC_RSQ0` (规则序列寄存器) | 与 `rank`共同配置规则序列寄存器 |
| **示例说明** | `rank = 0`表示该通道是序列中**第一个**被转换的 | `channel = ADC_CHANNEL_5`表示选择MCU的**特定ADC引脚**如PA5 |
### ⚠️ 注意事项
1. **`rank`值与实际转换顺序**`rank`参数通常从 `0`开始递增,表示转换的先后顺序。**`rank`值越小,转换顺序越靠前**。例如,`rank = 0`的通道最先转换,`rank = 1`的通道其次,以此类推。
2. **通道总数设置**:在配置所有通道的 `rank`之前,务必先通过 `adc_channel_length_config(adc_periph, ADC_ROUTINE_CHANNEL, n)`函数正确设置规则组的总通道数 `n`
3. **避免重复或越界**:确保不同的 `rank`值指向不同的序列位置,并且所有 `rank`值都小于总通道数 `n`。同时,确保选择的物理 `channel`在MCU实际存在的范围内。
4. **采样时间**:此函数的第四个参数 `sample_time`采样时间同样重要它决定了ADC对输入信号采样的持续时间需根据信号源阻抗进行调整。
### 💡 总结
你可以这样理解:
* **`rank`(第二个参数)是“排队号”**:决定通道转换的**顺序**。
* **`channel`(第三个参数)是“身份证”**:确定转换的**具体是哪个物理通道**。
函数的作用就是将特定的物理通道(`channel`)安排到规则组转换序列中的指定位置(`rank`)上。
希望这些信息能帮助你更好地理解和使用GD32的ADC功能