STM32MP157D-DK1 STM32CubeID使用与M核开发

news2024/11/24 12:48:47

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.coloradmin.cn/o/1366826.html

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

相关文章

Hyperledger Fabric Java App Demo

编写一个应用程序来连接到 fabrc 网络中,通过调用智能合约来访问账本. fabric gateway fabric gateway 有两个项目,一个是 fabric-gateway-java , 一个是 fabric-gateway。 fabric-gateway-java 是比较早的项目,使用起来较为麻烦需要提供一…

数据结构—排序—选择排序

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言 一、选择排序 1、基本思想 2、直接选择排序 3、选择排序的代码实现 二、堆排序 2.1算法讲解 2.2堆排序的代码实现 总结 前言 世上有两种耀眼的光芒&#xff0…

Spring AOP概念

什么是 AOP ? AOP 为 Aspect Oriented Programming 的缩写,意为:面向切面编程,通过预编译方式和运行期动态代理实现程序功能的统一维护的一种技术。AOP 是 OOP 的延续,是软件开发中的一个热点,也是 Spring …

thinkphp学习02-目录结构、控制器、路由、配置文件

目录结构 www WEB部署目录(或者子目录) ├─app 应用目录 │ ├─controller 控制器目录 │ ├─model 模型目录 │ ├─ ... 更多类库目录 │ │ │ ├─common.php 公共函数文件 │ └─event.ph…

批量生成datax同步JSON(postgresql到doris)

1.问题描述 使用datax同步psql数据到doris,表的数量过多,写datax的配置文件很麻烦。鉴于此,编写了一个datax的配置文件生成脚本,可以灵活的实现一键生成配置文件,提高生产效率。 废话不多说,脚本如下 2.问…

Vue入门二(列表渲染|数据的双向绑定|事件处理)

文章目录 一、列表渲染小案例补充es6对象写法v-for可以循环的类型补充js可循环类型key值的解释 二、数据的双向绑定三、事件处理基本使用过滤案例事件修饰符 一、列表渲染 小案例 <!DOCTYPE html><html lang"en"><head><meta charset"UTF…

跨平台的传输协议@WebDav协议@windows系统配置WedDav服务器@局域网内的WebDav传输系统

文章目录 WebDav协议基本信息启用必要的windows功能启动站点管理器IIS站点根目录访问权限设置站点的功能设置端口通行防火墙IMME文件类型(文件后缀)其他设备登录和访问本机的WebDav服务站点 小结优点缺点 refs WebDav 协议基本信息 来自wikipedia:基于Web的分布式编写和版本控…

数字IC芯片设计实现 | 时序Timing Signoff check_timing检查解析

今天分享在数字IC芯片设计实现做timing signoff阶段必须要看的report。check_timing的报告必须是clean的&#xff0c;否则芯片回来大概率是废片&#xff01;&#xff01;&#xff01;实际上一堆公司的芯片败在不看这个report了。 我们知道primetime(简称PT)做时序检查是基于我…

RT-Thread: 基于STM32CubeMX配置驱STM32驱动的USB虚拟串口调试

关键词&#xff1a;USB 虚拟串口 USB虚拟串口&#xff0c;RT-Thread Studio&#xff0c;STM32 说明&#xff1a; 1&#xff1a;文档记录 STM32F103系列基于 RT-Thread 系统的 USB虚拟串口的开启及数据收发应用流程介绍。 2&#xff1a;本文以STM32F103C8T6型号做测试&#x…

Java-伪共享

在说这个计算机术语之前&#xff0c;我先在这里问候所有问“什么是JVM伪共享”的垃圾JAVA程序员以及一瓶不满半瓶晃荡的面试官全家 我从来没想过国内已经很卷的JAVA圈&#xff0c;已经卷到语无伦次的地步了&#xff0c;“伪共享”是java程序员应该知道的吗&#xff1f;能问出这…

【Linux Shell】5. 运算符

文章目录 【 1. expr 命令 】【 2. 算术运算符 】【 3. 关系运算符 】【 4. 布尔运算符 】【 5. 逻辑运算符 】【 6. 字符串运算符 】【 7. 文件测试运算符 】 【 1. expr 命令 】 原生 bash 不支持简单的数学运算&#xff0c;但是可以通过其他命令来实现&#xff0c;例如 awk …

基于SSM图书管理系统【源码】【最详细运行文档】

SSM图书管理系统【源码】【最详细运行文档】 系统简介系统涉及系统运行系统演示源码获取 系统简介 以往的图书馆管理事务处理主要使用的是传统的人工管理方式&#xff0c;这种管理方式存在着管理效率低、操作流程繁琐、保密性差等缺点&#xff0c;长期的人工管理模式会产生大量…

超维空间M1无人机使用说明书——52、ROS无人机二维码识别与降落

引言&#xff1a;使用二维码引导无人机实现精准降落&#xff0c;首先需要实现对二维码的识别和定位&#xff0c;可以参考博客的二维码识别和定位内容。本小节主要是通过获取拿到的二维码位置&#xff0c;控制无人机全向的移动和降落&#xff0c;分为两种&#xff0c;一种是无人…

【JAVA】final、finally、finalize 有什么区别?

&#x1f34e;个人博客&#xff1a;个人主页 &#x1f3c6;个人专栏&#xff1a; JAVA ⛳️ 功不唐捐&#xff0c;玉汝于成 目录 前言 正文 final&#xff1a; finally&#xff1a; finalize&#xff1a; 结语 我的其他博客 前言 在Java中&#xff0c;final、f…

适合培训协会搭建的培训机构管理系统开发方案

一、项目背景与目标 &#xff08;一&#xff09;项目背景 培训学校教务管理系统是培训机构数字化管理的必备系统&#xff0c;该系统功能大大提升机构办学的管理效率、提升机构在家长心中的专业度&#xff0c;市面上的培训机构管理系统收费越来越贵&#xff0c;为了给协会内培…

CMake入门教程【核心篇】静态库 (.a, .lib)

😈「CSDN主页」:传送门 😈「Bilibil首页」:传送门 😈「动动你的小手」:点赞👍收藏⭐️评论📝 文章目录 概述创建静态库添加静态库到你的项目完整代码示例实战使用技巧与注意事项总结与分析概述 静态库在C++开发中扮演着重要的角色。它们通常以.a(在Unix-like系统

django websocket实现聊天室功能

注意事项channel版本 django2.x 需要匹配安装 channels 2 django3.x 需要匹配安装 channels 3 Django3.2.4 channels3.0.3 Django3.2.* channels3.0.2 Django4.2 channles3.0.5 是因为最新版channels默认不带daphne服务器 直接用命令 python manage.py runsever 默认运行的是w…

python协程asyncio的应用,async,await,loop

关于协程&#xff0c;asyncio&#xff0c;async&#xff0c;await&#xff0c;loop的概念&#xff0c;参照上一篇文章可迭代对象&#xff0c;迭代器&#xff0c;生成器&#xff0c;协程-CSDN博客 上一章我们详细的讲解了上述各个名词的概念&#xff0c;但是这些东西实际上该怎…

Dash+Plotly | Web应用开发(1)

本文为https://github.com/CNFeffery/DataScienceStudyNotes的学习笔记&#xff0c;部分源码来源于此仓库。 本期内容主要为基础概念、web布局方法和交互回调。 文章目录 Dash的主要模块Highlightlayoutcallback 惰性交互阻止初次回调忽略回调匹配错误控制部分回调输出不更新获…

计算机毕业设计----SSM场地预订管理系统

项目介绍 本项目分为前后台&#xff0c;前台为普通用户登录&#xff0c;后台为管理员登录&#xff1b; 用户角色包含以下功能&#xff1a; 按分类查看场地,用户登录,查看网站公告,按分类查看器材,查看商品详情,加入购物车,提交订单,查看订单,修改个人信息等功能。 管理员角…