
FreeRTOS
楓潇潇
这个作者很懒,什么都没留下…
展开
-
FreeRTOS学习(一)
1 FreeRTOS任务基础1.1 多任务系统在51单片机、AVR、STM32裸机编程时,我们通常都是用一个main函数里面加一个while(1)做一个大循环来完成所有的事务处理,同时在加上中断处理一些较为紧急的事务。相对于多任务系统而言,这个就是单任务系统,也称作前后台系统,中断服务函数作为前台程序,大循环while(1)作为后台程序,如图 1.1.1 所示:图1.1.1 前后台系...原创 2019-05-16 11:14:13 · 15993 阅读 · 0 评论 -
FreeRTOS学习(二)
2 FreeRTOS任务相关API函数2.1 任务创建和删除API函数FreeRTOS创建和删除任务的主要函数如下:函数描述xTaskCreate( )使用动态方法创建一个任务XTaskCreateStatic( )使用静态方法创建一个任务xTaskCreateRegisterd( )创建一个使用MPU进行限制的任务,相关内存使用动态内存分配x...原创 2019-05-16 11:27:53 · 2808 阅读 · 0 评论 -
FreeRTOS学习(三)
3 FreeRTOSB队列3.1 队列基本知识队列可以在任务与任务、任务与中断之间传递消息,但是在队列中存储有限的、大小固定的数据项目。任务与任务、任务与中断之间交流的数据保存在队列中,叫做队列项目。队列所能保存的最大数据项目数量叫做队列的长度,我们在创建队列的时候需要制定数据项目的类型和队列的长度。由于队列是用于传递消息的,也成为消息队列,队列是信号量实现的依据。3.2 队列结构体...原创 2019-05-16 13:43:18 · 1945 阅读 · 0 评论 -
FreeRTOS学习(四)
4 FreeRTOS信号量4.1 信号量简介信号量主要是用于对共享资源的访问和任务同步。具体的使用例子就不进行展开。4.2 二值信号量4.2.1 二值信号量简介二值信号量通常用于互斥访问或同步,二值信号量与互斥信号量非常相似,两者的主要区别是:互斥信号量拥有优先级继承机制,二值信号量没有优先级继承(何为优先级继承,后面将讲述)。因此二值信号量适用于同步(任务与任务或任务与中断...原创 2019-05-16 13:50:47 · 2157 阅读 · 0 评论 -
FreeRTOS学习(五)
5 FreeRTOS软件定时器5.1 软件定时器的简介定时器是每一个MCU具备的基本外设,高级MCU其定时器功能强大,能提供PWM、输入捕获等功能。MCU自带的定时器属于硬件定时器,不同的MCU其硬件定时器的数量各不同。在FreeRTOS中也提供定时器功能,该类定时器是软件定时器,其精度没有硬件定时器的高,但还是能够处理要求不高的任务。软件定时器允许设置一段时间,当设置的时间达到预设值之...原创 2019-05-16 13:55:06 · 1490 阅读 · 0 评论 -
FreeRTOS学习(六)
6 FreeRTOS事件标志组6.1 事件标志组的简介信号量可以用来完成同步,但是使用信号量来同步的话任务只能与单个的事件或任务进行同步。而有时候某个任务可能会需要与多个事件或任务进行同步,此时信号量将无法完成此类事情。但是FreeRTOS为我们提供了事件标志组。事件位事件位用来表明某个事件是否发生,事件位通常用作事件标志,具体是当某个事件发生时,其对应的标志位将会被置1,未发生该事件...原创 2019-05-16 14:18:21 · 1128 阅读 · 0 评论 -
FreeRTOS学习(七)
7 系统裁剪7.1 简介FreeRTOS中的系统裁剪和配置其实是通过条件编译的方法来实现的,不止FreeRTOS这么干,很多的协议栈、RTOS系统和GUI库都是使用条件编译的方法来完成配置和裁剪的。在第二章使用静态函数的时候,看到在tasks.c文件中会有如下的代码可以看出当configSUPPORT_STATIC_ALLOCATION的值为1时,静态创建函数才会被编译。条件编译的好处...原创 2019-05-16 14:41:27 · 1088 阅读 · 0 评论 -
FreeRTOS学习(八)
基本所有在FreeRTOS的main函数中,都是在任务创建之后,后面紧接着调用一个vTaskStartScheduler()函数。这个函数就是用来开启任务调度器的,在tasks.c文件中有函数的源码定义。原创 2019-05-16 14:49:39 · 1164 阅读 · 0 评论