STM32F1与STM32CubeIDE编程实例ThreadX中的消息队列Message Queue服务
STM32F1与STM32CubeIDE编程实例-ThreadX中的消息队列(Message Queue)服务ThreadX中的消息队列(Message Queue)服务文章目录
ThreadX中的消息队列(Message Queue)服务
1、消息队列(Message Queue)介绍
2、队列控制块(Message Queue Control Block)
3、消息队列服务
3.1 创建消息队列
3.2 删除队列
3.3 发送消息
3.4 接收消息
3.5 刷新消息队列的内容
3.6 将消息发送到消息队列的前端
3.7 优先考虑消息队列挂起列表
3.8 消息队列通知
3.9 消息队列信息查询
4、完整示例
4.1 应用程序
4.2 生产者线程
4.3 消费者线程
4.4 主程序
1、消息队列(Message Queue)介绍消息队列是 ThreadX 中线程间通信的主要方式。 一条或多条消息可以驻留在消息队列中,该队列通常遵循 FIFO 规则。 只能容纳一条消息的消息队列通常称为**邮箱(Mailbox)**。
tx_queue_send 服务将 ...
STM32F1与STM32CubeIDE编程实例ThreadX中的事件标志组Event Flags Group
STM32F1与STM32CubeIDE编程实例-ThreadX中的事件标志组(Event Flags Group )ThreadX中的事件标志组(Event Flags Group )文章目录
ThreadX中的事件标志组(Event Flags Group )
1、事件标志介绍
2、事件标志组控制块
3、事件标志组服务
3.1 创建事件标志组
3.2 删除事件标志组
3.3 检索或等待事件
3.4 事件标志组设置
3.5 事件标志组信息检索
3.6 事件标志组通知
4、完整示例
4.1 应用程序
4.2 事件发送线程
4.3 事件接收线程
4.4 主程序
1、事件标志介绍事件标志为线程同步提供了强大的工具。 事件标志可以由任何线程设置或清除,并且可以由任何线程检查。线程可以在等待设置某些事件标志组合时挂起。 每个事件标志由单个位表示。事件标志以 32 个为一组排列,如下图所示:
线程可以同时对组中的所有 32 个事件标志进行操作。 要设置或清除事件标志,请使用 tx_event_flags_set 服务,然后使用 tx_event_flags_ ...
STM32F1与STM32CubeIDE编程实例ThreadX中的系统时钟及应用程序定时器
STM32F1与STM32CubeIDE编程实例-ThreadX中的系统时钟及应用程序定时器ThreadX中的系统时钟及应用程序定时器文章目录
ThreadX中的系统时钟及应用程序定时器
1、定时器介绍
2、内部系统时钟服务
3、应用程序定时器控制块
4、应用程序定时器服务
4.1 创建定时器
4.2 激活与暂停定时器
4.3 修改定时器
4.4 定时器信息检索
5、完整示例
5.1 应用程序
5.2 定时器实现
5.3 主程序
1、定时器介绍对异步外部事件的快速响应是实时、嵌入式应用程序最重要的功能。 但是,这些应用程序中的许多应用程序还必须以预定的时间间隔执行某些活动。
ThreadX 应用程序计时器能够以特定的时间间隔执行应用程序 C 函数。 还可以将应用程序计时器设置为仅过期一次。 这种类型的计时器称为一次性计时器(One-Shot Timer),而重复间隔计时器称为周期计时器(Periodic Timer)。 每个应用程序计时器都是公共资源。
时间间隔由周期性定时器中断测量。 每个定时器中断称为一个定时器节拍。 计时器滴答之间的实际时间由应 ...
STM32F1与STM32CubeIDE编程实例设备驱动EEPROMAT24C256驱动
STM32F1与STM32CubeIDE编程实例-设备驱动-EEPROM-AT24C256驱动EEPROM-AT24C256驱动1、EEPROM与AT24C256介绍EEPROM(电可擦除可编程只读存储器)是用户可修改的只读存储器(ROM),可以通过施加高于正常电压的电压反复擦除和重新编程(写入)。 与 EPROM 芯片不同,EEPROM 不需要从计算机中取出即可进行修改。 但是,EEPROM 芯片必须整体擦除和重新编程,而不是选择性地擦除和重新编程。 它还具有有限的寿命——也就是说,它可以重新编程的次数被限制在数万或数十万次。 在计算机使用过程中经常重新编程的 EEPROM 中,EEPROM 的寿命可能是一个重要的设计考虑因素。
一种特殊形式的 EEPROM 是闪存,它使用正常的 PC 电压进行擦除和重新编程。
AT24C128/256 提供 131,072/262,144 位串行电可擦除可编程只读存储器 (EEPROM),组织为 16,384/32,768 个字,每个字为 8 位。 该设备的级联功能允许多达 4 个设备共享一个公共的两线总线。 该器 ...
STM32F1与STM32CubeIDE编程实例设备驱动DHT11温度温度传感器驱动
STM32F1与STM32CubeIDE编程实例-设备驱动-DHT11温度温度传感器驱动DHT11温度温度传感器驱动DHT11是一款有已校准数字信号输出的温湿度传感器。 其精度湿度±5%RH, 温度±2℃,量程湿度595%RH, 温度-20+60℃。DHT11通讯方式是单总线的。
本文将介绍在STMCubeIDE上如何实现DHT11驱动。
在前面的文章中,对DHT11做了详细的介绍,请参考:
Ardunio开发实例-DHT11和DHT12传感器使用
8051单片机Proteus仿真与开发实例-DHT11+LCD1602仿真
Arduino与Proteus仿真实例-DHT11温度湿度传感器驱动仿真
ESP32-IDF开发实例-传感器模块编程-DHT11温度湿度传感器
1、DHT11配置
开发环境搭建、系统时钟配置、调试配置及串口配置,请参考:
STM32F1与STM32CubeIDE快速入门-开发环境搭建
STM32F1与STM32CubeIDE快速入门-GPIO概述与点亮LED
STM32F1与STM32CubeIDE快速入门-USART/UART串口通信
D ...
STM32F1与STM32CubeIDE编程实例设备驱动OneWire总线驱动实现
STM32F1与STM32CubeIDE编程实例-设备驱动-One-Wire总线驱动实现One-Wire总线驱动实现1-Wire 是一种通信系统,旨在通过单线接口连接简单的传感器和设备。该系统用于低速和低功耗的通信设备。有两种可用的操作模式:标准速度和超速。标准速度下可实现的数据速率为 16.3 kbit/s,而超速模式通信以标准速度的 10 倍完成。
该协议使用一条数据线从一个设备到另一个设备的数据传输。总线是半双工的,因此数据可以双向移动,但不能同时移动。需要时,还可以使用额外的电线为从设备供电。
该协议支持总线上的一个从站(单点)或多个从站(多点)。总线上还有一个主控器,它控制总线上的信息传输。主机启动数据线上的所有传输。只能在主机和从机之间传输数据,因此不能在从机之间传输数据。
该协议不需要时钟,因为每个从机都由与总线下降沿同步的内部振荡器提供时钟。
传输字节时,首先传输最低有效位。
1-Wire的总线拓扑结构如下:
1、One-Wire 总线要求每个输出引脚必须为漏极开路,并且必须将弱上拉连接到信号,这样,如果至少有一个设备将总线驱动为低电平,则总线被驱动为低 ...
STM32F1与STM32CubeIDE编程实例DS18B20温度传感器驱动
STM32F1与STM32CubeIDE编程实例-DS18B20温度传感器驱动DS18B20温度传感器驱动文章目录
DS18B20温度传感器驱动
1、DS18B20介绍
2、DS18B20配置
3、DS18B20驱动实现
4、主程序
1、DS18B20介绍DS18B20 是一种温度传感器,它提供 9 位到 12 位的温度读数。 该传感器的通信可以通过单线总线(One-Wire,1-Wire)协议完成,该协议使用一条数据线与内部微处理器进行通信。
本文将介绍如何在STM32CubeIDE中驱动DS18B20。
由于DS18B20的数据通信方式为One-Wire,请参考前面与One-Wire总线相关文章:
STM32F1与STM32CubeIDE编程实例-设备驱动-One-Wire总线驱动实现
在前面的文章中,对DS18B20作为详细的介绍,请参考:
8051单片机Proteus仿真与开发实例–DS18B20温度传感器仿真
ESP32-IDF开发实例-传感器模块编程-DS18B20数字温度传感器
Ardunio开发实例-DS18B20温度传感器使用
Arduino与P ...
STM32F1与STM32CubeIDE编程实例麦克风声音传感器驱动
STM32F1与STM32CubeIDE编程实例-麦克风声音传感器驱动麦克风声音传感器驱动麦克风声音传感器,顾名思义,它可以检测声音和测量声音的响度。当声音的响应达到一定的阈值时,传感器输出高电平或低电平信号(取决于硬件设计)。麦克风声音传感器广泛应用于声控开关、噪音测量等。
本文将演示如何驱动麦克风声音传感器。
1、麦克风声音传感器配置
开发环境搭建、系统时钟配置、调试配置及串口配置,请参考:
STM32F1与STM32CubeIDE快速入门-开发环境搭建
STM32F1与STM32CubeIDE快速入门-GPIO概述与点亮LED
STM32F1与STM32CubeIDE快速入门-USART/UART串口通信
本次使用的麦克风声音传感器有两种输出(A0),一种是模拟量输出(D0),另外一种是数字输出。在这里,使用数字输出(D0)。当声音达到阈值时,输出低电平。
在STM32CubeIDE中,传感器引脚的配置如下:
保存配置,并生成代码。
2、麦克风声音传感器驱动实现1)基本定义
1234567891011121314151617181920212223242 ...
STM32F1与STM32CubeIDE编程实例光敏电阻LDR传感器驱动
STM32F1与STM32CubeIDE编程实例-光敏电阻(LDR)传感器驱动光敏电阻(LDR)传感器驱动光敏电阻器(也称为光电池或光敏电阻器、LDR 或光电导电池)是一种无源元件,可降低元件敏感表面上接收光度(光)的电阻。光敏电阻的电阻随着入射 l 强度的增加而减小;换言之,它表现出光电导性。光敏电阻可应用于光敏检测器电路和光激活和暗激活开关电路中,作为电阻半导体。在黑暗中,光敏电阻可以具有高达几兆欧 (MΩ) 的电阻,而在光照下,光敏电阻可以具有低至几百欧姆的电阻。如果光敏电阻上的入射光超过某个频率,则被半导体吸收的光子会为束缚电子提供足够的能量以跳入导带。由此产生的自由电子(及其空穴伙伴)导电,从而降低电阻。光敏电阻的电阻范围和灵敏度在不同的器件之间可能存在很大差异。此外,独特的光敏电阻对某些波段内的光子的反应可能大不相同。
本实例将介绍如何驱动LDR传感器。在前面的文章中,对LDR传感器也做了详细的介绍,请参考:
Arduino与Proteus仿真实例-光线传感器(LDR)驱动仿真
Ardunio开发实例-光敏电阻光线强度检测
8051单片机Proteus仿真与开发实例 ...
STM32F1与STM32CubeIDE编程实例火焰传感器驱动
STM32F1与STM32CubeIDE编程实例-火焰传感器驱动火焰传感器驱动1、火焰传感器介绍火焰探测器是一种传感器,设计用于探测火焰]或火灾的存在并对其做出响应,从而实现火焰探测。火焰传感器主要有如下几种类型:
光学火焰探测器
紫外线探测器:紫外线(UV) 检测器通过检测点火瞬间发出的紫外线辐射来工作。
近红外阵列:近红外(IR) 阵列火焰探测器(0.7 至 1.1 μm),也称为视觉火焰探测器,采用火焰识别技术通过使用电荷耦合器件(CCD) 分析近红外辐射来确认火灾。
红外线:红外 (IR) 或宽带红外(1.1 μm 和更高)火焰探测器可监控红外光谱带,以了解热气体发出的特定模式。这些是使用专门的消防热像仪(TIC)(一种热像仪)来感应的。
红外热像仪:MWIR 红外 (IR) 摄像机可用于检测热量,并通过特定算法检测场景内的热点以及火焰,以检测和预防火灾以及火灾风险。
紫外/红外:探测器对 UV 和 IR 波长都很敏感,并通过比较两个范围的阈值信号来检测火焰。这有助于最大限度地减少误报
IR/IR 火焰检测:双红外 (IR/IR) 火焰探测器 ...
