FreeRTOS
文章平均质量分 96
FreeRTOS学习
时光の尘
这个作者很懒,什么都没留下…
展开
-
基于STM32F103的FreeRTOS系列(十二)·信号量·互斥信号量
互斥信号量其实就是一个拥有优先级继承的二值信号量,在同步的应用中(任务与任务或中断与任务之间的同步)二值信号量最适合。互斥信号量适合用于那些需要互斥访问的应用中。在互斥访问中互斥信号量相当于一个钥匙,当任务想要使用资源的时候就必须先获得这个钥匙,当使用完资源以后就必须归还这个钥匙,这样其他的任务就可以拿着这个钥匙去使用资源。原创 2024-08-25 11:59:22 · 848 阅读 · 0 评论 -
基于STM32F103的FreeRTOS系列(十一)·信号量·二值信号量与计数信号量详细使用以及移植教程
信号量(Semaphore)是一种实现任务间通信的机制,可以实现任务之间同步或临界资源的互斥访问,常用于协助一组相互竞争的任务来访问临界资源。在多任务系统中,各任务之间需要同步或互斥实现临界资源的保护,信号量功能可以为用户提供这方面的支持。1.1 同步和互斥1.1.1 同步同步是指在执行任务时,通过某种机制来协调不同任务的行为,确保它们以正确的顺序和条件进行。简单来说,就是使得一个任务的执行进度能够与另一个任务的状态保持一致。原创 2024-08-22 05:00:00 · 1138 阅读 · 0 评论 -
基于STM32F103的FreeRTOS系列(十)·消息队列的使用详细介绍以及代码编写
队列又称消息队列,是一种常用于任务间通信的数据结构,队列可以在任务与任务间、中断和任务间传递信息,实现了任务接收来自其他任务或中断的不固定长度的消息。FreeRTOS 中使用队列数据结构实现任务异步通信工作,具有如下特性:① 消息支持先进先出方式排队,支持异步读写工作方式。② 读写队列均支持超时机制。③ 消息支持后进先出方式排队,往队首发送消息(LIFO)。④ 可以允许不同长度(不超过队列节点最大值)的任意类型消息。⑤ 一个任务能够从任意一个消息队列接收和发送消息。原创 2024-08-20 06:00:00 · 2025 阅读 · 2 评论 -
基于STM32F103的FreeRTOS系列(九)·任务创建函数的使用·静态方法和动态方法
来实现的,这个值可以随意设置,但是设置完后需要根据这个值来初始化系统滴答定时器,在这里,我们使用的是STM32F1系列的,其SysTick 有两种模式:一种是 8 分频模式(AHB/8),一种是 FCLK 模式(AHB)。对于任务函数“start_task”,为了确保在创建任务的过程中,任务调度不会被中断,可以调用taskENTER_CRITICAL();进行进入和退出临界区,先进行任务的创建,防止中断服务例程调用调度函数,导致任务调度在任务创建过程中进行,从而导致潜在的错误或资源争用。原创 2024-08-20 05:00:00 · 814 阅读 · 0 评论 -
江协科技/江科大STM32代码移植FreeRTOS实时操作系统
来实现的,这个值可以随意设置,但是设置完后需要根据这个值来初始化系统滴答定时器,在这里,我们使用的是STM32F1系列的,其SysTick 有两种模式:一种是 8 分频模式(AHB/8),一种是 FCLK 模式(AHB)。详细参看《STM32F10x 参考手册》。末尾讲了原因,文件太多了,上传和下载特别慢,并且下载完解压也不好解压,要解压的话可能要喜提360全家桶了,我们这里主要学习FreeRTOS的编程思路,以STM32为例,可以先将不需要的文件移除出去,文末会放一个移植好的链接。原创 2024-08-19 05:00:00 · 860 阅读 · 0 评论 -
基于STM32F103的FreeRTOS系列(八)·任务管理API详细解析
在裸机系统中,系统的主体就是main函数里面顺序执行的无限循环,这个无限循环里面 CPU 按照顺序完成各种事情。在FreeRTOS中,根据功能的不同,把整个系统分割成一个个独立且无限循环无法返回的函数,这个函数就称为任务。原创 2024-08-12 04:00:00 · 1287 阅读 · 0 评论 -
基于STM32F103的FreeRTOS系列(七)·任务创建·列表的使用超详细解析
列表是 FreeRTOS 中的一个数据结构,概念上和链表有点类似,列表被用来跟踪 FreeRTOS中的任务。每个列表项有前驱结点指针prev,同时又有后继结点指针next,这样,双向循环链表的增删改查非常方便,动态改变,节省内存!C语言菜鸟入门·数据结构·链表超详细解析-CSDN博客listFIRST_LIST_INTEGRITY_CHECK_VALUE //①校验值//②列表中的列表项数量。原创 2024-08-07 06:00:00 · 1198 阅读 · 0 评论 -
基于STM32F103的FreeRTOS系列(六)·如何进行FreeRTOS任务创建·逐行代码解析
在STM32F103微控制器中,栈(Stack)的概念与一般的嵌入式系统和计算机系统中的栈类似,它是用来存储函数调用过程中的局部变量、函数参数、返回地址等信息的一种数据结构。STM32F103微控制器中的每个线程(通常是每个任务或者每个中断服务程序)都有自己的堆栈空间。这些堆栈空间是在内存中预先分配好的,大小一般由编译器根据程序的需要决定。#define TASK1_STACK_SIZE 128//字//由于STM32是32位控制器,因此Task1_STACK_SIZE定义的为512字节。原创 2024-08-07 03:00:00 · 948 阅读 · 0 评论 -
基于STM32F103的FreeRTOS系列(五)·STM32F103移植FreeRTOS完整过程
目录1. FreeRTOS文件简介2. 移植FreeRTOS2.1 模版准备2.2 复制粘贴Source文件2.3 内核文件选择2.4 添加文件组2.5 添加源码文件2.6 添加接口文件2.7 添加路径2.8 复制头文件 上一章我们了解了如何下载FreeRTOS文件,但是发现下载完后无法正常解压,那是因为文件夹内不仅仅只有STM32的工程文件,还有许多别的工程文件,我们这里主要学习FreeRTOS的编程思路,以STM32为例,可以先将不需要的文件移除出去,下面对FreeRT原创 2024-07-28 09:58:09 · 1060 阅读 · 4 评论 -
基于STM32F103的FreeRTOS系列(四)·FreeRTOS资料获取以及简介
FreeRTOS是一个可裁剪的小型RTOS系统,其特点包括:① FreeRTOS 的内核支持抢占式,合作式和时间片调度。② SafeRTOS 衍生自 FreeRTOS,SafeRTOS 在代码完整性上相比 FreeRTOS更胜一筹。③ 提供了一个用于低功耗的 Tickless 模式。④ 系统的组件在创建时可以选择动态或者静态的 RAM,比如任务、消息队列、信号量、软件定时器等等。⑤ 已经在超过 30 种架构的芯片上进行了移植。原创 2024-07-27 14:20:56 · 939 阅读 · 4 评论 -
基于STM32F103的FreeRTOS系列(三)·使用STM32CubeMX创建FreeRTOS程序(HAL库)
通过配置 MCO 功能,可以选择输出不同频率的时钟信号,并且可以选择输出源为系统时钟(HCLK)、外部晶振时钟、PLL 时钟等。在 STM32 微控制器中,MCO 是一个非常有用的功能,可以将系统时钟(HCLK)或者外部时钟信号输出到指定的引脚上,用于外部设备的时钟同步或者调试等目的。对于“GPIO mode”,其中“Output Push Pull”表示推挽输出,“Output Open Pull”表示开漏输出。点击“System Core”,选择“RCC”,按照如下进行配置HSE和LSE。原创 2024-07-27 10:34:23 · 922 阅读 · 0 评论 -
基于STM32F103的FreeRTOS系列(二)·多任务系统
而任务A、B的函数是依次轮流运行的,假设系统运行了100秒,其中任务A总共运行了50秒,任务B总共运行了50秒,任务A在努力处理复杂的运算,任务B仅仅是浪费CPU资源。在task_A或task_B打印的过程中,另一个任务不能打印,以避免数字、字母混杂在一起,比如避免打印这样的字符:“012abc”。基于多任务系统编写程序时,反而更简单了:“喂饭任务”的代码和“回信息任务”的代码,编写它们时甚至都不需要考虑它和其他函数的相互影响。在这个过程中,任务A处理复杂事情的时候可以独占CPU资源,加快处理速度。原创 2024-07-23 04:00:00 · 755 阅读 · 0 评论 -
基于STM32F103的FreeRTOS系列(一)·单片机设计模式介绍·裸机程序的设计模式
裸机程序的设计模式可以分为:轮询、前后台、定时器驱动、基于状态机。:周期性地查询各个模块或函数的状态,适用于简单且响应时间要求不高的系统,但无法有效解决复杂函数之间的相互影响问题。:通过将关键任务放在前台处理,而非关键任务放在后台,以确保关键任务的优先执行。这种方式对优先级管理有效,但复杂函数之间的相互影响仍可能存在。:通过定时器周期性地触发任务执行,适合需要定期执行任务的场景,但不能解决函数间相互影响的问题。:将系统的各种状态和状态转移定义清晰,通过状态切换来控制系统行为。原创 2024-07-22 07:00:00 · 1716 阅读 · 0 评论