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

【经验分享】STM32F0 ADC(DMA中断)多通道

[复制链接]
STMCU小助手 发布时间:2022-2-10 21:28
  1. /**
    ; W/ A- m& `+ s! u9 O. D) {% t4 e
  2.   * @brief  配置ADC1的工作模式
    % X' ^7 }, O2 T* i$ e# I  w
  3.   * @param  无
    + e( z3 j1 G: ]! {/ M0 V
  4.   * @retval 无
    1 [' w( q! e. I4 P1 f8 T$ x( n
  5.   */. P% N) E5 G1 A3 e# y3 k9 W# d& G
  6. static void ADC1_Mode_Init(void)
    2 S/ ~# N8 b4 t& W
  7. {
    ) w8 G, O$ w9 @5 G' `" v/ d. _
  8.         ADC_InitTypeDef     ADC_InitStructure;+ F! M( z( x8 G# X
  9.         /*设置ADC分频因子为4 ,ADC最大时间不能超过14M*/. D1 T" y1 d5 n' N$ G
  10.         RCC_ADCCLKConfig(RCC_ADCCLK_PCLK_Div4);* n! d$ A& c% p/ O: b: W% u: u
  11.         /* ADC1 Periph clock enable */
    ' T% _. R2 h. e+ A# G: }0 V
  12.         RCC_APB2PeriphClockCmd(RCC_APB2Periph_ADC1, ENABLE);
    : q+ `2 n0 Q' I
  13.         /* ADC1 DeInit */' }; u5 ~. f. d7 ^5 ?8 C+ r! y
  14.         ADC_DeInit(ADC1);% o) e' Z0 ~0 J  ^' ?' u- {. B( f# O
  15.         /*初始化ADC结构体,此句必须加,不加的话多路ADC数据会交换*/7 Q! w% r, D" h7 M7 j/ T. p
  16.         ADC_StructInit(&ADC_InitStructure);8 H# {# w. b, G! b1 S: D
  17.         /*配置ADC分辨率为12位*/
    5 u; N& @3 Y" I5 M
  18.         ADC_InitStructure.ADC_Resolution = ADC_Resolution_12b;6 x- p1 x) J' I1 e
  19.         /*开启连续转换*/6 G* q$ @1 l( D: ^3 Y
  20.         ADC_InitStructure.ADC_ContinuousConvMode = ENABLE;, W: _- Y% ^5 ~3 H( ^: h6 A
  21.         /*禁止触发检测,使用软件触发*/6 F# p1 l2 F6 w& O! Z7 O4 m8 r
  22.         ADC_InitStructure.ADC_ExternalTrigConvEdge = ADC_ExternalTrigConvEdge_None;
    ! v9 w* d' y1 }
  23.         /*ADC采集数据右对齐*/6 g: b# J/ [# j* N% y/ O! Y$ r8 c& h
  24.         ADC_InitStructure.ADC_DataAlign = ADC_DataAlign_Right;0 ~- K: V: z$ K
  25.         /*向上扫描*/
    7 U! U" O( |) G, ^
  26.         ADC_InitStructure.ADC_ScanDirection = ADC_ScanDirection_Upward;8 b1 M, A* l% O. [
  27.         /*ADC初始化*/6 s7 Y5 [+ s- Z( v4 G
  28.         ADC_Init(ADC1, &ADC_InitStructure);
    8 Q1 z9 ^* v5 l$ K" S
  29.         /*配置采样通道及时间*/
    : n+ Y7 c" k" X+ X5 F
  30.         ADC_ChannelConfig(ADC1, ADC_Channel_0 | ADC_Channel_1, ADC_SampleTime_239_5Cycles);- L$ a( Z, j3 f8 M. I
  31.         /* ADC 校准 */: Z; K- Q9 v4 `
  32.         ADC_GetCalibrationFactor(ADC1);
      G" j' i4 ^4 d* O
  33.         /* 循环模式下的 ADC DMA 请求 *// ?: H0 ~: E" b* S0 M: T+ B
  34.         ADC_DMARequestModeConfig(ADC1, ADC_DMAMode_Circular);3 |# u3 f# U9 b' G
  35.         /* 使能 ADC_DMA */
    ! z1 M) X; Z1 M* W. `/ K6 v4 e
  36.         ADC_DMACmd(ADC1, ENABLE);# M4 t% m' y6 F$ m8 @" u
  37.         /* 使能 ADC1 */% u8 p3 k0 Y/ G& J" X
  38.         ADC_Cmd(ADC1, ENABLE);) i4 O$ Z  e. g, L  s2 P
  39.         /* 等待 ADCEN 标志 */
    8 J: L: `& e& A! S# h
  40.         while(!ADC_GetFlagStatus(ADC1, ADC_FLAG_ADEN));* i8 x  E! ]8 N# g  [. n
  41.         /*  ADC1 常规软件启动转换 */8 O; v1 k! K9 {, [
  42.         ADC_StartOfConversion(ADC1);
    6 \) B% X. P( b6 i
  43. }
复制代码
* ^. R7 W5 k- L( D( x
收藏 评论0 发布时间:2022-2-10 21:28

举报

0个回答

所属标签

相似技术帖

官网相关资源

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
人形机器人运动控制、感知与智能配电
半导体创新技术与应用方向
EE架构与软件定义汽车
12V/48V 汽车智能配电(SPD)
区域控制单元(ZCU)与分区架构
关注我们
st-img 微信公众号
st-img 手机版