在线时间250 小时
UID423774
注册时间2014-10-22
NXP金币0 
 
 
 
TA的每日心情  | 慵懒 2017-4-27 10:34 | 
|---|
 
  签到天数: 3 天 连续签到: 1 天 [LV.2]偶尔看看I 
金牌会员 
   
	- 积分
 - 1450
 
 
- 最后登录
 - 2020-8-3
  
 
 | 
 
看了下论坛上关于FreeRTOS的资料很少,而且在freertos官网上关于飞思卡尔kl的mo+系列的demo暂时也没找到,现在可PE上有一个组件可以直接导入,我就偷下懒,正好拿来使用,之前做项目在CW10.X上使用过这个在KDS3.0上使用过,KDS当然是大同小异了,好了现在看看移植步骤 
1.先添加FreeRTOS组件 
 
 
2.配置FreeRTOS组件的属性,由于配置属性太多,我在这里说说几个重要的步骤 
 
这个是调度器配置,和芯片选择 
 
时钟频率选择,这个会影响任务调度速度 
 
这两个参数影响系统运行内存 
 
任务时间处理 
到此,大体已经配置好了,先谢谢代码测试下效果 
3.先添加个任务参数结构体方便创建操作, 
typedef struct 
{ 
        pdTASK_CODE        code;                /*task code*/ 
        portCHAR*        name;                /*task name*/ 
        portSHORT        stack;                /*task stack*/ 
        void*                param;                /*task param*/ 
        byte                priority;           /*task priority*/ 
        xTaskHandle handle;                /*task handle*/ 
}pvTaskParam; 
 
4.然后添加个任务个数 
enum 
{ 
        TASK_TEST=0, 
        TASK_MAX 
}TASK_COUNT; 
 
5.添加个任务函数 
void vTaskFunction(void *pvParameters) 
{ 
        LOGMSG("[T][%s]task start!\r\n", __func__); 
        for(;;) 
        { 
                Bit1_NegVal(); 
                OS_vTaskDelay(200); 
        } 
} 
 
6.把任务加入任务参数结构体 
static const pvTaskParam tParam[TASK_MAX] =  
{ 
        /*CODE                         NAME                STACK        PARAM        PRIORITY                HANDLE*/ 
        {vTaskFunction, "vTaskFunc", 100,         NULL,                 2,                NULL} 
}; 
 
7.任务初始化工作 
void TaskApp_Init(void) 
{ 
        byte i; 
        for (i = 0; i < TASK_MAX; i++) 
        { 
                if ( pdPASS == OS_xTaskCreate(tParam.code, tParam.name, tParam.stack, 
                tParam.param, tParam.priority, tParam.handle)) 
                { 
                        /*任务穿件成功*/ 
                        LOGMSG("[T]Task create successed!\r\n"); 
                } 
                else 
                { 
                        LOGMSG("[T]Task create failed!\r\n"); 
                } 
        } 
} 
 
8.在main中调用初始化,看看串口调试效果! 
 
        
        
        
         |   
 
 
 
 |