特性
此图来自中文参考手册,作为下面的整体概述。
ADC正常工作时的电路连接:
ADC的内部结构图:
从上面的内部结构图可以看出stm32与其他低端的单片机不同的地方是:可以通过定时器事件触发ADC的转换,但只支持注入通道。那么注入通道和规则通道又是什么?
注入通道与规则通道:
上面的图形象的说明了注入通道与规则通道的区别:规则通道相当于正常的程序运行一通道完成后接着另一通道(当然这要开启连续或者扫描模式才行),而注入通道相当于程序的中断,也就是说它可以打断规则通道的ADC转换去优先转换另一条同的ADC转换;比如说在连续转换中现在转换到了2通道,此时因为定时器事件发生触发ADC去转换配置为注入通道的通道4,转换完成后就去规则通道2继续未完成的规则通道转换。
注意:规则通道和注入通道是可以在寄存器配置的,也就说任何一条通道都可以是注入或者规则通道。
转换模式
单次转换
一句话概述:一次只转换一条通道,如果配置相应中断使能,则在结束时产生中断;
连续模式
连续转换多条通道,如果配置相应的中断使能,则在每次转结束时产生中断。中断结束继续执行未完成的转换。
与连续转换不同,扫描转换是在所有转换结束时,产生中断事件。一般扫描模式下会选择DMA进行数据传输保存。
中断事件:
ADC的时钟配置:
其他配置在中文参考手册中查看寄存器。
关键字:Stm32 ADC功能 正常工作
引用地址:
Stm32的ADC功能介绍及相关代码
推荐阅读最新更新时间:2024-11-07 10:57
STM32向量表-串口1中断
DCD指令:用于分配一片连续的字存储单元(32bit),并将表达式的值初始化给该字存储单元,类似于C中定义数组并初始化。比如: DCD 0 的意思是:分配一个字存储单元,并将该单元初始化为0。 EXPORT指令:伪指令,用于在程序中声明一个全局标号,该标号可以在其他文件中使用 一、STM32的启动文件分析 https://blog.csdn.net/weicao1990/article/details/46914013 1.STM32启动文件中可以看到如下代码 __Vectors DCD __initial_sp ; Top of Stack DCD Reset_Ha
[单片机]
STM32片上外设时钟使能、失能和复位的区别
1 RCC时钟说明 在STM32参考手册中,都有Reset and Clock Control(RCC)复位和时钟控制的章节。 在这一章节就可以看到有两类寄存器:peripheral reset register(RSTR)外设复位寄存器和peripheral clock enable register(ENR)外设时钟使能寄存器。 我们拿STM32F1参考手册为例,可以看到如下图寄存器: 一种是控制外设时钟的寄存器,一种是复位外设的寄存器。 2 外设时钟使能和失能 我们都知道,配置STM32外设,会先开启对应的时钟(也就是使能外设时钟)。 比如使能USART1时钟: RCC_APB2PeriphC
[单片机]
基于STM32单片机流水灯控制中的GPIO_Init()函数解析
学习STM32时,首先要熟悉流水灯例程,在这里就来分析流水灯中的GPIO_Init()函数 例如:流水灯例程中使用的端口是macLED1_GPIO_PORT=GPIOB, 控制的引脚是GPIO_Pin_0, 引脚的模式是GPIO_Mode_Out_PP(通用推挽输出), 引脚的速率是GPIO_Speed_50MHz, 用到的寄存器是CRL 将上述的引脚、模式、速率换算成32位的16进制,分别是: 1)控制的引脚是GPIO_Pin_0 换算成32位的16进制是:0x0000 0001 2)引脚的模式是GPIO_Mode_Out_PP(通用推挽输出) 换算成32位的16进制是:0x0000 0010 3)引脚的速率是GPIO_Sp
[单片机]
使用Keil MDK以及标准外设库创建STM32工程
1.1 使用Keil MDK以及标准外设库创建STM32工程 通过上一节对标准外设库的介绍,想必各位读者对标准外设库已经有了基本的认识,然而由于标准外设库中文件众多,很多初学者在开始很长一段时间内甚至都无法完全自己建立一个工程,很多人只是依赖标准外设库或给定的工程模板。本节就介绍怎样利用Keil MDK开发环境和标准外设库来搭建自己的工程。 建立一个基于标准外设库其实并不复杂,网络上也有很多关于怎样在Keil MDK下建立工程的教程,方法也各异,本节所介绍的方法本着少改动、便于使用、方便更换器件等原则,给大家介绍怎样在Keil中创建一个工程,并以一个最简单的例子来说明怎样下载和调试程序。 1.1.1 开发工具与开发环境 1
[单片机]
stm32单片机pwm设置与实际输出频率不一致
背景:一个驱动板,硬件那边的人帮我焊接,给我焊出一堆问题来。后面我特地连教带把关弄焊接,板子是能工作了,但是输出频率不对。特此记录问题以及结果: 1.单片机驱动板的外部晶振在外发的板厂贴错了90度,导致外部晶振起不来 2.但stm32单片机内部也有一个8mhz晶振,因此单片机还是能工作的 3.并且串口还能正常按配置的速率进行通信,这个要去研究串口配置库函数void USART_Init(USART_TypeDef* USARTx, USART_InitTypeDef* USART_InitStruct)怎么写的,如图1,我大概看了一眼,库函数里面,对串口速率的配置是按apbclock的实际值来倒算分频因子进行配置的,因此不受前面s
[单片机]
STM32寄存器操作和库函数操作区别
/*********************** 结构体操作点亮LED ********************************/ #include stdint.h //数据类型声明标准头文件 #define __IO volatile //定义__IO //GPIO寄存器结构体定义 typedef struct { __IO uint32_t CRL; __IO uint32_t CRH; __IO uint32_t IDR; __IO uint32_t ODR; __IO uint32_t BSRR; __IO uint32_t BRR; __IO uint32_t LCKR; } GPIO_TypeDef;
[单片机]
基于Cortex-M3的 STM32微控制器处理先进电机控制方法
变频器的问世和先进的电机控制方法让三相无刷电机(交流感应电机或永磁同步电机)曾经在调速应用领域取得巨大成功。这些高性能的电机驱动器过去主要用于工厂自动化系统和机器人。十年来,电子元器件的大幅降价使得这些电机驱动器能够进入对成本敏感的市场,例如:家电、空调或个人医疗设备。本文将探讨基于ARM的标准微控制器如何在一个被DSP和FPGA长期垄断的市场上打破复杂的控制模式,我们将以意法半导体的基于Cortex-M3 内核的STM32系列微控制器为例论述这个过程。 首先,我们回顾一下电机控制的基本原理。在电机控制系统内,为什么处理器非常重要?我们为什么需要非常好的计算性能?毕竟,Nicolas Tesla在一个世纪前发明交流电机时不需要编译
[单片机]
无线传感器网络底层平台的深层研究
引言 目前,对WSN(Wireless Sensor Netwoek)的研究主要集中在协议栈、定位算法、能耗管理以及体系结构设计上,而针对无线传感网络操作系统的研究却相对较少,尤其是对其底层平台的研究更少,所以针对无线传感网络操作系统底层平台的研究有十分广阔的空间。本论文针对意法半导体STM32系列MCU和TI公司的CC2520无线模块进行介绍。主要描述了操作系统底层平台的构建,以及硬件驱动程序的实现。本论文的底层硬件抽象层是针对CC2520无线射频模块的,包括了平台构建、相关寄存器,以及外围接口等各个部分。而硬件驱动程序主要是为完成无线通信所需的硬件驱动设计,这主要包括:相应异步事件的中断机制;和PC通信的USART驱动;连
[单片机]