OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 3875|回复: 6

STM32F103的ADC采样频率问题

[复制链接]

11

主题

35

帖子

0

精华

初级会员

Rank: 2

积分
163
金钱
163
注册时间
2020-5-11
在线时间
26 小时
发表于 2021-12-3 13:53:13 | 显示全部楼层 |阅读模式
5金钱
使用定时器中断触发ADC采样,设置频率为500Hz;由于定时器间隔只有2ms,mcu无法执行其他功能,请问各位大佬怎么解决。

最佳答案

查看完整内容[请看2#楼]

对,用dma+定时器触发,就可以实现了,全程无需cpu参与
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165537
金钱
165537
注册时间
2010-12-1
在线时间
2117 小时
发表于 2021-12-3 13:53:14 | 显示全部楼层
对,用dma+定时器触发,就可以实现了,全程无需cpu参与
回复

使用道具 举报

12

主题

3399

帖子

1

精华

论坛元老

Rank: 8Rank: 8

积分
8676
金钱
8676
注册时间
2020-5-11
在线时间
4152 小时
发表于 2021-12-3 14:15:37 | 显示全部楼层
DMA了解一下
专治疑难杂症
回复

使用道具 举报

3

主题

20

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
257
金钱
257
注册时间
2021-7-19
在线时间
28 小时
发表于 2021-12-5 20:58:18 | 显示全部楼层
学到了
回复

使用道具 举报

11

主题

35

帖子

0

精华

初级会员

Rank: 2

积分
163
金钱
163
注册时间
2020-5-11
在线时间
26 小时
 楼主| 发表于 2021-12-6 14:05:47 | 显示全部楼层
正点原子 发表于 2021-12-3 13:53
对,用dma+定时器触发,就可以实现了,全程无需cpu参与

好的,谢谢原子哥
回复

使用道具 举报

11

主题

35

帖子

0

精华

初级会员

Rank: 2

积分
163
金钱
163
注册时间
2020-5-11
在线时间
26 小时
 楼主| 发表于 2021-12-7 17:11:35 | 显示全部楼层
追问:ADC1采用DMA+定时器,ADC2使用规则通道采样,目前ADC2的pin采集到的一直是随机数据,请大佬帮忙看看问题?ADC2代码如下:
void ADC2_Init(){
        ADC_InitTypeDef ADC2InitStructure;
        GPIO_InitTypeDef ADC2Structure;
       
        RCC_APB2PeriphClockCmd(RCC_APB2Periph_ADC2|RCC_APB2Periph_GPIOB,ENABLE);
        RCC_ADCCLKConfig(RCC_PCLK2_Div6);
        ADC2Structure.GPIO_Mode=GPIO_Mode_AIN;
        ADC2Structure.GPIO_Pin=GPIO_Pin_1;
        GPIO_Init(GPIOB,&ADC2Structure);
       
        ADC_DeInit(ADC2);
       
        ADC2InitStructure.ADC_ContinuousConvMode=DISABLE;
        ADC2InitStructure.ADC_DataAlign=ADC_DataAlign_Right;
        ADC2InitStructure.ADC_ExternalTrigConv=ADC_ExternalTrigConv_None;
        ADC2InitStructure.ADC_Mode=ADC_Mode_Independent;
        ADC2InitStructure.ADC_NbrOfChannel=1;
        ADC2InitStructure.ADC_ScanConvMode=DISABLE;
        ADC_Init(ADC2,&ADC2InitStructure);
       
        ADC_Cmd(ADC2,ENABLE);
       
        ADC_ResetCalibration(ADC2);
        while(ADC_GetResetCalibrationStatus(ADC2));
        ADC_StartCalibration(ADC2);
        while(ADC_GetCalibrationStatus(ADC2));

}

u16 Get_Adc(u8 ch)
{
        ADC_RegularChannelConfig(ADC2, ch, 1, ADC_SampleTime_239Cycles5);
        while (!ADC_GetFlagStatus(ADC2,ADC_FLAG_EOC));
        return  ADC_GetConversionValue(ADC2);
}
回复

使用道具 举报

11

主题

35

帖子

0

精华

初级会员

Rank: 2

积分
163
金钱
163
注册时间
2020-5-11
在线时间
26 小时
 楼主| 发表于 2021-12-7 17:23:13 | 显示全部楼层
Tim0213 发表于 2021-12-7 17:11
追问:ADC1采用DMA+定时器,ADC2使用规则通道采样,目前ADC2的pin采集到的一直是随机数据,请大佬帮忙看看 ...

此问题请忽略,犯二了
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-6-15 05:02

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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