×
嵌入式 > 技术百科 > 详情

9G-STM32 EWARM开发过程简介之三

发布时间:2021-07-28 发布时间:
|

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

一,准备UCOSII+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/product_1.asp?lei_big=仿真学习套件&lei_small=STM3210系列&lan=4上联系购买
 EK-STM3210E系列仿真学习套件
 http://www.manley.com.cn/web/product_neirong_01.asp?pro=280
 把开发板上的左下角的CN8旁边的R37,R38焊掉,去掉板上ST-LINK对外加JLINK的SWD接口的干扰。

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

二,建立EK-STM3210E-UCOSII工程

1,依照以下网页在D:worksEK-STM3210E-UCOSII建立EWARM的开发工程
 EK-STM3210E-UCOSII及项目名称stm32_ucos
 http://blog.163.com/yuan_xihua/blog/static/30740544200932931856676/
2,在D:worksEK-STM3210E-UCOSIIUcsoftware下建立以下文件夹目录
 “uCOS-IIPorts”“uCOS-IISource”“uC-CPU”“uC-LIB”“uC-BSP”
3,在IDE工程中建立“UCSW”文件组,并在此文件夹中再建立
 “UCOS-II->Ports”“UCOS-II->Source”“UCOS-CPU”“UCOS-LIB”“UCOS-BSp”
4,在左面“Category:”中选择上“C/C++ Complier”,在“Preprocessor”->“Additional include directories:”中添加以下预处理头文件路径
 $PROJ_DIR$....UcsoftwareuCOS-IIPorts
 $PROJ_DIR$....UcsoftwareuCOS-IISource
 $PROJ_DIR$....UcsoftwareuC-CPU
 $PROJ_DIR$....UcsoftwareuC-LIB
 $PROJ_DIR$....UcsoftwareuC-BSP
 
5,复制源文件

A,复制SoftwareEvalBoardsSTSTM32F103ZE-SKIAROS-Probe-LCDapp.c到
 D:worksEK-STM3210E-UCOSIISourceapp.c
 把主函数改为:int  os_main (void)
 在文件前添加:
 #include "stm32f10x.h"
 #include "stdio.h"
 #include "platform_config.h"
 在D:worksEK-STM3210E-UCOSIISourcemain.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(" ");
   printf("*** STM32_UCOS2 V2.86 Build by yuanxihua@21cn.com on ("__DATE__ " - " __TIME__ ") ");
   printf("*** STM32_UCOS2 V2.86 Rebooting ... ");
  
  os_main();
 并在文件头前加上:
 extern int  os_main (void);
 
B,复制SoftwareEvalBoardsSTSTM32F103ZE-SKIARBSP下的源文件到
 D:worksEK-STM3210E-UCOSIIUcsoftwareuC-BSP
 复制SoftwareuC-CPUARM-Cortex-M3IAR 下的源文件到
 D:worksEK-STM3210E-UCOSIIUcsoftwareuC-CPU
 复制SoftwareuC-LIB文件夹到
 D:worksEK-STM3210E-UCOSIIUcsoftwareuC-LIB
 复制SoftwareuCOS-IIPortsarm-cortex-m3GenericIAR下的源文件到
 D:worksEK-STM3210E-UCOSIIUcsoftwareuCOS-IIPorts
 复制SoftwareuCOS-IISource下的源文件到
 D:worksEK-STM3210E-UCOSIIUcsoftwareuCOS-IISource

6,复制头文件

A,复制SoftwareEvalBoardsSTSTM32F103ZE-SKIAROS-Probe-LCDapp_cfg.h到
 D:worksEK-STM3210E-UCOSIIIncludeapp_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,复制SoftwareEvalBoardsSTSTM32F103ZE-SKIAROS-Probe-LCDos_cfg.h 到
 D:worksEK-STM3210E-UCOSIIIncludeos_cfg.h
 复制SoftwareEvalBoardsSTSTM32F103ZE-SKIAROS-Probe-LCDincludes.h到
 D:worksEK-STM3210E-UCOSIIIncludeincludes.h
 复制SoftwareuC-CPUcpu_def.h到
 D:worksEK-STM3210E-UCOSIIIncludecpu_def.h
 
7,去掉编译中出现的找不到stm32f10x_lib.h头文件错误
 注释掉所有引用到stm32f10x_lib.h的源文件的这行://#include 

 在D:worksEK-STM3210E-UCOSIIUcsoftwareuC-BSPsp.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:worksEK-STM3210E-UCOSIILibrariesCMSISCoreCM3startupiarstartup_stm32f10x_md.s
 中的:
   PendSV_Handler  改为:OS_CPU_PendSVHandler
   SysTick_Handler 改为:OS_CPU_SysTickHandler
 并在文件前添加:
         EXTERN  OS_CPU_PendSVHandler
         EXTERN  OS_CPU_SysTickHandler
 
三,移植修改EK-STM3210E-UCOSII工程
1,在D:worksEK-STM3210E-UCOSIIUcsoftwareuC-BSPsp.c中
 修改键盘宏定义,键盘初始化及键盘状态读取,使之与EK-STM3210E板硬件相一致;
2,在D:worksEK-STM3210E-UCOSIISourceapp.c中
 修改接收到按键信息做相应的处理;
        
四,编译调试EK-STM3210E-UCOSII工程

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

 

『本文转载自网络,版权归原作者所有,如有侵权请联系删除』

热门文章 更多
无人机新突破:或将利用手机发射塔追踪无人机