查看: 3623|回复: 1

[原创] [正点原子 号令者RT1052试用]5、移植FreeRTOS到RT1052

[复制链接]
  • TA的每日心情
    奋斗
    2017-6-6 13:23
  • 签到天数: 7 天

    连续签到: 1 天

    [LV.3]偶尔看看II

    发表于 2018-7-26 00:07:58 | 显示全部楼层 |阅读模式
    分享到:
    1、按照RT1052开发指南第三章建立一个新工程,工程名字可以为FreeRTOS_RT1052
    48.jpg
    注意修改sys.c中的armPllConfig 、sysPllConfig 、usb1PllConfig 常量值得定义,在《4、移植Coremark时发现的问题》一文中有详细修改内容:
                                  


    2、在新建工程下增加一个FreeRTOS的目录,并且移植FreeRTOS9.0的代码,FreeRTOS的代码正点原子的光盘里面已经准备好“号令者RT1052光盘资料(A盘)\6,软件资料\14,FreeRTOS学习资料\FreeRTOS源码”,FreeRTOSv9.0.0.exe执行后即可解压出来,将对应的文件拷贝出来。
    49.jpg
    注意 Portable目录中仅需要拷贝Keil(See-also-the-RVDS-directory)目录中的ARM_CM7\r0p1中的文件
    50.jpg
    在工程项目中增加一个FreeRTOS的包,添加FreeRTOS目录及子目录(子目录CMSIS_RTOS、portable\Keil\ARM_CM7\r0p1、\portable\MemMang\heap_4.c)中的C文件
    51.jpg
    C/C++标签栏中Include Paths中增加FreeRTOS目录中的部分
    在Main.c中增加头文件定义
    1. #include "cmsis_os.h"
    复制代码
    直接编译项目仅出现以下错误,说明FreeRTOS环境准备完毕,就可以增加业务逻辑了。
    52.jpg

    这里利用开发板的LED0、LED1来实现点灯应用。
    53.jpg
    可参考“号令者RT1052光盘资料(A盘)\4,程序源码\2,标准例程-库函数版本\实验1 跑马灯试验\HARDWARE”程序引入LED目录中的驱动和控制程序
    在项目中新增HARDWARE 目录,将LED 目录拷贝到FreeRTOS项目中,再项目中增加HardWare包,添加Led.c,
    54.jpg
    Include path中添加 ..\HardWare\LED 路径设置
    55.jpg

    Main.h文件中增加以下定义:
    1. #ifndef _MAIN_H_
    2. #define _MAIN_H_

    3. #include "sys.h"
    4. #include "led.h"
    复制代码

    Main.C文件中增加以下内容:
    1. #include "main.h"
    2. #include "cmsis_os.h"

    3. void vStartLedRedTask(void const * argument);
    4. void vStartLedGreenTask(void const * argument);

    5. uint32_t utime_tick = 0;
    6. //红灯闪亮任务
    复制代码
    修改main() 函数内容如下:
    1. int main(void){
    2.   MPU_Memory_Protection();
    3.   RT1052_Clock_Init();
    4.   SysTick_Config(SystemCoreClock/EE_TICKS_PER_SEC);   
    5.   RT1052_NVIC_SetPriority(SysTick_IRQn, 0, 0);
    6.   LED_Init();                                 
    7.   xTaskCreate((TaskFunction_t)vStartLedRedTask,
    8.                      "LED0",                       
    9.                       configMINIMAL_STACK_SIZE,     
    10.                       NULL,                        
    11.                       tskIDLE_PRIORITY,            
    12.                       NULL);                        
    13.   xTaskCreate((TaskFunction_t)vStartLedGreenTask,
    14.                       "LED1",                        
    15.                       configMINIMAL_STACK_SIZE,     
    16.                       NULL,                        
    17.                       tskIDLE_PRIORITY,            
    18.                       NULL);                     
    19.   vTaskStartScheduler();
    20.   while(1){
    21.   }
    22. }
    复制代码
    至此代码编辑完成,编译下载到号令者RT1052开发板中可以看到以下动画的结果,RT1052已可以跑FreeRTOS相关的代码:可以参考正点原子的裸机应用程序将串口、网络、液晶屏等应用移植到FreeRTOS环境下实现功能。
    move02_b.gif

    回复

    使用道具 举报

  • TA的每日心情
    难过
    2021-2-27 22:16
  • 签到天数: 1568 天

    连续签到: 1 天

    [LV.Master]伴坛终老

    发表于 2018-7-26 22:33:02 | 显示全部楼层
    此类别的资料蛮多的嘛
    回复 支持 反对

    使用道具 举报

    您需要登录后才可以回帖 注册/登录

    本版积分规则

    关闭

    站长推荐上一条 /3 下一条



    手机版|小黑屋|与非网

    GMT+8, 2025-1-12 20:46 , Processed in 0.137856 second(s), 18 queries , MemCache On.

    ICP经营许可证 苏B2-20140176  苏ICP备14012660号-2   苏州灵动帧格网络科技有限公司 版权所有.

    苏公网安备 32059002001037号

    Powered by Discuz! X3.4

    Copyright © 2001-2024, Tencent Cloud.