硬汉嵌入式论坛

 找回密码
 立即注册
查看: 4729|回复: 4
收起左侧

[FreeRTOS] FreeRTOS教程疑问

[复制链接]

11

主题

44

回帖

77

积分

初级会员

积分
77
发表于 2016-8-25 08:57:49 | 显示全部楼层 |阅读模式
         在老大FreeRTOS教程中,任务创建函数:xTaskCreate   第3个参数任务栈大小,教程中注释为word 4个字节,但是我看了底层函数为uint16_t 是2个字节。因此我想说老大是不是写教程时看错了呀?还是说我哪里遗漏了!
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
107023
QQ
发表于 2016-8-25 09:58:32 | 显示全部楼层
不是的,你的理解稍有偏差,这个函数里面的uint16_t的类型定义是指的这个参数的数值大小范围是0到65536。

调函关系是
1.

#define xTaskCreate( pvTaskCode, pcName, usStackDepth, pvParameters, uxPriority, pxCreatedTask )
             xTaskGenericCreate( ( pvTaskCode ), ( pcName ), ( usStackDepth ), ( pvParameters ), ( uxPriority ), ( pxCreatedTask ), ( NULL ), ( NULL ) )


2.

BaseType_t xTaskGenericCreate( TaskFunction_t pxTaskCode, const char * const pcName, const uint16_t usStackDepth, void * const pvParameters, UBaseType_t uxPriority, TaskHandle_t * const pxCreatedTask, StackType_t * const puxStackBuffer, const MemoryRegion_t * const xRegions )


3.
这个函数里面再调用函数pxNewTCB = prvAllocateTCBAndStack( usStackDepth, puxStackBuffer );
prvAllocateTCBAndStack这个函数就是申请动态内存了:


4. 看了这个就明白了
pxStack = ( StackType_t * ) pvPortMallocAligned( ( ( ( size_t ) usStackDepth ) * sizeof( StackType_t ) ), puxStackBuffer );



回复

使用道具 举报

11

主题

44

回帖

77

积分

初级会员

积分
77
 楼主| 发表于 2016-8-25 10:10:38 | 显示全部楼层
老大,我知道了。sizeof( StackType_t )  = 4  看来还是我没深入看底层函数实现,不过教程Congig.h详解这一章,很多讲解的宏我在Config文件中都没有找到呀!
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
107023
QQ
发表于 2016-8-25 10:13:30 | 显示全部楼层

回 十二月的肖邦 的帖子

十二月的肖邦:老大,我知道了。sizeof( StackType_t )  = 4  看来还是我没深入看底层函数实现,不过教程Congig.h详解这一章,很多讲解的宏我在Config文件中都没有找到呀! (2016-08-25 10:10) 
默认配置在FreeRTOS.h文件里面,
这个还不像uCOS,把所有的配置宏全部列到一个文件里面,FreeRTOS是用户需要配置那个就在FreeRTOSConfig.h文件里面配置就行,默认的配置都在FreeRTOS.h文件里面。
回复

使用道具 举报

11

主题

44

回帖

77

积分

初级会员

积分
77
 楼主| 发表于 2016-8-25 10:18:56 | 显示全部楼层

回 eric2013 的帖子

eric2013:默认配置在FreeRTOS.h文件里面,
这个还不像uCOS,把所有的配置宏全部列到一个文件里面,FreeRTOS是用户需要配置那个就在FreeRTOSConfig.h文件里面配置就行,默认的配置都在FreeRTOS.h文件里面。 (2016-08-25 10:13) 
好的,明白!一直用合作调度器,这次项目要用OS,跑来学一下呵呵
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|小黑屋|Archiver|手机版|硬汉嵌入式论坛

GMT+8, 2024-5-14 10:48 , Processed in 0.228968 second(s), 25 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

快速回复 返回顶部 返回列表