草庐IT

Keil工程迁移至STM32CubeIDE,Keil转cubeide,超详细图文教程

大家伙好 2024-06-14 原文

Keil工程迁移至STM32CubeIDE,Keil转cubeide,超详细图文教程!

工程相关软件版本介绍

STM32CubeIDE版本:STM32CubeIDE 1.11.2

Keil版本:V5.34.0.0

单片机型号:STM32H750VBT6

1、新建基于STM32CubeIDE的STM32工程

File → New → STM32 Project



2、删除无用文件/文件夹

删除Inc、Src文件夹
Inc:新建工程产生的头文件文件夹
Src:新建工程产生的源文件文件夹,main.c文件在这里

保留以下文件夹
Includes:CubeIDE自动生成的文件夹
Startup:CubeIDE版本对应的单片机启动文件.s在这里,保留
xxx.ld:编译链接用脚本文件,需保留

3、拷贝CubeIDE工程文件至Keil工程目录下

3.1从CubeIDE工作区中移除对应工程

注意:
不要勾选Delete project contents on disk (cannot be undone)
否则工程文件会从硬盘上被删除,无法撤销。


3.2 将CubeIDE相关文件拷贝至Keil工程文件目录下

如下图所示

3.3导入CubeIDE工程

File → Open Projects from File System…

直接双击.cproject或.project也可导入工程

4、配置STM32CubeIDE

4.1 配置文件编码

若源文件为UTF-8编码,无需更改

4.2 配置编译所需的源文件与头文件路径,以及宏定义

拿我自己所用的Keil工程举例,在CubeIDE中文件夹结构如下图所示。
下图中的六个文件夹待会要添加进工程源文件路径中。

原厂固件库:CMSIS、HAL库或标准库
自建代码:自建函数、外设驱动等
CubeIde对应单片机启动文件:与Keil所使用的启动文件.s文件不一样,需要区分

4.2.1设置CubeIDE工程编译所需源文件

右击工程文件 → Properties
或选中工程文件 → Project → Properties

C/C++ → C/C++ General → Paths and Symbols → Source Location
在此添加项目编译所需的源文件路径

将所有需要参与编译的.C文件路径添加进来,目标文件夹与工程文件在同一目录下,会自动转换成相对路径。

注:CubeIDE会识别所设定路径下的根目录与子目录文件,参与到编译中。
若目标目录下存在需要排除的文件或文件夹,
可在项目浏览器内右击对应文件或文件夹,Resource Configurations → Exclude from Build
根据实际需要勾选对应的编译配置,即可在排除对应文件或文件夹。

文件或文件夹被排除后在项目浏览器内有明显的显示变化。

4.2.2设置CubeIDE工程编译所需头文件

右击工程文件 → Properties
或选中工程文件 → Project → Properties
C/C++ → C/C++ General → Paths and Symbols → Include
在此添加项目编译所需的头文件路径,与Keil配置过程一样,不再赘述。

4.2.3 设置CubeIDE工程编译所需宏定义

找到Keil源工程所配置的全局宏定义,如下图中的USE_HAL_DRIVER,STM32H750xx

右击工程文件 → Properties
或选中工程文件 → Project → Properties
C/C++ → C/C++ General → Paths and Symbols → #symbols

4.3编译配置组

CubeIDE提供了类似Keil的多Target配置功能,
通过下图中的Manage Configurations进行配置,
每组配置的源文件与头文件路径配置均独立,配置较为简单。

5.验证编译

编译成功,收尾啦!

6.重定义printf问题

参考https://zhuanlan.zhihu.com/p/114973609

源代码:

#ifdef __GNUC__
int __io_putchar(int ch)
{
	USART_Transmit((uint8_t)ch); // 发送一个字节数据到串口
	return ch;
}

__attribute__((weak)) int _write(int file, char *ptr, int len)
{
	int DataIdx;
	for (DataIdx = 0; DataIdx < len; DataIdx++)
	{
	__io_putchar(*ptr++);
	}

	return len;
}
#else
///重定向c库函数printf到串口,重定向后可使用printf函数
int fputc(int ch, FILE *f)
{
   USART_Transmit((uint8_t)ch); // 发送一个字节数据到串口
	return (ch);
}
#endif

7.一些编译配置

7.1浮点数打印配置

7.2输出hex、bin文件

7.3配置输出文件名称

有关Keil工程迁移至STM32CubeIDE,Keil转cubeide,超详细图文教程的更多相关文章

  1. ruby-on-rails - Ruby on Rails 迁移,将表更改为 MyISAM - 2

    如何正确创建Rails迁移,以便将表更改为MySQL中的MyISAM?目前是InnoDB。运行原始执行语句会更改表,但它不会更新db/schema.rb,因此当在测试环境中重新创建表时,它会返回到InnoDB并且我的全文搜索失败。我如何着手更改/添加迁移,以便将现有表修改为MyISAM并更新schema.rb,以便我的数据库和相应的测试数据库得到相应更新? 最佳答案 我没有找到执行此操作的好方法。您可以像有人建议的那样更改您的schema.rb,然后运行:rakedb:schema:load,但是,这将覆盖您的数据。我的做法是(假设

  2. ruby - 使用 Vim Rails,您可以创建一个新的迁移文件并一次性打开它吗? - 2

    使用带有Rails插件的vim,您可以创建一个迁移文件,然后一次性打开该文件吗?textmate也可以这样吗? 最佳答案 你可以使用rails.vim然后做类似的事情::Rgeneratemigratonadd_foo_to_bar插件将打开迁移生成的文件,这正是您想要的。我不能代表textmate。 关于ruby-使用VimRails,您可以创建一个新的迁移文件并一次性打开它吗?,我们在StackOverflow上找到一个类似的问题: https://sta

  3. postman接口测试工具-基础使用教程 - 2

    1.postman介绍Postman一款非常流行的API调试工具。其实,开发人员用的更多。因为测试人员做接口测试会有更多选择,例如Jmeter、soapUI等。不过,对于开发过程中去调试接口,Postman确实足够的简单方便,而且功能强大。2.下载安装官网地址:https://www.postman.com/下载完成后双击安装吧,安装过程极其简单,无需任何操作3.使用教程这里以百度为例,工具使用简单,填写URL地址即可发送请求,在下方查看响应结果和响应状态码常用方法都有支持请求方法:getpostputdeleteGet、Post、Put与Delete的作用get:请求方法一般是用于数据查询,

  4. STM32读取串口传感器数据(颗粒物传感器,主动上传) - 2

    文章目录1.开发板选择*用到的资源2.串口通信(个人理解)3.代码分析(注释比较详细)1.主函数2.串口1配置3.串口2配置以及中断函数4.注意问题5.源码链接1.开发板选择我用的是STM32F103RCT6的板子,不过代码大概在F103系列的板子上都可以运行,我试过在野火103的霸道板上也可以,主要看一下串口对应的引脚一不一样就行了,不一样的就更改一下。*用到的资源keil5软件这里用到了两个串口资源,采集数据一个,串口通信一个,板子对应引脚如下:串口1,TX:PA9,RX:PA10串口2,TX:PA2,RX:PA32.串口通信(个人理解)我就从串口采集传感器数据这个过程说一下我自己的理解,

  5. 在VMware16虚拟机安装Ubuntu详细教程 - 2

    在VMware16.2.4安装Ubuntu一、安装VMware1.打开VMwareWorkstationPro官网,点击即可进入。2.进入后向下滑动找到Workstation16ProforWindows,点击立即下载。3.下载完成,文件大小615MB,如下图:4.鼠标右击,以管理员身份运行。5.点击下一步6.勾选条款,点击下一步7.先勾选,再点击下一步8.去掉勾选,点击下一步9.点击下一步10.点击安装11.点击许可证12.在百度上搜索VM16许可证,复制填入,然后点击输入即可,亲测有效。13.点击完成14.重启系统,点击是15.双击VMwareWorkstationPro图标,进入虚拟机主

  6. hadoop安装之保姆级教程(二)之YARN的配置 - 2

    1.1.1 YARN的介绍 为克服Hadoop1.0中HDFS和MapReduce存在的各种问题⽽提出的,针对Hadoop1.0中的MapReduce在扩展性和多框架⽀持⽅⾯的不⾜,提出了全新的资源管理框架YARN. ApacheYARN(YetanotherResourceNegotiator的缩写)是Hadoop集群的资源管理系统,负责为计算程序提供服务器计算资源,相当于⼀个分布式的操作系统平台,⽽MapReduce等计算程序则相当于运⾏于操作系统之上的应⽤程序。 YARN被引⼊Hadoop2,最初是为了改善MapReduce的实现,但是因为具有⾜够的通⽤性,同样可以⽀持其他的分布式计算模

  7. ruby-on-rails - 在现有数据库上进行 Rails 迁移 - 2

    我正在创建一个新的Rails3.1应用程序。我希望这个新应用程序重用现有数据库(由以前的Rails2应用程序创建)。我创建了新的应用程序定义模型,它重用了数据库中的一些现有数据。在开发和测试阶段,一切正常,因为它在干净的表数据库上运行,但是当尝试部署到生产环境时,我收到如下消息:PGError:ERROR:column"email"ofrelation"users"alreadyexists***[err::localhost]:ALTERTABLE"users"ADDCOLUMN"email"charactervarying(255)DEFAULT''NOTNULL但是我在迁移中有这

  8. ruby - 在 RUBY 上的 PADRINO 框架上使用 RSPEC 进行测试的教程 - 2

    我是Ruby新手,并被要求在我们的新项目中使用它。我们还被要求使用Padrino(Sinatra)作为后端/框架。我们被要求使用Rspec进行测试。我一直在寻找可以指导在Padrino上使用RspecforRuby的教程。我得到的主要是引用RoR。但是,我需要RubyonPadrino。请在任何入门/指南/引用/讨论等方面指导我。如有不妥之处请指正。可能是我没有针对我的问题搜索正确的词/短语组合。我正在使用Ruby1.9.3和Padrinov.0.10.6。注意:我还提到了SOquestion,但它没有帮助。 最佳答案 我没用过Pa

  9. ruby-on-rails - Rails 迁移中的 PostgreSQL 点类型 - 2

    我想使用PostgreSQL中的point类型。我已经完成了:railsgmodelTestpoint:point最终的迁移是:classCreateTests当我运行时:rakedb:migrate结果是:==CreateTests:migrating====================================================--create_table(:tests)rakeaborted!Anerrorhasoccurred,thisandalllatermigrationscanceled:undefinedmethod`point'for#/hom

  10. ruby-on-rails - Rails 3 : belongs_to, has_one 和迁移 - 2

    我是Rails的新手,我是从Django背景开始接触它的。我已经接受了这样一个事实,即模型和数据库模式在Rails和在线Django中是分开的。但是,我仍在努力处理迁移。我的问题很简单-如何使用迁移向模型添加关系?例如,我现在有Artist和Song作为ActiveRecord::Base子类的空模型,没有任何关系。我需要开始做这件事:classArtist但是我如何使用railsgmigrate更改架构以反射(reflect)这一点?我正在使用Rails3.1.3。 最佳答案 现在,在Rails4中,您可以:classAddPro

随机推荐