RTT架构训练二(信号量)

Sugar 来说说:啥叫线程挂起?啥叫信号量,它是干啥用的?

Posted by Sugar on July 17, 2019

背景介绍:
RTT 架构训练二上次完成了用 stm32f4dsicovery 板上按键翻转 led 灯。
上次推文内容偏重于多线程思想传递、任务规划方法。重点是工程思维训练。
本节偏重于 RT-Thread 系统资源使用方法:主要是信号量的使用。

本节完成的功能

完成下图中大部分功能

13秒效果展示

1、lcd_keypad 按键翻转 led 2、lcd1602 每 3 秒切换一次显示(温湿度/光强)

视频链接

代码文件总览

线程状态说明

引自[野火®]《RT-Thread 内核实现与应用开发实战—基于STM32》

Sugar图例之线程同步

信号量的一种应用

Sugar图例之线程互锁

信号量的另一种应用

本文跨度

虽有跨度,但读者都有迹可寻(都在 github 上,每个步骤都能用 SmartGit 看到 log 记录)。
公众号回复 train 得到 github 地址。
公众号回复 git 得到 SmartGit 视频讲解。

1、《RT-Thread 内核线程组成及调度》文中最下面的3个视频,当时只是 CubeMX 生成的工程,现在 DHT11 和 BH1750 的工程已经加入 RT-Thread。
(本文的代码就是从这两个单独的 demo 中获取的。) 2、《RTT架构训练二(手动翻转LED)》文中使用的是 stm32f4discovery 板上按键,本例改用 lcd_keypad 的上模拟量按键。原理图如下:

个人认为这种使用一个引脚带 5 个键的方法挺省引脚的,值得借鉴。

PS

Thanks RT-Thread!
Love you Andy Chen.

Sugar 的设备升级啦,从这个样子:

升级成这个样子:

感谢 RT-Thread 对 Sugar 的支持,这本是我2019年2月份过年时就想买的板,一直没下手,今天被惊喜了!

后面我准备让我 github 上训练用的代码同时支持两个板子,让小白读者看到怎样复用自己的代码在不同的板子上(STM32F407和STM32L475)。

关注作者

欢迎扫码关注我的公众号MultiMCU EDU

提示:在公众号“关于我”页面可加作者微信好友。

喜欢本文求点赞,有打赏我会更有动力。

请我喝杯咖啡如何?

微信 weixinfukuan 支付宝 zhifubaofukuan