老是弄不明白ADC的输入到底在哪,看了stm32F103Ve的datasheet,将引脚和通道的映射关系贴在下面:

好了,写到这,我已经看了中文手册一上午了,可是啥都没看懂,下午接着看,写代码不重要,理论高于实际。

ADC的四种模式:单次转换模式,连续转换模式,扫描模式,间断模式(间断模式分为规则组和注入组)

单次转换模式:ADC只执行一次转换,CONT=0。

连续转换模式:ADC转换一结束就启动另一次转换,CONT=1。

扫描模式:在每个组的每个通道上执行单次转换,在每个转换结束时,同一组的下一个通道被自动转换。

如果设置了CONT位,转换不会在选择组的最后一个通道上停止,而是再次从选择组的第一个通道继续转换。

间断模式:每一次外部触发信号可以执行一个短序列的n次转换(对于规则组n<16,对于注入组n<4),直到此序列的所有转换完成为    止。

注:当以间断模式转换一个规则组时,转换序列结束后不自动从头开始。

当所有子组被转换完成,下一次触发启动第一个子组的转换(下面的第四次触发)

例如: n=3,被转换的通道= 0、1、2、3、4、5、6、7

第一次触发: 转换的序列为 0、1、2

第二次触发: 转换的序列为 3、4、5

第三次触发: 转换的序列为 6、7  (此处不从头开始,此处产生EOC事件)

第四次触发: 转换的序列为 0、1、2

放到代码上看:

单个通道单次转换:ADC_NbrOfChannel = 1

ADC_ScanConvMode = DISABLE

ADC_ContinuousConvMode = DISABLE

多个通道单次转换:ADC_NbrOfChannel = n

ADC_ScanConvMode = ENABLE

ADC_ContinuousConvMode = DISABLE

单个通道连续转换:ADC_NbrOfChannel = 1

ADC_ScanConvMode = DISABLE

ADC_ContinuousConvMode =  ENABLE

多个通道连续转换:ADC_NbrOfChannel = n

ADC_ScanConvMode = ENABLE

ADC_ContinuousConvMode =  ENABLE

关于常规扫描模式和注入扫描模式:

先上图两张:

规则组是正常的ADC转换:

注入组实际是通过中断触发后来进行扫描转换。即如下:

总结:关于间断模式的内容以及注入的内容很少只涉及粗浅的概念,因为我还没有具体的机会去实践它,没有时间去实践就没有发言权。。。先把简单的弄明白好了,有朝一日再相会,千树万树梨花开。

stm32 引脚映射 和 ADC的更多相关文章

  1. STM32重映射(PinRemap)的使用,注意!

    STM32重映射,内容和细节稍后补充,这里只说几个注意点,花了我一晚上的时间调试终于找到问题所在了... 芯片: STM32f107vct6 晶振: 25M 通过分频器与锁相环,使系统时钟为72M 背 ...

  2. STM32内存映射

    一.概述 STM32内存映射是STM32的架构的重要组成部分,不可或缺. 二.STM32内存映射图 1.内存映射图--摘自<CM3权威指南> 2.内存映射图--摘自<STM32F10 ...

  3. STM32学习笔记(七) ADC模数转换测电平(普通和DMA模式)

    嵌入式系统在微控制领域(温度,湿度,压力检测,四轴飞行器)中占据着重要地位,这些功能的实现是由微处理器cpu(如stm32)和传感器以及控制器共同完成的,而连接他们,使它们能够互相正常交流的正是本小节 ...

  4. STM32 C++编程 004 Adc (数模转换)类

    使用 C++ 语言给 STM32 编写一个 Adc 类 我使用的STM32芯片:STM32F103ZET6 我们使用的STM32库版本:V3.5.0 注意: 想学习本套 STM32 C++编程 的专栏 ...

  5. STM32存储器映射和寄存器映射

    存储器映射 对于Cortex-M3来讲,有一块4G大小的存储器空间.存储器映射指的是芯片厂商为这个空间分配地址的操作.这4G空间被均匀地划分为8个大小为512MB的存储块(block),并且每个块都各 ...

  6. STM32重映射

  7. 嵌入式02 STM32 实验01 端口复用和重映射

    内设与外设: 端口复用和端口重映射都需要了解内设和外设,那么什么是内设?什么是外设? 内设:单片机内部集成的功能一般包括:串口模块.SPI模块(Serial Peripheral Interface  ...

  8. STM32端口复用和映射

    STM32的功能引脚重映射和复用功能STM32中有很多内置外设的输入输出引脚都具有重映射(remap)的功能,本文对一些在使用引脚重映射时所遇到的有关问题加以说明.我们知道每个内置外设都有若干个输入输 ...

  9. STM32.ADC

    ADC实验 原理图: 1.ADC配置函数 /* enable adc1 and config adc1 to dma mode */ ADC1_Init(); /** * @brief ADC1初始化 ...

随机推荐

  1. ByteBuf使用实例

    之前我们有个netty5的拆包解决方案(参加netty5拆包问题解决实例),现在我们采用另一种思路,不需要新增LengthFieldBasedFrameDecoder,直接修改NettyMessage ...

  2. Uncaught TypeError: TableInit is not a constructor

    我最近在做东西的时候,用到了Bootstrap的表格,我复制了一份代码使用,结果运行报错 Uncaught TypeError: TableInit is not a constructor 我点进去 ...

  3. 用VS Code写C#

    目录 前言 下载SDK 安装C#支持 快速创建C#控制台 格式化代码 launch:launch.json must be configured. change 'program' to the pa ...

  4. linux中查看端口号

    linux中查看端口号 yum install lsof -y [root@test1 ~]# lsof -i :80 COMMAND PID USER FD TYPE DEVICE SIZE/OFF ...

  5. webpack配置babel-loader

    需要安装的插件: cnpm i -D babel-core babel-loader babel-plugin-syntax-jsx babel-plugin-transform-runtime  b ...

  6. DevOps - 持续集成(Continuous Integration)

    1 - 持续集成简介 持续集成(Continuous integration,简称CI)是软件的开发和发布标准流程中最重要的部分. 作为一种开发实践,在CI中可以通过自动化等手段高频率地去获取产品反馈 ...

  7. 找出整数数组中出现次数超过数组长度一半的元素(Java)

    Question:数组中有一个数字出现的次数超过数组长度的一半,请找出这个数字 package com.study.zhipengs.test; import java.util.Arrays; im ...

  8. 开发规范——MYSQL数据库

    数据库规范 这里主要针对mysql数据库,其他数据库也可以借鉴 表 1.统一使用表命名规范 表名规范:分层+项目名缩写+实体名(小写)[+下划线+实体名+rel] 例子 表名:bc_user 分层: ...

  9. ubuntu18.04下安装gitlab

    1.安装并配置必要的依赖关系 sudo apt-get update sudo apt-get install -y curl openssh-server ca-certificates 接下来,安 ...

  10. linux 编程 如何判断socket断开???--ongoing

    1 利用select ? 2从github上找例子 3 学习asio  c++ library