本篇并不是python的语法书,也不可能在这么短的时间内掌握python的语法。本篇只是配合pyb基本外设的控制,来展开相关的语法。主要的可能还是对面向对象的熟悉。主要的参考是这里:
http://docs.micropython.org/en/latest/pyboard/library/pyb.html
在python的世界里面,所有的东西都是对象,至少我们可以把每个外设看成是一个对象。当然我们也知道,有许多外设是相似的,比如所有的GPIO都是相似的,除了ID不同,它们的行为和属性都是一样的。因此可以用一个Pin的类来描述GPIO,当我们需要控制某个GPIO的时候,就可以生成一个具体的引脚的对象,然后通过这个对象的方法来控制它。比如有一个引脚是P1_0,通常对它置高电平,会有两种可能,用sfr就是类似P1_0=1这样的语法;如果用HAL或者库,那么类似于pinset(P10,1)。大体上都是控制某个引脚的过程。而在python的世界里,就会变成类似p10.high()这样的东西。表面看起来没啥区别,内部的区别,思考了半天,就是写不出来。高手来补充啊。面向对象的编程,除了基本数据类型外,都是以方法来存取的。
OK,下面就以基本外设模块的控制来展开。包括按键、gpio(LED)、定时器和串口。首先我们看到pyb,这是一个module(我也说不清楚这货是啥),里面有一些方法和一些类,通过这些方法和类,就可以控制板上的外设。有两个文件可以参考,micropython-master\docs\pyboard\general.rst和quickref.rst。要控制外设,首先要导入对应的类。
然后构造某个类的一个对象(我们以LED为例,四个分别是红、绿、橙、蓝),
四个都可以on,off,toggle,而3和4还可以用intensity调节亮度(from 0-255)。要注意这时会自动将Timer(2/3)配置为PWM模式。可惜板上LED(1)坏了,红色不能点亮啊。这货调了我半天,LED_loop_test函数才看出来,并用万用表检查确认了。
按键:这应该就是一个特殊的GPIO而已,而且是固定的(对应X17)。共两个方法,一个是读按键状态,一个是设定callback。后者类似于中断函数。不过如d所说,没有消抖,会有误按。
外中断也是一个类,可以设定构造一个外中断对象,并指定一个回调函数。以下语句设定X17脚的外中断,下降沿有效,中断时打印对应的中断line
- def callback(line):
- print("line =", line)
- from pyb import Pin,ExtInt
- extint = pyb.ExtInt(Pin('X17'), ExtInt.IRQ_FALLING, Pin.PULL_UP, callback)
复制代码如果回调函数为None,则取消对应引脚的外中断(这个是测试的结果,并没有看到官方说法)。
最后来看看Timer,这时定时采集控制的一个关键。也很简单,可以构造一个Timer对象,指定用哪个定时器,频率多少,超级直观。比如设定定时器4,频率1Hz,就是下面的语句。
然后就可以设定timer溢出时做什么事情,也就是回调函数f。真的感觉比C清爽多了