[信息] STM32内核实战经验合集-2

[复制链接]
2081|0
 楼主| STM新闻官 发表于 2024-12-5 13:23 | 显示全部楼层 |阅读模式
本帖最后由 STM新闻官 于 2024-12-5 14:08 编辑

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

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

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

本文将一步步来介绍如何将下载的CoreMark测试代码移植到STM32MCU上进行测试。
如何将coremark程序移植到STM32上.pdf (1.12 MB, 下载次数: 1)

某客户在其产品的设计中,使用了STM32F302CCT6。客户在开发过程中,其所配置的EXTI 外部中断,在外部没有中断信号的情况下,上电后运行程序,总是会进入EXTI 中断程序一次。
EXTI重复配置两次导致误触发中断的问题.pdf (108.72 KB, 下载次数: 1)

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

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

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

某客户工程师在某型号新产品的设计中,使用了 STM32F103XXT6。据其工程师讲述:他们在设计中,使用了一个外部中断,用来检测某事件的发生,从而唤醒低功耗模式下的 STM32。对应于该中断输入,有一中断服务程序,内容如表(一)所示。在实测中发现偶尔会发生在有该外部中断输入时 STM32 并未回到正常的运行状态的情况。
进入了已屏蔽的中断.pdf (295.91 KB, 下载次数: 1)

该问题由某客户提出,发生在 STM32F103VDT6 器件上。据其工程师讲述:在其产品的设计中,STM32 的 HSE 外接 8MHz 的晶体产生振荡,然后通过 STM32 内部的PLL 倍频到 72MHz,作为 STM32 的系统时钟,驱动芯片工作。在 STM32 片外有专用的看门狗芯片,监控 STM32 的运行。STM32 内部的软件会在 STM32 的某个管脚上产生脉冲来复位看门狗。一旦 STM32 没有及时的产生脉冲来复位门狗,则看门狗会认为 STM32 运行不正常,从而复位 STM32。在对该产品做可靠性测试时,进行了对看门狗监控时钟失效能力的测试。测试的方法是:将 HSE 外接的晶体的两个端子接地,使其停止振荡,从而验证看门狗能否做出对 STM32 的做出复位动作。试验结果表明,看门狗没有产生复位动作。进一步测试发现,STM32 在失效情况下仍在向看门狗发送复位脉冲。
时钟失效后 CPU 还会运行.pdf (311.99 KB, 下载次数: 1)

初次接触到STM32F7,总会有个疑惑,为什么0地址变成了ITCM RAM的起始地址。系统复位还是从地址0处开始执行吗?如果是,那这似乎看起来是冲突的。实际上,STM32F7基于Cortex-M7内核,Cortex-M7和Cortex-M3/M4的复位序列有了一些不一样。在本文中,将针对这个问题做详细讲解。
STM32F7与STM32F4的复位序列比较 (1).pdf (258.38 KB, 下载次数: 1)

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

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

STM32内核实战经验合集-1
您需要登录后才可以回帖 登录 | 注册

本版积分规则

认证:意法半导体(中国)投资有限公司
简介:您的嵌入式应用将得益于意法半导体领先的产品架构、技术、多源产地和全方位支持。意法半导体微控制器和微处理器拥有广泛的产品线,包含低成本的8位单片机和基于ARM® Cortex®-M0、M0+、M3、M4、M33、M7及A7内核并具备丰富外设选择的32位微控制器及微处理器。

1385

主题

1669

帖子

24

粉丝
快速回复 在线客服 返回列表 返回顶部