目录

K210芯片上IO口

板子上的引脚

如何理解【引脚]映射[内部功能]?

fpioa_manage 类

1、register(pin, func, force=True)

2、unregister(pin) 介绍

3、get_pin_by_function(pin)

4、 get_gpio_used()

FPIOA类介绍

1、set_function(pin, func)函数

2、get_Pin_num(func)

默认对应关系

映射的主要程序

附  片内外设表


兄弟们,向入门K210,看我这个文章一定让你受益匪浅,和传统的开发模式又有很大的不同,甚至和OpenMv也不也一样,当然规则是一样的,就是GPIO的使用方法不一样。我的板子是MAIX DOCK开发板。大家注意引脚

K210芯片上IO口

这仅仅是芯片上的接口,并不是引出来的焊接在板子上的IO的名字。相对于K210芯片上共有32+8个GPIO。就是我们软件可以直接控制,这40个引脚输入输出。如果想外接设备,那就得用到板子上的引脚,和K210芯片引脚不是一一对应的,需要用软件挂载上去,才能使用板子上的某个引脚。举个例子,有两列人,一列是男人,一列是女人,男人代表板子上的引脚,女人代表K210芯片上的引脚,我们可以通过软件控制女人去随便选择一个男人,这样这个男人才有用,做出相对应的功能。这个也叫引脚映射内部功能。

General Purpose Input Output (通用输入/输出)简称为 GPIO,或总线扩展器。

K210上有高速 GPIO(GPIOHS) 和通用 GPIO
在 K210 上, GPIO 有以下特征:

  • 32个高速 GPIO:

    高速 GPIO 为 GPIOHS,共 32 个。具有如下特点:

    • 可配置输入输出信号
    • 每个 IO 具有独立中断源
    • 中断支持边沿触发和电平触发
    • 每个 IO 可以分配到 FPIOA 上 48 个管脚之一
    • 可配置上下拉,或者高阻
  • 8个通用 GPIO:

    通用 GPIO 共 8 个,具有如下特点:

    • 8 个 IO 使用一个中断源
    • 可配置输入输出信号
    • 可配置触发 IO 总中断,边沿触发和电平触发
    • 每个 IO 可以分配到 FPIOA 上 48 个管脚之一

板子上的引脚

可以看原理图,这是板子上的引脚,需要挂载芯片上的引脚,才能发挥特定的功能。数数是20+20+18+18 = 78 个引脚。这个板子把所有的引脚的都引出来了,包括LCD屏的8080口,所以有些引脚并不能用,例如LCD_D0~LCD_D7,DVP_D0~DVP_D7。上面写着IO0~IO47,这些都是好使的,但是也有几个特殊的,IO36~IO47,这几个都是控制LCD和DVP的,也别用。

如何理解【引脚]映射[内部功能]?

K210 芯片上的 外部引脚 和 内部功能 是彼此独立的,引脚是指从芯片上引出的许多金属触点,也就是我们俗称的功能引脚,它可以是 GPIO / PWM / ADC / I2C 等内部功能引脚,传统的认知是引脚对应的内部功能是不可改变的,但可以复用的,而 K210 是可以通过映射来改变引脚功能的,看如下示意图理解具体的映射功能。

接着还可以将 SPI 的 SCLK/MOSI/MISO/CS 映射(MAP)到 IO6/IO7/IO8/IO9 引脚,也就可以在此引脚上进行 SPI 的读写操作

调用 register 函数将 pin 引脚与具体的硬件功能(GPIO/I2C/UART/I2S/SPI)绑定起来,在不使用的时候调用 unregister 释放引脚所绑定的硬件功能(或称 function ),这不同于传统单片机的理解, K210 可以将一定范围内的引脚映射到具体的硬件功能。

from fpioa_manager import fmfm.register(11, fm.fpioa.GPIO0, force=True)
fm.register(12, fm.fpioa.GPIOHS0, force=True)
fm.register(13, fm.fpioa.UART2_TX)
fm.register(14, fm.fpioa.UART2_RX)# other codefm.unregister(11)
fm.unregister(12)
fm.unregister(13)
fm.unregister(14)

fpioa_manage 类

此类可以完成引脚重映射

1、register(pin, func, force=True)

  • pin: 功能映射引脚
  • function : 芯片功能
  • force: 强制分配,如果为True,则可以多次对同一个引脚注册;False则不允许同一引脚多次注册。默认为True是为了方便IDE多次运行程序使用

设置引脚(pin)对应的外设功能(func),默认启用强制绑定参数(force=True),它将强制更换指定的引脚功能,如果发现存在上一个绑定的引脚,则会发出一个警告,但不影响代码继续执行。如果设置 force=False ,则会在 register 发现硬件功能已经被使用了,此时就会弹出异常,方便深度开发的时候不清楚 GPIO/HS 的分配情况,常见于运行某个代码的按键在访问某些功能的时候不能使用了的场合。

使用方法

from fpioa_manager import fm
fm.register(16, fm.fpioa.GPIO2)
fm.register(13, fm.fpioa.GPIO2)
fm.register(12, fm.fpioa.GPIO2, force=False)

2、unregister(pin) 介绍

释放引脚(pin)上的硬件功能(GPIO/I2C/SPI/I2S/UART)。

3、get_pin_by_function(pin)

获取引脚(pin)上绑定的硬件功能。

4、 get_gpio_used()

获取所有 gpio 的使用情况,它只查询 GPIOHS / GPIO 的引脚分配情况, None 表示该硬件功能未被使用。

FPIOA类介绍

  利用此类里面的函数,也可以设置GPIO的重映射

1、set_function(pin, func)函数

参数:

  • pin: 引脚编号,取值 [0, 47], 具体的引脚连接请看电路图, 也可以使用 board_info. 然后按 TAB 按键补全来获得板子的常用引脚,比如 board_info.LED_G
  • func: 外设功能,传一个整型值,可以通过 fm.fpioa.help()或者查本页末尾的 附录: 外设表 表得到

比如 需要将连接 绿色 LED 的引脚映射到 高速 GPIO0 上:

fpioa = FPIOA()
fpioa.set_function(board_info.LED_G, fm.fpioa.GPIOHS0)

2、get_Pin_num(func)

参数:

  • func: 外设功能,传一个整型值,可以通过 fm.fpioa.help()或者查本页末尾的 附录: 外设表 表得到
fpioa = FPIOA()
fpioa.set_function(board_info.LED_G, fm.fpioa.GPIOHS0)
pin = fpioa.get_Pin_num(fm.fpioa.GPIOHS0)
if pin == board_info.LED_G:print("set function ok")

默认对应关系

芯片内部引脚和外部引脚也是默认连接的,也可以重新映射。默认对应的关系是:当不做任何设置时,控制GPIOHS0位高电平,则在IO16口会出现高电平。

('fm.fpioa.GPIOHS0', IO16)
('fm.fpioa.GPIOHS1', IO17)
('fm.fpioa.GPIOHS2', IO18)
('fm.fpioa.GPIOHS3', IO19)
('fm.fpioa.GPIOHS4', IO37)
('fm.fpioa.GPIOHS5', IO38)
('fm.fpioa.GPIOHS6', IO22)
('fm.fpioa.GPIOHS7', IO23)
('fm.fpioa.GPIOHS8', IO24)
('fm.fpioa.GPIOHS9', IO25)
('fm.fpioa.GPIOHS10', None)
('fm.fpioa.GPIOHS11', IO27)
('fm.fpioa.GPIOHS12', IO28)
('fm.fpioa.GPIOHS13', IO29)
('fm.fpioa.GPIOHS14', IO30)
('fm.fpioa.GPIOHS15', IO31)
('fm.fpioa.GPIOHS16', IO32)
('fm.fpioa.GPIOHS17', IO33)
('fm.fpioa.GPIOHS18', IO34)
('fm.fpioa.GPIOHS19', IO35)
('fm.fpioa.GPIOHS20', None)
('fm.fpioa.GPIOHS21', None)
('fm.fpioa.GPIOHS22', None)
('fm.fpioa.GPIOHS23', None)
('fm.fpioa.GPIOHS24', IO40)
('fm.fpioa.GPIOHS25', IO41)
('fm.fpioa.GPIOHS26', IO42)
('fm.fpioa.GPIOHS27', IO43)
('fm.fpioa.GPIOHS28', IO44)
('fm.fpioa.GPIOHS29', IO26)
('fm.fpioa.GPIOHS30', IO46)
('fm.fpioa.GPIOHS31', IO47)
('fm.fpioa.GPIO0', IO8)
('fm.fpioa.GPIO1', IO9)
('fm.fpioa.GPIO2', None)
('fm.fpioa.GPIO3', None)
('fm.fpioa.GPIO4', IO12)
('fm.fpioa.GPIO5', IO13)
('fm.fpioa.GPIO6', IO14)
('fm.fpioa.GPIO7', IO15)

映射的主要程序

映射一共有两种方法

1、就是利用

映射到通用GPIO

from Maix import GPIO # 调用GPIO模块 ,可以直接设置通用GPIO和高速GPIO
from board import board_info # 调用板载模块,可以直接控制板子引脚
from fpioa_manager import fm # FPIOA模块,可以控制内部引脚映射到外部引脚fm.register(board_info.LED_R,fm.fpioa.GPIO0)
fm.register(board_info.LED_R,fm.fpioa.GPIO1)
fm.register(board_info.LED_R,fm.fpioa.GPIO2)
fm.register(board_info.LED_R,fm.fpioa.GPIO3)
fm.register(board_info.LED_R,fm.fpioa.GPIO4)
fm.register(board_info.LED_R,fm.fpioa.GPIO5)
fm.register(board_info.LED_R,fm.fpioa.GPIO6)
fm.register(board_info.LED_R,fm.fpioa.GPIO7)led_r=GPIO(GPIO.GPIO7,GPIO.OUT) # 直接控制led_r的状态,即可以控制引脚
led_r=GPIO(GPIO.GPIO7,GPIO.IN) # 设置成输入模式led_r.value(0) # 输出低电平。
led_r.value(1) # 输出高电平。

2、利用FPIOA类配置重映射

from Maix import FPIOA
from Maix import GPIO # 调用GPIO模块 ,可以直接设置通用GPIO和高速GPIO# 可以映射到片上外设 GPIOHS0~GPIOHS31
fpioa = FPIOA()# 均可以
fpioa.set_function(board_info.LED_B, fm.fpioa.GPIOHS31)
# 或者
fpioa.set_function(14, fm.fpioa.GPIOHS31)# 我的LED_B在引脚14上led_b=GPIO(GPIO.GPIOHS31,GPIO.OUT)其余控制,和通用GPIO一致

附  片内外设表

把set_function(pin, func) 里面的func替换成任意一个外设名称均可以重映射

外设功能(func) 简要描述
JTAG_TCLK JTAG Test Clock
JTAG_TDI JTAG Test Data In
JTAG_TMS JTAG Test Mode Select
JTAG_TDO JTAG Test Data Out
SPI0_D0 SPI0 Data 0
SPI0_D1 SPI0 Data 1
SPI0_D2 SPI0 Data 2
SPI0_D3 SPI0 Data 3
SPI0_D4 SPI0 Data 4
SPI0_D5 SPI0 Data 5
SPI0_D6 SPI0 Data 6
SPI0_D7 SPI0 Data 7
SPI0_SS0 SPI0 Chip Select 0
SPI0_SS1 SPI0 Chip Select 1
SPI0_SS2 SPI0 Chip Select 2
SPI0_SS3 SPI0 Chip Select 3
SPI0_ARB SPI0 Arbitration
SPI0_SCLK SPI0 Serial Clock
UARTHS_RX UART High speed Receiver
UARTHS_TX UART High speed Transmitter
RESV6 Reserved function
RESV7 Reserved function
CLK_SPI1 Clock SPI1
CLK_I2C1 Clock I2C1
GPIOHS0 GPIO High speed 0
GPIOHS1 GPIO High speed 1
GPIOHS2 GPIO High speed 2
GPIOHS3 GPIO High speed 3
GPIOHS4 GPIO High speed 4
GPIOHS5 GPIO High speed 5
GPIOHS6 GPIO High speed 6
GPIOHS7 GPIO High speed 7
GPIOHS8 GPIO High speed 8
GPIOHS9 GPIO High speed 9
GPIOHS10 GPIO High speed 10
GPIOHS11 GPIO High speed 11
GPIOHS12 GPIO High speed 12
GPIOHS13 GPIO High speed 13
GPIOHS14 GPIO High speed 14
GPIOHS15 GPIO High speed 15
GPIOHS16 GPIO High speed 16
GPIOHS17 GPIO High speed 17
GPIOHS18 GPIO High speed 18
GPIOHS19 GPIO High speed 19
GPIOHS20 GPIO High speed 20
GPIOHS21 GPIO High speed 21
GPIOHS22 GPIO High speed 22
GPIOHS23 GPIO High speed 23
GPIOHS24 GPIO High speed 24
GPIOHS25 GPIO High speed 25
GPIOHS26 GPIO High speed 26
GPIOHS27 GPIO High speed 27
GPIOHS28 GPIO High speed 28
GPIOHS29 GPIO High speed 29
GPIOHS30 GPIO High speed 30
GPIOHS31 GPIO High speed 31
GPIO0 GPIO pin 0
GPIO1 GPIO pin 1
GPIO2 GPIO pin 2
GPIO3 GPIO pin 3
GPIO4 GPIO pin 4
GPIO5 GPIO pin 5
GPIO6 GPIO pin 6
GPIO7 GPIO pin 7
UART1_RX UART1 Receiver
UART1_TX UART1 Transmitter
UART2_RX UART2 Receiver
UART2_TX UART2 Transmitter
UART3_RX UART3 Receiver
UART3_TX UART3 Transmitter
SPI1_D0 SPI1 Data 0
SPI1_D1 SPI1 Data 1
SPI1_D2 SPI1 Data 2
SPI1_D3 SPI1 Data 3
SPI1_D4 SPI1 Data 4
SPI1_D5 SPI1 Data 5
SPI1_D6 SPI1 Data 6
SPI1_D7 SPI1 Data 7
SPI1_SS0 SPI1 Chip Select 0
SPI1_SS1 SPI1 Chip Select 1
SPI1_SS2 SPI1 Chip Select 2
SPI1_SS3 SPI1 Chip Select 3
SPI1_ARB SPI1 Arbitration
SPI1_SCLK SPI1 Serial Clock
SPI_SLAVE_D0 SPI Slave Data 0
SPI_SLAVE_SS SPI Slave Select
SPI_SLAVE_SCLK SPI Slave Serial Clock
I2S0_MCLK I2S0 Master Clock
I2S0_SCLK I2S0 Serial Clock(BCLK)
I2S0_WS I2S0 Word Select(LRCLK)
I2S0_IN_D0 I2S0 Serial Data Input 0
I2S0_IN_D1 I2S0 Serial Data Input 1
I2S0_IN_D2 I2S0 Serial Data Input 2
I2S0_IN_D3 I2S0 Serial Data Input 3
I2S0_OUT_D0 I2S0 Serial Data Output 0
I2S0_OUT_D1 I2S0 Serial Data Output 1
I2S0_OUT_D2 I2S0 Serial Data Output 2
I2S0_OUT_D3 I2S0 Serial Data Output 3
I2S1_MCLK I2S1 Master Clock
I2S1_SCLK I2S1 Serial Clock(BCLK)
I2S1_WS I2S1 Word Select(LRCLK)
I2S1_IN_D0 I2S1 Serial Data Input 0
I2S1_IN_D1 I2S1 Serial Data Input 1
I2S1_IN_D2 I2S1 Serial Data Input 2
I2S1_IN_D3 I2S1 Serial Data Input 3
I2S1_OUT_D0 I2S1 Serial Data Output 0
I2S1_OUT_D1 I2S1 Serial Data Output 1
I2S1_OUT_D2 I2S1 Serial Data Output 2
I2S1_OUT_D3 I2S1 Serial Data Output 3
I2S2_MCLK I2S2 Master Clock
I2S2_SCLK I2S2 Serial Clock(BCLK)
I2S2_WS I2S2 Word Select(LRCLK)
I2S2_IN_D0 I2S2 Serial Data Input 0
I2S2_IN_D1 I2S2 Serial Data Input 1
I2S2_IN_D2 I2S2 Serial Data Input 2
I2S2_IN_D3 I2S2 Serial Data Input 3
I2S2_OUT_D0 I2S2 Serial Data Output 0
I2S2_OUT_D1 I2S2 Serial Data Output 1
I2S2_OUT_D2 I2S2 Serial Data Output 2
I2S2_OUT_D3 I2S2 Serial Data Output 3
RESV0 Reserved function
RESV1 Reserved function
RESV2 Reserved function
RESV3 Reserved function
RESV4 Reserved function
RESV5 Reserved function
I2C0_SCLK I2C0 Serial Clock
I2C0_SDA I2C0 Serial Data
I2C1_SCLK I2C1 Serial Clock
I2C1_SDA I2C1 Serial Data
I2C2_SCLK I2C2 Serial Clock
I2C2_SDA I2C2 Serial Data
CMOS_XCLK DVP System Clock
CMOS_RST DVP System Reset
CMOS_PWDN DVP Power Down Mode
CMOS_VSYNC DVP Vertical Sync
CMOS_HREF DVP Horizontal Reference output
CMOS_PCLK Pixel Clock
CMOS_D0 Data Bit 0
CMOS_D1 Data Bit 1
CMOS_D2 Data Bit 2
CMOS_D3 Data Bit 3
CMOS_D4 Data Bit 4
CMOS_D5 Data Bit 5
CMOS_D6 Data Bit 6
CMOS_D7 Data Bit 7
SCCB_SCLK SCCB Serial Clock
SCCB_SDA SCCB Serial Data
UART1_CTS UART1 Clear To Send
UART1_DSR UART1 Data Set Ready
UART1_DCD UART1 Data Carrier Detect
UART1_RI UART1 Ring Indicator
UART1_SIR_IN UART1 Serial Infrared Input
UART1_DTR UART1 Data Terminal Ready
UART1_RTS UART1 Request To Send
UART1_OUT2 UART1 User-designated Output 2
UART1_OUT1 UART1 User-designated Output 1
UART1_SIR_OUT UART1 Serial Infrared Output
UART1_BAUD UART1 Transmit Clock Output
UART1_RE UART1 Receiver Output Enable
UART1_DE UART1 Driver Output Enable
UART1_RS485_EN UART1 RS485 Enable
UART2_CTS UART2 Clear To Send
UART2_DSR UART2 Data Set Ready
UART2_DCD UART2 Data Carrier Detect
UART2_RI UART2 Ring Indicator
UART2_SIR_IN UART2 Serial Infrared Input
UART2_DTR UART2 Data Terminal Ready
UART2_RTS UART2 Request To Send
UART2_OUT2 UART2 User-designated Output 2
UART2_OUT1 UART2 User-designated Output 1
UART2_SIR_OUT UART2 Serial Infrared Output
UART2_BAUD UART2 Transmit Clock Output
UART2_RE UART2 Receiver Output Enable
UART2_DE UART2 Driver Output Enable
UART2_RS485_EN UART2 RS485 Enable
UART3_CTS UART3 Clear To Send
UART3_DSR UART3 Data Set Ready
UART3_DCD UART3 Data Carrier Detect
UART3_RI UART3 Ring Indicator
UART3_SIR_IN UART3 Serial Infrared Input
UART3_DTR UART3 Data Terminal Ready
UART3_RTS UART3 Request To Send
UART3_OUT2 UART3 User-designated Output 2
UART3_OUT1 UART3 User-designated Output 1
UART3_SIR_OUT UART3 Serial Infrared Output
UART3_BAUD UART3 Transmit Clock Output
UART3_RE UART3 Receiver Output Enable
UART3_DE UART3 Driver Output Enable
UART3_RS485_EN UART3 RS485 Enable
TIMER0_TOGGLE1 TIMER0 Toggle Output 1
TIMER0_TOGGLE2 TIMER0 Toggle Output 2
TIMER0_TOGGLE3 TIMER0 Toggle Output 3
TIMER0_TOGGLE4 TIMER0 Toggle Output 4
TIMER1_TOGGLE1 TIMER1 Toggle Output 1
TIMER1_TOGGLE2 TIMER1 Toggle Output 2
TIMER1_TOGGLE3 TIMER1 Toggle Output 3
TIMER1_TOGGLE4 TIMER1 Toggle Output 4
TIMER2_TOGGLE1 TIMER2 Toggle Output 1
TIMER2_TOGGLE2 TIMER2 Toggle Output 2
TIMER2_TOGGLE3 TIMER2 Toggle Output 3
TIMER2_TOGGLE4 TIMER2 Toggle Output 4
CLK_SPI2 Clock SPI2
CLK_I2C2 Clock I2C2

K210入门必看(MAIX DOCK)(一)相关推荐

  1. 95后数据科学家教你从零自学机器学习,这有3本入门必看书籍

    晓查 发自 凹非寺  量子位 编译 | 公众号 QbitAI 厌倦了现在的工作,想转行做数据科学,但是却没有计算机专业的相关学历,应该怎样才能入门? 这类的教程已经有很多.最近一位22岁的数据科学家D ...

  2. python基础教程书籍推荐-初学者python入门必看书籍推荐(上)

    随着最近Python的热度上涨,学习的人数也在增多,也因为Python这门语言的简短.易学.语言优美的优点,吸引了很多人来学习它.初学者想要入门,就必须先通过阅读,学习大量的理论知识对Python有一 ...

  3. arduino开发ESP8266配置方法,入门必看,esp8266开发板库离线安装包package2.7.1

    公众号关注 "DLGG创客DIY" 设为"星标",重磅干货,第一时间送达. 群里经常有朋友问arduino开发ESP8266的配置方法,今天在之前的文章基础上, ...

  4. 200528更新arduino开发ESP8266配置方法,入门必看,esp8266开发板库离线安装包package2.7.1...

    公众号关注 "DLGG创客DIY" 设为"星标",重磅干货,第一时间送达. 群里经常有朋友问arduino开发ESP8266的配置方法,今天(200528)在之 ...

  5. 怎么安装python_零基础入门必看篇:浅析python,PyCharm,Anaconda三者之间关系

    今天为大家带来的内容是:零基础入门必看篇:浅析python ,PyCharm,Anaconda三者之间关系 众所周知,Python是一种跨平台的计算机程序设计语言,简单来说,python就是类似于C, ...

  6. powershell 开发入门_详谈Ubuntu PowerShell(小白入门必看教程)

    早在去年八月份PowerShell就开始开源跨平台了,但是一直没有去尝试,叫做PowerShell Core. 这里打算简单介绍一下如何安装和简单使用,为还不知道PowerShell Core on ...

  7. IntelliJ IDEA 最常用配置详细图解,新手入门必看

    转载自   IntelliJ IDEA 最常用配置详细图解,新手入门必看 刚刚使用IntelliJ IDEA 编辑器的时候,会有很多设置,会方便以后的开发,磨刀不误砍柴工. 比如:设置文件字体大小,代 ...

  8. 五分钟教你使用vue-cli3创建项目(三种创建方式,小白入门必看)

    五分钟教你使用vue-cli3创建项目(三种创建方式,小白入门必看) 一.搭建vue环境 安装Nodejs 官网下载Nodejs,如果希望稳定的开发环境则下LTS(Long Time Support) ...

  9. 语音识别从菜鸟到入门必看的参考书目

    原标题:语音识别从菜鸟到入门必看的参考书目 此前研究这一方面的容,搜罗了些资料,在这里整理如下,做毕业设计,写毕业论文的朋友购书时可以参考一下: 一.<MATLAB数字信号处理> 编者:王 ...

最新文章

  1. 前端自动化构建工具webpack (二)之css和插件加载总结
  2. 使用Docker swarm构建wordpress集群
  3. Network 之四 常用 Linux 网络命令及网络调试工具介绍
  4. solidity编写eth智能合约之contract 创建合约(二)
  5. java的基础类型和字节大小_java的基础类型和字节大小
  6. 《记》rxjs分流操作符简单实现
  7. matlab 发动机万有特性,用MATLAB语言绘制发动机万有特性的两种方法
  8. 8 9区别 endnote7_EndNote_9__简明教程_中文版
  9. Java的三种技术架构是什么?
  10. 一个特别好用的免费json数据API接口--特别推荐
  11. ACM程序设计大赛题目分类
  12. win10专业版进不了安全模式 win10专业版安全模式怎么进
  13. 05_JUC强大的辅助类
  14. Win10文件或目录损坏且无法读取修复方法
  15. Verilog中if-else和case对比
  16. ORA-01153处理方法
  17. EMNLP 2021中预训练模型最新研究进展
  18. INH-RFP-BSA-NPs载INH和RFP白蛋白纳米粒/载卡巴他赛的白蛋白纳米粒的制备
  19. TMS320C645x DSP SRIO寄存器(四)——门铃(Doorbell)与CPPI中断
  20. 一个比StegSolve更方便的工具—zsteg

热门文章

  1. 记录:MI 10 反复重启的原因之一
  2. 基金指数温度怎么算_投资指数基金的奇技淫巧——指数温度实战详解
  3. 建木持续集成平台v2.2.1发布
  4. Strings Mix
  5. word文档保存文件时出错_保存时如何自动创建Word文档的备份副本
  6. 首字母大写--C++实现
  7. 查看创建数据库的sql语句
  8. 安装brat的jquery错误
  9. JPBC库(基于配对的密码学)入门和避坑指南
  10. Android系统编译aosp