自己在工作之中,使用STM32的板子,使用过M0,M33,M4和M7内核的芯片,偶然间发现STM32早早就推出了双核架构的H7系列的芯片,比如双核单片机STM32H7X5,X7系列的单片机。
由于没有使用过双核单片机的经验,在使用开发的时候,遇到了一些问题,发现在使用过程中和单核的芯片开发还是有区别的。
一:所使用的主芯片:
这里我使用的是STM32H755ZI芯片:
STM32H755xI 器件基于高性能 Arm Cortex-M7 和 Cortex-M4 32 位 RISC 内核。Cortex-M7 内核的工作频率高达 480 MHz,Cortex-M4 内核的工作频率高达 240 MHz。两个内核均具有浮点单元 (FPU),支持 Arm 单精度和双精度(Cortex-M7 内核)运算和转换(符合 IEEE 754 标准),包括全套 DSP 指令和内存保护单元 (MPU),以增强应用安全性。
CPU1:具有双精度 FPU 和 L1 缓存的 32 位 Arm® Cortex-M7@ 内核:16 KB 数据和 16 KB 指令缓存;频率高达 480 MHZ、MPU、1027 DMIPS/2.14 DMIPS/MHz(Dhrystone2.1)和DSP 指令
CPU2:32 位 Amm® 32 位 Cortex-M4® 内核,带 FPU、用于内部闪存和外部存储器的自适应实时加速器(ART加速器™)、频率高达240 MHZ、MPU、300 DMIPS/1.25 DMIPS/MMHZ(Dhrystone 2.1)和 DSP 指令
可以看到这里使用的M7和M4两个内核,这里M7内核可以跑到480Mhz,而M4内核也可以跑到240Mhz,我当时设想的是使用M7跑一些复杂的任务,而M4跑一些,简单的任务,比如GUI的刷新,基本的定时。
二:STM32cube MX软件的时钟配置:
可以看到这里可以配置CPU1,CPU2的时钟,而且APB1,APB2,APB3,APB4共计四个时钟总线的配置,这里也是第一次看到。
三:出现的问题:
这里我配置了一个基本的GPIO的操作,下载之后,发现程序会卡死在while的中,都不会进入主程序:
然后我这里就在用户区添加了一个:用户代码 GPIO的电平翻转,本想简简单单点个灯,没想要程序会卡死启动文件里面如下所示:
发现下载了程序,cube MX生成的代码,可以编译,但是下载之后,出现异常。
解决办法: