zoukankan      html  css  js  c++  java
  • uCos-III移植到STM32F10x

    最近在百度上看了uCOS-III 的介绍后,诸多功能有很大的提升和改进,感觉有必要升级一下开发环境。百度介绍:http://baike.baidu.com/view/8531313.htm

    环境:

    1. STM32F10x 3.5固件库。
    2. MDK4.23 编译器
    3. uCos-III v3.03

             1. uCos-III 源文件KRN-K3XX-000000.zip

                       官网http://micrium.com/page/downloads/source_code  

             我的网盘:http://115.com/file/anr4r6a8#

    2.uCos-III 官网 移植程序

             Micrium_uCOS-III-STM32F107-Eval-Atollic-TrueSTUDIO.zip

    官网http://micrium.com/download/Micrium-Book-uCOS-III-STM32F107.exe

    网盘http://115.com/file/dpuyusej#

    一、第一步新建工程(在上一篇文章中有详解)

    二、新建文件夹uCOS_III。在此文件下新建四个文件夹uC-CPU,uC-LIB, uCOS-III。

    1.uCOS-III下新建三个文件 Source, Ports, Cfg

    复制KRN-K3XX-000000MicriumSoftwareuCOS-IIISource下所有文件到Source;

    复制KRN-K3XX-000000MicriumSoftwareuCOS-IIICfgTemplate下所有文件到Cfg;

    复制Micrium_uCOS-III-STM32F107-Eval-Atollic-TrueSTUDIOMicriumSoftwareuCOS-IIIPortsARM-Cortex-M3GenericRealVie下所有文件到 Ports。

    2. uC-LIB下新建三个文件 Source, Ports, Cfg

    复制Micrium_uCOS-III-STM32F107-Eval-Atollic-TrueSTUDIOMicriumSoftwareuC-LIB文本文件到Source

    复制Micrium_uCOS-III-STM32F107-Eval-Atollic-TrueSTUDIOMicriumSoftwareuC-LIBCfgTemplate下 lib_cfg.h 到Cfg

    复制Micrium_uCOS-III-STM32F107-Eval-Atollic-TrueSTUDIOMicriumSoftwareuC-LIBPortsARM-Cortex-M3RealView 下lib_mem_a.asm 到Ports

    3. uC-CPU下新建三个文件 Source, Ports,Cfg

    复制Micrium_uCOS-III-STM32F107-Eval-Atollic-TrueSTUDIOMicriumSoftwareuC-CPU下三个文本文件到Source

    复制Micrium_uCOS-III-STM32F107-Eval-Atollic-TrueSTUDIOMicriumSoftwareuC-CPUARM-Cortex-M3GNU下三个文件到 Ports

    复制Micrium_uCOS-III-STM32F107-Eval-Atollic-TrueSTUDIOMicriumSoftwareEvalBoardsMicriumuC-Eval-STM32F107AtollicuCOS-IIIAPP下cpu_cfg.h 到Cfg

    4.复制Micrium_uCOS-III-STM32F107-Eval-Atollic-TrueSTUDIOMicriumSoftwareEvalBoardsMicriumuC-Eval-STM32F107AtollicuCOS-IIIAPP下app_cfg.h 到Main中。

    好了, 到这里工程文件以复制完了。

    1.把工程引用文件路径指定 参图:

    2.添加工程文件:

    Main.c, Kernel.c,Kernel.h,Config.c,Config.h代码如下提供。

    Main.c
    Kernel.c
    Kernel.h
    Config.c
    Config.h

    app_cfg.h 追加代码 后如下:

    app_cfg.h

    下面对ProjectAppuCOS_IIIuC-CPUPorts 下cpu_a.s进行修改, 因为这是GNU的汇编代码。

    如下替换:

    ‘@’ 换为‘;’

    .global  换为EXPORT

    以下代码

    .text

    .align 2

    .thumb

    .syntax unified

    换为

             PRESERVE8

             AREA        |.text|, CODE, READONLY

                       THUMB

    把函数名上的.thumb_func  在前后添加 ‘;’注释掉;

    并把函数 名后紧跟的‘:’删除。

    修改后如下:

    cpu_a.s

    修改os_cfg.h

    OS_CFG_TS_EN宏定义改为0u

    OS_CFG_SCHED_LOCK_TIME_MEAS_EN 宏定义改为0u

    OS_CFG_TASK_DEL_EN 宏定义改为 1u

    其它可根据自己的功能需要 先1u或ou。

    这里ProjectAppuCOS_IIIuC-LIBSource中lib_str.c的Str_FmtNbr_Int32 函数 的函数体内局部变量没有赋初值,不够严谨 这里赋初值如下:

    复制代码
        CPU_CHAR     *pstr_fmt = (CPU_CHAR *)0;
        CPU_DATA      i = 0u;
        CPU_INT32U    nbr_fmt = 0u;
        CPU_INT32U    nbr_log = 0u;
        CPU_INT08U    nbr_dig_max = 0u;
        CPU_INT08U    nbr_dig_min = 0u;
        CPU_INT08U    nbr_dig_fmtd = 0u;
        CPU_INT08U    nbr_neg_sign = 0u;
        CPU_INT08U    nbr_lead_char = 0u;
        CPU_INT08U    dig_val = 0u;
        CPU_INT08U    lead_char_delta_0 = 0u;
        CPU_INT08U    lead_char_delta_a = 0u;
        CPU_BOOLEAN   lead_char_dig = 0u;
        CPU_BOOLEAN   lead_char_0 = 0u;
        CPU_BOOLEAN   fmt_invalid = 0u;
        CPU_BOOLEAN   print_char = 0u;
        CPU_BOOLEAN   nbr_neg_fmtd = 0u;
    复制代码

    最后修改启动文件startup_stm32f10x_hd.s ,加载不同的启动文件 时不用怕,修改的内容都是一样的:

    OS_CPU_PendSVHandler 替换所有的PendSV_Handler

    OS_CPU_SysTickHandler替换所有的SysTick_Handler

    使中断执行uCos的中断函数。

    到这里就全部OK了。

    仿真查看端口变化

    编程结果过于臃肿:

    开启3级优化:

    再编译看结果:

    整个工程文件存到我的网盘中http://pan.baidu.com/share/link?shareid=25418&uk=118334538

    希望以上资料对大家有所帮助。

  • 相关阅读:
    程序片段--2的乘方
    Set、Map集合、栈、队列
    Map迭代(六种)
    Struts2标签--控制标签
    线性表
    数据结构笔记(1)
    spingMVC问题小结
    《浪潮之巅》十四章笔记
    《浪潮之巅》十三章笔记
    《浪潮之巅》十二章笔记
  • 原文地址:https://www.cnblogs.com/xumaojun/p/8533094.html
Copyright © 2011-2022 走看看