STM32-一文搞懂ADC

最新更新时间:2022-04-23来源: eefocus关键字:STM32  ADC  输入时钟 手机看文章 扫描二维码
随时随地手机看文章

1 STM32ADC简介

STM32 拥有 1~3 个 ADC(STM32F101/102 系列只有 1 个 ADC,F103系列至少有两个ADC),这些 ADC 可以独立使用,也可以使用双重模式(提高采样率)。STM32 的12位ADC是一种逐次逼近型模拟数字转换器,它有多达18个通道,可测量16个外部和2个内部信号源。各通道的A/D转换可以单次、连续、扫描或间断模式执行。ADC的结果可以左对齐或右对齐方式存储在16位数据寄存器中。模拟看门狗特性允许应用程序检测输入电压是否超出用户定义的高/低阀值。ADC的输入时钟不得超过14MHz,它是PCLK2经分频产生。


1.1 ADC特性

12位分辨率

转换结束、注入转换结束和发生模拟看门狗事件时产生中断

单次和连续转换模式

从通道0到通道n的自动扫描模式

自校准

带内嵌数据一致性的数据对齐

采样间隔可以按通道分别编程

规则转换和注入转换均有外部触发选项

间断模式

双重模式(带2个或以上ADC的器件) 


ADC转换时间:

  STM32F103xx增强型产品:时钟为56MHz时为1μs(时钟为72MHz为1.17μs) 

  STM32F101xx基本型产品:时钟为28MHz时为1μs(时钟为36MHz为1.55μs) 

  STM32F102xxUSB型产品:时钟为48MHz时为1.2μs 

  STM32F105xx和STM32F107xx产品:时钟为56MHz时为1μs(时钟为72MHz为1.17μs) 

ADC供电要求:2.4V到3.6V 

ADC输入范围:VREF- ≤ VIN ≤ VREF+

规则通道转换期间有DMA请求产生。


1.2 STM32的ADC模块结构

单个ADC模块的框图如下所示

其中绿色部分为输入部分,蓝色为ADC模块核心部分,红色部分为输出部分。下面分别介绍。


2 ADC模块详解

这里分为输入单元、核心单元、输出单元进行分析。


2.1 ADC核心单元

2.1.1 规则通道和注入通道

STM32有18个多路通道,为了保证这些通道上的转换有序地、有优先级地进行,把 ADC 的转换分为 2 个通道组:规则通道组和注入通道组。任意多个通道上以任意顺序进行的一系列转换构成组转换。例如,可以如下顺序完成转换:通道3、通道8、通道2、通道2、通道0、通道2、通道2、通道15。


规则组由多达16个转换组成。规则通道和它们的转换顺序在ADC_SQRx寄存器中选择。规则组中转换的总数应写入ADC_SQR1寄存器的L[3:0]位中。

注入组由多达4个转换组成。注入通道和它们的转换顺序在ADC_JSQR寄存器中选择。注入组里的转换总数目应写入ADC_JSQR寄存器的L[1:0]位中。


如何理解规则通道组合注入通道组?


所谓过则通道就是一般的转换规则组,所有该组内的通道按顺序进行转换,而注入通道组的转换则是有较高优先级的,可以打断规则通道组的转换。规则通道相当于你正常运行的程序,而注入通道呢,就相当于中断。在你程序正常执行的时候,中断是可以打断你的执行的。同这个类似,注入通道的转换可以打断规则通道的转换, 在注入通道被转换完成之后,规则通道才得以继续转换。


2.1.2 规则/注入通道数据寄存器

通道数据寄存器用来保存AD转换的结果,数据以左对齐或右对齐的方式存储。可以看到有四个注入通道数据寄存器,而所有的规则通道组只有一个数据寄存器!而每个注入通道都有一个单独的数据寄存器。因为规则通道转换的值储存在一个仅有的数据寄存器中,所以当转换多个规则通道时需要使用DMA,这可以避免丢失已经存储在ADC_DR寄存器中的数据。


ADC 注入数据寄存器x (ADC_JDRx) (x= 1..4)

JDATA[15:0]:注入转换的数据 (Injected data)

这些位为只读,包含了注入通道的转换结果,数据是左对齐或右对齐。


ADC规则数据寄存器(ADC_DR)

ADC2DATA[15:0]:ADC2转换的数据 (ADC2 data)

在ADC1中:双模式下,这些位包含了ADC2转换的规则通道数据。见11.9:双ADC模式

在ADC2和ADC3中:不使用这些位。


DATA[15:0]:规则转换的数据 (Regular data)

这些位为只读,包含了注入通道的转换结果,数据是左对齐或右对齐。


2.2 ADC输入单元

输入单元主要包括电源和参考电压、时钟、模拟输入通道、触发通道。


2.2.1 电源和参考电压

工作电源VDDA、VSSA


ADC使用一个独立于VDD的电源供电,过滤和屏蔽来自印刷电路板上的毛刺干扰,ADC的电源引脚为VDDA,以及独立的电源地VSSA。


参考电压VREF+、VREF-


为了确保输入为低压时获得更好精度,用户可以连接一个独立的外部参考电压ADC到VREF+和 VREF-脚上。VREF+的电压范围为2.4V~VDDA(一般直接接VDD)。64脚或以下的封装上没有VREF+和VREF-引脚,他们在芯片内部与ADC的电源(VDDA)和地(VSSA)相联。


ADC所能测量的电压范围就是VREF- ≤ VIN ≤ VREF+。因为一般接VDD(3.3V),故一般使用下,测量范围为0~3.3V。

注(1).VDDA和VSSA应该分别连接到VDD和VSS。


2.2.2 时钟

时钟来源


RCC控制器为ADC时钟提供一个专用的可编程ADC预分频器,如下图(时钟树部分截取)。ADC的时钟是由高速APB2时钟PCLK2经该分频器2、4、6或8分频后获得。注意ADC的输入时钟不得超过14MHz。

时钟配置


ADC预分频器的分频系数可以通过时钟配置寄存器(RCC_CFGR)的位15:14 ADCPRE[1:0]配置


由软件置’1’或清’0’来确定ADC时钟频率

00:PCLK2 2分频后作为ADC时钟

01:PCLK2 4分频后作为ADC时钟

10:PCLK2 6分频后作为ADC时钟

11:PCLK2 8分频后作为ADC时钟

2.2.3 模拟输入通道

STM32的ADC有多达18个通道,可测量16个外部(与GPIO复用)和2个内部(片内温度传感器和)信号源,其中两个内部信号源通道只存在于ADC1中。温度传感器和通道ADC1_IN16相连接,内部参照电压VREFINT和ADC1_IN17相连接。


与GPIO复用映射关系如下,在使用AD功能时,要进行复用使能相关引脚

2.2.4 触发转换

ADC转换可以由软件的方式触发转换,也可以由外部触发的方式进行转换,比如定时器捕获、EXTI线。如果设置了EXTTRIG控制位,则外部事件就能够触发转换。当外部触发信号被选为ADC规则或注入转换时,(仅)它的上升沿可以启动转换。

其中ADC1和ADC2的触发源基本相同,ADC3的触发源见上图右下角。


2.3 ADC输出单元

2.3.1 ADC-中断

规则和注入组转换结束时能产生中断,它们都有独立的中断使能位。ADC1和ADC2的中断映射在同一个中断向量上,而ADC3的中断有自己的中断向量。


2.3.2 ADC-DMA

因为规则通道转换的值储存在一个仅有的数据寄存器中,所以当转换多个规则通道时需要使用DMA,这可以避免丢失已经存储在ADC_DR寄存器中的数据。只有在规则通道的转换结束时才产生DMA请求,并将转换的数据从ADC_DR寄存器传输到用户指定的目的地址。


需要注意的是,只有ADC1和ADC3拥有DMA功能。


3 功能详解

3.1 ADC开关控制

通过设置ADC_CR2寄存器的ADON位可给ADC上电,清除ADON位可以停止转换,并将ADC置于断电模式。


3.2 转换时间

Tcovn=采样时间+12.5 个周期


其中:Tcovn 为总转换时间,采样时间是根据每个通道的 SMP 位的设置来决定的。例如,当 ADCCLK=14Mhz 的时候,并设置 1.5 个周期的采样时间,则得到:Tcovn=1.5+12.5=14 个周期=1us。


3.3 单次转换模式

所谓单次转换是指对所选通道组只转换一次。单次转换模式下,ADC只对所选的通道组内的一个通道执行一次转换,即不管所选通道组内有多少个通道,只对一个通道转换一次。单次也是我们学习或者做简单的应用时常用的模式。该模式既可通过设置ADC_CR2寄存器的ADON位(只适用于规则通道)启动也可通过外部触发启动(适用于规则通道或注入通道)。


如果一个规则通道被转换完成:

转换数据被储存在16位ADC_DR寄存器中

EOC(转换结束)标志被设置

如果设置了EOCIE(转换结束中断允许位),则产生中断。

如果一个注入通道被转换完成:

转换数据被储存在16位的ADC_DRJ1寄存器中

JEOC(注入转换结束)标志被设置

如果设置了JEOCIE(注入转换中断允许位),则产生中断。

然后ADC停止,直到下次启动ADC转换命令。


3.4 连续转换模式

在连续转换模式中,当前面ADC通道转换一结束马上就启动下一次转换,同样之转换通道组里的第一个通道。此模式可通过外部触发启动或通过设置ADC_CR2寄存器上的ADON位启动。


如果一个规则通道被转换完成:

转换数据被储存在16位的ADC_DR寄存器中

EOC(转换结束)标志被设置

如果设置了EOCIE,则产生中断。

如果一个注入通道被转换完成:

转换数据被储存在16位的ADC_DRJ1寄存器中

JEOC(注入转换结束)标志被设置

如果设置了JEOCIE位,则产生中断。


3.5 扫描模式

此模式用来扫描一组模拟通道,与单词转化和连续转换模式不一样的是,扫描模式是以此转换所选通道组里的所有的通道。扫描模式可通过设置ADC_CR1寄存器的SCAN位来选择。一旦这个位被设置,ADC扫描所有被ADC_SQRX寄存器(对规则通道)或ADC_JSQR(对注入通道)选中的所有通道。在每个组的每个通道上执行单次转换。在每个转换结束时,同一组的下一个通道被自动转换。


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


扫描模式一般要通过DMA读!在每次EOC后,DMA控制器把规则组通道的转换数据传输到SRAM中。而注入通道转换的数据总是存储在ADC_JDRx寄存器中。


这些模式之间什么区别呢?


首先搞明白什么是通道、通道组、ADC模块,他们之间的包含关系。

每个ADC模块有18个通道,要使用到的通道任意组合构成通道组。


单次转换、连续转换是针对“通道组”而言的,通道组是最小单元,与组内通道无关。通道组内的通道转换规则由扫描模式、间断模式设置。ADC模块之间的转换规则由双ADC模式设置。


关于单次转换模式、连续转换模式、扫描模式的区别的形象介绍,可以戳这里参考一下。


3.6 间断模式

所谓间断模式是指提前设定好每次触发转换所选通道组里的多少个通道。间断模式只能作用于一组转换,应该避免同时为规则组和注入组设置间断模式。


此模式通过设置ADC_CR1寄存器上的DISCEN位激活。它可以用来执行一个短序列的n次转换(n<=8),此转换是ADC_SQRx寄存器所选择的转换序列的一部分。数值n由ADC_CR1寄存器的DISCNUM[2:0]位给出。一个外部触发信号可以启动ADC_SQRx寄存器中描述的下一轮n次转换,直到此序列所有的转换完成为止。总的序列长度由ADC_SQR1寄存器的L[3:0]定义。


举例:


n=3,被转换的通道 = 0、1、2、3、6、7、9、10 

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

第二次触发:转换的序列为 3、6、7 

第三次触发:转换的序列为 9、10,并产生EOC事件

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


注意,最后一次触发转换时,如果剩下的通道数不够n,剩多少转换多少。注意上述例子的第三次触发,只转换了剩下的两个通道。


3.7 双ADC模式

所谓双ADC模式,是指两个ADC都工作,可以提高工作效率,具体的工作方式由双ADC模式具体设置。在有2个或以上ADC模块的产品中,可以使用双ADC模式。双ADC模式下的触发源均来自ADC1的通道组。


共有6种可能的模式:


独立模式

同步注入模式

同步规则模式

快速交叉模式

慢速交叉模式

交替触发模式

还有可以用下列方式组合使用上面的模式:


同步注入模式 + 同步规则模式

同步规则模式 + 交替触发模式

同步注入模式 + 交叉模式

如果不使用双ADC模式就设置为独立模式,每个ADC接口独立工作,这也是常用的基本模式。


在双ADC模式里,当转换配置成由外部事件触发时,用户必须将其设置成仅触发主ADC,从ADC设置成软件触发,这样可以防止意外的触发从转换。但是,主和从ADC的外部触发必须同时被激活。

在双ADC模式里,为了在主数据寄存器上读取从转换数据,必须使能DMA位,即使不使用DMA传输规则通道数据。


3.7.1 同步模式

所谓同步模式是指,对于一个通道组内的所有通道的转换工作由ADC1和ADC2同时工作来完成,以一个通道组内的16个通道的同步模式转换为例,如下图所示。同步模式的组可以是规则组也可以是注入组,因此又分别称为同步规则模式、同步注入模式。

在同步模式中,必须转换具有相同时间长度的序列,或保证触发的间隔比2个序列中较长的序列长,否则当较长序列的转换还未完成时,具有较短序列的ADC转换可能会被重启。不要在2个ADC上转换相同的通道(两个ADC在同一个通道上的采样时间不能重叠)。


3.7.2 交叉模式

所谓交叉模式是指ADC1和ADC1对规则通道组内的一个通道的转换工作交叉进行,该模式只适用于规则通道组中的一个通道,且在交叉模式下不能有注入通道的外部触发产生。根据交叉进行的快慢又分为快速交叉模式和慢速交叉模式。快速交叉模式下,读一个同道进行转换的第二个ADC与第一个ADC的时间间隔是7个ADC时钟周期,慢速交叉模式的时间间隔是14个时钟周期。


对于快速交叉模式:


外部触发产生后:

ADC2立即启动并且

ADC1在延迟7个/14个ADC时钟周期后启动

如果同时设置了ADC1和ADC2的CONT位(连续转换),所选的两个ADC规则通道将被连续地转换。

对于慢速交叉模式:


触发产生后:

ADC2立即启动并且

ADC1在延迟14个ADC时钟周期后启动

在延迟第二次14个ADC周期后ADC2再次启动,如此循环。

ADC1产生一个EOC中断后(由EOCIE使能),产生一个32位的DMA传输请求(如果设置了DMA位),ADC1_DR寄存器的32位数据被传输到SRAM,ADC1_DR的上半个字包含ADC2的转换数据,低半个字包含ADC1的转换数据。在28个ADC时钟周期后自动启动新的ADC2转换。在这个模式下不能设置CONT位,因为它将连续转换所选择的规则通道。

在通道0上的快速/慢速交叉模式分别如下图所示

对于慢速交叉模式下,采样时间小于14个ADC时钟周期;快速模式下,采样时间小于7个ADC时钟周期。


3.7.3 交替触发模式

所谓交替触发模式是指触发信号交替触发ADC1和ADC2上的注入通道组的转换,该模式只使用与注入通道组。


当第一个触发产生时,ADC1上的所有注入组通道被转换。

当第二个触发到达时,ADC2上的所有注入组通道被转换。

如此循环……

如果允许产生JEOC中断,在所有ADC1/ADC2注入组通道转换后产生一个JEOC中断。


交叉模式和交替触发模式什么区别?


交叉模式是一个触发信号后,ADC1和ADC2对规则通道组里的一个通道交替转换。ADC1采样完了开始转化,这是ADC2利用ADC1转换的空闲开始采样,然后进行转换,这样可以大大提高对这个通道的采样率。


交替触发模式是ADC1注入通道组和ADC2注入通道组对触发信号交替响应。


多种模式的配置可以参见这篇文章


3.8 校准

ADC有一个内置自校准模式。校准可大幅减小因内部电容器组的变化而造成的准精度误差。在校准期间,在每个电容器上都会计算出一个误差修正码(数字值),这个码用于消除在随后的转换中每个电容器上产生的误差。通过设置ADC_CR2寄存器的CAL位启动校准。一旦校准结束,CAL位被硬件复位,可以开始正常转换。建议在上电时执行一次ADC校准。校准阶段结束后,校准码储存在ADC_DR中。


4 基本功能相关寄存器

ADC的寄存器很多,这里只列举和规则通道的单次转换相关的寄存器。


4.1 ADC控制寄存器 1(ADC_CR1)

位[19:16]:  DUALMOD[3:0]:双模式选择 (Dual mode selection)


软件使用这些位选择操作模式。最基本的使用就是独立模式。


0000:独立模式

0001:混合的同步规则+注入同步模式

0010:混合的同步规则+交替触发模式

0011:混合同步注入+快速交叉模式

0100:混合同步注入+慢速交叉模式

0101:注入同步模式

0110:规则同步模式

0111:快速交叉模式

1000:慢速交叉模式

1001:交替触发模式

位[8]: SCAN:扫描模式 (Scan mode)

0:关闭扫描模式;

1:使用扫描模式。

该位由软件设置和清除,用于开启或关闭扫描模式。在扫描模式中,转换由ADC_SQRx或ADC_JSQRx寄存器选中的通道。

如果分别设置了EOCIE或JEOCIE位,只在最后一个通道转换完毕后才会产生EOC或JEOC中断。


位[7]: JEOCIE:允许产生注入通道转换结束中断 (Interrupt enable for injected channels)

该位由软件设置和清除,用于禁止或允许所有注入通道转换结束后产生中断。

0:禁止JEOC中断;

1:允许JEOC中断。当硬件设置JEOC位时产生中断。


位[5]: EOCIE:允许产生EOC中断 (Interrupt enable for EOC) 

该位由软件设置和清除,用于禁止或允许转换结束后产生中断。

0:禁止EOC中断;

1:允许EOC中断。当硬件设置EOC位时产生中断。


4.2 ADC控制寄存器 2(ADC_CR2)

位[0]: ADON:开/关A/D转换器 (A/D converter ON / OFF)

该位用于开关AD转换器,当该位为’0’时,写入’1’将把ADC从断电模式下唤醒。当该位为’1’时,写入’1’将启动转换。

0:关闭ADC转换/校准,并进入断电模式;

1:开启ADC并启动转换。

为防止触发错误,如果该位和其他位一起改变,将不会触发转换。


位[1]: CONT:连续转换 (Continuous conversion)

如果设置了该位,则转换将连续进行直到该位被清除。

0:单次转换模式;

1:连续转换模式。


位[2]: CAL:A/D校准 (A/D Calibration) 

该位由软件设置以开始校准,并在校准结束时由硬件清除。

0:校准完成;

1:开始校准。


位[3]: RSTCAL:复位校准 (Reset calibration)

该位由软件设置并由硬件清除。在校准寄存器被初始化后该位将被清除。

0:校准寄存器已初始化;

1:初始化校准寄存器。


位[11]: ALIGN:数据对齐 (Data alignment) 

该位由软件设置和清除。参考图29和图30。

0:右对齐;

1:左对齐。


位[19:17]: EXTSEL[2:0]:选择启动规则通道组转换的外部事件 (External event select for regular group)

这些位选择用于启动规则通道组转换的外部事件

一般最简单的使用为软件触发。


位[22]: SWSTART: 开始转换规则通道 (Start conversion of regular channels)

由软件设置该位以启动转换,转换开始后硬件马上清除此位。如果在EXTSEL[2:0]位中选择了

SWSTART为触发事件,该位用于启动一组规则通道的转换,

0:复位状态;

1:开始转换规则通道。


4.3 ADC采样时间寄存器 1~3(ADC_SMPR1~3)

位[23:0]: SMPx[2:0]:选择通道x的采样时间 (Channel x Sample time selection)

这些位用于独立地选择每个通道的采样时间。在采样周期中通道选择位必须保持不变。

000:1.5周期 100:41.5周期

001:7.5周期 101:55.5周期

010:13.5周期 110:71.5周期

011:28.5周期 111:239.5周期


关于转换时间的计算在前文已经提到了


ADC转换时间Tcovn=采样时间+12.5 个周期 


4.4 ADC规则序列寄存器 1~3(ADC_SQR1~3)

这三个寄存器都大同小异,这里以1为例。

位[23:20]: L[3:0]:规则通道序列长度 (Regular channel sequence length)

这些位由软件定义在规则通道转换序列中的通道数目。

0000:1个转换

0001:2个转换

…… 

1111:16个转换


SQ13~16 则存储了规则序列中第 13~16 个通道的编号(0~17)


4.5 ADC状态寄存器(ADC_SR)

位[1]: EOC:转换结束位 (End of conversion)

该位由硬件在(规则或注入)通道组转换结束时设置,由软件清除或由读取ADC_DR时清除

0:转换未完成;

1:转换完成。


此外还有

STRT:规则通道开始位 (Regular channel Start flag)

JSTRT:注入通道开始位 (Injected channel Start flag)

JEOC:注入通道转换结束位 (Injected channel end of conversion)

AWD:模拟看门狗标志位 (Analog watchdog flag)


参考资料:


《STM32中文/英参考手册》


《正点原子开发指南》

关键字:STM32  ADC  输入时钟 编辑:什么鱼 引用地址:http://news.eeworld.com.cn/mcu/ic565144.html

上一篇:STM32-快速上手ADC
下一篇:STM32-电源【ADC供电、VDDA、VSSA、VREF、VBAT等】

推荐阅读

窗口看门狗实验——WWDG
概述:什么是窗口看门狗?之所以称为窗口就是因为其喂狗时间是一个有上下限的范围内(窗口),你可以通过设定相关寄存器,设定其上限时间(下限固定)。喂狗的时间不能过早也不能过晚。而独立看门狗限制喂狗时间在0-x内,x由相关寄存器决定。喂狗的时间不能过晚。为什么要窗口看门狗?对于一般的看门狗,程序可以在它产生复位前的任意时刻刷新看门狗,但这有一个隐患,有可能程序跑乱了又跑回到正常的地方,或跑乱的程序正好执行了刷新看门狗操作,这样的情况下一般的看门狗就检测不出来了;如果使用窗口看门狗,程序员可以根据程序正常执行的时间设置刷新看门狗的一个时间窗口,保证不会提前刷新看门狗也不会滞后刷新看门狗,这样可以检测出程序没有按照正常的路径运行非正常地跳过了
发表于 2022-06-23
窗口看门狗实验——WWDG
通用定时器基本原理讲解
概述:STM32定时器:STM32F10x系列总共最多有8个定时器。三种STM32定时器区别:通用定时器功能特点描述:STM3 的通用 TIMx (TIM2、TIM3、TIM4 和 TIM5)定时器功能特点包括:位于低速的APB1总线上(APB1)16 位向上、向下、向上/向下(中心对齐)计数模式,自动装载计数器(TIMx_CNT)。16 位可编程(可以实时修改)预分频器(TIMx_PSC),计数器时钟频率的分频系数 为 1~65535 之间的任意数值。4 个独立通道(TIMx_CH1~4),这些通道可以用来作为:输入捕获输出比较PWM 生成(边缘或中间对齐模式)单脉冲模式输出可使用外部信号(TIMx_ETR)控制定时器和定时器互连
发表于 2022-06-23
通用定时器基本原理讲解
ADC模数转换+实验
ADC概述:Analog-to-Digital Converter的缩写。指模/数转换器或者模拟/数字转换器。是指将连续变量的模拟信号转换为离散的数字信号的器件。典型的模拟数字转换器将模拟信号转换为表示一定比例电压值的数字信号。STM32F10x ADC特点:12位逐次逼近型的模拟数字转换器。最多带3个ADC控制器最多支持18个通道,可最多测量16个外部和2个内部信号源。支持单次和连续转换模式转换结束,注入转换结束,和发生模拟看门狗事件时产生中断。通道0到通道n的自动扫描模式自动校准采样间隔可以按通道编程规则通道和注入通道均有外部触发选项转换结果支持左对齐或右对齐方式存储在16位数据寄存器ADC转换时间:最大转换速率 1us。(最大
发表于 2022-06-23
ADC模数转换+实验
FLASH闪存编程原理与步骤
STM32编程方式:1,在线编程(ICP,In-Circuit Programming):通过JTAG/SWD协议或者系统加载程序(Bootloader)下载用户应用程序到微控制器中。2, 在程序中编程(IAP,In Application Programming):通过任何一种通信接口(如IO端口,USB,CAN,UART,I2C,SPI等)下载程序或者应用数据到存储器中。也就是说,STM32允许用户在应用程序中重新烧写闪存存储器中的内容。然而,IAP需要至少有一部分程序已经使用ICP方式烧到闪存存储器中(Bootloader)。闪存模块存储器组织:按照不同容量,存储器组织成32个1K字节/页(小容量),128个1K字节/页(中容
发表于 2022-06-23
FLASH闪存编程原理与步骤
FLASH模拟EEPROM实验
FLSH操作总结:1, 锁定解锁函数上面讲解到在对FLASH进行写操作前必须先解锁,解锁操作也就是必须在FLASH_KEYR寄存器写入特定的序列(KEY1和KEY2),固件库函数实现:void FLASH_Unlock(void);同样的道理,在对FLASH写操作完成之后,我们要锁定FLASHvoid FLASH_Lock(void);2,写操作函数固件库提供了三个FLASH写函数:FLASH_Status FLASH_ProgramWord(uint32_t Address, uint32_t Data);FLASH_Status FLASH_ProgramHalfWord(uint32_t Address, uint16_t D
发表于 2022-06-23
FLASH模拟EEPROM实验
STM32学习笔记(2)外部中断
一、中断1.什么是中断操作系统需要管理外设,但是外设的速度远远低于CPU的速度,所以我们需要一种机制来弥补这种速度鸿沟,提高CPU的效率。为此我们引入了中断机制,让外设在需要操作系统处理外设相关事件的时候,能够主动通知操作系统,即当CPU收到中断或者异常的事件时,打断操作系统和应用的正常执行,暂停执行当前的程序或任务,让操作系统完成外设的相关处理,在完成对这个事件的处理后,再恢复操作系统和应用的正常执行。举个栗子,当你在读文章时忽然来了一个电话,你会先去接电话,等电话挂断后你又接着回来读文章,接电话这一过程就是执行中断。正是由于中断机制,计算机系统才能有条不紊地“同时”完成多个任务,中断机制实质上帮助提高了并发“处理”能力。2.名词
发表于 2022-06-22
<font color='red'>STM32</font>学习笔记(2)外部中断

推荐帖子

请教,我现在懂C语言和单片机,学习arm的话先看哪本书?哪个网站好点??
我们仪器上用的ARM芯片就是LPC2214,谢谢 请教,我现在懂C语言和单片机,学习arm的话先看哪本书?哪个网站好点??
godblessyou ARM技术
出售一些st nucleo板子
大四该滚出实习了,学校安排的实习,具体去哪不清楚,到时东西不好带。现在把st的板子出一些。 所有的,一块80不包邮。可以芯币,e金币抵扣部分。 咸鱼链接:https://g.alicdn.com/idleFish-F2...48&forceFlush=1 出售一些stnucleo板子
lehuijie 淘e淘
使用OWNER-DRAN方法将BUTTON改为CHECKBOX使用
按扭ID_BTN_CIRCLE和ID_BTN_RANDOM要用图片做成CheckBox功能,分别根据两个全局变量确定选中和未选中状态. 然后在BN_CLICKED事件中分别改变这两个全局变量. caseWM_DRAWITEM: lpdis=(LPDRAWITEMSTRUCT)lParam; if(ID_BTN_CIRCLE==lpdis->CtlID) {
cranes_u 嵌入式系统
英飞凌推出单片低功耗调谐器集成电路TUA6039
英飞凌推出经济实惠的低功耗调谐器集成电路TaifunTUA6039。TUA6039在一颗芯片上集成了RF(射频)和IF(中频)功能,开创了高性能、低成本和小型化数字电视调谐器集成电路的新时代。TUA6039面积仅为传统RF+IF调谐器的一半。这种高度集成的IC,为调谐器、机顶盒和电视制造商提供了可靠的解决方案。它占用的电路板面积和功耗仅为上一代产品的一半。因此,对于目前仍在使用由TUA6034(射频多媒体调谐器)和TDA6192(中频放大器)构成的英飞凌双片解决方案的客户,TUA6039是一
fighting 模拟电子
光通訊主動元組件導論3/8
光通訊主動元組件導論 03光源—發光二極體及半導體雷射.ppt 光通訊主動元組件導論3/8
leechangcheng RF/无线
【平头哥RVB2601创意应用开发】player_demo移植
RVB2601的CDK平台提供了一些开发demo工程,我的项目要用到playerdemo这个工程,今天我们来学习这个demo并移植。 打开CDK,view菜单下可以打开welcome页面,然后点击新建工程在打开的页面搜索playerdemo即可添加该工程到work空间: 下图为该demo的主函数部分: intmain(void) { //mustcallthisfuncwhenusec++ cxx_system_init();
打破传统 平头哥RISC-V RVB2601活动专区
小广播
实战 培训 开发板 精华推荐

何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2022 EEWORLD.com.cn, Inc. All rights reserved