IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 嵌入式 -> STM32MP157资源扩展板驱动移植篇9:FreeRTOS计数型信号量 -> 正文阅读

[嵌入式]STM32MP157资源扩展板驱动移植篇9:FreeRTOS计数型信号量

写在前面:

本文章为《STM32MP157资源扩展板驱动移植篇》系列中的一篇,笔者使用的开发平台为华清远见FS-MP1A开发板(STM32MP157开发板)。资源扩展板是FS-MP1A开发板的扩展模块,主要包含了10余种主流传感器、执行器件、总线控制器件,非常方便项目扩展用。可拓展开发智慧家庭、智能医疗、智能安防、工业控制、图像识别、环境检测等方向的10个左右综合项目,华清远见开发板也将配套提供所有项目的说明文档、实验源码、应用程序等资料。

针对FS-MP1A开发板,除了资源扩展板驱动移植篇外,还包括其他多系列教程,包括Cortex-A7开发篇、Cortex-M4开发篇、FreeRTOS篇、Linux应用开发篇、Linux系统移植篇、Linux驱动开发篇、硬件设计篇、人工智能机器视觉篇、Qt应用编程篇、Qt综合项目实战篇等。欢迎关注,更多stm32mp157开发教程及视频,可加技术交流Q群459754978,感谢关注。

FS-MP1A开发板详情介绍:https://item.taobao.com/item.htm?id=622457259672

1.资源扩展板介绍

1.1.硬件介绍

1.2.资源扩展板可开发项目

2.FreeRTOS计数型信号量

2.1.计数型信号量简介

计数型信号量也叫做数值信号量,相当于数值大于1的队列,用户不需要关心其中存储了什么数据,只需要关心是否为空即可,其主要用于事件计数和资源管理。

2.1.1事件计数

在这个场合中,每次事件发生的时候就在事件处理函数中释放信号量(增加信号量的计数
值),其他任务会获取信号量(信号量计数值减一,信号量值就是队列结构体成员变量
uxMessagesWaiting)来处理事件。在这种场合中创建的计数型信号量初始计数值为 0。
2.1.2资源管理


在这个场合中,信号量值代表当前资源的可用数量,比如房间内当前剩余的座位数量。
一个任务要想获得资源的使用权,首先必须获取信号量,信号量获取成功以后信号量值就会减一。当信号量值为 0 的时候说明没有资源了。当一个任务使用完资源以后一定要释放信号量,释放信号量以后信号量值会加一。在这个场合中创建的计数型信号量初始值应该是资源的数量,比如房间内一共有 50 个座位,那么创建信号量的时候信号量值就应该初始化为 50。

2.2.计数型信号量函数

2.2.1 创建信号量

同二值信号量一样,若想使用,必须先要创建信号量,在新版FreeRTOS中,一般使用xSemaphoreCreateCounting()函数动态创建计数型信号量。此函数是个宏,其函数原型如下:

SemaphoreHandle_t xSemaphoreCreateCounting(UBaseType_t uxMaxCount,

UBaseType_t uxInitialCount)

参数:

uxMaxCount:信号量最大计数值,当信号量值等于此值时释放信号量就会失败

uxInitialCount:计数信号量初始值

返回值:

NULL:计数型信号量创建失败

其他值:创建成功的计数型信号量的句柄

2.2.2 释放信号量

释放信号量的函数与二值信号量相同,具体请参考FreeRTOS二值信号量章节。

2.2.3获取信号量

获取信号量的函数与二值信号量相同,具体请参考FreeRTOS二值信号量章节。

2.3.操作实验

2.3.1实验设计

计数型信号量一般用于事件计数与资源管理,在本节实验中,通过扫描按键,当按键按下时实现信号量的释放与获取,可以通过串口来显示信号量的数值。

任务及其功能如下:

StartTask02():扫描KEY1键,当按键按下时,进行信号量释放,顺便获取信号量数值,通过串口输出显示。

StartDefaultTask():扫描KEY2键,当按键按下时,进行获取信号量,顺便获取信号量数值,同样通过串口输出显示。

正常情况下,每释放一次信号量,信号量数值加1,当获取到以后,数值减1。

2.3.2实验过程与分析

首先,根据之前几章内容配置好KEY、UART4,其中将KEY设置为GPIO_input,按照上一节配置“FREERTOS”,完成后生成代码。 在StartDefaultTask() 与StartTask02()中添加代码如下。

可参考12.3.2章节进行导入已有工程,工程存放路径【华清远见-FS-MP1A开发资料\02-程序源码\ARM体系结构与接口技术\FreeRTOS\2_MP1A-FreeRTOS-COUNT】

实验结果如图所示

当按下KEY1键时,信号量释放,信号量会加1,此时按下KEY2键时,获取到信号量以后,信号量的数量减1。

硬件平台:华清远见FS-MP1A开发板(STM32MP157)部分开发教程下载:加QQ群459754978,群文件里有。
部分视频课程收看:https://space.bilibili.com/670826565/channel/detail?cid=145472
淘宝购买链接:https://item.taobao.com/item.htm?id=622457259672
手机淘宝分享码:复制本行文字打开手淘?T4FPXn3YYJ2?

  嵌入式 最新文章
基于高精度单片机开发红外测温仪方案
89C51单片机与DAC0832
基于51单片机宠物自动投料喂食器控制系统仿
《痞子衡嵌入式半月刊》 第 68 期
多思计组实验实验七 简单模型机实验
CSC7720
启明智显分享| ESP32学习笔记参考--PWM(脉冲
STM32初探
STM32 总结
【STM32】CubeMX例程四---定时器中断(附工
上一篇文章      下一篇文章      查看所有文章
加:2021-08-25 12:22:20  更:2021-08-25 12:24:27 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年5日历 -2024/5/21 5:06:21-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码