使用freertos V9.0.0需要注意的几个问题

FreeRTOS的xTaskCreate函数用于创建任务,其中usStackDepth参数指定任务堆栈大小,影响堆栈变量数量。在16位系统中,如设置为100,则实际占用200字节。堆栈宽度乘以深度不能超过size_t的最大值,否则可能导致溢出。在STM32应用中,理解这些细节至关重要。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

(1)朱工在FreeRTOS高级篇2---FreeRTOS任务创建分析说到:

  1. BaseType_t xTaskCreate(  
  2.                     TaskFunction_tp vTaskCode,  
  3.                     const charchar * constpcName,  
  4.                     unsigned short usStackDepth,  
  5.                     voidvoid *pvParameters,  
  6.                     UBaseType_t uxPriority,  
  7.                     TaskHandle_t *pvCreatedTask  
  8.                   );
  • usStackDepth:指定任务堆栈大小,能够支持的堆栈变量数量(堆栈深度),而不是字节数。比如,在16位宽度的堆栈下,usStackDepth定义为100,则实际使用200字节堆栈存储空间。堆栈的宽度乘以深度必须不超过size_t类型所能表示的最大值。比如,size_t为16位,则可以表示堆栈的最大值是65535字节。这是因为堆栈在申请时是以字节为单位的,申请的字节数就是堆栈宽度乘以深度,如果这个乘积超出size_t所表示的范围,就会溢出,分配的堆栈空间也不是我们想要的。

但我现在用的是V9.0.0版本了,函数式这样的:

BaseType_t xTaskCreate( TaskFunction_t pxTaskCode,
const char * const pcName,
const uint16_t usStackDepth,
void * const pvParameters,
UBaseType_t uxPriority,
TaskHandle_t * const pxCreatedTask )

函数内部有:

对于STM32
 

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值