云题海 - 专业文章范例文档资料分享平台

当前位置:首页 > STM32CubeMX+FreeRTOS学习[5] 邮箱队列(Lu)

STM32CubeMX+FreeRTOS学习[5] 邮箱队列(Lu)

  • 62 次阅读
  • 3 次下载
  • 2025/6/16 5:29:33

FreeRTOS学习之五:邮箱队列

前提:默认已经装好MDK V5和STM32CubeMX,并安装了STM32F1xx系列的支持包。 硬件平台:STM32F1xx系列。 目的:学习邮箱队列的使用。 如果队列存储的数据单元尺寸较大,那最好是利用队列来传递数据的指针而不是对 数据本身在队列上一字节一字节地拷贝进或拷贝出。传递指针无论是在处理速度上还是 内存空间利用上都更有效。这个实现方式就是邮箱队列,它传递的是数据的指针。 实际上,STM32Cube所使用的FreeRTOS已经在CMSIS标准接口文件cmsis_os.c实现了邮箱队列。当前STM32CubeMX版本V4.14,还不支持配置生成邮箱队列。但是可以参考STM32Cube提供的例程,学习使用邮箱队列。

本文例子使用STM32CubeMX配置创建两个任务,一个任务每隔一定时间发送一个消息到邮箱队列,另一个等待邮箱消息并根据消息的内容控制LED的闪烁次数。

Step1.打开STM32CubeMX,点击“New Project”,选择芯片型号,STM32F103RBTx。

Step2.配置时钟引脚。

Step3.配置PA8和PD2为Output,并把用户标签分别改为LED0,LED1。

Step4.将系统时基源改为TIM4。

Step5.使能FreeRTOS。

Step6.配置时钟树。8M输入时,通过PLL得到72M内部时钟。

Step7.配置FreeRTOS。

在Tasks and Queues选项卡,默认配置了一个名为defaultTask的任务,其优先级为普通,任务堆栈大小为128字,任务函数名为StartDefaultTask。 双击蓝色的地方,弹出对话框,将任务名修改为MailProducer,将任务函数名修改为MailProducerTask。

点击Add按钮,增加一个任务MailConsumer,优先级设置为Normal,函数名为MailConsumerTask。

注:其他的都使用默认参数。 Step8.生成代码。

等完成后直接打开工程。

工程基本组织结构如下图,其中Application/User组中的文件是用户可以修改的,而其他组中的文件一般不进行修改。

Step9.分析程序结构。

在进入main函数之前,先定义了几个变量,声明了几个函数。

再看main函数。将main函数整理,删除很多注释之后,得到下图所示内容。

其中第①部分,是硬件配置;第②部分,创建两个任务;第③部分,启动调度器。

搜索更多关于: STM32CubeMX+FreeRTOS学习[5] 邮箱队列 的文档
  • 收藏
  • 违规举报
  • 版权认领
下载文档10.00 元 加入VIP免费下载
推荐下载
本文作者:...

共分享92篇相关文档

文档简介:

FreeRTOS学习之五:邮箱队列 前提:默认已经装好MDK V5和STM32CubeMX,并安装了STM32F1xx系列的支持包。 硬件平台:STM32F1xx系列。 目的:学习邮箱队列的使用。 如果队列存储的数据单元尺寸较大,那最好是利用队列来传递数据的指针而不是对 数据本身在队列上一字节一字节地拷贝进或拷贝出。传递指针无论是在处理速度上还是 内存空间利用上都更有效。这个实现方式就是邮箱队列,它传递的是数据的指针。 实际上,STM32Cube所使用的FreeRTOS已经在CMSIS标准接口文件cmsis_os.c实现了邮箱队列。当前STM32CubeMX版本V4.14,还不支持配置生成邮箱队列。但是可以参考STM32Cube提供的例程,学习使用邮箱队列。 本文例子使用STM32CubeMX配置创建两个任务,一个任务每隔一定时间发送一个消息到

× 游客快捷下载通道(下载后可以自由复制和排版)
单篇付费下载
限时特价:10 元/份 原价:20元
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信:fanwen365 QQ:370150219
Copyright © 云题海 All Rights Reserved. 苏ICP备16052595号-3 网站地图 客服QQ:370150219 邮箱:370150219@qq.com