文件名称:其它常见错误-ri5cy_user_manual
文件大小:3.05MB
文件格式:PDF
更新时间:2024-06-23 11:42:25
FreeRTOS 中文
6.3 其它常见错误 问题现象:在一个 Demo 应用程序中增加了一个简单的任务,导致应用程序崩溃 任务创建时需要在内存堆中分配空间。许多 Demo 应用程序定义的堆空间大小只 够用于创建 Demo 任务——所以当任务创建完成后,就没有足够的剩余空间来增加其 它的任务,队列或信号量。 空闲任务是在 vTaskStartScheduler()调用中自动创建的。如果由于内存不足而无 法创建空闲任务,vTaskStartScheduler()会直接返回。在调用 vTaskStartScheduler() 后加上一条空循环[for(;;)]可以使这种错误更加容易调试。 如果要添加更多的任务,可以增加内存堆空间大小,或是删掉一些已存在的 Demo 任务。 问题现象:在中断中调用一个 API 函数,导致应用程序崩溃 除了具有后缀为”FromISR”函数名的 API 函数,千万不要在中断服务例程中调用其 它 API 函数。 问题现象:有时候应用程序会在中断服务例程中崩溃 需要做的第一件事是检查中断是否导致了栈溢出。 在不同的移植平台和不同的编译器上,中断的定义和使用方法是不尽相同的——所 以,需要做的第二件事是检查在中断服务例程中使用的语法,宏和调用约定是否符合 Demo 程序的文档描述,以及是否和 Demp 程序中提供的中断服务例程范例相同。 如果应用程序工作在 Cotex M3 上,需要确定给中断指派优先级时,使用低优先级 号数值表示逻辑上的高优先级中断,因为这种方式不太直观,所以很容易被忘记。一个 比较常见的错误就是,在优先级高于 configMAX_SYSCALL_INTERRUPT_PRIORITY 的中断中调用了 FreeRTOS API 函数。