您尚未登录。

楼主 #1 2020-05-09 20:24:13

缥缈九哥
会员
注册时间: 2020-05-09
已发帖子: 76
积分: 92

9G-STM32 EWARM开发过程简介之三--移植UCOS-II 2.86 操作系统--缥缈九哥

9G-STM32 EWARM开发过程简介之三--移植 OS-II 2.86 操作系统

一,准备 OSII+JLINK+STM32开发板

1,在http://www.mcu123.com/上联系购买支持SWD的JLINK
JLINK ARM仿真器全功能版
http://www.mcu123.com/www/prodshow.asp?ProdId=NO060
一定要购买全功能支持SWD调试的版本。

2,在http://www.manley.com.cn/web/prod t_1.asp?lei_big=仿真学习套件&lei_small=STM3210系列&lan=4上联系购买
EK-STM3210E系列仿真学习套件
http://www.manley.com.cn/web/prod t_neirong_01.asp?pro=280
把开发板上的左下角的CN8旁边的R37,R38焊掉,去掉板上ST-LINK对外加JLINK的SWD接口的干扰。

3,在http://www.micrium.com/st/STM32.html上注册下载 OSII
  OSII-ST-STM32F103ZE-SK.exe
http://www.micrium.com/secure/ OSII-ST-STM32F103ZE-SK.exe
解压后得到“Software”文件包

二,建立EK-STM3210E- OSII工程

1,依照以下网页在D:\works\EK-STM3210E- OSII\建立EWARM的开发工程
EK-STM3210E- OSII及项目名称stm32_ os
http://blog.163.com/yuan_xihua/blog/static/30740544200932931856676/
2,在D:\works\EK-STM3210E- OSII\ software\下建立以下文件夹目录
“ OS-II\Ports”“ OS-II\Source”“ -CPU”“ -LIB”“ -BSP”
3,在IDE工程中建立“ SW”文件组,并在此文件夹中再建立
“ OS-II->Ports”“ OS-II->Source”“ OS-CPU”“ OS-LIB”“ OS-BSp”
4,在左面“Category:”中选择上“C/C++ Complier”,在“Preprocessor”->“Additional include directories:”中添加以下预处理头文件路径
$PROJ_DIR$\..\..\ software\ OS-II\Ports
$PROJ_DIR$\..\..\ software\ OS-II\Source
$PROJ_DIR$\..\..\ software\ -CPU
$PROJ_DIR$\..\..\ software\ -LIB
$PROJ_DIR$\..\..\ software\ -BSP

5,复制源文件

A,复制Software\EvalBoards\ST\STM32F103ZE-SK\IAR\OS-Probe-LCD\app.c到
D:\works\EK-STM3210E- OSII\Source\app.c
把主函数改为:int  os_main (void)
在文件前添加:
#include "stm32f10x.h"
#include "stdio.h"
#include "platform_config.h"
在D:\works\EK-STM3210E- OSII\Source\main.c中有while(1)前加上:
   /* System Clocks Configuration */
   RCC_Configuration();

   /* Configure the GPIO ports */
   GPIO_Configuration();
 
   /* Configure the UART ports */
   UART_Configuration();
 
   /* Setup SysTick Timer for 1 msec interrupts  */
   if (SysTick_Config(SystemFrequency / 1000))
   {
     /* Capture error */
     while (1);
   }

     /* ADC1 Configuration */
   ADC_Configuration();
 
   /* Output a message on Hyperterminal using printf function */
   printf("\n\r\n\r\n\r\n\r");
   printf("*** STM32_ OS2 V2.86 Build by yuanxihua@21cn.com on ("__DATE__ " - " __TIME__ ")\n\r");
   printf("*** STM32_ OS2 V2.86 Rebooting ...\n\r");

  os_main();
并在文件头前加上:
extern int  os_main (void);

B,复制Software\EvalBoards\ST\STM32F103ZE-SK\IAR\BSP下的源文件到
D:\works\EK-STM3210E- OSII\ software\ -BSP
复制Software\ -CPU\ARM-Cortex-M3\IAR 下的源文件到
D:\works\EK-STM3210E- OSII\ software\ -CPU
复制\Software\ -LIB\文件夹到
D:\works\EK-STM3210E- OSII\ software\ -LIB\
复制Software\ OS-II\Ports\arm-cortex-m3\Generic\IAR\下的源文件到
D:\works\EK-STM3210E- OSII\ software\ OS-II\Ports
复制Software\ OS-II\Source\下的源文件到
D:\works\EK-STM3210E- OSII\ software\ OS-II\Source\

6,复制头文件

A,复制Software\EvalBoards\ST\STM32F103ZE-SK\IAR\OS-Probe-LCD\app_cfg.h到
D:\works\EK-STM3210E- OSII\Include\app_cfg.h
去掉文件中下面几行:
//#define  APP_CFG_PROBE_OS_PLUGIN_EN      DEF_ENABLED            /* DEF_ENABLED = Present, DEF_DISABLED = Not Present        */
//#define  APP_CFG_PROBE_COM_EN            DEF_ENABLED
//#define  APP_CFG_LCD_EN                  DEF_ENABLED
//#define  APP_CFG_KSD_EN                  DEF_ENABLED

B,复制Software\EvalBoards\ST\STM32F103ZE-SK\IAR\OS-Probe-LCD\os_cfg.h 到
D:\works\EK-STM3210E- OSII\Include\os_cfg.h
复制Software\EvalBoards\ST\STM32F103ZE-SK\IAR\OS-Probe-LCD\includes.h到
D:\works\EK-STM3210E- OSII\Include\includes.h
复制Software\ -CPU\cpu_def.h到
D:\works\EK-STM3210E- OSII\Include\cpu_def.h

7,去掉编译中出现的找不到stm32f10x_lib.h头文件错误
注释掉所有引用到stm32f10x_lib.h的源文件的这行://#include  <stm32f10x_lib.h>

在D:\works\EK-STM3210E- OSII\ software\ -BSP\bsp.c中注释掉:
  //   FLASH_SetLatency(FLASH_Latency_2);
  //   FLASH_PrefetchBufferCmd(FLASH_PrefetchBuffer_Enable);

  //   FLASH_SetLatency(FLASH_Latency_2);                           /* Embedded Flash Configuration                             */
  //   FLASH_HalfCycleAccessCmd(FLASH_HalfCycleAccess_Disable);
  //   FLASH_PrefetchBufferCmd(FLASH_PrefetchBuffer_Enable);


8,修改中断向量
把D:\works\EK-STM3210E- OSII\Libraries\CMSIS\Core\CM3\startup\iar\startup_stm32f10x_md.s
中的:
   PendSV_Handler  改为:OS_CPU_PendSVHandler
   SysTick_Handler 改为:OS_CPU_SysTickHandler
并在文件前添加:
         EXTERN  OS_CPU_PendSVHandler
         EXTERN  OS_CPU_SysTickHandler

三,移植修改EK-STM3210E- OSII工程
1,在D:\works\EK-STM3210E- OSII\ software\ -BSP\bsp.c中
修改键盘宏定义,键盘初始化及键盘状态读取,使之与EK-STM3210E板硬件相一致;
2,在D:\works\EK-STM3210E- OSII\Source\app.c中
修改接收到按键信息做相应的处理;
       
四,编译调试EK-STM3210E- OSII工程

按常规编译下载调试即可。

离线

页脚

工信部备案:粤ICP备20025096号 Powered by FluxBB

感谢为中文互联网持续输出优质内容的各位老铁们。 QQ: 516333132, 微信(wechat): whycan_cn (哇酷网/挖坑网/填坑网) service@whycan.cn