- 博客(110)
- 资源 (5)
- 收藏
- 关注

原创 百度云链接失效问题与解决
目前博客的资源通过百度云盘分享,但是由于博主不小心整理的云盘,所以博客的资源路径有了改变,导致链接失效,如果需要下载,请留言或与我联系。
2021-01-03 16:14:48
4449
原创 《流畅的python》阅读笔记 - 第八章:对象引用,可变性和垃圾回收
这里可以看到,a的id(地址)已经改变了,也就是说,把12装到一个盒子里,然后贴上a和b标签,但是后来a标签贴到另外一个盒子去了,所以b标签还是贴着原来值为12的盒子,所以b也就不受a的 改变而改变了。第2步,把b标签贴到a标签标记的盒子,这样无论是a还是b标签,都贴到了同一个盒子,第3行把a标签标记的盒子再装入一个4,这样b访问b标签的盒子也就收到了改变,这里你可以协助草稿纸来画一个示意图,很好理解,a标记的盒子指的是贴着a标签的盒子。如果按照我们上文的思路,它应该输出24,可事实却不是,
2022-12-09 00:38:58
595
原创 《流畅的python》阅读笔记 - 第七章:函数装饰器和闭包
既定一个函数,那么如果需要增强一些功能,最简单的方法就是修改这个函数,但是这就需要改动以前的代码, 这可能引入一些新的问题,甚至如果函数不能被修改,这种操作就无法实现。python函数装饰器提供了这样一个功能:在函数外实现对函数功能的修改,请具体参考以下几个示例:输出这里,我们使用来装饰函数,发现原本的语句没有打印,反而运行了,这是装饰器的核心功能——它替代了原先的函数,我是这么理解的:第10行调用了,由于它被装饰器装饰,所以它其实等于:,注意是返回值,而不是函数本省。似乎还不知道它有什么作用?现在我们
2022-12-04 02:54:48
777
原创 《流畅的python》阅读笔记 - 第六章:使用一等函数实现设计模式
设计模式:可复用面向对象软件的基础》提出了23个设计模式,其中16个在动态语言中“不见了”或者是简化了,也就是说,设计模式是一种程序的设计的思想,不过也和具体的语言语法有关系。所以我感觉即使是其他语言的设计模式,仍然有学习的价值,只是我们使用的时候,要熟悉两者的语法。
2022-12-02 17:44:11
565
原创 《流畅的python》阅读笔记 - 第五章:一等函数
可以看到他们的顺序是反着的,虽然都是按a,b,c的顺序,但是由于我们传入参数的时候有指定名字,所以python会严格按我们名字来传值,无视位置,这个在实际开发中可以增加程序的可读性,程序员也不用刻意记住位置,更重要的事,如果一个函数有10个参数,而我们只需要传入其中的2个,那么可以使用关键字,这样程序设计会大大简化。你可以使用“=” 来给函数取别名,我能想到的应用就是增加程序的可读性,比如某一个函数在不同的应用中可能有不同的侧重点,可以通过“改名字”的方法来让程序更容易读懂。这种也是C语言的传参方法。
2022-12-01 22:48:01
616
1
原创 《流畅的python》阅读笔记 - 第三章:字典和集合
用来检测一个object对象是不是一个object_type类型.所以用来检测object是不是映射类型.
2022-11-18 00:11:05
465
1
原创 《流畅的python》阅读笔记 - 第二章:数据结构
在《算法》一书中,数组,链表称为数据结构.包,队列,栈称为类型,在《流畅的python》第二章中,首先介绍了python几种内置(即不用程序员实现,python自带)的类型:《流畅的python》中列图示了可变和不可变序列的差异,在我看来,可变数据多了一些可以操作数据的方法,增删,修改值等.list列表是最基础的可变序列,类似C语言的数组,只是它更灵活一些,它是容器序列,存放的元素数据类型可以是不一样的.
2022-11-15 01:17:13
202
原创 《流畅的python》阅读笔记 - 第一章:python数据模型
由于 《流畅的python》是进阶的python书籍,在阅读的时候有些内容还需要查阅相关书籍补充基础知识,所以在此记录一些理解.
2022-11-14 01:05:27
503
原创 Home Assistant : 一些问题的记录
最近又开始使用HomeAssistant,第一次安装HA和esphome跑了一下ws2812就没有再继续了.安装HA:工控机的VM虚拟机和virtualBox虚拟机都安装过HA,一开始都正常,但是小2天后都出现内核同步等待超超时的错误,后来换树莓派和台式机的VM虚拟机安装,目前这2个设备还在运行.怀疑可能是工控机安装的时候,内存分配只有1G导致的,或者是工控机的系统问题?现象是一开始运行是OK的,出现内核同步错误以后,再重新安装就还是一样的错误.还在闲置的手机安装个HA容器,大概花了一天,就运行起来很卡,
2022-06-18 16:27:23
4827
原创 vscode git commit -m 无法输入中文问题与解决
前几天发现vscode 在使用git 提交程序版本的时候竟然无法输入中文:一开始以为是vscode 的原因,今天才发现是 输入法的问题,我一般使用搜狗输入法,切换成微软的输入法既可以输入中文了。:)...
2021-02-18 02:12:55
3400
15
原创 设备接入ONENET(5)esp8266 订阅 onenet 主题(arduino)
本文假设你有一定的编程基础,并且对MQTT和OneNET有一点了解。1. 简介esp8266 作为一款带 WiFI 收发硬件的 MCU,是可以直接与 OneNET平台连接的,好处就是节约了一颗MCU的成品,对于不熟悉 esp8266 的用户使用 SDK 的方式开发可能有一定困难,本文使用 arduino 的方式,示例了esp8266 如何订阅一个主题。2. 准备Arduino IDE(软件) :Arduino IDE 是开发Arduino一个简易的IDE环境NodeMCU(硬件):NodeM.
2021-02-07 23:15:14
4267
8
原创 esp笔记(10)esp8266 驱动 ds18B20 多点测温
ds18b20 简介DS18B20 的测量范围为 -55 ℃ ~+ 125 ℃ ; 在 -10~+ 85°C范围内,精度为 ± 0.5°C ,其IO只有3个:VCC,GND,和 DQ,其中 DQ 为单总线,可以输出和输入数据,特别的,多个 18b20 的 DQ 可以连接到 MCU 同一个 IO 口上,每个 18b20 都有一个 唯一ID,MCU通过该ID来读取指定传感器的温度值。详情:DS18B20 datasheetds18b20 是通过总线竞争来避免数据干扰的,详见:DS18B20单总线策略的分
2021-02-02 21:47:52
4922
2
原创 STM32F1x HAL库学习笔记(12)硬件 SPI 的配置
本文开发环境:MCU型号:STM32F103C8T6IDE环境: MDK 5.27代码生成工具:STM32CubeMx 5.6.1HAL库版本:STM32Cube_FW_F1_V1.8.3本文内容:STM32CubeMx 配置 硬件 SPI 主机文章目录一、硬件 SPI 的使用二、SPI 的配置1. CubeMx 配置基础配置SPI 配置生成工程三. HAL 库中 SPI 的 API 函数四、其他一、硬件 SPI 的使用SPI 比 I2C 速度更快,通常可以设置为9M或1.
2021-01-29 00:50:47
3715
5
原创 esp笔记(9)Adafruit NePixel 库 驱动 ws2818 全彩 LED 灯
ws2812 是一款非常常见的RGB灯,其内部集成了3色的LED灯和一个处理IC,可以通过时序来控制灯光的颜色,它的外部只有VCC,GND,输入IO口(用来读取数据),输出IO口(用来级联),由于 ws2812 资料以及非常丰富,这里不再赘述。在Arduino中,可以使用第三方库来非常方便的驱动。首先打开库管理,在搜索栏中搜索 NeoPixel 库,本文下载的是 Adafruit NePixel 库,在IDE中,还有其他的库供我们选择:安装完毕以后,就可以来运行程序示例,查看效果了:我们在第三方库
2021-01-18 01:43:49
3089
原创 《时间触发嵌入式操作系统》学习笔记
《时间触发嵌入式操作系统》这本书已经有一些年份了,他是以古老的51单片机(8051)作为控制器讲解的,本书涉及到一些硬件基础知识,这些可能在平时开发中已经熟悉,软件部分则介绍了时间触发的嵌入式系统的设计和原理。本章主要概述了几种系统:信息系统:这类系统主要用来处理大数据,使用到了数据库桌面应用程序:这类系统主要用以开发桌面应用,电脑端的程序。实时系统:及时响应,典型应用飞机等需要立即响应的工程嵌入式系统:至少包含一个MCU的系统,各种家用电器,如录像机,微波炉等。时间触发系统:关注时间,固定的
2021-01-07 00:49:42
1305
2
原创 DIY 基于51单片机的电子温度计的总结
总结一下这次画PCB的问题,以前都是写软件,使用传感器之类的也只是用模块连接杜邦线,使用模块的好处就是方便,但是对电阻电容的理解非常肤浅,只知道其大概作用,并不知道确认它们的值。目前画了2个PCB主要出现以下几个问题:元件封装不对应:RGB LED灯第二版了还是出错忽略单片机的驱动能力:用51单片机的LED口做驱动口驱动led灯,导致灯光偏暗对元件结构不够熟悉:自锁开关是组独立,以前一直以为是并联到一起的,导致实际PCB需要自己引线连接,否则无法闭合。数码管较大:第一次画的时候直接在立创EDA中
2021-01-05 16:34:26
1873
3
原创 设备接入ONENET(4)ONENET虚拟MQTT设备 simulate-device 使用
simulate-device 可以用来模拟硬件设备接入,有助于MQTT设备的调试。可以在调试窗口中,查看MQTT发出原始数据,也可以在 translator选项中,输入原始数据,根据原始数据解析,以便查看设备产生的数据是否正确:simulate_device 百度云下载提取码:1234本文创建了2个LED设备:LED1LED2产品ID:365646产品ID:365646设备ID:617446846设备ID:617446887鉴权信息:led01鉴权信息:l
2020-08-15 18:43:28
6178
6
原创 树莓派使用 python IIC 驱动 OLED 刷新率低问题与解决
OLED屏幕为128x64,使用树莓派跑luma库的例程font_awesome.py时候,发现图标就切换的时候,有很明显的上到下的刷新效果,后来发现是I2C速率问题,因为树莓派默认的IIC是100Khz,导致帧率较低,后来改为400KHz以后,效果理想,当前环境:-IIC:400KHz-python库:luma-python版本:python3-硬件设备:树莓派Zero-操作系统:Noobs回顾一开始我使用的是Adafruit_Python库,刷新例程中的image.py的时候,发现猫图片有
2020-08-14 18:52:35
2990
3
原创 设备接入ONENET(3)STM32 + ESP8266(MQTT协议)接入云 :官方例程移植笔记(HAL+LL库)
移植本意应该是指通过修改,使得运行原先在另一个平台可运行的程序。STM32CubeMx 本文简称 Mx1. 概述麒麟座的例程使用的是标准库,ST后续推出更新的 LL库 和 HAL库,其中LL库与标准库类似,而 HAL 则更倾向于兼容通用性,体积和效率则没有优势,如果你想在自己的工程中使用麒麟座的例程,那么移植工作是难以避免的。移植工作主要是硬件的设配,所以首先需要了解麒麟镇开发板例程使用的基本情况: STM32F1 Uart1..
2020-08-07 17:51:39
4270
15
原创 设备接入ONENET(2)STM32 + ESP8266(MQTT协议)接入云 :使用 OneNET 官方麒麟座开发板例程
一、麒麟镇官方资料麒麟座官方资料整理帖子:开发板资料下载,(长期更新,首次使用须知)本文使用的示例工程:链接:OneNET-Mini板-V1.x提取码:1234二、设配外部晶振中移的开发板板载 MCU 为 STM32F103RCT6,本文使用的芯片为 STM32F103C8T6 ,理论上正确接入 ESP8266 以后,是可以直接使用开发板提供的例程进行调试,但是需要注意,麒麟座的外部晶振为 12M,而通常通常我们系统板子为8M,所以如果不更换外部晶振,需要修改stm32f10x.h头
2020-08-06 14:13:11
3000
6
原创 STM32 使用 中移 OneNET 开发板例程 串口打印乱码问题与解决
中国移动推出的物联网开发板使用了常见的 STM32F1 开发板 和 ESP8266,所以理论上我们可以使用自己的 STM32 和 ESP模块,通过下载开发板例程来实现一些示例的工程,但是你可能会发现串口乱码现象。这个问题是由于我下载的开发板资料外部晶振是12M,而我们常用的外部晶振是8M,导致时序问题。如果你使用逻辑分析仪,串口波特率选择自适应,也是可以读取到串口的值的。所以,如果不换外部晶振,可以通过修改代码来实现:以下代码片段在stm32f10x.h中,可以查找HSE_VALUE宏定义来定位:
2020-08-05 22:10:36
671
原创 设备接入ONENET(1)PC + ESP8266(MQTT协议)接入云 :使用 OneNET 的 ESP AT固件
对于MCU,无线控制可以使用WiFi,蓝牙,射频,红外甚至声控等等,如果需要实现远程的控制,我们需要设备联网,物联网需要借助云平台,云平台实现了这个功能:接收联网设备的数据,或者将数据下发到联网的设备中,如果我们有多个设备,那么借助云平台,就可以达到远程控制的效果。目前提供这一平台的有阿里云,涂鸦,OneNET 等等,本文以 oneNET 作为示例。本文使用刷入OneNET固件的方法,你甚至不需要了解MQTT协议,既可以实现远程控制。硬件清单除了开发必要的个人计算机意外,只需要:esp8266:e
2020-07-31 20:53:56
11687
33
原创 MPU9250 使用 DMP 输出姿态角:DMP 库到 STM32 平台移植笔记
本文开发环境:MCU型号:STM32F103C8T6IDE环境: MDK 5.27代码生成工具:STM32CubeMx 5.6.1HAL库版本:STM32Cube_FW_F1_V1.8.0本文内容:STM32F1x HAL库硬件 I2C 通信MPU9250 使用 DMP 输出姿态角:Roll,Pitch,YawMPU9250 中 DMP 的移植附件:MDK5 STM32F1 示例工程MPU9250 中文手册MPU9250 英文参考资料DMP 官方驱动库正点原.
2020-07-29 22:15:51
21301
106
原创 hx1838 红外遥控(1):接收时序的解码
本文开发环境:MCU型号:STM32F103C8T6IDE环境: MDK 5.27代码生成工具:STM32CubeMx 5.6.1HAL库版本:STM32Cube_FW_F1_V1.8.0本文内容:STM32 使用 定时器捕获功能捕获红外时序解码 hx1838 时序附件:MDK5 示例工程红外遥控器 + 红外接收头 :测试过程请注意遥控和接收头的距离不要过远,本文遥控在1m以上会有不稳定现象,实际操作可以使用示波器或逻辑分析仪捕获波形,保证接收头收到的遥控.
2020-07-20 16:36:18
23410
15
原创 STM32F1x HAL库学习笔记(11)定时器配置及中断(溢出中断,PWM输出,输入捕获)
本文开发环境:MCU型号:STM32F103C8T6IDE环境: MDK 5.27代码生成工具:STM32CubeMx 5.6.1HAL库版本:STM32Cube_FW_F1_V1.8.0本文内容:STM32CubeMx 配置 定时器溢出中断PWM输出输入捕获附件 :MDK工程:定时器溢出中断MDK工程:定时器PWM输出MDK工程:定时器输入捕获一、 定时器STM32 定时器其实就是一个计数器,用户可以设置计数的个数,方向(数值越来越大,或数值越来.
2020-07-16 20:26:16
19073
8
原创 ws2812 程序设计与应用(2)DMA 控制 PWM 占空比(双缓存降低内存消耗)
本文开发环境:MCU型号:STM32F10389T6IDE环境: MDK 5.27代码生成工具:STM32CubeMx 5.6.1HAL库版本:STM32Cube_FW_F1_V1.8.0本文内容:STM32 使用 DMA+PWM 方式驱动 ws2812(x4)附件:MDK5 示例工程一、DMA 的双缓存模式STM32 系列的 MCU DMA 可以搬运2个源地址的数据,DMA 自动在2个地址A和B中来回切换,可以运用于搬运大数据:当DMA在搬运A数据时候,MCU.
2020-07-15 14:42:46
4889
25
原创 DMA+Timer 产生 PWM 多出一个波形问题
我在调试ws2812的时候吗,发现灯光的数据一直和预先的不符合,简化了程序逻辑依然看不出有什么问题,最后通过逻辑分析仪发现,PWM多出了一个波形,明显的,这导致所有的数据错了一位。事实上这不是硬件上的BUG,猜测原因:因为每一次DMA请求是Timer的溢出中断产生的,所以在DMA请求前,就已经有一个PWM产生了,那么从时序看上,就多出一个PWM波形,但这并不是DMA产生的。问题回顾uint16_t test_arr[48] = { 59,29,59,5
2020-07-14 15:37:38
2526
2
原创 ws2812 程序设计与应用(1)DMA 控制 PWM 占空比原理及实现(STM32)
本文开发环境:MCU型号:STM32F10389T6IDE环境: MDK 5.27代码生成工具:STM32CubeMx 5.6.1HAL库版本:STM32Cube_FW_F1_V1.8.0本文内容:STM32 使用 DMA+PWM 方式驱动 ws2812(x4)附件:MDK5 示例工程WS2812 中英文数据手册文章目录一、WS2812 简介时序传输二、ws2812 驱动的几种方式三、DMA+PWM+TIM 驱动 ws2812四、STM32CubeMx 配置基础.
2020-07-11 21:11:51
18891
33
原创 RT-Thread 笔记(4):RT-Thread 使用AT软件包驱动ESP8266
本文使用了At软件包后程序ROM较大,固使用了大容量型号:STM32F103ZE请确保系统有一个可用的串口设备,需要用以连接 esp8266,可参考:《RT-Thread 笔记(3):RT-Thread 添加一个串口设备》文章目录一、RT-Thread Stuido 软件包二、软件包的添加与应用1. 添加软件包2. 配置软件包3. 应用三、硬件连接四,验证一、RT-Thread Stuido 软件包RT-Thread 社区提供了丰富的软件包,软件包是具体实现某一功能的代码库,如at软件包,将..
2020-07-07 19:31:17
2815
2
原创 RT-Thread 笔记(3):RT-Thread 添加一个串口设备
文章目录一、添加一个串口设备1. 确定IO口2. 编辑 board.h2.1 打开board.h2.2 添加代码2.3 查看串口设备3. 程序设计3.1 官方示例程序3.2 程序的使用4. 测试一、添加一个串口设备本文简记了如何新增和使用串口2设备,更多请参考官方文档:https://www.rt-thread.org/document/site/programming-manual/device/uart/uart/#_11RTT 中外设作为设备存在,在建立工程的时候,一般串口1被作为系统默认
2020-07-06 22:21:51
9370
4
原创 RT-Thread 笔记(2):RT-Thread 开发:应用开发与设备开发
一、RT-Thread 开发方式当嵌入式程序员使用一款MCU开发一个功能时,程序都涉及到外设的初始化和程序逻辑,以流水灯为例,首先需要初始化对应的 IO 口,接着使用延时语句,不断的切换 IO 口的导通情况。在RTT中,外设称为设备,而实现功能的代码称为应用。所以,RTT有两种开发方式:设备开发应用开发1. 应用开发应用开发需要根据具体的需求而定,RTT可以通过创建多个线程(任务),来实现多个功能同时运行。1.1 创建一个线程可以通过一下示例程序创建一个线程:#define THREAD
2020-07-06 17:17:25
2388
原创 RT-Thread 笔记(1):使用 RT-Thread Studio 创建工程
文章目录一、RT-Thread 操作系统简介二、RT-Thread Studio1. 下载2. 创建工程3. 测试一、RT-Thread 操作系统简介略二、RT-Thread Studio虽然 RT-Thread(简称RTT)只是一个操作系统,理论上是可以任何一个IDE 如 MDK 等都可以支持,但使用官方推出的 RT-Thread Studio 开发更为方便,用户可以直接创建一个基于 RT-Thread 的工程,无需移植,也可以添加各种功能组件。1. 下载下载地址:RT-Thread Stud
2020-07-05 19:33:03
6684
2
原创 STM32 LL库串口丢包问题与解决
在CubeMx生成代码时,默认为 HAL 库,但也可以指定为 LL库,LL库基本是直接操作寄存器,功能较为单一,但是效率更高。串口使用HAL如果每次接收一个字次,由于HAL库的效率,容易丢包,若一次性接收多个字节,又需要固定的字节数。于是这次使用了 LL 库,在LL库中:LL_USART_TransmitData8(); 为发送一个字节函数,通过查看定义可知,它直接操作了DR寄存器,所以效率很高。这次想设计一个简单的程序:当收到字符A的时,发送字符E,但是发现居然有丢包的现象,这是由于程序逻辑问题导致
2020-07-02 22:12:06
3059
原创 单片机状态机与定时器实现按键事件检测:短按,长按,单击,长单击(轮询方式)
文章目录一、有限状态机(FSM)简介二、按键的状态机1. 按键的状态2. 按键的动作3. 按键的状态转换图2. 按键事件与定时器应用三、状态图与事件四、程序设计1. 枚举变量:按键状态与事件2. 定义状态3. 事件的检测4. 事件处理(禁止/启用重复触发)五、程序源码六、改进一、有限状态机(FSM)简介有限状态机FSM(Finite State Machine),通常指任意一个时刻在一种状态之中,不同状态的转移是通过动作来触发的,不同状态下,不同动作将触发不同的状态转移,当然也可以不发生转移。二、按键
2020-07-02 14:59:43
9529
5
原创 STM32F1x HAL库学习笔记(10)ADC 配置
本文开发环境:MCU型号:STM32F103C8T6IDE环境: MDK 5.27代码生成工具:STM32CubeMx 5.4.0HAL库版本:STM32Cube_FW_F1_V1.8.0本文内容:STM32CubeMx 配置 ADC示例工程一、 ADC 简介ADC(analogue-to-digital conversion)指的是将模拟量转换为数字量的过程,在 MCU 中有广泛的应用,通常用以测量电压的值,比如,测量热敏或光敏的电阻两端的电压,就可以获取当前温度或光线.
2020-06-29 20:22:16
2198
原创 771. 宝石与石头
给定字符串J代表石头中宝石的类型,和字符串S代表你拥有的石头。 S中每个字符代表了一种你拥有的石头的类型,你想知道你拥有的石头中有多少是宝石。J中的字母不重复,J和 S中的所有字符都是字母。字母区分大小写,因此"a"和"A"是不同类型的石头。题解:int numJewelsInStones(char * J, char * S){ int J_cnt = 0; for(int index = 0;S[index]!=0;index++) { if(strchr(J, S[
2020-06-25 01:18:30
138
原创 1480. Running Sum of 1d Array
1480. Running Sum of 1d Array/** * Note: The returned array must be malloced, assume caller calls free(). */int* runningSum(int* nums, int numsSize, int* returnSize){ int* outputNums = (int*)malloc(sizeof(int)*numsSize); //定义保存结果
2020-06-22 16:39:17
876
原创 STM32 操作系统内核调度原理与实现(3):两个任务之间的切换
在实现多个任务之间的切换之前,可以先通过实现两个固定任务切换,作为一个过度,本文将介绍在STM32中,如何通过操作内核,来实现两个固定任务之间的切换。一、嵌入汇编1. 嵌入汇编的方法正如前文所提及,实现任务切换中操作内核寄存器需要使用汇编程序,所以我们需要掌握如何在自己使用的IDE中嵌入汇编语句,本文使用的编译器为MDK5默认编译器v5版本:嵌入汇编的方式十分简单,只需要使用_asm来声明一个函数即可,如://程序清单3.1__asm void BUD_ContextSwitch(stack_
2020-05-31 02:10:33
2205
5
原创 STM32F1x HAL库学习笔记(9)硬件 I2C(IIC)主从机的配置
本文开发环境:MCU型号:STM32F103ZET6IDE环境: MDK 5.27代码生成工具:STM32CubeMx 5.4.0HAL库版本:STM32Cube_FW_F1_V1.8.0本文内容:STM32CubeMx 配置主从I2C(IIC)示例工程一、简介I2C 是一种双线协议,由一根时钟线和一根数据线组成,由于时序简单,应用广泛,ST 硬件 I2C 网传...
2020-04-30 16:52:16
20265
45
原创 STM32 操作系统内核调度原理与实现(2):任务调度的基础
一、STM32F103ze 简介本文中,采用的 MCU 具体型号为 STM32F103ZET6,其拥有丰富的外设资源(USB,IIC,USART,TIMER)等,大容量的RAM和ROM,以及上百个IO口,可满足普通嵌入式设备的大部分需求: STM32F103ZE 参数 STM32F103ZE 存储器 程序存储器类型 Flash ROM(B...
2020-04-19 15:14:21
1920
IR_demo.7z
2020-07-20
DMA_UART.zip
2019-06-01
PET_AI_Demo.zip
2019-06-01
pctolcd2002.zip
2019-06-01
Image2Lcd.zip
2019-06-01
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人