文档说明:这个例子中,使用了 I/O 口作为复用引脚时,其 I/O 引脚仍然还是连接到内部其他电 路的,包括连接到输入数据寄存器,连接到 EXTI 电路。所以,我们可以利用这种连接来 帮助我们实现一些特殊的功能。
文档说明:是协助客户解 决这个问题,提供给客户不带 PD 功能的虚拟串口工程。
文档说明:细心的用户可能会发现,使用到我们的 STM32CubeMX 6.9.1 对 STM32H5 的USB 外设进行配置的时候,只能用 USBX,而以前的 Classic USB 库不能选择了。 由于 USBx 是基于 Threadx OS 的,客户更多的希望是裸机版本的,所以在这儿给大家提供一个移植的方法。
文档说明:某客户开发一款高精度工业测量仪器,打算使用 STM32H7+外置高精度 ADC 采样的分离方案来实现。客户选取了一款所属行业内比较通用的 ADC 采样芯片。在读取该 ADC芯片手册后,客户发现该款 ADC 采样芯片使用 MCU 标准 SPI 与之通信存在问题,手册里面也推荐使用 DSP/FPGA 的来实现,客户一下就犯难了。为了降低成本和开发周期,客户想使用 MCU 来替代 DSP/FPGA 与 ADC 采样芯片的高速通信。
文档说明:某客户在使用 STM32U5 开发一款产品时需要使用到 USB Custom 进行双向通信,并反馈STM32U5 使用的是 Azure USBx 协议栈,不再支持 ST USB device 库。客户表示只熟悉 STUSB Device 库,对 USBx 协议栈与 API 没有任何使用经验。查阅目前所有 USBx 的例程,发现目前 USBx 均没有可参考的 Custom HID 双向通信范例,客户希望提供使用 USBx HID 进行双向通信的例程,这里简单介绍下利用 CubeMx 创建工程的实现过程。
文档说明:有客户反馈,他最近在做一个项目用到 STM32L051 这款单片机。平常的 USART 串口传输是 8 位数据,但是他的项目需要用串口传输 9 位数据。当设置为 8 位数据时,串口响应中断正常。但是,当设置为 9 位数据时,串口就不产生中断了。USART2 的 ISR 寄存器 RXNE 位被置1,RDR 寄存器接收到了数据,就是不产生中断,数据也读不出来。请问是不是 HAL 库函数哪里出了bug?另外,客户还补充说,使用 STM32CubeMX 进行配置并创建的工程代码。
文档说明:客户反映 STM32L011 PA6 空片时进入 system memory 内部自带的 bootloader后,GPIO 的实际测试状态同 AN2606 中描述 push-pull pull-down 有出入,实际测试为高电平。
文档说明:这次我们介绍另外一种方法,在 DMA 方式下利用硬件接收超时中断(Receiver timeout interrupt)实现不定长数据的接收。
文档说明:I2C 的时钟延展功能是可选功能,主机可以不支持该功能,但从机需要相应的适配。未来 ST公司的 STM32 Cube 库后续有计划增加对时钟延展功能的支持。
文档说明:本文主要介绍使用 STM32U599 USB_HS 开发 USBx 应用时的几个问题点,详细配置和移植过程,读者可自行参考本文附件中的工程源码。
文档说明:客户的产品使用的是 STM32L471VET6, 通过串口外部连接一个 zigbee 模块, 波特率 115200bps.。出现问题时的具体情况是, 从 MCU 发出的串口波形检测到一个位的宽度明显不正确, 导致外部的 zigbee 模式识别不到。
文档说明:客户在项目开发中使用 STM32F427ZGT6 的 SPI 连接外部 Flash 时,发现在常温下能正常读写,但是在高温下一段时间后(大概 5 分钟左右)出现读写异常的情况。读写异常时发生在发送 0x5 指令后,返回数据通过软件读取的是 0,而硬件抓取的是 1 。同时也发现同一份代码,同样硬件,如果 flash 换成别的厂家的,在同样温度条件下又没有出现读写异常。
文档说明:STM32 开发者在实现 CDC 类虚拟串口与 PC 主机通信过程中,有时会遇到点麻烦而不得其解。那就是当主机端单次发送的数据不超过 64 字节时,接收正常。一旦发送数据量大于 64 字节时就接收失败,总是出现丢包现象,似乎只能接收 64 字节以内的数据。网上有人干脆建议主机每次发送不要超过 64字节,当然,也有人提及要作分包处理但没具体实现代码可以参考。这个问题在网络上也有些人在试图寻求答案。
文档说明:对于使用 STM32 DCMI 开发相机应用的客户,经常有以下问题:STM32 DCMI 最大支持的像素时钟是多少?STM32F4/F7/H7/U5 能支持 1280×720 的分辨率吗?最大的帧率是多少?如何判断所设计的应用产生的带宽是否能充足?相机输出是选择 8 位、10位、12 位、还是 14 位?针对这些问题,本文档从 DCMI 使用的几个方面,介绍了 STM32 DCMI 在连续抓取模式下带宽的估算,以及提升性能需要注意的事项。客户在设计相机应用时可以参考。
文档说明:客户在 STM32F401RET6 中使用到了 USB 的虚拟串口功能。要求提供一个在STM32Cube 中实现虚拟串口进行数据环回测试功能的范例程序。因为在我们目前所提供范例程序中,并没有适合客户需求的范例,所以我们在 STM32CubeMX 中创建一个范例程序给客户进行参考。
文档说明:本文档描述了在STOP0/1 模式下使用USART需要注意的地方。
文档说明:客户反馈,使用STM32F446 的高速USB 外设,即USB_OTG_HS 外设,且使用内置全速PHY。客户的产品USB 用做device,自定义HID 类,当连接带UOS 操作系统的HOST 时,会发现当前数据并没有成功发送,但是会发送上一次的数据,即发送数据出现”迟滞”现象。但在Windows 下却没有出现此类问题。另外,客户同时还使用了STM32F446 上的USB_OTG_FS 外设,且此外设做同样的事一切正常,目前此问题只出现在USB_OTG_HS 外设上。
文档说明:STM32H7 以太网的MMC(MAC management counter)中断是个有点特别的中断。特殊之处在于它是默认使能。如果我们在代码里不针对MMC 进行相关处理,就会造成一些异常现象。我们先来看一个真实的客户案例。
文档说明:多次插拔后USB无法再工作
文档说明:STM32MCU 的以太网外设提供多种数据包过滤的模式。
文档说明:在 STM32 以太网调试中经常会遇到“设备接收不到数据”,或者“设备发出的数据对端设备收不到”之类的问题。遇到这类 问题首先要做的是定位问题发生的部位,这样做的好处就是可以指明下一步调试的方向,缩小分析的范围。
文档说明:前不久接到一个客户的问题。在 H743 上需要通过 UDP 发送大的数据包,涉及到 IP 分包的问题。他们在测试的过程中遇到了 只要发送 6KB 的 UDP 数据包就会出现 hardfault 的问题。拿到这个问题的时候,调试得到了和客户一样的现象,程序进入 hardfault,并且是由 Lwip 协议栈的 ip_reass_free_complete_datagram 函数触发。后经过一番调试,搞清楚了问题的原 因,要说清楚,我们得先来看看 Lwip 中 IP 分包的实现。
文档说明:有STM32用户反映,他使用STM32F4系列芯片进行开发,通过STM32CubeMx配置初始化代码,使用了UART的DMA传输。但他发现DMA根本不工作。后来他无意中发现,是因为他在用户代码里不经意地调整过UART外设和DMA外设初始化代码的前后顺序,当他重新调整二者的先后顺序后就一切正常了。他想知道这个顺序是怎么影响DMA功能的。
文档说明:我们之前经常有讲到过如何通过USB的DFU方式来对固件进行升级,在示例中我们通常是通过一个按键来触发APP跳转到BOOT从而进入到DFU升级模式。但是也有一种情况,客户的环境是没有任何按键或者其它触发条件,只有一个USB口连接运行windows操作系统的上位机。这不,前不久就碰到这么个客户,下位机MCU端仅仅只有一个USB口连接上位机,且MCU端与上位机之间的USB是常连的,并不能通过USB的拔插操作来触发APP的跳转,在此情况下,我们又该如何来实现客户的需求?
文档说明:根据客户反馈,使用基于STM32L496的Nucleo板的LPUART 做打印输出时,电脑端始终没法出现任何信息。。根据该开发板使用手册说明,外设LPUART的TX/RX脚【PG7/PG8】默认与开发板STLINK部分的VCP端口相连,这样做可以省去飞线的麻烦,更不需要外接USB-UART转换器件。本文档对该问题做了解答。
文档说明:本文针对STM32F767的USB_OTG_FS模块工作在Host模式下的挂起与恢复以及远程唤醒方面的问题进行讨论。
文档说明:本文以STM32F405为例,详细说明上HID_CDC复合设备在WIN10的识别问题。
文档说明:在音频开发中,I2S(Inter-IC Sound)接口被广泛采用。大部分STM32集成了I2S接口。本文主要为了让STM32使用者了解I2S音频接口,及快速实现I2S接口的音频应用开发。 首先,对STM32的I2S接口进行简单介绍,然后描述了几种常见I2S音频应用架构及每种架构音频部分的电路图,最后围绕每种架构给出实现例,以便读者进行参考理解。其中,实现例会围绕STM32CubeMX展开,以便开发者能够参考并快速、简便地实现软件开发。除此之外,在Cube软件包中有I2S外设应用例程,提供了更完善的实现参
文档说明: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传输数据时出现卡顿现象。本文将针对这一问题进行分析。
文档说明:某客户准备用STM32F205VCT6做USB FS Device设备时,配置PA9作为普通通用的GPIO口(外部上拉电阻10K到电压3.3V,NO PU/PD),在项目测试的时候发现,该引脚上的电压只有2V。
文档说明:在参考Cube软件包中I2C例程后, 根据应用需要新增了一路I2C接口,结果新增I2C无法收发数据。本文主要对问题进行描述,分析产生原因,提供解决方法。
文档说明:在Cube软件包中,为不同系列MCU、不同外设提供了对应的例程方便开发参考。其中,针对STM324xG-EVAL平台提供了UART中断发送接收的例程。开发者参考了这个例程进行UART功能开发,并且为了实现不间断的接收功能,在接收回调函数中,再次调用中断接收函数。在这种情况下,出现了例程执行异常。本文分析了这种情况出现原因及解决方法。
文档说明:Cube软件包的提供,极大的降低了开发难度。使用者在开发的过程中,只需参考Cube包中提供的例程就能快速的实现对应功能开发。开发者为了快速开发UART功能,参考Cube包中的UART例程,并根据应用情况,扩展了另一组UART接口。但是在应用过程中,发现两路UART不能共存。本文分析了这种情况出现的原因。
文档说明:本篇文章主要是对STM8Lxxxx 在I2C 通信调试中遇到的第一次通信正常,但第二次通信失败问题的分析和处理。
文档说明:此文延续之前相同文章的话题,是对上篇文章的补充,之所以会有此文,主要是之前发现问题是在STM32F4上,解决方案也是基于CubeF4,但是,当相同问题出现在STM32F0上时,使用之前的代码修改并不能适用,这也就是本文的目的所在。
文档说明:客户反应使用我们的STM32F446 的CEC 库的时候,输出的数据和数据长度始终不匹配,跟电视通信不正常,如果输出的数据始终比长度多一个字节.客户试着按字节数减一去做输出,但是又不能输出一个字节的情况.
文档说明:在很多低功耗应用中都需将MCU 进入STOP MODE 以节省更多的功耗,但是在以前的架构中,如果要达到这种应用,只能在进入低功耗模式之前将串口的管脚设置成普通的GPIO 的中断模式,虽然也可以达到效果,但是这样会丢失第一个字节.所以我们现在可以使用新的LPUART,这样不仅可以把MCU 从STOP mode 下,还可以不丢失第一个数据,但是还是有一定限制和使用方法的.下面我们将详细介绍一下。
文档说明:在STM32 的系列产品中,很多型号都带有USB 接口,为使用USB 来进行代码升级提供了便利。这些型号中又有很大一部分可以通过内部System Memory 中的Bootloader 直接进行USB DFU 升级,具体哪些型号支持USB DFU,可参考应用笔记AN2606《STM32 微控制器系统存储器自举模式》。有些型号虽然有USB,但是System Memory 中的Bootloader 并没有支持USB DFU,比如STM32F102 / STM32F103、或者Bootloader V2.x 的
文档说明:客户使用STM32F429系列MCU,存储介质有两种,分别为SDIO连接TF-card,SPI Flash,目的是通过1个usb口连接到PC后,能够看到两个盘符,PC能够分别对TF-card和SPI Flash进行读写操作。
文档说明:客户使用I2C对EEPROM进行读取操作时,正常读取的最后一个字节,主机会传送一个NACK给EEPROM,以便结束该次读取过程,如果主器件给出ACK,而程序又默认结束读取过程,会出现EEPROM认为主机还需要读取数据,但此后SCL的时钟不会给出,将导致I2C总线被挂起占用,此时START,STOP命令将不会再次成功送出信号;本文针对这个异常状况结合实际应用问题给出处理方法。
文档说明:在向客户推STM32F4芯片的时候,客户反馈使用CDC类无法发送64个字节,于是通过深入研究问题,发现问题之所在,到解决问题。本文将基于STM32F4DISCOVERY板,一步步重现问题,一方面介绍如何使用USB的CDC类进行开发,另一方面,对在开发过程中碰到发送64整数倍数据时会失败的问题分析及解决方案。
文档说明:Demo 程序中,HID 和 Audio 单独运行都不会有问题,把 HID 和 Audio 整合在一起,同进传送数据时,会出现Audio 不能传送数据的情况。
文档说明:本文介绍的是NTP客户端,NTP协议是TCP/IP协议中的应用层协议。NTP的全称是Network Time Protocol, 它是用来同步网络中个计算机的时间的协议。它的目的是在国际互联网上传递统一、标准的时间。具体的实现方案是在网络上指定若干时钟源网站,为用户提供授时服务,并且这些网站间应该能够相互比对,提高准确度。
文档说明:本文将针对客户在使用Cube库时CAN2不能产生接收中断进行分析。
文档说明:bxCAN是STM32系列最稳定的IP核之一,无论有哪个新型号出来,这个IP核基本未变,可见这个IP核的设计是相当成熟的。本文所讲述的内容属于这个IP核的一部分,掌握了本文所讲内容,就可以很方便地适用于所有STM32系列中包含bxCAN外设的型号。有关bxCAN的过滤器部分的内容在参考手册中往往看得“不甚明白“,本文就过滤器的4种工作模式进行详细讲解并使用具体的代码进行演示,这些代码都进行过实测验证通过的,希望能给读者对于bxCAN过滤器有一个清晰的理解。
文档说明:本篇LAT的内容简介 如何应用ST USB HID(MOUSE)例程,生成一个可以输入和输出任何长度小于等于64字节的例程。
文档说明:某客户的产品,需要评估NUCLEO-F746ZG板上的USB功能,使用cube Version 4.15.1 版本工具生成工程,但在win7和win10上遇到驱动不正确。
文档说明:最近有客户反映STM32F103进入STOP模式后无法通过串口唤醒。
文档说明:客户在做USB通讯的时候,基本的需求就是发送某些数据到USB host端,同时接收一些数据从USB Host端,那么如何快速的建立一个工程并验证数据是否正确呢?下边我们就结合STM32F072的评估板(其他的STM32xx系列的实现方式都是类似的)来快速实现一个简单的数据收发实验。
文档说明:客户反馈在使用STM32F205的串口工作在DMA模式时,有时能够接收数据,有时完全没有数据,但如果换成中断模式来接收又能100%正常收到数据。
文档说明:客户在产线批量生产测试uart的时候,发现有一部分出现了如noise detect,framing err等异常状态进入中断处理。
文档说明:本文将针对客户无法使用内置Bootloader的DFU方式进行固件升级的问题进行分析。
文档说明:学习了STM8的CAN总线的IdMask模式。在CAN协议里,报文的标识符不代表节点的地址,而是跟报文的内容相关的。因此,发送者以广播的形式把报文发送给所有的接收者。节点在接收报文时-根据标识符的值决定软件是否需要该报文;如果需要,就拷贝到RAM里;如果不需要,报文就被丢弃且无需软件的干预。为满足这一需求,beCAN为应用程序提供了个可配置的、位宽可变的6个(0-5)过滤器组,用于只接收那些软件需要的报文。硬件过滤的做法节省了CPU开销,否则就必须由软件进行过滤,从而占用一定的CPU资源。
文档说明:STM32 NUCLEO开发平台是ST最新发布的易用性好、可扩展性佳的低成本平台。开发平台具有mbed功能支持Arduino接口,同时还提供ST Morpho扩展排针,可连接微控制器的所有周边外设,可以利用Arduino巨大生态系统优势,便于快速实现STM32学习和评估! 这儿我们评估它的CAN外设功能。
文档说明:此问题由客户工程师提出,客户在使用STM32F103 的USART 做串口通讯时,发现了一个问题,当设备正常通信一段时间后,串口不响应外部的通信请求了。
文档说明:LwIP在lwipopts.h和opt.h头文件中提供了多个配置选项。用户可以根据不同的性能需求和不同应用的内存限制对协议栈用到的内存配置进行调节。Opt.h头文件中包括协议使能和设置,内存设置,调试选项等等。而Lwipopts.h头文件中集合了opt.h中一些常常需要改动的部分。一般情况下用户对lwipopts.h头文件进行修改就可以了。不管是对lwipopts.h还是opt.h进行修改,都必须保证是在已经对你所改动的内容足够的了解的情况下进行,所做的改动是正确的,否则有可能导致协议栈不能正常工作,或者
文档说明:USB作为从机设备时,管脚连接以及通讯的验证方法其实就是下载一段简单USB程序,在不需要任何驱动的前提下实现简单的USB通讯。通过这个简单程序的运行情况来判断USB管脚和通讯是否正常。
文档说明:此问题由某客户提出,应用处理器AP 与MCU 进行I2C 通信,通信会经常发生异常,需要定位原因.
文档说明:客户使用STM32F091的USART工作于smartcard模式用于7816通讯,发现不正常。本篇LAT的内容简介了STM32F0中关于USART中Smartcard模式的Guard Time的设置。
文档说明:该问题在不同客户使用不同芯片的SPI功能时都曾经提到。主要现象是slave端接收到的数据时有移位现象,例如0x10接收成0x08。此种移位一旦发生,当前通讯的后续数据也都发生了移位。
文档说明:在STM32的众多外设中,以太网这个外设相对而言还是比较复杂,初始化的过程也比较复杂,涉及到MAC,DMA,PHY好几块内容的初始化。可能有时候datasheet都看得头疼了,可初始化还是有问题。而STM32CubeMX工具就可以帮我们轻松完成这部分工作。在本文中,将分别以STM3220G-EVAL板为例,通过CubeMXv4.11来新建一个基于RAW API的TCPEchoServer的工程。
文档说明:该问题由某客户提出,发生在 STM32F103R8T6 器件上。据其工程师讲述:其产品中设计中,STM32 与一颗 MPEG 解码芯片通过I2C接口通信。其中,STM32 为 SLAVE节点,而 MPEG 解码芯片为 MASTER 节点。在产品调试过程中,发现该通信不可靠。在系统运行一段时间后,该通信会出现故障而导致整个系统死机。使用示波器测量,发现这时I2C总线的 SCL 信号持续为低电平。
文档说明:该问题客户提出,发生在STM32F103VDT6 器件上。据其工程师讲述:在其产品设计中,使用了STM32 片上Flash 模拟了一个EEPROM 的功能,用于存贮数据。在软件调试时,发现开启此功能,会影响到USART 通信,导致偶尔发生个别数据接收不到的现象。
文档说明:某客户使用 STM32F4 的 OTG 库做 USB 主机控制 Wifi 网卡。使用 BULK 传输类型时,从数据读取数据时, 如果设备返回需要把设备返回的 NAK 状态告知上层应用,该如何修改OTG 库。
文档说明:该问题由某客户提出,发生在STM32F407IGT6 器件上。据其工程师讲述:在其产品设计中使用了STM32 的以太网接口进行通信。在软件最初的调试中,该接口工作正常。后来为了满足软件对内存容量的需求,启用了STM32 的CCM 存贮器,但启用后发现以太网接口不能通信。
文档说明:某客户工程师在其产品的设计中,使用了 STM32F205VET6。据其工程师讲述:他使用 ST 的USB 固件库中的VCP例程来实现虚拟串口的功能,但是他发现虚拟串口一次输出的数据(从串口到上位机)如果超过2Kbytes 就会造成数据丢失,只输出尾部的2Kbytes。客户工程师检查代码发现USB 的FIFO 大小由宏定义APP_RX_DATA_SIZE 决定,而APP_RX_DATA_SIZE 的大小刚好为2Kbytes。所以他认为此FIFO设计太小而造成的,于是他将FIFO 的大小改成5Kbyte,不过
文档说明:该问题由某客户提出,发生在 STM32F205VCT6 器件上。据其工程师讲述:为了实现产品的设计中使用 STM32 的 USB OTG 接口,作为其产品的一个通用 USB 接口来用。在其产品小批量试产后,发现 STM32 的 USB OTG 接口在其产品的使用过程中易损坏。
文档说明:某客户工程师在某型号新产品的设计中,使用了 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 反复做复位操作,会很容易复现 这一现象。
文档说明:本篇LAT从控制传输的角度解析了运行在“USB FS IP”这款USB模块上的全速USB设备库的结构和用法。
文档说明:某客户使用STM32F103的USB模块做设备时和上位机PC连接时碰到一个问题:PC端驱动已经固定好,是对下位机USB设备上的地址编号为0x0A和0x0B的两个端点通信,从0x0A端点读取数据,向0x0B端点写数据。而STM32F103的USB模块只有8个双向端点,能否支持这样的寻址。
文档说明:STM32MP13x 系列是一款单核 A7 的 MPU,同时在低功耗模式下有出色的低能耗,官方网站已经提供了一个关于低功耗的文档 AN5565(STM32MP13 lines using low-power modes),但是实际应用中会遇见各种问题,所以针对低功耗应用场景整理这篇文档,主要介绍概念和如何调试一些常见问题。
文档说明:本文概述在使用 STM32 MCU 过程中遇到的 LSE 不起振问题的几个可能原因,使用者可以参照自己的实际应用场景参考排查相关问题。
文档说明:客户在使用 STM32H565 开发新项目的时候遇到一个问题,PB14 在开漏时无法上拉 到 3V3,且其输出的 PWM 频率比其它 GPIO 低。且多片芯片的表现类似。 检查客户的原理图并未发现明显的问题。
文档说明:客户在使用 STM32L433CCY6 开发过程中,出现软件复位后 SRAM2 里的值被擦除问题。
文档说明:本文探讨一个奇怪的 MCU NRST 管脚异常复位现象。
文档说明:某客户使用STM32U59,批量生产时发现有1%左右的机器存在反复重启问题;问题 机器断电后用热风枪加热STM32U59 再上电问题消失,试了几台机器都是如此,遂怀疑STM32U59 存在质量隐患。
文档说明:STM32 L4 系列作为一款高性能的低功耗芯片,具有强大的运算处理性能和极低的运 行和待机功耗,广泛应用于各种需要节能设备上。
文档说明:客户反馈STM32F030 作为他们产品的控制芯片,在常温下工作是正常的,但是稍微冷冻下就会启动失败,重现率100%,再次加热或者恢复到常温又能正常工作。此问题已经困扰了客户四五年,一直没有头绪,每次都更换一块芯片就好了,因为客户自己也知道,换芯片时会将其吹下来,必定会加热芯片,这样MCU 也就能恢复正常了。但这种办法终究不是解决方法,客户急切想找到原因并解决问题。
文档说明:本篇主要是介绍一种处理问题的思路,即当我们在做STM32应用开发过程中,遇到芯片异常复位,或者进入了异常处理时,如何通过集成开发环境,如IAR,KEIL等查看相应的ARM内核寄存器,定位出应用软件产生异常的地方!
文档说明:MCU电源电路相对简单。但是在实际开发中,建议完全参考数据手册和《Getting started with xxxx MCU hardware development》中电源部分设计,避免由于对ST MCU不熟悉引发的硬件设计问题。 具体到关闭内部电源管理器的设计,在上述文档中,同样有详细描述(包含了电路设计建议和对应波形情况)。
文档说明:某客户反馈, 当MCU 频繁的正常通断电的时候。FLASH 被异常改写,出现各种各样的异常(整片别擦除、中断向量表被改写为0、写保护被清掉、被加上读保护 ……..)本文主要介绍这个问题的一个解决办法。
文档说明:问题由客户提出,用户发现在STM32F103 器件上。用户在产品中使能了IWDG,在使用过程中发现当MCU被复位后,有时程序跑不下去;跟踪代码发现程序死在轮询PLL_RDY 处。用户反馈说用的就是ST库中的范例代码,怀疑STM32F103 有设计问题。
文档说明:STM32L4 系列,目前是STM32 超低功耗产品中最强大的一个系列。它还为我们提供了更多的低功耗模式的选择,包括STOP2 模式,包括低至30nA 的Shutdown 模式。对于这些模式,我们需要进行深入地了解,才能把它们用好。
文档说明:客户在使用Nucleo-L053R8开发板调试的程序低功耗功能的时候发现,即使去掉JP6的跳线帽,程序依然在运行,进而怀疑所测试的电流是否是准确的.
文档说明:问题: 问题由客户提出,客户在生产调试样机的时候,使用两周后发现几片样机出现VBUS 引脚在不接USB 线的时候有3V 左右的电压的问题。结论:由数据手册AMR 可以看出,我们在设计电路的时候需要避免VIN>(VDD+4.0v)。
文档说明:本篇讨论了STM32F107 中RCC_CSR 寄存器中PINRSTF 标志置位的问题。
文档说明:该问题由某客户提出,发生在 STM8S 器件上。据讲述:在生产中,发现STM8存在一定比例的不良。具体表现是芯片的NRST引脚上有充放电的波形。此时,芯片无法正常工作。
文档说明:某客户工程师在某型号新产品的设计中,使用了 STM32 器件,型号为:STM32F101xxT6。在其设计中, STM32 有两路供电,其中一路的电压为 3.3V,为 VDD 及 VDDA 供电,而另外一路的电压为 3.0V,为 VBAT 供电。两路供电都是由同一个蓄电池的输出电压,分别经过各自的电压转换电路处理而得到的。
文档说明:该问题由某客户提出,发生在 STM32F103VBT6 器件上。据其工程师讲述:其产品在老化测试中出现个 别样机通电后不工作的现象。对该样机重新通电,可以恢复正常。但在后续的测试中还会偶尔重现不 工作的现象,呈现很强的随机性。
文档说明:初次接触到STM32F7,总会有个疑惑,为什么0地址变成了ITCM RAM的起始地址。系统复位还是从地址0处开始执行吗?如果是,那这似乎看起来是冲突的。实际上,STM32F7基于Cortex-M7内核,Cortex-M7和Cortex-M3/M4的复位序列有了一些不一样。在本文中,将针对这个问题做详细讲解。
文档说明:该问题由某客户提出,发生在 STM32F205RGY6 器件上。据其硬件工程师讲述:由于所选型号是WCLSP66 封装的芯片,看到芯片上有REGOFF 和IRROFF 两个引脚是LQFP 所没有的,不知道如何使用,所以需要了解一下。
文档说明:有客户在产品的设计中,使用外部IC 的GPIO 通过连接NRST 引脚来对STM32 MCU 进行复位控制时,会遇到以下问题:IC 可以对MCU 进行复位控制,但是芯片内部的复位信号(如看门狗等)不能对MCU 进行复位,甚至影响引脚功能.
文档说明:该问题由某客户提出,发生在 STM32L151K6U6器件上。据其工程师讲述:他撰写一段代码,让MCU 工作在LSI 主频上,然后通过WFI 指令进入WAIT 模式,电流达到400uA 左右,与数据手册中所描述的55uA 相去甚远,故请求撰写一例程供他参考。
文档说明:客户使用 STM32G0B0 在做产品开发时碰到一个问题, 当程序从 BOOT 程序跳转到 APP 时, APP 运行失败. 而 BOOT 程序和 APP 程序单个运行时均能正常. 本文主要是介绍如何追踪并定位问题的方法, 以及所涉及到的工具和文件, 以供开发者参考
文档说明:在 STM32G0B1x 的 0x92 版本的 bootloader 中,通过 I2C 接口执行完"Go"命令跳转到应用程序时,会将设备的 DBG_SWEN 位配置为 0,也就是禁用设备的调试能力。如果我们想要恢复调试能力的话,可以在应用程序中添加设置 DBG_SWEN 位为 1 的操作。但是其它型号或者其它版本的 bootloader 执行"Go"命令后,不一定会有这种设置,我们应该具体应用具体分析,详细可以参考 AN2606,AN2606 是 STM32 bootloader 的说明文档
文档说明:在使用 STM32WB 系列 MCU 时,通过 STM32CubeProgramer GUI 方式更新 FUS,Stack,User APP,需要操作多次,并且要输入不同的地址,比较烦琐,不适合在量产中操作使用。根据 RN0109:STM32CubeProgrammer v2.11.0 release information 描述,在STM32CubeProgrammer v2.11.0 中已经支持通过 CLI 的方式自动更新 FUS,STACK,以及User APP。
文档说明:STM32 的 Bootloader 可以支持多种协议的,比如 USART,I2C,DFU 等等,USART Bootloader 是客户使用 STM32 的时候常常会用到的协议。客户在使用 STM32F745 进行产品开发的时候,出现了使用 STM32CubeProgramer 无法通过 USART1 Bootloader 进行程序升级的问题。为了解决客户的问题,我在 NUCLEO-F746ZG 开发板上,复现了同样的现象,本文针对这个现象,分析了该问题的原因和解决方法,作为一个记录。
文档说明:某客户使用我们的STM32G071 MCU,使用CubeProg 工具通过USART 接口烧录程 序后,执行 “Run after programming”并不能如期望般看到NUCLEO-G071 LED 灯的闪烁。
文档说明:本文对双Bank 模式下程序在线升级进行介绍,指出操作中的注意事项。
文档说明:某客户在应用中需要使用 STM32F765 片上 Bootloader 对用户 Flash 进行升级,结果发现有小批量产品在将 Boot0 拉高并复位 MCU 后,DFU 升级操作失败,PC 也未识别到 STM32 bootloader USB 设备。 用户很奇怪,STM32 启动时 BOOT0 为高不就进入片上 Bootloader?难道 MCU system loader 代码有问题? 本文主要解决这个问题。
文档说明:客户反馈通过PC软件flashloader 不能够跟STM32 MCU自带bootloader连接,并且系统运行一段时间后异常复位。本文主要解决这个问题。
文档说明:某客户在其产品的设计中,需要使用了STM32F072RBT6。客户在使用过程中,使用System Memory 中的USB DFU 功能对代码进行更新,并直接使用“Leave DFU mode”跑用户代码,进行功能观察。但是,发现STM32F0 在点击“Leave DFU mode”按钮后,用户代码并没有正常工作。本文主要解决这个问题。
文档说明:STM32提供了灵活的固件加载模式,其中大部分型号支持DFU加载。并且在电脑端,提供了配套的演示软件DfuSe。包含可视化版DfuSeDemo.exe和命令版DfuSeCommand.exe。本文主要介绍DfuSeCommand.exe的使用。
文档说明:STM32F769的双bank Flash,可以在执行程序的同时对另一个bank进行擦除和编程的操作。利用这个特性,可以实现在线程序更新,双bank启动的功能。本文将结合笔者在实际应用中遇到的问题,针对性的介绍nDBOOT分别设置为0和1时,两种不同的启动方式。同时你也可以参考AN4826和STM32F7 Cube库中的例程来进一步加深理解。
文档说明:在STM32 的系列产品中,很多型号都带有USB 接口,为使用USB 来进行代码升级提供了便利。这些型号中又有很大一部分可以通过内部System Memory 中的Bootloader 直接进行USB DFU 升级,具体哪些型号支持USB DFU,可参考应用笔记AN2606《STM32 微控制器系统存储器自举模式》。有些型号虽然有USB,但是System Memory 中的Bootloader 并没有支持USB DFU,比如STM32F102 / STM32F103、或者Bootloader V2.x 的
文档说明:客户计划使用STM32L011xx开发一款光模块产品,需要MCU支持I2C接口下载代码。但STM32L011xx内部Bootloader没有支持I2C接口,所以需要我们使用IAP的方式来帮助客户实现该功能。
文档说明:问题:有客户想用我们的STM32 NUCLEO(如STM32F072NUCLEO) 开发板来测试串口Bootloader。
文档说明:本文将针对客户无法使用内置Bootloader的DFU方式进行固件升级的问题进行分析。
文档说明:部分STM32 是具有空片检测功能的,以便直接进入System Memory 中执行Bootloader,方便通过某些个外设来直接进行编程。比如STM32L011xx、STM32L021xx、STM32F04x和STM32F09x。有看过《STM32F091 空片使用System Bootloader下载代码》和《STM32L011x 和STM32L021x启动模式注意事项》的都知道这个功能。
文档说明:针对客户在STM32L011D4P6应用开发过程中,碰到的启动模式问题进行了分析。并且根据问题,介绍开发工具、烧录工具中如何配置以避免影响。
文档说明:某客户在其产品的设计中,使用了STM32F411。由于产品外观的要求,无法在外部对BOOT 脚进行控制,而且外观上只有USB 接口是留在外边的,需要使用USB DFU 进行升级。而且USB接口只用于代码升级,没有其他功能,所以客户不想去碰USB 代码,希望能够直接使用System Memory 中的Bootloader 进行代码升级。
文档说明:伴随着固件升级需求的增加,STM32提供了灵活的升级方式。本文一步一步介绍如何利用USB DFU Class以及ST提供的DfuSe demo软件工具实现IAP(In Application Program)功能,但并不涉及到DFU class移植。
文档说明:本文将针对客户无法使用内置Bootloader的DFU方式进行固件升级的问题进行分析。
文档说明:本篇主要介绍STM8Lxxxx 如何实现在应用程序中编程(In-application programming)。
文档说明:本篇应用笔记为实现一个简易脱机编程器。通过本文档,您可以了解如何通过UART来实现一款简易的脱机编程器,并提供一个范例工程以供大家参考。
文档说明:我们在《STM32F09x 不使用BOOT 脚实现System Bootloader 升级代码》中实现了通过修改Option Bytes 来达到控制BOOT0 和BOOT1,在不需要外部BOOT 脚的情况下实现了使用System Bootloader进行代码升级的功能。可是,这个功能必须在程序中预先烧写了功能程序后,才能不断地进行升级。也就是说,在第一次空片烧写时,必须使用SWD进行烧写的。那有没有可能在空片烧写时,就可以直接使用System Bootloader 进行烧写呢?这样我们就可以完全使用串口进
文档说明:该问题由某客户提出,发生在 STM32F407IGT6 器件上。
文档说明:本文的内容为简单介绍STM32F0 的启动模式,并重点介绍有可能产生的问题。
文档说明:客户工程师在某型号新产品的设计中,使用了 STM32L151VCT6。据其工程师讲述:他使用 ST 的 Flash Loader demo 通过 STM32 的 USART1 向其加载用户程序,发现 Boot Loader demo 与 STM32 通信不稳定,时而成功时而不成功,有时甚至连接不上。
文档说明:该问题由某客户提出,发生在 STM32F103TBU6 器件上。据其工程师讲述:在其产品设计中,软件的架构采用 IAP Loader+App 的模式。IAP Loader 部分负责管理和更新 App 部分,而 App 部分则负责常规的业务的处理,两部分代码分别由独立的软件工程生成。系统运行时先启动 IAP Loader,由其判断是否需要更新 App,如不需更新则跳转到 App,由 App 进行常规业务处理。在软件调试过程中,其软件工程师发现从 IAP Loader 到 App 的跳转存在某种不可靠性。该跳
文档说明:有客户在初次使用STM32 MCU IAP 的例程的,可能会对跳转到APP 部分的函数的实现产生疑问 。
文档说明:某客户在其产品的设计中,使用了STM32F091RCT6,产品在出厂后将来可能由于功能的升级需要升级代码。由于外观的需要,客户不希望留一个用于升级的按键或是跳线槽在外边。希望能够是通过接收串口命令来实现启动升级,又希望能够直接使用System Memory 中的Bootloader 进行代码升级。
文档说明:当使用STM32的Bootloader 中的GO 命令进行从Bootloader 向用户代码进行跳转时,需要正确地在用户代码中设置向量表,才能正常地运行用户代码。
文档说明:当用户需要在其产品设计中使用到 BlueNRG LP/LPS 等系列芯片内置的 OTP 来存储 其客制数据的时候,可以采用本文档所述方法实现。 用户在访问 OTP 时,必须保证芯片处于 UART bootloader 模式
文档说明:客户在使用 STM32G474RE 进行产品开发的时候,操作系统软件使用了 RT-Thread5.0,同时由于要做 ClassB 认证,所以在 RT-Thread 系统上,移植了 ClassB 2-3-0 版本安全库。用户程序另外一个功能是固件升级,在调试固件升级程序的过程中,发现一旦执行了 ClassB 的启动自检,就会出现固件升级失败。调试发现,固件升级失败的原因是写 Flash 的时候发现 Flash 状态寄存器的错误标志被置位,导致 Flash 写操作失败。客户根据现此象反馈 ClassB 的自检
文档说明:有客户反馈,在使用 STM32H5 读取温度传感器校准值地址时,会进入 HardFault,而在其他系列芯片中读取这个参数时并没有此现象。在 NUCLEO-H563ZI 开发板上去复现此问题,发现只有开启 ICACHE 后才会复现,初步验证说明进入 HardFault 与 ICACHE 相关,如果直接关闭ICACHE 虽然可以解决进入 HardFault 的问题,但势必会影响代码执行的效率。所以,我们希望能找到一种更好的方式去处理此问题。
文档说明:本文档就是根据 X-CUBE-DISPLAY 3.0 所提供的 Flash Loader 工程,以 NUCLEO-STM32G474+GFX01M2 开发板为例,介绍了 STM32CubeIDE、KEIL、IAR 等不同编译器利用 X-CUBE-DISPLAY 所提供的 API 来生成外部 Flash Loader 的方法。
文档说明:本技术文档主要解决客户反应 STM32L4R9 同 QSPI Flash 通讯,测出来的读取速率为 10MB/s, 和理论值相差较大。
文档说明:客户使用 STM32G474 系列芯片,在烧录应用程序的同时要对 Option Bytes 中的 DBANK进行修改,采用 STlink Utility 或是 CubeProgrammer 工具进行操作,并希望整个过程只用一次烧录动作就完成,发现烧录的应用程序无法运行。
文档说明:客户使用 STM32H750VBT6,通过 QSPI 外扩了一个 4M 的 NOR FLASH,采用 memory map 模式。当程序跳转运行到外设 FLASH 后,大约两个小时后程序死机。客户使用的 IDE 是 KEIL,此问题可以固定重现。 在 KEIL 调试模式下重现问题时,通过多次观察发现,程序死的位置总体上会停在两个位置,并不是同一个位置。一个是 TIM15函数的入口;另一个是进入中断函数后的一个赋值语句。
文档说明:某客户在项目开发中用到STM32L462 的SDMMC 接口去进行SD 卡的读写,发现用SDMMC中断、 Polling 查询的方式都可以进行连续的读写交替循环操作,但是用DMA 的方式进行该操作时,发现不能进行多次的读写。
文档说明:我们在做基于 STM32芯片开发LWIP功功能时,往往会用到PING命令做基本的功能性验证测试,这里就聊聊相关应用话题。
文档说明:在一些新的 STM32 系列中,比如 STM32L4、STM32G0、STM32G4 等,除了 Flash 标准编程之外,还可以支持 Flash 的快 速编程,那么对于 STM32G0 来说,在使用快速编程时,有哪些需要注意的地方呢?
文档说明:一些应用中,涉及到对存储设备的数据访问,例如uSD卡、U盘。具备USB OTG控制器的STM32,可以实现对U盘访问的支持。本文介绍STM32对于U盘访问的硬件/软件实现。介绍如何利用STM32CubeMX,一步一步实现STM32访问U盘。仅需要简单的几个步骤, 实现U盘访问的应用开发。
文档说明:客户反馈在使用STM32F412的时候,擦除sector 8~11发现时间过长,从而导致意外触发IWDG复位。
文档说明:STM32提供了灵活多样的外扩存储器访问实现。本文中,介绍如何利用QSPI (QuadSPI) 外扩串行NOR Flash存储器。首先对QSPI接口功能特性进行介绍,然后分别介绍硬件设计和软件开发。并基于STM32CubeMX,提供访问MICRON N25Q128A13EF840F的实现参考。
文档说明:STM32F769AI 通过STM32CubeMX 进行外设配置时无法同时使能QSPI(Single Bank with Quad SPI Line)和FMC(Mux Mode 128Mb Nor Flash,字宽16 位)。初步判断由引脚冲突引起,但由于产品尺寸的限定,只能使用WLSCP封装的MCU,不能通过使用更大封装的MCU 来解决问题。结论:由于WLSCP 封装的STM32F769AI 无法通过不同的GPIO 映射出FMC_A23 和QUADSPI_BK1_IO2,因此 STM32CubeMX无法
文档说明:有客户在使用CCM RAM的过程中遇到了问题。客户用的是STM32F427芯片,程序将CSTACK放在CCM RAM中,结果测试过一段时间的板子都出现了不能正常运行的情况。这个现象一度让我们怀疑是否是CCM RAM在测试过程中遭到了破坏,也导致我们在解决问题的道路上浪费了不少时间。事实证明我们的CCM RAM并没有那么脆弱,而解决问题时多从多个角度进行验证,不要放过所有的出问题的可能性也很重要。出问题的原因我会在本文中进行解释。但在具体讨论这个问题之前,我想先介绍一下STM32F427这款芯片上的CCM
文档说明:在我们对STM32进行编程的时候,都会用到变量,因为我们的MCU是32位的,所以在申请变量的时候,就会存在变量长度不一致,需要对齐的问题.这个变量长度对齐的问题,小则可以只是影响代码执行的效率,大则会出现系统hard-fault的问题.下面我们将详细的解说这个问题.
文档说明:本篇讨论了 一个STM32F2在用户产品进行高低温测试死机的例子。
文档说明:LwIP在lwipopts.h和opt.h头文件中提供了多个配置选项。用户可以根据不同的性能需求和不同应用的内存限制对协议栈用到的内存配置进行调节。Opt.h头文件中包括协议使能和设置,内存设置,调试选项等等。而Lwipopts.h头文件中集合了opt.h中一些常常需要改动的部分。一般情况下用户对lwipopts.h头文件进行修改就可以了。不管是对lwipopts.h还是opt.h进行修改,都必须保证是在已经对你所改动的内容足够的了解的情况下进行,所做的改动是正确的,否则有可能导致协议栈不能正常工作,或者
文档说明:在合计智能穿戴应用的时候,为了更好的用户体验和丰富的人机交互界面,需要更多的存储(RAM 和FLASH)来存储自定义的图片资源 ;由于可穿戴类的产品体积都非常小,因此FLASH&PSRAM;集成在一起的MCP 存储芯片是一个不错的选择。我们的STM32 FMC 外设是可以支持MCP 存储芯片的,而且只需要简单的配置就可以实现MCP 的访问。
文档说明:客户反映,某产品试生产时出现问题,故障率在10%左右。该故障可以复现,并且将芯片(MCU)更换到新的电路板也无法解决。因此,客户怀疑是芯片出现质量问题。本篇LAT的内容简介了一个由RAM上电后初始值引起的问题。
文档说明:该问题由某客户提出,发生在STM32F407IGT6 器件上。据其工程师讲述:在其产品设计中使用了STM32 的以太网接口进行通信。在软件最初的调试中,该接口工作正常。后来为了满足软件对内存容量的需求,启用了STM32 的CCM 存贮器,但启用后发现以太网接口不能通信。
文档说明:该问题由某客户提出,发生在 STM32F103VDT6 器件上。据其工程师讲述:在该公司的某型号产品的设 计中用到了 STM32F103VDT6 器件,而其软件的设计采用了 IAP+APP 的架构。IAP 是一段 BOOT 程序, 负责对硬件进行初始化以及在接到相关指令的情况下更新 APP 程序,而 APP 程序则负责对常规业务 处理。在 STM32 启动后,IAP 首先运行。在初始化硬件之后,检查是否有更新 APP 的指令,如果 有,则更新 APP,如果没有,则跳转到 APP。APP 对常规业务进行处理
文档说明:该问题由某客户提出,发生在 STM32F407IGT6 器件上。据其工程师讲述:为了满足软件对大容量内存的需求,将软件中的部变量从内部 SRAM 转移到片外的 SRAM当中。而这一改变,导致该软件不能运行,每次复位后,随即便发生死机。在此之前,对 FSMC 的初化代码,以及片外 SRAM 的读写匀做过测试,并确认是没有问题的。
文档说明:该问题由某客户提出,发生在 STM32F103VBT6 器件上。据其工程师讲述:其产品中使用了 STM32,已批量生产。其部分产品在交予客户使用一段时间之后出现故障。其工程师在对故障产品进行分析时发现,STM32 的 Flash 中部分数据丢失,原数据皆被0xFF 取代。丢失数据的 Flash 区间的地址不固定,大小也不固定,呈一定随机性。该现象只在车载环境下发生,而在实验室无法复现。
文档说明:有时候我们需要将一部分程序从FLASH拷贝到RAM中运行,以提高程序运行的速度。本文基于IAR Embedded Workbench列出了一些方法,可以在系统启动时自动从FLASH中将这部分程序拷贝到RAM中运行。本文中所有例子都是在IAR v7.2下,基于STM32F334完成的。
文档说明:嵌入式设计中使用RTOS必然会带来额外的RAM消耗,然而许多初次接触RTOS的工程师并不清楚如何评估RAM的消耗量。这篇文档以FreeRTOS为例,介绍评估RAM使用情况的一般方法,并给出在FreeRTOS下优化RAM使用的方法,也由衷的期望读者在使用其他RTOS时,可以通过相似的思路来解决问题。
文档说明:该问题客户提出,发生在STM32F103VDT6 器件上。据其工程师讲述:在其产品设计中,使用了STM32 片上Flash 模拟了一个EEPROM 的功能,用于存贮数据。在软件调试时,发现开启此功能,会影响到USART 通信,导致偶尔发生个别数据接收不到的现象。
文档说明:客户反映使用外扩SDRAM运行程序(使用链接器将code存放在SDRAM中,与编译器无关,采用GCC或者IAR都有这个问题)出错,Hard Fault发生。
文档说明:某客户工程师在其产品的设计中,使用了 STM32L152RBT6。该工程师打算在烧写程序之前,往 STM32L100 里边的 EEPROM 预置一些数据,没想到什么好的办法。他在网上搜了一下其他人的做法,发现大家基本上都是使用程序代码的方式,在第一次运行程序的时候,使用程序对 EEPROM 进行编程达到预置的目的。他觉得这不是最适合他的方法,于是请教是否还有其他更方便的方法。
文档说明:当客户遇到存储小量的数据,同时数据写的频率比较低的情况下。从成本角度希望省掉外置 EEPROM, STM32 提供了 Backup SRAM(4K)和 Flash 模拟 EEPROM 两种方案来解决该问题。但是,Backup SRAM 需要提供备用电源,Flash 模拟 EEPROM 又比较浪费空间(存放复杂的结构体数据也不方便)。 如果数据擦写频率较低(Flash 擦写次数有限),可以考虑直接将数据存放在 Flash 中。本文提供了如 何在 IAR6.5 实现该操作。
文档说明:某客户使用 STM32G431 的双 ADC 注入组同步采样,两个 ADC 各采集两个注入组通道,在选择独立模式 independent mode 时是 ok 的,但是配置为仅注入组同步模式 Dual injected simultaneous mode only 后,只有 ADC1(主)会触发采样,ADC2(从)不会触发,客户想了解背后的原因会是什么。
文档说明:在设计之前,强烈建议客户除了阅读参考手册,数据手册等资料外,阅读芯片勘误表也是极为重要的,这样可以规避芯片本身已知的一些局限。
文档说明:某客户使用 STM8AL 时,由于设计限制需使用 HSI 作为系统时钟。为减小 HSI 偏差,使用 LSE 对其进行校准。小批量试产发现 3%左右产品校准后频率和 16MHz 偏差较大。
文档说明:有客户使用 STM32G4 系列芯片开发产品,用到其中一个 ADC 模块的多个通道,他希望使用 TIMER 来定时触发这几个通道的转换。不过他有两点疑惑。第一,他期望定时器触发这几个通道是每触发一次则只转换一个通道,这样依次触发转换,而不是触发一次就把几个通道都转换完结。他不知这样是否可行?第二,既然是 TIMER 每触发一次就转换一次,如果说某个通道正在转换时来了触发,这个触发事件是否会丢失?是否会导致最终转换的数据混乱。
文档说明:STM32 在内部都带有一个温度传感器,STM32U5 也不例外。这个位于晶圆上的温度 传感器虽然不太适合用来测量外部环境的温度,但是用于监控一下晶圆上的温度也是挺好的,可以防止芯片过温运行。
文档说明:在当前使用的电机电阻采样方式中分为单电阻,双电阻,三电阻三种方式,其中在 ST MCSDK5.4 库中支持了两种采样方式,单电阻和三电阻,在市面还存在另外一种采样方式,即双电阻采样,本文讨论的是如何修改现有驱动库支持该种采样方式。
文档说明:很多STM32系列中的ADC都带有自校准的功能。它提供了一个自动校准的过程,用于驱动包括ADC上电/掉电序列在内的所有校准动作。在这个过程中,ADC计算出一个校准因子,并在内部应用到此ADC模块,直到下一次ADC掉电。在执行任何ADC操作之前必须校准,以消除芯片之间ADC结果的偏差。
文档说明:BlueNRG-2 作为一款高性能低成本的低功耗蓝牙 SoC 解决方案,实现了在有限的资源下兼容蓝牙 5.2 协议的功能。客户在使用 BlueNRG-2 芯片设计产品时,通常会将其当作方案中的主控芯片来用,控制外围器件,最常见的应用就是使用 GPIO 输出高低电平控制外部器件或作为某些器件的开关使能信号,本文讨论下 BlueNRG-2 在低功耗模式下,客户关于 GPIO 口使用上的一些常见问题。
文档说明:客户使用 ADC 进行序列转换,配置完成后,不调用 Cube 库函数而使用寄存器操作进行ADC 转换,发现无法启动 ADC 转换,且无任何报错。如果只使用一个通道转换 ADC,则可以正常启动 ADC 转换。
文档说明:在STM32 MCU 中,ADC 有多种启动触发方式,本文对各种触发源的原理进行介绍,方便大家以后如何选择合适的触发源。
文档说明:当前的数字电源设计中,ADC 与定时器是最重要的两个外设,算法基于ADC 的采样结果来计算更新PWM输出,以实现环路控制。一般情况下使用定时器的复位/周期事件或是某个比较事件来触发ADC 转换,然后在ADC 转换完成中断中执行环路算法,让ADC 的转换频率、算法执行频率与PWM 频率保持一致。但是某些情况下ADC 的转换频率或是环路计算频率跟不上PWM 的频率,需要对ADC 的触发进行分频,实现每N 个PWM周期触发一次ADC 转换。本文基于STM32G474 介绍在高精度定时器与高级控制定时器中如何实现
文档说明:在G4中存在最多5个ADC转换单元,其中ADC1/2和ADC3/4可以工作在双路模式下(Dual mode),双路模式的交错工作方式可以提高ADC的采样速率,实现采样率翻倍。客户在使用交错工作方式时,发现了一些问题。本文将对出现的问题进行解释,并给出解决办法。
文档说明:STM32F334 系列 MCU 中包含了 2 个 DAC 模块,总共 3 路 DAC 输出,且 DAC1-CH2 和DAC2-CH1 的通路上包含了一个 Switch 开关,可以控制 DAC 是否输出到外部管脚。客户在Switch 开关禁能的情况下将原本的输出管脚做 GPIO 使用,发现无法控制其输出电平。
文档说明:本文重点介绍利用含有3个ADC模块的STM32F4、STM32F7等系列,以满足多个ADC模块同时工作的需要
文档说明:本文确认了:STM32F334的PA5和PA6在DAC通道与GPIO断开的情况下是可以当作ADC的管脚的。
文档说明:STM32H7集成了运算放大器(COMP),可与模拟信号进行比较来进行电压检测,内置的COMP节省了MCU外接COMP的硬件成本。本文档将介绍STM32H7的片内COMP的不同工作模式,并提供配置COMP的例程。
文档说明:STM32L4集成了运算放大器(OPAMP),可对模拟信号进行放大处理,可节省MCU外接OPAMP的硬件成本。本文档将介绍STM32L4的片内OPAMP的不同工作模式,并提供配置OPAMP的例程。
文档说明:某客户在调试STM32L053的比较器1时,使用内部1.2V的参考电压,没有问题.但当使用比较器2时,使用同样的设置,却发现比较电压无法调到1.2V,只能设置到0.6V左右,到时是什么问题呢?
文档说明:模拟看门狗特性允许应用程序检测输入电压是否超出用户定义的高低阈值,用户可以预先设定个模拟看门狗的上下限电压值,一旦采集到的电压超出该上下限,将会触发模拟看门狗中断。模拟看门狗一般用于检测单个的常规或注入转换通道,或同时检测所有的常规和注入通道。
文档说明:即使同是STM32L4 系列中的子系列,其配置也可能会有微小的变化,需要注意一下。
文档说明:STM32F30x 系列的12 位SAR ADC 有很多鲜明的特色性能,比如采样率可以达到5 MSPS,可支持差分输入,等等。但是,由于设计的不同,在使用上也有不少不太一样的地方,我们在使用STM32F30x 的ADC 外设的时候,还是要仔细了解一些使用的细节。
文档说明:在各种应用场景中,比如电机,电源,变频器等应用中,ADC的采样点会有很严格的要求,如果采样点选择错误,会给整个控制系统造成严重后果,本文针对STM32Fxxx的PWM波硬件间隔ADC采样实现方式做简要介绍。
文档说明:本篇讨论了一个由ADC 连续模式下采样浮空引脚出现的问题,分析了其原因。
文档说明:基于学习的目的,详细讲解关于Cube库中的DAC的功能。本次介绍DAC。
文档说明:本文目的是演示如何使用STM32F30x 内部的DSP 进行浮点快速傅立叶变换(FFT),为联系实际应用,使用ADC 对波形发生器进行ADC 采样,然后对ADC 采样结果进行FFT, 与Matlab 仿真结果进行比较察看最终结果的准确性。会使用到ARM的DSP 库文件,以及STM32F30x 的浮点运算单元以及DSP 指令等。
文档说明:该问题由某客户提出,发生在 STM32F103VBT6 器件上。据其工程师讲述:在其产品设计中,使用了 STM32 的 ADC 扫描按键。为了能在低功耗模式下通过按键唤醒 STM32,按键信号在送给 ADC 的同时,也送给一路外部中断,如图(一)所示。在待机状态下,有按键被按下时外部中断输入引脚上的电平会向下降跳变,从而唤醒 STM32。之后,STM32 通过 ADC 采样来判断是哪一个按键被按下,如果是电源键,则做开机处理,否则回到待机状态。在实测中,发现这种情况下对按键的误判率很高,造成开 机困难。调
文档说明:该问题由某客户提出,发生在 STM32F103VBT6 器件上。据其工程师讲述:在其产品设计中,使用了 STM32 的 ADC 扫描按键。在软件调试时,发现对于小于 200mV 的输入信号,ADC 转换出的结果匀为 零。
文档说明:该问题由某客户提出,发生在STM32F100R8T6器件上。据其工程师讲述:在使用 STM32F100 的DAC时,不管如何设置输出的值,最低只能输出到63mV,无法输出0V,而63mV 的电压经过他的放大电路,对产品的性能产生较大的影响。故其工程师询问是否有办法可以输出0V?
文档说明:该问题由某客户提出,发生在STM32F103VDT6 器件上。据其工程师讲述:在其产品中,需要使用STM32 的 ADC 对多路模拟信号进行同步采样。在具体的实现上,采用了 ADC 常规通道的扫描模式来完成这一功能。然而,在调试中过程中发现一个奇怪的现象:当将各路模拟信号的电平设置成相同时,ADC 对各路模拟信号的转换结果相同,用 A 来表示。改变其中一路模拟信号的电平,并保持其各路模拟信号的电平不变,则 ADC 对该路信号的转换结果变为 B。然而,此时与其在扫描次序上相邻的下一路模拟信号的转换结果也发生
文档说明:该问题由某客户提出,发生在 STM32L100RBT6 器件上。据其工程师讲述:在使用STM32L100 的DAC1时,为了能够输出满量程,客户工程师将DAC 的Output Buffer 关闭,当DAC 的输出值为0x000 时,可以正常输出0V,但是当DAC 的输出值为0xFFF 时,输出电压却只有0.67V。客户工程师甚是不解。
文档说明:本文简单介绍了电机控制中 M 法和 T 法测速的原理,给出了在 STM32 中如何利用定时器 的编码器接口和多个定时器合作的方式实现两种测速的方案,并对方案进行了模拟测试,给出测 试结果,高速下 M 法的效果更好,在低速情况下 M 法测速偏差大,T 法测速更适合低速测速
文档说明:FPC TCM 控制模式在降低开关损耗,提升系统效率方面优势明显,但是控制方式相对复杂,本文基于 TCM 工作原理,利用 STM32G474 的片上资源设计了一种可用于 TCM 控制的方案,可帮助客户快速实现功能。
文档说明:本文将介绍在 STM32G474 中如何应用高精度定时器实现零和满占空比波形的输出。
文档说明:客户在 STM32U575 的研发过程中发现了一个奇怪的问题,无法通过 LPTIM3 将 MCU 从 STOP2 模式唤醒。
文档说明:本文将介绍如何利用高精度定时器实现 PWM 输出脉宽跟随,一种使用 Push-pull + Balance Idle + AutoEnable 方式,一种是使用 Auto Delay 方式。
文档说明:客户在全桥变换器的应用中需要采用峰值电流控制方式,为了防止磁偏,要求滞后臂的 PWM驱动脉宽严格跟随超前臂的 PWM 驱动脉宽。但在峰值电流控制中,超前臂 PWM 的关断是由峰值电流比较事件决定(即桥臂电流达到给定电流),是不可预知的,所以常规的通过更新比较寄存器修改脉宽的方式无法实现该功能。
文档说明:某客户设计需要启动定时器在3ms后产生中断,其后定时器不再运行,直至下一次软件要求再次启动定时器产生中断,实测代码后发现定时器启动后立即产生了超时中断。
文档说明:STM32 G474 中包含了针对数字电源应用的高精度定时器(HRTIMER)外设,作为 HRTIMER V2 版本,其新增了 Triggered-half 功能,目的就是为了简化采样变频控制方式下两相交错并联工作电源的设计。
文档说明:有客户反馈,使用 STM32F4 的 TIM2 结合 DMA,产生的 PWM 波形不符合预期,但是相同的配置使用在 TIM3 上,得到的 PWM 波形就是符合预期的。其代码和配置都是从 F1 移植过来的,在 F1 上使用 TIM2 是没有问题的,对于 F4 的 TIM2 发生的问题,客户一直没有找到根本原因。
文档说明:客户需要使用 MCU 输出正弦波,但受限于 MCU DAC 数量不足,建议尝试使用 PWM加滤波方式产生正弦波。同时要求正弦波与固定电平交替输出。因此可用一个 TIM 输出PWM,同时用另一个 TIM 来定时切换输出正弦波或固定电平。使用 TIM 输出 PWM 产生正弦波形时,需要结合 GPDMA 来实现。在 STM32U5 系列中,GPDMA 共有 16 个独立通道,其中 12-15 通道还具有 2D addressing/ repeat 功能。因此也可以使用一个 TIM 加 GPDMA 的一个2D 通
文档说明:客户使用 STM32G474 的高精度定时器,基于 CubeMX 进行外设配置与代码生成,将某个子定时器的计数方式设置为 retriggerable single shot 方式,发现该子定时器无 PWM 输出,在调试模式下发现该子定时器的计数器一直为 0,即计数器一直没有启动,但如果将计数方式修改为continuous 模式,其他保持不变,定时器工作正常。
文档说明:STM32G474所含的高精度定时器(HRTIMER)其实包含了多个定时器,多个定时器之间可以单独工作,也可以进行同步,且高精度定时器还能与片上的其他定时器以及其他芯片进行同步,本文将对高精度定时器的同步功能进行介绍。
文档说明:客户需要 MCU 输出一组变频的 PWM 波形来控制外围器件,并且不同频率脉冲的个数也不同。STM32U5 芯片拥有 TIM1/TIM8 高级定时器,还有通用定时器 TIM2/TIM3/TIM4/TIM5 以及 TIM15/TIM16/TIM17。TIM 模块中,可通过修改 ARR 寄存器的值来修改 PWM 的频率。如果使用 TIM1/TIM8 或者 TIM15/TIM16/TIM17,则可以通过修改 RCR 与 CCR 寄存器,来控制脉冲个数及占空比。由于要同时修改多个 TIM 寄存器,需要使用 TIM
文档说明:这个例程是使用 STM32G474 NUCLEO 进行测试的,集合了 DAC, COMP, HRTIM 的功能模块。
文档说明:STM32G474 中包含了针对数字电源应用的高精度定时器(HRTIMER),客户在应用该定时器产生 PWM 时,发现 PWM 的输出出现了“丢波”现象,本文对该问题进行分析并给出解决方案。
文档说明:STM32 L0 系列作为一款低功耗芯片,具有丰富的外设和高温下保持极低功耗的特性,广泛应用于各种节能设备上和消费类电子产品中。
文档说明:本文基于STM32G474 高精度定时器,介绍如何实现逐波限流保护以及保护次数计数。
文档说明:高精度定时器与高级控制定时器PWM 封波后再恢复的区别。
文档说明:本文将针对break 功能做细致说明,方便PWM 驱动使用者更好去应用break 功能。
文档说明:STM32G474中高精度定时器的PWM输出支持Push-Pull模式,该模式可以用于Push-Pull拓扑或是LLC拓扑的驱动,在使用该模式时需要遵循RM手册中给出的准则,否则输出的波形将会出现异常。
文档说明:PCROP 全称为Proprietary code read out protection(专用代码保护),它提供了一种新的代码保护机制,在PCROP 区域的内容只能为可执行,不能读取或写入。这种机制可以为OEM 厂商提供保护,方便保护自己IP 的代码。本文主要记录在使用PCROP 上遇Hardfault 问题。
文档说明:在电源变换器的控制方式中,BCM 模式即临界传导模式(Boundary Conduction Mode),或者叫CRM(Critical Conduction Mode),由于其容易实现软开关,开关损耗低,EMI 小等优点在AC/DC 变换器中被越来越多的使用。本文在简单介绍BCM 控制模式的基本原理的基础上,以STM32G071 为例,给出如何使用STM32 系列MCU 中的高级控制定时器来实现BCM 控制PWM的发波方案。
文档说明:客户反馈在使用STM32F446 的产品做上电、掉电测试时,RTC 会意外恢复到配置的初始值。
文档说明:本文基于 STM32 中高级控制定时器设计了一种全桥移相控制 PWM 发波方案。
文档说明:以STM32F334 的HRTIM 为例,简单介绍下利用它实现PWM 输出的实现原理。
文档说明:在MC SDK 5.x 中有两个环路控制,分别是电流环和速度环,有些应用需要使用到位置环,比如无人机的云台电机控制,地铁闸机等等应用,本文将阐述如何在现有ST 电机库基础上增加简易的位置环。
文档说明:我们在做SPI应用时,有时希望通过定时器来定时地触发SPI的收发,并利用DMA完成数据的传输。这里,我基于STM32L476芯片来做个演示,以供参考
文档说明:本文介绍如何用STM32定时器实现PWM输出波形等定制波形,以STM32F334 Nucleo开发板验证,说明利用定时器的比较输出切换模式,结合DMA外设,可以灵活地输出各种自定义波形。
文档说明:本文利用STM32CubeMX,介绍如何利用STM32 的高级定时器实现固定个数PWM 脉冲的输出
文档说明:本文重点介绍利用STM32CubeMx初始化配置工具和STM32Cube库如何通过TIMER的捕获功能完成对频率、占空比的测试,同时我们对如何解决实验过程中遇到的一些问题,做了特别提示。
文档说明:客户反馈在批量生产阶段,发现部分产品的MCU的RTC在低温(0℃)下工作不正常,但是在常温下又是正常的,且其他正常的MCU的RTC在常温与低温下都是正常的。
文档说明:在各种应用场景中,比如电机,电源,变频器等应用中,ADC的采样点会有很严格的要求,如果采样点选择错误,会给整个控制系统造成严重后果,本文针对STM32Fxxx的PWM波硬件间隔ADC采样实现方式做简要介绍。
文档说明:窗口看门狗(Window watchdog, WWDG),提供了一种在指定时间窗内刷新看门狗的功能。同时WWDG提供了一个提前唤醒中断,能够在WWDG计数器值降到触发复位的上一个值时触发。实际应用中,可以在此中断被触发时,刷新WWDG,并记录当前运行信息,以满足运行错误信息记录等功能需求。
文档说明:STM32F334内部集成了高精度Timer,最高主频4.6GHz,灵活的控制用于产生数字电源等产品的PWM控制信号,内部丰富的联动机制可以产生各种实际需求波形,本文针对多相相移信号的产生给开发者一定启示,抛砖引玉,开发者可以根据不同需求产生应用所需的波形。
文档说明:客户在基于cortex-m3 的平台上使用FreeRTOS 系统提供的定时器功能时,意外发现定时器的精确度不够高。譬如,设置1 秒钟的定时器,理论上1 秒超时,并且执行相应的回调函数。但是调试却发现,有时回调函数是在1.4 秒后被执行!这对于精度要求较高的实时系统,是不能接受的!
文档说明:某客户在其产品的设计中,使用了STM32F429IIT6。客户在使用过程发现一个问题,虽然已经有使用电池对VBAT 进行供电,但是在经常频繁的VDD 上下电之后,发现时钟会比准确的时间慢几秒钟。
文档说明:此问题由客户提出,客户在使用STM32F411 开发产品的时候,采用的是HIS 作为主时钟,同时使用了UART 与其他MCU 进行异步通信.客户发现部分产品UART 不能正常通信.
文档说明:基于学习的目的,详细讲解关于标准外设库中的定时器的17个示例项目函数文件。本次介绍OnePulse。
文档说明:此问题由客户提出,客户在使用STM32F411 MCU 的后期软件联合调试时候,需要知道HSI 的误差值, 一般的方法是将HIS 从MCO1 的引脚上输出.
文档说明:LLC 谐振变换器优于常规串联谐振变换器和并联谐振变换器:在负载和输入变化较大时,频率变化仍很小,且全负载范围内切换可实现零电压开关(ZVS),越来越多的被使用,同时使用二次同步整流(SR)可以实现零电流开关(ZCS)。微控制器的使用带来体积更小,控制更灵活的产品, STM32F334 内部集成高精度Timer 高精度,高灵活性的PWM 波形产生不仅使控制变简单,同时对产品效率提升带来好处。
文档说明:STM32F334 内部集成了高精度Timer,最高主频4.6GHz,灵活的控制用于产生数字电源等产品的PWM 控制信号,与此同时对于产品安全部分也就有更高要求,而STM32F334 内部的Fault 联动机制可以保证这样的控制要求,比如过流保护,过压保护任意一项都可以产生Fault 事件,关闭PWM 输出,与此同时可以区别对待Fault 事件,可以一直关闭PWM 输出,也可以关闭再打开的操作等。
文档说明:该问题由某客户提出,发生在 STM32F103RBT6 器件上。据其工程师讲述:其产品为车载 GPS 导航监 控设备,其中使用了 STM32 作为主控器件,负责管理整个设备。在该产品的设计中,使用了 STM32 的 RTC,并将其计时显示在产品的屏幕上。计时显示的更新是由 RTC 的秒中断来完成的,即由 RTC 的秒中断服务程序从 RTC 中读出新的时间并更新到相关的变量中,再触发屏幕刷新程序更新屏幕上的显示。在测试时发现屏幕上显示时间的秒部分走时不均匀,时快时慢,甚至会丢掉某个中间值而发生跳变。
文档说明:某客户工程师在某型号新产品的设计中,使用STM32F030R8的TIM15的CH1和CH2来产生需要的波形(2路PWM信号)。据其工程师讲述:在以前的产品上,是使用STM32F101的TIM3/4产生同样的波形。现在,将原代码移植到STM32F030的TIM15上,发现仅有一路输出(CH2),另一路(CH1)没有输出。
文档说明:目标要求:系统时钟8Mhz,6个PWM脉冲。实现上述目标的方法有很多种,比如两个定时器级连,定时器定时中断翻转IO口,等等,这里使用DMA的方式去实现。
文档说明:该问题由某客户提出,发生在 STM32F103VDT6 器件上。据其工程师讲述:在其产品设计中,使用了 STM32 的片上看门狗 IWDG 进行系统监控。在实测中发现,在软件中去掉喂狗代码之后,IWDG 并没有 复位系统。
文档说明:该问题由某客户提出,发生在 STM32F072 器件上。据其软件工程师讲述:使用 STM32F0 系列的标准外设库中RTC_Tamper 的例程来进行修改,例程中配置的是当在RTC_TAMP1引脚检测到上升沿的时候,复位备份寄存器并产生中断;客户根据其实际应用将配置中的上升沿改成下降沿,以期待在检测到下降沿的时候,复位备份寄存器并产生中断。结果,客户发现经常是只要一开始跑程序,会产生中断,复位备份寄存器。使用示波器观察RTC_TAMP1 引脚,并没有发现下降沿波形。客户百思不得其解。
文档说明:基于学习的目的,详细讲解关于标准外设库中的定时器的17个示例项目函数文件。本次介绍TIM15_ComplementarySignals的示例。
文档说明:基于学习的目的,详细讲解关于标准外设库中的定时器的 17 个示例项目函数文件。本次介绍 TimeBase 的示例。
文档说明:研究下 CounterMode,OC Mode 与 OCPolarity 的排列组合的关系。
文档说明:本文将主要探讨 v8-M 架构下 MPU 的使用技巧。
文档说明:客户在使用 STM32G474 时,希望使用 FPU 进行浮点运算,并优化其性能。本文 从 STM32G474 系统的角度、ARM DSP Lib、编译选项的影响等几个方面探讨如何提升整体性能,并介绍如何使用 KEIL 工具进行测量。
文档说明:在一些支持双 bank 的 MCU 中,通常都会有一个控制 bank 切换的寄存器位,例如STM32F4 和 STM32L4 是 FB_MODE 寄存器位,STM32L0 是 UFB 寄存器位。我们可以通过配置这个位来进行快速 bank 切换,这个功能实际上是通过对 bank 进行重映射和设置别名来实现的。以大小为 2MB flash 的 STM32F4 为例,使用 SYSCFG_MEMRMP 寄存器的 FB_MODE 进行切换。
文档说明:在使用基于 ARM CORTEX-M3、M4 或 M7 系列的 STM32 芯片做产品开发时,可能有人遇到过单次事件会触发两次中断的情形。或许对异常现象的表述不尽相同,比方有的人会说怎么中断请求标志要清 2 次才行;由于中断里有些执行操作,有人会说代码里明明只执行一次,可实际运行时却是两次;有的人会说,有些执行动作放在中断外执行正常,放到中断服务程序里又异常了等等。记得有一次,有个 STM32 用户反映,他的 SPI 实际发送效果跟程序代码里设计的完全不一样,明明是 8 位发送,硬生生变成了 16 位发送
文档说明:用户使用的 MCU 型号是 STM32H750VB。 在客户的代码中有多个条件语句,在条件里面的变量数值没有变化的情况下执行了条件里面的逻辑。即变量 A 在明明没有变化且条件不满足的情况下, 程序运行时偏偏执行了条件内部的代码. 很奇怪的现象。一时很难判断是编译器的问题还是芯片问题。
文档说明:关于 DWT(Data watchpoint and trace unit),相信有很多工程师都知道,其可用于 us级别的延时。今天想和大家分享的是,通过 DWT 检测特定内存变量或函数,当其被修改或被调用时,可以触发中断,通过这样的方式,实现一些特殊的调试手段。