STM32
直播中

石玉兰

8年用户 1526经验值
私信 关注
[问答]

求助,关于STM8 AD采样初始化的疑问求解

     /* -------------------------------------------------------------------------- */
/* ROUtiNE NAME: ADC_Init                                                     */
/* INPUT/OUTPUT: None.                                                        */
/* DESCRIPTION:  Initialize the AD converter.                                 */
/* -------------------------------------------------------------------------- */
void ADC_Init(void)
{
    ADC_CR2  = 0x00;
    ADC_CR1  = 0x00;
    ADC_CSR  = 0x03;
    ADC_TDRL = 0x20;
}


以上是ST官方套件板上的AD初始化的例程,ADC_CR2,ADC_CR1,ADC_CSR 这三个好理解,ADC_TDRL是ADC施密特触发器禁止寄存器低位,置位是为降低IO静态功耗,如果是这样,目前用到的是AIN3,为什么例程里只关闭了AIN5口的施密特触发,处于功耗考虑的话,实际功能上的话不关闭应该也是不影响的吧?


回帖(1)

王娟

2024-5-15 16:49:24
您好!看起来您需要帮助关于STM8的ADC(模拟-数字转换器)采样初始化。在STM8中,ADC初始化涉及到配置ADC通道、时钟、触发源等。以下是一个简单的示例,展示如何初始化STM8的ADC模块:

```c
#include

void ADC_Init(void)
{
    // 1. 启用ADC时钟
    CLK_PeripheralClockConfig(CLK_Peripheral_ADC1, ENABLE);

    // 2. 配置ADC通道
    ADC_ChannelSelect(ADC_Channel_1); // 选择通道1作为输入

    // 3. 配置ADC触发源
    ADC_ExternalTrigConfig(ADC_ExternalTrig_TIM, ENABLE); // 使用定时器作为触发源

    // 4. 配置ADC时钟
    ADC_PrescalerConfig(ADC_Prescaler_2); // 设置ADC时钟分频

    // 5. 配置ADC分辨率
    ADC_ResolutionConfig(ADC_Resolution_10Bit); // 设置10位分辨率

    // 6. 配置ADC数据对齐
    ADC_DataAlignSelect(ADC_DataAlign_Right); // 设置数据右对齐

    // 7. 配置ADC转换模式
    ADC_ScanModeCmd(DISABLE); // 禁用扫描模式

    // 8. 配置ADC连续转换模式
    ADC_ContinuousModeCmd(ENABLE); // 启用连续转换模式

    // 9. 启动ADC校准
    ADC_StartCalibration();

    // 10. 等待校准完成
    while (ADC_IsCalibrationOnGoing());

    // 11. 启动ADC
    ADC_Cmd(ENABLE);

    // 12. 等待ADC准备就绪
    while (!ADC_GetFlagStatus(ADC_FLAG_RDY));
}

void main(void)
{
    // 初始化ADC
    ADC_Init();

    // 主循环
    while (1)
    {
        // 读取ADC值
        uint16_t adc_value = ADC_GetConversionValue();

        // 处理adc_value
        // ...
    }
}
```

这个示例展示了如何初始化STM8的ADC模块,并在主循环中读取ADC值。请注意,您可能需要根据您的具体需求调整这些设置。希望这可以帮助您解决问题!如果您有其他问题,请随时提问。
举报

更多回帖

发帖
×
20
完善资料,
赚取积分