[AT32 WorkBench] AT32 WorkBench常用功能26 --FreeRTOS互斥量使用介绍

[复制链接]
 楼主| 发表于 2025-1-2 18:56 | 显示全部楼层 |阅读模式
本帖最后由 muyichuan2012 于 2025-1-2 19:24 编辑

AT32WorkBench常用功能26
--FreeRTOS互斥量使用介绍

FreeRTOS互斥量使用介绍
本文主要介绍如何基于AT32 WorkBench配置FreeRTOS互斥量

硬件环境
l  AT-START-F437
l  下载线缆

软件环境
l  AT32 Workbench
l  MDK5

互斥信号量介绍
使用信号量的最初目的是为了给共享资源建立一个标志,该标志表示该共享资源被占用情况。
这样,当一个任务在访问共享资源之前,就可以先对这个标志进行查询,从而在了解资源被占用的情况之后,再来决定自己的行为。

互斥信号量被用来解决优先级翻转的问题,优先级翻转在可剥夺型内核是很常见的问题。但是在实时系统中是不允许出现这种情况的,这会打乱系统的预期执行顺序,导致低优先级的任务在高优先级任务之前运行这违背了实时性的初衷。

配置步骤:
1.    打开AT32 WorkBench新建AT32F437工程
       35586677671d7927a4.png    
2.    在中间件中打开FREERTOS并在模式窗口中勾选启用。此时FreeRTOS会有一个默认的配置,并生成一个my_task01任务。
       94532677671ea48d7f.png
3.    在配置框内点击“互斥量”,会出现互斥量创建窗口,如下:
       336677672019eab9.png
      点击“添加”即可创建新互斥量。
      互斥量名称:默认为my_mutexxx(xx为数字,依次增加),用户可以任意修改互斥量名称
      分配:动态或者静态
      互斥量数组:选择静态内存分配时有效;StaticSemaphore_t类型变量,用于保存互斥量状态.

4.    点击生成代码按钮,选择MDK5;便可生成FreeRTOS工程,生成代码在freertos_app.c/.h文件内
       141176776720fd82f4.png


5.    打开生成工程,结构目录如下
       21296776721f5edad.png


      freertos_app.c内为workbench生成的关于FreeRTOS的应用层代码,包括任务的创建,互斥量的创建、任务入口函数等。

6.    下面进行试验验证,提前打开串口1打印功能(在“模块分类”中打开USART1,选择“异步模式”;
      然后在SYSTEM中将“串口打印”选择为USART1即可),在两个任务中添加互斥量发送/接收函数和打印信息,如下:
       199076776722d8156c.png


7.    编译,下载到对应开发板,打开串口助手
       815786776723dc6d65.png


发表于 2025-1-7 15:49 | 显示全部楼层
WorkBench尽然可以直接在软件中配置信号量这些东西,这么方便
您需要登录后才可以回帖 登录 | 注册

本版积分规则

215

主题

2064

帖子

37

粉丝
快速回复 返回顶部 返回列表