1、8寸触摸屏介绍

8寸触摸屏由深圳天显微供应,显示像素为800*1280,全彩色竖屏,驱动芯片为JD9365A,显示屏幕接口为MIPI接口。触摸屏为电容屏,I2C接口,电容屏芯片使用的是GT911芯片。

2、显示驱动调试

MIPI接口的屏的调试主要是把屏幕的接口时序参数写入到设备树中去。由于RK3568芯片的SDK工程中带有一个驱动10寸屏的示例,主要的工作就是对原有设备树的修改。当然为了你能成功修改设备,了解学习一些LCD显示器驱动参数的知识还是必不可少的,比如:水平同步信号宽度,垂直同步信号宽度等这些参数,这些知识可以自行学习。下面的这段代码是屏幕厂家提供的一个驱动程序示例,有了示例后对于修改设备树就有很大帮助。第4行-第12行就是屏幕的一些显示时序参数,记录把这些参数改到设备树中即可。第27行以后是屏幕上电后要对内部寄存器进行的一些初始化操作,对于MIPI屏接口,要把这些初始化操作改成使用MIPI命令来写入。关于MIPI的初始化命令这里做个简单的介绍,初始化命令由命令类型(0x15写入双字节数据,0x39写入多字节数据,0x05写入单字节数据),延时(1个字节),数据长度(写入的数据长度),数据内容(写入的数据内容)。对于下图中第27行{0xE0,1,{0x00}},转化成MIPI的初始化命令就是15 0A 02 E0 00。

//        Width  - 800
//        Height - 1280params->dsi.vertical_sync_active=4
params->dsi.vertical_backporch=28
params->dsi.vertical_frontporch=30
params->dsi.horizontal_sync_active=20
params->dsi.horizontal_backporch=20
params->dsi.horizontal_frontporch=40params->dsi.PLL_CLOCK=220Mbps
params->PCLK=71MhzLCD_nReset=1;
Delayms(20);
LCD_nReset=0;
Delayms(50);
LCD_nReset=1;
Delayms(120);{REGFLAG_DELAY,10,{}},//JD9365DA-H3+BOE8.0IPS(TV080WXQ-N88)_4line_20211012
//0xE0寄存器地址, 0x01数据个数, 0x00寄存器写入数据
{0xE0,1,{0x00}},{0xE1,1,{0x93}},
{0xE2,1,{0x65}},
{0xE3,1,{0xF8}},
{0x80,1,{0x03}},{0xE0,1,{0x01}},
{0x00,1,{0x00}},
{0x01,1,{0x72}},
{0x03,1,{0x00}},
{0x04,1,{0x80}},{0x17,1,{0x00}},
{0x18,1,{0xAF}},
{0x19,1,{0x00}},
{0x1A,1,{0x00}},
{0x1B,1,{0xAF}},
{0x1C,1,{0x00}},{0x24,1,{0xFE}},{0x37,1,{0x19}},
{0x38,1,{0x05}},
{0x39,1,{0x00}},
{0x3A,1,{0x01}},
{0x3B,1,{0x01}},
{0x3C,1,{0x70}},
{0x3D,1,{0xFF}},
{0x3E,1,{0xFF}},
{0x3F,1,{0xFF}},{0x40,1,{0x06}},
{0x41,1,{0xA0}},
{0x43,1,{0x1E}},
{0x44,1,{0x10}},
{0x45,1,{0x28}},
{0x4B,1,{0x04}},{0x55,1,{0x02}},
{0x56,1,{0x01}},
{0x57,1,{0xA9}},{0x58,1,{0x0A}},
{0x59,1,{0x0A}},
{0x5A,1,{0x37}},
{0x5B,1,{0x1A}},{0x5D,1,{0x7F}},
{0x5E,1,{0x6A}},
{0x5F,1,{0x5B}},
{0x60,1,{0x50}},
{0x61,1,{0x4D}},
{0x62,1,{0x3F}},
{0x63,1,{0x44}},
{0x64,1,{0x2E}},
{0x65,1,{0x49}},
{0x66,1,{0x48}},
{0x67,1,{0x48}},
{0x68,1,{0x66}},
{0x69,1,{0x54}},
{0x6A,1,{0x5A}},
{0x6B,1,{0x4C}},
{0x6C,1,{0x44}},
{0x6D,1,{0x37}},
{0x6E,1,{0x23}},
{0x6F,1,{0x10}},
{0x70,1,{0x7F}},
{0x71,1,{0x6A}},
{0x72,1,{0x5B}},
{0x73,1,{0x50}},
{0x74,1,{0x4D}},
{0x75,1,{0x3F}},
{0x76,1,{0x44}},
{0x77,1,{0x2E}},
{0x78,1,{0x49}},
{0x79,1,{0x48}},
{0x7A,1,{0x48}},
{0x7B,1,{0x66}},
{0x7C,1,{0x54}},
{0x7D,1,{0x5A}},
{0x7E,1,{0x4C}},
{0x7F,1,{0x44}},
{0x80,1,{0x37}},
{0x81,1,{0x23}},
{0x82,1,{0x10}},{0xE0,1,{0x02}},
{0x00,1,{0x4B}},
{0x01,1,{0x4B}},
{0x02,1,{0x49}},
{0x03,1,{0x49}},
{0x04,1,{0x47}},
{0x05,1,{0x47}},
{0x06,1,{0x45}},
{0x07,1,{0x45}},
{0x08,1,{0x41}},
{0x09,1,{0x1F}},
{0x0A,1,{0x1F}},
{0x0B,1,{0x1F}},
{0x0C,1,{0x1F}},
{0x0D,1,{0x1F}},
{0x0E,1,{0x1F}},
{0x0F,1,{0x5F}},
{0x10,1,{0x5F}},
{0x11,1,{0x57}},
{0x12,1,{0x77}},
{0x13,1,{0x35}},
{0x14,1,{0x1F}},
{0x15,1,{0x1F}},{0x16,1,{0x4A}},
{0x17,1,{0x4A}},
{0x18,1,{0x48}},
{0x19,1,{0x48}},
{0x1A,1,{0x46}},
{0x1B,1,{0x46}},
{0x1C,1,{0x44}},
{0x1D,1,{0x44}},
{0x1E,1,{0x40}},
{0x1F,1,{0x1F}},
{0x20,1,{0x1F}},
{0x21,1,{0x1F}},
{0x22,1,{0x1F}},
{0x23,1,{0x1F}},
{0x24,1,{0x1F}},
{0x25,1,{0x5F}},
{0x26,1,{0x5F}},
{0x27,1,{0x57}},
{0x28,1,{0x77}},
{0x29,1,{0x35}},
{0x2A,1,{0x1F}},
{0x2B,1,{0x1F}},{0x58,1,{0x40}},
{0x59,1,{0x00}},
{0x5A,1,{0x00}},
{0x5B,1,{0x10}},
{0x5C,1,{0x02}},
{0x5D,1,{0x40}},
{0x5E,1,{0x01}},
{0x5F,1,{0x02}},
{0x60,1,{0x30}},
{0x61,1,{0x01}},
{0x62,1,{0x02}},
{0x63,1,{0x03}},
{0x64,1,{0x6B}},
{0x65,1,{0x05}},
{0x66,1,{0x0C}},
{0x67,1,{0x73}},
{0x68,1,{0x06}},
{0x69,1,{0x03}},
{0x6A,1,{0x56}},
{0x6B,1,{0x08}},
{0x6C,1,{0x00}},
{0x6D,1,{0x04}},
{0x6E,1,{0x04}},
{0x6F,1,{0x88}},
{0x70,1,{0x00}},
{0x71,1,{0x00}},
{0x72,1,{0x06}},
{0x73,1,{0x7B}},
{0x74,1,{0x00}},
{0x75,1,{0xF8}},
{0x76,1,{0x00}},
{0x77,1,{0xD5}},
{0x78,1,{0x2E}},
{0x79,1,{0x12}},
{0x7A,1,{0x03}},
{0x7B,1,{0x00}},
{0x7C,1,{0x00}},
{0x7D,1,{0x03}},
{0x7E,1,{0x7B}},{0xE0,1,{0x04}},
{0x00,1,{0x0E}},
{0x02,1,{0xB3}},
{0x09,1,{0x60}},
{0x0E,1,{0x2A}},
{0x36,1,{0x59}},{0xE0,1,{0x00}},
{0x51,1,{0x80}},
{0x53,1,{0x2C}},
{0x55,1,{0x00}},{0x11,1,{0x00}},
{REGFLAG_DELAY,120,{}},{0x29,1,{0x00}},
{REGFLAG_DELAY,5,{}},{0x35,1,{0x00}},
{REGFLAG_END_OF_TABLE,0x00,{}}

把上面的屏幕寄存器初始化操作转化成MIPI命令序列可以借助于python脚本程序来实现,具体的实现代码如下:

## 2、使用脚本转换为设备树格式,参考其他设备格式'''
panel-init-sequence = [15 00 02 80 7715 00 02 81 7715 00 02 82 7715 00 02 83 7715 00 02 84 7715 00 02 85 7715 00 02 86 7739 00 0D C3 01 66 13 23 00 66 85 33 20 38 38 0005 64 01 1105 14 01 29
];15 00 02 80 77|  |  | |  ||  |  | |  数据|  |  | | 寄存器地址|  |  数据长度|  延时命令类型(0x05: 单字节数据 0x15: 双字节数据 0x39: 多字节数据)
'''def gen(path):f=open(path,'r')lines=f.readlines()f.close()# {REGFLAG_DELAY, 10, {}},# {0xE0, 1, {0x00}},delay=0for line in lines:if line.find('{REGFLAG_DELAY')==0:ds=line.split(',')# print('=========%s'%ds[1])# print(ds)# print(ds[1])delay=int(ds[1])# print(delay)elif line.find("{0x")==0:ds=line.split(',')reg=ds[0].split('0x')[1]dat=ds[2].split('{0x')[1].split('}')[0]# print("reg:%s delay:%2.2x data:%s"%(reg,dly,dat))print("15 %2.2X 02 %s %s"%(delay,reg,dat))delay=0gen(r'C_JD9365DA-H3_BOE8.0_IPS(TV080WXQ-N88)_800x1280_2power_ZigZag_G2.2_210630_johnson.txt')

根据上面厂家提供的驱动程序示例和JD9365的数据手册中一些上电时序就可以写出RK3568的设备树,此屏幕设备树配置如下:其中enable-delay-ms,reset-delay-ms等可以查看JD9365的数据手册,有些时间参数找不到,可以使用原来设备树中的默认参数。屏幕使用的enable-gpios和reset-gpios,还有PWM背光可以根据自己的实际电路设计进行修改。屏幕的退出序列panel-exit-sequence,厂家没有提供,所以就是原来设备树的序列,没有删除保留。

&dsi0 {status = "okay";//rockchip,lane-rate = <1000>;dsi0_panel: panel@0 {status = "okay";compatible = "simple-panel-dsi";reg = <0>;backlight = <&backlight_0>;enable-gpios = <&gpio0 RK_PC7 GPIO_ACTIVE_HIGH>;reset-gpios = <&gpio1 RK_PD4 GPIO_ACTIVE_LOW>;enable-delay-ms = <35>;prepare-delay-ms = <6>;reset-delay-ms = <25>;init-delay-ms = <130>;unprepare-delay-ms = <0>;disable-delay-ms = <20>;mipi-data-delay-ms = <200>;size,width = <107>;size,height = <172>;dsi,flags = <(MIPI_DSI_MODE_VIDEO | MIPI_DSI_MODE_VIDEO_BURST | MIPI_DSI_MODE_LPM | MIPI_DSI_MODE_EOT_PACKET)>;dsi,format = <MIPI_DSI_FMT_RGB888>;dsi,lanes  = <4>;/*JD9365A寄存器初始操作, 0x15命令类型,单字节数据, 第2个字节为延时, 第3个字节为数据长度,第4,5个字节为数据表示寄存器地址和写入的数据 */panel-init-sequence = [15 0A 02 E0 0015 00 02 E1 9315 00 02 E2 6515 00 02 E3 F815 00 02 80 0315 00 02 E0 0115 00 02 00 0015 00 02 01 7215 00 02 03 0015 00 02 04 8015 00 02 17 0015 00 02 18 AF15 00 02 19 0015 00 02 1A 0015 00 02 1B AF15 00 02 1C 0015 00 02 24 FE15 00 02 37 1915 00 02 38 0515 00 02 39 0015 00 02 3A 0115 00 02 3B 0115 00 02 3C 7015 00 02 3D FF15 00 02 3E FF15 00 02 3F FF15 00 02 40 0615 00 02 41 A015 00 02 43 1E15 00 02 44 1015 00 02 45 2815 00 02 4B 0415 00 02 55 0215 00 02 56 0115 00 02 57 A915 00 02 58 0A15 00 02 59 0A15 00 02 5A 3715 00 02 5B 1A15 00 02 5D 7F15 00 02 5E 6A15 00 02 5F 5B15 00 02 60 5015 00 02 61 4D15 00 02 62 3F15 00 02 63 4415 00 02 64 2E15 00 02 65 4915 00 02 66 4815 00 02 67 4815 00 02 68 6615 00 02 69 5415 00 02 6A 5A15 00 02 6B 4C15 00 02 6C 4415 00 02 6D 3715 00 02 6E 2315 00 02 6F 1015 00 02 70 7F15 00 02 71 6A15 00 02 72 5B15 00 02 73 5015 00 02 74 4D15 00 02 75 3F15 00 02 76 4415 00 02 77 2E15 00 02 78 4915 00 02 79 4815 00 02 7A 4815 00 02 7B 6615 00 02 7C 5415 00 02 7D 5A15 00 02 7E 4C15 00 02 7F 4415 00 02 80 3715 00 02 81 2315 00 02 82 1015 00 02 E0 0215 00 02 00 4B15 00 02 01 4B15 00 02 02 4915 00 02 03 4915 00 02 04 4715 00 02 05 4715 00 02 06 4515 00 02 07 4515 00 02 08 4115 00 02 09 1F15 00 02 0A 1F15 00 02 0B 1F15 00 02 0C 1F15 00 02 0D 1F15 00 02 0E 1F15 00 02 0F 5F15 00 02 10 5F15 00 02 11 5715 00 02 12 7715 00 02 13 3515 00 02 14 1F15 00 02 15 1F15 00 02 16 4A15 00 02 17 4A15 00 02 18 4815 00 02 19 4815 00 02 1A 4615 00 02 1B 4615 00 02 1C 4415 00 02 1D 4415 00 02 1E 4015 00 02 1F 1F15 00 02 20 1F15 00 02 21 1F15 00 02 22 1F15 00 02 23 1F15 00 02 24 1F15 00 02 25 5F15 00 02 26 5F15 00 02 27 5715 00 02 28 7715 00 02 29 3515 00 02 2A 1F15 00 02 2B 1F15 00 02 58 4015 00 02 59 0015 00 02 5A 0015 00 02 5B 1015 00 02 5C 0215 00 02 5D 4015 00 02 5E 0115 00 02 5F 0215 00 02 60 3015 00 02 61 0115 00 02 62 0215 00 02 63 0315 00 02 64 6B15 00 02 65 0515 00 02 66 0C15 00 02 67 7315 00 02 68 0615 00 02 69 0315 00 02 6A 5615 00 02 6B 0815 00 02 6C 0015 00 02 6D 0415 00 02 6E 0415 00 02 6F 8815 00 02 70 0015 00 02 71 0015 00 02 72 0615 00 02 73 7B15 00 02 74 0015 00 02 75 F815 00 02 76 0015 00 02 77 D515 00 02 78 2E15 00 02 79 1215 00 02 7A 0315 00 02 7B 0015 00 02 7C 0015 00 02 7D 0315 00 02 7E 7B15 00 02 E0 0415 00 02 00 0E15 00 02 02 B315 00 02 09 6015 00 02 0E 2A15 00 02 36 5915 00 02 E0 0015 00 02 51 8015 00 02 53 2C15 00 02 55 0015 00 02 11 0015 78 02 29 0015 05 02 35 00];panel-exit-sequence = [05 00 01 2805 00 01 10];disp_timings0: display-timings {native-mode = <&dsi0_timing0>;dsi0_timing0: timing0 {clock-frequency = <71000000>;//时钟频率(hactive+ hsync-len + hfront-porch + hback-porch)*(vactive + vsync-len + vfront-porch + vback-porch) * Frame rate60Hz = 70857600hactive = <800>;    //水平像素点数vactive = <1280>;   //垂直像素点数hsync-len = <20>;   //水平同步信号宽度HSYNC/thphback-porch = <20>; //水平同步后肩hfront-porch = <40>;//水平同步前肩vsync-len = <4>;    //垂直同步信号宽度VSYNC/tvpvback-porch = <28>; //垂直同步后肩vfront-porch = <30>;//垂直同步前肩hsync-active = <0>; //hsync激活有效电平为低电平vsync-active = <0>; //vsync激活有效电平为低电平de-active = <0>;    //de激活有效电平为低电平pixelclk-active = <0>; //pixelclk激活有效电平为低电平};};ports {#address-cells = <1>;#size-cells = <0>;port@0 {reg = <0>;panel_in_dsi0: endpoint {remote-endpoint = <&dsi0_out_panel>;};};};};ports {#address-cells = <1>;#size-cells = <0>;port@1 {reg = <1>;dsi0_out_panel: endpoint {remote-endpoint = <&panel_in_dsi0>;};};};
};

修改好设备树后,启动RK3568 LINUX操作系统,屏幕就应该亮了,能显示出来。如果不显示,请检查一下硬件电路,用示波器测量一下enable-gpio, reset-gpio,pwm这些信号是否正常。我遇到的问题就是这些屏幕的排线容易松,导致调试了半天,原来是线松了,屏不亮。

最后放出显示的效果图:屏幕的显示效果还是不错的。

3、触摸屏驱动调试

其实上面屏幕显示的调试还是挺顺利的,没有遇到太多的难题,可能是我前其他学习了关于MIPI屏调试的大量知识与文章。本以为触摸屏的调试应该很简单,就是一个I2C接口芯片,有什么难的,LINUX驱动程序中也有。结果事与愿违,还真遇到了问题。

触摸屏硬件接口就是复位信号,中断信号,I2C时钟信号,I2C数据信号,触摸屏供电信号(我的电路供电没有控制信号)。设备树相对简单了很多。如下:GT911芯片的I2C 7位器件地址为0x5D,这个要根据屏幕厂家的电路设计来确定,复位信号,中断信号根据实现的设计的电路来进行修改。下图中nterrupt-parent,interrupts,mac-x, max-y这四个节点是不被gt911驱动程序解析的,不写也可以,这里写上是当个注释来使用了。flip-x,flip-y对是触摸的点对X,Y轴镜像使用的,0为不镜像,1为镜像。一般设备树中要对屏幕的像素等信息进行设备,GT911的设备树中这些信息是通过goodix,cfg-group0来设置的。goodix,cfg-group0的这组序列可以让屏幕厂家来提供,自己有些参数很难调试出来。

&i2c1 {status = "okay";clock-frequency = <100000>;goodix_ts@5d {status = "okay";compatible = "goodix,gt9xx";reg = <0x5d>;interrupt-parent=<&gpio2>;interrupts = <RK_PD6 IRQ_TYPE_LEVEL_LOW>;pinctrl-names = "default";pinctrl-0 = <&touch_gpio>;goodix,rst-gpio = <&gpio0 RK_PB5 GPIO_ACTIVE_LOW>;goodix,irq-gpio = <&gpio2 RK_PD6 IRQ_TYPE_LEVEL_LOW>;max-x = <800>;max-y = <1280>;flip-x = <0>;     flip-y = <0>;//config is the 800*1280  goodix,cfg-group0 =[42 20 03 00 05 05 05 00 01 08 28 0F 50 3C 03 05 00 00 00 00 00 00 00 18 1A 1E 14 8B 2B 0E 55 57 B2 04 00 00 00 42 32 1D 00 01 00 00 00 03 00 00 00 46 1E 3C 78 94 05 02 07 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 1C 1A 18 16 14 12 10 0E 0C 0A 08 06 04 02 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 02 04 06 08 0A 0C 0F 10 12 13 16 18 1C 1D 1E 1F 20 21 22 24 26 FF FF FF FF 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 52 01];};
};

当然你要想深入了解goodix,cfg-group0中这些参数的功能的话,可以查看GT911的数据手册,这参数是写入芯片内部寄存器0x8047开始的寄存器值,如下图GT911编程手册。有些屏幕的内部了的调

我在调试触摸屏幕的过程中遇到的问题是触摸芯片不产生中断,经过检测硬件,软件和不断调试,偶然发现在使用其他芯片设备树中GT911设备树时,芯片产生了中断,所以定位到是厂家提供的配置序列有问题。后来又与厂家沟通,让其提供新的配置序列信息后,屏幕的触摸功能就正常了。

RK3568 MIPI驱动JD9365A触摸屏调试过程相关推荐

  1. 1.54寸墨水屏模块 E-Paper电子纸显示屏STM32C8T6驱动代码以及调试过程

    目录 如何点亮屏幕? 例程代码拆分 DEV_Module_Init(); 模块引脚初始化 EPD_1IN54_V2_Init(); 寄存器初始化 EPD_1IN54_V2_Clear(); 清屏 EP ...

  2. linux平台xpt2046驱动,XPT2046触摸屏实验过程详解与STM32代码解析

    1.XPT2046的初始化 XPT2046说起来其实就是一个AD转换器,所以它适合不需要什么初始化设置的,而具体的初始化其实也就是单片机IO的初始化和SPI的初始化. 这次STM32是使用SPI1来进 ...

  3. RK3568驱动OV13850摄像头模组调试过程

    摄像头介绍 品牌:Omnivision 型号:CMK-OV13850 接口:MIPI 像素:1320W OV13850彩色图像传感器是一款低电压.高性能1/3.06英寸1320万像素CMOS图像传感器 ...

  4. 单片机驱动DM9000网卡芯片(详细调试过程)【下】

    http://hi.baidu.com/mcu8031/blog/item/c95903138671c625dc540171.html 单片机驱动DM9000网卡芯片(详细调试过程)[下] 4.验证初 ...

  5. tsc2007电阻触摸屏调试

    #触摸屏调试 开发环境:ubuntu12.04LTS Android核心板型号:Samsung6818 电阻触摸屏型号:tsc2007 作者:@happyguy96 && @ccxx0 ...

  6. 关于HMC5883L驱动书写及调试的总结

    刚刚结束对传感器HMC5883L的驱动书写及调试工作,虽然之前对相关的各种知识点都有接触,但是在真正从头书写驱动的时候还是遇到了很多不大不小的麻烦,在这里自行总结一下,也是作为以后驱动书写的一个经验教 ...

  7. 联芯 1860平台 icn6211 mipi to RGB 转换芯片 调试 和 st7789 LCD调试spi 9bit 模式

    关键字:联芯科技,LC1860,LC186x,Chipone Technology,icn6211,mipi bridge,mipi to RGB,mipi转换芯片,RGB666,st7789,st7 ...

  8. RK3568 Sensor驱动开发移植(3)

    RK3568 Camera 使用 RK3568 Sensor驱动开发移植(1) RK3568 Sensor驱动开发移植(2) RK3568 Sensor驱动开发移植(3) 实现标准 I2C 子设备驱动 ...

  9. 瑞芯微rockchip PX30触摸屏调试记录

    系列文章目录 瑞芯微rockchip PX30 串口调试记录 瑞芯微rockchip PX30 显示屏调试 瑞芯微rockchip PX30触摸屏调试记录 瑞芯微rockchip PX30 QT环境搭 ...

最新文章

  1. namenode需要多大内存
  2. 当深度学习搭上一双鞋,有人要用这检测你的压力水平!可无线操作,准确率达84%...
  3. android 系统gpu 调试_【资讯】高通公布首批可OTA更新GPU驱动手机:谷歌Pixel 4/三星S10在列...
  4. decimalformat精度丢失_php intval 两位小数乘以100后结果少1
  5. where常用运算符
  6. php JWT在web端的使用方法
  7. mysql语句1=1_mysql - “where 1 = 1”语句
  8. 大神降临(公历1982年11月24号)
  9. python super()函数
  10. dsoframer.ocx java_DSOFramer.ocx 控件使用
  11. Verilog:三段式状态机(数字钟)
  12. 场景法测试用例设计详解
  13. 联想服务器ThinkServer网卡驱动程序缺失的解决办法
  14. 学习统计学之非参数检验
  15. javascript 正则表达式判断只能是中文、英文或者中文加英文
  16. Excel中时间相减的实例教程
  17. Android微信SDK实现分享
  18. 【特征工程】特征工程技术与方法
  19. python3遍历列表赋值_Python3实现的字典遍历操作详解
  20. java权限修饰符default和protected区别

热门文章

  1. labwindows下保存数据为csv格式
  2. 全局计时器-在不同界面控制同一个计时器
  3. TabBar with Expands
  4. jpa mini book
  5. 淘宝将全面屏蔽外链二维码 伤及无辜的是卖家
  6. 在 Jupyter Notebook 文档页面中添加目录索引及错误解决办法
  7. 六、相机标定效果评价
  8. SQLite数据库及junit注解
  9. Linux服务器的关机和重启命令
  10. python+PyQ5+pyecharts显示地图