STM32H747 / STM32H745 简单测试

2023-05-16

目录

1 简介

2 datasheet关键点介绍

2.1 PWR

3 资料说明

4 例程运行

4.1 选择CM7作为项目工程对象,并编译下载程序

4.2 同理编译CM4项目对象

4.3 编译结果说明

参考链接


1 简介

        STM32H747/757 系列产品线拥有 Cortex-M7 内核(带双精度浮点单元,运行频率高达 480 MHz)和 Cortex-M4 内核(带单精度浮点单元,运行频率高达 240 MHz)的双核性能。与 STM32F7 产品线相比,其动态功耗效率提升了两倍(运行模式下)。

        得益于其拥有的 L1 高速缓存和 ART 技术,在Cortex-M7 的 480 MHz主频和 Cortex-M4 的 240 MHz 主频运行条件下,实现从内部flash执行程序零等待,并获得高达 3220 CoreMark/1327 DMIPS 的性能评分。DSP指令及双精度浮点数处理单元拓展了产品的应用范围。凭借片内L1 cache(16 Kbytes +16 Kbytes of I-cache and D-cache)和ART加速器,即使从外部flash执行程序代码也不会带来性能的损失。[1]

       该产品为2019年推出,虽然价格与F1C100S比较没有优势,但ST更适合在工业领域使用,运行复杂的算法时优势明显。

        当然,双核性能固然优越,但也提高了使用门槛。它丰富的电源管理策略使其很适合做低功耗设计,而要够理清这些电源模式和时钟树就不得不下大工夫了。如果你对STM32H743已经有足够的了解,并能接受这款芯片的电源管理的复杂性,同时对价格不太敏感,这一系列芯片将值得一试。

 

2 datasheet关键点介绍

        熟悉STM32H743后,首先仔细阅读手册中 7、9、14、20章应该能对该芯片有一定的了解了,下文也将简要的介绍下7、9、20章。

        The RCC block manages the clock and reset generation for the whole microcontroller, which embeds two CPUs: an Arm® Cortex®-M7 and an Arm® Cortex®-M4, called CPU1 and CPU2, respectively.

2.1 PWR

1、电源供给

The VCORE core domain supply can be provided by the SMPS step-down converter, voltage regulator or by an external supply (VCAP). VCORE supplies all the digital circuitries except for the backup domain and the Standby circuitry. The VCORE domain is split into 3 sections:

D1 domain containing the CPU (Cortex®-M7), Flash memory and peripherals.

D2 domain containing peripherals and a Cortex®-M4 CPU.

D3 domain containing the system control, I/O logic and low-power peripherals.

When a system reset occurs, the voltage regulator is enabled and supplies VCORE. The SMPS step-down converter is also enabled to deliver 1.2 V. This allows the system to start up in any supply configurations (see Figure 22)

2、运行模式[7.6]

CPU的运行模式有:CRun,Csleep,Cstop

V_CORE域D1,D2的运行模式有:Drun,Dstop,Dstandby

CPU和V_CORE域的选择决定了系统运行的模式,如Table 32所示

3、电压和主频的关系

升频:先提高电压(change VOS),【使能PLL(仅VOS3->VOS2需要这一步)】,最后当PLL锁定时,变换系统时钟。

降频:降低系统频率,【失能PLL(仅VOS2->VOS3需要这一步)】,然后降低电平

 

4、当你理清程序运行策略后,可根据下图 37实现程序:

2.2 RCC

        RCC寄存器对照表(register map)可以分为4类:[9.7.1]

寄存器组

描述

地址偏移

普通寄存器组(register bank)

accessible by both cores and by any other master

0x000~0x0D0

映射到相同地址的寄存器组

– When accessed by CPU1, CPU1 register bank is accessed.

– When accessed by CPU2, CPU2 register bank is accessed.

the “same address bank” can only be accessed by CPU1 or CPU2.

0x0D0~0x130

CPU1寄存器组

containing the peripheral enable bits (PERxEN), the peripheral

low-power enable bits (PERxLPEN) and reset flag status bits for peripheral allocation

to CPU1

0x130~0x190

CPU2寄存器组

CPU2 register bank containing the peripheral enable bits (PERxEN), the peripheral

low-power enable bits (PERxLPEN) and reset flag status bits for peripheral allocation

to CPU2.

0x190~0x1FF

        根据RCC寄存器的配置,可以把片内外设分配给具体的MCU,每个MCU就能像以前熟悉的样子运行了。图65就是一个很好的例子:

        需要注意的是:SRAM4, IWGD1, IWGD2 and RCC are common resources and are implicitly allocated to both CPU1 and CPU2.

2.3 NVIC

该系列芯片的中断设置还没发现有难点。总结如下:

a\两个CPU有各自独立的内核中断

b\两个CPU通过Hardware Semaphore (HSEM) interrupt 联系

c\普通中断线共用:如当CPU1和CPU2同时打开EXTI中断时,两个CPU可以各自独立运行自己的中断服务函数。

 

3 资料说明

1、STM32CubeMX 的STM32H7 1.3.2 及以前的包中并没有找到STM32H745/STM32H747相关的包,因此不能自动生成代码

2、STM32Cube_FW_H7_V1.5.0 文件下的projects有相关例程,可以认真阅读

3、运行代码前,需要安装较新版本的keil包,如Keil.STM32H7xx_DFP.2.3.1.pack

4、下文例子将在NUCLEO-H745ZI-Q评估板运行

 

4 例程运行

        到以下目录打开工程:xxx\STM32Cube_FW_H7_V1.5.0\Projects\NUCLEO-H745ZI-Q\Examples\GPIO\GPIO_EXTI\MDK-ARM

        实验说明则看上一级目录下的“readme.txt”,这里不再赘述。

4.1 选择CM7作为项目工程对象,并编译下载程序

 

        如果上图操作成功,则CM4文件夹中的文件应该是有减号的,如下图所示。带减号的文件表示文件不参与目标的编译,

        在编译前,需先进行编译选项配置

 

配置后,进行编译下载

 

4.2 同理编译CM4项目对象

        设置成功后,工程变成下图的样子

 

        在编译前进行编译设置

 

配置后,进行编译下载

 

4.3 编译结果说明

编译后会生成如下两个文件:

自己要设置在M7对象下运行,因如何把M4对象相关的文件屏蔽了呢,即如何生成减号?

以CM4文件夹下的main.c为例,

 

 

当下载程序后,按Nucleo开发板的蓝色按键,板子上的两个LED等会同时亮起。再按按键,两个LED等将关闭。

 

 

参考链接

[1] https://www.stmcu.com.cn/Product/pro_detail/cat_code/STM32H747_757/family/81/sub_family/236/sub_child_family/277/layout/product

 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

STM32H747 / STM32H745 简单测试 的相关文章

  • FFMPEG 编解码失败 non-existing PPS 0 referenced

    最近在尝试用ffmpeg进行编解码 大部分的rtsp拉流正常 编解码正常 但是有的rtsp不能解码 提示如下 xff1a 后来把把packet数据打印出来发现是没有sps pps信息 导致 ffmpeg不能正常解码 程序里面 经过测试 把
  • ROS主从机配置

    目标 xff1a 小车上运行SLAM算法 xff0c 在PC上使用rviz可视化观察 第一步 xff1a 分别在两台机器上使用 hostname 指令查看用户名 ifconfig 指令查看ip地址 wlp3s0是我的pc的无线网卡 xff0
  • Docker入门指南

    https yeasy gitbook io docker practice
  • STL迭代器模版详解

    1 STL iterator迭代器 STL xff08 Standard Template Library xff0c 标准模板库 是惠普实验室开发的一系列软件的统称 它是由Alexander Stepanov Meng Lee和David
  • 4种YOLO目标检测的C++和Python两种版本实现

    本文原创首发于极市平台公众号 xff0c 如需转载请私信作者 2020年 xff0c 新出了几个新版本的YOLO目标检测 xff0c 在微信朋友圈里转发的最多的有YOLOv4 xff0c Yolo Fastest xff0c YOLObil
  • Activity的任务栈Task以及启动模式与Intent的Flag详解

    什么是任务栈 Task 官方文档是这么解释的 任务是指在执行特定作业时与用户交互的一系列 Activity 这些 Activity 按照各自的打开顺序排列在堆栈 xff08 即 返回栈 xff09 中 其实就是以栈的结构 先进后出 将依次打
  • 什么是标记化?令牌?

    什么是标记化 xff1f 标记化就是 xff1a 将敏感数据元素 xff08 例如银行帐号 xff09 替换为非敏感替代项 xff08 称为令牌 xff09 令牌是一个随机数据字符串 xff0c 没有基本或可利用的值或含义 它是一个唯一的标
  • 如何使用c语言解析httppost请求

    头文件 ifndef UPLOAD define UPLOAD include 34 fastcgi fcgiapp h 34 include 34 sysinc h 34 ifdef WIN32 def GRCALL the callin
  • STM32F103ZET6单片机双串口互发程序设计与实现

    STM32库函数开发系列文章目录 第一篇 xff1a STM32F103ZET6单片机双串口互发程序设计与实现 文章目录 STM32库函数开发系列文章目录前言一 STM32F103ZET6单片机双串口互发程序设计与实现是什么 xff1f 二
  • STL的一些常见应用场景

    set 集合 去除重复元素并从小到大排序 平衡二叉树 xff08 红黑树 xff09 维护 span class token comment 华为机试 gt HJ3 span span class token macro property
  • Pixhawk原生固件Linux环境下编译

    Pixhawk原生固件在Linux下编译的资料网上很多 xff0c 官网 http dev px4 io starting installing linux html 也有其具体流程 xff0c 本文只是针对自己从安装ubuntu14 04
  • GNGGA 解析北斗数据获得经纬度 以及数据NMEA数据转换

    char GPS1 61 34 GNGGA 121252 000 3937 3032 N 11611 6046 E 1 05 2 0 45 9 M 5 7 M 0000 77 34 int Parse GPS char data char
  • C++ math.h函数

    include int abs int num double fabs double arg long labs long num 函数返回num的绝对值 include double acos double arg 函数返回arg的反余弦
  • 动态ip原理

    所谓动态是指每次上网时 xff0c 运营商会随机从池子中分配一个IP地址 xff0c 动态ip池子因不同服务机构质量有所不同 xff0c 透明一般是在免费代理中出现 xff0c 而不同透明度还是有相应区分 代理IP的匿名度 xff1a 匿名
  • 自建隧道代理

    隧道代理可自动变更 xff0c 免去频繁更换代理的麻烦 xff0c 仅需一次性配置一个代理IP xff0c 其它变IP工作由隧道自动完成 假设你从免费代理手上拿到一些池子 xff0c 当然你也可以用爬虫程序自己爬找出后测试筛选可用的 xff
  • socks5代理怎么用?如何使用?

    SOCKS5代理不会重写数据包的标头 xff0c 并结合了TCP和UDP协议 Sock5代理服务器是把你的网络数据请求通过一条连接你和代理服务器之间的通道 xff0c 由服务器转发到目的地 Proxifier是一款功能非常强大的socks5
  • Python代理ip代码示例

    隧道代理和其他代理ip也有共同点优势比路由器更容易配置 xff0c 可以在工作过程中生成各种记录 xff0c 工作在应用层 xff0c 可以对各种数据进行检查 xff0c 按照一定的准则 xff0c 生成各种日志 记录 除此之外 xff0c
  • python 爬虫SSL错误是怎么回事?

    今天摸鱼 xff08 划掉 xff09 看道一个问题蛮有意思的 xff0c 想来展开说说 xff1a 别急 xff0c 解决办法是有的 1 这个错误很可能是因为你正在尝试读取一个 JSON 格式的响应 xff0c 但是实际返回的却是 HTM
  • python写的爬虫,抓取百度的搜索结果,被屏蔽了怎么办?

    某乎上有个热门话题 xff0c 引起了很大的讨论 这个问题通常是由于频繁的请求导致百度的反爬虫机制触发了验证码的保护机制 解决办法无非是那几套流程走一遍 1 增加请求的时间间隔 通过在每个请求之间增加一些时间间隔 xff0c 可以降低请求频
  • HTTP代理挑选最强攻略

    最近上班合理上网的时候 xff0c 在某乎上刷到一个话题 xff0c 本来这个话题我也经常刷到没打算看 xff0c 本着看新动态的心思 xff0c 点进来一看 xff0c 好家伙 xff0c 这话题底下除了各大HTTP代理服务商 xff0c

随机推荐

  • 电设飞控从零学起(一) 基础篇 无人机硬件与结构设计简介

    1 常见无人机的分类 xff08 1 xff09 固定翼 xff1a 续航时间长 xff0c 载荷最大 xff0c 但必须助跑 滑行 xff08 2 xff09 直升机 xff1a 可垂直起降 xff0c 但机械结构复杂 维护成本高 xff
  • ROS编程 csv文件读取/输出 与 YAML文件生成

    前言 代码是抄的 感想是真的 cpp的文件操作对比起python来说是比较繁复的 而每次学习cpp的时候都会去刻意留文件操作的教程 其实直接做一次实验就可以理解了 下面的代码是抄回来 xff0c 分别是做手眼标定与力传感器标定过程中需要将采
  • Android 引入FFmpeg 读取RTSP流 解封装获取H264原始数据

    之前 写了Android中怎么引入FFMmpeg的例子 本编文章将会写一个简单的demo实现ffmpeg拉去rtsp流并在界面中打印前五个字节 懒得往下细看的可以点击这里下载工程 基于andorid studio 实际效果下图 xff1a
  • 单片机: 自定义串口通信协议的实现

    使用51单片机完成一个简单的串口通信协议 要求 xff1a 一个协议帧为8个字节 xff0c 其中头部两个字节 xff0c 分别是0xFF 0xFE 第3个字节代表第一个数据 xff0c 第4个字节代表第二个数据 xff08 均为正数 xf
  • ThreeJS和BabylonJS对比

    Threejs从2009年就问世了 xff0c 当时还是基于ActionScript的 xff0c 后来换成了JavaScript Babylon是2013年微软出品的 xff0c 有一部分代码基于TS写的 xff0c 即TypeScrip
  • dojo是什么?

    现在Web端vue React Angular大行其道 xff0c 安卓端js也有React Native等 xff0c 那么学习dojo有什么意义呢 xff1f 有些老的项目还是用的dojo 例如arcgis javascript api
  • threejs导入json模型

    其实现在的json模型有两种格式 一个是Geometry类型 xff0c 需要JSONLoader加载 xff1b 一个是Object类型 xff0c 需要ObjectLoader加载 1 Geometry var js loader 61
  • three.js的x,y,z坐标轴

    three js中坐标系使用的是左手坐标系还是右手坐标系 xff1f 无论是左手坐标系 xff0c 还是右手坐标系 xff0c x和y轴方向是不变的 改变的只是z轴的方向 threejs和gis中的三维世界坐标系的联系 xff1a gis中
  • 云计算和GIS如何结合?

    GIS的发展离不开计算机技术的发展 每一次GIS的变革 xff0c 背后都是由于计算机技术的进步引起的 而这一次GIS的大变革 xff0c 背后正是云计算技术的愈加成熟 你是否有过这样的经历 xff0c GIS数据量太大 xff0c 加载太
  • Meson安装

    Meson出现的原因 xff1a C 43 43 需要一个仓库管理系统 xff0c 用于管理依赖包 类似于Java里的Maven Maven可以做什么呢 xff1f Maven是Java的项目构建工具 43 仓库管理工具 由此需求下 xff
  • 微服务和云服务的关系

    今天 xff0c 突然想到微服务和云服务 xff08 分布式 xff0c 云计算 xff09 的关系 因为 xff0c 微服务的特点是松耦合 xff0c 而这不就是云计算的基础吗 xff1f 云计算的特点是分布式和集群 xff0c 而要实现
  • 一种简单的GIS云服务提供方案

    如果说云原生的GIS服务比较困难的话 要把GIS拆成一个个微服务 那么提出一种简单的云部署方案就是有必要的了 那就是 xff0c 采用容器化技术将GIS服务器部署到N个小型电脑上 然后采用一个类似于springcloud的中间件进行接受请求
  • Idea-android-osmdroid:the project uses gradle 2.14.1 which is incompatible with java 9 or newer

    方法一 xff1a 工具使用 IDEA 2019默认使用Java11导入gradle工程问题https blog csdn net jiajane article details 103014036 方法二 xff1a 点击open gra
  • Android 使用FFmpeg拉取RTSP流 用RTMP推流到RTMP服务器

    之前写了 如何在Android中使用ffmpeg 以及如何使用ffmpeg拉取RTSP流 业务场景大概是这样 拉取RTSP流之后 解码 送给AI分析 分析完之后 在进行绘制结果 然后编码 编码完之后 进行RTMP推流 AI 解码 是别的同时
  • GeoServer扩展之REST

    https docs geoserver org latest en developer programming guide rest services index html 这个服务扩展似乎过时了 不知道是不是这样 geoserver 2
  • python pyd文件是 - mapnik.pyd

  • leaflet加载postgis发布的矢量切片数据

    之前写过使用mapbox加载矢量切片 xff1a https www cnblogs com 2008nmj p 15069842 html 那么leaflet怎么加载python 43 postgis发布的矢量切片服务呢 xff1f 矢量
  • opencv安装make时报错: 没有指明目标并且找不到makefile

    在利用安装包进行opencv安装时 xff0c 当按照指令安装好依赖 xff0c 进行下载opencv文件夹下 xff0c 建立build文件夹并进入其文件夹后 xff0c 利用CMAKE进行编译 xff0c 但是编译成功之后 xff0c
  • 在Ubuntu中安装Chrome浏览器

    Chrome 简介 Google Chrome是由Google开发的一款设计简单 高效的Web浏览工具 Google Chrome的特点是简洁 快速 GoogleChrome支持多标签浏览 xff0c 每个标签页面都在独立的 沙箱 内运行
  • STM32H747 / STM32H745 简单测试

    目录 1 简介 2 datasheet关键点介绍 2 1 PWR 3 资料说明 4 例程运行 4 1 选择CM7作为项目工程对象 xff0c 并编译下载程序 4 2 同理编译CM4项目对象 4 3 编译结果说明 参考链接 1 简介 STM3