完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
#define configMINIMAL_STACK_SIZE ( ( uint16_t ) 128 )
#define configTOTAL_HEAP_SIZE ( ( size_t ) ( 2 * 1024 ) ) configuration file 里面 这两个选项是按照 nucleo 提供的 例子,填的。 main 函数中只做了 一个LED toggle 的 task int main(void) { HAL_Init(); /* Configure the system clock to 2 MHz */ SystemClock_Config(); //BSP driver init BSP_Init(); xTaskCreate( vTaskLEDBlink, "vTaskLED", 512, NULL, 2, xHandleTaskLED ); /* Add your application code here */ vTaskStartScheduler(); /* Infinite loop */ while (1) { } } 当 xTaskCreate( vTaskLEDBlink, "vTaskLED", 512, NULL, 2, xHandleTaskLED ); 填入512时,程序下载后,LED 没有实现toggle 当 xTaskCreate( vTaskLEDBlink, "vTaskLED", 128, NULL, 2, xHandleTaskLED ); 填入128时, 程序下载后,LED 可以实现Toggle 。 我不明白的时候 如果填入512 内存不足,为什么没有任何提示? 如果以后 有其他task 这个值应该填多少合适呢? 有没有 依据 可以参考? |
|
相关推荐
1个回答
|
|
您好!您的问题似乎是关于FreeRTOS的xTaskCreate函数中usStackDepth参数的疑问。首先,我会解释一下usStackDepth的作用,然后针对您提供的代码进行分析。
1. usStackDepth的作用: usStackDepth是FreeRTOS中xTaskCreate函数的一个参数,它表示为新创建的任务分配的堆栈大小(以字节为单位)。堆栈是用于存储任务的局部变量和函数调用时的返回地址等信息的内存区域。分配的堆栈大小应根据任务的复杂性和需要存储的变量数量来确定。 2. 您提供的代码分析: 您提到了两个配置选项:configMINIMAL_STACK_SIZE和configTOTAL_HEAP_SIZE。这些选项通常用于定义FreeRTOS的最小堆栈大小和总堆大小。在您的代码中,configMINIMAL_STACK_SIZE被设置为128字节,configTOTAL_HEAP_SIZE被设置为2 * 1024字节。 ```c #define configMINIMAL_STACK_SIZE ( ( uint16_t ) 128 ) #define configTOTAL_HEAP_SIZE ( ( size_t ) ( 2 * 1024 ) ) ``` 在您的main函数中,您创建了一个用于LED闪烁的任务。但是,您没有提供xTaskCreate函数的调用代码。为了解决您的疑问,我将提供一个示例,展示如何在xTaskCreate函数中使用usStackDepth参数: ```c void vLEDToggleTask(void *pvParameters) { // LED toggle task implementation } int main(void) { HAL_Init(); SystemClock_Config(); // Create the LED toggle task with a stack size of 128 bytes if (xTaskCreate(vLEDToggleTask, "LED Toggle Task", configMINIMAL_STACK_SIZE, NULL, tskIDLE_PRIORITY, NULL) != pdPASS) { // Task creation failed } // Start the FreeRTOS scheduler vTaskStartScheduler(); // If the scheduler starts, this function will never return for (;;); } ``` 在这个示例中,我们使用configMINIMAL_STACK_SIZE作为usStackDepth参数的值,为LED闪烁任务分配了128字节的堆栈空间。您可以根据任务的需要调整这个值。 希望这能帮助您解决问题。如果您有其他疑问,请随时提问。 |
|
|
|
只有小组成员才能发言,加入小组>>
调试STM32H750的FMC总线读写PSRAM遇到的问题求解?
1537 浏览 1 评论
X-NUCLEO-IHM08M1板文档中输出电流为15Arms,15Arms是怎么得出来的呢?
1490 浏览 1 评论
909 浏览 2 评论
STM32F030F4 HSI时钟温度测试过不去是怎么回事?
653 浏览 2 评论
ST25R3916能否对ISO15693的标签芯片进行分区域写密码?
1537 浏览 2 评论
1843浏览 9评论
STM32仿真器是选择ST-LINK还是选择J-LINK?各有什么优势啊?
593浏览 4评论
STM32F0_TIM2输出pwm2后OLED变暗或者系统重启是怎么回事?
496浏览 3评论
494浏览 3评论
stm32cubemx生成mdk-arm v4项目文件无法打开是什么原因导致的?
475浏览 3评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-4 20:11 , Processed in 0.916189 second(s), Total 84, Slave 64 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号