keil+stm32cubemx创建STM32F767芯片的uCOSIII工程

 

使用该种方式,能够去除繁琐的添加库文件与添加头文件路径,大大简化了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按钮,会弹出如下选择框,点击Start STM32CubeMX启动软件。

5. 进入Stm32CubeMX可以发现工程已经自动创建好了,我们需要进行必要的配置。
   首先系统正常运行必须需要时钟,使用选择HSE(根据自己的硬件选择)。

6. 再依次配置LED控制引脚与USART1(这里省略)。

             

7.进入Clock configuration页面,配置HCLK为最大的216MHz

8. 进入Project Manager页面,配置工程路径,工程名,堆栈大小,使用的IDE等,尤其是可以在Advanced setting中配置使用HAL库还是使用LL库,如下图所示

9 在Project 页面还有一项非常重要的配置,Toolchain/IDE一定要选择GPDSC,否则keil工程会编译出错,说找不到gpdsc文件

10. 点击“GENERATE CODE”按钮生成代码工程

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

keil+stm32cubemx创建STM32F767芯片的uCOSIII工程_第1张图片

我们可以将该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 FPU
LDR.W R0, =0xE000ED88 ; Load address of CPACR register
LDR R1, [R0] ; Read value at CPACR
ORR R1, R1, #(0xF <<20) ; Set bits 20-23 to enable CP10 and CP11 coprocessors
; Write back the modified CPACR value
STR R1, [R0] ; Wait for store to complete
DSB
; Disable automatic FP register content
; Disable lazy context switch
LDR.W R0, =0xE000EF34 ; Load address to FPCCR register
LDR R1, [R0]
AND R1, R1, #(0x3FFFFFFF) ; Clear the LSPEN and ASPEN bits
STR R1, [R0]
ISB ; Reset pipeline now the FPU is enabled
ENDIF

 

keil+stm32cubemx创建STM32F767芯片的uCOSIII工程_第2张图片

16 开启FPU功能

  • 将文件 stm32f767xx.h 中的宏__FPU_PRESENT 为 1
  •  设置Target中的Floating Point Hardware

keil+stm32cubemx创建STM32F767芯片的uCOSIII工程_第3张图片

17  到此ucosiii移植完成

 

你可能感兴趣的:(STM32/RT1052)