STM32从Keil MDK移植到STM32Cube IDE过程

本文详细描述了如何将正点原子STM32H743的HAL库源码从Keil移植到STM32Cube环境,包括新建工程、修改工程属性、处理编译错误和文件替换等步骤。
摘要由CSDN通过智能技术生成

将正点原子STM32H743的HAL库本版的程序源码移植到STM32Cube

该程序源码是在keil上的,程序文件如下:

一、在STM32Cube上新建STM32工程

1.1 新建工程

新建的工程文件夹如下:

2.2 拷贝文件夹

将源文件中有用的这两个文件夹复制到刚才新建的工程文件夹内:

user文件夹内的内容就是我们自己写的程序,将里面的文件统一复制替换到src文件夹下,然后删除user文件夹和多余的inc文件夹

此时工程目录如下:

二、移植工作

2.1 修改工程属性

在IDE内鼠标右键点击工程 -> 属性 -> C/C++ General -> Paths and Symbols

添加时选择workspace,使用的就会是相对路径:

includes添加完后如下:

在#Symbols宏定义预编译处加上USE_HAL_DRIVER和STM32H743xx,添加完后如下:

在Source Location处添加Driver文件夹,添加后如下:

点击应用并关闭,开始编译改错。

2.2 编译改错

第一次编译后会发现缺少cmsis_gcc.h等一系列的错误,因为源程序是在Keil下编译的,所以有很多文件和当前自己使用的IDE不兼容。

我的做法是自己再另外新建一个带驱动文件的STM32CUBE工程(记得选对自己使用的芯片型号),然后借用里面的文件:

新建的工程如下,自带Drivers文件夹:

直接将新建的Drivers文件夹下的CMSIS和STM32H7xx_HAL_Driver这两个文件夹复制替换到原先工程内的这两个文件夹; 以及inc文件夹内的stm32h7xx_it.h、stm32h7xx_hal_conf.h这两个h文件替换掉原来Src文件夹内的两个h文件

把串口的文件夹去掉后,编译成功

  • 5
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
STM32keil开发环境移植到IAR开发环境,分为六步走。 首先安装IAR编译环境,这个自行安装。 第一步 新建文件夹 新建一个文件夹命名“LED_CTRL”,在这个文件夹下再建立三个文件夹, CMSISI:放系统启动相关文件 ,FWLIB:放库文件 USER.:放用户自己写的文件 如下图: 第二步 拷贝文件keil下其实也有相对应的文件,我么们考过来就可以了。 下图是keil工程下的文件: 下面我们开始拷贝: 1. 拷贝CMSIS文件 2. 拷贝FWLIB文件 3. 拷贝USER文件 4. 拷贝剩余的其他用户自己写的程序(其实这些文件放哪都可以,根据自己的习惯吧) 拷贝完成如下图: 第三步 新建工程 打开软件 新建工程 点击OK 命名led_temp保存到LED_CTRL下 然后就会得到下面的界面。 第四步 添加分组及文件 开始往工程中添加文件 1. 新建分组:add group 好了,分组完成。 2.添加文件 a.往CMSIS添加文件:system_stm32f10x.c、startup_stm32f10x_md.s CMSIS->add->add files 路径如下: b.往FWLIB添加文件:"stm32f10x_gpio.c" "stm32f10x_rcc.c" "stm32f10x_spi.c" "stm32f10x_usart.c",(这里是因为工程中使用到了一部分的外围,所以需要自己根据工程需求添加) c.往USER中添加: "stm32f10x_it.c" "main.c",另外还有其他的用户自己写的文件led.c、nrf24l01.c、uart.c 。 到此,文件添加完成。 第五步 配置工程 同样选中“led_temp”然后右键,选择Options.就会出现配置界面,如下图 。 a. 选择工程使用的芯片型号,stm32f103c8t6,这里自己根据自己设置哦。 b.Library Configuration的Library要设置为Full,这样才能使用printf(); b. 进入C/C++Compiler,添加文件路径和所需的宏定义。 到此路径添加完成,下面添加宏定义。 不记得的,可以打开芯片的头文件查找即可。 到此,宏定义添加完成。 c. 进入Linker配置链接文件,点击进入,在IAR环境中已经存在,你选择和自己芯片匹配的就好了。 d. 进入Debugger配置,选择自己程序的下载方式。 选择下载到flash 到此,工程配置完成。 第六步 编译工程 同样选中”led_temp”右键-》Rebuild all 弹出文件名设置 同样设置为“led_temp”点击保存。 第六步 解决编译错误问题 弹出好多的错误: 解决办法: 1.core_cm3.h重命名为core_cm3.h.old 再次编译: 出现错误: 解决办法:继续进入工程配置,General Options->Library Configuration:Library 选FULL,右下角选择Use CMSIS 我们会看到,错误已经没有了,但是有很多的警告,如下图 解决办法:startup_stm32f10x_md.s文件中的”SECTION .text:CODE:REORDER”都要改为“SECTION .text:CODE: NOROOT:REORDER” 方法很简单,用Notepad++打开然进行替换即可。 首先,要去掉文件的只读模式,然后在修改。 好了,全部修改完成。保存,并恢复为只读模式,然后再编译工程。 工程编译结果无错误,无警告,移植到此结束,完美。 。
### 回答1: 在STM32F103C8上移植FreeRTOS主要需要以下步骤: 1. 创建FreeRTOS项目:在STM32CubeIDE中创建新的工程,并选择对应的STM32F103C8微控制器型号。 2. 配置系统时钟:根据具体的系统需求,配置正确的系统时钟和中断向量表。这可以通过配置RCC寄存器和NVIC寄存器来实现。 3. 配置器件库:根据需要配置外设,如UART、SPI、GPIO等,以便后续在FreeRTOS任务中使用。 4. 添加FreeRTOS源码:将FreeRTOS的源代码添加到项目中,并添加所需的依赖文件,如heap_2.c或heap_4.c用于动态内存的分配。 5. 配置FreeRTOS:通过修改FreeRTOSConfig.h文件来配置FreeRTOS,包括系统的优先级分配、任务堆栈大小、空闲任务堆栈大小等。 6. 创建任务:在main函数中使用xTaskCreate函数创建任务。需要指定任务的处理函数、任务的优先级和堆栈大小。 7. 启动调度器:在main函数最后,调用vTaskStartScheduler函数来启动FreeRTOS的任务调度器。 8. 编写任务处理函数:根据实际需要,在任务处理函数中执行相应的操作。可以使用FreeRTOS提供的API来实现任务同步、消息队列、信号量等功能。 9. 编译和下载:编译项目并下载到STM32F103C8微控制器上进行测试。 在移植过程中,需要根据具体的硬件平台和应用需求进行相应的配置和调整。同时,需要注意在任务处理函数中避免阻塞和资源竞争的情况,以确保系统的正常运行。 另外,建议参考FreeRTOS的官方文档和示例代码,对其原理和使用进行深入了解,以便更好地进行移植和应用。 ### 回答2: 在STM32F103C8上移植FreeRTOS需要以下步骤: 1. 准备开发环境:下载并安装STM32CubeMX和Keil MDK,并确保您熟悉使用这些工具。 2. 创建FreeRTOS项目:使用STM32CubeMX创建一个新项目,选择STM32F103C8作为目标设备。在配置时,选择需要的外设和选项。 3. 配置FreeRTOS内核:在STM32CubeMX中,选择“Middleware”选项卡,然后启用FreeRTOS。在配置FreeRTOS时,可以选择任务数量、堆栈大小等参数。 4. 运行STM32CubeMX代码生成器:点击“Project”菜单,选择“Generate Code”,然后选择Keil MDK作为目标工具链。点击“OK”生成代码。 5. 打开Keil MDK:在Keil MDK中打开生成的工程文件。 6. 添加FreeRTOS源文件:将FreeRTOS的源代码和头文件复制到项目文件夹中。在Keil MDK中,右键单击项目文件夹,选择“Add Existing Files to Group”将源文件添加到项目中。 7. 配置FreeRTOS堆栈:在FreeRTOSConfig.h文件中配置FreeRTOS堆栈大小和空闲任务堆栈大小等参数。 8. 添加应用任务:在main.c文件中添加应用任务,可以使用FreeRTOS提供的API来创建任务,并在任务中编写所需的功能。 9. 编译和下载:使用Keil MDK编译项目,并将生成的二进制代码下载到STM32F103C8芯片中。 10. 运行和测试:在STM32F103C8上运行程序,通过串口或其他方式输出任务运行时的信息,并进行测试和调试。 移植FreeRTOS到STM32F103C8芯片上需要熟悉STM32CubeMX和Keil MDK的使用,以及FreeRTOS内核的配置和任务管理。通过正确配置和使用FreeRTOS,可以在STM32F103C8芯片上实现多任务操作系统并进行任务调度和并发控制。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值