Embedded 在不同的STM32F3/F4 MCU上使用相同的代码

Embedded 在不同的STM32F3/F4 MCU上使用相同的代码,embedded,stm32,microcontroller,Embedded,Stm32,Microcontroller,目前,我正在一个大学项目中与STM32F303ZET6(核子开发委员会)合作。我们还需要制作包括微控制器在内的所有SMT PCB。问题是我们在国内找不到STM32F303ZET6的SMT验证 因此,我们必须改变我们的微控制器,但目前STM32F303ZET6是我得到的全部,我将用它编写所有的代码。我计划在库和开发环境中使用arm mbed。我的问题是,我可以将为STM32F303ZET6编写的代码用于其他STM32F3或STM32F4微控制器吗?STM32F2、STM32F3和STM32F4系列

目前,我正在一个大学项目中与STM32F303ZET6(核子开发委员会)合作。我们还需要制作包括微控制器在内的所有SMT PCB。问题是我们在国内找不到STM32F303ZET6的SMT验证


因此,我们必须改变我们的微控制器,但目前STM32F303ZET6是我得到的全部,我将用它编写所有的代码。我计划在库和开发环境中使用arm mbed。我的问题是,我可以将为STM32F303ZET6编写的代码用于其他STM32F3或STM32F4微控制器吗?

STM32F2、STM32F3和STM32F4系列之间有很多共同点。F3和F4都是Cortex-M4,所有三个系列都共享公共外围设备。在某些情况下,您可能会发现管脚多路复用选项不同,或者某个部件中有某些外设可用,但另一个部件中没有

不同的部件可能有不同数量的USART、ADC、DAC等以及不同数量的可用GPIO。因此,您应该检查您使用的外围设备和端口在备用部件上是否可用

这实际上是一个浏览数据表并比较部件的功能、功能和插销选项的问题。如果您使用的是STM32Cube,那么应该没有什么兼容性问题(Cube还有其他问题,但跨部分兼容性是其主要目的)


每个部分的时钟树往往不同,因此您需要特定于部分的C运行时启动代码,但这通常由工具链提供。

取决于您的抽象层/库。一般来说,如下文所述,ST具有不同的外设(UART、GPIO等),并且每种产品都可以混用,此外,即使两种产品具有相同的外设,您也不能期望该外设的地址相同。所有这些都有很好的文档记录。然后您将mbed添加到此中,其中一个假设您指的是库,因此您必须查看这些库是否以及如何移植到每个目标MCU,理想情况下,抽象级别将使您的高级应用程序正常工作,一般来说,由于您的大多数代码都与外围设备(芯片供应商/特定)有关,而不是与核心处理器(arm)有关,因此您应该假设没有可移植性。但是,即使在cortex-M4或cortex-m3中,核心也存在着供应商可能选择使用而其他供应商可能不使用的变化(或者在不同的产品之间使用不同的产品,因此您也不应该在其中做出许多假设)。