在使用FreeRTOS进行程序设计时,遇到任务不能运行的问题,具体程序如下:
DebugOutput("启动USB通讯线程...\r\n\r\n");
osThreadDef(usbTask, StartUsbTask, osPriorityNormal, 0, 128);
usbTaskHandle = osThreadCreate(osThread(usbTask), NULL);
DebugOutput("启动雷达红外通讯线程...\r\n\r\n");
osThreadDef(irdaTask, StartIrdaTask, osPriorityNormal, 0, 128);
irdaTaskHandle = osThreadCreate(osThread(irdaTask), NULL);
DebugOutput("启动GPRS通讯线程...\r\n\r\n");
osThreadDef(gprsTask, StartGprsTask, osPriorityNormal, 0, 128);
gprsTaskHandle = osThreadCreate(osThread(gprsTask), NULL);
程序创建了3个线程,但是第3个任务不能正常运行。尝试多种方法解决,最后发现问题在于任务的堆栈的分配上,减小任务分配的堆栈大小,3个线程可以正常运行。
我现在使用的是STM32F091RCT6单片机,RAM为32K,所以确认不是硬件问题,应该和FreeRTOS的配置有关。
|