STM32 CubeMX产生的程序架构

使用STM32CubeMX产生启动相关代码,配置各种外设。在后续程序开发过程中,有可能使用STM32CubeMX逐步产生使用的代码,为了将其产生的代码和我们程序隔离,一种可行的程序架构如下:

在此架构中,STM32CubeMX产生的相关代码作为整个架构的HWD层,和我们的程序分开放到不同的目录,易于区分。

HWD层依赖HAL层,功能模块和业务逻辑依赖HAL层。

HWD层依赖HAL层,在STM32CubeMX产生的代码USER处添加HAL层内的函数的依赖。

这样,当后续使用STM32CubeMX再次产生代码时,原USER处添加的代码不会发生变化。

HWD依赖HAL层,这种依赖在实现时使用HWD include HAL层内对应头文件。

为了在没有HWD层时,程序编译/链接/仿真不出问题,在HAL层内,使用弱函数(内部可以先为空,保证编译/链接正确),需要时在HWD层内实现同名函数功能

RTOS层在层级上位于HAL层上,具体是否调用HAL层接口,依赖具体实现。

文件目录结构参考如下:

STM32CubeMX_Project为CubeMX产生的代码,在USER处加入了依赖代码。

Source为除HWD外的程序。

Output为编译出的目标文件。

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

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

相关文章

还在用if-else? 用策略模式干掉它

策略模式(Strategy Pattern) 策略模式是一种行为设计模式,它将一组行为转换为对象, 并使其在原始上下文对象内部能够相互替换。大白话就是比如我写一个登录业务,目前需要满足能通过系统内、微信等平台进行登录&#x…

前端页面锚点跳转

一,页面 二,获取需要跳转的标签class或者id 三,调用跳转方法 如果你的标签有唯一的ID,那么用getElementById方法更好 点击即可跳转锚点

在 Walrus 上轻松集成 OpenTofu

OpenTofu 是什么? OpenTofu 是一个开源的基础设施即代码(IaC)框架,被提出作为 Terraform 的替代方案,并由 Linux 基金会管理。OpenTofu 的问世为应对 HashiCorp 将 Terraform 的许可证从 Mozilla Public License v2.0…

内网穿透的应用-使用Docker本地部署可编辑导航页结合内网穿透实现远程访问

文章目录 1. 使用Docker搜索镜像2. 下载镜像3. 查看镜像4. 启动容器5. 浏览器访问6. 远程访问6.1 内网穿透工具安装6.2 创建远程连接公网地址6.3 使用固定二级子域名地址远程访问 今天和大家分享如何使用Docker本地部署一个开源的简约风格网址导航页,支持五种搜索引…

GeoServe本地部署结合内网穿透实现远程访问Web管理界面

文章目录 前言1.安装GeoServer2. windows 安装 cpolar3. 创建公网访问地址4. 公网访问Geo Servcer服务5. 固定公网HTTP地址 前言 GeoServer是OGC Web服务器规范的J2EE实现,利用GeoServer可以方便地发布地图数据,允许用户对要素数据进行更新、删除、插入…

域名流量被劫持怎么办?如何避免域名流量劫持?

随着互联网不断发展,流量成为线上世界的巨大财富。然而一种叫做域名流量劫持的网络攻击,将会在不经授权的情况下控制或重定向一个域名的DNS记录,导致用户在访问一个网站时,被引导到另一个不相关的网站,从而劫持走原网站…

查询slurm集群各个节点的运行情况

引言 slurm系统是一个集群,它原生的使用方式可以参考之前写的《slurm初识》和《slurm快速入门》。有时候我们想知道我们能申请哪些节点,以及各个节点的使用情况。 原生的指令大概有这两个,一个是使用squeue的方式列举出当前的工作列表。 …

Windows通过注册表修改socket缓冲区大小的方法

在 Windows 通过修改注册表来更改 UDP 缓冲区的大小,按照以下步骤进行操作: 打开注册表编辑器:按下 Win R 键,然后输入 "regedit" 并点击 "确定"。 导航到以下路径:HKEY_LOCAL_MACHINE\System\C…

每日汇评:今天市场重点都转移到美国非农就业数据

周四美元走势摇摆不定; 到目前为止,欧元兑美元仍受到1.0900区域的支撑; 市场的下一个风险事件是美国就业数据的发布; 欧元兑美元在周四成功恢复了上涨动力,并短暂重返1.0970区间,在连续四个交易日的空头主导…

微服务应用可观测性解决方案介绍

目录 一、可观测性出现背景 二、什么是可观测性(Observability) 2.1 可观测性的不同解析 2.1.1 百度维基解析 2.1.2 IBM解析 2.1.3 CNCF(云原生计算机基金会)组织解析 2.1.4 我的个人理解 2.2 可观测性和监控的区别与联系 …

C++完成使用map Update数据 非二进制

1、在LXMysql.h和LXMysql.cpp分别定义和编写关于pin语句的代码 //获取更新数据的sql语句 where语句中用户要包含where 更新std::string GetUpdatesql(XDATA kv, std::string table, std::string where); std::string LXMysql::GetUpdatesql(XDATA kv, std::string table, std…

OpenHarmony内存泄漏指南 - 解决问题(综合)

本系列文章旨在提供定位与解决OpenHarmony应用与子系统内存泄露的常见手段与思路,将会分成几个部分来讲解。首先我们需要掌握发现内存泄漏问题的工具与方法,以及判断是否可能存在泄漏。接着需要掌握定位泄漏问题的工具,以及抓取trace、分析tr…

我们正迎来计算基因的巨大变革,即将到来的不仅是量子技术——

计算机是围绕逻辑构建的:利用电路执行数学运算。逻辑是围绕诸如加法器——这种将两个数字相加的基本电路,而构建的。 今天的微处理器和计算机历史初期的所有微处理器都是如此。这可以追溯到算盘,在某些基本层面上,这和你闪亮的游戏…

前端根据URL地址实现下载(txt,图片,word,xlsx,ppt)

前端根据URL地址实现下载(txt,图片,word,xlsx,ppt) 一、对于txt,图片类的二、对于word,xlsx,ppt类的1.a标签可以实现下载2. window.open() 一、对于txt,图片类…

软件推荐:MobaXterm

介绍 MobaXterm 是远程计算的终极工具箱,它提供了几乎所有重要的远程网络工具,SSH、RDP、FTP、VNC,只要你能想到的,都可以在MobaXterm中找到。除了海量协议外,MobaXterm 还支持安装额外的插件来扩展其功能。 软件官网…

技术查漏补缺(1)Logback

一、下定义&#xff1a;Logback是一个开源的日志组件 二、Logback的maven <!--这个依赖直接包含了 logback-core 以及 slf4j-api的依赖--> <dependency><groupId>ch.qos.logback</groupId><artifactId>logback-classic</artifactId><v…

MySQL-数据库概述

数据库相关概念&#xff1a; 数据库(DateBase)简称DB,就是一个存储数据的仓库&#xff0c;数据有组织的进行存储。 数据库分为关系型数据库简称RDBMS和非关系型数据库 关系型数据库简称RDBMS:建立在关系模型的基础上&#xff0c;由多张相互连接的二维表组成的数据库.简单来说…

D6208双向直流马达驱动芯片 用于IPC产品,可兼容BA6208,噪声低 ,工作电源电压范围宽。

D6208 是一块单片双向马达驱动电路&#xff0c;它使用TTL电平的逻辑信号就能控制卡式录音机和其它电子设备中的双向马达。该电路由一个逻辑部分和一个功率输出部分组成。逻辑部分控制马达正、反转向及制动&#xff0c;功率输出部分根据逻辑控制能提供100mA&#xff08;典型值&a…

处理数组,将一维转二维

实现金刚区可滑动效果 由于后端返回的数据是 不符合项目需求&#xff0c;所以需要将它转为为二位数组 // 转为二维数组convertOneDimArray() {let arr [integral, kefu-ermai, coupon, gift, scan, pause-circle, wifi, email, integral,kefu-ermai, coupon, gift, scan, pau…

前端知识体系思维导图

绝大部分分类方法、专业术语&#xff0c;出自专业书籍&#xff0c;如《JavaScript 高级程序设计&#xff08;第 4 版&#xff09;》、《JavaScript 权威指南&#xff08;第 7 版&#xff09;》《CSS 权威指南&#xff08;第四版&#xff09;》、《HTML5 权威指南》、《计算机网…