![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
FreeRTOS编程学习
文章平均质量分 86
独处东汉
这个作者很懒,什么都没留下…
展开
-
FreeRTOS学习第10篇--队列使用示例
本文目标:FreeRTOS学习第10篇–队列使用示例按照本文的描述,可以进行简单的使用队列。本文实验条件:拥有C语言基础,装有编译和集成的开发环境,比如:Keil uVision5。原创 2024-03-14 21:47:08 · 981 阅读 · 1 评论 -
FreeRTOS学习第9篇--队列介绍
队列中,数据的读写本质就是环形缓冲区,在这个基础上增加了互斥措施、阻塞-唤醒机制。原创 2024-03-11 21:15:15 · 724 阅读 · 0 评论 -
FreeRTOS学习第8篇--同步和互斥操作引子
下载代码到板子上,可以看到计算的结果在第一行中进行显示,在第二行那里显示了计算这么多个数所需要的时间,打印任务PrintTask在计算任务CalcTask没计算完时也抢占cpu资源,导致计算会有些慢,这里我根据计算的结果,简单粗暴的加了相应的延迟vTaskDelay(3000);当然这只是一种例子,有一定的缺陷,当作学习使用。在本次实验中,设计两个两个任务,任务PrintTask负责打印一些信息,任务CalcTask进行计算,当计算任务完成计算时,将结果传递给任务PrintTask进行显示。原创 2024-02-25 19:48:28 · 467 阅读 · 1 评论 -
FreeRTOS学习第7篇--周期性延迟和相对性延迟函数
这个函数适合实现周期性的延时操作,它可以保证任务以固定的频率执行,不受其他因素的干扰。vTaskDelay是相对延时函数,它指定的是从调用该函数后开始计算的延时时间,单位是系统节拍时钟周期。这个函数适合需要固定时间间隔的延时操作,但是它可能受到其他任务和中断的影响,导致下一次执行的时间不准确。下载代码到板子上,使用vTaskDelay的相对延迟函数时,我显示的时间差始终是稳定的,我使用vTaskDelayUntil的绝对延迟时,我显示的时间差就有部分变化。这个两个的函数使用举例可以看我下面的代码片段。原创 2024-01-17 23:23:46 · 988 阅读 · 0 评论 -
FreeRTOS学习第6篇–任务状态挂起恢复删除等操作
本文目标:学习与使用FreeRTOS中的几项操作,有挂起恢复删除等操作。按照本文的描述,应该可以跑通实验并举一反三。本文实验条件:拥有C语言基础,装有编译和集成的开发环境,比如:Keil uVision5。原创 2024-01-07 21:29:26 · 505 阅读 · 0 评论 -
FreeRTOS学习第5篇--任务优先级
下载代码到板子上,一开始时,这三个任务的优先级都是osPriorityNormal级别的,都在按部就班的运行各自的功能函数,但是当我在IRReceiver_Task任务中按下相应的按键时,把对应的优先级任务提高之后,这三个任务中就只有一个高优先级的任务在执行了,直接霸占了cpu资源,让另两个任务都没法得到执行,连IRReceiver_Task后续也不执行了。不过有时也记不住,直接看封装层的信息比较好,在文件cmsis_os2.h中定义了相关的优先级,看英文意思就是越往后优先级就越高的。原创 2023-12-26 21:54:15 · 1052 阅读 · 0 评论 -
FreeRTOS学习第4篇--任务使用参数
使用这个g_LCDCanUse全局变量,来进行简单的保护,因为OLED屏在刷新的屏幕的时候会用到i2c,等一个任务使用完了,另一个任务接着使用,这是简单粗暴的使用,仅供学习参考。我这里使用一个TaskPrintInfo结构体来传入一个坐标值和一个字符串,我的这个PrintTask中,最深的栈只有96字节,我这里创建任务时使用128的任务栈,也就是512字节,绰绰有余,不必但是死机等问题。创建3个优先级相同的PrintTask任务,在任务中,使用OLED显示任务的执行次数。原创 2023-12-10 14:36:52 · 606 阅读 · 0 评论 -
FreeRTOS学习第3篇--任务栈使用与理解
通过本次的工程实践,为分配任务时的栈大小情况积攒下经验,为以后更加复杂的编程积累工程经验。原创 2023-11-23 20:30:35 · 1424 阅读 · 0 评论 -
FreeRTOS学习第2篇--创建任务(动态方法和静态方法)
在本次示例中,创建了4个任务。其中StartDefaultTask是翻转LED的值、ColorLED_Test是一个全彩的灯、PlayMusic是一个无源蜂鸣器播放孤勇者的任务、IRReceiver_Test是一个接收红外码值的任务。任务函数的原型必须符合 TaskFunction_t 类型,即 void func(void *pvParameters),其中 pvParameters 是一个指向和任务相关的参数的指针。这个参数是任务的实际参数,它的类型可以是 void 指针或者其他任意类型的指针。原创 2023-11-17 22:45:13 · 210 阅读 · 0 评论 -
FreeRTOS学习第1篇--系统介绍与移植
FreeRTOS是一个轻量级的实时操作系统,它提供了实时操作系统所需的所有功能,包括资源管理、同步、任务通信等。它适用于各种不同的硬件平台,并且可以灵活地配置以满足不同的应用需求。FreeRTOS具有可移植性、可扩展性和可维护性,因此被广泛应用于嵌入式系统和物联网设备中。原创 2023-11-07 22:41:03 · 123 阅读 · 0 评论