STM32F4

STM32F4 HAL库串口同时收发代码卡死问题

cathy的头像

在使用串口USART1接收数据转手用USART2发送,在发送的同时再将USART2接收的数据使用USART1进行发送,两个串口都为同时进行,在两个串口每个500ms传输一次时,可以正常传输一段时间之后卡死,但间隔20ms甚至更小时,直接卡死,使用标准库就不会出现这样的情况。

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

STM32F4的复位序列

STM32F4基于Cortex-M4。对于基于Cortex-M3/M4的芯片,复位后总是从0x00000000地址处,取主堆栈指针(MSP)的值,从0x00000004处,取出PC的初始值(这个值是复位向量),然后从这个值对应的地址处取指。


这两个值,就是中断向量表里的第一个和第二个表项的值。


在Cortex-M3/M4里,复位后默认中断向量表在0地址开始的位置。之后,可以通过修改VTOR寄存器的值,重定位中断向量表。在IAP的应用中,我们会遇到这种情况,如下图:


上电复位,先执行IAP程序。此时用到的是位于0地址处的IAP程序的向量表(虽然图中说此时VTOR的值等于0x08000000,实际上,因为ST提供了存储器地址重映射的功能,通过boot引脚的配置,已经将0x08000000处的存储空间重映射到了地址0处,所以0x08000000和地址0x00000000处开始的存储空间是同一块物理空间,其内容当然也是一样的。所以不用修改VTOR的值,VTOR=0也是一样的)。言归正传,上电后,先从IAP复位中断程序开始执行IAP程序,执行完IAP程序后,需要跳转到用户程序,这时就需要将向量表重定位到用户程序的向量表位置(修改VTOR寄存器的值到用户向量表的起始地址)。

这是M3/M4的情况,STM32F7之前的所有芯片都是一样的。

STM32F7的复位序列

前面讲的那些情况,在STM32F7中就有些不一样了。在ARM Cortex-M7的Generic User Guide中,有一段如下描述:“On system reset, thevector table is at the address configured at implementation, typically0x00000000. ”从这段话,我们可以看出,在M7中,复位后向量表的位置不是固定在0地址处,而是可以由各个芯片厂商自己定义。

对于STM32F7来说,它是由BOOT_ADD0[15:0]和BOOT_ADD1[15:0]这两个optionbytes决定的。


Boot 脚= 0时,由BOOT_ADD0 [15:0] 的值决定,ST默认值为0x0020 0000。这是ITCM-FLASH的起始地址(通过ART加速器,访问FLASH);

Boot 脚= 1时,由BOOT_ADD1 [15:0] 的值决定,ST默认值为0x0010 0000。这是system Bootloader的起始地址。

* 如果对BOOT_ADDx写入的地址值超出了存储器映射的范围或者到了保留地址空间,系统将自动转为下面的值:

BOOT_ADD0 = 0x0020 0000;

BOOT_ADD1 = 0x0000 0000(和出厂时ST默认的值0x0010 0000不一样)

也就是说,只要你配置好了boot address, stm32F7芯片的硬件会自动修改向量表的偏移地址寄存器VTOR,使之与boot address相匹配。不需要再通过软件修改VTOR寄存器。

回到本文开始的那个问题。对于STM32F7来说,默认状态下,复位后它并不是从0地址开始执行,而是从0x0020 0000 或者0x0010 0000开始执行,所以与ITCM-RAM从0地址处开始并不冲突。如果你非要将向量表放在0地址开始的位置(修改VTOR寄存器),也不是不可以。只是这是,如果你还要在ITCM-RAM里面跑别的程序的话,就要注意向量表不要与其他程序的地址重叠了。

来源: STM32单片机

围观 178

STM32F4系列芯片无法正常工作的现象及原因分析集锦

demi的头像

最近一年多开始使用STM32F4系列芯片,在使用开发板、评估板的时候一切正常,但当自己做板子的时候事故频发,最典型的就是无法启动、无法刷机,现将遇到的几个无法启动的原因分析如下:

一. 前言

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

二.问题产生原因

1. ------对于Keil MDK Version 5 版本, 编译器已经完全支持STM32F4xx 的FPU(浮点运算单元),可以直接使用芯片内部的浮点运算单元。

2. ------对于Keil MDK Version 4 版本, 高版本v4,比如当前keil 官网可下载的v4.74.0.0 版本也已经支持
FPU,可以直接使用芯片内部浮点运算。但如果使用低版本v4,如v4.23.0.0 版本, 则需要对软件进行相应设置。

三. 如何解决问题

1. 查看手头Keil 版本是否支持FPU,最简单办法是进入Keil 调试界面直接查看0xE000ED88 地址单元数据,如果为0x00F00000, 则说明已经支持FPU,如下图所示:

关于在ARM MDK 中使用STM32F4xx 硬件浮点单元的话题

2. 如果0xE000ED88地址数据为0x00000000,则需要做如下操作:

a. 在system_stm32f4xx.c文件中的systeminit()函数里面添加如下代码:

/* FPU settings------------------------------------------------------------*/
#if (__FPU_PRESENT == 1) &&(__FPU_USED == 1)
SCB->CPACR |= ((3UL << 10*2)|(3UL<< 11*2)); /* set CP10 and CP11 Full Access */
#endif

b. 在工程选项(Project->Optionsfor target "XXXX")中的C/C++选项卡的Define 中加入如下的语句,见下图所示:
__FPU_PRESENT=1,__FPU_USED =1。

关于在ARM MDK 中使用STM32F4xx 硬件浮点单元的话题

c. 这样编译时就加入了启动FPU 的代码,CPU 也就能正确高效的使用FPU 进行简单的加减乘除了。

3. 进一步说明使用芯片复杂数学运算使用

对于复杂运算,比如三角函数,开方等运算,需要如下设置:

a. 包含arm_math.h头文件。
b. 在工程选项的C/C++选项卡的define 中继续加入语句ARM_MATH_CM4。
c. 在工程选项的C/C++选项卡的define 中继续加入语句__CC_ARM。

以使用sin,cos 运算举例,需要调用arm_sin_f32()以及arm_cos_f32(),这两个函数定义在
arm_sin_f32.c 和arm_cos_f32.c中,需要在工程中加入这两个c 文件。

* 在 ST 库文件包中的文件目录如下:
\stm32f4_dsp_stdperiph_lib\STM32F4xx_DSP_StdPeriph_Lib_V1.1.0\Libraries\CMSIS\DSP_Lib\Sou
rce\FastMathFunctions

* 在keil 安装目录下的文件目录如下:
\Keil\ARM\CMSIS\DSP_Lib\Source\FastMathFunctions
当用到更多数学运算, 如开根号,三角运算,求绝对值等等,客户也可以直接在工程中加入ARM 中的数学运算库arm_cortexM4lf_math.lib,而不需要一个个文件的添加,

* 在 ST 库文件包中的目录如下:
\STM32F4xx_DSP_StdPeriph_Lib_V1.6.0\STM32F4xx_DSP_StdPeriph_Lib_V1.6.0\Libraries\CMSIS\Lib\ARM

* 在keil 安装目录下的文件目录如下:
\Keil\ARM\CMSIS\Lib\ARM

关于在ARM MDK 中使用STM32F4xx 硬件浮点单元的话题

四. 结语

从测试效果看当使用了硬件浮点运算单元,数学计算变得简单高效,可以留给系统更多时间处理其他控制程序,有效提升系统效率,节省时间。

来源: STM32单片机

围观 523

浮点运算一直是定点CPU的难题,比如一个简单的1.1+1.1,定点CPU必须要按照IEEE-754标准的算法来完成运算,对于8位单片机来说已经完全是噩梦,对32为单片机来说也不会有多大改善。虽然将浮点数进行Q化处理能充分发挥32位单片机的运算性能,但是精度受到限制而不会太高。对于有FPU(浮点运算单元)的单片机或者CPU来说,浮点加法只是几条指令的事情。

现在又FPU或者硬件浮点运算能力的主要有高端DSP(比如TI F28335/C6000/DM6XX/OMAP等),通用CPU(X87数学协处理器)和高级的ARM+DSP处理器等。

STM32-F4属于Cortex-M4F构架,这和M0、M3的最大不同就是多了一个F-float,即支持浮点指令集,因此在处理数学运算时能比M0/M3高出数十倍甚至上百倍的性能,但是要充分发挥FPU的数学性能,还需要一些小小的设置:

1.编译控制选项:虽然STM32F4XX固件库的例程之system_stm32f4XXX.c文件中添加了对应的代码,但给用户评估使用的STM32F4-Discovery例程中却没有,因此MDK4.23编写浮点运算程序时,虽然编译器正确产生了V指令来进行浮点运算,但是因为system_stm32f4XXX.c文件没有启用FPU,因此CPU执行时只认为是遇到非法指令而跳转到HardFault_Handler()中断中原地踏步。因此要保证这个错误不发生,必须要在system_init()函数里面添加如下代码:

/* FPU settings ------------------------------------------------------------*/
#if (__FPU_PRESENT == 1) && (__FPU_USED == 1)
SCB->CPACR |= ((3UL << 10*2)|(3UL << 11*2)); /* set CP10 and CP11 Full Access */
#endif

因为这个选项是有条件编译控制的,因此需要在工程选项(Project->Options for target "XXXX")中的C/C++选项卡的Define中加入如下的语句:__FPU_PRESENT=1,__FPU_USED =1。这样编译时就加入了启动FPU的代码,CPU也就能正确高效的使用FPU进行简单的加减乘除了。

但这还远远不够。对于复杂运算,比如三角函数,开方等运算,如果编程时还是使用math.h头文件,那是没法提升效率的:因为math.h头文件是针对所有ARM处理器的,其运算函数都是基于定点CPU和标准算法(IEEE-754),并没有预见使用FPU的情况,需要很多指令和复杂的过程才能完成运算,也就增加了运算时间。因此要充分发挥M4F的浮点功能,就需要使用固件库自带的arm_math.h,这个文件根据编译控制项(__FPU_USED == 1)来决定是使用那一种函数方法:如果没有使用FPU,那就调用keil的标准math.h头文件中定义的函数;如果使用了FPU,那就是用固件库自带的优化函数来解决问题。

在arm_math的开头部分是有这些编译控制信息:

#ifndef _ARM_MATH_H
#define _ARM_MATH_H

#define __CMSIS_GENERIC /* disable NVIC and Systick functions */

#if defined (ARM_MATH_CM4)
#include "core_cm4.h"
#elif defined (ARM_MATH_CM3)
#include "core_cm3.h"
#elif defined (ARM_MATH_CM0)
#include "core_cm0.h"
#else
#include "ARMCM4.h"
#warning "Define either ARM_MATH_CM4 OR ARM_MATH_CM3...By Default building on ARM_MATH_CM4....."
#endif

#undef __CMSIS_GENERIC /* enable NVIC and Systick functions */
#include "string.h"
#include "math.h"

就是说如果不使用CMSIS的,就会调用keil自带的标准库函数。否则就用CMSIS的定义。这里因为是用的STM32F4,所以应该要ARM_MATH_CM4控制,即加入core_cm4.h,否则就用使用ARMCM4.h——但在编译时keil会提示找不到这文件。因此需要在工程选项之C/C++选项卡的define中继续加入语句ARM_MATH_CM4。

加入上述编译控制项之后,高级数学函数的使用基本没问题了,比如正余弦三角函数的计算。但需要注意,如果你直接使用sin()、cos()、sqrt()这样的函数,那结果还算调用keil的math.h,你可以在debug时看对应的代码,其汇编指令为BL.W __hardfp_xxx。因此这时要完成三角函数的计算就要使用arm_sin_f32()或者arm_cos_f32(),用法不变,这两个函数的原型分别在arm_sin_f32.c和arm_cos_f32.c中。通过对256点三角函数表的查询和插值算法得到任意角度的精确函数值,这就比“原装”的sin()、cos()快多了。

当然有些例外的是开发函数sqrt(),在arm_math.h中是这么定义的:

static __INLINE arm_status arm_sqrt_f32(float32_t in, float32_t *pOut)
{
if(in > 0)
{
// #if __FPU_USED
#if (__FPU_USED == 1) && defined ( __CC_ARM )
*pOut = __sqrtf(in);
#else
*pOut = sqrtf(in);
#endif
return (ARM_MATH_SUCCESS);
}
else
{
*pOut = 0.0f;
return (ARM_MATH_ARGUMENT_ERROR);
}
}

即开方用的函数是arm_sqrt_f32(),其中首先判断被开发的书是否大于0,只有大于0的才能进行运算,否则输出结果为0并返回“错误”标志。如果大于0,并且实用了FPU和__CC_ARM控制项,那调用__sqrtf()来完成编译,否则调用sqrtf()——这个sqrtf()是能在keil的math.h中找到的,即调用子函数来完成运算,而__sqrtf()呢?新出现的,相信大家都能猜到是什么玩意儿:对,就是VSQRT指令!因此要把这点性能也要发挥出来,就需要工程选项之C/C++选项卡的define中继续加入语句__CC_ARM才行。大家可以比较一下是否加入__CC_ARM编译后会汇编代码的差别巨大差别。

当然,对于arm_sqrt_f32()函数还是有些麻烦,如果你确认被开方的书是大于等于0的,那就直接使用__sqrtf()函数完成运算,即一条简单的VSQRT指令。

STM32F4固件库还提供了其他很有用的数学函数,都位于DSP_Lib文件夹,请大家慢慢探索,Discovery!

转自:http://blog.renren.com/blog/256814551/844695191

围观 1024

前言

在 STM32 开发中,库函数开发相比寄存器方式具有开发周期短、代码可读性好、便于移植等优点,而使用 Keil 环境的第一步就是新建工程。本文以 STM32F401CE 芯片为例,介绍使用标准库函数新建工程的步骤。

材料准备

• STM32F4xx 固件库:STM32F4xx_DSP_StdPeriph_Lib_V1.4.0.rar
• Keil-MDK
• 一点耐心

新建库函数工程注意事项

不同芯片在新建工程时的配置略有区别,主要体现在以下几点:

  1. 工程目标 Device 选择的芯片型号不同。

  2. 添加的启动文件不同。要根据芯片型号在 arm 目录下选择相应的 .s 文件。

  3. C/C++ 选项卡的芯片型号宏定义不同。具体有哪些选择可在 stm32f4xx.h 头文件中的条件编译指令中找到。不确定选哪个的话可以根据芯片主频从 system_stm32f4xx.c 文件的 PLL 分频参数反推宏定义(要求对时钟树比较熟)。

  4. 工程所包含的外设库函数不同。MDK 会在编译时根据芯片型号宏定义进行寄存器映射,所以要对芯片所没有的外设库文件要排除编译(如文中的 fmc 和 fsmc),否则会报标识符未定义错误。

补充:如何确定芯片有无某个外设?

芯片数据手册中描述了芯片的所有资源,当想要了解具体某一型号芯片的外设时,应该查阅数据手册而不是参考手册(参考手册针对的是整个系列芯片的通用说明)。

Cortex-M4 新建库函数工程步骤

一、新建工程文件夹

  1. 新建一个文件夹 template 用于存放工程模板。

  2. 在 template 文件夹内分别新建 Doc(存放文档)、User(存放用户文件)两个文件夹。

  3. 在 User 文件夹中新建 inc 和 src 两个文件夹分别存放用户头文件和源文件。

二、复制库函数文件

1. 复制 Libraries 文件夹

打开固件库目录 STM32F4xx_DSP_StdPeriph_Lib_V1.4.0, 复制 Libraries 文件夹到工程文件夹template 中。

2. 裁剪 Libraries 文件夹

由于固件库的 Libraries 文件夹是对整个 Cortex-M4 系列通用的,包含了一些项目所用不到的文件,为了节约空间,可以把用不到的多余文件删除。

  • 删除 template\Libraries\CMSIS 目录下除 Device 和 Include 外的所有文件夹。

  • 删除 template\Libraries\CMSIS\Device\ST\STM32F4xx\Source\Templates 目录下除 arm 文件夹和 system_stm32f4xx.c 外的所有文件夹。

  • 删除 template\Libraries\CMSIS\Device\ST\STM32F4xx\Source\Templates\arm 目录下除startup_stm32f401xx.s 外的其余启动文件。

  • 固件库里类似 Release_Notes.html 的说明文件也可以删了。

3. 添加文件到 User 文件夹

往 template\User 目录中添加以下三个库文件,并新建 main.c 文件。

  • 打开 STM32F4xx_DSP_StdPeriph_Lib_V1.4.0\Project\STM32F4xx_StdPeriph_Templates 目录,找到 stm32f4xx_conf.hstm32f4xx_it.hstm32f4xx_it.c 三个文件。

  • 复制 stm32f4xx_conf.h 文件到 template\User\inc 目录。

  • 复制 stm32f4xx_it.h 文件到 template\User\inc 目录。

  • 复制 stm32f4xx_it.c 文件到 template\User\src 目录。

  • 在 template\User\src 目录中新建 main.c 文件,并编写以下主函数代码保存。

#include "stm32f4xx.h"

int main(void)
{
    while (1);
}

其中 stm32f4xx_conf.h 文件包含了所有库函数头文件,stm32f4xx_it.c 文件用于编写中断服务函数,便于统一管理,使工程结构更加规范。

完成以上工作后整个工程目录结构如下图:

STM32F4 新建标准库函数工程

三、Keil 新建工程

把工程文件夹建好并复制相关库文件后,就可以打开 Keil 软件新建工程了。

1. 新建工程

打开 Keil 软件,点击 Project 菜单下的 New uVision Project 选项新建工程,并保存到新建的工程文件夹 template 中。

STM32F4 新建标准库函数工程

STM32F4 新建标准库函数工程

2. 选择芯片型号

在弹出的芯片选型窗口中选择目标板的芯片型号,这里选 STMicroelectronics(ST公司)下的 STM32F401CE(根据具体硬件选择)。

STM32F4 新建标准库函数工程

关掉弹出的组件添加窗口,因为我们采用的是手动添加库文件的方式。

STM32F4 新建标准库函数工程

3. 新建工程分组

点击「品字形」按钮打开工程管理界面,最左侧是工程名称,可以给工程改个名,然后在中间组管理中点虚框图标新建 CMSIS、STM32F4xx_StdPeriph_Driver、USER、DOC 四个分组,对应工程文件夹中的分类。

STM32F4 新建标准库函数工程

4. 添加文件到分组

依然是在工程管理界面下,这一步要做的事情是把准备好的库文件添加到 Keil 工程中,具体操作如下:

  • 往分组 CMSIS 中添加 system_stm32f4xx.c 系统配置文件和 startup_stm32f401xx.s 启动文件。

  • STM32F4 新建标准库函数工程
  • 往分组 STM32F4xx_StdPeriph_Driver 中添加 Libraries\STM32F4xx_StdPeriph_Driver\src目录下的所有 .c 文件。

  • STM32F4 新建标准库函数工程
  • 往分组 USER 中添加文件 main.c 和 stm32f4xx_it.c

STM32F4 新建标准库函数工程

四、工程配置

点击「魔术棒」按钮打开工程选项界面,进行必要的工程配置。

1. Target 选项卡配置

勾选 Use Micro LIB 选项,为了在工程中使用 printf() 函数。

STM32F4 新建标准库函数工程

2. Output 选项卡配置

如需生成 .hex 文件,则需勾选 Create HEX File 选项。

STM32F4 新建标准库函数工程

3. C/C++ 选项卡配置

  • 在「预处理符号」Preprocessor Symbols 下的 Define 一栏中添加 STM32F401xx 和USE_STDPERIPH_DRIVER 两个宏定义(用逗号分隔)。

  • 在 Include Paths 中添加以下头文件路径,注意要具体到头文件上一层目录。

    1. .\Libraries\CMSIS\Device\ST\STM32F4xx\Include

    2. .\Libraries\CMSIS\Include

    3. .\Libraries\STM32F4xx_StdPeriph_Driver\inc

    4. .\User\inc

STM32F4 新建标准库函数工程

五、下载器配置

依然是在工程选项界面下,进行下载器配置

Debug 选项卡配置

在右上角选择所使用的调试器,根据实际情况选择。这里我用的是 ST-Link,选 ST-Link Debugger。

STM32F4 新建标准库函数工程

点击 setting 按钮,在 Falsh Download 选项卡中勾选 Reset and Run 选项,确保程序下载后能自动复位运行,最后点击确定按钮保存所有的工程配置。

STM32F4 新建标准库函数工程

六、最后小整改

此时编译整个工程依然会有大量错误,为了能使工程顺利编译最后还要稍作修改,具体如下:

取消编译 fmc 和 fsmc 库文件

查阅数据手册得知 STM32F401 系列芯片没有 fmc 和 fsmc 外设,所以去掉 fmc 和 fsmc 部分的库文件。

在工程文件视图下展开 STM32F4xx_StdPeriph_Driver 分组,选中 stm32f4xx_fmc.c 文件,右键调出 Options for File stm32f4xx_fmc.c 窗口,取消勾选 Include in Target Build 选项,排除stm32f4xx_fmc.c 文件参与编译。stm32f4xx_fsmc.c 用文件同样方式处理(或者直接从工程中移除这两个文件)。

STM32F4 新建标准库函数工程

修改 stm32f4xx_it.c 文件

  1. 删除 stm32f4xx_it.c 文件 32 行的代码 #include “main.h”(因为没有写这个文件)。

  2. 删除 stm32f4xx_it.c 文件 144 行的代码 TimingDelay_Decrement();(滴答定时器延时相关,暂时用不到)。

七、编译工程、下载验证

最后点击编译按钮,如果工程配置正确就会看到令人愉悦的 0 Error(s), 0 Warning(s) ,通过下载器连接板子和电脑,烧写程序检验成果,见证令人激动的时刻吧!

转自: 开源嵌入式

围观 895

意法半导体两个新的微控制器产品线提高STM32F4基本型产品线高端产品的能效、功能集成度和设计灵活性,满足高性能嵌入式设计的技术需求。这些STM32最新微控制器的工作温度高达125°C ,主打始终运行的传感器和通用工业设备,为STM32F1应用提供一个稳健可靠且高成本效益的系统升级方案 。

STM32F413和加密功能增强版STM32F423集成最高1.5MB的闪存和320KB的SRAM,这两款产品在STM32F4基本型产品线中配置最为突出,其丰富的音频功能包括串行音频接口(SAI),增强型语音采集接口集成多通道数字 Sigma-Delta调制滤波器(DFSDM),可实现低功耗声音定位和波束成形。新产品还集成丰富的外设接口,包括两个12位数模转换器(DAC)、多达10个UART接口和3个CAN 2.0B Active接口。加密增强版STM32F423还增加一个硬件随机数生成器(TRNG)和AES-256算法硬件加速器。

作为STM32F4基本型产品线的高端产品,新微控制器首次引入100MHz双模四线SPI外部存储器串行接口和连接外部SRAM、PSRAM或NOR闪存的16位灵活存储控制器(FMC),以及最高16位QVGA或8位WQVGA液晶显示器接口和USB OTG接口。其中USB OTG内置链路电路管理(LPM)和双电压轨,节省外部电平转换器件。

此外,两个产品线都新增RAM访存机制,通过指令数据总线(I/D)和系统总线(SBUS)连接RAM1(256KB)和RAM2(64KB)两个独立内存,从而将资源冲突风险降至最低。新增DMA数据批处理模式(BAM+)利用RAM1和RAM2两个独立内存区处理指令和数据,处理效率极高,特别适合于传感控制器相关应用。

高处理性能兼备同级领先的能效,STM32微控制器整合100MHz 125DMIPS/339 EEMBC® CoreMark® ARM® Cortex®-M4处理器内核与意法半导体的Dynamic Efficiency节能技术,工作电流大幅降低,只有 112µA/MHz。Dynamic Efficiency节能技术包括ST ART Accelerator™ 自适应实时(ART)加速器和1.7V最低电源电压,ART可实现闪存代码执行无等待状态,而最低电源电压可让始终连接的设备最大限度延长电池续航时间。

NUCLEO-F413ZH开发板用户可立即开始项目研发。这款STM32 Nucleo-144开发板配备ST-LINK/V2-1调试器/编程器、软件库和例程,可直接使用ARM mbed™在线开发资源。STM32F413探索套件计划在2017年初发布,将为客户应用开发提供独特创新的支持服务。

STM32F413和STM32F423即日上市,从4.039mm x 3.951mm WLCSP81到144引脚LQFP,提供七种不同的封装。 NUCLEO-F413ZH开发板即日起开售。

详情访问 www.st.com/stm32f4

围观 429
订阅 RSS - STM32F4