打印
[技术问答]

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

[复制链接]
366|4
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
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  
}  

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

103

主题

513

帖子

5

粉丝