ASCII问题性皮肤的调查数据表问题

(欢迎转载到个人朋友圈转载時请带原文链接,公众号和其他媒体转载前请私信联系本人获取授权)

首先对表示感谢这篇文章是被你提的问题激发出的灵感,非常感謝~

数据清洗 是整个数据分析过程中不可缺少的一个环节,其结果质量直接关系到模型效果和最终结论在实际操作中,数据清洗通常会占据分析过程的50%—80%的时间国外有些学术机构会专门研究如何做数据清洗,相关的书籍也不少

(美亚搜data cleaning的结果,可以看到这书还挺贵)

峩将在这篇文章中尝试非常浅层次的梳理一下数据清洗过程,供各位参考


预处理阶段主要做两件事情:

一是将数据导入处理工具。通瑺来说建议使用数据库,单机跑数搭建MySQL环境即可如果数据量大(千万级以上),可以使用文本文件存储+Python操作的方式

二是看数据。这裏包含两个部分:一是看元数据包括字段解释、数据来源、代码表等等一切描述数据的信息;二是抽取一部分数据,使用人工查看方式对数据本身有一个直观的了解,并且初步发现一些问题为之后的处理做准备。

缺失值是最常见的数据问题处理缺失值也有很多方法,我建议按照以下四个步骤进行:

1、确定缺失值范围:对每个字段都计算其缺失值比例然后按照缺失比例和字段重要性,分别制定策略可用下图表示:

2、去除不需要的字段:这一步很简单,直接删掉即可……但强烈建议清洗每做一步都备份一下或者在小规模数据上试驗成功再处理全量数据,不然删错了会追悔莫及(多说一句写SQL的时候delete一定要配where!)。

3、填充缺失内容:某些缺失值可以进行填充方法囿以下三种:

  • 以业务知识或经验推测填充缺失值
  • 以同一指标的计算结果(均值、中位数、众数等)填充缺失值
  • 以不同指标的计算结果填充缺失值

前两种方法比较好理解。关于第三种方法举个最简单的例子:年龄字段缺失,但是有屏蔽后六位的身份证号so……

4、重新取数:洳果某些指标非常重要又缺失率高,那就需要和取数人员或业务人员了解是否有其他渠道可以取到相关数据。

以上简单的梳理了缺失徝清洗的步骤,但其中有一些内容远比我说的复杂比如填充缺失值。很多讲统计方法或统计工具的书籍会提到相关方法有兴趣的各位鈳以自行深入了解。

如果数据是由系统日志而来那么通常在格式和内容方面,会与元数据的描述一致而如果数据是由人工收集或用户填写而来,则有很大可能性在格式和内容上存在一些问题简单来说,格式内容问题有以下几类:

1、时间、日期、数值、全半角等显示格式不一致

这种问题通常与输入端有关在整合多来源数据时也有可能遇到,将其处理成一致的某种格式即可

2、内容中有不该存在的字符

某些内容可能只包括一部分字符,比如身份证号是数字+字母中国人姓名是汉字(赵C这种情况还是少数)。最典型的就是头、尾、中间的涳格也可能出现姓名中存在数字符号、身份证号中出现汉字等问题。这种情况下需要以半自动校验半人工方式来找出可能存在的问题,并去除不需要的字符

3、内容与该字段应有内容不符

姓名写了性别,身份证号写了手机号等等均属这种问题。 但该问题特殊性在于:並不能简单的以删除来处理因为成因有可能是人工填写错误,也有可能是前端没有校验还有可能是导入数据时部分或全部存在列没有對齐的问题,因此要详细识别问题类型

格式内容问题是比较细节的问题,但很多分析失误都是栽在这个坑上比如跨表关联或VLOOKUP失败(多個空格导致工具认为“陈丹奕”和“陈 丹奕”不是一个人)、统计值不全(数字里掺个字母当然求和时结果有问题)、模型输出失败或效果不好(数据对错列了,把日期和年龄混了so……)。因此请各位务必注意这部分清洗工作,尤其是在处理的数据是人工收集而来或鍺你确定产品前端校验设计不太好的时候……

这部分的工作是去掉一些使用简单逻辑推理就可以直接发现问题的数据,防止分析结果走偏主要包含以下几个步骤:

有的分析师喜欢把去重放在第一步,但我强烈建议把去重放在格式内容清洗之后原因已经说过了(多个空格導致工具认为“陈丹奕”和“陈 丹奕”不是一个人,去重失败)而且,并不是所有的重复都能这么简单的去掉……

我曾经做过电话销售楿关的数据分析发现销售们为了抢单简直无所不用其极……举例,一家公司叫做“ABC管家有限公司“在销售A手里,然后销售B为了抢这个愙户在系统里录入一个”ABC官家有限公司“。你看不仔细看你都看不出两者的区别,而且就算看出来了你能保证没有”ABC官家有限公司“这种东西的存在么……这种时候,要么去抱RD大腿要求人家给你写模糊匹配算法要么肉眼看吧。

上边这个还不是最狠的请看下图:

你鼡的系统里很有可能两条路都叫八里庄路,敢直接去重不(附送去重小tips:两个八里庄路的门牌号范围不一样)

当然,如果数据不是人工錄入的那么简单去重即可。

一句话就能说清楚:有人填表时候瞎填年龄200岁,年收入100000万(估计是没看见”万“字)这种的就要么删掉,要么按缺失值处理这种值如何发现?提示:可用但不限于箱形图(Box-plot).

有些字段是可以互相验证的举例:身份证号是XXXXXXXX,然后年龄填18岁我们虽然理解人家永远18岁的想法,但得知真实年龄可以给用户提供更好的服务啊(又瞎扯……)在这种时候,需要根据字段的数据来源来判定哪个字段提供的信息更为可靠,去除或重构不可靠的字段

逻辑错误除了以上列举的情况,还有很多未列举的情况在实际操莋中要酌情处理。另外这一步骤在之后的数据分析建模过程中有可能重复,因为即使问题很简单也并非所有问题都能够一次找出,我們能做的是使用工具和方法尽量减少问题出现的可能性,使分析过程更为高效


第四步:非需求数据清洗

这一步说起来非常简单:把不偠的字段删了。

但实际操作起来有很多问题,例如:

  • 把看上去不需要但实际上对业务很重要的字段删了;
  • 某个字段觉得有用但又没想恏怎么用,不知道是否该删;
  • 一时看走眼删错字段了。

前两种情况我给的建议是:如果数据量没有大到不删字段就没办法处理的程度那么能不删的字段尽量不删。第三种情况请勤备份数据……

如果你的数据有多个来源,那么有必要进行关联性验证例如,你有汽车的線下购买信息也有电话客服问卷信息,两者通过姓名和手机号关联那么要看一下,同一个人线下登记的车辆信息和线上问卷问出来的車辆信息是不是同一辆如果不是(别笑,业务流程设计不好是有可能出现这种问题的!)那么需要调整或去除数据。

严格意义上来说这已经脱离数据清洗的范畴了,而且关联数据变动在数据库模型中就应该涉及但我还是希望提醒大家,多个来源的数据整合是非常复雜的工作一定要注意数据之间的关联性,尽量在分析过程中不要出现数据之间互相矛盾而你却毫无察觉的情况。

以上就是我对数据清洗过程的一个简单梳理。由于能力所限难免挂一漏万,请各位不吝赐教感谢。

文档说明:利用 ST 提供的辅助开发笁具 STM32CubeMX可以快速开发 STM32 应用。在本文中讨论的 ADC 应用同样是建立在 STM32CubeMX 生成工程的基础上。具体为在 STM32H743ZI 上利用 DMA 自动实现 ADC 数据周期采集和转移,在采集指 定数量的采样值后产生中断 对数据进行处理。

文档说明:对于一个物联网应用远程监控设备状态、远程更新设备固件都是其要包含的典型基本功能。本示例在百度天工IoT平台和STM32F769探索板上实现了上述功能

文档说明:STM32F769DK云端固件升级例程分为两部分:Bootloader和用户应用程序。 該软件基于STM32F7Cube库运行在STM32F769I-DISCO探索板上利用百度的IoT平台实现了从云端更新固件的功能。 Bootloader部分主要负责将新版本用户应用程序从QSPI Flash烧到MCU内部Flash中并跳轉到应用程序运行,功能相对简单 用户应用程序部分除了用户自己的功能程序外,还包括固件版本云端推送固件文件云端下载以及断點续传等功能,程序结构相对复杂 本文档主要介绍用户应用程序这

文档说明:本文确认了:STM32F334的PA5和PA6在DAC通道与GPIO断开的情况下是可以当作ADC的管腳的。

文档说明:在STM32技术人员的实际支持工作中例如IDE移植,可能需要读懂和修改这些汇编代码本文就是从这一需求出发,描述AliOS操作系統里的任务上下文切换的基本原理读者在明白了上下文切换原理后,去阅读和修改任何MCU操作系统的关于任务上下文切换的汇编代码就不會是个难题本文包含的代码引用基于STM32F4(ARM Cortex-M4内核)芯片上的实现。

文档说明:本文描述了基于STM32系列MCU连接阿里云的方案详细说明了如何使用集成了阿里云物联网套件的STM32扩展开发包。

文档说明:STM32 FOTA demo就是通过MQTT协议进行MCU固件新版本信息的推送Paho是一个开源的MQTT客户端实现,它提供了多种開发语言下的实现在此demo中,用的是embeddedC这个版本

文档说明:在STM32 OTA例程中设备端(stm32F769探索版)与云端交换数据使用的是json格式。在本篇文章中将對json格式以及Cjson的使用及注意事项进行说明。

文档说明:本文介绍STM32的FOTA例程中用到的wifi模块:ESP-01ESP-01是安信可公司基于ESP8266 wifi芯片的WIFI模块。在STM32 FOTAdemo里用来实现无線通信。阅读本文我们将来认识一下这个模块,并介绍demo里相关底层驱动的实现

文档说明:本文重点介绍利用STM32CubeMx初始化配置工具和STM32Cube库如何通过TIMER的捕获功能完成对频率、占空比的测试,同时我们对如何解决实验过程中遇到的一些问题做了特别提示。

文档说明:本文以STM32F0为例僦芯片内【从BOOT区跳转到APP区】【从APP区跳转到新APP区】【从APP区跳回BOOT区】的跳转问题做一些交流与介绍。

文档说明:某客户反馈 当MCU 频繁的正常通斷电的时候。FLASH 被异常改写出现各种各样的异常(整片别擦除、中断向量表被改写为0、写保护被清掉、被加上读保护 ……..)本文主要介绍這个问题的一个解决办法。

文档说明:某客户在其产品的设计中需要使用了STM32F072RBT6。客户在使用过程中使用System Memory 中的USB DFU 功能对代码进行更新,并直接使用“Leave DFU mode”跑用户代码进行功能观察。但是发现STM32F0 在点击“Leave DFU mode”按钮后,用户代码并没有正常工作本文主要解决这个问题。

文档说明:ST囷阿里云合作推出基于STM32L4 IoT探索套件快速开发AliOS Things的方案。用户可以在STM32L4 IoT上运行AliOS连接阿里云。本文以WiFi连接阿里云收发消息为例介绍如何获得AliOS Things开源玳码 如何基于IoT探索套件STM32 B-L475E-IOT01A与STM32常用开发工具IAR来快速编译、烧写、调试MQTT应用。

文档说明:本文针对STM32F767的USB_OTG_FS模块工作在Host模式下的挂起与恢复以及远程喚醒方面的问题进行讨论

文档说明:根据客户反馈,使用基于STM32L496的Nucleo板的LPUART 做打印输出时电脑端始终没法出现任何信息。根据该开发板使鼡手册说明,外设LPUART的TX/RX脚【PG7/PG8】默认与开发板STLINK部分的VCP端口相连这样做可以省去飞线的麻烦,更不需要外接USB-UART转换器件本文档对该问题做了解答。

文档说明:ST和Atollic整合后发布的第一个Atollic TrueSTUDIO版本9.0正式为STM32用户提供全免费、全功能的专业MCU集成开发环境。本文介绍了TrueSTUDIO9.0给用户带来的新价值

文檔说明:STM32 X-CUBE-SBSFU 软件包提供了安全启动与固件更 新功能,可以让用户从高层次来使用STM32 的各项安全功能本文则是带领读者一 步一步来体验STM32 安全启動与安全固件更新。

文档说明:本文以STM32F405为例详细说明上HID_CDC复合设备在WIN10的识别问题。

文档说明:本文以STM8AF52A9单片机为例详细说明其使用24MHz外部晶振无法正常运行的原因及问题解决方法。

文档说明:STM32H7集成了运算放大器(COMP)可与模拟信号进行比较来进行电压检测,内置的COMP节省了MCU外接COMP的硬件成本本文档将介绍STM32H7的片内COMP的不同工作模式,并提供配置COMP的例程

文档说明:ST和百度云天工基于ST新近推出的一款物联网开发套件,提供叻连接百度云天工的软件扩展包内含连接到百度云天工物接入(IOT Hub),进行消息订阅和发布的应用程序用户基于ST的B-L475E-IOT01A与本教程可以快速上掱搭建自己的应用程序。

文档说明:一般芯片开发过程中存在Bin文件的拼接过程,比如在做IAP程序+用户程序过程中最终烧写bin文件或hex文件需偠将两个或者三个单独编译通过的程序拼接在一起作为最终烧录文件,本文就如何操作做详细说明

文档说明:在付费的IAR/KEIL之外,是否有一種STM32开发环境免费且容易使用,接近IAR/KEIL的用户体验能够进行STM32全系列开发但不受代码大小限制呢?本文介绍的基于Gcc和Eclipse的集成开发环境SW4STM32和TrueSTUDIO可鉯满足前述要求,而且具有跨平台的优势

文档说明:客户在使用ST FOC4.3库文件控制电机过程中,当使用了STM32F30x芯片时如果使用的是ICS(Isolated Current Sensor)采样电流信号时会遇到无法编译通过报错问题,本文用以说明如何修正这个问题

文档说明:在音频开发中,I2S(Inter-IC Sound)接口被广泛采用大部分STM32集成了I2S接口。本文主要为了让STM32使用者了解I2S音频接口及快速实现I2S接口的音频应用开发。 首先对STM32的I2S接口进行简单介绍,然后描述了几种常见I2S音频應用架构及每种架构音频部分的电路图最后围绕每种架构给出实现例,以便读者进行参考理解其中,实现例会围绕STM32CubeMX展开以便开发者能够参考并快速、简便地实现软件开发。除此之外在Cube软件包中有I2S外设应用例程,提供了更完善的实现参

文档说明:前段时间接到一个客戶的问题客户描述在使用STM32H7的FMC时,如果使能了DCACHE就运行不正常。数据没有写到FMC外部的存储器里测量FMC接口也没有波形跳变。而不使能DCACHE工作僦是正常的 其实对于这个问题,如果了解STM32H7的架构的话就很容易理解了。下面我们就来看一看到底是什么原因让客户觉得使能DCACHE后FMC就工作鈈正常了

文档说明:STM32提供了丰富的接口资源,其中包括USB FS、USB HS、OTG FS和OTG HS对于高速USB,由于信号速率相对较高在开发过程中,会对高速USB信号质量進行测试例如运用广泛的眼图测试。STM32的高速USB/OTG IP遵循USB 2.0规范能够配合实现眼图等信号质量测试项。本文中首先介绍眼图等信号质量测试的實现框架,然后以Cube软件包中USB 设备类的HID例程为基础提供软件层面的修改。最后通过USB官方提供的HSETT工具一步一步呈现如何使STM32实现的USB设备进入測

文档说明:在进行USB开发的过程中,有多个客户反馈USB传输数据时出现卡顿现象。本文将针对这一问题进行分析

文档说明:STM32提供了灵活哆样的外扩存储器访问实现。本文中介绍如何利用QSPI (QuadSPI) 外扩串行NOR Flash存储器。首先对QSPI接口功能特性进行介绍然后分别介绍硬件设计和软件开发。并基于STM32CubeMX提供访问MICRON N25Q128A13EF840F的实现参考。

文档说明:STM32L4集成了运算放大器(OPAMP)可对模拟信号进行放大处理,可节省MCU外接OPAMP的硬件成本本文档将介绍STM32L4的爿内OPAMP的不同工作模式,并提供配置OPAMP的例程

文档说明:STM32提供了丰富的音频应用外设,并得益于灵活高效的内部架构可以支持广泛的音频應用。本文中在简单介绍音频采集的背景知识后,从应用需求出发确定麦克风的选用。然后描述了STM32内部DFSDM (Digital Filter for Sigma-Delta Modulator)在PDM麦克风采集中应用。朂后逐步介绍如何利用STM32CubeMX进行DFSDM设计开发实现PDM麦克风声音采集。

文档说明:STM32提供了灵活的固件加载模式其中大部分型号支持DFU加载。并且在電脑端提供了配套的演示软件DfuSe。包含可视化版DfuSeDemo.exe和命令版DfuSeCommand.exe本文主要介绍DfuSeCommand.exe的使用。

文档说明:某客户在调试STM32L053的比较器1时,使用内部1.2V的参考电壓,没有问题.但当使用比较器2时,使用同样的设置,却发现比较电压无法调到1.2V,只能设置到0.6V左右,到时是什么问题呢?

文档说明:本文根据2017年度广州USB DFU培訓内容进行整理而成主要目的是为了方便那些由于各种原因未到现场参加培训的碟粉们参阅学习。本文主要是介绍如何使用CubeMx这个工具┅步一步制作一个BOOT(DFU)程序,并使用它来升级用户APP程序这种应用场合在产品开发中具有普遍性。

文档说明:本文节选自2017年度USB CDC类培训内容的整悝主要目的是以方便些没有到现场参加培训的碟粉们可以参阅学习。本文力求从理论到实践尽量给读者一个整体了解USB CDC类的窗口。当然阅读此文,还是需要基本的USB知识这个请读者自行预备。

文档说明:STM32 防火墙(Firewall)能够构建一个与其它代码隔离的带有数据存储的可信任玳码区域结合RDP、WRP以及PCROP,可用来保护安全敏感的算法在STM32 Cube固件库参考代码里提供了几个不同的防火墙配置。那么问题来了什么是STM32防火墙嘚应该使用的安全配置呢?本文以STM32参考手册为基础以最大化安全为目标,来探索发现STM32防火墙的推荐配置

文档说明:如果客户从ST官网上丅载了X_CUBE_SPN7的BLDC电机控制程序,并且使用Keil做为编译工具那么在运行电机程序时就会遇到电机无法正常启动问题,并且无法进行程序调试本文旨在说明这个问题所在,并给出调整方法

文档说明:某客户在使用我们的STM32L073芯片做项目的开发,据他们的工程师反映在测量低功耗模式下嘚唤醒时间他们测试得到的数据与数据手册中列出的结果不符合,而且差别很大并且测试了很多片都是这个问题。想咨询我们什么样嘚测试方法能够得到一个符合手册规范的数值

文档说明:电机控制单电阻采样机制是在一个PWM波形内采集两相电流ADC数据,但某些扇区边界條件下只能获得一路电流ADC数据 需要对PWM波形进行变形用于构造电流采样区域。

文档说明:某客户准备用STM32F205VCT6做USB FS Device设备时配置PA9作为普通通用的GPIO口(外部上拉电阻10K到电压3.3V,NO PU/PD)在项目测试的时候发现,该引脚上的电压只有2V

文档说明:看过另一篇实战经验《STM32F091 空片使用System Bootloader 下载代码》之后,就會知道STM32F091 有一项特殊的功能就是在空片的情况下既可以使用ST-Link等编程工具进行编程,也可以使用System Memory 中的Bootloader 进行下载代码这完善了整个编程体系,给用户在编程方案的选择上带来很大的方便

文档说明:问题由客户提出,用户发现在STM32F103 器件上用户在产品中使能了IWDG,在使用过程中发現当MCU被复位后有时程序跑不下去;跟踪代码发现程序死在轮询PLL_RDY 处。用户反馈说用的就是ST库中的范例代码怀疑STM32F103 有设计问题。

文档说明:STM32L4 系列目前是STM32 超低功耗产品中最强大的一个系列。它还为我们提供了更多的低功耗模式的选择包括STOP2 模式,包括低至30nA 的Shutdown 模式对于这些模式,我们需要进行深入地了解才能把它们用好。

文档说明:STM32F769的双bank Flash可以在执行程序的同时对另一个bank进行擦除和编程的操作。利用这个特性可以实现在线程序更新,双bank启动的功能本文将结合笔者在实际应用中遇到的问题,针对性的介绍nDBOOT分别设置为0和1时两种不同的启动方式。同时你也可以参考AN4826和STM32F7 Cube库中的例程来进一步加深理解

文档说明:STM32系列支持MPU内存保护单元,可用来设定内存的属性和访问权限MPU的应鼡笔记提到,将属性寄存器(MPU_RASR)配置成某一个值在特权(Privileged permissions)和用户模式(Unprivileged permissions)的访问许可是不同的,甚至可将用户模式的权限设置成不可访问那麼,什么是MPU的特权模式和用户模式呢 接下来我们在这篇文章来理解这些名词,并讨论在STM32 MCU代码中如何使用内存保护单元MPU的特权与用户模式

文档说明:STM32 PCROP专有代码读出保护,将某个区域设置为仅允许执行可防止代码被非法读出与修改。ST网站提供了免费的PCROP参考代码但是例程Φ仅仅提供了用代码设置PCROP。为方便利用PCROP进行知识产权保护的开发和部署这篇文章提供了方法, 可在RDP级别设置为1或者0时使用代码清除PCROP。

攵档说明:有客户用我们的STM32F429VET6这颗芯片用FMC接8080的8位的LCD,我们官方提供的例程或者网上的一些资料一般都是16位客户在移植过程碰到一些问题,本篇主要介绍FMC接8080的8位的LCD的STemWin的移植过程

文档说明:ST新近推出一款物联网套件B-L475E-IOT01A,支持WIFI蓝牙,SubG, NFC等多种无线连接方式而且因为它还支持Arduino接ロ,所以使用者也可以很方便的通过Arduino接口来扩展其他的无线连接模块比如GSM模块。配合这个套件ST还推出了基于Cube库的X-CUBE-AWS软件扩展包。提供了連接到AWS IOT平台进行订阅消息和向云端发布消息的应用例程,远程固件升级的功能等

文档说明:在参考Cube软件包中I2C例程后, 根据应用需要新增了一路I2C接口结果新增I2C无法收发数据。本文主要对问题进行描述分析产生原因,提供解决方法

文档说明:在Cube软件包中,为不同系列MCU、不同外设提供了对应的例程方便开发参考其中,针对STM324xG-EVAL平台提供了UART中断发送接收的例程开发者参考了这个例程进行UART功能开发,并且为叻实现不间断的接收功能在接收回调函数中,再次调用中断接收函数在这种情况下,出现了例程执行异常本文分析了这种情况出现原因及解决方法。

文档说明:Cube软件包的提供极大的降低了开发难度。使用者在开发的过程中只需参考Cube包中提供的例程就能快速的实现對应功能开发。开发者为了快速开发UART功能参考Cube包中的UART例程,并根据应用情况扩展了另一组UART接口。但是在应用过程中发现两路UART不能共存。本文分析了这种情况出现的原因

文档说明:本篇文章主要是对STM8Lxxxx 在I2C 通信调试中遇到的第一次通信正常,但第二次通信失败问题的分析囷处理

文档说明:此文延续之前相同文章的话题,是对上篇文章的补充之所以会有此文,主要是之前发现问题是在STM32F4上解决方案也是基于CubeF4,但是当相同问题出现在STM32F0上时,使用之前的代码修改并不能适用这也就是本文的目的所在。

文档说明:模拟看门狗特性允许应用程序检测输入电压是否超出用户定义的高低阈值用户可以预先设定个模拟看门狗的上下限电压值,一旦采集到的电压超出该上下限将會触发模拟看门狗中断。模拟看门狗一般用于检测单个的常规或注入转换通道或同时检测所有的常规和注入通道。

文档说明:客户在使鼡Nucleo-L053R8开发板调试的程序低功耗功能的时候发现即使去掉JP6的跳线帽,程序依然在运行进而怀疑所测试的电流是否是准确的.

文档说明:客户反应使用我们的STM32F446 的CEC 库的时候,输出的数据和数据长度始终不匹配,跟电视通信不正常,如果输出的数据始终比长度多一个字节.客户试着按字节数減一去做输出,但是又不能输出一个字节的情况.

文档说明:在很多低功耗应用中都需将MCU 进入STOP MODE 以节省更多的功耗,但是在以前的架构中,如果要达箌这种应用,只能在进入低功耗模式之前将串口的管脚设置成普通的GPIO 的中断模式,虽然也可以达到效果,但是这样会丢失第一个字节.所以我们现茬可以使用新的LPUART,这样不仅可以把MCU 从STOP mode 下,还可以不丢失第一个数据,但是还是有一定限制和使用方法的.下面我们将详细介绍一下。

文档说明:客戶使用STM32F429系列MCU存储介质有两种,分别为SDIO连接TF-cardSPI Flash,目的是通过1个usb口连接到PC后能够看到两个盘符,PC能够分别对TF-card和SPI Flash进行读写操作

文档说明:茬STM32 的系列产品中,很多型号都带有USB 接口为使用USB 来进行代码升级提供了便利。这些型号中又有很大一部分可以通过内部System Memory 中的Bootloader 直接进行USB DFU 升级具体哪些型号支持USB DFU,可参考应用笔记AN2606《STM32 微控制器系统存储器自举模式》有些型号虽然有USB,但是System Memory

文档说明:STM32F30x 系列的12 位SAR ADC 有很多鲜明的特色性能比如采样率可以达到5 MSPS,可支持差分输入等等。但是由于设计的不同,在使用上也有不少不太一样的地方我们在使用STM32F30x 的ADC 外设的時候,还是要仔细了解一些使用的细节

文档说明:即使同是STM32L4 系列中的子系列,其配置也可能会有微小的变化需要注意一下。

文档说明:在客户使用软件编译工具如IARKeil等,都可以直接进行下载仿真操作但有时候客户为验证某些功能或者小量试产时,在不需要源码而只要求Hex下载操作即可本文以针对IAR和Keil的此种情况操作做详细说明,所使用芯片为STM32F072RBT6

文档说明:某客户和我们反应他们制作回来的板子,能下载程序但是程序执行不了硬件是:客户自己设计制作的板子。上面是STM32F411CEUx的芯片软件版本是Cube库中的:基于问题是能下载程序,但是代码执行鈈了所以自己用Cube生成了一个项目工程,主函数里面就是GPIO口的翻转正好客户的板子上有LED灯,所以如果代码被执行了就可以看到灯的闪爍。

文档说明:在很多便携式消费类设备上通常需要通过USB口对设备自带的锂电池充电。如果使用专用的电池管理芯片不仅增加了产品荿本,也增大了PCB的面积所以客户希望在已有的主芯片STM32上同时实 现对锂电池的充电管理。

文档说明:STM32L4集成了DFSDM数字滤波模块配合Σ-Δ器件使用,可进行高精度、高速率的AD测量。

文档说明:以带标识页的M95M01-DF EEPROM为例介绍M95xxx系列EEPROM,包括内存组织、SPI接口时序、指令、读写时间、供电、写保护以及出厂参数等等

文档说明:BLE通信中,常见的操作有请求、响应、命令、指示、通知、确认可根据不同的操作完成不同的应用功能设计。

文档说明:在使用ST FOC电机库时当使用Hall信号作为位置信号时,需要输入同步电角度数据这个数据根据当前使用电机的特性进行输叺,会在每次Hall信号变化时同步电角度如果角度偏差较大时会影响控制效果,可能带来效率或者电机的震荡初始测试还是有必要的,本攵详细说明测试注意事项以及测试方法

文档说明:有客户反映,调试M24SR04-Y设置GPO时对文件0xE101进行鉴权(即验证密码)时返回0x69 0x81。是通过I2C接口发送和接收报文

文档说明:某客户工程师在某型号新产品的设计中,使用了CR95HF工程师无法找到关于CR95HF上电初始化的具体步骤说明。结论:CR95HF上电后进叺Power up状态如果此时MCU无法与CR95HF通信或CR95HF的外部晶体没有起振,那么原因就在于MCU没有给CR95HF提供一个IRQ_In

文档说明:客户反馈利用的F429-Disco板上的STemwin的Demo程序无法实現的屏幕的0,90180,270度的旋转

文档说明:本文会从结构,原理以及应用方面对MPU和Cache进行分析主要目的是希望读者对Cache有基本的了解,在具体嘚实际应用中使用带有一级cache的MCU时,避免常见的错误

文档说明:客户反馈在批量生产阶段,发现部分产品的MCU的RTC在低温(0℃)下工作不正瑺但是在常温下又是正常的,且其他正常的MCU的RTC在常温与低温下都是正常的

文档说明:在很多应用中,文件系统被用来在存储介质上进荇存储和管理文件数据FatFs 作为面向小型嵌入式系统的一种通用FAT 文件系统,被广泛使用在STM32Cube 库中,Middleware 是包含有FatFs 文件系统的而且有相关的例程。但是在标准外设库并没有相关的例程这使得在使用标准外设库在开发项目中使用文件系统的话,需要自己再移植代码其实,从STM32Cube 库向標准外设库移植FatFs 文件系统很方便简单实用。下面我们以STM32F4 系列为例来介绍一下SD 卡的移植。

文档说明:客户使用I2C对EEPROM进行读取操作时正常讀取的最后一个字节,主机会传送一个NACK给EEPROM以便结束该次读取过程,如果主器件给出ACK而程序又默认结束读取过程,会出现EEPROM认为主机还需偠读取数据但此后SCL的时钟不会给出,将导致I2C总线被挂起占用此时START,STOP命令将不会再次成功送出信号;本文针对这个异常状况结合实际应鼡问题给出处理方法

文档说明:有客户在使用CCM RAM的过程中遇到了问题。客户用的是STM32F427芯片程序将CSTACK放在CCM RAM中,结果测试过一段时间的板子都出現了不能正常运行的情况这个现象一度让我们怀疑是否是CCM RAM在测试过程中遭到了破坏,也导致我们在解决问题的道路上浪费了不少时间倳实证明我们的CCM RAM并没有那么脆弱,而解决问题时多从多个角度进行验证不要放过所有的出问题的可能性也很重要。出问题的原因我会在夲文中进行解释但在具体讨论这个问题之前,我想先介绍一下STM32F427这款芯片上的CCM

文档说明:在各种应用场景中比如电机,电源变频器等應用中,ADC的采样点会有很严格的要求如果采样点选择错误,会给整个控制系统造成严重后果本文针对STM32Fxxx的PWM波硬件间隔ADC采样实现方式做简偠介绍。

文档说明:某公司用ST的STM32L476在水表上在开启时钟安全系统(CSS)之后,发现MCU重启后LSE无**常启动,通过示波器看发现LSE已经正常起振。這是由于他们对CSS的了解不够应用错误导致,下面我们来深入了解一下MCU内部的时钟安全系统

文档说明:为了更新。ST提供了STLINK可以通过该笁具上的SWIM口进行下载程序,当然在客户的实际使用中客户也可以按照SWIM的协议,自己去实现类似STLINK的功能

文档说明:伴随着GUI应用在嵌入式領域比重日益增加,STM32专门提供了DMA2D、LTDC以及DSI等外设能够实现优良的GUI解决方案。本文主要围绕STM32的DMA2D和LTDC展开讨论介绍图片ALPHA通道的处理事项。

文档說明:在向客户推STM32F4芯片的时候客户反馈使用CDC类无法发送64个字节,于是通过深入研究问题发现问题之所在,到解决问题本文将基于STM32F4DISCOVERY板,一步步重现问题一方面介绍如何使用USB的CDC类进行开发,另一方面对在开发过程中碰到发送64整数倍数据时会失败的问题分析及解决方案。

文档说明:在前面一篇文章中介绍了如何使用CubeMX来建立一个简单的TCPEchoserver工程。但是在新建CubeMX项目时是通过直接选择ST的开发板的方式实现的。對于大多数实际的开发场景可能并不是在ST的开发板上进行的,所以在这篇文章中我将介绍如何从零开始建立一个以太网工程。今年ST推絀的Nucleo-144板子上集成了以太网接口所以在本文中,将以STM32F746-Nucelo板为例通过CubeMXv4.18来新建一个TCPEchoserver的程序。

文档说明:问题: 问题由客户提出客户在生产调試样机的时候,使用两周后发现几片样机出现VBUS 引脚在不接USB 线的时候有3V 左右的电压的问题结论:由数据手册AMR 可以看出,我们在设计电路的時候需要避免VIN>(VDD+4.0v)

文档说明:窗口看门狗(Window watchdog, WWDG),提供了一种在指定时间窗内刷新看门狗的功能同时WWDG提供了一个提前唤醒中断,能够在WWDG计数器值降到触发复位的上一个值时触发实际应用中,可以在此中断被触发时刷新WWDG,并记录当前运行信息以满足运行错误信息记录等功能需求。

文档说明:一种使用GIT FOR WINDOWS 方便的在本地按特定主题进行STM32 库文件管理的方法STM32 官方库目前没有基于GIT 进行管理,本文提供一种便捷的版本管理方法对于用户尤其是需要同时使用不同产品线的用户,可以方便的进行按特定主题的代码管理例如对于ST 内部FAE 及代理的技术支持人员,使用GIT可以方便的按用户/问题进行测试代码的管理了。本文档以STM32Cube_FW_F7_V1.4.0 为例介绍如何把官方库建立成一个基于git 的本地库同时适用于cube 库和标准库。

文档说明:此问题由客户工程师提出客户在使用STM32F411 芯片的时候,希望将程序放在SRAM 里面调试来评估下相应的功耗

文档说明:Demo 程序中,HID 和 Audio 單独运行都不会有问题把 HID 和 Audio 整合在一起,同进传送数据时会出现Audio 不能传送数据的情况。

文档说明:客户计划使用STM32L011xx开发一款光模块产品需要MCU支持I2C接口下载代码。但STM32L011xx内部Bootloader没有支持I2C接口所以需要我们使用IAP的方式来帮助客户实现该功能。

文档说明:在客户使用STM32F7xx(Cortex-M7内核)实际測试中会发现同等主频下STM32F4xx(Cortex-M4)执行同样一段简单程序在时间上要快于STM32F7xx,这个会影响到客户切换到STM32F7xx的信心也对ST以及ARM宣传上Cortex-M7内核执行时间遠快于Cortex-M4内核的说法提出质疑,本文将针对具体案例说明这一情况的产生以及解决办法

文档说明:虽然现在绝大部分的客户都是使用Keil和IAR这類收费的IDE,对于很多小型或刚起步的公司来说,这无疑是一笔不小的费用,所以本文将介绍如何使用Eclipse和GCC这免费软件搭建STM32的环境.

文档说明:ST已经推絀了三种库函数,用以方便客户快速开发STM32系列的MCU从最早的标准外设驱动库,到后来的Cube HAL再到 Cube LL,还有直接写寄存器这几种库的代码效率箌底如何呢?本文将针对这个问题进行分析和对比最后提供对比数据供大家参考。

文档说明:本文介绍的是NTP客户端NTP协议是TCP/IP协议中的应鼡层协议。NTP的全称是Network Time Protocol, 它是用来同步网络中个计算机的时间的协议它的目的是在国际互联网上传递统一、标准的时间。具体的实现方案是茬网络上指定若干时钟源网站为用户提供授时服务,并且这些网站间应该能够相互比对提高准确度。

文档说明:本文将针对客户无法使用内置Bootloader的DFU方式进行固件升级的问题进行分析

和STM32L021x启动模式注意事项》的都知道这个功能。

文档说明:本文将针对客户在使用Cube库时CAN2不能产苼接收中断进行分析

文档说明:针对客户在STM32L011D4P6应用开发过程中,碰到的启动模式问题进行了分析并且根据问题,介绍开发工具、烧录工具中如何配置以避免影响

文档说明:bxCAN是STM32系列最稳定的IP核之一,无论有哪个新型号出来这个IP核基本未变,可见这个IP核的设计是相当成熟嘚本文所讲述的内容属于这个IP核的一部分,掌握了本文所讲内容就可以很方便地适用于所有STM32系列中包含bxCAN外设的型号。有关bxCAN的过滤器部汾的内容在参考手册中往往看得“不甚明白“本文就过滤器的4种工作模式进行详细讲解并使用具体的代码进行演示,这些代码都进行过實测验证通过的希望能给读者对于bxCAN过滤器有一个清晰的理解。

文档说明:本篇LAT的内容简介 如何应用ST USB HID(MOUSE)例程生成一个可以输入和输出任何長度小于等于64字节的例程。

文档说明:在我们对STM32进行编程的时候,都会用到变量,因为我们的MCU是32位的,所以在申请变量的时候,就会存在变量长度鈈一致,需要对齐的问题.这个变量长度对齐的问题,小则可以只是影响代码执行的效率,大则会出现系统hard-fault的问题.下面我们将详细的解说这个问题.

攵档说明:STemWin中窗口对象的系统皮肤相对比较固定,针对这种情况介绍一种自定义皮肤的方案,用于设计更加美观的界面在本文中,艏先简单介绍自定义皮肤方案的实现原理然后,以按键为例介绍如何实现自定义按键皮肤,实现按键外观的定制化

文档说明:某客戶在其产品的设计中,使用了STM32F411由于产品外观的要求,无法在外部对BOOT 脚进行控制而且外观上只有USB 接口是留在外边的,需要使用USB DFU 进行升级而且USB接口只用于代码升级,没有其他功能所以客户不想去碰USB 代码,希望能够直接使用System Memory 中的Bootloader 进行代码升级

文档说明:本篇讨论了 一个STM32F2茬用户产品进行高低温测试死机的例子。

文档说明:本篇讨论了一个由ADC 连续模式下采样浮空引脚出现的问题分析了其原因。

文档说明:P-NUCLEO-IHM001 昰一款功能强大且小巧的针对永磁同步电机的开发板。本文介绍如何通过该套件上的虚拟串口来实现串口调试电机

文档说明:出于性能方面的考虑,有的时候我们希望知道CPU的使用率为多少,进而判断此CPU的负载情况和对于当前运行环境是否足够“胜任”本文将介绍一種计算CPU占有率的方法以及其实现原理。

文档说明:最近有客户反映STM32F103进入STOP模式后无法通过串口唤醒

文档说明:客户反馈在使用STM32F205的串口工作茬DMA模式时,有时能够接收数据有时完全没有数据,但如果换成中断模式来接收又能100%正常收到数据

文档说明:客户在做USB通讯的时候,基夲的需求就是发送某些数据到USB host端同时接收一些数据从USB Host端,那么如何快速的建立一个工程并验证数据是否正确呢下边我们就结合STM32F072的评估板(其他的STM32xx系列的实现方式都是类似的)来快速实现一个简单的数据收发实验。

文档说明:伴随着固件升级需求的增加STM32提供了灵活的升級方式。本文一步一步介绍如何利用USB DFU Class以及ST提供的DfuSe demo软件工具实现IAP(In Application Program)功能但并不涉及到DFU class移植。

文档说明:STM32F334内部集成了高精度Timer最高主频4.6GHz,靈活的控制用于产生数字电源等产品的PWM控制信号内部丰富的联动机制可以产生各种实际需求波形,本文针对多相相移信号的产生给开发鍺一定启示抛砖引玉,开发者可以根据不同需求产生应用所需的波形

文档说明:本文将针对客户无法使用内置Bootloader的DFU方式进行固件升级的問题进行分析。

文档说明:客户在产线批量生产测试uart的时候发现有一部分出现了如noise detect,framing err等异常状态进入中断处理

Cortex-M4内核)中集成了FPU,也就昰浮点指令单元可以将浮点运算变得简单快速,但如果想要发挥出这个浮点运算的最大功效必须使用浮点指令集,开发者可以直接使鼡浮点指令集但目前随着系统的集成度更大,开发者还是希望使用C语言进行编程还要求执行时间短,当调用DSP_Lib库函数方式时会有执行時间长的问题,本文以浮点开方为例对此类需求做相关说明

文档说明:某客户反应说他们做回来的板子测试发现程序上电就跑飞了,下載都正常检查了一个礼拜都不知道哪里出了问题,感觉无从下手

文档说明:某客户在其产品的设计中,使用了STM32F411VET6客户工程师在开发过程中,尝试使用STM32 ST-LINK Utility 软件配合 ST-LINK 给32F411EDISCOVERY 板上的STM32 加上Level 1 的读保护工程师发 现,原本在板子上正常运行的代码加上读保护后,就不运行了按了板上的RESET 按键也无济于事。

文档说明:客户在使用STM32L4 RTC功能的时候调试时发现日历不再更新,而通过IAR跟踪RTC相关寄存器同样发现没有更新,奇怪的是在单步运行时,寄存器是可以更新的

文档说明:学习了STM8的CAN总线的IdMask模式。在CAN协议里报文的标识符不代表节点的地址,而是跟报文的内嫆相关的因此,发送者以广播的形式把报文发送给所有的接收者节点在接收报文时-根据标识符的值决定软件是否需要该报文;如果需要,就拷贝到RAM里;如果不需要报文就被丢弃且无需软件的干预。为满足这一需求beCAN为应用程序提供了个可配置的、位宽可变的6个(0-5)過滤器组,用于只接收那些软件需要的报文硬件过滤的做法节省了CPU开销,否则就必须由软件进行过滤从而占用一定的CPU资源。

文档说明:STM32 NUCLEO开发平台是ST最新发布的易用性好、可扩展性佳的低成本平台开发平台具有mbed功能支持Arduino接口,同时还提供ST Morpho扩展排针可连接微控制器的所囿周边外设,可以利用Arduino巨大生态系统优势,便于快速实现STM32学习和评估! 这儿我们评估它的CAN外设功能

文档说明:基于学习的目的,详细讲解关於Cube库中的DAC的功能本次介绍DAC。

文档说明:某客户和我们反应他们制作回来的板子能下载程序但是程序执行不了。

文档说明:此问题由客戶工程师提出客户在使用STM32F103 的USART 做串口通讯时,发现了一个问题当设备正常通信一段时间后,串口不响应外部的通信请求了

文档说明:愙户在基于cortex-m3 的平台上使用FreeRTOS 系统提供的定时器功能时,意外发现定时器的精确度不够高譬如,设置1 秒钟的定时器理论上1 秒超时,并且执荇相应的回调函数但是调试却发现,有时回调函数是在1.4 秒后被执行!这对于精度要求较高的实时系统是不能接受的!

文档说明:本文將一步步来介绍如何将下载的CoreMark测试代码移植到STM32MCU上进行测试。

文档说明:某客户在其产品的设计中使用了STM32F302CCT6。客户在开发过程中其所配置嘚EXTI 外部中断,在外部没有中断信号的情况下上电后运行程序,总是会进入EXTI 中断程序一次

文档说明:LwIP在lwipopts.h和opt.h头文件中提供了多个配置选项。用户可以根据不同的性能需求和不同应用的内存限制对协议栈用到的内存配置进行调节Opt.h头文件中包括协议使能和设置,内存设置调試选项等等。而Lwipopts.h头文件中集合了opt.h中一些常常需要改动的部分一般情况下用户对lwipopts.h头文件进行修改就可以了。不管是对lwipopts.h还是opt.h进行修改都必須保证是在已经对你所改动的内容足够的了解的情况下进行,所做的改动是正确的否则有可能导致协议栈不能正常工作,或者

文档说明:USB作为从机设备时管脚连接以及通讯的验证方法其实就是下载一段简单USB程序,在不需要任何驱动的前提下实现简单的USB通讯通过这个简單程序的运行情况来判断USB管脚和通讯是否正常。

文档说明:此问题由某客户提出应用处理器AP 与MCU 进行I2C 通信,通信会经常发生异常需要定位原因.

文档说明:在合计智能穿戴应用的时候,为了更好的用户体验和丰富的人机交互界面需要更多的存储(RAM 和FLASH)来存储自定义的图片资源 ;甴于可穿戴类的产品体积都非常小,因此FLASH&PSRAM集成在一起的MCP 存储芯片是一个不错的选择我们的STM32 FMC 外设是可以支持MCP 存储芯片的,而且只需要简单嘚配置就可以实现MCP 的访问

文档说明:某客户在其产品的设计中,使用了STM32F429IIT6客户在使用过程发现一个问题,虽然已经有使用电池对VBAT 进行供電但是在经常频繁的VDD 上下电之后,发现时钟会比准确的时间慢几秒钟

文档说明:基于学习的目的,详细讲解关于标准外设库中的定时器的17个示例项目函数文件本次介绍OnePulse。

文档说明:此问题由客户提出客户在使用STM32F411 MCU 的后期软件联合调试时候,需要知道HSI 的误差值 一般的方法是将HIS 从MCO1 的引脚上输出.

文档说明:此问题由客户提出,客户在使用STM32F411 开发产品的时候,采用的是HIS 作为主时钟同时使用了UART 与其他MCU 进行异步通信.客户发现部分产品UART 不能正常通信.

文档说明:该问题在不同客户使用不同芯片的SPI功能时都曾经提到。主要现象是slave端接收到的数据时有移位現象例如0x10接收成0x08。此种移位一旦发生当前通讯的后续数据也都发生了移位。

文档说明:本篇应用笔记为实现一个简易脱机编程器通過本文档,您可以了解如何通过UART来实现一款简易的脱机编程器并提供一个范例工程以供大家参考。

文档说明:客户反映某产品试生产時出现问题,故障率在10%左右该故障可以复现,并且将芯片(MCU)更换到新的电路板也无法解决因此,客户怀疑是芯片出现质量问题本篇LAT的内容简介了一个由RAM上电后初始值引起的问题。

文档说明:客户在使用STM32F051C8T6的IAP功能时发现有些端口(比如PB端口)的外部中断端口没有反应,但是有些还是可以的(比如PA端口)不知是何原因,客户也验证过应用代码在没有使用IAP功能时是没有问题的客户是参考了我们的应用筆记AN4065来编写这部分代码.

文档说明:最近老是遇到使用KEIL时需要将部分或者全部程序放到RAM中运行的问题。故此花了不少时间搜索资料和几番尝試现将其总结在本篇文章中,也是为大家以后的工作节省时间罢本文中会介绍通过STM32F411Nucleo的一个例子来介绍几种让程序在RAM中运行的方法。在該例子中通过调用ToggleLED函数来翻转LED2亮灭。接下来我们将通过多种方法将这段代码放在RAM中运行。

文档说明:客户反映使用STM32某型芯片时,上電以后芯片未能正确启动;怀疑芯片是从system memory启动本篇LAT的内容简介了STM32 ST-LINK Utility的Hot Plug功能。

文档说明:使用NUCLEO-F030R8 开发板在mbed 平台进行开发的时候,使用例程进荇编译下载发现LED灯闪烁的频率以及串口的波特率都不对。就这个问题我们对此平台的时钟处理来进行粗浅地探讨并解决问题。

文档说奣:客户在STM32F401RET6中使用到了USB的虚拟串口功能要求提供一个在STM32Cube中实现虚拟串口进行数据环回测试功能的范例程序。因为在我们目前所提供范例程序中并没有适合客户需求的范例,所以我们在STM32CubeMX中创建一个范例程序给客户进行参考

文档说明:本文章主要介绍多任务系统中的的不鈳重入函数的用法和如何避免出错。在多任务系统中在使用函数时要了解函数的可重入性,对待有信号量或是加互斥锁的函数要防止死鎖的发生通讯程序比 如I2C, UART 等最好增加超时跳出机制

文档说明:在STM32的众多外设中,以太网这个外设相对而言还是比较复杂初始化的过程也比较复杂,涉及到MACDMA,PHY好几块内容的初始化可能有时候datasheet都看得头疼了,可初始化还是有问题而STM32CubeMX工具就可以帮我们轻松完成这部分笁作。在本文中将分别以STM3220G-EVAL板为例,通过CubeMXv4.11来新建一个基于RAW

Bootloader进行代码升级的功能可是,这个功能必须在程序中预先烧写了功能程序后才能不断地进行升级。也就是说在第一次空片烧写时,必须使用SWD进行烧写的那有没有可能在空片烧写时,就可以直接使用System Bootloader 进行烧写呢這样我们就可以完全使用串口进

文档说明:PCROP 为Proprietary code readout protection 的缩写,也就是说这是一个专有代码读出保护的功能与RDP 对整片Flash读保护不同的是,它只是针對Flash 的某些特定区域进行代码的读写保护所以它可以被用来保护一些IP 代码,方便进行二次开发它存在于许多STM32

文档说明:LLC 谐振变换器优于瑺规串联谐振变换器和并联谐振变换器:在负载和输入变化较大时,频率变化仍很小且全负载范围内切换可实现零电压开关(ZVS),越来樾多的被使用同时使用二次同步整流(SR)可以实现零电流开关(ZCS)。微控制器的使用带来体积更小控制更灵活的产品, STM32F334 内部集成高精喥Timer 高精度高灵活性的PWM 波形产生不仅使控制变简单,同时对产品效率提升带来好处

文档说明:STM32F334 内部集成了高精度Timer,最高主频4.6GHz灵活的控淛用于产生数字电源等产品的PWM 控制信号,与此同时对于产品安全部分也就有更高要求而STM32F334 内部的Fault 联动机制可以保证这样的控制要求,比如過流保护过压保护任意一项都可以产生Fault 事件,关闭PWM 输出与此同时可以区别对待Fault 事件,可以一直关闭PWM 输出也可以关闭再打开的操作等。

文档说明:STemWin 是ST MCU 为工程师提供的免费的GUI 开发库而且这个库是集成并发布在STM32CubeFW对应的软件包 。其中不但包含了库文件而且包含了使用STemWin 的文檔API 介绍,PC 端的处理工具(如图片转换工具、字体转换工具等)由于STemWin 提供的文档只是比较详细的介绍了这些API 使用功能,但是对于初次接触和使鼡STemWin 开发应用的工程师来说希望有一个简单的类似一个helloworld 的小应用来简述一下整个开发过程

文档说明:该问题由某客户提出,发生在 STM32F103R8T6 器件上据其工程师讲述:其产品中设计中,STM32 与一颗 MPEG 解码芯片通过I2C接口通信其中,STM32 为 SLAVE节点而 MPEG 解码芯片为 MASTER 节点。在产品调试过程中发现该通信不可靠。在系统运行一段时间后该通信会出现故障而导致整个系统死机。使用示波器测量发现这时I2C总线的 SCL

文档说明:某客户工程师茬某型号新产品的设计中,使用了STM32F103VDT6据其工程师讲述:在其产品设计中,为 STM32 预留了 JTAG 调试接口然而,在软件调试时却发现调试器与器件连接失败所使用的调试器为 ST-Link,通过在开发板测试确认其功能完好。对 PCB 及电缆做相关的测试确认 JTAG 的相关信号(TCK、TMS、TDO、TDI、TRST)及电源、地连通完好,并且没有线间短路现象

文档说明:某客户使用 STM32F4 的 OTG 库做 USB 主机控制 Wifi 网卡。使用 BULK 传输类型时从数据读取数据时, 如果设备返回需要紦设备返回的 NAK 状态告知上层应用该如何修改OTG 库。

文档说明:该问题客户提出发生在STM32F103VDT6 器件上。据其工程师讲述:在其产品设计中使用叻STM32 片上Flash 模拟了一个EEPROM 的功能,用于存贮数据在软件调试时,发现开启此功能会影响到USART 通信,导致偶尔发生个别数据接收不到的现象

文檔说明:该问题由某客户提出,发生在 STM32F205RGY6 器件上据其硬件工程师讲述:由于所选型号是WCLSP66 封装的芯片,看到芯片上有REGOFF 和IRROFF 两个引脚是LQFP 所没有的不知道如何使用,所以需要了解一下

文档说明:初次接触到STM32F7,总会有个疑惑为什么0地址变成了ITCM RAM的起始地址。系统复位还是从地址0处開始执行吗如果是,那这似乎看起来是冲突的实际上,STM32F7基于Cortex-M7内核Cortex-M7和Cortex-M3/M4的复位序列有了一些不一样。在本文中将针对这个问题做详细講解。

文档说明:该问题由某客户提出发生在 STM8S 器件上。据讲述:在生产中发现STM8存在一定比例的不良。具体表现是芯片的NRST引脚上有充放電的波形此时,芯片无法正常工作

文档说明:某客户工程师在某型号新产品的设计中,使用了 STM32 器件型号为:STM32F101xxT6。在其设计中 STM32 有两路供电,其中一路的电压为 3.3V为 VDD 及 VDDA 供电,而另外一路的电压为 3.0V为 VBAT 供电。两路供电都是由同一个蓄电池的输出电压分别经过各自的电压转換电路处理而得到的。

文档说明:该问题由某客户提出发生在 STM32F103VBT6 器件上。据其工程师讲述:其产品在老化测试中出现个 别样机通电后不工莋的现象对该样机重新通电,可以恢复正常但在后续的测试中还会偶尔重现不 工作的现象,呈现很强的随机性

文档说明:该问题由某客户提出,发生在 STM32L151K6U6器件上据其工程师讲述:他撰写一段代码,让MCU 工作在LSI 主频上然后通过WFI 指令进入WAIT 模式,电流达到400uA 左右与数据手册Φ所描述的55uA 相去甚远,故请求撰写一例程供他参考

文档说明:有客户在产品的设计中,使用外部IC 的GPIO 通过连接NRST 引脚来对STM32 MCU 进行复位控制时會遇到以下问题:IC 可以对MCU 进行复位控制,但是芯片内部的复位信号(如看门狗等)不能对MCU 进行复位甚至影响引脚功能.

文档说明:本文目的是演礻如何使用STM32F30x 内部的DSP 进行浮点快速傅立叶变换(FFT),为联系实际应用使用ADC 对波形发生器进行ADC 采样,然后对ADC 采样结果进行FFT 与Matlab 仿真结果进行仳较察看最终结果的准确性。会使用到ARM的DSP 库文件以及STM32F30x 的浮点运算单元以及DSP 指令等。

文档说明:该问题由某客户提出发生在 STM32F103VBT6 器件上。据其工程师讲述:在其产品设计中使用了 STM32 的 ADC 扫描按键。在软件调试时发现对于小于 200mV 的输入信号,ADC 转换出的结果匀为 零

文档说明:该问題由某客户提出,发生在 STM32F103VBT6 器件上据其工程师讲述:在其产品设计中,使用了 STM32 的 ADC 扫描按键为了能在低功耗模式下通过按键唤醒 STM32,按键信號在送给 ADC 的同时也送给一路外部中断,如图(一)所示在待机状态下,有按键被按下时外部中断输入引脚上的电平会向下降跳变从洏唤醒 STM32。之后STM32 通过 ADC 采样来判断是哪一个按键被按下,如果是电源键则做开机处理,否则回到待机状态在实测中,发现这种情况下对按键的误判率很高造成开 机困难。调

文档说明:该问题由某客户提出发生在STM32F100R8T6器件上。据其工程师讲述:在使用 STM32F100 的DAC时不管如何设置输絀的值,最低只能输出到63mV无法输出0V,而63mV 的电压经过他的放大电路对产品的性能产生较大的影响。故其工程师询问是否有办法可以输出0V

文档说明:该问题由某客户提出,发生在 STM32L100RBT6 器件上据其工程师讲述:在使用STM32L100 的DAC1时,为了能够输出满量程客户工程师将DAC 的Output Buffer 关闭,当DAC 的输絀值为0x000 时可以正常输出0V,但是当DAC 的输出值为0xFFF 时输出电压却只有0.67V。客户工程师甚是不解

文档说明:该问题由某客户提出,发生在STM32F103VDT6 器件仩据其工程师讲述:在其产品中,需要使用STM32 的 ADC 对多路模拟信号进行同步采样在具体的实现上,采用了 ADC 常规通道的扫描模式来完成这一功能然而,在调试中过程中发现一个奇怪的现象:当将各路模拟信号的电平设置成相同时ADC 对各路模拟信号的转换结果相同,用 A 来表示改变其中一路模拟信号的电平,并保持其各路模拟信号的电平不变则 ADC 对该路信号的转换结果变为 B。然而此时与其在扫描次序上相邻嘚下一路模拟信号的转换结果也发生

文档说明:该问题由某客户提出,发生在 STM32F103RBT6 器件上据其工程师讲述:其产品为车载 GPS 导航监 控设备,其Φ使用了 STM32 作为主控器件负责管理整个设备。在该产品的设计中使用了 STM32 的 RTC,并将其计时显示在产品的屏幕上计时显示的更新是由 RTC 的秒Φ断来完成的,即由 RTC 的秒中断服务程序从 RTC 中读出新的时间并更新到相关的变量中再触发屏幕刷新程序更新屏幕上的显示。在测试时发现屏幕上显示时间的秒部分走时不均匀时快时慢,甚至会丢掉某个中间值而发生跳变

文档说明:某客户工程师在某型号新产品的设计中,使用STM32F030R8的TIM15的CH1和CH2来产生需要的波形(2路PWM信号)据其工程师讲述:在以前的产品上,是使用STM32F101的TIM3/4产生同样的波形现在,将原代码移植到STM32F030的TIM15上发現仅有一路输出(CH2),另一路(CH1)没有输出

文档说明:该问题由某客户提出,发生在 STM32F072 器件上据其软件工程师讲述:使用 STM32F0 系列的标准外设库中RTC_Tamper 的唎程来进行修改,例程中配置的是当在RTC_TAMP1引脚检测到上升沿的时候复位备份寄存器并产生中断;客户根据其实际应用将配置中的上升沿改荿下降沿,以期待在检测到下降沿的时候复位备份寄存器并产生中断。结果客户发现经常是只要一开始跑程序,会产生中断复位备份寄存器。使用示波器观察RTC_TAMP1 引脚并没有发现下降沿波形。客户百思不得其解

文档说明:基于学习的目的,详细讲解关于标准外设库中嘚定时器的17个示例项目函数文件本次介绍TIM15_ComplementarySignals的示例。

文档说明:目标要求:系统时钟8Mhz,6个PWM脉冲实现上述目标的方法有很多种,比如两个定時器级连定时器定时中断翻转IO口,等等这里使用DMA的方式去实现。

文档说明:该问题由某客户提出发生在 STM32F103VDT6 器件上。据其工程师讲述:茬其产品设计中使用了 STM32 的片上看门狗 IWDG 进行系统监控。在实测中发现在软件中去掉喂狗代码之后,IWDG 并没有 复位系统

文档说明:该问题甴某客户提出,发生在 STM32F103VET6 器件上据其工程师讲述:其产品中使用了 STM32,已量产在发给其客户的产品中,部分出现不开机现象。其工程师在现場测试后发现 STM32 的 HSE 没有起振通过拉低 NRST 管脚对 SMT32 复位后,HSE 起振且系统恢复正常工作于是怀疑 STM32 的HSE 的缺陷导致了其不起振。

文档说明:有工程师反应说Keil 下无法使用STM32F4xx 硬件浮点单元导致当运算浮点时运算时间过长,还有一些人反应不知如何使用芯片内部的复杂数学运算比如三角函數运算。针对这个部分本文将详细介绍如何使用硬件浮点单元以及相关数学运算

文档说明:本文以STM32F1,F2F3,F4为例(采用Cortex-M3M4内核),内核支歭中断嵌套(最多可设置256个中断优先级)STM32只使用其中的16个优先级。

文档说明:该问题由某用户提出发生在 STM32F2xx 器件上。据其工程师讲述:茬其产品设计中使用了第三方的软件库。出于某种原因第三方不能提供软件库的源代码,只能以二进制映像的形式供其使用在软件笁程中,通过相关设置将该映像定位到某一固定的地址上用户程序则是通过各个库函数的入口地址来调用相关的库函数。在软件调试过程中其工程师发现,将库函数的入口地址赋给函数指针再用函数指针进行函数调用会导致程序跑飞。使用调试器中止程序运行后发現程序停留在Hard Fault 中断服务程序内。

文档说明:该问题由某客户提出发生在 STM32F103VDT6 器件上。据其工程师讲述:在其产品的设计中STM32 的 HSE 外接 8MHz 的晶体产苼振荡,然后通过 STM32 内部的PLL 倍频到 72MHz作为 STM32 的系统时钟,驱动芯片工作在 STM32 片外有专用的看门狗芯片,监控 STM32 的运行STM32 内部的软件会在 STM32 的某个管腳上产生脉冲来复位看门狗。一旦 STM32 没有及时的产生脉冲来复位门狗则看门狗会认为 STM32 运行不正常,从而复位 STM32在对该

文档说明:该问题由某客户提出,发生在 STM32F407IGT6 器件上据其工程师讲述:由于在其产品中,需要使用STM32进行大量的浮点数以及浮点DSP运算所以针对STM32的浮点数运算能力忣 DSP 运算能力做了相关的测试,但测试结果不理想STM32F407 在144MHz 主频下,对于表(一)程序的运算耗时为:9105uS没有体现出硬件浮点运算应有的运算能仂。

文档说明:某客户工程师在某型号新产品的设计中使用了STM32F103XXT6。据其工程师讲述:他们在设计中使用了一个外部中断,用来检测某事件的发生从而唤醒低功耗模式下的 STM32。对应于该中断输入有一中断服务程序,内容如表(一)所示在实测中发现偶尔会发生在有该外蔀中断输入时 STM32 并未回到正常的运行状态的情况。测量此时 STM32 的功耗发现其功耗明显增大,说明已从低功耗唤醒使用调试工具调试,发现當出现该现象时程序停留在表(一)所示的中断服务程序中,不能退出进一步跟踪,发现“行(1)”的判

文档说明:该问题由某客户提出发生在 STM32F101C8T6 器件上。据其工程师讲述:其某型号产品的设计中用到了 STM32F101C8T6 器件在软件调试过程中,遇到了一个棘手的问题:程序会莫名其妙的跳到 Hard Fault 中断在程序中,产生该中断的位置不固定忽而在这里,忽而在那里发生的时间不确定,有时候程序运了很长时间才遇到囿时候开始运行后没一会就发生了。产生该问题的原因不明不知如何进行排查。

的接收进行处理的时候发现如下现象:如果发送端发送10个字节,程序可以正常接收到数据通过DMA_GetCurrDataCounter(USARTx_RX_DMA_STREAM)获取的数据长度以及程序中数据接收缓冲区中的数据均是正常的;但是如果发送端只发送9个字節,程序就无法正常接收到数据通过DMA_GetCurrDataCounter(USARTx_RX_DMA_STREAM

文档说明:Proprietary Code Read Out Protection (PCROP) ----- 专有代码读取保护 现在产品开发过程中,二次开发将会越来越多设计公司开发出自己產品后交给终端客户进行二次功能或补充开发,简称二次开发设计公司某些程序代码不希望公开给终端客户,但同时又希望部分函 数功能可以给终端客户使用这时就需要有一种专有代码保护机制供客户使用,STM32F4xx 芯片中的 PCROP 可以解决类似问题

文档说明:测试STM32L053芯片在系统时钟8Mhz嘚情况下,其GPIO电平的翻转速度

文档说明:如果了解FAT的系统结构,并理解了FatSL的软件结构那么文件系统移植并不困难(其实文件系统移植嘟是大同小异的)。本文给出的例子是基于STEVAL-CCM007V1硬件平台通过NFTL层(NAND Flash Translation Layer)在NAND Flash上建立该文件系统的情况。

文档说明:STM32的CPU采用的是Cortex-M系列的内核(M3或M4)CM3和CM4的调试技能较之普通的单片机有了质的飞跃。一般情况下CM3的调试功能可被分为两类,侵入式调试与非侵入式调试

文档说明:某客戶工程师在某型号新产品的设计中,使用了STM32F407VGT6据其工程师讲述:他想使用MDK 自带的Logic Analyzer功能,在软件仿真的情况下是正常的但是用仿真器仿真嘚时候,该功能出现了问题尝试了很多种配置都没有成功。

文档说明:目前越来越多的嵌入式产品在开发中使用 RTOS 作为软件平台,同时开发中对低功耗的要求也越 来越高,这篇文档会讨论一下如何在 RTOS 中处理微控制器的低功耗特性

文档说明:有客户反映在用ST-Link调试、下载ST8S系列单片机程序的时候出现了问题, 同一块板子在二十几天前调试均正常现在重新修改就下载不进去,无法调试

文档说明:该问题由某客户提出,主要是想自己做一个库给第三方但是又不想让别人得到源代码,不知道如何去做尝试了几种办法,发现都会有些问题.

文檔说明:该问题由某客户提出发生在 STM32F103VCT6 器件上。据其工程师讲述:其产品中设计中用到了 STM32 的内部 RTC 功能,而 RTC 的时钟由 LSE 提供在产品的小批量试产中,发现有个别产品开不 了机进一步测量发现,LSE 没有起振

文档说明:该问题由某客户提出,发生在 STM32F207VET6 器件上据其工程师讲述:蔀分芯片无法通过拉低NRST PIN产生复位。该现象一旦上电复位后无法重现客户的应用中通过外部硬件看门狗定时给NRST PIN送低电平产生复位。正常情況下MCU会给外部硬件看门狗喂狗。

文档说明:在STM8L152数据手册中,参数IDD(RUN)的典型值是1.97mA客户实际测试2.7mA ,因此产生疑问

文档说明:该问题由某客户提出,发生在 STM32F103VBT6 器件上据其工程师讲述:其产品中使用了 STM32 作为主控单元,负责系统的管理在对产品测试时发现了一个奇怪的现象:在关閉电源后,STM32 仍然能够对 UART 上输入的信息做出回应

文档说明:该问题由某客户提出,发生在 STM32F103VBT6 器件上据其工程师讲述:其产品中使用了 STM32,已批量生产据其客户反馈,其产品在雨天等潮湿的环境下会出现不工作的情况。将客户退回的产品放在模拟的潮湿环境下试验的确重現不工作的现象。将产品外的壳拆开后用热风枪逐个吹干每个元器件。当将 STM32及周边的几个电阻、电容元件吹干后重新上电时其产品可鉯恢复工作。进一步测量发现在潮湿的环境下,STM32 的 HSE 没有振荡输出由此,定位出 STM32 在潮湿的环境下失效导致了其产品的不工作

文档说明:该问题由某客户提出,发生在 STM32F103VBT6 器件上据其工程师讲述:在为 STM32 调试软件过程中,遇到了一个怪现象:有如表(一)所示的一段程序中KeyIn 昰一个全局变量。当有按键按下时键盘的中断服务程序会将对应的键值放入其中,当按键释放后键盘中断服务程序则把 RESET 值放入该变量。行(1)的条件语句在主程序中检测有无按键按下,并处理行(2)则是等待按键释放。调试时在行(1)和行(2)处各设置一个断点,然后全速运行程序当程序停在行(1)时按下按键,继续全速运行程序当程序

文档说明:该问题由某客户提出,发生在STM32F401CEY6器件上据其笁程师讲述:在程序中,在进入STOP模式之前他已经将STM32F401 的I/O口做完处理了但是电流仍然比数据手册写的数值还要大很多,不知道是在哪里消耗叻电流希望能帮他验证一下。

文档说明:该问题由某客户提出发生在STM32F407IGT6 器件上。据其工程师讲述:在其产品设计中使用了STM32 的以太网接口進行通信在软件最初的调试中,该接口工作正常后来为了满足软件对内存容量的需求,启用了STM32 的CCM 存贮器但启用后发现以太网接口不能通信。

文档说明:某客户工程师在其产品的设计中使用了 STM32F205VET6。据其工程师讲述:他使用 ST 的USB 固件库中的VCP例程来实现虚拟串口的功能但是怹发现虚拟串口一次输出的数据(从串口到上位机)如果超过2Kbytes 就会造成数据丢失,只输出尾部的2Kbytes客户工程师检查代码发现USB 的FIFO 大小由宏定義APP_RX_DATA_SIZE

文档说明:该问题由某客户提出,发生在 STM32F205VCT6 器件上据其工程师讲述:为了实现产品的设计中使用 STM32 的 USB OTG 接口,作为其产品的一个通用 USB 接口来鼡在其产品小批量试产后,发现 STM32 的 USB OTG 接口在其产品的使用过程中易损坏

文档说明:在某些串行工业总线协议中,如 Profibus每帧发送的数据长喥不定,导致接收方在接收数据时无法确定帧的结束点

文档说明:客户工程师在某型号新产品的设计中,使用了 STM32L151VCT6据其工程师讲述:他使用 ST 的 Flash Loader demo 通过 STM32 的 USART1 向其加载用户程序,发现 Boot Loader demo 与 STM32 通信不稳定时而成功时而不成功,有时甚至连接不上

文档说明:该问题由某客户提出,发生茬 STM32F407IGT6 器件上

文档说明:有客户在初次使用STM32 MCU IAP 的例程的,可能会对跳转到APP 部分的函数的实现产生疑问

文档说明:某客户在其产品的设计中,使用了STM32F091RCT6产品在出厂后将来可能由于功能的升级需要升级代码。由于外观的需要客户不希望留一个用于升级的按键或是跳线槽在外边。唏望能够是通过接收串口命令来实现启动升级又希望能够直接使用System Memory 中的Bootloader 进行代码升级。

文档说明:本文的内容为简单介绍STM32F0 的启动模式並重点介绍有可能产生的问题。

文档说明:该问题由某客户提出发生在 STM32F103TBU6 器件上。据其工程师讲述:在其产品设计中软件的架构采用 IAP Loader+App 的模式。IAP Loader 部分负责管理和更新 App 部分而 App 部分则负责常规的业务的处理,两部分代码分别由独立的软件工程生成系统运行时先启动 IAP Loader,由其判斷是否需要更新 App如不需更新则跳转到 App,由 App 进行常规业务处理在软件调试过程中,其软件工程师发现从 IAP Loader 到 App 的跳转存在某种不可靠性该跳

文档说明:嵌入式设计中使用RTOS必然会带来额外的RAM消耗,然而许多初次接触RTOS的工程师并不清楚如何评估RAM的消耗量这篇文档以FreeRTOS为例,介绍評估RAM使用情况的一般方法并给出在FreeRTOS下优化RAM使用的方法,也由衷的期望读者在使用其他RTOS时可以通过相似的思路来解决问题。

文档说明:囿时候我们需要将一部分程序从FLASH拷贝到RAM中运行以提高程序运行的速度。本文基于IAR Embedded Workbench列出了一些方法可以在系统启动时自动从FLASH中将这部分程序拷贝到RAM中运行。本文中所有例子都是在IAR v7.2下基于STM32F334完成的。

文档说明:该问题由某客户提出发生在 STM32F103VDT6 器件上。据其工程师讲述:在该公司的某型号产品的设 计中用到了 STM32F103VDT6 器件而其软件的设计采用了 IAP+APP 的架构。IAP 是一段 BOOT 程序 负责对硬件进行初始化以及在接到相关指令的情况下哽新 APP 程序,而 APP 程序则负责对常规业务 处理在 STM32 启动后,IAP 首先运行在初始化硬件之后,检查是否有更新 APP 的指令如果 有,则更新 APP如果没囿,则跳转到 APPAPP 对常规业务进行处理

文档说明:客户反映使用外扩SDRAM运行程序(使用链接器将code存放在SDRAM中,与编译器无关采用GCC或者IAR都有这个問题)出错,Hard Fault发生

文档说明:某客户工程师在其产品的设计中,使用了 STM32L152RBT6该工程师打算在烧写程序之前,往 STM32L100 里边的 EEPROM 预置一些数据没想箌什么好的办法。他在网上搜了一下其他人的做法发现大家基本上都是使用程序代码的方式,在第一次运行程序的时候使用程序对 EEPROM 进荇编程达到预置的目的。他觉得这不是最适合他的方法于是请教是否还有其他更方便的方法。

文档说明:该问题由某客户提出发生在 STM32F407IGT6 器件上。据其工程师讲述:为了满足软件对大容量内存的需求将软件中的部变量从内部 SRAM 转移到片外的 SRAM当中。而这一改变导致该软件不能运行,每次复位后随即便发生死机。在此之前对 FSMC 的初化代码,以及片外 SRAM 的读写匀做过测试并确认是没有问题的。

文档说明:当客戶遇到存储小量的数据同时数据写的频率比较低的情况下。从成本角度希望省掉外置 EEPROM STM32 提供了 Backup SRAM(4K)和 Flash 模拟 EEPROM 两种方案来解决该问题。但是Backup SRAM 需偠提供备用电源,Flash 模拟 EEPROM 又比较浪费空间(存放复杂的结构体数据也不方便) 如果数据擦写频率较低(Flash 擦写次数有限),可以考虑直接将數据存放在 Flash 中本文提供了如 何在 IAR6.5 实现该操作。

文档说明:该问题由某客户提出发生在 STM32F103VBT6 器件上。据其工程师讲述:其产品中使用了 STM32已批量生产。其部分产品在交予客户使用一段时间之后出现故障其工程师在对故障产品进行分析时发现,STM32 的 Flash 中部分数据丢失原数据皆被0xFF 取代。丢失数据的 Flash 区间的地址不固定大小也不固定,呈一定随机性该现象只在车载环境下发生,而在实验室无法复现

文档说明:某愙户工程师在某型号新产品的设计中,使用了 STM32 器件型号为:STM32F103VDT6。据其工程师 讲述:为了实现产品的某项设计要求他想要通过 USART1 以 600BPS 的波特率與另一颗器件进行通 信。通过编写程序测试发现该通信接口未能工作在 600BPS 的波特率上,而是工作在一个较高的波 特率上大约在 1600BPS。更改波特率设定将波特率设定改为 1200BPS 时,该接口能够工作在设定 的波特率上

文档说明:在某些串行工业总线协议中,如 Profibus每帧发送的数据长度鈈定,导致接收方在接收数据时无法确定帧的结束点

文档说明:该问题由某客户提出,发生在 STM32F103VCT6 器件上据其工程师讲述:在其产品的设計中要使用 STM32 的 STOP 低功耗模式。而在使 STM32 进入 STOP 模式之前需要对整个系统做一些设置工作, 其中一项工作是通过 USART3 向某个功能模组发送一个命令报攵在实测中发现,该报文没有发全 总是缺少最后一个字节。

文档说明:该问题由某客户提出发生在 STM8S105C6T6 器件上。据其工程师讲述:当他所撰写的程序不使用奇偶 校验的时候程序工作是正常的;但是当他把奇偶校验改成偶检验 EVEN时,程序无法正常工作;现象为:一、不管上位机发送的数据是不带校验位的还是带奇偶校验位的,STM8S 都可以正常地接收到数据;二、当奇偶校验位使能后接收到的数据再返回上位機,显示的数据不一定是正确的

文档说明:某客户反映使用STM8L的IIC的库的DEMO,master和slave通信使用IIC1的端口PC0与PC1,并分别上拉接4.7k的电阻至3.3V主机的SCL与从机嘚SCL相连,SDA也一样但是slave一直没有应答,想不明白原因波形客户看了认为没有问题,就是没有应答不知道原因是什么,IIC速度给的都是100K

攵档说明:某客户反映新换成STM8L的单片机,UART配置后利用库函数软件代码,无法正常接收正确的数据客户对照波形,初步判断是起始位的問题为了能测出STM8L能够识别的起始位前面的最短高电平,对客户发送的数据进行了模拟不断调整起始位前面的高电平宽度,最后发现高電平宽度>=21uS的时候STM8L可以正常接收数据

文档说明:OSI 的7 层基准模型中PHY 属于第一层 ——物理层。PHY是数据链路层的媒体访问控制部分和媒体的接口PHY对所有传输的数据只是进行编码转化,没有对有效数据信号进行任何分析或改变但是MAC 所有的数据传输都必须经过PHY 发送和接收才能傳输到目标MAC。PHY 还可以完成连接判断自动协商以及冲突检测。MAC 可以通过修改PHY 的寄存器完成对自动协商的监控当然也可以读取PHY 的寄存器来判断PHY 的状态。

文档说明:STM32Fxx7 系列(互联型产品)中内置了MAC配合外置的 PHY可以实现以太网通讯。这篇文档将介绍以太网接口的信号定义重点介绍时钟电路的设计,并给出在实践中已成功应用的设计方案希望可以对需要进行以太网电路设计的朋友提供帮助。

文档说明:很多朋伖反映 ST 官网的例程 stsw-stm32060(也就是 STM32F2x7 的以太网例程)中的 FreeRTOS 驱 动有问题表现为在网络压力测试下向 STM32 进行 ping测试,过段时间后会出现无法恢复的网络延時甚至出现 ping 不通(网络不通的情况,注意不是超时)

文档说明:该问题由某客户提出。据其工程师描述:其产品设计中使用了 STM32F103VDT6 器件。该器件的 SPI2 通信接口外接一个 EEPROM在其进行软件调试时,发现当程序发起对 EEPROM 的读写 时会导致 STM32 死机

文档说明:该问题由某客户提出,发生在 STM32F103VDT6 器件上据其工程师讲述:在其产品设计中,使用了 STM32 的 SPI3 接口连接到一个串行 EEPROM在软件调试时,发现该接口没有信号送出

文档说明:某客戶使用 STM32F2 的 OTG 库中的 U 盘主机例程在连接 U 盘时,有些 U 盘不能识别甚至出现操作死机的情况。现就针对版本 V2.1.0 的 USB 主机库中的 MSC Host 例程做一些修改以能夠兼容更U盘。

文档说明:该问题由某客户提出发生在 STM32F405RGT6 器件上。据其工程师讲述:STM32F405RGT6 作为主机向 从机做 Bulk_Receivdata()传输每次收到 NAK 时,主机会每隔 5us 左右偅新发起 TokenIn从机在这 段时间内没有准备好数据,所以依然发送 NAK客户想在 200us 左右发起 IN 令牌,这样给从设备以准 数据的时间(实际数据的准备時间预计为 300us 左右)

文档说明:某客户用STM32F051的芯片做了一个自动波特率的实验(代码是仿照ST库里面的例子写的),用串口发送数字键的ASCII码茬接收端只有奇数ASCII被确认。

文档说明:该问题由某客户提出发生在 STM32F103VDT6 器件上。据其工程师讲述:在其产品设计中使用了 STM32 的一个 I2C 接口与一個 EEPROM 通信。在系统可靠性测试中发现经过长时间运行后,STM32 会 出现不能读写 EEPROM 的现象通过 NRST 管脚对 STM32 进行复位,复位后该现象依旧存在关掉电 源,然后重新上电现象消失。通过进一步测试发现如果对 STM32 反复做复位操作,会很容易复现 这一现象

文档说明:当使用STM32的Bootloader 中的GO 命令进荇从Bootloader 向用户代码进行跳转时,需要正确地在用户代码中设置向量表才能正常地运行用户代码。

文档说明:本篇LAT从控制传输的角度解析了運行在“USB FS IP”这款USB模块上的全速USB设备库的结构和用法

文档说明:EWARM从v5.5版本之后开始支持STM32芯片的CRC计算。前面所说的计算整个FLASH的CRC校验值并保存在FLASH末尾的过程可以在IAR中完成。通过配置EWARM的CRC计算参数自动对整个FLASH空间进行CRC计算,并将计算结果放到FLASH的末尾本文中将介绍的就是如何配置IAR嘚CRC参数,使之与STM32的CRC硬件模块保持一致本文中的例子都基于STM32F072进行。

文档说明:某客户使用STM32F103的USB模块做设备时和上位机PC连接时碰到一个问题:PC端驱动已经固定好是对下位机USB设备上的地址编号为0x0A和0x0B的两个端点通信,从0x0A端点读取数据向0x0B端点写数据。而STM32F103的USB模块只有8个双向端点能否支持这样的寻址。

文档说明:基于学习的目的详细讲解关于标准外设库中的定时器的 17 个示例项目函数文件。本次介绍 TimeBase 的示例

文档说奣:对于一个物联网应用,远程监控设备状态、远程更新设备固件都是其要包含的典型基本功能本示例在百度天工IoT平台和STM32F769探索板上实现叻上述功能。

版权声明:本文为博主原创文章未经博主允许不得转载。 /qq_/article/details/

现代操作系统有多种文件系统类型(如FAT32、NTFS、 ext2、ext3、ext4等)因此文件系统的层次结构也不尽相同。图4-11是一种合理的層次结构


图4-11文件系统层次结构

文件系统为用户提供与文件及目录有关的调用,如新建、打开、读写、关闭、删除文件建立、删除目录等。此层由若干程序模块组成每一模块对应一条系统调用,用户发出系统调用时控制即转入相应的模块。

文件目录系统的主要功能是管理文件目录其任务有管理活跃文件目录表、管理读写状态信息表、管理用户进程的打开文件表、管理与组织在存储设备上的文件目录結构、调用下一级存取控制模块。

实现文件保护主要由该级软件完成它把用户的访问要求与FCB中指示的访问控制权限进行比较,以确认访問的合法性

4) 逻辑文件系统与文件信息缓冲区

逻辑文件系统与文件信息缓冲区的主要功能是根据文件的逻辑结构将用户要读写的逻辑记录轉换成文件逻辑结构内的相应块号。

物理文件系统的主要功能是把逻辑记录所在的相对块号转换成实际的物理地址

分配模块的主要功能昰管理辅存空间,即负责分配辅存空闲空间和回收辅存空间

7) 设备管理程序模块

设备管理程序模块的主要功能是分配设备、分配设备读写鼡缓冲区、磁盘调度、启动设备、处理设备中断、释放设备读写缓冲区、释放设备等。

在读文件前必须先打开文件。打开文件时操作系统利用路径名找到相应目录项,目 录项中提供了查找文件磁盘块所需要的信息目录实现的基本方法有线性列表和哈希表两种。

最简单嘚目录实现方法是使用存储文件名和数据块指针的线性表创建新文件时,必须 首先搜索目录表以确定没有同名的文件存在然后在目录表后增加一个目录项。删除文件则 根据给定的文件名搜索目录表接着释放分配给它的空间。若要重用目录项有许多方法: 可以将目录項标记为不再使用,或者将它加到空闲目录项表上还可以将目录表中最后一个 目录项复制到空闲位置,并降低目录表长度釆用链表结構可以减少删除文件的时间。其优 点在于实现简单不过由于线性表的特殊性,比较费时

哈希表根据文件名得到一个值,并返回一个指姠线性列表中元素的指针这种方法的优 点是查找非常迅速,插入和删除也较简单不过需要一些预备措施来避免冲突。最大的困难 是哈唏表长度固定以及哈希函数对表长的依赖性

目录查询是通过在磁盘上反复搜索完成,需要不断地进行I/O操作开销较大。所以如 前面所述为了减少I/O操作,把当前使用的文件目录复制到内存以后要使用该文件时只 要在内存中操作,从而降低了磁盘操作次数提高了系统速喥。

文件分配对应于文件的物理结构是指如何为文件分配磁盘块。常用的磁盘空间分配方 法有三种:连续分配、链接分配和索引分配囿的系统(如RD0S操作系统)对三种方法都支持,但是更普遍的是一个系统只提供一种方法的支持

连续分配方法要求每个文件在磁盘上占有┅组连续的块,如图4-12所示 磁盘地址定义了磁盘上的一个线性排序。这种排序使作业访问磁盘时需要的寻道数和寻道时 间最小


文件的连續分配可以用第一块的磁盘地址和连续块的数量来定义。如果文件有n块长并 从位置b开始那么该文件将占有块b, b+1, b+2, …, b+n-1。 一个文件的目录条目包括 开始块的地址和该文件所分配区域的长度

连续分配支持顺序访问和直接访问。其优点是实现简单、存取速度快缺点在于,文件 长度鈈宜动态增加因为一个文件末尾后的盘块可能已经分配给其他文件,一旦需要增加 就需要大量移动盘块。此外反复增删文件后会产苼外部碎片(与内存管理分配方式中的碎 片相似),并且很难确定一个文件需要的空间大小因而只适用于长度固定的文件。

链接分配是釆取离散分配的方式消除了外部碎片,故而显著地提高了 磁盘空间的利用率;又因为是根据文件的当前需求为它分配必需的盘块,当文件动态增长 时可以动态地再为它分配盘块,故而无需事先知道文件的大小此外,对文件的增、删、 改也非常方便链接分配又可以分為隐式链接和显式链接两种形式。

隐式连接如图4-13所示每个文件对应一个磁盘块的链表;磁盘块分布在磁盘的任何 地方,除最后一个盘块外每一个盘块都有指向下一个盘块的指针,这些指针对用户是透明. 的目录包括文件第一块的指针和最后一块的指针。

创建新文件时目录中增加一个新条目。每个目录项都有一个指向文件首块的指针该 指针初始化为NULL以表示空文件,大小字段为0写文件会通过空闲空间管理系统找到空 闲块,将该块链接到文件的尾部以便写入。读文件则通过块到块的指针顺序读块

隐式链接分配的缺点在于无法直接访問盘块,只能通过指针顺序访问文件以及盘块指 针消耗了一定的存储空间。隐式链接分配的稳定性也是一个问题系统在运行过程中由於软 件或者硬件错误导致链表中的指针丢失或损坏,会导致文件数据的丢失


显式链接,是指把用于链接文件各物理块的指针显式地存放在内存的一张链接表中。 该表在整个磁盘仅设置一张每个表项中存放链接指针,即下一个盘块号在该表中,凡是 属于某一文件的第┅个盘块号或者说是每一条链的链首指针所对应的盘块号,均作为文件 地址被填入相应文件的FCB的“物理地址”字段中由于查找记录的過程是在内存中进行 的,因而不仅显著地提高了检索速度而且大大减少了访问磁盘的次数。由于分配给文件的 所有盘块号都放在该表中故称该表为文件分配表(File Allocation Table, FAT)。

链接分配解决了连续分配的外部碎片和文件大小管理的问题但是,链 接分配不能有效支持直接访问(FAT除外)索引分配解决了这个问题,它把每个文件的所 有的盘块号都集中放在一起构成索引块(表)如图4-14所示。


每个文件都有其索引块这昰一个磁盘块地址的数组。索引块的第i个条目指向文件的 第i个块目录条目包括索引块的地址。要读第i块通过索引块的第i个条目的指针來查 找和读入所需的块。

创建文件时索引块的所有指针都设为空。当首次写入第i块时先从空闲空间中取得 一个块,再将其地址写到索引块的第i个条目索引分配支持直接访问,且没有外部碎片问 题其缺点是由于索引块的分配,增加了系统存储空间的开销索引块的大尛是一个重要的 问题,每个文件必须有一个索引块因此索引块应尽可能小,但索引块太小就无法支持大文 件可以釆用以下机制来处理這个问题。

链接方案:一个索引块通常为一个磁盘块因此,它本身能直接读写为了处理大文件, 可以将多个索引块链接起来

多层索引:多层索引使第一层索引块指向第二层的索引块,第二层索引块再指向文件块 这种方法根据最大文件大小的要求,可以继续到第三层戓第四层例如,4096B的块能在 索引块中存入1024个4B的指针。两层索引允许1048576个数据块即允许最大文件为4GB。

混合索引:将多种索引分配方式相结匼的分配方式例如,系统既釆用直接地址又采 用单级索引分配方式或两级索引分配方式。

表4-2是三种分配方式的比较

表4-2 文件三种分配方式的比较
顺序存取时速度怏,当文件是定长时 可以根据文件起始地址及记录长度进行 随机访问 文件存储要求连续的存储空间会产 生碎爿,也不利于文件的动态扩充
可以解决外存的碎片问题提髙了外 存空间的利用率,动态增长较方便 只能按照文件的指针链顺序访问查 找效率低,指针信息存放消耗外存空间
m级需访问磁盘m+1次 可以随机访问易于文件的增删 索引表增加存储空间的开销,索引表 的查找策略对攵件系统效率影响较大


此外访问文件需要两次访问外存——首先要读取索引块的内容,然后再访问具体的磁 盘块因而降低了文件的存取速度。为了解决这一问题通常将文件的索引块读入内存的缓 冲区中,以加快文件的访问速度

2. 文件存储空间管理

1) 文件存储器空间的划汾与初始化。

一般来说一个文件存储在一个文件卷中。文件 卷可以是物理盘的一部分也可以是整个物理盘,支持超大型文件的文件卷吔可以由多个物 理盘组成如图4-15所示。

在一个文件卷中文件数据信息的空间(文件区)和存放文件控制信息FCB的空间(目 录区)是分离的。由于存在很多种类的文件表示和存放格式所以现代操作系统中一般都有 很多不同的文件管理模块,通过它们可以访问不同格式的逻辑卷中的文件逻辑卷在提供文 件服务前,必须由对应的文件程序进行初始化划分好目录区和文件区,建立空闲空间管理 表格及存放逻辑卷信息的超级块

2) 文件存储器空间管理。

文件存储设备分成许多大小相同的物理块并以块为单位交 换信息,因此文件存储设备的管理實质上是对空闲块的组织和管理,它包括空闲块的组织、 分配与回收等问题


空闲表法属于连续分配方式,它与内存的动态分配方式类似为每个文件分配一块连续 的存储空间。系统为外存上的所有空闲区建立一张空闲盘块表每个空闲区对应于一个空闲 表项,其中包括表項序号、该空闲区第一个盘块号、该区的空闲盘块数等信息再将所有空闲区按其起始盘块号递增的次序排列,见表4-3

空闲盘区的分配与內存的动态分配类似,同样是釆 用首次适应算法、循环首次适应算法等例如,在系统 为某新创建的文件分配空闲盘块时先顺序地检索涳闲 盘块表的各表项,直至找到第一个其大小能满足要求的 空闲区再将该盘区分配给用户,同时修改空闲盘块表 系统在对用户所释放嘚存储空间进行回收时,也釆取类似于内存回收的方法即要考虑回收区是否与空闲表中插入点的前区和后区相邻接,对


将所有空闲盘区拉成一条空闲链根据构成链所用的基本元素不同,可把链表分成两种 形式:空闲盘块链和空闲盘区链

空闲盘块链是将磁盘上的所有空閑空间,以盘块为单位拉成一条链当用户因创建文件 而请求分配存储空间时,系统从链首开始依次摘下适当的数目的空闲盘块分配给鼡户。当 用户因删除文件而释放存储空间时系统将回收的盘块依次插入空闲盘块链的末尾。这种方 法的优点是分配和回收一个盘块的过程非常简单但在为一个文件分配盘块时,可能要重复 多次操作

空闲盘区链是将磁盘上的所有空闲盘区(每个盘区可包含若干个盘块)拉成一条链。在 每个盘区上除含有用于指示下一个空闲盘区的指针外还应有能指明本盘区大小(盘块数) 的信息。分配盘区的方法与内存的动态分区分配类似通常釆用首次适应算法。在回收盘区 时同样也要将回收区与相邻接的空闲盘区相合并。


位示图是利用二进制的┅位来表示磁盘中一个盘块的使用情况磁盘上所有的盘块都有 一个二进制位与之对应。当其值为“0”时表示对应的盘块空闲;当其值為“1”时,表示 对应的盘块已分配位示图法示意如图4-16所示。
  • 顺序扫描位示图从中找出一个或一组其值为“0”的二进制位。
  • 将所找到的┅个或一组二进制位转换成与之对应的盘块号。假定找到的其值为“0” 的二进制位位于位示图的第i行、第j列,则其相应的盘块号应按丅式计算(n代表每行 的位数):

空闲表法和空闲链表法都不适合用于大型文件系统因为这会使空闲表或空闲链表太 大。在UNIX系统中釆用的昰成组链接法这种方法结合了空闲表和空闲链表两种方法,克 月艮了表太大的缺点其大致的思想是:把顺序的n个空闲扇区地址保存在第┅个空闲扇区内, 其后一个空闲扇区内则保存另一顺序空闲扇区的地址如此继续,直至所有空闲扇区均予以 链接系统只需要保存一个指向第一个空闲扇区的指针。假设磁盘最初全为空闲扇区;其成 组链接如图4-17所示通过这种方式可以迅速找到大批空闲块地址。


表示文件存储器空闲空间的“位向量”表或第一个成组链块以及卷中的目录区、文件区 划分信息都需要存放在辅存储器中一般放在卷头位置,在UNIX系统中称为“超级块” 在对卷中文件进行操作前,“超级块”需要预先读入系统空间的主存并且经常保持主存“超 级块”与辅存卷中“超级块”的一致性。

注意:本书如无特别提示所使用的位示图法,行和列都是从1开始编号特别注意, 如果题目中指明从0开始编号則上述的计算方法要进行相应调整。

我要回帖

更多关于 问题性皮肤的调查数据表 的文章

 

随机推荐