[技术问答] 求一个TIMA2触发 ADC采样的程序

[复制链接]
 楼主| woai32lala 发表于 2024-1-8 14:41 | 显示全部楼层 |阅读模式
本帖最后由 woai32lala 于 2024-1-12 08:40 编辑

  
求一个TIMA2触发 ADC采样的程序








两只袜子 发表于 2024-1-11 09:46 | 显示全部楼层
#include "stm32f10x.h"  
  
#define ADC_CHANNEL 0 // 定义ADC通道,这里选择通道0  
  
void ADC_Config(void)  
{  
    // 配置定时器触发ADC  
    TIM2->PSC = 0; // 预分频为1  
    TIM2->ARR = 7200-1; // 自动重装载值为7200-1  
    TIM2->CR1 = TIM_CR1_CEN; // 开启定时器  
    TIM2->CCR[ADC_CHANNEL] = 7200-1; // 设置比较匹配值  
    TIM2->CCER |= TIM_CCER_CCE(ADC_CHANNEL); // 输出使能  
}  
  
void ADC_Start(void)  
{  
    // 启动ADC转换  
    ADC1->CR2 |= ADC_CR2_ADON; // 开启ADC电源  
    ADC1->CR2 |= ADC_CR2_CONT; // 连续转换模式  
    ADC1->SQRx |= ADC_SQRx_SQx(ADC_CHANNEL); // 设置转换序列,这里选择通道0  
}  
  
uint16_t ADC_GetResult(void)  
{  
    // 获取ADC转换结果  
    while(!(ADC1->SR & ADC_SR_EOC)); // 等待转换结束  
    return ADC1->DR; // 读取转换结果  
}  
  
int main(void)  
{  
    uint16_t adc_result;  
  
    // 初始化定时器和ADC  
    RCC->APB2ENR |= RCC_APB2ENR_TIM2EN | RCC_APB2ENR_ADC1EN; // 开启定时器和ADC时钟  
    ADC_Config(); // 配置定时器触发ADC采样  
    ADC_Start(); // 启动ADC转换  
  
    while(1)  
    {  
        adc_result = ADC_GetResult(); // 获取ADC采样结果  
        // 在此处可以对adc_result进行处理或输出到其他设备等操作  
        // ...  
    }  
}
 楼主| woai32lala 发表于 2024-1-12 08:39 | 显示全部楼层
两只袜子 发表于 2024-1-11 09:46
#include "stm32f10x.h"  
  
#define ADC_CHANNEL 0 // 定义ADC通道,这里选择通道0  

谢谢
kmnqhaha 发表于 2024-4-30 17:15 | 显示全部楼层
void ADC_Start(void)  
{  
    // 启动ADC转换  
    ADC1->CR2 |= ADC_CR2_ADON; // 开启ADC电源  
    ADC1->CR2 |= ADC_CR2_CONT; // 连续转换模式  
    ADC1->SQRx |= ADC_SQRx_SQx(ADC_CHANNEL); // 设置转换序列,这里选择通道0  
}  
您需要登录后才可以回帖 登录 | 注册

本版积分规则

108

主题

559

帖子

6

粉丝
快速回复 返回顶部 返回列表