深度解读STM32数据保存与毁灭

2020-02-14来源: elecfans关键字:深度解读  STM32  数据保存  毁灭

一、认识ADC兼进一步看懂STM的库

ADC是多少位的?

12位

ADC有多少个?

1个、2个或多至3个,视不同的器件而不同;每个又有多个通道。

关于通道的名堂:

10.3.3 通道选择

有16个多路通道。可以把转换分成两组:规则的和注入的。在任意多个通道上以任意顺序进行的一系列转换构成成组转换。例如,可以如下顺序完成转换:通道3、通道8、通道2、通道2、通道0、通道2、通道2、通道15。

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

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


它们有什么区别:

不同的组转换后保存数据的地方不一样,产生的中断标志不一样。

在扫描模式下,规则组会有能力把各通道数据通过DMA传给SRAM,而注入组的数据总是存在在ADC_JDRx中。


还有其他的一些区别,这里暂不一一罗列。

ST为什么这么样来设计AD转换,肯定是有理由的,但是我不知道,因此,我也就难以深入地理解AD转换的各种模式。这也就是说,对于知识的理解,要把它放在其应用背景中去学习才能学得好。因此,其他知识积累得越多,学起来也就越快,这也就是所谓的“功底”问题。某人功底深厚,意味着他见多识广,遇到的事情多,能够很快找到处理某件事情的“原型”。当然,也有一些人抽象学习能力极强,就算找不到“原型”,他也能学得很好。基本上,这类人的科学素养更高一些,在工程师、工科类学生中并不多见。


闲话少说,下面来看怎么样来使用AD转换器?

以一段源程序为例分别来解读,同时进一步理解STM32中有关符号的含义,相信以后再读库源程序,定能更上一层楼。


为看得清楚一些,以下代码用一种颜色表示。

/* ADC1 开始准备配置*/

ADC_InitStructure.ADC_Mode = ADC_Mode_Independent;

/*设置ADC-》CR1的19:16,确定ADC工作模式,一共有10种工作模式

#define ADC_Mode_Independent ((uint32_t)0x00000000) 0000:独立模式

#define ADC_Mode_RegInjecSimult ((uint32_t)0x00010000) 0001:混合的同步规则+注入同步模式

#define ADC_Mode_RegSimult_AlterTrig ((uint32_t)0x00020000) 0010:混合的同步规则+交替触发模式

#define ADC_Mode_InjecSimult_FasTInterl ((uint32_t)0x00030000) 0011:混合同步注入+快速交替模式

#define ADC_Mode_InjecSimult_SlowInterl ((uint32_t)0x00040000) 0100:混合同步注入+慢速交替模式

#define ADC_Mode_InjecSimult ((uint32_t)0x00050000) 0101:注入同步模式

#define ADC_Mode_RegSimult ((uint32_t)0x00060000) 0110:规则同步模式

#define ADC_Mode_FasTInterl ((uint32_t)0x00070000) 0111:快速交替模式

#define ADC_Mode_SlowInterl ((uint32_t)0x00080000) 1000:慢速交替模式

#define ADC_Mode_AlterTrig ((uint32_t)0x00090000) 1001:交替触发模式

*/

ADC_InitStructure.ADC_ScanConvMode = ENABLE;

/* ADC_ScanConvMode在stm32f10x_adc.h中定义如下:

alState ADC_ScanConvMode;

这个参数用来指定转换是扫描(多通道模式)还是单个转换(单通道模式),该参数可以被设置为DISABLE或者ENABLE。


在数据手册中,SCAN位是这样描述的:扫描模式

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


0:关闭扫描模式

1:使用扫描模式

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

这样,如果一次需要对多个通道进行转换,这位就必须设置为ENABLE。

*/

ADC_InitStructure.ADC_ConTInuousConvMode = ENABLE;

/* alState ADC_ConTInuousConvMode;

这个参数用来指定转换是连续进行还是单次进行,它可以设置为ENABLE或者DISABLE。

这两个参数中出现了alState数据类型,那么它是什么呢,顺滕摸瓜,可以看到它的的定义如下:

typedef enum {DISABLE = 0, ENABLE = !DISABLE} alState;

因此,它相当于是一个位变量,我的理解,DISPABLE=0这个没有问题,ENABLE=!DISABLE是否应该确切的是1??否则下面的设置就会有问题。

用这两个符号来对寄存器中的位进行设置的话,还需要提供位置信息,如下面的代码所示:

tmpreg1 |= (uint32_t)(ADC_InitStruct-》ADC_DataAlign | ADC_InitStruct-》ADC_ExternalTrigConv |

((uint32_t)ADC_InitStruct-》ADC_ContinuousConvMode 《《 1));

这个《《1就是位置信息,CONT是CON2寄存器的位1

这样,我们看STM32的库又能多看懂一点了。

用于设定CON2的CONT位(位1):是否连续转换

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

关键字:深度解读  STM32  数据保存  毁灭 编辑:什么鱼 引用地址:http://news.eeworld.com.cn/mcu/ic488222.html 本网站转载的所有的文章、图片、音频视频文件等资料的版权归版权所有人所有,本站采用的非本站原创文章及图片等内容无法一一联系确认版权者。如果本网所选内容的文章作者及编辑认为其作品不宜公开自由传播,或不应无偿使用,请及时通过电子邮件或电话通知我们,以迅速采取适当措施,避免给双方造成不必要的经济损失。

上一篇:一文看懂STM32单片机和51单片机区别
下一篇:基于STM32芯片的一款智能台灯

关注eeworld公众号 快捷获取更多信息
关注eeworld公众号
快捷获取更多信息
关注eeworld服务号 享受更多官方福利
关注eeworld服务号
享受更多官方福利

推荐阅读

红米深度解读:骁龙765G为何被称为“5G神U”
Redmi红米手机官方详解了RedmiK30即将首发的骁龙765G为何被称为“5G神U”,我们一起来看看。  据官方介绍,骁龙765系列采用了目前最顶级的7nmEUV工艺,相比8nm工艺功耗降低35%。  EUV是采用波长13.5nm的极紫外线光刻技术,可以在SoC硅基上进行更为精密的光刻,实现更小的沟道。比主流193nm波长光源,光刻分辨率提升了约3.3倍。让处理器可以集成更多晶体管,或者说相同晶体管数量下芯片面积更小,同时拥有更低的功耗和更好的性能。  骁龙765G采用了目前最先进的5G SoC方案,集成骁龙X52调制解调器及射频系统,是全球5G商用之路的重要里程碑。&
发表于 2019-12-06
红米深度解读:骁龙765G为何被称为“5G神U”
射频前端产业链深度解读
终端设备的无线通信模块主要分为天线、射频前端模块(RF FEM)、射频收发模块、以及基带信号处理器四部分。其中射频前端是无线连接的核心,是在天线和射频收发模块间实现信号发送和接收的基础零件。 射频前端芯片主要是实现信号在不同频率下的收发,包括射频功率放大器(PA)、射频低噪声放大器(LNA)、射频开关、滤波器、双工器等。目前射频前端芯片主要应用于手机和通讯模块市场、WiFi路由器市场和通讯基站市场等。  射频前端芯片市场规模主要受移动终端需求的驱动。近年来,随着移动终端功能的逐渐完善,手机、平板电脑等移动终端的出货量持续上升,而射频前端的市场规模也随之上升。根据 Gartner 统计,包含手机、平板电脑
发表于 2019-07-08
射频前端产业链深度解读
Arm全新GPU深度解读:一次重大飞跃
集成度会越来越高,计算能力越来越强,不仅如此,功能也会越来越多,硬软件的可靠性越来越高,与之带来对功能安全等级的要求也随之变高。芯片公司应该与汽车OEM深度合作,才能定义出真正的智能汽车芯片。机遇也是挑战更多的技术创新与技术变革带来的不仅仅是机遇,同时也会带来巨大的挑战。根据2018年德勤全球汽车消费者研究显示,在全球汽车行业的共同努力下,仍有45%的消费者认为自动驾驶不安全,虽然这与前一年相比已经大幅下降。消费者的不信任并不是没有由来的,车辆功能复杂性大幅提升,系统功能设计不足、人员误用、外界干扰等因素,给行车安全带来越来越大的风险,智能驾驶汽车面临更大的安全挑战。泛亚汽车技术中心有限公司系统安全与电控工具链高级经理童菲提出了这样的
发表于 2019-05-28
Arm全新GPU深度解读:一次重大飞跃
万字深度报告:全面解读汽车电子产业机遇!
汽车电子产业,预计将是继家电、PC和手机之后又一次全产业链级别的大发展机遇,不同的是,其构成产品附加值更高(高稳定/高速度/高精度/低功耗等),其产业链协同效应更加明显(参与者贯通传统行业和IT行业),其增/存量市场更加广阔(第一次用工业类属性定义电子产品,传统车企和IT巨头纷纷介入),其战略意义更加凸显(产业逐渐成熟后门槛效应更加显著)。  安信证券汽车电子团队市场首次,从“7个层级深度解析”这次产业发展红利带来巨大且丰富的投资机遇!2007年苹果切入手机行业,借助iphone的发布引领了智能手机时代,成为智能手机的领先者,重新定义了手机行业,智能驾驶及新能源汽车的加速渗透,国际龙头企业的纷纷布局入场也有望拉开汽车电子
发表于 2019-04-12
万字深度报告:全面解读汽车电子产业机遇!
深度解读 | “超宽一体屏”体验设计八大原则(二)
2. 用户注意力管理原则在向更高级的自动驾驶发展阶段人依然是驾驶过程的主要管控者,那么驾驶仍是一项复杂的信息处理过程,为了确保安全,驾驶者在整个过程必须处理大量的外部信息(例如车辆之间的距离判断、交通规则标志、信号灯、路面标记、道路曲率、变道、转向等等),驾驶者能否及时地处理整个驾驶过程的接收信息对驾驶安全而言至关重要。在超宽一体屏的应用趋势下,如何平衡驾驶操控的安全和体验性,这里我们从驾驶操控过程人对信息的处理三个阶段展开分析:感知(检测和识别)、决策和反应。2.1 人为因素在驾驶事故中的影响研究发现,人为因素是机动车碰撞的最常见原因。以下是人为因素,环境因素和车辆因素对撞车事故的相对影响。人为因素:包括驾驶者感知危险的能力,决定
发表于 2018-12-03
深度解读 | “超宽一体屏”体验设计八大原则(二)
STM8S库文件判断指定IO输入引脚电平GPIO_ReadInputPin有问题
/**  * @brief  Reads the specified GPIO input data pin.  * @param  GPIOx : Select the GPIO peripheral number (x = A to I).  * @param  GPIO_Pin : Specifies the pin number.  * @retval BitStatus : GPIO input pin status.  */BitStatus GPIO_ReadInputPin(GPIO_TypeDef* GPIOx, GPIO_Pin_Ty
发表于 2020-02-08
小广播
何立民专栏 单片机及嵌入式宝典

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

电子工程世界版权所有 京ICP证060456号 京ICP备10001474号 电信业务审批[2006]字第258号函 京公海网安备110108001534 Copyright © 2005-2020 EEWORLD.com.cn, Inc. All rights reserved