你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

STM32F0 ADC(DMA中断)多通道,注释超详细  

[复制链接]
dajin123 发布时间:2015-1-8 09:33
附件为STM32F0系列ADC的多通道采集,DMA中断方式,注释非常详细,分享给大家,部分代码如下

  1. /**
  2.   * @brief  配置ADC1的工作模式
  3.   * @param  无
  4.   * @retval 无
  5.   */
  6. static void ADC1_Mode_Init(void)
  7. {
  8.         ADC_InitTypeDef     ADC_InitStructure;

  9.         /*设置ADC分频因子为4 ,ADC最大时间不能超过14M*/
  10.         RCC_ADCCLKConfig(RCC_ADCCLK_PCLK_Div4);        

  11.         /* ADC1 Periph clock enable */
  12.         RCC_APB2PeriphClockCmd(RCC_APB2Periph_ADC1, ENABLE);

  13.         /* ADC1 DeInit */  
  14.         ADC_DeInit(ADC1);
  15.         
  16.         /*初始化ADC结构体,此句必须加,不加的话多路ADC数据会交换*/
  17.         ADC_StructInit(&ADC_InitStructure);                        

  18.         /*配置ADC分辨率为12位*/
  19.         ADC_InitStructure.ADC_Resolution = ADC_Resolution_12b;

  20.         /*开启连续转换*/
  21.         ADC_InitStructure.ADC_ContinuousConvMode = ENABLE;

  22.         /*禁止触发检测,使用软件触发*/
  23.         ADC_InitStructure.ADC_ExternalTrigConvEdge = ADC_ExternalTrigConvEdge_None;

  24.         /*ADC采集数据右对齐*/
  25.         ADC_InitStructure.ADC_DataAlign = ADC_DataAlign_Right;

  26.         /*向上扫描*/
  27.         ADC_InitStructure.ADC_ScanDirection = ADC_ScanDirection_Upward;

  28.         /*ADC初始化*/
  29.         ADC_Init(ADC1, &ADC_InitStructure);
  30.                               
  31.         /*配置采样通道及时间*/
  32.         ADC_ChannelConfig(ADC1, ADC_Channel_0 | ADC_Channel_1, ADC_SampleTime_239_5Cycles);

  33.         /* ADC 校准 */
  34.         ADC_GetCalibrationFactor(ADC1);

  35.         /* 循环模式下的 ADC DMA 请求 */
  36.         ADC_DMARequestModeConfig(ADC1, ADC_DMAMode_Circular);

  37.         /* 使能 ADC_DMA */
  38.         ADC_DMACmd(ADC1, ENABLE);  

  39.         /* 使能 ADC1 */
  40.         ADC_Cmd(ADC1, ENABLE);     

  41.         /* 等待 ADCEN 标志 */
  42.         while(!ADC_GetFlagStatus(ADC1, ADC_FLAG_ADEN));

  43.         /*  ADC1 常规软件启动转换 */  
  44.         ADC_StartOfConversion(ADC1);
  45.         
  46. }
复制代码


STM32F0_Template.rar

下载

313.36 KB, 下载次数: 2807

评分

参与人数 1 ST金币 +1 收起 理由
wbaojang + 1 淡定

查看全部评分

收藏 13 评论95 发布时间:2015-1-8 09:33

举报

95个回答
善之水 回答时间:2018-2-25 17:08:31
/**
  * @brief  Configures the ADC clock (ADCCLK).
  * @note   This function is obsolete.
  *         For proper ADC clock selection, refer to ADC_ClockModeConfig() in the ADC driver
  * @param  RCC_ADCCLK: defines the ADC clock source. This clock is derived
  *         from the HSI14 or APB clock (PCLK).
  *          This parameter can be one of the following values:
  *             @arg RCC_ADCCLK_HSI14: ADC clock = HSI14 (14MHz)
  *             @arg RCC_ADCCLK_PCLK_Div2: ADC clock = PCLK/2
  *             @arg RCC_ADCCLK_PCLK_Div4: ADC clock = PCLK/4  
  * @retval None
  */
void RCC_ADCCLKConfig(uint32_t RCC_ADCCLK)
此函数已废弃,正确ADC时钟选择,请用函数ADC_ClockModeConfig()
q80351951 回答时间:2016-12-18 01:01:49

void ADC1_Mode_Init(void)
{
    ADC_InitTypeDef     ADC_InitStructure;

    /*设置ADC分频因子为4 ,ADC最大时间不能超过14M*/
   RCC_ADCCLKConfig(RCC_HCLK_Div4);
    RCC_ADCCLKConfig(RCC_ADCCLK_PCLK_Div4);


源码为红字,正确的应该为蓝字,当然影响不大,但起码会影响串口速率.

另采集数据全0,还没看那里的问题..

zhang_123-55168 回答时间:2015-1-13 11:45:55
dajin123 发表于 2015-1-13 11:42
stm32ADC飘得还是比较严重,不过加了滤波算法后还好

滤波显然会影响速度的吧?
滤波之后还能有多少bit?
你现在是内基准还是外基准?
内部adc毕竟还是和外部adc有差距,一个单adc芯片都能顶上还几个stm32了  呵呵。
dajin123 回答时间:2015-1-8 09:33:36
沙发自己坐
埃斯提爱慕 回答时间:2015-1-8 11:42:01
提示: 作者被禁止或删除 内容自动屏蔽
lovewyufeng 回答时间:2015-1-8 13:01:36
多谢 分享
dajin123 回答时间:2015-1-9 08:32:43

能帮到你就好
dajin123 回答时间:2015-1-9 08:34:58

能给你提供有用信息就行
我是酱油哥 回答时间:2015-1-9 08:44:53
谢谢分享!
wyxy163@126.com 回答时间:2015-1-13 08:48:57
提示: 作者被禁止或删除 内容自动屏蔽
mantishell 回答时间:2015-1-13 08:55:25
数据从哪里读取呢?要不要使用中断呢?
沐紫 回答时间:2015-1-13 08:56:03
谢谢
dajin123 回答时间:2015-1-13 08:57:41
mantishell 发表于 2015-1-13 08:55
数据从哪里读取呢?要不要使用中断呢?

我用串口打印了,我用的是dma中断,在主循环检测dma中断是否完成
dajin123 回答时间:2015-1-13 09:05:19

多谢版主支持
Tcreat 回答时间:2015-1-13 09:40:48
不错学习学习 支持
kevin0129 回答时间:2015-1-13 09:51:56
楼主这注释写的很详细啊,很适合新手入门!
xuwu_19911119 回答时间:2015-1-13 10:04:14
今天晚上试试看,昨天晚上没有搞定呀。

所属标签

相似分享

官网相关资源

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
st-img 微信公众号
st-img 手机版