概述
Keil to STM32CubeIDE标准库移植
一.新建CubeIDE空白工程
这里以个人使用的STM32F407为例,新建空白工程即不使用HAL库,上图
- 注意选择Empty,然后Finish
- 建完可看到如图工程
移植文件的时候无需再移植启动文件,目录结构发生变化时按F5刷新
二.准备移植文件
2.1 工程对比
如果不跑系统也不使用ETH,那移植起来会简单很多,但我得跑啊!
先来看看新建工程和原Keil工程文件对比,左边是新建的CubeIDE工程,右边是Keil需要移植的工程。
2.2 移植文件
若不跑系统和ETH,可直接将原工程的.c/.h文件拷贝过来,但我要跑啊
来看看我拷贝完的目录结构。
FreeRTOS和LWIP我先整个文件拷过来了,等会在进行删改。
Core:包含个人用户代码和启动文件
Drivers:包含STM32的标准外设库文件和M4内核文件
2.3 如果你不需要跑系统和ETH可以跳过此部分
2.3.1FreeRTOS修改部分
先说FreeRTOS,因为STM32CubeIDE与Keil的引入.c和.h文件 不太相同,可能有FreeRTOS的部分文件未删除,以及port.c和portmacro.h文件 需要换成GCC编译器适用文件。
下面一步一步来
这里道理上讲只能留下一个,我用的是4,你对照你的。
-
删除未使用的文件如图,灰色被杠掉的文件都是未使用的文件,留着也没用,删了吧。
-
修改port.c和portmacro.h文件,这里找到FreeRTOS源码,路径:FreeRTOSv9.0.0FreeRTOSSourceportableGCCARM_CM4F
-
将这两个文件替换掉原来MDK下的同等文件
9.0.0FreeRTOS源码
2.3.2LWIP修改部分
小编移植的是1.4.1版本的LWIP文件,其他版本可能有所差异,理论上大同小异,借鉴为主。
因为之前使用keil的时候,是需要哪个C文件就添加哪个C文件,所以lwip这部分我有很多文件未删除。导致STM32CubeIDE编译时出现很多error
- LWIP1.4.1文件内有几个ipv6的文件会与ipv4文件冲突需删除,现将截图和路径放在下面。
LWIPlwip-1.4.1portSTM32F4x7FreeRTOS
LWIPlwip-1.4.1srccoreipv6
LWIPlwip-1.4.1srccoresnmp
LWIPlwip-1.4.1srcincludeipv6
LWIPlwip-1.4.1srcnetifppp
LWIPlwip-1.4.1test
当然你也可以不删除留着,添加.c路径时除去这些要删除的一条一条加进去,或者像我一样在CubeIDE软件内将这些文件禁止编译。
三.添加全局宏定义
添加全局宏定义可以直接从keil的魔术棒里复制粘贴过来
STM32CubeIDE添加位置:
四.添加头文件路径
添加原则,工程里所有需要使用到的.h文件路径,不能只添加最外层,有个比较简单的办法,可直接对照着原keil的路径进行添加。
建议使用相对路径,以后比较好移植。
五.添加C文件路径
添加C文件路径可以直接将最外层文件添加进来,就包含了所有子文件夹的c文件,当然你也可以一条一条添加。
添加完后不要急着编译,先看看其他文件,可能会有中文乱码,可通过使用记事本打开乱码的文件,另存为,编码格式改为UTF-8
注:此方法只对于用IDE 打开是乱码,用记事本打开是中文的文件有效
六.移植注意事项
6.1 禁止编译文件
如果像我前面一样,有些文件不想删除,或者忘记删除,可通过软件设置禁止编译来代替删除功能吧!
右键点击文件/文件夹
勾选Debug和Release
6.2 printf打印改写
把 int fputc(int ch, FILE *f) 改为 int __io_putchar(int ch)
int __io_putchar(int ch)
{
while (!(USART1->SR & USART_FLAG_TXE));
USART_SendData(USART1, (unsigned char) ch);
return (ch);
}
STM32CubeIDE 使用printf打印时有个怪毛病,必须加上rn才能正常打印,如果不加上,它要等到内存满了才打印出来。
最后再说一句,如果原Keil工程没有error的情况下,在移植到CubeIDE过程中出现的error很大可能是你的路径没添加完,或是错误,导致有些文件出现冲突。本人在探索过程中看到error时会对代码进行修改,但都无济于事,所以源工程没问题的情况下不建议对代码进行修改。
最后
以上就是雪白柚子为你收集整理的Keil to STM32CubeIDE标准库移植Keil to STM32CubeIDE标准库移植一.新建CubeIDE空白工程二.准备移植文件三.添加全局宏定义四.添加头文件路径五.添加C文件路径六.移植注意事项的全部内容,希望文章能够帮你解决Keil to STM32CubeIDE标准库移植Keil to STM32CubeIDE标准库移植一.新建CubeIDE空白工程二.准备移植文件三.添加全局宏定义四.添加头文件路径五.添加C文件路径六.移植注意事项所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复