发新帖本帖赏金 5.00元(功能说明)我要提问
返回列表
打印
[STM32F4]

【f446re开发板试用】移植μC/OS-II操作系统

[复制链接]
1406|2
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
z00|  楼主 | 2015-10-9 14:36 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式

开发环境:

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的开发板。



打赏榜单

21ic小喇叭 打赏了 5.00 元 2015-10-30

沙发
逍遥李| | 2015-10-10 15:14 | 只看该作者
楼主你并没有使用cubemx是吗?直接使用keil然后F446标准库?

使用特权

评论回复
板凳
598330983| | 2015-10-10 17:37 | 只看该作者
楼主只是使用了部分的cubeF4的头文件而已,真是太牛X了

使用特权

评论回复
发新帖 本帖赏金 5.00元(功能说明)我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

z00
个人签名:如果你能看到我的世界里那些渐渐消逝的美好,你就能体会到现在所拥有的幸福。 欢迎访问我的个人网站 www.yiboard.com

144

主题

2200

帖子

13

粉丝