Car12
嵌入式开发,爱好者
展开
-
N32G430学习笔记1-freertos 移植笔记
基于N32G430移植freertos原创 2022-09-29 21:38:10 · 634 阅读 · 0 评论 -
freertos 内部机制
freertos 内部机制,主要内容来之韦东山的老师的视频这里感谢老师的无私奉献原创 2022-09-01 14:08:09 · 387 阅读 · 0 评论 -
1.FreeRTOS学习笔记-入门概述
FreeRTOS编程约定port 表示接口的意思int 型从不使用,只使用 short 和 long 型。在 Cortex-M 内核的 MCU 中,short 为 16 位,long 为 32位数据类型重定义在 portmacro.h 这个头文件中实现* 在 keil 中,默认 char 是无符号的变量前缀char 型变量的前缀是 c,short 型变量的前缀是 s,long 型变量的前缀是 l,portBASE_TYPE 类型变量的前缀是 x。还有其他的数据类型,比如数据结构,任原创 2021-11-17 19:19:06 · 520 阅读 · 0 评论 -
2.STM32F407ZGT6 学习笔记-移植 FreeRTOS
1. 在工程下建议FreeRTOS文件夹2. 在FreeRTOS文件夹下建立 src 和 port 文件夹 (src用于存放freertos源码,port文件夹存放内存和接口相关的文件)3. 复制freertos/source文件夹下所有c文件复制到刚刚建立的freertos/src目录下4. 复制FreeRTOSv9.0.0\FreeRTOS\Source\portablex下的MemMang和RVDS文件夹复制到刚刚建立的port问价夹下5. 将FreeRTOSv9.0.0\FreeRTOS原创 2021-11-27 20:41:04 · 833 阅读 · 0 评论 -
3.FreeRTOS学习笔记-任务
任务状态1. 任务相关函数1.1 任务挂起函数被挂起的任务绝不会得到 CPU 的使用权,不管该任务具有什么优先级void vTaskSuspend( TaskHandle_t xTaskToSuspend )1.2 挂起所有任务=挂起调度器实质就是挂起调度器 void vTaskSuspendAll( void )1.3 任务恢复函数让任务进入就绪态 void vTaskResume( TaskHandle_t xTaskToResume )中断函数专用–中断版xTask原创 2021-11-29 17:58:40 · 633 阅读 · 0 评论 -
4.FreeRTOS学习笔记-消息队列
消息队列传输的数据不定长支持先进先出FIFO,同时支持后进先出LIFO均支持超时机制。每个消息队列都与消息空间在同一段连续的内存空间中消息队列的大小是消息队列控制块大小+(单个消息空间大小 * 消息队列长度)任务或者中断服务程序都可以给消息队列发送消息超时发送,超时发送失败返回 errQUEUE_FULL发送紧急消息,就是放在队列头部支持 消息读超时包含头文件#include <queue.h>消息队列运作模型读消息的3中情况有就取出,没有 扭头就走没原创 2022-01-16 11:17:35 · 972 阅读 · 0 评论 -
5.FreeRTOS学习笔记- 互斥量
基本概念互斥量又称互斥信号量(本质是信号量),是一种特殊的二值信号量互斥量 支持互斥量所有权、递归访问以及防止优先级翻转的特性,用于实现对临界资源(如显示器、打印机)的独占式访问。任意时刻互斥量的状态只有两种,开锁或闭锁。持有该互斥量的任务也能够重复获得这个锁而不被挂起,这就是递归访问,也就是递归互斥量的特性,信号量重复获取则会被挂起互斥量与二值信号量最大的不同是:互斥量具有优先级继承机制,而信号量没有优先级继承机制优先级继承算法是指,暂时提高某个占有某种资源的低优先级任务的优先级,使之原创 2021-11-18 09:49:23 · 689 阅读 · 0 评论 -
6.FreeRTOS学习笔记-信号量
基本概念抽象的来讲,信号量是一个非负整数,所有获取它的任务都会将该整数减一(获取它当然是为了使用资源),当该整数值为零时,所有试图获取它的任务都将处于阻塞状态二值信号量二值信号量既可以用于临界资源访问也可以用于同步功能互斥量有优先级继承机制,二值信号量则没有这个机制二值信号量更偏向应用于同步功能(任务与任务间的同步或任务和中断间同步)而互斥量更偏向应用于临界资源的访问将二值信号量看作只有一个消息的队列因此这个队列只能为空或满计数信号量计数信号量肯定是用于计数原创 2021-11-17 20:18:34 · 892 阅读 · 0 评论 -
7.FreeRTOS学习笔记-事件
FreeRTOS 提供的事件特点事件只与任务相关联,事件相互独立,一个 32 位的事件集合(EventBits_t 类型的变量,实际可用与表示事件的只有 24位),用于标识该任务发生的事件类型,其中每一位表示一种事件类型(0 表示该事件类型未发生、1 表示该事件类型已经发生),一共 24 种事件类型。事件仅用于同步,不提供数据传输功能事件无排队性,即多次向任务设置同一事件(如果任务还未来得及读走),等效于只设置一次允许多个任务对同一事件进行读写操作支持事件等待超时机制逻辑与逻辑或是否原创 2021-11-18 11:00:34 · 751 阅读 · 0 评论 -
8.FreeRTOS学习笔记-软件定时器
基本概念软件定时器的回调函数类似硬件的中断服务函数,所以,回调函数也要快进快出,而且回调函数中不能有任何阻塞任务运行的情况,例如不可以使用vTaskDelay()FreeRTOS 提供的软件定时器支持单次模式和周期模式FreeRTOS 通过一个 prvTimerTask 任务(也叫守护任务 Daemon)管理软定时器只有设置 FreeRTOSConfig.h 中的宏定义 **configUSE_TIMERS **设置为 1 ,将相关代码编译进来以系统节拍周期为计时单位定时器消息队列的长度由宏原创 2021-11-18 12:07:37 · 934 阅读 · 0 评论 -
9.FreeRTOS学习笔记-任务通知
基本概念每个任务都有一个 32 位的通知值任务通知可以替代二值信号量、计数信号量、事件组,也可以替代长度为 1 的队列(可以保存一个 32位整数或指针值)通知比通过信号量等 ICP 通信方式解除阻塞的任务要快 45%,,并且更加省 RAM 内存空间打卡宏定义 configUSE_TASK_NOTIFICATIONS 设置为 1任务通知是属于任务中附带的资源,所以在任务被创建的时候,任务通知也被初始化的任务通知可以在任务中向指定任务发送通知,也可以在中断中向指定任务发送通知只有在任务中可以等待原创 2021-11-18 14:40:08 · 885 阅读 · 0 评论 -
10.FreeRTOS学习笔记-中断管理
FreeRTOS 的中断管理支持:开/关中断。恢复中断。中断使能。中断屏蔽。可选择系统管理的中断优先级中断管理的运作机制当中断产生时,处理机将按如下的顺序执行:保存当前处理机状态信息载入异常或中断处理函数到 PC寄存器把控制权转交给处理函数并开始执行当处理函数执行完成时,恢复处理器状态信息从异常或中断中返回到前一个程序执行点关闭中断时间在操作系统中,很多时候我们会主动进入临界段,系统不允许当前状态被中断打断,故而在临界区发生的中断会被挂起,直到退出临界段时候打开中断原创 2021-11-18 15:23:39 · 481 阅读 · 0 评论 -
11.FreeRTOS学习笔记-内存管理
heap_1.c 管理方案是 FreeRTOS 提供所有内存管理方案中最简单的一个,它只能申请内存而不能进行内存释放,并且申请内存的时间是一个常量heap_2.c方案支持释放申请的内存,但是它不能把相邻的两个小的内存块合成一个大的内存块heap_3.c 方案只是简单的封装了标准 C 库中的 malloc()和 free()函数,并且能满足常用的编译器。...原创 2021-11-18 15:11:11 · 373 阅读 · 0 评论 -
12.FreerRTOS学习笔记-链表的使用
数据结构的内部数据结构双向节点的定义struct xLIst_ITEM{ TickType xItemValue; //辅助值,用于节点做顺序排列 struct xList_ITEM *pxNect; // 指向下一个节点 struct xList_ITEM *pxFrevious; //指向上一个节点 void *pvOwner; // 指向拥有该节点的内核对象 void *pvContainer; // 指向该节点所在的对象原创 2022-01-17 11:21:27 · 669 阅读 · 0 评论