STM32FreeRTOS

STM32FreeRTOS,第1张

目录
  • 移植步骤
  • 任务特性
  • FreeRTOS任务状态
  • FreeRTOS任务优先级
  • 任务实现
  • FreeRTOS任务控制块
  • FreeRTOS任务堆栈
  • 任务创建和删除API
  • 任务挂起和恢复API

官网: www.freertos.org


解压后的文件目录

发现有一个FreeRTOS和一个FreeRTOS-Plus,Plus是手机那块的,我们不用,进去FreeRTOS文件发现有几个目录,分别是Demo例程,License许可证,Source源码,Test文本

移植步骤

1.在基础工程种新建Freertos文件夹,并且将Source源码添加到这个文件夹中。





2.在poertable文件夹中保留keil、MemMang和RVDS,其他删除

3.在基础工程中新建分组FreeRTOS_CODE和FreeRTOS_PORTTABLE,并且添加.c文件添加头文件.h路径。


都在FreeRTOS那个文件夹中有,我的芯片是CM3的
heap_4.c:FreeRTOS\portable\MemMang\heap_4.c
port:FreeRTOS\portable\RVDS\ARM_CM3\port.c

4.从demo中复制FreeRTOSConfig.h文件到自己的工程目录FreeRTOS\include中
5.移植SYSTEM文件,里面包括sys.c,usart.c,delay.c

任务特性

1.任务简单
2.任务没有数量使用限制
3.任务支持抢占(抢占式内核)
4.任务支持优先级
5.每个任务都拥有堆栈导致了RAM使用量增大
6.如果使用抢占的话请必须仔细的考虑重入问题

FreeRTOS任务状态

FreeRTOS任务优先级

任务优先级决定了任务的执行优先级别,在FreeRTOS中优先级可选范围位:
0 ~ configMAX_PRIORITIES-1
数字越大,优先级越高
最大优先级限制通常为32

任务实现

FreeRTOS任务控制块
描述任务属性的数据结构称为任务控制块,称为TCB_t.
typedef struct tskTaskControlBlock   
{
    volatile StackType_t * pxTopOfStack; 
    #if ( portUSING_MPU_WRAPPERS == 1 )
        xMPU_SETTINGS xMPUSettings; 
    #endif
    ListItem_t   xStateListItem;                  
    ListItem_t xEventListItem;                              UBaseType_t   uxPriority;                  
    StackType_t * pxStack;   
} tskTCB
 typedef tskTCB TCB_t; 
FreeRTOS任务堆栈

任务堆栈用来保存任务现场(CPU寄存器值),创建任务的时候需要指定任务堆栈,
任务堆栈的变量类型为 StackType_t ,此变量类型如下:

#define portSTACK_TYPE uint32_t
#define portBASK_TYPE long
#define portSTACK_TYPE StackType_t

任务创建和删除API


FreeRTOS之静态创建任务和动态创建任务的区别

任务挂起和恢复API

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/langs/562559.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-04-01
下一篇 2022-04-01

发表评论

登录后才能评论

评论列表(0条)

保存