在线时间250 小时
UID423774
注册时间2014-10-22
NXP金币0
TA的每日心情 | 慵懒 2017-4-27 10:34 |
---|
签到天数: 3 天 [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中调用初始化,看看串口调试效果!
|
|