开发环境: Keil MDK-ARM V5.15 STM32CubeF4 V1.8.0 μC/OS-II V2.92.11 主要介绍如何通过试用MDK-ARM及STM32CubeF4开发包移植μC/OS-II操作系统到NUCLEO-F446RE平台。
一、创建Keil工程 1. 启动Keil μVision5软件,在Project菜单选择Project->New μVision Project...,打开Create New Project对话框,创建一个新的工程,并命名为OS2,保存在Examples\ST\NUCLEO-F446RE\OS2\KeilMDK文件夹下。在Select Device for Target 'Target 1'...对话框选择NUCLEO-F446RE的MCU型号STM32F446RETx,单击OK。在Manage Runtime Environment对话框中,保持空白,不选择运行环境。 2. 将工程的目标Target 1重命名为Flash,在目标名称上右击选择Add Group…,并重命名为STM32CubeF4 CMSIS。重复以上步骤,建立STM32CubeF4 HAL-Drivers分组。 3. 在分组STM32CubeF4 CMSIS下添加以下.h头文件: stm32f4xx.h stm32f446xx.h system_stm32f4xx.h 这些文件位于STM32Cube_FW_F4_V1.8.0\Drivers\CMSIS\Device\ST\STM32F4xx\Include文件夹下。 4. 复制以下文件至工程目录中: system_stm32f4xx.c startup_stm32f446xx.s 这些文件位于"STM32Cube_FW_F4_V1.8.0\Drivers\CMSIS\Device\ST\STM32F4xx\Source\Templates"文件夹下。 5. 在分组STM32CubeF4 HAL-Drivers下添加以下文件: STM32Cube_FW_F4_V1.8.0\Drivers\STM32F4xx_HAL_Driver\Src文件下的所有文件; STM32Cube_FW_F4_V1.8.0\Drivers\STM32F4xx_HAL_Driver\Inc文件下的所有文件; 6.复制stm32f4xx_hal_conf_template.h文件到\Examples\ST\NUCLEO-F446RE\OS2文件夹下,并重命名为stm32f4xx_hal_conf.h。 7.重复步骤2,新建分组uC-CPU,并添加以下文件: uC-CPU\cpu_cache.h uC-CPU\cpu_def.h uC-CPU\cpu_core.h uC-CPU\cpu_core.c uC-CPU\ARM-Cortex-M4\RealView\cpu.h uC-CPU\ARM-Cortex-M4\RealView\cpu_a.asm uC-CPU\ARM-Cortex-M4\RealView\cpu_c.c 8. 新建分组uC-LIB、uCOS-II Source和uCOS-II Ports,添加uCOS-II操作系统相关的其他文件。 9. 打开Options for Target ’FLASH‘对话框,在C/C++选项页的Preprocessor Sysbols添加USE_HAL_DRIVER, STM32F446xx。
在Include Paths添加以下路径: ..\..\..\..\..\Software\uC-CPU ..\..\..\..\..\Software\uC-CPU\ARM-Cortex-M4\RealView ..\..\..\..\..\Software\uC-LIB ..\..\..\..\..\Software\uCOS-II\Ports\ARM-Cortex-M4\Generic\RealView ..\..\..\..\..\Software\uCOS-II\Source ..\..\..\STM32CubeF4\Drivers\CMSIS\Device\ST\STM32F4xx\Include ..\..\..\STM32CubeF4\Drivers\CMSIS\Include ..\..\..\STM32CubeF4\Drivers\STM32F4xx_HAL_Driver\Inc
二、配置μC/OS‐II操作系统 1. 添加以下文件至工程目录\Examples\ST\NUCLEO-F446RE\OS2: os_cfg.h,位于\Micrium\Software\uCOS-II\Cfg\Template文件夹下; cpu_cfg.h,位于\Micrium\Software\uC-CPU\Cfg\Template文件夹下; lib_cfg.h,位于\Micrium\Software\uC-LIB\Cfg\Template文件夹下。 2.新建一个文件app_cfg.h,包含创建的任务优先级及堆栈,并保存至工程目录。 3.新建分组APP,添加以下文件: app_cfg.h app_hooks.c cpu_cfg.h lib_cfg.h os_cfg.h startup_stm32f407xx.s stm32f4xx_hal_conf.h 4. 新建一个文件app.c,包含main函数,使用OSTaskCreate函数创建任务。
三、Blinky例程 STM32CubeF4开发包里面有NUCLEO的BSP,这里使用BSP提供的例程。 1. 添加BSP包的stm32f4xx_nucleo.h及stm32f4xx_nucleo.c文件至工程,位于STM32Cube_FW_F4_V1.8.0\Drivers\BSP\STM32F4xx-Nucleo文件夹下。 2. 在C/C++ -> Include Paths中添加BSP包的头文件路径..\..\..\STM32CubeF4\Drivers\BSP\STM32F4xx-Nucleo。 3. 在AppTaskStart函数添加以下代码: static void AppTaskStart (void *p_arg)
{
(void)p_arg;
BSP_LED_Init(LED2);
CPU_Init(); /* Initialize the uC/CPU services */
while (DEF_TRUE) { /* Task body, always written as an infinite loop. */
BSP_LED_Toggle(LED2);
OSTimeDlyHMSM(0u, 0u, 0u, (AppProbe_Slider));
AppProbe_CtrVal++;
if (AppProbe_CtrVal >= DEF_INT_32_MASK) {
AppProbe_CtrVal = 0u;
}
}
}
四、下载运行 编译工程,并下载程序到NUCLEO-F446的开发板。
|