FreeRTOS函数原型解析: portBASE_TYPE xTaskCreate( pdTASK_CODE pvTaskCode, const signed portCHAR * const pcName, unsigned portSHORT usStackDepth, void *pvPara ...
分类:
其他好文 时间:
2017-07-16 23:28:45
阅读次数:
244
CMSIS-RTOS是对FreeRtos的封装,函数名比較适合纯软件编程。 如今的版本号是1.0.2. id1 = osTimerCreate(osTimer(Timer_1), osTimerOnce, NULL); 可是这个osTimerCreate总是返回0x00000000。 就是创建软件定 ...
分类:
其他好文 时间:
2017-07-16 15:00:57
阅读次数:
94
为什么要使用事件标志事件标志组是实现多任务同步的有效机制之一。也许有不理解的初学者会问采用事件标志组多麻烦,搞个全局变量不是更简单?其实不然,在裸机编程时,使用全局变量的确比较方便,但是在加上 RTOS 后就是另一种情况了。 使用全局变量相比事件标志组主要有如下三个问题:? 使用事件标志组可以让 R ...
分类:
其他好文 时间:
2017-07-16 09:54:39
阅读次数:
2694
FreeRTOS 的时钟节拍任何操作系统都需要提供一个时钟节拍,以供系统处理诸如延时、 超时等与时间相关的事件。时钟节拍是特定的周期性中断,这个中断可以看做是系统心跳。 中断之间的时间间隔取决于不同的应用,一般是 1ms – 100ms。时钟的节拍中断使得内核可以将任务延迟若干个时钟节拍,以及当任务 ...
分类:
其他好文 时间:
2017-07-15 11:24:50
阅读次数:
779
调度锁调度锁就是 RTOS 提供的调度器开关函数,如果某个任务调用了调度锁开关函数,处于调度锁开和调度锁关之间的代码在执行期间是不会被高优先级的任务抢占的,即任务调度被禁止。这一点要跟临界段的作用区分开,调度锁只是禁止了任务调度,并没有关闭任何中断,中断还是正常执行的。而临界段进行了开关中断操作。 ...
分类:
其他好文 时间:
2017-07-14 10:15:37
阅读次数:
1418
临界段代码的临界段也称为临界区,一旦这部分代码开始执行,则不允许任何中断打断。为确保临界段代码的执行不被中断,在进入临界段之前须关中断,而临界段代码执行完毕后,要立即开中断。 FreeRTOS 临界段相关知识补充FreeRTOS 的源码中有多处临界段的地方, 临界段虽然保护了关键代码的执行不被打断, ...
分类:
其他好文 时间:
2017-07-13 17:17:38
阅读次数:
478
本章教程为大家将介绍 FreeRTOS 操作系统支持的任务调度方式:抢占式,时间片和合作式,这部分算是 FreeRTOS 操作系统的核心了。 对于初学者来说,要一下子就能够理解这些比较困难,需要多花些时间把这些基本概念搞清楚,然后阅读下源码,深入理解实现方法。 关于合作式调度器的特别说明 FreeR ...
分类:
其他好文 时间:
2017-07-12 20:00:20
阅读次数:
712
任务优先级说明下面对 FreeRTOS 优先级相关的几个重要知识点进行下说明,这些知识点在以后的使用中务必要掌握牢固。? FreeRTOS 中任务的最高优先级是通过 FreeRTOSConfig.h 文件中的 configMAX_PRIORITIES 进行配置的,用户实际可以使用的优先级范围是 0 ...
分类:
其他好文 时间:
2017-07-12 17:42:47
阅读次数:
204
FreeRTOS 的任务栈设置不管是裸机编程还是 RTOS 编程,栈的分配大小都非常重要。 局部变量,函数调用时的现场保护和返回地址,函数的形参,进入中断函数前和中断嵌套等都需要栈空间,栈空间定义小了会造成系统崩溃。裸机的情况下,用户可以在这里配置栈大小: 为什么是堆中的?因为我们采用的就是动态创建 ...
分类:
其他好文 时间:
2017-07-05 22:58:30
阅读次数:
712
1.前言 嵌入式实时操作系统需要对整个系统环境产生的事件作出响应。可以采用中断方式也可以采用轮询方式来进行处理。如果采用中断方式,则希望ISR(中断服务例程)的处理时间越短越好。 注:必须说明的是,只有以”FromISR”或”FROM_ISR”结束的API 函数或宏才可以在中断服务例程中。 2. 延 ...
分类:
其他好文 时间:
2017-06-26 21:14:19
阅读次数:
167