首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >定义核心STM32H7

定义核心STM32H7
EN

Stack Overflow用户
提问于 2022-04-15 08:47:40
回答 1查看 104关注 0票数 0

目前,我正试图使用PortentaH7数据表中的寄存器对STM32H747进行编程。到目前为止,我只尝试访问一个核心(M7),现在我想尝试同时使用这两个核心。关于如何同时使用这两种方法,有很多例子,但没有一个例子说明CORE_CM7和CORE_CM4是在哪里定义的。以下是我迄今所做的工作:

代码语言:javascript
复制
volatile uint32_t* const SYSCFG_UR1 = (uint32_t *) 0x58002704;
volatile uint32_t* const RCC_GCR = (uint32_t *) 0x58024400A0;//to boot M4
void boot_CM4(void){
   *SYSCFG_UR1 = (1<<0);//BCM4 = 1;
   *RCC_GCR|=(1<<3);//BOOT_C2
}

这个函数应该引导M4核心。我在网上读到的大部分代码都使用:

代码语言:javascript
复制
#ifdef CORE_CMx

#endif

并且它允许他们与CORE_CMx一起工作。我的问题是CORE_CMx是如何定义的。这里的数据表:https://www.st.com/resource/en/reference_manual/dm00176879-stm32h745755-and-stm32h747757-advanced-armbased-32bit-mcus-stmicroelectronics.pdf让我认为我应该使用SYSCFG_UR3寄存器来编写核心的起始地址,以便定义CORE_CMx。但是,数据表中几乎没有关于此寄存器的任何信息。任何提示都是非常感谢的。

EN

回答 1

Stack Overflow用户

发布于 2022-04-15 13:02:22

经过一些研究,我发现标识符CORE_CMx是由IDE定义的,并得到了与以下内容等价的内容:

代码语言:javascript
复制
#ifdef 1

您所需要做的(在Arduino IDE上)只需转到、Tools>boards>Arduino、Mbed、Portenta、,并选择您想要编程的核心。在这里,标识符被认为是被定义的。在使用CM4之前,仍然需要在CM7上引导它。

(快速检查:如数据表中定义的,在编译Flash内存地址时,CM4为0x08100000,CM7为0x08000000 )。

谢谢你的帮助。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71881916

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档