FreeRTOS
freer的学习
源自1994
一切都是最好的安排
展开
-
【FreeRTOS】CPU使用率
头文件定义/******************************************************************** FreeRTOS与运行时间和任务状态收集有关的配置选项 **********************************************************************///启用运行时间统计功...原创 2019-04-23 22:06:55 · 4508 阅读 · 1 评论 -
【FreeRTOS】中断管理
开/关中断。恢复中断。中断使能。中断屏蔽。可选择系统管理的中断优先级。硬件1、外设,外部中断2、中断控制器(Cortex-M 系列控制器NVIC),接收外部中断,然后发送中断信号给CPU3、CPU,响应中断源请求,NVIC最多支持240个中断,每个中断最多256优先级名词中断号:使得计算机能够判断是哪个设备提出的中断请求的标志中断请求:向 CPU 提出申请,临时征用,处理...原创 2019-04-23 21:50:07 · 1598 阅读 · 0 评论 -
【FreeRTOS】内存管理
heap_1.c只能申请内存而不能进行内存释放,并且申请内存的时间是一个常量,这样子对于要求安全的嵌入式设备来说是最好的,因为不允许内存释放,就不会产生内存碎片而导致系统崩溃,但是也有缺点,那就是内存利用率不高,某段内存只能用于内存申请的地方,即使该内存只使用一次,也无法让系统回收重新利用。内存申请函数 pvPortMalloc()heap_2.c查找比申请大或者等于的内存空间,在其中选...原创 2019-04-23 21:14:44 · 824 阅读 · 0 评论 -
【FreeRTOS】任务通知
从之前学习的过程中,任务间通信是需要创建队列、二进制信号量、计数信号量或事件组,这些都需要消耗内核资源;而任务通知就更为的灵活,按照官方说法,使用任务通知比通过信号量等 ICP 通信方式解除阻塞的任务要快 45%,并且更加省 RAM 内存空间(使用 GCC 编译器,-o2 优化级别),任务通知的使用无需创建队列。 configUSE_TASK_NOTIFICATIONS 1几种方式(...原创 2019-04-23 08:31:25 · 702 阅读 · 0 评论 -
【FreeRTOS】软定时
一般系统利用 SysTick 作为软件定时器的基础时钟,软件定时器的回调函数类似硬件的中断服务函数,所以,回调函数也要快进快出,而且回调函数中不能有任何阻塞任务运行的情况(软件定时器回调函数的上下文环境是任务),比如 vTaskDelay()以及其它能阻塞任务运行的函数,两次触发回调函数的时间间隔xTimerPeriodInTicks叫定时器的定时周期。单次模式:当用户创建了定时器并启动了定时...原创 2019-04-22 09:08:33 · 739 阅读 · 0 评论 -
【FreeRTOS】事件
事件特点事件只与任务相关联,事件相互独立,一个 32 位的事件集合(EventBits_t 类型的变量,实际可用与表示事件的只有 24 位),用于标识该任务发生的事件类型,其中每一位表示一种事件类型(0 表示该事件类型未发生、1 表示该事件类型已经发生),一共 24 种事件类型。事件仅用于同步,不提供数据传输功能。事件无排队性,即多次向任务设置同一事件(如果任务还未来得及读走),等效于只设...原创 2019-04-20 10:28:46 · 1298 阅读 · 0 评论 -
【FreeRTOS】信号量和互斥量
二值信号量同步,创建时为空,任务1获取(空)进入阻塞;任务2释放信号量,于是任务1获取信号量得以进入就绪状态资源被获取了,信号量值就是 0,信号量资源被释放,信号量值就是 1,把这种只有 0 和 1 两种情况的信号量称之为二值信号量 /* 尝试创建一个信号量 */ xSemaphore = xSemaphoreCreateBinary();下图为两个任务对一个...原创 2019-04-19 08:29:12 · 3044 阅读 · 0 评论 -
【FreeRTOS】消息队列
消息队列一种常用于任务间通信的数据结构,队列可以在任务与任务间、中断和任务间传递信息,实现了任务接收来自其他任务或中断的不固定长度的消息,任务能够从队列里面读取消息;任务获取方式先进先出原则(FIFO),或是后进先出原则(LIFO)队列大小单个消息空间大小与消息队列长度的乘积头指针 pcHead、尾指针 pcTail、消息大小 uxItemSize 以及队列长度 uxLength为...原创 2019-04-18 09:42:00 · 644 阅读 · 0 评论 -
【FreeRTOS】任务的创建
BaseType_t xTaskCreate( TaskFunction_t pvTaskCode, const char * const pcName, unsigned short usStackDepth, void * const pvParameters, UBa...原创 2019-04-17 20:19:01 · 1712 阅读 · 0 评论 -
【FreeRTOS】从0到1写内核(总结)
《FreeRTOS 内核实现与应用开发实战—基于STM32》系统模型事件响应事件处理特点轮询主程序主程序(无限大循环)轮询响应事件,轮询处理事件前后台中断主程序(无限大循环)实时响应事件,轮询处理事件多任务中断任务实时响应事件,实时处理事件轮询是没有突发事件,或者是靠轮询速度来响应突发事件,但是可能会忽略掉突发事件前后台是实时响应...原创 2019-04-13 19:24:32 · 1738 阅读 · 1 评论