本期我们来遵循其他单片机的学习路线开始去用板子上的按键控制点亮LED。那么第一步还是先知道K210里面的硬件电路是怎么连接的,需要查看第二节的文档,看看开发板原理图到底是按键是跟哪个IO连在一起。然后再建立输入按键和GPIO的映射就可以开始变成了。
-
硬件电路
根据之前官方提供的assembly drawing资料我们能知道了实际的LED位置,同样我们来
找一下按键的位置。
通过分析电路图我们可以看出实体按键一共有两个,S1和S2,分别连接了RST和BOOT引脚。但是通过查找RST可以看出,直接连接到了SGM803T这个芯片上,它是一个电源管理芯片,所以我们无法通过设计RST的映射去进行编程操作。固我们可以控制的只有BOOT引脚对应的按键了,查询CPU那侧可以看到它连接的物理引脚是IO_16,这个我们是可以通过程序对BOOT进行配置的。
-
程序开发
上一节我们提到了GPIO和IO的区别,注意要区分 GPIO 和 IO的区别, IO也可以叫Pin 也就是引脚,是芯片引出来的硬件引脚, 而GPIO是一种外设,可以控制这些Pin/IO 的外设。两者可以有一种方法映射,就像一道桥一样连接他们。因为有了这个强大的映射功能, 所以在使用引脚时,需要增加一步映射的步骤:
from fpioa_manager import fm # 导入库类似C语言的头文件
fm.register(28, fm.fpioa.GPIO0)
这里我们将引脚 28 映射为了 GPIO0 的功能, 执行了这句命令后,引脚28和GPIO0就映射(绑定)好了,要取消映射(解绑),则需要调用fm.unregister函数,如fm.unregister(28)可取消引脚28的绑定。
这是之前讲过的内容,接下来结合官方文档总结一下如何将某 IO 注册为 GPIO 功能。
先引入头文件
from Maix import GPIO
from fpioa_manager import fm
上述的程序中,我能怎么知道引入什么库才能使用呢,也就是说唯一未知的头文件是如何引入的呢?看下图:
通过上述的官方文档截图可以看出,文档提供的API手册中提供了所有的库的名称和使用说明供给开发者使用。
然后将IO注册为GPIO,
fm.register(io_number,fm.fpioa.GPIO0)
设置 GPIO 为输入或输出模式,GPIO调参的用法可以参考上述提到的官方文档,有详细的说明和示例。
gpio=GPIO(GPIO.GPIO0,GPIO.OUT)
接下来就是如何使用了:和C语言的结构体类似的操作,读取或设置 GPIO 电平
gpio.value() #直接在括号内赋值即可配置成输出
经过以上流程的总结,希望大家对整个的程序架构有一个基本的概念,学过STM32的同学可能会很好的接收以上的事实。新手的同学需要记住以上的步骤,基本上调用IO都是这个流程。
那么我们接下来完成今天的任务,按键控制LED的操作。
from Maix import GPIO #引入头文件
from fpioa_manager import fm
io_led_blue = 12 #根据原理图对应IO引脚
io_led_red = 13
io_key = 16
fm.register(io_led_blue, fm.fpioa.GPIO0) #映射IO到GPIO
fm.register(io_led_red, fm.fpioa.GPIO1)
fm.register(io_key, fm.fpioa.GPIO2)
Led_b = GPIO(GPIO.GPIO0, GPIO.OUT) #设置输入输出模式
Led_r = GPIO(GPIO.GPIO0, GPIO.OUT)
Key = GPIO(GPIO.GPIO2, GPIO.IN)
while True:
if Key.value()==0: #读取或设置 GPIO 电平
Led_r.value(1)
else:
Led_r.value(0)
-
总结
以上就是按键控制LED的流程,涵盖了GPIO的输入输出的基本操作。任何控制器、单片机和CPU首先要掌握的就是输入输出的GPIO,学会了这个基本就能完成大部分的项目的基本功能了。