五月初的时候想要研究一下ST的WL55这块无线芯片的时候发现了一个问题: 我们在启动双核模式的时候会出现GPIO的初始化没有内容的情况 。
由于前段时间许多事情非常的繁忙,只是利用WL55跑了一下双核的工程,并没有仔细的描述这个问题,这段时间当手头上的事情忙完之后还是稍微有空来研究一下这个问题的。
当然在此之前做出声明:由于互联网上关于这个问题的资料和讨论几乎没有,因此在文章后面出现的所有内容均为个人观点,欢迎大家指正。
这个问题也导致我最开始的点灯都出现了问题,也是卡了我好久。后来准备手搓初始化的时候,发现其初始化内容只有时钟的启动,并没有其他的内容。
关于这个问题在CubeIDE和Keil中均会出现并且出问题的目前发现仅有GPIO的初始化内容。
而目前互联网上首先关于STM32的双核使用的文章都较为少见,更别提遇到这个现象翻遍了整个网络都没有找到相关的现象,以下我对现象进一步阐述:
-
**和CubeIDE或者Keil无关,二者均会出现这种情况。
** -
和Generate peripheral initialization as a pair of’.c/h’ files per peripheral无关,无论文件是否分开都没有关系,依旧出现MX_GPIO_INIT函数中缺少内容的情况。
-
**仅有MX_GPIO_Init函数出现问题,其他的函数没有这个现象。
** -
仅有双核模式下出现这个问题,单核模式下一切正常
-
无论是从芯片初始化还是例板的初始化都会出现这个问题
根据十数次的各种配置的实验,我发现了导致这个的原因在于创建工程时出现的一个配置选项。
这这里会提示是否是默认模式初始化设备,我前面的情况下都选择了YES,但是在一次选择No的情况下
建立一个双核工程,之后再创建我们的工程。
这时候会发现GPIO的初始化是正常进行的。 那么显然问题就出现在这个配置中了,不过在当我从芯片创建工程的时候出现了新的问题,他并没有弹出来那个选项。
同样的创建完工程之后也丢失了GPIO初始化的内容。
好吧到这里也只能解决一下双核模式下利用板子来初始化的方案,但是依旧无法解决在芯片模式下创建一个双核工程但是不会出问题的方案。可能是对于CubeMX还有些理解没有到位,这几天等我再搜寻一些资料尝试能不能解决一下这个问题。
当然初次之外也试过许多情况,包括时钟配置,包括研究了一些我所能发现的配置,不过主要是目前互联网上关于这个问题的讨论少之甚少。我所知道的渠道也没有多少人使用双核模式以及对于这个情况的了解,如果有观众朋友了解或者遇到过这个问题的话,欢迎私信或者在文章底下留言欢迎大家交流讨论。