打印
[其他ST产品]

CubeMX配置FreeRTOS跑多线程任务

[复制链接]
806|50
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
前言:想起以前用标准库做RTOS的时候一大堆操作就很烦,还好MX支持了直接配置生成RTOS工程很方便,最近发现一些很久以前买的模块没用上放着占地方然后顺便拿出来做了个小遥控器玩玩,下面给遥控器配个RTOS跑跑。

软件:

STM32CubeMX V5.3.0  

固件库版本:
STM32Cube FW_F1 V1.8.0

硬件:

STM32F103C8T6

0.96寸IIC接口OLED

双通道遥感电位器

正文:
1、接着用上次配的工程,打开RTOS,配置内核时钟


————————————————

使用特权

评论回复
评论
雨果喝水 2023-4-18 23:33 回复TA
版权声明:本文为CSDN博主「linzs.online」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。 原文链接:https://blog.csdn.net/weixin_40599145/article/details/100164676 
沙发
雨果喝水|  楼主 | 2023-4-18 23:34 | 只看该作者
配置时基产生定时器

HAL库函数如CAN通讯用的是HAL_IncTick(),而HAL_IncTick()是CubeMX的TimeBase配置的,这个时候如果需要实时响应,则TimeBase最好为最高优先级0,即根据CubeMX推荐的设置TimeBase为TIM1提供。而原先裸机的HAL系统时钟用的Systick,现在Systick用到FreeRTOS上的调度,所以要求Systick为最低优先级15,这样可以保证systick不会对进程造成影响,仅存在延时。而消除延时的手段并不是提高systick的优先级,而是让中断服务程序更快。

使用特权

评论回复
板凳
雨果喝水|  楼主 | 2023-4-18 23:34 | 只看该作者

使用特权

评论回复
地板
雨果喝水|  楼主 | 2023-4-18 23:34 | 只看该作者
2、配置Config parameters,这里大部分是默认参数,然后因为后面要开三个任务,默认堆栈大小不够,修改了一个总堆栈大小

使用特权

评论回复
5
雨果喝水|  楼主 | 2023-4-18 23:34 | 只看该作者
关于里面参数的相关含义这里有一篇介绍得很好的文章

https://blog.csdn.net/zhzht19861011/article/details/50134883

现在把部分重要的参数整理成表格如下:

使用特权

评论回复
6
雨果喝水|  楼主 | 2023-4-18 23:35 | 只看该作者

使用特权

评论回复
7
雨果喝水|  楼主 | 2023-4-18 23:35 | 只看该作者

使用特权

评论回复
8
雨果喝水|  楼主 | 2023-4-18 23:35 | 只看该作者
3、配置Include parameters,用于裁剪内核,定制一个合适大小的内核,设置关闭某些没必要的API可以减轻内核大小。

使用特权

评论回复
9
雨果喝水|  楼主 | 2023-4-18 23:36 | 只看该作者
4、在TaskAndQueues任务列表中添加自己的任务任务及队列的配置。

TaskName是任务名称,一个字符串而已。下面是优先级配置,再往下是任务堆栈大小。EntryFunction是任务函数名。CodeGenerationOption是选择自动生成代码是否声明成weak。Allocation是配置内存是否动态分配,此处CUbeMX默认动态分配不给更改。


使用特权

评论回复
10
雨果喝水|  楼主 | 2023-4-18 23:36 | 只看该作者
5、生成代码,在freertos.c文件里面可以看到刚刚我们定义函数名字的函数生成了,但是还是空函数,可以自己添加逻辑和算法处理函数。

使用特权

评论回复
11
雨果喝水|  楼主 | 2023-4-18 23:36 | 只看该作者
我们做好逻辑和算法处理函数之后直接在这个文件里面调用即可,main.c文件不需要做其他操作

使用特权

评论回复
12
雨果喝水|  楼主 | 2023-4-18 23:37 | 只看该作者
在main函数里面做完底层初始化之后就开始初始化RTOS,然后开启任务调度,这就实现了一个多线程的过程。

使用特权

评论回复
13
雨果喝水|  楼主 | 2023-4-18 23:37 | 只看该作者
这里分别设置了三个线程,OLED显示刷新、LED闪烁、ADC数据处理。


使用特权

评论回复
14
uytyu| | 2023-5-5 13:07 | 只看该作者
freertos要学多长时间              

使用特权

评论回复
15
cemaj| | 2023-5-5 18:31 | 只看该作者
freertos 怎样控制任务创建的先后

使用特权

评论回复
16
sesefadou| | 2023-5-5 20:15 | 只看该作者
freertos如何在一个任务中删除另一个任务

使用特权

评论回复
17
usysm| | 2023-5-5 21:07 | 只看该作者
FreeRTOS堆分配大小对任务数的影响大吗

使用特权

评论回复
18
cemaj| | 2023-5-5 21:46 | 只看该作者
第一次使用STM32CubeMx,创建了一个简单的FreeRTOS代码。

使用特权

评论回复
19
biechedan| | 2023-5-5 21:51 | 只看该作者
为什么称FreeRTOS为轻量级OS

使用特权

评论回复
20
maudlu| | 2023-5-5 22:26 | 只看该作者
freertos 会改变异常等级嘛

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

76

主题

1076

帖子

0

粉丝