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

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

  • 工程相关软件版本介绍
  • 1、新建基于STM32CubeIDE的STM32工程
  • 2、删除无用文件/文件夹
  • 3、拷贝CubeIDE工程文件至Keil工程目录下
    • 3.1从CubeIDE工作区中移除对应工程
    • 3.2 将CubeIDE相关文件拷贝至Keil工程文件目录下
    • 3.3导入CubeIDE工程
  • 4、配置STM32CubeIDE
    • 4.1 配置文件编码
    • 4.2 配置编译所需的源文件与头文件路径,以及宏定义
      • 4.2.1设置CubeIDE工程编译所需源文件
      • 4.2.2设置CubeIDE工程编译所需头文件
      • 4.2.3 设置CubeIDE工程编译所需宏定义
    • 4.3编译配置组
  • 5.验证编译
  • 6.重定义printf问题
  • 7.一些编译配置
    • 7.1浮点数打印配置
    • 7.2输出hex、bin文件
    • 7.3配置输出文件名称

工程相关软件版本介绍

STM32CubeIDE版本:STM32CubeIDE 1.11.2

Keil版本:V5.34.0.0

单片机型号:STM32H750VBT6

1、新建基于STM32CubeIDE的STM32工程

File → New → STM32 Project

Keil工程迁移至STM32CubeIDE,Keil转cubeide,超详细图文教程_第1张图片
Keil工程迁移至STM32CubeIDE,Keil转cubeide,超详细图文教程_第2张图片
Keil工程迁移至STM32CubeIDE,Keil转cubeide,超详细图文教程_第3张图片

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

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

保留以下文件夹
Includes:CubeIDE自动生成的文件夹
Startup:CubeIDE版本对应的单片机启动文件.s在这里,保留
xxx.ld:编译链接用脚本文件,需保留
Keil工程迁移至STM32CubeIDE,Keil转cubeide,超详细图文教程_第4张图片
Keil工程迁移至STM32CubeIDE,Keil转cubeide,超详细图文教程_第5张图片

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

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

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


Keil工程迁移至STM32CubeIDE,Keil转cubeide,超详细图文教程_第6张图片

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

如下图所示
Keil工程迁移至STM32CubeIDE,Keil转cubeide,超详细图文教程_第7张图片
Keil工程迁移至STM32CubeIDE,Keil转cubeide,超详细图文教程_第8张图片

3.3导入CubeIDE工程

File → Open Projects from File System…
Keil工程迁移至STM32CubeIDE,Keil转cubeide,超详细图文教程_第9张图片

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

4、配置STM32CubeIDE

4.1 配置文件编码

若源文件为UTF-8编码,无需更改
Keil工程迁移至STM32CubeIDE,Keil转cubeide,超详细图文教程_第10张图片

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

拿我自己所用的Keil工程举例,在CubeIDE中文件夹结构如下图所示。
下图中的六个文件夹待会要添加进工程源文件路径中。
Keil工程迁移至STM32CubeIDE,Keil转cubeide,超详细图文教程_第11张图片

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

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

右击工程文件 → Properties
或选中工程文件 → Project → Properties
Keil工程迁移至STM32CubeIDE,Keil转cubeide,超详细图文教程_第12张图片

C/C++ → C/C++ General → Paths and Symbols → Source Location
在此添加项目编译所需的源文件路径
Keil工程迁移至STM32CubeIDE,Keil转cubeide,超详细图文教程_第13张图片

将所有需要参与编译的.C文件路径添加进来,目标文件夹与工程文件在同一目录下,会自动转换成相对路径。
Keil工程迁移至STM32CubeIDE,Keil转cubeide,超详细图文教程_第14张图片

Keil工程迁移至STM32CubeIDE,Keil转cubeide,超详细图文教程_第15张图片

注:CubeIDE会识别所设定路径下的根目录与子目录文件,参与到编译中。
若目标目录下存在需要排除的文件或文件夹,
可在项目浏览器内右击对应文件或文件夹,Resource Configurations → Exclude from Build
根据实际需要勾选对应的编译配置,即可在排除对应文件或文件夹。
Keil工程迁移至STM32CubeIDE,Keil转cubeide,超详细图文教程_第16张图片
文件或文件夹被排除后在项目浏览器内有明显的显示变化。
Keil工程迁移至STM32CubeIDE,Keil转cubeide,超详细图文教程_第17张图片

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

右击工程文件 → Properties
或选中工程文件 → Project → Properties
C/C++ → C/C++ General → Paths and Symbols → Include
在此添加项目编译所需的头文件路径,与Keil配置过程一样,不再赘述。
Keil工程迁移至STM32CubeIDE,Keil转cubeide,超详细图文教程_第18张图片

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

找到Keil源工程所配置的全局宏定义,如下图中的USE_HAL_DRIVER,STM32H750xx
Keil工程迁移至STM32CubeIDE,Keil转cubeide,超详细图文教程_第19张图片

右击工程文件 → Properties
或选中工程文件 → Project → Properties
C/C++ → C/C++ General → Paths and Symbols → #symbols
Keil工程迁移至STM32CubeIDE,Keil转cubeide,超详细图文教程_第20张图片

4.3编译配置组

CubeIDE提供了类似Keil的多Target配置功能,
通过下图中的Manage Configurations进行配置,
每组配置的源文件与头文件路径配置均独立,配置较为简单。
Keil工程迁移至STM32CubeIDE,Keil转cubeide,超详细图文教程_第21张图片

5.验证编译

Keil工程迁移至STM32CubeIDE,Keil转cubeide,超详细图文教程_第22张图片

编译成功,收尾啦!

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浮点数打印配置

Keil工程迁移至STM32CubeIDE,Keil转cubeide,超详细图文教程_第23张图片

7.2输出hex、bin文件

Keil工程迁移至STM32CubeIDE,Keil转cubeide,超详细图文教程_第24张图片

7.3配置输出文件名称

Keil工程迁移至STM32CubeIDE,Keil转cubeide,超详细图文教程_第25张图片

你可能感兴趣的:(STM32,stm32,单片机,嵌入式硬件)