FreeRTOS
文章平均质量分 84
FreeRTOS相关内容
Can!
这个作者很懒,什么都没留下…
展开
-
FreeRTOS移植到GD32
可使用的最大优先级数量,设置完成以后就可以设置任务优先级,但必须在0~(configMAX_PRIORITIES-1)区间内,其中0为最低优先级,configMAX_PRIORITIES-1为最高优先级。这个大小的单位不一定是1byte,比如说stm32是32位单片机,那么大小的单位就是4byte,当configMINIMAL_STACK_SIZE=100时,就相当于空闲任务堆栈大小为400byte。,根据自己使用的是多少位的单片机来做修改,stm32是32位MCU,所以选择32位。原创 2024-02-19 22:57:24 · 1699 阅读 · 0 评论 -
FreeRTOS基础知识
前后台系统的实时性差,前后台系统各个任务(应用程序)不管这个程序现在有多紧急,都只能排队等着轮流执行!相当于所有任务(应用程序)的优先级都是一样的;而且代码的扩展性差,不利于功能的添加和维护。但是前后台系统简单资源消耗也少!原创 2024-02-19 23:10:57 · 1105 阅读 · 0 评论 -
FreeRTOS 任务创建和调度器开启
答案是为了隔离OS和应用程序,程序的运行少不了堆栈,因为我们CPU只有少量的通用寄存器,当我们使用的临时变量比较多得时候,就需要将这些临时变量存储到堆栈里,而堆栈的push和pop都是通过SP来实现的,所以通过MSP和PSP就能实现OS内核与应用程序的隔离,应用程序task用PSP,而OS用MSP,这样会非常安全。现在来看(1)、(2)、(3)这三步起始就是为了获取MSP的初始值。(7)和(8)、数据同步和指令同步屏障,这两个指令的详细内容请参考《权威指南》的“第 5章 指令集”的 5.6.13 小节。原创 2024-02-29 20:41:12 · 1042 阅读 · 0 评论 -
FreeRTOS任务切换
将当前运行的任务的寄存器保存到栈中,再将就绪任务的数据从栈中保存到寄存器,然后运行。原创 2024-02-29 20:52:29 · 1626 阅读 · 0 评论 -
FreeRTOS时间管理
(1) 延时时间由参数xTicksToDelay来确定,为要延时的时间节拍数,延时时间肯定要大于 0;(5) 如果函数xTaskResumeAll()没有进行任务调度的话那么在这里就得进行任务调度。是指每次延时都是从任务执行函数vTaskDelay()开始,延时指定的时间结束;(3)调用函数prvAddCurrentTaskToDelayedList()(2) 调用函数vTaskSuspendAll()挂起任务调度器。(4) 调用函数xTaskResumeAll()恢复任务调度器。原创 2024-02-29 20:56:43 · 306 阅读 · 0 评论 -
FreeRTOS 队列
(1)队列的作用是在任务与任务、任务与中断之间。原创 2024-02-29 21:01:15 · 1199 阅读 · 0 评论 -
FreeRTOS 信号量
(1)当信号量被获取了,信号量值变为0;当信号量被释放了,信号量值变为1。把这种取值只有0与1两种状态的信号量称之为二值信号量。创建二值信号量时,系统会为创建的二值信号量分配内存。(2)二值信号量是一种长度为1,消息大小为0的特殊消息队列。因为这个队列只有空或满两种状态,而且消息大小为0,因此在运用时,只需要知道队列中是否有消息即可,而无需关注消息是什么。原创 2024-02-29 21:08:29 · 827 阅读 · 0 评论 -
FreeRTOS 事件标志组
事件或多个任务进行同步,此时信号量就无法满足。FreeRTOS为此提供了一个可选的解决方法,那就是事件标志组。当某个任务可能会需要与。原创 2024-02-29 21:16:05 · 253 阅读 · 0 评论 -
FreeRTOS 软件定时器
软件定时器允许设置一段时间,当设置的时间到达之后就执行定时器的回调函数。回调函数的两次执行间隔叫做定时器的定时周期。简而言之,当定时器的定时周期到了以后就会执行回调函数。原创 2024-02-29 21:13:29 · 879 阅读 · 0 评论 -
FreeRTOS 内存管理
heap_2不会把释放的内存块合并成一个大块,这样有一个缺点,随着你不断的申请内存,内存堆就会被分为很多个大小不一的内存(块),也就是会导致内存碎片!,它提供了内存块合并算法。(2)heap_2提供了内存释放函数,用户代码也可以直接调用函数pvPortMalloc()和 vPortFree()来申请和释放内存,但是 heap_2 会导致内存碎片的产生!(4)heap_4相对与heap_2提供了内存合并功能,可以降低内存碎片的产生,我们移植FreeRTOS 的时候就选择了heap_4。原创 2024-02-29 21:20:36 · 1097 阅读 · 0 评论 -
FreeRTOS 其它知识点
②系统处于低功耗模式的时间至少大于configEXPECTED_IDLE_TIME_BEFORE_SLEEP个时钟节拍,宏configEXPECTED_IDLE_TIME_BEFORE_SLEEP默认在文件FreeRTOS.h中定 义为2,我们可以在FreeRTOSConfig.h中重新定义,此宏必须大于2!处理器工作在低功耗模式的时间太短没有意义,所以我们必须对工作在低功耗模式的时间做个限制,宏configEXPECTED_IDLE_TIME_BEFORE_SLEEP就是用来完成这个功能的。原创 2024-02-29 21:25:18 · 970 阅读 · 0 评论