stm32MP135裸机编程:修改官方GPIO例程在DDR中点亮第一颗LED灯

0 参考资料

轻松使用STM32MP13x - 如MCU般在cortex A核上裸跑应用程序.pdf
正点原子stm32mp135开发板&原理图
STM32Cube_FW_MP13_V1.1.0
STM32CubeIDE v1.15

1 需要修改那些地方

1.1 修改LED引脚

本例使用开发板的PI3引脚链接的LED作为我们点亮的第一颗LED灯,开启我们的基于stm32MP135的裸机编程生涯。
在这里插入图片描述
LED1就是我们需要控制的LED灯,低电平点亮,高电平熄灭。

1.2 修改用户程序在DDR中运行

在《轻松使用STM32MP13x - 如MCU般在cortex A核上裸跑应用程序》中可以很清晰看到我们的用户程序是运行在DDR中(也可以运行在SYSRAM中,只有128KB)。
在这里插入图片描述
除此之外,我们还需要为用户程序添加stm32头标识,相关说明如下:
在这里插入图片描述

2 基于官方GPIO例程进行修改LED驱动

2.1 导入官方GPIO例程

将V1.1.0软件包的GPIO_EXTI工程导入到stm32CubeIDE中:
在这里插入图片描述

2.2 删除main函数中的无关部分

在这里插入图片描述
main函数只保留HAL_Init()和SystemClock_Config(),其余部分全部注释掉。

2.3 添加LED初始化部分

在这里插入图片描述

__HAL_RCC_GPIOI_CLK_ENABLE();

    /*Configure GPIO pin : PI3 */
    GPIO_InitStruct.Pin = GPIO_PIN_3;
    GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;
    GPIO_InitStruct.Pull = GPIO_NOPULL;
    GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
    HAL_GPIO_Init(GPIOI, &GPIO_InitStruct);

    HAL_GPIO_WritePin(GPIOI, GPIO_PIN_3, GPIO_PIN_RESET);

初始化PI3管脚为推挽输出,初始化完之后输出低电平点亮LED。

2.4 让LED闪烁起来

只是点亮一颗LED灯看起来很枯燥,我们在while循环中让LED以一秒为周期闪烁起来,代码如下:
在这里插入图片描述

while (1)
  {
    /* USER CODE END WHILE */

    /* USER CODE BEGIN 3 */
	  HAL_Delay(1000);
	  HAL_GPIO_TogglePin(GPIOI, GPIO_PIN_3);
  }

3 基于官方GPIO例程进行修改程序运行在DDR

3.1 当代码量超过SYSRAM(128KB)的大小时,需要将程序运行在DDR。首先打开C/C++ Build 配置,在Preprocessor中添加USE_DDR宏定义

在这里插入图片描述

3.2 修改链接文件名,重命名为 “stm32mp13xx_a7_ddr.ld”并导入GCC链接脚本

在这里插入图片描述
在这里插入图片描述

这里重命名只是为了便于区分。

3.3 修改REGION_ALIAS定义到DDR区域

打开用户程序链接脚本,使用DDR作为用户程序空间。
在这里插入图片描述

3.4 为用户程序添加stm32头标识

为用户程序加入STM32 Header,可在工程配置的post-build steps中加入如下命令:
 “(path_to_STM32CubeMP13 Package)/Utilities/ImageHeader/postbuild_STM32MP13.sh" 
 "${gnu_tools_for_stm32_compiler_path}" "${BuildArtifactFileBaseName}"

我们只需要将path_to_STM32CubeMP13 Package修改成我们为STM32CubeMP13开发包
存放路径即可:
在这里插入图片描述
至此,所有修改宣告完成,编译官方GPIO例程即可。终端打印区显示信息如下:
在这里插入图片描述
可以看到我们的程序被定义在DDR的首地址。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

使用uniapp开发app实现后台保活定位能力

在 UniApp 中实现后台保活定位能力通常涉及几个关键步骤,包括获取定位权限、实现定位功能、处理后台定位以及确保应用在后台时能够持续定位。以下是一个基本的指南: 1. 系统定位 IOS系统 首先开启系统定位能力 需要配置后台运行能力 注意:…

神经气体生长算法【GNG】

当德国计算神经学家 Bernd Fritzke 在其 1995 年的开创性论文中提出后来被称为神经气体生长(GNG)的算法时,机器学习还是一个相对较新的领域,并且受到实际神经科学的极大启发。 当时,神经科学正处于一个突破性的时代—…

浅谈word格式:.doc和.docx的优缺点及区别

.doc和.docx是两种最为常见的文档格式,它们在多个方面存在着显著的区别。首先,从版本角度来看,.doc是Microsoft Office Word 2003及之前版本的保存类型,而.docx则是Word 2007及之后版本的保存类型。这一区别直接影响了文档在不同版…

【数据分析】统计学基础及Python具体实现

各位大佬好 ,这里是阿川的博客,祝您变得更强 个人主页:在线OJ的阿川 大佬的支持和鼓励,将是我成长路上最大的动力 阿川水平有限,如有错误,欢迎大佬指正 Python 初阶 Python–语言基础与由来介绍 Python–…

FlowUs息流:新媒体运营者的智能协作解决方案

新媒体和自媒体运营者在日常工作中经常面临信息管理复杂、创意记录不便、团队协作效率低等痛点。FlowUs作为一款多功能的协作工具,能够针对性地解决这些问题。 FlowUs息流是一款专为新媒体从业者设计的协作文档工具,它具备以下功能特色: 中文…

Android 代码打印meminfo

旨在替代adb shell dumpsys meminfo packageName,在log打印meminfo,以便分析内存情况 ActivityManager.MemoryInfo memoryInfo new ActivityManager.MemoryInfo(); activityManager.getMemoryInfo(memoryInfo); long totalMemory Runtime.getRuntime(…

Python从0到100(三十二):lxml模块的学习与应用

学习目标 掌握使用lxml库提取数据的方法。理解lxml在数据处理后提取的数据类型。学习将元素(element)转换为字符串的方法。 1. lxml的安装 通过以下命令安装lxml库: pip install lxml2. lxml的使用 2.1 基础使用 导入lxml的etree库&…

用英语介绍端午节,柯桥零基础英语培训

端午节 Dragon Boat Festival 中国传统节日,农历五月初五。相传古代诗人屈原在五月初五投江自杀,后人把这天作为节日纪念他。有划龙舟比赛、包粽子等风俗。 A traditional Chinese festival on the fifth day of the fifth lunar month. Legend has i…

Doris 2.1 元数据更新

metadata_refresh_interval_sec 20

护理考试搜题软件哪个免费?分享九个搜题直接出答案的软件 #知识分享#微信

培养自己的阅读习惯,并不仅仅限于课外读物,还包括学术期刊、行业报告等,以不断提升自己的知识水平和思考能力。 1.彩虹搜题 这是一个公众号 是一款专门针对于大学生或者是成年自考等学生顺利完成证件考试的应用软件,这款软件涵…

AI巅峰对决:8款大模型边缘作文谁领风骚?

前几天我们预测高考作文题目,然后有朋友说我们预测对了,但是我们认真看,发现和全国卷作文人工智能有点交集,但是不能说预测对。 这次我们不预测了,而是让实力说话——邀请8个国产AI大模型参与一场别开生面的“边缘作文…

人工智能对聊天机器人训练数据的“淘金热”可能会耗尽人类编写的文本

人工智能对聊天机器人训练数据的“淘金热”可能会耗尽人类编写的文本 像ChatGPT这样的人工智能系统可能很快就会耗尽让它们变得更聪明的东西——人们在网上写下和分享的数万亿字。 Epoch AI研究集团发布的一项新研究预计,科技公司将在大约十年之交——2026年至203…

Spring--Bean的作用域,生命周期

Bean的作用域 Bean的作用域有很多种,在Spring Framework中支持6种(其中有四种只有在web环境中才能生效),同时Spring还支持自定义Bean的范围。 Spring Framework中支持的6种范围: 作用域解释singleton每个Spring IoC…

【数学建模】微分方程的数值求解

微分方程的数值求解 一阶差分求解微分方程原理:四阶龙格-库塔方法应用:小船渡河问题: 进阶求二阶微分方程 一阶差分求解微分方程原理: d y d x f ( x n , y n ) \dfrac{dy}{dx}f(x_n,y_n) dxdy​f(xn​,yn​) y n 1 − y n x n 1 − x n f ( x n , y n ) \dfrac{y_{n1}-y_n…

React+TS前台项目实战(一)-- 项目初始化配置及开此系列的初衷

文章目录 前言一、初始化项目二、基础配置1. 项目目录及说明如下2. TS版本使用Craco需注意 总结 前言 前面 后台管理系统实战 系列教程暂时告一段落了,想了解全局各种配置的可自行查看。本次教程将重点介绍React前台项目的实操,关于具体的配置&#xff…

51单片机-数码管显示多个

目录 简介: 一. 简单全亮 二. 控制单个变化 三. 2024 书接上回 51单片机-数码管显示单个 http://t.csdnimg.cn/Ii6x0 简介: 51 单片机作为控制核心,可以与数码管相连接来实现数字的显示。 数码管通常有多个段,通过控制这些段的点亮和熄灭状态&…

弘君资本炒股技巧:银行降准对股票的影响?

银行降准会带动股票市场变得相对活泼起来,假如降准前股价在跌落状态,降准能够起到一定缓冲股价跌落的效果。 什么是降准:降准指的是减少银行在央行的存款准备金率,也便是说银行需求存放于央行的资金份额下降,银行能够…

Tensorflow2.10 完成图像分割任务

前言 图像分割在医学成像、自动驾驶汽车和卫星成像等方面有很多应用,本质其实就是图像像素分类任务,也就是使用深度学习模型为输入图像的每个像素分配一个标签(或类)。 准备 本文的准备如下,使用 pip 安装如下配置&…

动态内存管理<C语言>

导言 在C语言学习阶段,指针、结构体和动态内存管理,是后期学习数据结构的最重要的三大知识模块,也是C语言比较难的知识模块,但是“天下无难事”,只要认真踏实的学习,也能解决,所以下文将介绍动态…

成都石室中学学子游汶鑫展现新时代好少年风采 拾金不昧获表彰

在繁华的都市中,每天都有无数的故事在上演,而其中的一些故事,却以其独特的温暖和正能量,深深打动着我们的心灵。近日,成都石室中学初中学校的一名学生游汶鑫同学,就用他的实际行动,诠释了新时代好少年的风采,展现了中华民族传统美德在当代青少年身上的生动体现。 成都石室中学初…