waiman-156411 发表于 2015-4-27 11:07:03

请问用STM32CubeMx创建的FreeRTOS可以运行多少个实例(任务)

本帖最后由 waiman-156411 于 2015-4-27 21:06 编辑

我第一次使用STM32CubeMx,创建了一个简单的FreeRTOS代码。硬件平台是STM32F103RCT6。根据原代码,在freertos.c文件内的函数 MX_FREERTOS_Init(void)内,调用osThreadCreate创建线程,默认生成的StartDefaultTask线程。我按照StartDefaultTask的代码,在 MX_FREERTOS_Init(void)内用osThreadCreate创建另外两个线程,分别为LEDTask和MeasureTempTask。
当三个线程同时创建的话,OS跑不起来,连StartDefaultTask都没有执行。
如果,只创建其中任意的两个线程,OS就可以跑起来。
FreeRTOS本身可以执行多个线程,但STM32CubeMx好像是用CMSIS来重新封装FreeRTOS,是不是CMSIS限制了执行线程的数量?

另外,我测试过,如果在StartDefaultTask线程内,创建另外的两个线程,OS除了执行StartDefaultTask线程外,只执行另外创建的第一个线程。


工程文件在7楼



waiman-156411 发表于 2015-5-7 13:39:44

已经解决了,原来堆栈不够大

发表于 2015-4-27 11:18:09

楼主发一下工程上来。

moyanming2013 发表于 2015-4-27 15:04:47

是否是栈空间的问题呢?或者自己的任务创建或任务函数有问题呢?

拼命三郎 发表于 2015-4-27 17:13:46

拼命三郎 发表于 2015-4-27 17:14:03

stary666 发表于 2015-4-27 17:46:13

学习一下。。。。。

waiman-156411 发表于 2015-4-27 21:05:38

生成的工程文件

wambob 发表于 2015-4-27 22:02:16

学习下,:lol

yxf0915 发表于 2015-6-23 12:48:01

楼主楼主!我也碰到相同问题,请问具体在cube中如何修改。
页: [1] 2 3
查看完整版本: 请问用STM32CubeMx创建的FreeRTOS可以运行多少个实例(任务)