RT-Thread信号量的简单应用

本文介绍了如何利用RT-Thread的信号量功能在STM32开发板上实现LED2和LED3以1Hz频率交替闪烁。通过定义两个线程thread1和thread2,每个线程在获取和释放信号量的过程中控制LED的亮灭,实现了线程间的同步。详细步骤包括LED初始化、线程创建、信号量操作等。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

信号量(Semaphore)是在多线程环境下使用的一种设施,可以用来保证两个或多个关键代码段不被并发调用。在进入一个关键代码段之前,线程必须获取一个信号量;一旦该关键代码段完成了,那么该线程必须释放信号量。

下面通过RT-Thread的信号量来完成一个简单的应用:LED2和LED3以1Hz的频率交替闪烁。

信号量是进程间通信的媒介,在此定义两个线程thread1和thread2。Thread1首先获取一个信号量,然后点亮LED2,延迟500ms过后熄灭LED2,随即释放一个信号量。Thread2以RT_WAITING_FOREVER的方式一直保持获取信号量,当Thread1释放信号量之后,Thread2获取到一个信号量开始运行,点亮LED3,延迟500ms过后熄灭,随即释放一个信号量。

下面按照步骤完整地实现该例程:

1. 首先当然是定义两个LED灯啦!在jiezhi320讲解的《15天入门RT-Thread》视频第2课中,LED的定义方式使用了RT-Thread自带的API,我也用此方式初始化两个LED。我使用的STM32开发板以STM32F103ZET6为主控芯片,该芯片为144脚。通过查看电路原理图,得到LED2对应PE5,即芯片的第4脚;LED3对应芯片的PB5,即芯片的第135脚。如下图所示:

    

2.在rtconfig.h文件中,以具体的名称代替引脚序号:

#define LED_2_PIN 4    //LED2 connect to PE5-the forth pin of stm32f103zet6
#define LED_3_PIN 135  //LED3 c
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值