新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > 9G-STM32 EWARM開發過程簡介之三

        9G-STM32 EWARM開發過程簡介之三

        作者: 時間:2016-11-29 來源:網絡 收藏

        9G-STM32 EWARM開發過程簡介之三--移植UCOS-II 2.86 操作系統

        本文引用地址:http://www.104case.com/article/201611/323211.htm

        一,準備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 byyuanxihua@21cn.comon ("__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工程

        按常規編譯下載調試即可。



        評論


        技術專區

        關閉
        主站蜘蛛池模板: 上犹县| 邳州市| 曲水县| 永春县| 明溪县| 应用必备| 庆阳市| 南澳县| 都匀市| 云和县| 武冈市| 水富县| 边坝县| 仪陇县| 镇雄县| 彭州市| 犍为县| 清丰县| 甘南县| 革吉县| 化州市| 辽中县| 新源县| 鲁甸县| 松原市| 巧家县| 锡林郭勒盟| 太和县| 永善县| 吕梁市| 凤冈县| 平谷区| 平武县| 陕西省| 红安县| 手游| 赞皇县| 友谊县| 张家港市| 应城市| 北海市|