STM32MP157D-DK1 STM32CubeID使用与M核开发

STM32MP157具有A7内核核M4内核,前面介绍的一些文章,都是在A7内核上进行的,本篇来介绍M4内核的开发,以及开发时要用到的STM32 CubeIDE软件的使用。

1 STM32 CubeIDE创建LED工程

STM32CubeIDE是一体式多操作系统开发工具,是STM32Cube软件生态系统的一部分。

下载地址:https://www.st.com/zh/development-tools/stm32cubeide.html#st-get-software

首先要先安装STM32 CubeIDE,普通的exe安装,这里不展开介绍。

1.1 新建工程

文件,新建,STM32工程

第一次会进行一些文件的下载

等待下载完成后界面如下,有4个窗口切换标签:

  • MCU/MPU Selector:MCU/MPU芯片选择窗口
  • Board Selector:ST官方的一些开发板选择窗口
  • Example Selector:示例程序选择窗口,ST官方开发板的一些现有示例
  • Corss Selector:交叉引用工具窗口,选择对应的CPU型号,会弹出一个相同系统的CPU型号的资源对比界面

在搜索框输入STM32MP157D后,右边可以看到4个具体的型号,其中STM32MP157DAC1中描述的是STM32MP157D-DK1开发板,那就选这个:

点Next之后,设置工程的名称,例如01_LED,可以勾选Use default location指定位置:

再Next之后,点击Firmware Updater可修改固件包的位置:

点Finish之后,会弹出Open Associated Perspective的窗口,点Yes即可:

下载某些文件需要登录ST账号,没登录可能会提示类似如下失败的弹窗,可以先不管,后面再处理。

然后来到这个界面,又有4个可切换的窗口的标签:

  • Pinout & Configuration:引脚配置窗口
  • Clock & Configuration:时钟配置窗口
  • Project Manager:项目管理配置窗口
  • Tool:相关工具配置窗口

刚才说到,因为没登录ST的账号,有些文件没下载成功。现在可以再来下载,点击菜单Help中的Manage embedded software packsges,弹出如下窗口,找到STM32MP1,勾选Pachage,点击安装:

然后就会再次下载:

下载完成,关联成功,就会变成绿色的方块:

可以在下载位置查看下载的文件:

1.2 配置引脚

使用LED中的LD7进行LED控制,根据文档,对应的是PH7引脚,高电平点亮:

搜索PH7引脚,设置为Output模式:

然后再右键,设置Pin Reserved,选择Cortex-M4 FW。

点击左边的System Core,再点到GPIO,可以进行GPIO配置,如上下拉、速率等:

然后,时钟可以不用再配置,项目管理这里,注意勾选如下两项:

  • Copy only the necessary library files,工程会从 STM32Cube MCU 软件包中拷贝需要用到的 HAL 库文件,
    没用到的不会拷贝
  • Generate peripheral initialization as a pair of ‘.c/.h’ files per peripheral ,表示让每个外设生成独
    立的’.c/.h’文件,如果此项不勾选,那么外设相关的初始化代码将会生成在 man.c 中了

最后Ctrl+S保存,会提示要生成代码,点Yes即可:

然后还会有一个弹窗,点Yes即可:

1.3 修改代码并编译

在main.cpp中,添加控制LED亮灭逻辑代码:

HAL_GPIO_WritePin(LD7_GPIO_Port,LD7_Pin,GPIO_PIN_SET);
HAL_Delay(500);
HAL_GPIO_WritePin(LD7_GPIO_Port,LD7_Pin,GPIO_PIN_RESET);
HAL_Delay(500);

注意代码添加的位置,要添加在成对出现的BEGIN和END的区域之间:

然后点击“小锤子”图标进行编译,可以看到如上图0错误0警告。

2 烧录程序测试

2.1 切换BOOT启动模式

开发板的BOOT配置BOOT0为OFF,BOOT1为ON,板子的ST-LINK接口连接板子到电脑。

2.2 配置ST-Link

菜单中Run中选择Debug Configurations…

然后,双击STM32 Cortex-M C/C++ Application 就会自动创建和打开名为HAL_LED_CM4 Debug 的配置项:

切换到调试器窗口,选择thru JTAG/SWD link:

然后点击 Aply,Debug 开始调试。

第一次在 STM32CubeIDE 用 ST-Link 下载程序的话,系统会提示更新 ST-LINK 固件:

弹出的窗口中,选择ST-LINK:

然后再重新插拔USB线,点击Open in update mode,弹出如下界面:

点击 Upgrade 更新 ST-Link 固件,等待更新完成即可

2.3 调试运行程序

然后继续在刚才的调试器窗口,点击Debug 开始调试

全速运行后,可以看到LD7的橘色灯会循环亮灭:

2.4 通过Linux系统运行elf固件

将板子的BOOT开关切换到从SD卡启动Linux系统,然后将STM32 CubeIDE编译出的elf文件:

如01_LED_CM4.elf拷贝到开发板的/lib/firmware目录中,添加可执行权限,然后使用如下指令即可运行M4内核的程序:

#加载固件
echo 01_LED_CM4.elf >/sys/class/remoteproc/remoteproc0/firmware  
#启动固件
echo start >/sys/class/remoteproc/remoteproc0/state  

3 总结

本篇介绍了STM32MP157D-DK1开发板M核程序的开发流程,包括STM32CubeIDE创建工程,引脚配置与程序编写,最终实现了基础了LED亮灭实验。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/606692.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

云消息队列 Kafka 版生态谈第一期:无代码转储能力介绍

作者:娜米 云消息队列 Kafka 版为什么需要做无代码转储 云消息队列 Kafka 版本身是一个分布式流处理平台,具有高吞吐量、低延迟和可扩展性等特性。它被广泛应用于实时数据处理和流式数据传输的场景。然而,为了将云消息队列 Kafka 版与其他数…

linux日志管理

一.inode与block 访问文件的流程: 根据文件夹的文件名和inode号,找到对应的inode表,再根据inode表的指针找到磁盘上的真实数据 tips:我磁盘空间还剩很多,但是无法建立文件? 因为inode号被分完了 解决方法&a…

深度理解Flutter:有状态Widget与无状态Widget的详细对比

有状态Widget 什么是有状态Widget (StatefulWidget) 官方解释: 如果用户与 widget 交互,widget 会发生变化,那么它就是 有状态的。 有状态的 widget 自身是可动态改变的(基于State)。 例如用户交互而改变 Widget 的 s…

校招社招,认知能力测验,③如何破解语言常识类测试题?

作为认知能力测评中的一个环节,语言常识类,是大概率的出现,不同的用人单位可能略有不同,语言是一切的基础,而常识则意味着我们的知识面的宽度。 语言常识类的测试,如果要说技巧?难说....更多的…

洗地机什么牌子好?目前口碑最好的洗地机

如今,人们的生活中,洗地机已经成为了越来越受欢迎的清洁工具,洗地机能迅速而有效地清理地板、地毯以及其他硬表面,为用户提供更加方便快捷的洗地机体验。那么,洗地机什么牌子好?我们一起来看看目前口碑最好的洗地机有…

在Kubernetes中优雅地导出和清理Ingress资源

引言 Kubernetes的Ingress资源是定义外部访问集群服务的规则。随着微服务架构和容器化技术的普及,Ingress作为路由流量的关键组件变得愈发重要。当我们需要在环境之间迁移Ingress资源或者备份当前的配置时,就会用到导出功能。然而,直接使用k…

508基于51单片机的火灾检测与报警系统设计

基于51单片机的火灾检测与报警系统设计[proteus仿真] 火灾检测与报警系统这个题目算是课程设计和毕业设计中常见的题目了,本期是一个基于51单片机的火灾检测与报警系统设计 需要的源文件和程序的小伙伴可以关注公众号【阿目分享嵌入式】,赞赏任意文章 …

在云服务器ECS上用Python写一个搜索引擎

在云服务器ECS上用Python写一个搜索引擎 一、场景介绍二、搜索引擎的组成2.1 网页的爬取及排序2.2 用户使用搜索引擎进行搜索 三、操作步骤3.1 环境准备3.2 安装Anaconda3.3 安装Streamlit3.4 下载搜索引擎代码3.5 运行搜索引擎 四、常见问题4.1 运行setup.py时可能的问题4.2 如…

数字孪生与物联网(IoT)技术的结合

数字孪生与物联网(IoT)技术的结合可以在多个领域实现更智能、更高效的应用。以下是数字孪生在物联网技术中的一些应用,希望对大家有所帮助。北京木奇移动技术有限公司,专业的软件外包开发公司,欢迎交流合作。 1.实时监…

Opencv实验合集——实验八:相机校准

1.定义 首先,我们来理解一下怎么从相机的角度去看一张图片,就好比如你用眼睛作为相机来进行摄影,但是比摄影机强的是,你是怎么摄影图片之后再将它矫正出现在你眼前,将歪歪扭扭的图片变成一张在你眼前是一张直的图片 为…

1、C语言:数据类型/运算符与表达式

数据类型/运算符/表达式 1.数据类型与长度2.常量3.声明4. 运算符5. 表达式 1.数据类型与长度 基本数据类型 类型说明char字符型,占用一个字节,可以存放本地字符集中的一个字符int整型,通常反映了所有机器中整数的最自然长度float单精度浮点…

JavaWeb实验报告

JavaWeb实验报告 JavaWeb实验报告 2024 年 1 月 7 日 课程名称: JavaWeb 实验名称: 期末作业 班级: 姓名 同组人: 指导教师评定&#xff…

国产编程语言炫彩,界面库ui dll,有人了解吗

中文编程: 中英文双语编程, 中英一键切换, 中英对照, 中文为主, UNICODE/ANSI编码都支持; 完全免费: 炫语言免费, 调试器免费, IDE绿色版无需安装; 纯文本: 纯文本格式代码, 随意复制粘贴, GIT代码托管, 多人合作开发; PY风格: PY风格代码, 通过代码缩进确定作用域 非 大花括…

已解决 ValueError: Data cardinality is ambiguous 问题

博主猫头虎的技术世界 🌟 欢迎来到猫头虎的博客 — 探索技术的无限可能! 专栏链接: 🔗 精选专栏: 《面试题大全》 — 面试准备的宝典!《IDEA开发秘籍》 — 提升你的IDEA技能!《100天精通Golang》…

已解决 Java Error: java.lang.UnsupportedOperationException 问题

博主猫头虎的技术世界 🌟 欢迎来到猫头虎的博客 — 探索技术的无限可能! 专栏链接: 🔗 精选专栏: 《面试题大全》 — 面试准备的宝典!《IDEA开发秘籍》 — 提升你的IDEA技能!《100天精通Golang》…

安装pygraphviz步骤

1. 安装graphviz软件 去官网graphviz下载,graphviz软件安装包,然后安装。 2. 准备c/c环境 检查 Visual Studio Build Tools:如果您之前安装了 Visual Studio 或 Visual Studio Build Tools,那么您应该已经有了 C 编译器。您可以…

7个PyCharm实用插件实现轻松编程

大家好,IDE(集成开发环境)是开发者的武器,使用一个好的IDE和一些很棒的插件,工作效率会更高。Python是一种广泛使用的编程语言,PyCharm是最受欢迎的Python IDE之一。以下介绍7个PyCharm插件,它们…

FineBI实战项目一(4):指标分析之每日订单总额/总笔数

1 明确数据分析目标 统计每天的订单总金额及订单总笔数 2 创建用于保存数据分析结果的表 use finebi_shop_bi;create table app_order_total(id int primary key auto_increment,dt date,total_money double,total_cnt int ); 3 编写SQL语句进行数据分析 selectsubstring(c…

WSL使用Ubuntu 20.04版本运行py-bottom-up-attention的记录,及其可能错误的解决方法

文章目录 1. 切换linux的镜像2. 安装gcc3. 查看显卡驱动4. 安装gcc版本5. wsl安装cuda 10.16. 新建虚拟环境8. 安装依赖包9. 运行代码错误运行的所有历史命令如下 WSL使用Ubuntu 20.04版本运行py-bottom-up-attention的记录,及其可能错误的解决方法 github代码地址…

【嵌入式】Makefile 学习笔记记录 | 嵌入式Linux

文章目录 前言一、Makefile的引入——最简单的gcc编译过程二、Makefile的规则三、Makefile的语法3.1、通配符3.2、假想目标 .phony3.3、即时变量 延时变量 四、Makefile的函数4.1、foreach4.2、filter4.3、wildcard4.4、patsubst 五、Makefile升级5.1、包含头文件在内的依赖关系…