找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 7037|回复: 7
打印 上一主题 下一主题
收起左侧

FreeRTOS中英文使用教程下载(实时内核实用指南)

  [复制链接]
跳转到指定楼层
楼主
FreeRTOS中文使用教程(附件里面还有英文版):

xQueueCreate() API 函数
队列在使用前必须先被创建。
队列由声明为 xQueueHandle 的变量进行引用。xQueueCreate()用于创建一个队列,并返回一个xQueueHandle 句柄以便于对其创建的队列进行引用。
当创建队列时,FreeRTOS从堆空间中分配内存空间。分配的空间用于存储队列数据结构本身以及队列中包含的数据单元。如果内存堆中没有足够的空间来创建队列,xQueueCreate()将返回NULL。第五章会有关于内存堆管理的更多信息。

6.3 其它常见错误
问题现象:在一个 Demo应用程序中增加了一个简单的任务,导致应用程序崩溃 任务创建时需要在内存堆中分配空间。许多 Demo 应用程序定义的堆空间大小只够用于创建 Demo 任务——所以当任务创建完成后,就没有足够的剩余空间来增加其它的任务,队列或信号量。
空闲任务是在 vTaskStartScheduler()调用中自动创建的。如果由于内存不足而无法创建空闲任务,vTaskStartScheduler()会直接返回。在调用 vTaskStartScheduler()后加上一条空循环[for(;;)]可以使这种错误更加容易调试。
如果要添加更多的任务,可以增加内存堆空间大小,或是删掉一些已存在的 Demo任务。

问题现象:在中断中调用一个 API 函数,导致应用程序崩溃
除了具有后缀为”FromISR”函数名的 API 函数,千万不要在中断服务例程中调用其它 API 函数。

问题现象:有时候应用程序会在中断服务例程中崩溃
需要做的第一件事是检查中断是否导致了栈溢出。 在不同的移植平台和不同的编译器上,中断的定义和使用方法是不尽相同的——所以,需要做的第二件事是检查在中断服务例程中使用的语法,宏和调用约定是否符合Demo程序的文档描述,以及是否和Demp程序中提供的中断服务例程范例相同。 如果应用程序工作在 Cotex M3 上,需要确定给中断指派优先级时,使用低优先级号数值表示逻辑上的高优先级中断,因为这种方式不太直观,所以很容易被忘记。一个比较常见的错误就是,在优先级高于configMAX_SYSCALL_INTERRUPT_PRIORITY的中断中调用了 FreeRTOS API 函数。

问题现象:在启动第一个任务时,调度器就崩溃了
如果使用的是 ARM7,那么请确定调用 vTaskStartScheduler()时处理器处于管理模式(Supervisor mode)。最简单的方式就是在 main()之前的 C启动态码中将处理器设置为管理模式。ARM7 的 Demo应用程序就是这么做的。 如果处理器不在管理模式下,调度器是无法启动的。

问题现象:临界区无法正确嵌套
除了 taskENTER_CRITICA()和 taskEXIT_CRITICAL(),千万不要在其它地方修改控制器的中断使能位或优先级标志。这两个宏维护了一个嵌套深度计数,所以只有当所有的嵌套调用都退出后计数值才会为0,也才会使能中断。

问题现象:在调度器启动前应用程序就崩溃了
如果一个中断会产生上下文切换,则这个中断不能在调度器启动之前使能。这同样适用于那些需要读写队列或信号量的中断。在调度器启动之前,不能进行上下文切换。  还有一些 API 函数不能在调度器启动之前调用。在调用 vTaskStartScheduler()之前,最好是限定只使用创建任务,队列和信号量的API 函数。

问题现象:在调度器挂起时调用 API 函数,导致应用程序崩溃
调用 vTaskSuspendAll()使得调度器挂起,而唤醒调度器调用xTaskResumeAll()。  千万不要在调度器挂起时调用其它 API 函数。

问题现象:函数原型 pxPortInitialiseStack()导致编译失败
每种移植都需要定义一个对应的宏,以把正确的内核头文件加入到工程中。如果编译函数原型 pxPortInitialiseStack()时出错,这种现象基本上可以确定是因为没有正确定义相应的宏。请参见附录 4以获得更多信息。
可以基本相应平台的 Demo 工程建立新的应用程序。这种方式就不用担心没有包含正确的文件,也不必担心没有正确地配置编译器选项。

0.png (144.76 KB, 下载次数: 128)

0.png

0.png (133.65 KB, 下载次数: 114)

0.png

0.png (10.38 KB, 下载次数: 104)

0.png

2-FreeRTOS英文使用教程.pdf

1.3 MB, 下载次数: 70, 下载积分: 黑币 -5

1-FreeRTOS中文使用教程.pdf

2.9 MB, 下载次数: 182, 下载积分: 黑币 -5

评分

参与人数 1黑币 +50 收起 理由
admin + 50 共享资料的黑币奖励!

查看全部评分

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏1 分享淘帖 顶2 踩
回复

使用道具 举报

沙发
ID:80640 发表于 2019-5-20 17:59 | 只看该作者
谢谢分享,哈哈
回复

使用道具 举报

板凳
ID:543645 发表于 2019-5-21 15:27 | 只看该作者
非常好的资料
回复

使用道具 举报

地板
ID:71535 发表于 2019-11-1 17:22 | 只看该作者
非常好学习啦,谢谢分享的资料。
回复

使用道具 举报

5#
ID:636605 发表于 2019-11-6 11:38 来自手机 | 只看该作者
非常好的学习材料,感谢
回复

使用道具 举报

6#
ID:328121 发表于 2019-11-28 14:07 | 只看该作者
感谢分享
回复

使用道具 举报

7#
ID:391781 发表于 2020-3-19 01:04 | 只看该作者
感谢分享。正在学习中。
回复

使用道具 举报

8#
ID:899981 发表于 2021-12-14 17:56 | 只看该作者
请教里面的调试器是啥?
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表