本帖最后由 muyichuan2012 于 2025-1-2 19:23 编辑
AT32WorkBench常用功能27 --FreeRTOS信号量使用介绍
FreeRTOS信号量使用介绍 本文主要介绍如何基于AT32 WorkBench配置FreeRTOS信号量
硬件环境 l AT-START-F437 l 下载线缆
软件环境 l AT32 Workbench l MDK5
信号量介绍 使用信号量的最初目的是为了给共享资源建立一个标志,该标志表示该共享资源被占用情况。
这样,当一个任务在访问共享资源之前,就可以先对这个标志进行查询,从而在了解资源被占用的情况之后,再来决定自己的行为。
配置步骤: 1. 打开AT32 WorkBench新建AT32F437工程
2. 在中间件中打开FREERTOS并在模式窗口中勾选启用。此时FreeRTOS会有一个默认的配置,并生成一个my_task01任务。 3. 在配置框内点击“计数型信号量”,会出现信号量创建窗口,如下:
点击“添加”即可创建计数型信号量(二值信号量与计数型信号量类似,区别在与计数型信号量可以配置信号量获取次数, 但二值信号量默认只能获取一次,想要再获取需要等前一次获取的信号量释放掉才可以)。 信号量名称:默认为my_counting_semxxx(xx为数字,依次增加),用户可以任意修改信号量名称 最大数量:计数型信号量可获取最大次数 初始化数量:初始化可获取计数型信号量次数 分配:动态或者静态 信号量数组:选择静态内存分配时有效;StaticSemaphore_t类型变量,用于保存信号量状态.
4. 点击生成代码按钮,选择MDK5;便可生成FreeRTOS工程,生成代码在freertos_app.c/.h文件内 5. 打开生成工程,结构目录如下
freertos_app.c内为workbench生成的关于FreeRTOS的应用层代码,包括任务的创建,计数型信号量的创建、任务入口函数等。
6. 下面进行试验验证,提前打开串口1打印功能(在“模块分类”中打开USART1,选择“异步模式”; 然后在SYSTEM中将“串口打印”选择为USART1即可),在任务中添加计数型信号量获取情况和打印信息,如下: 7. 编译,下载到对应开发板,打开串口助手
|