
FreeRTOS
文章平均质量分 90
没想好呢
南有孤岛°
I've been trying!!!不转嵌入式心有不甘!!!需要程序源码联系我
展开
-
FreeRTOS_Stm32F407系列单片机标准库移植
链接:FreeRTOS此时我们需要下载以下两个仓库,点进去按下面的步骤下载就行了,另一个也是这样下。链接: FreeRTOS官网打开链接我们可以看到有两个下载选项,我们下载第一个就行。下载速度较慢。链接:https://pan.baidu.com/s/1x00zgnJfCae75DpJ1W4RIg?pwd=1233提取码:1233在keil中点击魔术棒,进入“C/C++”,在Include Paths中添加FreeRTO、src、inc、port路径。按下面的操作分别添加src文件夹和por原创 2024-02-01 00:33:28 · 2157 阅读 · 0 评论 -
FreeRTOS_调试与优化
在使用FreeRtos进行开发的过程中,我们通常需要了解系统的运行状态、内存、CPU使用情况等信息,来确保系统能够长期稳定的运行。当前任务的剩余内存;当前任务历史最小内存;系统总的剩余内存;系统运行的总时间;单个任务的运行时间;每个任务占用的CPU时间;1/*为1时启用可视化跟踪调试*/1。原创 2023-12-09 14:28:00 · 2432 阅读 · 0 评论 -
FreeRTOS_中断管理
总体而言,SYSTICK中断提供了任务调度的时基,而PendSV中断用于执行实际的任务切换操作。这两者共同协作,实现了FreeRTOS的多任务调度机制。原创 2023-11-27 10:35:57 · 1248 阅读 · 0 评论 -
FreeRTOS_Stm32F103系列单片机标准库移植
下面的教程是基于从github下载压缩包进行的,最好下载这个或者直接看3.1,从我百度网盘下载。如果是别的下载源也问题不大,大同小异。链接:https://pan.baidu.com/s/1x00zgnJfCae75DpJ1W4RIg?链接:https://pan.baidu.com/s/1E_bi4nIzayskaVl3YrLBGA?按下面的操作分别添加src文件夹和port文件夹下的所有.c文件。打开链接我们可以看到有两个下载选项,我们下载第一个就行。点进去按下面的步骤下载就行了,另一个也是这样下。原创 2023-11-26 20:54:57 · 2143 阅读 · 30 评论 -
FreeRTOS_临界资源管理
为确保临界段代码的执行不被中断,在进入临界段之前须关中断,而临界段代码执行完毕后,要立即开中断。如果有别的任务来跟你竞争临界资源,你可以把中断关掉:这当然可以禁止别的任务运行,但是这代价太大了。如果只是禁止别的任务来跟你竞争,不需要关中断,暂停调度器就可以了:在这期间,中断还是可以发生、处理。宏,是可以递归使用的,它的内部会记录嵌套的深度,只有嵌套深度变为0时,调用。宏,是可以递归使用的,它的内部会记录嵌套的深度,只有嵌套深度变为0时,对于临界段要做到执行时间越短越好,否则会影响系统的实时性。原创 2023-11-15 21:58:55 · 500 阅读 · 0 评论 -
FreeRTOS_软件定时器(Timer)
队列的使用可以使定时器和守护任务之间实现解耦,提高系统的可扩展性和灵活性。守护任务可以根据队列中的消息进行动态调度和管理定时器,而定时器任务只需负责按时触发定时器和发送相应的消息到队列,而无需关心具体的处理逻辑。软件定时器的守护任务是一个负责管理和处理软件定时器的后台任务。在创建软件定时器时,需要指定回调函数,在定时器到期时,FreeRTOS自动调用该函数。动态分配内存的定时器,当我们不需要使用时可以将其删除以回收内存。创建软件定时器有两种方法:动态分配内存和静态分配内存。原创 2023-11-14 11:03:06 · 1133 阅读 · 0 评论 -
FreeRTOS_直接任务通知(Driect Task Notifications)
我们使用队列、信号量、事件组时,都需要提前创建对应的结构体,双方通过中间的结构体进行通信。使用任务通知时,允许一个任务直接通知另一个任务进行操作,不需要经过中间结构体。任务通知的结构体是由FreeRTOS内核在任务创建时自动创建的,并且会直接关联到相应的任务句柄上。一个8位的通知状态变量;一个32位的通知值变量ISR只能发送任务通知,无法接收任务通知。通知的数据只能由相应的任务独享。发送方无法进入堵塞状态,接收方可以堵塞等待。原创 2023-11-13 10:04:04 · 192 阅读 · 0 评论 -
FreeRTOS_事件组(Event Group)
马上就要上课了,老师正在教室里等待:张三、李四、王五都到教室了,那就可以开始上课了。快下课时,老师说这道题回答完就可以下课了,谁举手谁就来回答。原创 2023-11-12 16:42:18 · 210 阅读 · 1 评论 -
FreeRTOS_互斥量(Mutex)
资源还是共享的,线程间也还是竞争的,但通过锁将资源的访问变为互斥操作,而后与时间有关的错误也不会在产生了。互斥量是一种特殊的信号量,所以获取、释放、删除的API基本和信号量的通用。互斥量的获取、释放一般不在中断中执行,所以此处无FromISR结尾函数。每个线程在对资源操作前都尝试先加锁,成功加锁才能操作,操作结束后解锁。注意:同一个时刻,只能有一个线程持有该锁。使用互斥量时,先创建,然后获取,再释放。互斥量是一种特殊的二进制信号量。在有多线程访问共享资源时使用。原创 2023-11-11 22:00:59 · 486 阅读 · 1 评论 -
FreeRTOS_信号量(Semaphore)
若同时有多个消费者,则会有先提供给优先级更高的,若优先级相等,则提供给等待时间最长的。当消费者想要获得资源时,若信号量的计数值未0,则消费者可以阻塞也可以直接返回失败。当生产者”give“资源后,就会将计数值加1,并且唤醒正在阻塞等待的消费者。此函数用于删除使用动态方法创建的信号量,它会释放回收资源并避免内存泄漏。信号量的使用流程:创建信号量、添加资源、获得资源、删除信号量。读写信号量的函数有两套:在任务中使用、在ISR中使用。,所以更加节省内存,并且容易维护。信号量根据最大计数值的不同分为。原创 2023-11-11 17:21:54 · 315 阅读 · 1 评论 -
FreeRTOS_队列(Queue)
当有多个任务等待读写队列时,优先级最高的任务会先进入就绪态;若多个任务的优先级相同,则等待最久的任务会优先进入就绪态。中断只能使用以 “FromISR” 结尾的 API 函数。队列的使用流程:创建队列、写队列、读队列、删除队列。写队列的函数有两套,在任务中使用、在ISR中使用。)时使任务进入堵塞状态,提高CPU的运行效率。使用队列来传递数据可以在读写不成功(队列的创建和任务的创建类似,分为。队列(queue)可以用于"原创 2023-11-06 22:28:15 · 367 阅读 · 0 评论 -
FreeRTOS_任务管理
如果任务当前正在等待时间或外部事件,则该任务被认为处于阻塞状态。例如,如果一个任务调用vTaskDelay(),它将被阻塞(被置于阻塞状态), 直到延迟结束。处于阻塞状态的任务通常有一个"超时"期, 超时后任务将被超时,并被解除阻塞, 即使该任务所等待的事件没有发生。当任务实际执行时,它被称为处于运行状态。与“阻塞”状态下的任务一样, “挂起”状态下的任务不能 被选择进入运行状态,但处于挂起状态的任务 没有超时。任务已经准备好进入运行态了,但是还有其它任务正在运行,此时,它就处于就绪态。原创 2023-11-04 20:57:53 · 147 阅读 · 1 评论 -
使用CubeMX创建FreeRTOS工程
最近在跟着百问网韦东山老师学习FreeeRTOS。第一个任务就是利用CubeMX创建一个FreeRTOS工程,在这里简单记录一下步骤。原创 2023-10-21 21:03:56 · 1194 阅读 · 4 评论 -
FreeRTOS_空闲任务
总结整理下freertos中空闲任务的作用,加深下理解。原创 2023-10-18 00:12:40 · 433 阅读 · 1 评论 -
ESP32+FreeRTOS
对FreeRTOS主要API进行整理原创 2023-10-13 20:43:36 · 2564 阅读 · 0 评论