freertos系统应用程序常见问题
对一些比较常见的问题,下面简要的以 FAQ(问答)的形式给出可能的原因和解决方法。
问题现象:在一个 Demo 应用程序中增加了一个简单的任务,导致应用程序崩溃
- 任务创建时需要在内存堆中分配空间。许多 Demo 应用程序定义的堆空间大小只
够用于创建 Demo 任务——所以当任务创建完成后,就没有足够的剩余空间来增加其
它的任务,队列或信号量。 - 空闲任务是在 **vTaskStartScheduler()**调用中自动创建的。如果由于内存不足而无法创建空闲任务,**vTaskStartScheduler()**会直接返回。在调用 vTaskStartScheduler()
后加上一条空循环[for( ; ; )]可以使这种错误更加容易调试。 - 如果要添加更多的任务,可以增加内存堆空间大小,或是删掉一些已存在的 Demo
任务。
问题现象:在中断中调用一个 API 函数,导致应用程序崩溃
除了具有后缀为”FromISR”函数名的 API 函数,千万不要在中断服务例程中调用其
它 API 函数。
问题现象:有时候应用程序会在中断服务例程中崩溃
需要做的第一件事是检查中断是否导致了栈溢出。
在不同的移植平台和不同的编译器上,中断的定义和使用方法是不尽相同的——所
以,需要做的第二件事是检查在中断服务例程中使用的语法,宏和调用约