# 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") 这个开发板由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就会闪动起来! ![输入图片说明](https://images.gitee.com/uploads/images/2021/1122/202935_f82345e6_5521445.png "屏幕截图.png") 恭喜你达成单片机玩Python的成就! ## 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") ## 其他的Python例程解读 我们再解读一下examples里面的其他例程,比如这个ADC例程,就是读取PA1管脚上面的模拟电压值,然后打印出来~ ![输入图片说明](https://images.gitee.com/uploads/images/2021/1122/204751_8bb53225_5521445.png "屏幕截图.png") 下面是串口的例程,功能是读取收到的两个字节,然后打印出来 ![输入图片说明](https://images.gitee.com/uploads/images/2021/1122/205006_0e0113df_5521445.png "屏幕截图.png") 再下面这个是PWM的例程,可以指定管脚输出PWM波,可以设置频率和占空比 ![输入图片说明](https://images.gitee.com/uploads/images/2021/1122/205127_5f60a8d7_5521445.png "屏幕截图.png") 再下面这个就是RGB的例程了~ ![输入图片说明](https://images.gitee.com/uploads/images/2021/1122/205232_6de29e2f_5521445.png "屏幕截图.png") 这个例程可以驱动板载的4个RGB流水灯~ ![输入图片说明](https://images.gitee.com/uploads/images/2021/1122/205338_ae2e2de2_5521445.png "屏幕截图.png") ## 固件升级 Pika派的固件是滚动更新的,会不断推出新的固件版本,不断提供新的功能,而有一些新的功能只有升级固件才能玩到,所以学会升级固件也是很重要的~ 升级固件也是使用串口就可以了,在升级时,我们需要用bsp编译出一个固件的.bin文件,如果你是一个动手能力很强的DIY爱好者,可以自己编译固件,编译的方法在视频里面~ https://www.bilibili.com/video/BV1c44y1v7Jd ![输入图片说明](https://images.gitee.com/uploads/images/2021/1122/205647_0d32ad97_5521445.png "屏幕截图.png") 如果你想用现成的固件也可以直接下载编译好的~ ![输入图片说明](https://images.gitee.com/uploads/images/2021/1122/210126_d14c9754_5521445.png "屏幕截图.png") 点击下载就可以获得最新的固件了~ ![输入图片说明](https://images.gitee.com/uploads/images/2021/1122/210155_5248a47c_5521445.png "屏幕截图.png") 下面需要让pika派进入升级模式,我们按住开发板上面的SW0键,同时按下RST键,就可以进入升级模式了。 ![输入图片说明](https://images.gitee.com/uploads/images/2021/1122/210422_3acb9ed0_5521445.png "屏幕截图.png") 在升级模式下,我们可以看到串口的提示信息 ![输入图片说明](https://images.gitee.com/uploads/images/2021/1122/210526_b7b28342_5521445.png "屏幕截图.png") 然后我们用串口助手选择刚才下载的stm32g030c8.bin文件,通过串口发送。 识别到固件后会显示Reciving.... ![输入图片说明](https://images.gitee.com/uploads/images/2021/1122/210611_2fd707d0_5521445.png "屏幕截图.png") 发送完毕后再按一下RST键重启,就完成升级了!