基于ubuntu的STM32嵌入式软件开发(三)——基于官方标准函数库的软件工程移植

news2024/11/16 1:32:53

本文基于st官方提供的标准库搭建应用软件工程(即非cube方式、非寄存器方式),采用标准库搭建的工程具有软件可移植性高、可读性好、符合软件设计人员思维方式。本文描述官方下载标准库及标准库的移植过程,具体流程如下所述:

1.首先在st官方下载stm32f4系列最新的标准库压缩包(STSW-STM32065的标准库)。

https://www.st.com/en/embedded-software/stsw-stm32065.html

图1 下载最新版本的标准库压缩包

2.拷贝stm32f4系列的标准库(V1.9版本)到工作目录并解压。

图2 拷贝并解压标准库压缩包到工作目录

3.新建应用软件工程目录project_m4,并在project_m4的目录下新建5个子目录(分别新建cmsis、include、source、fwlib、user等5个文件夹)。

图3 新建应用工程目录及子目录

4.将标准固件库目录/Libraries/CMSIS/Include文件夹,以及固件库文件目录/Libraries/CMSIS/Device/ST/STM32F4xx/Source/Templates/TrueSTUDIO文件夹,全部拷贝移植到project_m4/cmsis文件夹下,移植后cmsis文件夹目录如下图所示:

图4 cmsis目录文件移植

5.将标准固件库文件目录/Libraries/STM32F4xx_StdPeriph_Driver文件夹下的inc和src文件夹全部拷贝移植到fwlib文件夹下,移植后fwlib文件夹目录如下图所示:

图5 fwlib目录文件移植

6.将标准固件库文件目录/Libraries/CMSIS/Device/ST/STM32F4xx/Include文件夹目录下的stm32f4xx.h、system_stm32f4xx.h文件拷贝到project_m4/include文件夹下。

图6  include目录文件移植

7.将标准固件文件目录Project/STM32F4xx_StdPeriph_Templates目录下的main.c、stm32f4xx_conf.h、stm32f4xx_it.h、stm32f4xx_it.c、system_stm32f4xx.c拷贝移植到project_m4/user文件夹下,其中main.c文件是STM32工程文件的主函数程序,移植后user文件夹目录如下图所示:

图7 usb目录文件移植

8.将标准固件库文件目录Project/STM32F4xx_StdPeriph_Templates/TrueSTUDIO/STM32F40_41xxx文件夹下的STM32F417IG_FLASH.ld拷贝到projec_m4的应用软件工程目录下,并重命名为stm32_flash.ld。

图8 project_m4目录下的stm32_flash.ld文件

9.至此完成了应用软件工程的搭建,下节将介绍应用软件修改、Makefile及编译脚本编写。

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

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

相关文章

不妙,2023年浙大mpa的复试形势比想象的更严峻,又在突突突涨……

都知道浙大MPA项目卷,但都没想到这么卷! 很多浙大mpa的考生在一开始的备考初期因为对该项目的认知了解不够清晰从而会导致联考过后功亏一篑。因为是在职类考生群体,因此不少考生会认为以自己的实力和基础应该能够鱼跃龙门榜上有名&#xff0c…

视频会议系统异常中断故障分析案例

1. 背景 某电气化局的用户反馈,近期视频系统在使用过程中出现频繁中断的情况,这种情况影响到用户的视频体验和工作效率。 针对此问题,我们将NetInside流量分析系统部署到电气化局机房,使用流量分析系统提供实时和历史原始流量。…

【Linux】P1 Linux 基础命令(1)

Linux 基础命令(1)Linux 目录结构Linux 命令ls 展示命令cd 目录切换命令pwd 查看当前工作目录mkdir 创建新的文件夹其他补充知识前言 本节内容:Linux 基本命令(1)。 下节内容:Linux 基本命令(2&…

二进制与十进制转换(包括整数和小数的转换)

二进制与十进制转换(包括整数和小数的转换) 二进制转十进制 首先要先了解二进制的含义,与十进制相似,二进制代表的是以2的次幂在每一位上的0/1表示,平时我们经常接触的都是整数的二进制,是从2的0次幂开始的…

从WebRtc学习RTP协议

1、TCP为何不适用于实时音视频可靠性是以牺牲实时性为代价的。按照TCP原理,当出现极端网络情况时,理论上每个包的时延可达到秒级以上,而且这种时延是不断叠加的。这对于音视频实时通信来说是不可接受的。TCP为了实现数据传输的可靠性&#xf…

【2223sW2】LOG1

写在前面 好好学习,走出宿舍,走向毕设! 一些心路历程记录,很少有代码出现 因为鬼知道哪条代码到时候变成毕设的一部分了咧,还是不要给自己的查重挖坑罢了 23.2.27 文件批量重命名 为了给学姐先整出来一批训练数据&…

Element中树形控件在项目中的实际应用

文章目录1、使用目的2、官网组件3、组合使用组件案例4、在项目中实际应用4.1 组合组件的使用4.1.2 代码落地4.1.3 后台接口数据4.1.4 实际效果官网连接直达&#xff1a;Tree树形控件的使用 1、使用目的 用清晰的层级结构展示信息&#xff0c;可展开或折叠。 2、官网组件 <…

【YoloV5】Deepin系统使用Gpu进行YoloV5训练

Deepin系统使用Gpu进行YoloV5训练&#xff0c;显卡RTX30701.配置环境1.1英伟达的驱动安装2. pytorch安装2.1pytorch环境配置2.2 验证Gpu3.使用Yolo5进行Gpu模型训练3.1 准备需要训练的数据集和标注数据集1.配置环境 1.1英伟达的驱动安装 查看当前自己系统的显卡信息 lspci |…

paddleInfer

一、安装GCC 5.4https://blog.csdn.net/weixin_64064486/article/details/123940266二、安装pycudahttps://blog.csdn.net/zong596568821xp/article/details/86077553/更改的地方是&#xff0c;安装pycuda用的是&#xff1a;pip install pycuda三、安装TensorRT 1、TensorRT下载…

DataGear 制作基于Vue前端框架渲染的数据可视化看板

DataGear 在4.3.0版本新增了dg-dashboard-code特性&#xff0c;并在4.4.0版本进行了改进和增强&#xff0c;结合看板API&#xff0c;可以很方便地制作完全由Vue、React等前端框架渲染的数据可视化看板。 本文基于Vue2、Element UI前端框架的<el-container>、<el-head…

对“车辆销售配置器”的认识与理解

概述 中国汽车市场转为存量阶段后&#xff0c;各车企开始从”以产品为中心“转型到”以客户为中心“&#xff0c;产品的个性化配置需求日益丰富。随着竞争的加剧&#xff0c;车企们不仅要提供出色的产品&#xff0c;而且需要提供更加个性化的产品配置和服务&#xff0c;例如&am…

【Hello Linux】程序地址空间

作者&#xff1a;小萌新 专栏&#xff1a;Linux 作者简介&#xff1a;大二学生 希望能和大家一起进步&#xff01; 本篇博客简介&#xff1a;简单介绍下进程地址空间 程序地址空间程序地址空间语言中的程序地址空间矛盾系统中的程序地址空间为什么要有进程地址空间思维导图总结…

Java经典面试题——String、StringBuffer、StringBuilder有什么区别?

典型回答 String 是Java 语言非常基础和重要的类&#xff0c;提供了构造和管理字符串的各种基本逻辑。它是典型的 Immutable 类&#xff0c;被声明成为 final class &#xff0c;所有属性也都是 final 的。也由于它的不可变性&#xff0c;类似拼接、裁剪字符串等动作&#xff…

机器学习100天(三十五):035 贝叶斯公式

《机器学习100天》完整目录:目录 机器学习100天,今天讲的是:贝叶斯公式! 好了,上一节介绍完先验概率、后验概率、联合概率、全概率后,我们来看这样一个问题:如果我现在挑到了一个瓜蒂脱落的瓜,则该瓜是好瓜的概率多大? 显然,这是一个计算后验概率的问题,根据我们之…

基于DSP的三相开关霍尔永磁同步电机控制

0 前言 本文本应该是一篇 记录我使用DSP28377D控制一个基于三相开关霍尔传感器的高速永磁同步电机全过程的长文&#xff0c;但大部分零散的知识点我都已经写成单独的博客了&#xff0c;所以本文更像是一个知识框架的梳理。本文最终目的是实现高速PMSM的电流-速度双闭环&#x…

[LK光流法,disflow using Dense Inverse Search, VariationalRefinement变分优化 原理和代码]

文章目录1.Fast Optical Flow using Dense Inverse Search1.1 W的含义&#xff1a;1.2 LK光流模型1.3 LK光流模型求解&#xff08;不含迭代&#xff09;1.4 LK光流模型迭代求解1.5 dis_flow方法中的 LK光流模型1.6 disflow代码分析2.0 disflow中的VariationalRefinement方法2.0…

大佬们都说tcp有黏包的问题,tcp却说:我冤枉!

相关参考添加链接描述 相关参考 什么是tcp TCP,全称Transmission Control Protocol&#xff0c;是一种传输控制协议&#xff0c;TCP协议也是计算机网络中非常复杂的一个协议 tcp的特点 tcp是面向连接的协议tcp是端到端的链接tcp提供可靠的传输服务tcp协议提供双工通信tcp是…

【计算机考研408】快速排序的趟数问题 + PAT 甲级 7-2 The Second Run of Quicksort

前言 该题还未加入PAT甲级题库中&#xff0c;可以通过购买2022年秋季甲级考试进行答题&#xff0c;纯考研题改编 快速排序 常考的知识点 快速排序是基于分治法快速排序是所有内部排序算法中平均性能最优的排序算法快速排序是一种不稳定的排序算法快速排序算法中&#xff0c…

异步Buck和同步Buck的特点

1 介绍 随着时代的发展&#xff0c;工业&#xff0c;车载&#xff0c;通信&#xff0c;消费类等产品都提出了小型化&#xff0c;智能化的需求。相应的&#xff0c;对于这些系统中的电源模块提出了小型化的要求。目前&#xff0c;市场上依然存在很多异步Buck电源管理芯片使用的场…

atomic 原子操作

atomic 原子操作前言atomic_t定义内核中的实现armv7的实现armv8的实现Exclusive monitor实现所处的位置External exclusive monitorAtomic指令的支持QA前言 修改一个变量会经过读、修改、写的操作序列。但有时该操作序列在执行完毕前会被其他任务或事件打断。 比如在多CPU体系…