【STM32MP157学习】使用CubeMx+FreeRTOS参考配置记录

在CubeMX中开启FreeRTOS

在CubeMx工程中找到Pinout&COnfiguration,在左边框选择Middleware下的FreeRTOS,右边框上面选择“CMSIS_V2”接口即可使用FreeRTOS。
在这里插入图片描述

配置FreeRTOS

下面是使用FreeRTOS开发,生成代码可能有用的配置项。

1 内核设置

在右边框下面找到Kernel Setting,往下看到下面几个选项
在这里插入图片描述

在这里插入图片描述

2 钩子函数(回调函数)定义

继续往下看到Hook function related definitions在这里插入图片描述
USE_IDLE_HOOK 钩子函数是一种回调函数,用于在任务执行一次之后或者某些事件发生后执行的函数,该配置项里面有五个选项,控制5种不同功能的钩子函数开启。使能后,系统生成一个相应的空回调函数:
• USE_IDLE_HOOK 每当空闲任务执行一次
• USE_TICK_HOOK 每个TICK周期
• USE_MALLOC_FAILED_HOOK 当申请动态内存失败时
• USE_DAEMON_TASK_STARTUP_HOOK 任务刚启动时
• CHECK_FOR_STACK_OVERFLOW 任务栈溢出时

3 运行时间和任务状态获取的定义

在这里插入图片描述
• GENERATE_RUN_TIME_STATS
→ 开启时间统计功能,在调用 vTaskGetRunTimeStats() 函数时,将任务运行时间信息保存到可读列表中
•USE_STATS_FORMATTING_FUNCTIONS
→ 使能后会生成 vTaskList() 和 vTaskGetRunTimeStats() 函数用于获取任务运行状态

4 软件定时器定义

在这里插入图片描述
这四个配置项主要与软件定时器处理任务有关,软件定时器任务属于系统任务(守护线程),开启软件定时器后用于维护软件定时器。默认开启软件定时器任务、软件定时器任务优先级、定时器任务队列长度(FreeRTOS 是通过队列来发送控制命令给定时器任务,叫做定时器命令队列,此处设置队列长度)、软件定时器任务堆栈大小

5 中断优先级设置

在这里插入图片描述
上图表示设置FreeRTOS 系统可管理的中断优先级配置范围为5-15

6 创建和配置定时器

在这里插入图片描述

点击Add参数配置完成后,生成代码,我们可以在 freertos.c 文件里面看到定时器创建后获得的句柄,以及生成的回调函数。
在这里插入图片描述
在这里插入图片描述

7 创建和配置信号量

常用于控制对共享资源的访问和任务同步

8 创建和配置互斥量

其实就是一个拥有优先级继承的二值信号量
互斥量使用方式和信号量基本相同,因为互斥量本质上就是信号量的一种。互斥量的释放必须由获取它的任务进行释放,如果不释放,可能会造成死锁

9 创建和配置事件(仅CMSIS_V2有,CMSIS_V1无)

系统需要多对一的同步的情况下使用,比如同时满足5个按键按下时,任务启动
在这里插入图片描述

10 任务通知

在这里插入图片描述在这里插入图片描述
在这里插入图片描述

参考资料

https://blog.csdn.net/qq_45396672/article/details/120877303

  • 16
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值