2021-11-22 11:42:23 +00:00
|
|
|
|
# Pika派开发板游玩指南!到手的开发板玩起来!
|
|
|
|
|
|
|
|
|
|
今天我们不聊驱动开发还有架构原理这些令人头大的硬核内容,我们就单纯的用Pika派开发板玩玩Python编程!
|
|
|
|
|
|
|
|
|
|
在单片机上点亮一个“人生苦短,我用Python”的成就!
|
|
|
|
|
|
|
|
|
|
观看此篇文章的读者想必大部分手里已经有一块Pika派,如果没有的话,也可以去淘宝店铺搜索“皮卡派”,就可以找到了~
|
|
|
|
|
|
|
|
|
|
开发板长下面这个样子,板载一个STM32芯片,型号是STM32G030,上面有4个炫彩RGB和一个串口转USB芯片,采用Type-C接口。
|
|
|
|
|
|
|
|
|
|
![输入图片说明](https://images.gitee.com/uploads/images/2021/1122/193551_ac53c408_5521445.png "屏幕截图.png")
|
|
|
|
|
|
2021-11-22 12:24:15 +00:00
|
|
|
|
这个开发板由PikaScript项目官方支持,持续滚动更新,PikaScript的最新内核,最新功能,都可以在这个开发板上抢先体验到。
|
|
|
|
|
|
|
|
|
|
这个开发板也由项目官方适配了大量外设驱动、包括GPIO、TIME、ADC、IIC、LCD、KEY、PWM等模块的驱动都已经开发好,可以直接用python进行编程。
|
|
|
|
|
|
|
|
|
|
## 如何给单片机下载Python程序
|
|
|
|
|
|
|
|
|
|
下载方法非常简单,只需要连接上Type-C数据线就可以了。
|
|
|
|
|
|
|
|
|
|
然后我们点examples文件夹,
|
|
|
|
|
|
|
|
|
|
![输入图片说明](https://images.gitee.com/uploads/images/2021/1122/200332_3e87979e_5521445.png "屏幕截图.png")
|
|
|
|
|
|
|
|
|
|
我们用一根USB数据线,连接电脑和Pika派开发板,就可以下载程序了。
|
|
|
|
|
|
|
|
|
|
下载程序的时候,需要使用一个串口助手工具,我们可以使用正点原子开发的XCOM助手,在正点原子的论坛可以下载到。
|
|
|
|
|
|
|
|
|
|
![输入图片说明](https://images.gitee.com/uploads/images/2021/1122/200618_b8f264a8_5521445.png "屏幕截图.png")
|
|
|
|
|
|
|
|
|
|
选择好COM口,然后波特率选为115200,再点打开串口,这时候,就和Pika派连接上了。
|
|
|
|
|
|
|
|
|
|
这时候,直接发送一个Pthon脚本文件,就可以给Pika派下载Python程序了。
|
|
|
|
|
|
|
|
|
|
为了验证下载能不能成功,我们使用PikaScript源码仓库里面的示例Python脚本。
|
|
|
|
|
|
|
|
|
|
我们进入PikaScript的代码仓库
|
|
|
|
|
|
|
|
|
|
https://gitee.com/Lyon1998/pikascript
|
|
|
|
|
|
|
|
|
|
惯例点一个Star~
|
|
|
|
|
|
|
|
|
|
![输入图片说明](https://images.gitee.com/uploads/images/2021/1122/201054_c22a0714_5521445.png "屏幕截图.png")
|
|
|
|
|
|
|
|
|
|
然后我们点击examples文件夹,里面放的就是可以运行的Python例程了~
|
|
|
|
|
|
|
|
|
|
![输入图片说明](https://images.gitee.com/uploads/images/2021/1122/201133_2caa690c_5521445.png "屏幕截图.png")
|
|
|
|
|
|
|
|
|
|
我们打开GPIO文件夹,来点亮一下流水灯看看~
|
|
|
|
|
|
|
|
|
|
![输入图片说明](https://images.gitee.com/uploads/images/2021/1122/201304_ee6f19c7_5521445.png "屏幕截图.png")
|
|
|
|
|
|
|
|
|
|
GPIO文件夹里面的main.py就是GPIO的示例代码了
|
|
|
|
|
|
|
|
|
|
![输入图片说明](https://images.gitee.com/uploads/images/2021/1122/201351_226525cc_5521445.png "屏幕截图.png")
|
|
|
|
|
|
|
|
|
|
我们可以点开main.py看看~
|
|
|
|
|
|
|
|
|
|
![输入图片说明](https://images.gitee.com/uploads/images/2021/1122/201416_4e812a19_5521445.png "屏幕截图.png")
|
|
|
|
|
|
|
|
|
|
先不解释里面的内容,我们直接下载这个脚本看看。
|
|
|
|
|
|
|
|
|
|
我们也在桌面新建一个main.py文件,然后把这段代码复制进去。
|
|
|
|
|
|
|
|
|
|
![输入图片说明](https://images.gitee.com/uploads/images/2021/1122/201535_8f49da20_5521445.png "屏幕截图.png")
|
|
|
|
|
|
|
|
|
|
我们选择这个main.py文件
|
|
|
|
|
|
|
|
|
|
![输入图片说明](https://images.gitee.com/uploads/images/2021/1122/201639_79a783b1_5521445.png "屏幕截图.png")
|
|
|
|
|
|
|
|
|
|
然后点击"发送文件", 就可以把脚本下载进去了!
|
|
|
|
|
|
|
|
|
|
我们可以看到[ OK ]: Programing ok!的提示,这就是说明下载成功了!
|
|
|
|
|
|
|
|
|
|
![输入图片说明](https://images.gitee.com/uploads/images/2021/1122/201816_13337449_5521445.png "屏幕截图.png")
|
|
|
|
|
|
|
|
|
|
这时开发板上面的LED就会闪动起来!
|
|
|
|
|
|
2021-11-22 12:45:11 +00:00
|
|
|
|
![输入图片说明](https://images.gitee.com/uploads/images/2021/1122/202935_f82345e6_5521445.png "屏幕截图.png")
|
2021-11-22 12:24:15 +00:00
|
|
|
|
|
|
|
|
|
恭喜你达成单片机玩Python的成就!
|
|
|
|
|
|
2021-11-22 12:45:11 +00:00
|
|
|
|
## GPIO的脚本里写了什么?
|
|
|
|
|
|
|
|
|
|
下面我们来逐行解析一下GPIO的这个例程。
|
|
|
|
|
|
|
|
|
|
![输入图片说明](https://images.gitee.com/uploads/images/2021/1122/203322_8cbe563c_5521445.png "屏幕截图.png")
|
|
|
|
|
|
|
|
|
|
首先是第一行和第二行,这表示导入了两个模块,一个是```PikaStdLib```模块,一个是```STM32G0```模块。
|
|
|
|
|
PikaStdLib是PikaScript的标准库,里面有一些系统的功能,比如可以检查内存的占用。
|
|
|
|
|
|
|
|
|
|
第四行里面,我们就新建了一个mem对象,这个对象的类是PikaStdLib.MemChecker()。
|
|
|
|
|
|
|
|
|
|
![输入图片说明](https://images.gitee.com/uploads/images/2021/1122/203532_a3e2dc7b_5521445.png "屏幕截图.png")
|
|
|
|
|
|
|
|
|
|
这个类有max()方法和now()方法,使用这两个方法,就可以打印出当前PikaScript所使用的内存大小。
|
|
|
|
|
|
|
|
|
|
![输入图片说明](https://images.gitee.com/uploads/images/2021/1122/203657_3ef8a678_5521445.png "屏幕截图.png")
|
|
|
|
|
|
|
|
|
|
我们可以看看串口的打印输出,可以看到最大的内存占用是1.51kB,而当前的内存占用是0.61kB,是不是很小!
|
|
|
|
|
|
|
|
|
|
![输入图片说明](https://images.gitee.com/uploads/images/2021/1122/203737_1509b9db_5521445.png "屏幕截图.png")
|
|
|
|
|
|
|
|
|
|
time对象是通过STM32G0的Time()类新建的,可以提供基本的延时功能。
|
|
|
|
|
|
|
|
|
|
![输入图片说明](https://images.gitee.com/uploads/images/2021/1122/203848_4a13cdf4_5521445.png "屏幕截图.png")
|
|
|
|
|
|
|
|
|
|
通过time.sleep_ms()方法,就可以按毫秒进行延时了,比如下面代码的作用就是延时500ms。
|
|
|
|
|
|
|
|
|
|
![输入图片说明](https://images.gitee.com/uploads/images/2021/1122/203938_62748bd5_5521445.png "屏幕截图.png")
|
|
|
|
|
|
|
|
|
|
io1就是我们今天的主角了,这是一个GPIO对象,是用STM32G0.GPIO()类新建的。
|
|
|
|
|
|
|
|
|
|
![输入图片说明](https://images.gitee.com/uploads/images/2021/1122/204024_6adc51e3_5521445.png "屏幕截图.png")
|
|
|
|
|
|
|
|
|
|
在新建了io1对象之后,我们要给这个io进行初始化,init()用于对象初始化,在最前面使用,然后setPin('PA8')表示使用PA8口,setMode('out')表示使用输出模式,而enable()表示启动io1的硬件,low()将io1的电平拉低。
|
|
|
|
|
|
|
|
|
|
PA8上连接了Pika派上面的一个led灯,只要控制PA8的电平,就可以控制灯的亮灭了。
|
|
|
|
|
|
|
|
|
|
![输入图片说明](https://images.gitee.com/uploads/images/2021/1122/204104_1f08a3b3_5521445.png "屏幕截图.png")
|
|
|
|
|
|
|
|
|
|
而在程序的主循环里面,对io1进行高低电平的切换,就可以使LED闪动了~
|
|
|
|
|
|
|
|
|
|
![输入图片说明](https://images.gitee.com/uploads/images/2021/1122/204301_0ec427ea_5521445.png "屏幕截图.png")
|