当前位置: 首页 > news >正文

STM32转AT32代码转换

1. 引言

        在嵌入式开发中,我们经常会遇到更换单片机芯片的事情,若芯片是同一厂家的还好说,若是不同厂家的则需要重新写,重新调,重新去学习其底层驱动程序,比较费时费力。如:ST32转AT32、ST32转GD32等等。本文主要介绍一款ST32转AT32的工具AT32 Smart Code Transfer.exe,可以快速实现芯片的更换,提高开发效率。

1.1.软件功能

        本软件可查询与 STM32F10x BSP 标准库中各种名称相对应的 AT32F4xx BSP 标准库中的各种名称。包括 ST 与 AT 的 BSP 标准库中的宏定义、函数名称以及参数、结构体名称、结构体参数等内容。可将基于 STM32F10x BSP 标准库开发的应用程序转化为基于 AT32F4xx BSP 标准库开发的应用程序。

1.2.环境要求

软件要求

  • 需要 Windows XP、Windows 7 及以上操作系统支持。
  • 需要.net framework 4.0 的支持。对于部分未支持.net framework 4.0 的操作系统,需安装.net

framework4.0。

硬件要求

  • PC/AT 兼容机,Pentium 或更高 CPU。
  • XVGA(1024*768)颜色显示器。
  • 至少 512M RAM。
  • 至少 20M 磁盘空间

2. 功能介绍

        在这个章节,将介绍工具的基本操作,主界面如下图所示:

b8aa98f57a336a716157c4965ed6440f.jpeg

请选择语言: 支持简体中文和 English。

请选择目标 MCU: 选择支持的 AT32 系列 MCU。 支持 AT32 MCU 如下:

  • AT32F403 系列
  • AT32F413 系列
  • AT32F415 系列
  • AT32F403A 系列
  • AT32F407 系列

2.1.“查询”功能

        查询功能提供“ST 名称”与“AT 名称”之间的互相查询。包括 ST 与 AT 的 BSP 标准库中的宏定义、函数名称以及参数、结构体名称、结构体参数等等内容。如图所示:

eea9f7528ab3e684dd9ae9e2c711a008.jpeg

ST 名称:

        即在 STM32F10x BSP 标准库中的名称。包括宏定义、函数名称以及参数、结构体名称、结构体参数等内容。提供输入时自动检索功能,用户可从检索列表中选择需要查询的内容,如图所示:

10a035ce1af5bfd83bce21fb6e4910cb.jpeg

  • 预先输入 ST 的名称,查询 AT 的名称。

AT 名称:

        即在 AT32F4xx BSP 标准库中的名称。包括宏定义、函数名称以及参数、结构体名称、结构体参数等内容。提供输入时自动检索功能,用户可从检索列表中选择需要查询的内容,如图所示:

310042fc1d86ce49342bca8ae97a58b6.jpeg

  • 预先输入 AT 的名称,查询 ST 的名称

2.2. “转换”功能

        提供将基于 STM32F10x BSP 标准库开发的应用程序转化为基于 AT32F4xx BSP 标准库开发的应用程序,如图所示:

25c40d199a3941d53375aceeef728d16.jpeg转换前文件目录:

即基于STM32F10x BSP标准库开发的应用程序工程所在目录。

转换后文件目录:

即转换后基于AT32F4xx BSP标准库开发的应用程序工程所在目录。

(此目录需新建一空目录,避免与目录下其他文件混淆)

  • 开始转换:

点此按钮即开始转换过程。

  • 取消:

取消转换过程。

2.2.1 转换过程

转换过程主要分为四个步骤:

  • 文件拷贝

将“转换前文件目录”下的所有文件拷贝到“转换后文件目录”中。

  • 将ST BSP标准库文件替换为AT32 BSP标准库文件。

在这个过程中,会将“转换后文件目录”下所有ST BSP标准库文件替换为AT32 BSP标准库文件。

例如将" stm32f10x_adc.h" 替换为 " at32f4xx_adc.h"

  • 应用程序文件的解析

软件将会对“转换后文件目录”下所有文件的*.c、*.h文件进行解析(非标准库文件)。

  • 应用程序文件的转换

即将基于 STM32F10x BSP 标准库开发的应用程序转化为基于 AT32F4xx BSP 标准库开发的应用程序。

2.2.2 信息提示

        转换过程中,会将具体的转换信息进行提示,包括错误信息、转换成功信息等。如图所示:

a649696a35dea495550102d1992100c8.jpeg

        转换提示的错误信息,需用户进行手动查找,并根据提示手动修改应用程序代码。

2.3.转换注意事项

1. 本软件涉及到对文件到拷贝、替换、修改,请用户确保具有对文件进行操作的权限。例如:确保具有管理员权限;确保能对文件读取、修改、写入;确保文件是为非只读文件。

2. 本软件解析和转换最大支持5 层数据结构嵌套。

3. 本软件解析和转换最大支持10个参数的函数。

4. 本软件解析和转换最大支持3维数组。

5. 不建议多个项目工程同时转化,有可能在解析时引用关系错误。

6. 对项目文件的转换不完全。整个转换流程完成后,可能需对项目文件进行手动的修改,才能正常执行编译等。

3.总结

        该软件能够大大提高STM32和AT32之间代码转换的效率,但是在转换时需要注意内核是否相同,不能盲目转换,且不同代码可能在用户代码的部分有需要调整的内容,需要自己手动调整。转换完的工程需要在keil工程中重新选择目标芯片,并在keil配置中添加对应宏定义。

        软件下载请关注掌芯元器官方博客下载。

相关文章:

STM32转AT32代码转换

1. 引言 在嵌入式开发中,我们经常会遇到更换单片机芯片的事情,若芯片是同一厂家的还好说,若是不同厂家的则需要重新写,重新调,重新去学习其底层驱动程序,比较费时费力。如:ST32转AT32、ST32转G…...

vue中怎么覆盖 sytle中的样式

好的&#xff0c;下面是一个具体的例子&#xff0c;展示如何在 Vue 组件中覆盖样式。 示例&#xff1a;覆盖组件样式 假设我们有一个组件 MyComponent.vue&#xff0c;其中包含一些样式&#xff1a; <template><div class"my-component"><h1>标…...

php中打印函数

在PHP中&#xff0c;打印函数主要用于输出或显示数据。常用的打印函数包括&#xff1a; 1.echo- 可以输出一个或多个字符串。 echo "Hello, World!"; echo "Hello", " ", "World!"; 2.print - 功能与echo相似&#xff0c;但print只能…...

[单master节点k8s部署]23.构建EFK日志收集平台(二)

部署elasticsearch集群 已经完成的工作&#xff1a;创建存储。首先配置了nfs存储提供商&#xff08;nfs-deployment.yaml&#xff09;&#xff0c;然后通过创建存储类&#xff08;storageclass.yaml&#xff09;来将nfs服务器与存储类绑定&#xff1a; [rootmaster 31efk]# c…...

C#的属性(Property)应用说明(二)

Property的应用说明补充&#xff1a; 一.自定义逻辑&#xff1a; 可以在 get 和 set 访问器中包含自定义的逻辑。 public class Person {private string name;public string Name{get { return name; }set{if (string.IsNullOrWhiteSpace(value))throw new ArgumentException…...

VUE.js笔记

1.介绍vue Vue 是一款用于构建用户界面的 JavaScript 框架。它基于标准 HTML、CSS 和 JavaScript 构建&#xff0c;并提供了一套声明式的、组件化的编程模型&#xff0c;帮助你高效地开发用户界面。无论是简单还是复杂的界面&#xff0c;Vue 都可以胜任。 Vue 应用程序的基本…...

SpringBoot--yml配置文件的时间/大小的单位转换

原文网址&#xff1a;SpringBoot--yml配置文件的时间/大小的单位转换_IT利刃出鞘的博客-CSDN博客 简介 说明 本文介绍SpringBoot的yml&#xff08;properties&#xff09;配置文件的时间/大小的单位转换。 概述 SpringBoot可以将yml中的配置绑定到一个Java类的字段&#x…...

【算法业务】互联网风控业务中的拒绝推断场景算法应用分享(涉及半监督算法、异常检测、变分自编码、样本权重自适应调整、迁移学习等)

1. 业务目标和任务描述 该项目是很早期的一个工作&#xff0c;属于互联网信贷风控场景&#xff0c;研究并应用信贷中的拒绝推断任务&#xff0c;处理方式也许对于目前的一些业务还有参考意义&#xff0c;因此这里做下分享。拒绝推断是指在信贷业务中&#xff0c;利用已知的接受…...

Windows PowerShell相关笔记

之前我写的一篇&#xff0c;把我的PS&#xff08;power shell&#xff09;该了配置文件 pyqt5vscode 配置坑笔记_vscode使用pyqt command failed-CSDN博客 文件里写的自动加载conda #region conda initialize # !! Contents within this block are managed by conda init !!…...

力扣9.24

2207. 字符串中最多数目的子序列 给你一个下标从 0 开始的字符串 text 和另一个下标从 0 开始且长度为 2 的字符串 pattern &#xff0c;两者都只包含小写英文字母。 你可以在 text 中任意位置插入 一个 字符&#xff0c;这个插入的字符必须是 pattern[0] 或者 pattern[1] 。…...

NRF21540—低功耗蓝牙,蓝牙mesh、Thread和Zigbee和2.4 GHz私有协议范围扩展射频前端模块

nRF21540是一款射频前端模块(FEM)&#xff0c;可用于改善短距离无线产品的传输范围和连接鲁棒性。作为一款辅助性设备&#xff0c;nRF21540是一种“即插即用型”的无线传输范围扩展器&#xff0c;可与nRF52和nRF53系列的高级多协议无线SoC搭配使用&#xff0c;所需的外部器件数…...

2024最新Linux Socket编程

我们深谙信息交流的价值&#xff0c;那网络中进程之间如何通信&#xff0c;如我们每天打开浏览器浏览网页时&#xff0c;浏览器的进程怎么与web服务器通信的&#xff1f;当你用QQ聊天时&#xff0c;QQ进程怎么与服务器或你好友所在的QQ进程通信&#xff1f;这些都得靠socket&am…...

Linux下的驱动开发二

一、IO模型 I/O 模型在操作系统中用于处理应用程序与设备驱动之间的数据传输。I/O 通信模型的核心是解决程序与设备之间如何高效、合理地进行数据通信。不同的模型通过阻塞、非阻塞、同步、异步的方式来控制数据流和处理 I/O 请求。 注&#xff1a;在驱动开发中可以定义一个全…...

【JAVA报错已解决】 Java.lang.ArrayIndexOutOfBoundsException

&#x1f3ac; 鸽芷咕&#xff1a;个人主页 &#x1f525; 个人专栏: 《C干货基地》《粉丝福利》 ⛺️生活的理想&#xff0c;就是为了理想的生活! 专栏介绍 在软件开发和日常使用中&#xff0c;BUG是不可避免的。本专栏致力于为广大开发者和技术爱好者提供一个关于BUG解决的经…...

2024 CSP 游记

J 组 初赛 早上也是五点钟就起来 打游戏 了。 考点在八达小学&#xff0c;除了感觉小、破、旧就没有其他感觉&#xff08; 我妈也是成功的给我提前一小时到达考场。 拿到试卷后&#xff0c;瞄一眼&#xff0c;咋这么简单&#xff0c;和一本通的模拟卷难度一样&#xff1f;…...

双十一有什么推荐好物?,这些你不能错过的宝藏好物推荐

随着双十一的临近&#xff0c;这场盛大的购物狂欢蓄势待发&#xff01;为了让大家不在琳琅满目的商品中徘徊&#xff0c;琪琪用心归纳了一份购物清单&#xff0c;分享那些我亲自使用过&#xff0c;觉得必须拥有的商品。 这些商品不仅价格公道&#xff0c;而且质量上乘&#xf…...

NSSCTF [HUBUCTF 2022 新生赛]simple_RE(变种base64编码)

文件无壳 拖入IDA中 shiftF12查看可疑字符串 发现两串字符串 一看这两个等于号就猜测是base64编码 进入主函数看看 这段代码是一个简单的 C 语言程序&#xff0c;主要功能是接受用户输入的字符串作为“flag”&#xff0c;然后通过对输入的字符串进行一些处理和比较来验证是否输…...

clickhouse使用extract提取分号之前,之后,中间的内容

Area&#xff1a;‘安徽;宣城;宣州’&#xff0c;要提取分号之前&#xff0c;两个分号之前&#xff0c;最后一个分号之后的内容作为省市区 这是最后得到的正确的结果&#xff0c;感谢chatgpt 刚开始本来想使用splitByString -- 宣城 select splitByString(;,安徽;宣城;宣州)[2…...

Unity3D Compute Shader同步详解

前言 在Unity3D中&#xff0c;Compute Shader是一种强大的工具&#xff0c;它利用GPU的并行处理能力来执行复杂的计算任务&#xff0c;从而减轻CPU的负担&#xff0c;提高游戏的性能和效率。然而&#xff0c;由于GPU的工作方式&#xff0c;对共享资源的访问需要特别注意同步问…...

3D模型在UI设计中应用越来越多,给UI带来了什么?

当前3D模型在UI设计中应用很多&#xff0c;极大地拓展了UI设计的发挥空间&#xff0c;也拓宽了UI的应用领域&#xff0c;本文分享下UI中引入3D模型到底能带来什么价值. 3D模型在UI设计中的应用可以给用户界面带来以下几个方面的好处&#xff1a; 更真实的视觉体验&#xff1a;…...

使用VSCode开发Django指南

使用VSCode开发Django指南 一、概述 Django 是一个高级 Python 框架&#xff0c;专为快速、安全和可扩展的 Web 开发而设计。Django 包含对 URL 路由、页面模板和数据处理的丰富支持。 本文将创建一个简单的 Django 应用&#xff0c;其中包含三个使用通用基本模板的页面。在此…...

线程同步:确保多线程程序的安全与高效!

全文目录&#xff1a; 开篇语前序前言第一部分&#xff1a;线程同步的概念与问题1.1 线程同步的概念1.2 线程同步的问题1.3 线程同步的解决方案 第二部分&#xff1a;synchronized关键字的使用2.1 使用 synchronized修饰方法2.2 使用 synchronized修饰代码块 第三部分&#xff…...

Python ROS2【机器人中间件框架】 简介

销量过万TEEIS德国护膝夏天用薄款 优惠券冠生园 百花蜂蜜428g 挤压瓶纯蜂蜜巨奇严选 鞋子除臭剂360ml 多芬身体磨砂膏280g健70%-75%酒精消毒棉片湿巾1418cm 80片/袋3袋大包清洁食品用消毒 优惠券AIMORNY52朵红玫瑰永生香皂花同城配送非鲜花七夕情人节生日礼物送女友 热卖妙洁棉…...

SiFli 52把Imagie图片,Font字体资源放在指定位置,编译成指定img.bin和font.bin的问题

分区配置 (ptab.json) img 属性介绍&#xff1a; img 属性指定分区存放的 image 名称&#xff0c;指定的 image 名称必须是当前工程生成的 binary 。 如果 binary 有多个文件&#xff0c;则以 proj_name:binary_name 格式指定文件名&#xff0c; proj_name 为工程 名&…...

Golang——6、指针和结构体

指针和结构体 1、指针1.1、指针地址和指针类型1.2、指针取值1.3、new和make 2、结构体2.1、type关键字的使用2.2、结构体的定义和初始化2.3、结构体方法和接收者2.4、给任意类型添加方法2.5、结构体的匿名字段2.6、嵌套结构体2.7、嵌套匿名结构体2.8、结构体的继承 3、结构体与…...

C# 表达式和运算符(求值顺序)

求值顺序 表达式可以由许多嵌套的子表达式构成。子表达式的求值顺序可以使表达式的最终值发生 变化。 例如&#xff0c;已知表达式3*52&#xff0c;依照子表达式的求值顺序&#xff0c;有两种可能的结果&#xff0c;如图9-3所示。 如果乘法先执行&#xff0c;结果是17。如果5…...

R 语言科研绘图第 55 期 --- 网络图-聚类

在发表科研论文的过程中&#xff0c;科研绘图是必不可少的&#xff0c;一张好看的图形会是文章很大的加分项。 为了便于使用&#xff0c;本系列文章介绍的所有绘图都已收录到了 sciRplot 项目中&#xff0c;获取方式&#xff1a; R 语言科研绘图模板 --- sciRplothttps://mp.…...

为什么要创建 Vue 实例

核心原因:Vue 需要一个「控制中心」来驱动整个应用 你可以把 Vue 实例想象成你应用的**「大脑」或「引擎」。它负责协调模板、数据、逻辑和行为,将它们变成一个活的、可交互的应用**。没有这个实例,你的代码只是一堆静态的 HTML、JavaScript 变量和函数,无法「活」起来。 …...

【大模型】RankRAG:基于大模型的上下文排序与检索增强生成的统一框架

文章目录 A 论文出处B 背景B.1 背景介绍B.2 问题提出B.3 创新点 C 模型结构C.1 指令微调阶段C.2 排名与生成的总和指令微调阶段C.3 RankRAG推理&#xff1a;检索-重排-生成 D 实验设计E 个人总结 A 论文出处 论文题目&#xff1a;RankRAG&#xff1a;Unifying Context Ranking…...

STL 2迭代器

文章目录 1.迭代器2.输入迭代器3.输出迭代器1.插入迭代器 4.前向迭代器5.双向迭代器6.随机访问迭代器7.不同容器返回的迭代器类型1.输入 / 输出迭代器2.前向迭代器3.双向迭代器4.随机访问迭代器5.特殊迭代器适配器6.为什么 unordered_set 只提供前向迭代器&#xff1f; 1.迭代器…...