使用该种方式,能够去除繁琐的添加库文件与添加头文件路径,大大简化了ucos的移植。
1.在keil安装ucos-iii:点击pack Installer按钮,在弹出的 窗口中找到Pack页面下的Micrium::RTOS,如下图所示
2. 使用Project->new uVision Project创建工程,设置工程名字,保存工程路径后选择芯片型号。
3.接下来在Manage Run-Time Environment界面配置使用的库,配置使用uCOS-III与stm32cubemx,如下图 所示,点击OK后,就会自动添加uCOS-III代码。
4.配置好后,点击ok按钮,会弹出如下选择框,点击StartSTM32CubeMX启动软件。
5.进入Stm32CubeMX可以发现工程已经自动创建好了,我们需要进行必要的配置。 首先系统正常运行必须需要时钟,使用选择HSE(根据自己的硬件选择)。
6. 再依次配置LED控制引脚与USART1(这里省略)。
7.进入Clockconfiguration页面,配置HCLK为最大的216MHz
8. 进入ProjectManager页面,配置工程路径,工程名,堆栈大小,使用的IDE等,尤其是可以在Advancedsetting中配置使用HAL库还是使用LL库,如下图所示
9在Project页面还有一项非常重要的配置,Toolchain/IDE一定要选择GPDSC,否则keil工程会编译出错,说找不到gpdsc文件
10. 点击“GENERATECODE”按钮生成代码工程
11.添加cpu与os_cpu文件
假设你使用的是cortex-m3或者cortex-m4的芯片,到此处就可以成功编译工程了,但是我们使用的是cortex-m7的芯片,针对该类型的芯片,keil有几个文件还无法自动添加,需要我们手动添加,需要手动添加的文件如下图所示,该6个文件位于目录:
C:\Keil_v5\ARM\PACK\Micrium\RTOS\1.0.0\Software\uC-CPU\ARM-Cortex-M3\RealView 与
C:\Keil_v5\ARM\PACK\Micrium\RTOS\1.0.0\Software\uCOS-III\Ports\ARM-Cortex-M3\Generic\RealView
我们可以将该6个文件拷贝到我们的工程目录下后再添加.
12.配置ucos-iii任务切换时使用的PendSV_Handler中断
将os_cpu_a.asm 文件中的所有 OS_CPU_PendSVHandler改为 PendSV_Handler,
并注释掉stm32f7xx_it.c文件中的void PendSV_Handler(void)
13.配置ucos-iii时钟
将os_cpu_c.c中的 OS_CPU_SysTickHandler改为SysTick_Handler
并注释掉stm32f7xx_it.c文件中的void PendSV_Handler(void)
14.修改os_cpu_c.c文件
文件中的#include "../../../../Source/os.h"改为#include "os.h"
15. 关闭 STM32 的 Lazy Stacking 功能
修改 startup_stm32f767xx.s 文件,添加如下代码段
IF {FPU} != "SoftVFP"; Enable Floating Point Support at reset for FPULDR.W R0, =0xE000ED88 ; Load address of CPACR registerLDR R1, [R0] ; Read value at CPACRORR R1, R1, #(0xF <<20) ; Set bits 20-23 to enable CP10 and CP11 coprocessors; Write back the modified CPACR valueSTR R1, [R0] ; Wait for store to completeDSB; Disable automatic FP register content; Disable lazy context switchLDR.W R0, =0xE000EF34 ; Load address to FPCCR registerLDR R1, [R0]AND R1, R1, #(0x3FFFFFFF) ; Clear the LSPEN and ASPEN bitsSTR R1, [R0]ISB ; Reset pipeline now the FPU is enabledENDIF
16开启FPU功能
将文件 stm32f767xx.h 中的宏__FPU_PRESENT 为 1设置Target中的FloatingPointHardware
17 到此ucosiii移植完成
如果觉得《keil+stm32cubemx创建STM32F767芯片的uCOSIII工程》对你有帮助,请点赞、收藏,并留下你的观点哦!