woshi_ziyu
发表于: 2015-10-8 14:19:58 | 显示全部楼层

开发环境:

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。

0051.jpg

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

0055.jpg



二、配置μ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函数添加以下代码:

  1. static  void  AppTaskStart (void *p_arg)
  2. {
  3.     (void)p_arg;
  4.         
  5.     BSP_LED_Init(LED2);
  6.     CPU_Init();                                                 /* Initialize the uC/CPU services                       */

  7.     while (DEF_TRUE) {                                          /* Task body, always written as an infinite loop.       */
  8.         BSP_LED_Toggle(LED2);
  9.         OSTimeDlyHMSM(0u, 0u, 0u, (AppProbe_Slider));

  10.         AppProbe_CtrVal++;

  11.         if (AppProbe_CtrVal >= DEF_INT_32_MASK) {
  12.             AppProbe_CtrVal = 0u;
  13.         }
  14.     }
  15. }
复制代码

四、下载运行

编译工程,并下载程序到NUCLEO-F446的开发板。


参考资料:

1. Micriμm Application Note:μC/OS-II With ARM-Cortex-M And STM32CubeFx From STMicroelectronics  http://micrium.com/?wpdmdl=725&

2. Micriμm STM3240G-EVAL_OS2 Example  http://micrium.com/?wpdmdl=397&

跳转到指定楼层
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题 37 | 回复: 55



手机版|

GMT+8, 2024-4-19 12:36 , Processed in 0.145879 second(s), 8 queries , Gzip On, MemCache On. Powered by Discuz! X3.5

YiBoard一板网 © 2015-2022 地址:河北省石家庄市长安区高营大街 ( 冀ICP备18020117号 )

快速回复 返回顶部 返回列表