[物联网] - [STM32/51|JavaWeb|微信小程序] - 3.系统的进行模块开发

引子 

       在一个完整的嵌入式工程中,我们经常会遇见使用未听闻过 / 未使用过的模块的需求,对于这种情况相信大家都有自己学习、了解、掌握的一套方法,在此章节我会给出一种我习惯的学习思路与方法。

在本文我们以正点原子STM32F407ZGT6的LED模块为例详解讲解流程

了解工作原理

        LED灯中有电流通过时候,将点亮LED灯,单片机系统中,常见的LED灯如下所示,其中长的引脚一端为正极,短的为负极。

[物联网] - [STM32/51|JavaWeb|微信小程序] - 3.系统的进行模块开发

         LED虽然是发光器件,但归根结底还是二极管,有着跟普通二极管一样的伏安特性曲线。跟普通二极管不同的是,LED里面的PN结,在电压驱动作用下,内部的电子和空穴会复合,复合的过程能量会以发光的形式释放,这就是LED灯的工作原理。

摘自 -- led 灯的发光原理是什么? - 知乎 (zhihu.com)

         很明显,LED最主要的特性就是当正极为高电压,负极为低电压时电流通过,LED发光,若正极为低电压负极为高电压,则此时此处相当于断路,LED处阻值无限大。

分析原理图

        单片机开发中最为核心的基础能力就是读懂原理图,我们先看看核心板上的LED模块的原理图。

        我们在原理图中通常以三角形表示LED的存在(即单向导电特性)。

[物联网] - [STM32/51|JavaWeb|微信小程序] - 3.系统的进行模块开发

        由原理图可得LED的正极 (三角形底边) 已默认连接3.3V高电压,故当我们将其负极置为低电压时LED可正常亮灯,那么该如何得知是哪个IO口 (即单片机引脚) 控制着这两个LED的负极呢?我们继续查看原理图。

[物联网] - [STM32/51|JavaWeb|微信小程序] - 3.系统的进行模块开发

        可以看到是PF9、PF10两引脚控制着LED0与LED1(即DS0、DS1),那么很简单,我们只需要将PF9与PF10两引脚初始化后拉低电压 (即接地,U=0) 即可。

验证

此处展示HAL库示例代码。注意:代码具体如何实现并不重要,重要的是我们学习到的思想。

[物联网] - [STM32/51|JavaWeb|微信小程序] - 3.系统的进行模块开发[物联网] - [STM32/51|JavaWeb|微信小程序] - 3.系统的进行模块开发

上一篇:按键控制UNO板载LED


下一篇:STM32F103寄存器方式点亮LED流水灯