
本帖最后由 slotg 于 2019-1-23 21:59 编辑 STM8-SO8-DISCO 尺寸比想像中的还要小,小小的一块板子很有意思,只是这块板子的安排方式不适合直接外接模块或是元器件,因此我将底下的 3 块 MCU 小板掰下来打算插在面包板上做实验,而 STM8-SO8-DISCO 就做为编程器使用。 手上有一个 R,G,B LED 小模块: ![]() 我想用 STM8S001J3 来点灯,看了一下引脚排列 pin5,6,7 都是 GPIO 很适合连接这个 LED 模块,模块直接插在面包板上只需要再拉一根共地就可以了,程序中只要在该引脚输出高电位时 LED 就会亮,我想实现的就是一个简单的 LED 依序亮灭功能,拉好线也写好了程序,只是下载烧录后运行结果怎么只亮了一个 LED 呢?pin5 与 pin6 所连接的 LED 不会亮!一开始怀疑是拉线的问题?也怀疑是程序上的问题?只是一个简单的点灯程序怎么会不行呢? STM8S001J3 的 GPIO 引脚有复用功能: ![]() 以 pin7 来说,这根引脚兼具了 PC3、PC4、PC5 功能,也就是程序改变这 3 个 GPIO 任何一个的状态时都会反应到 pin7 上,我在程序中发现了 pin5 定义成 PA3 时是有输出的,不过定义成 PB5 时 LED 就不会亮?查看数据手册的引脚说明里有这样的描述: ![]() PB4 与 PB5 有特别的说明: ![]() STM8 的 GPIO 架构图: ![]() 这个意思是说明了当 PB4 与 PB5 做为输出时,P-BUFFER、PULL-UP 与保护二极管是不存在的,也就是 PB4 与 PB5 是一个单纯的 Open-Drain 架构,是不会有电位输出的!因此当 pin5 做为 PA3 时因为有 P-BUFFER 所以会有电位输出可以驱动 LED,但是做为 PB5 时就是一个单纯的 OD,以目前 LED 的接法当然是不会亮的。我改变 LED 接法,让 LED 的阳极接电源,阴级接控制引脚,程序输出低电位时点亮 LED,这样就实现了我想要的结果了。 ![]() 图上的模块原本 LED 的接法也是共地的,不过我将 LED 拆下反接改成了共接电源。 源代码:
![]() |
![]() |
赞一个 |
学习了 |
STM8自学笔记(推荐STM8很好的入门电子书)
基于STM8的DALI (数字可寻址调光协议)
分享STM8 风驰光盘的资料,是完整的(包括原理图+例程+PDF注释)
《无刷直流电机控制应用 基于STM8S系列单片机》
STM8S库函数中文参考 小软件
【资料分享】STM8L的智能手持血糖监测设备的源码
基于STM8S207工程模板
【培训资料】STM8系列PPT培训资料
STM8S 直流电机例程及相关资料
无刷直流电机控制应用+基于STM8S系列单片机---电子书