| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 嵌入式 -> STM32MP157资源扩展板驱动移植篇8:FreeRTOS互斥信号量 -> 正文阅读 |
|
[嵌入式]STM32MP157资源扩展板驱动移植篇8: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 互斥信号量简介互斥信号量可以作为一种特殊的二值信号量,优先级继承机制,保护临界资源。 互斥信号量适合用于那些需要互斥访问的应用中。在互斥访问中互斥信号量相当于一个钥匙,当任务想要使用资源的时候就必须先获得这个钥匙,当使用完资源以后就必须归还这个钥匙,这样其他的任务就可以拿着这个钥匙去使用资源。 2.2 互斥信号量函数2.2.1 创建信号量在新版FreeRTOS中,一般使用xSemaphoreCreateMutex()函数动态创建互斥信号量,其所需要的内存通过动态内存管理方法分配。此函数是个宏,具体创建工程是由函数xQueueCreateMutex()完成。此函数原型如下: SemaphoreHandle_t xSemaphoreCreateMutex(void) 参数: 无 返回值: NULL:互斥信号量创建失败 其他值:创建成功的互斥信号量的句柄 2.2.2 释放信号量释放信号量的函数与二值信号量相同,具体请参考FreeRTOS二值信号量章节。 2.2.3获取信号量获取信号量的函数也有两个,分别如下: 任务级信号量获取函数xSemaphoreTake(),此函数也是个宏,可以获取二值信号量、计数型信号量和互斥信号量,其函数原型如下: BaseType_t xSemaphoreTake(SemaphoreHandle_t xSemaphore, TickType_t xBlockTime) 参数: xSemaphore:要获取的信号量句柄 xBlockTime:阻塞时间 返回值: pdTRUE:获取信号量成功 pdFALSE:超时,获取信号量失败 中断级信号量获取函数 xSemaphoreTakeFromISR(),此函数也是个宏,只能获取二值信号量和计数型信号量,其函数原型如下: BaseType_t xSemaphoreTakeFromISR(SemaphoreHandle_t xSemaphore, BaseType_t* pxHigherPriorityTaskWoken) 参数: xSemaphore:要获取的信号量句柄 pxHigherPriorityTaskWoken:标记退出此函数以后是否进行任务切换 返回值: PdPASS:获取信号量成功 pdFALSE:获取信号量失败 2.3操作实验2.3.1实验设计互斥信号量其实就是一个拥有优先级继承的二值信号量,互斥信号量适合用于那些需要互斥访问的应用中。在本节实验中,分别控制LED1和LED2灯的亮灭来表示。 任务及其功能如下: StartTask02(): 控制LED2熄灭,LED1点亮,延时2秒钟。 StartDefaultTask(): 控制LED1熄灭,LED2点亮,延时1秒钟。 2.3.2实验过程与分析首先,根据之前几章内容配置好CubeMX,按照上一节配置“FREERTOS”,完成后生成代码。 在主函数中调用xSemaphoreCreateMutex()创建互斥信号量,在StartDefaultTask() 与StartTask02()中添加代码如下。 可参考12.3.2章节进行导入已有工程,工程存放路径【华清远见-FS-MP1A开发资料\02-程序源码\ARM体系结构与接口技术\FreeRTOS\3_MP1A-FreeRTOS-Mutex】 此时会发现,LED1点亮、LED2熄灭状态下保持2秒,LED2点亮、LED1熄灭状态下保持1秒,进行交替闪烁。 华清远见教育科技有限公司开发板、核心板、资源扩展板及配套海量资料淘宝直销店:https://shop273057902.taobao.com/ |
|
嵌入式 最新文章 |
基于高精度单片机开发红外测温仪方案 |
89C51单片机与DAC0832 |
基于51单片机宠物自动投料喂食器控制系统仿 |
《痞子衡嵌入式半月刊》 第 68 期 |
多思计组实验实验七 简单模型机实验 |
CSC7720 |
启明智显分享| ESP32学习笔记参考--PWM(脉冲 |
STM32初探 |
STM32 总结 |
【STM32】CubeMX例程四---定时器中断(附工 |
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2025年3日历 | -2025/3/4 12:33:33- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |