04.按键控制数码管

  • 一、引脚配置
  • 二、编写代码
    • 1.r_cg_userdefine.h
    • 2.r_cg_timer_user.h
    • 3.my_key.h
    • 4.my_key.c
    • 5.r_main.c
  • 三、烧录程序
  • 四、附录

  按键的原理十分简单,注意去抖就行。本案例不采用延时去抖,也不采用定时器去抖。而是在while循环里定义一个可随时修改的变量,根据程序运行一次所需要的时间进行合理的去抖。本实验所实现的案例如下:
  开发板上一共5个按键,分别是KEY1-KEY5,功能分别如下:

KEY1:短按时,数码管每秒+1;长按时,数码管每秒-1;快速双击时,数码管停止不动。
KEY2:短按时,数码管+1;
KEY3:短按时,数码管-1;
KEY4:短按时,数码管清零,并不进行每秒更新;
KEY5:短按时,数码管清零,若原先处于每秒更新状态,则继续每秒±1。

一、引脚配置

  根据原理图进行相关引脚配置即可,以下按键引脚均设置为输入模式,定时器选择通道1定时50ms。

二、编写代码

1.r_cg_userdefine.h

/***********************************************************************************************************************
* DISCLAIMER
* This software is supplied by Renesas Electronics Corporation and is only intended for use with Renesas products.
* No other uses are authorized. This software is owned by Renesas Electronics Corporation and is protected under all
* applicable laws, including copyright laws.
* THIS SOFTWARE IS PROVIDED "AS IS" AND RENESAS MAKES NO WARRANTIES REGARDING THIS SOFTWARE, WHETHER EXPRESS, IMPLIED
* OR STATUTORY, INCLUDING BUT NOT LIMITED TO WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
* NON-INFRINGEMENT.  ALL SUCH WARRANTIES ARE EXPRESSLY DISCLAIMED.TO THE MAXIMUM EXTENT PERMITTED NOT PROHIBITED BY
* LAW, NEITHER RENESAS ELECTRONICS CORPORATION NOR ANY OF ITS AFFILIATED COMPANIES SHALL BE LIABLE FOR ANY DIRECT,
* INDIRECT, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES FOR ANY REASON RELATED TO THIS SOFTWARE, EVEN IF RENESAS OR
* ITS AFFILIATES HAVE BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
* Renesas reserves the right, without notice, to make changes to this software and to discontinue the availability
* of this software. By using this software, you agree to the additional terms and conditions found by accessing the
* following link:
* http://www.renesas.com/disclaimer
*
* Copyright (C) 2011, 2021 Renesas Electronics Corporation. All rights reserved.
***********************************************************************************************************************//***********************************************************************************************************************
* File Name    : r_cg_userdefine.h
* Version      : CodeGenerator for RL78/G14 V2.05.06.02 [08 Nov 2021]
* Device(s)    : R5F104FE
* Tool-Chain   : CCRL
* Description  : This file includes user definition.
* Creation Date: 2022/6/7
***********************************************************************************************************************/#ifndef _USER_DEF_H
#define _USER_DEF_H/***********************************************************************************************************************
User definitions
***********************************************************************************************************************//* Start user code for function. Do not edit comment generated here */
#define COM1    P6_bit.no3
#define COM2    P7_bit.no0
#define COM3    P7_bit.no1
#define COM4    P7_bit.no2
#define COM5    P7_bit.no3
#define SEG_A   P3_bit.no1
#define SEG_B   P3_bit.no0
#define SEG_C   P14_bit.no6
#define SEG_D   P1_bit.no3
#define SEG_E   P1_bit.no4
#define SEG_F   P1_bit.no5
#define SEG_G   P1_bit.no6
#define SEG_DP  P1_bit.no7#define KEY1    P12_bit.no1
#define KEY2    P12_bit.no2
#define KEY3    P13_bit.no7
#define KEY4    P12_bit.no3
#define KEY5    P12_bit.no4
//void key_scan(void);//KEY1-KEY5?¨¬2a
/* End user code. Do not edit comment generated here */
#endif

2.r_cg_timer_user.h

/***********************************************************************************************************************
* DISCLAIMER
* This software is supplied by Renesas Electronics Corporation and is only intended for use with Renesas products.
* No other uses are authorized. This software is owned by Renesas Electronics Corporation and is protected under all
* applicable laws, including copyright laws.
* THIS SOFTWARE IS PROVIDED "AS IS" AND RENESAS MAKES NO WARRANTIES REGARDING THIS SOFTWARE, WHETHER EXPRESS, IMPLIED
* OR STATUTORY, INCLUDING BUT NOT LIMITED TO WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
* NON-INFRINGEMENT.  ALL SUCH WARRANTIES ARE EXPRESSLY DISCLAIMED.TO THE MAXIMUM EXTENT PERMITTED NOT PROHIBITED BY
* LAW, NEITHER RENESAS ELECTRONICS CORPORATION NOR ANY OF ITS AFFILIATED COMPANIES SHALL BE LIABLE FOR ANY DIRECT,
* INDIRECT, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES FOR ANY REASON RELATED TO THIS SOFTWARE, EVEN IF RENESAS OR
* ITS AFFILIATES HAVE BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
* Renesas reserves the right, without notice, to make changes to this software and to discontinue the availability
* of this software. By using this software, you agree to the additional terms and conditions found by accessing the
* following link:
* http://www.renesas.com/disclaimer
*
* Copyright (C) 2011, 2021 Renesas Electronics Corporation. All rights reserved.
***********************************************************************************************************************//***********************************************************************************************************************
* File Name    : r_cg_timer_user.c
* Version      : CodeGenerator for RL78/G14 V2.05.06.02 [08 Nov 2021]
* Device(s)    : R5F104FE
* Tool-Chain   : CCRL
* Description  : This file implements device driver for TAU module.
* Creation Date: 2022/6/7
***********************************************************************************************************************//***********************************************************************************************************************
Includes
***********************************************************************************************************************/
#include "r_cg_macrodriver.h"
#include "r_cg_timer.h"
/* Start user code for include. Do not edit comment generated here */
/* End user code. Do not edit comment generated here */
#include "r_cg_userdefine.h"/***********************************************************************************************************************
Pragma directive
***********************************************************************************************************************/
#pragma interrupt r_tau0_channel0_interrupt(vect=INTTM00)
/* Start user code for pragma. Do not edit comment generated here */
uint16_t time_count0=0;//timer count
uint8_t display_buffer[4]={1,2,3,4,};//display num
uint8_t  display_count0=0;//
/* End user code. Do not edit comment generated here *//***********************************************************************************************************************
Global variables and functions
***********************************************************************************************************************/
/* Start user code for global. Do not edit comment generated here *//*************************************************************Function:Display one digit*************************************************************/void display_7seg(unsigned char led_digit){unsigned char digit_bak;digit_bak = led_digit;switch(digit_bak){case 0:     //display 0SEG_A=1;SEG_B=1;SEG_C=1;SEG_D=1;SEG_E=1;SEG_F=1;SEG_G=0;break;case 1:       //display 1SEG_A=0;SEG_B=1;SEG_C=1;SEG_D=0;SEG_E=0;SEG_F=0;SEG_G=0;break;case 2:     //display 2SEG_A=1;SEG_B=1;SEG_C=0;SEG_D=1;SEG_E=1;SEG_F=0;SEG_G=1;break;case 3:    //display 3SEG_A=1;SEG_B=1;SEG_C=1;SEG_D=1;SEG_E=0;SEG_F=0;SEG_G=1;break;case 4:     //display 4SEG_A=0;SEG_B=1;SEG_C=1;SEG_D=0;SEG_E=0;SEG_F=1;SEG_G=1;break;case 5:     //display 5SEG_A=1;SEG_B=0;SEG_C=1;SEG_D=1;SEG_E=0;SEG_F=1;SEG_G=1;break;case 6:     //display 6SEG_A=1;SEG_B=0;SEG_C=1;SEG_D=1;SEG_E=1;SEG_F=1;SEG_G=1;   break;case 7:      //display 7SEG_A=1;SEG_B=1;SEG_C=1;SEG_D=0;SEG_E=0;SEG_F=0;SEG_G=0;   break;case 8:     //display 8SEG_A=1;SEG_B=1;SEG_C=1;SEG_D=1;SEG_E=1;SEG_F=1;SEG_G=1;    break;case 9:    //display 9SEG_A=1;SEG_B=1;SEG_C=1;SEG_D=1;SEG_E=0;SEG_F=1;SEG_G=1; break;case 10://off display SEG_A = 0;SEG_B = 0;SEG_C = 0;SEG_D = 0;SEG_E = 0;SEG_F = 0;SEG_G = 0;break;case 11://display ESEG_A=1;SEG_B=0;SEG_C=0;SEG_D=1;SEG_E=1;SEG_F=1;SEG_G=1;   break;//case 12://display G0 G1 SEG_A = 0;SEG_B = 0;SEG_C = 0;SEG_D = 0;SEG_E = 0;SEG_F = 0;SEG_G = 1;break;//case 13://display bSEG_A = 0;SEG_B = 0;SEG_C = 1;SEG_D = 1;SEG_E = 1;SEG_F = 1;SEG_G = 1;break;     default:NOP();//NOP();//break;}
}void display_digit_led(void)
{display_count0+=1;//COM5 = 0;switch(display_count0%4+1){case 1:display_7seg(display_buffer[0]);//COM1 = 0;COM2 = 1;COM3 = 1;COM4 = 1;SEG_DP=0;break;//case 2:display_7seg(display_buffer[1]);//           COM1 = 1;COM2 = 0;COM3 = 1;COM4 = 1;////SEG_DP=1;break;//case 3:display_7seg(display_buffer[2]);//         COM1 = 1;COM2 = 1;COM3 = 0;COM4 = 1;    SEG_DP=0;//off clock charbreak;//case 4:display_7seg(display_buffer[3]);//                         COM1 = 1;COM2 = 1;COM3 = 1;COM4 = 0;                break;//}
}void display_one_led(int id)
{COM5 = 0;switch(id%4+1){case 1:display_7seg(display_buffer[0]);//COM1 = 0;COM2 = 1;COM3 = 1;COM4 = 1;SEG_DP=0;break;//case 2:display_7seg(display_buffer[1]);//         COM1 = 1;COM2 = 0;COM3 = 1;COM4 = 1;////SEG_DP=1;break;//case 3:display_7seg(display_buffer[2]);//         COM1 = 1;COM2 = 1;COM3 = 0;COM4 = 1;    SEG_DP=0;//off clock charbreak;//case 4:display_7seg(display_buffer[3]);//                         COM1 = 1;COM2 = 1;COM3 = 1;COM4 = 0;                break;//}
}void set_led_num(int num)
{display_buffer[0]=num/1000;display_buffer[1]=num%1000/100;display_buffer[2]=num%1000%100/10;display_buffer[3]=num%1000%100%10;
}void display_LED(void){static int count=0;if(++count>10){count=0;   display_digit_led();//display_one_led(2);}}
/* End user code. Do not edit comment generated here *//***********************************************************************************************************************
* Function Name: r_tau0_channel0_interrupt
* Description  : This function is INTTM00 interrupt service routine.
* Arguments    : None
* Return Value : None
***********************************************************************************************************************/
static void __near r_tau0_channel0_interrupt(void)
{/* Start user code. Do not edit comment generated here */time_count0+=1;/* End user code. Do not edit comment generated here */
}/* Start user code for adding. Do not edit comment generated here */
/* End user code. Do not edit comment generated here */

3.my_key.h

#ifndef _MY_KEY_H
#define _MY_KEY_H#include "iodefine.h"
#include "r_cg_userdefine.h"#define KEY_NO 0
#define KEY_S  1
#define KEY_M  2
#define KEY_L  3#define key KEY1
#define key2 KEY2
#define key3 KEY3
#define key4 KEY4
#define key5 KEY5#endif

4.my_key.c

#include "my_key.h"
#include "r_cg_timer.h"unsigned char KEY_FLAG=KEY_NO;
unsigned char KEY2_FLAG=KEY_NO;
unsigned char KEY3_FLAG=KEY_NO;
unsigned char KEY4_FLAG=KEY_NO;
unsigned char KEY5_FLAG=KEY_NO;#define time_interval 400void KEYx_SCAN_SML(void)
{static unsigned char Mode=0;static unsigned int count1=0;static unsigned int count2=0;static unsigned char Flag=0;switch(Mode){case 0: {if(!key)//状态0,检测到按键被按下{Mode=1;//跳转到状态1}}break;case 1:{count1++;if(count1>time_interval*1)//去抖10ms,可以修改具体count1值{count1=0;if(key)//按键释放{Mode=0;//回到状态0,重新检测}else  //按键确实被按下{Mode=2;//进入状态2,开始状态2测量时间}}}break;case 2:{count1++;if(count1>time_interval*120)//按下的时间大于2s,count1值可修改{count1=0;Mode=4;}else{count2=count1;if(key)    //如果按键释放{Mode=3;//跳转到状态3Flag++;//标志增加}}}break;case 3:{count2++;if(count2>time_interval*60)//如果时间很久了,3000可修改{count2=0;Mode=4; //跳转到状态4}else{if((count2-count1)>time_interval*5)//如果小于上面的时间,并且大于上面的时间{if(!key)//第二次按下{Flag++;}}}}break;case 4:{if(key)//如果已经释放了{Mode=0;//状态清0if(Flag>1)//标志位增加过,说明双击了{Flag=0;KEY_FLAG=KEY_M; //标志位清零,赋值 双击}else{Flag=0;KEY_FLAG=KEY_S; //标志位清零,赋值 单击}}else{Flag=0;//标志位清零,赋值 长按KEY_FLAG=KEY_L;Mode=5;}}break;case 5:{if(key) //如果按键被释放{Mode=0;//状态清零}}break;}
}#define key_interval 3000
#define KEY_ALL ((KEY2==1)&&(KEY3==1)&&(KEY4==1)&&(KEY5==1))void KEYs_SCAN(void)
{static unsigned char Mode=0;static unsigned int count=0;switch(Mode){case 0: {if(!KEY_ALL)//状态0,检测到按键被按下{Mode=1;//跳转到状态1}}break;case 1:{count++;if(count>key_interval)//去抖10ms,可以修改具体key_interval值{count=0;Mode=0;if(KEY2==1)//按键释放{//KEY2_FLAG=KEY_NO;}else  //按键确实被按下{KEY2_FLAG=KEY_S;}if(KEY3==1)//按键释放{//KEY3_FLAG=KEY_NO;}else  //按键确实被按下{KEY3_FLAG=KEY_S;}if(KEY4==1)//按键释放{//KEY4_FLAG=KEY_NO;}else  //按键确实被按下{KEY4_FLAG=KEY_S;}if(KEY5==1)//按键释放{//KEY5_FLAG=KEY_NO;}else  //按键确实被按下{KEY5_FLAG=KEY_S;}}}break;}
}

5.r_main.c

/***********************************************************************************************************************
* DISCLAIMER
* This software is supplied by Renesas Electronics Corporation and is only intended for use with Renesas products.
* No other uses are authorized. This software is owned by Renesas Electronics Corporation and is protected under all
* applicable laws, including copyright laws.
* THIS SOFTWARE IS PROVIDED "AS IS" AND RENESAS MAKES NO WARRANTIES REGARDING THIS SOFTWARE, WHETHER EXPRESS, IMPLIED
* OR STATUTORY, INCLUDING BUT NOT LIMITED TO WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
* NON-INFRINGEMENT.  ALL SUCH WARRANTIES ARE EXPRESSLY DISCLAIMED.TO THE MAXIMUM EXTENT PERMITTED NOT PROHIBITED BY
* LAW, NEITHER RENESAS ELECTRONICS CORPORATION NOR ANY OF ITS AFFILIATED COMPANIES SHALL BE LIABLE FOR ANY DIRECT,
* INDIRECT, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES FOR ANY REASON RELATED TO THIS SOFTWARE, EVEN IF RENESAS OR
* ITS AFFILIATES HAVE BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
* Renesas reserves the right, without notice, to make changes to this software and to discontinue the availability
* of this software. By using this software, you agree to the additional terms and conditions found by accessing the
* following link:
* http://www.renesas.com/disclaimer
*
* Copyright (C) 2011, 2021 Renesas Electronics Corporation. All rights reserved.
***********************************************************************************************************************//***********************************************************************************************************************
* File Name    : r_main.c
* Version      : CodeGenerator for RL78/G14 V2.05.06.02 [08 Nov 2021]
* Device(s)    : R5F104FE
* Tool-Chain   : CCRL
* Description  : This file implements main function.
* Creation Date: 2022/6/7
***********************************************************************************************************************//***********************************************************************************************************************
Includes
***********************************************************************************************************************/
#include "r_cg_macrodriver.h"
#include "r_cg_cgc.h"
#include "r_cg_port.h"
#include "r_cg_timer.h"
#include "r_cg_wdt.h"
/* Start user code for include. Do not edit comment generated here */
#include "my_key.h"
/* End user code. Do not edit comment generated here */
#include "r_cg_userdefine.h"/***********************************************************************************************************************
Pragma directive
***********************************************************************************************************************/
/* Start user code for pragma. Do not edit comment generated here */
/* End user code. Do not edit comment generated here *//***********************************************************************************************************************
Global variables and functions
***********************************************************************************************************************/
/* Start user code for global. Do not edit comment generated here */
extern void hdwinit(void);//
extern display_7seg(unsigned char led_digit);
extern void display_LED(void);
extern void set_led_num(int num);
extern void KEYx_SCAN_SML(void);
extern void KEYs_SCAN(void);
extern unsigned char KEY_FLAG;
extern unsigned char KEY2_FLAG;
extern unsigned char KEY3_FLAG;
extern unsigned char KEY4_FLAG;
extern unsigned char KEY5_FLAG;
extern uint16_t time_count0;uint16_t i=0;
/* End user code. Do not edit comment generated here */
void R_MAIN_UserInit(void);/***********************************************************************************************************************
* Function Name: main
* Description  : This function implements main function.
* Arguments    : None
* Return Value : None
***********************************************************************************************************************/
void main(void)
{R_MAIN_UserInit();/* Start user code. Do not edit comment generated here */set_led_num(0);while (1U){R_WDT_Restart();KEYx_SCAN_SML();KEYs_SCAN();set_led_num(i);//set_led_num(KEY_FLAG);if(KEY4_FLAG==KEY_S){KEY_FLAG=KEY_NO;KEY4_FLAG=KEY_NO;i=0;}else if(KEY5_FLAG==KEY_S)    {i=0;KEY5_FLAG=KEY_NO;}else if(KEY2_FLAG==KEY_S)    {i++;KEY2_FLAG=KEY_NO;}else if(KEY3_FLAG==KEY_S){i--;KEY3_FLAG=KEY_NO;    }else if(KEY_FLAG==KEY_S){if(time_count0>20){time_count0=0;i++;i=i%10000;}}else if(KEY_FLAG==KEY_L){if(time_count0>20){time_count0=0;i--;i=i%10000;}}else{} display_LED();;}/* End user code. Do not edit comment generated here */
}/***********************************************************************************************************************
* Function Name: R_MAIN_UserInit
* Description  : This function adds user code before implementing main function.
* Arguments    : None
* Return Value : None
***********************************************************************************************************************/
void R_MAIN_UserInit(void)
{/* Start user code. Do not edit comment generated here */hdwinit();//R_TAU0_Channel0_Start();//EI();/* End user code. Do not edit comment generated here */
}/* Start user code for adding. Do not edit comment generated here */
/* End user code. Do not edit comment generated here */

三、烧录程序

  烧录程序,逐一按键查看效果(文件太大上传不了)。

四、附录

按键的短按、长按、双击等功能的实现参考的这个图:

瑞萨开发记录04:按键控制数码管(R5F104FEA芯片)相关推荐

  1. 瑞萨开发记录03:数码管定时显示(R5F104FEA芯片)

    03.定时器闪烁lED灯 一.引脚配置 二.编写代码 1.r_cg_userdefine.h 2.r_cg_timer_user.h 3.r_main.c 三.烧录程序   上一篇博客记录了定时器的使 ...

  2. 瑞萨开发记录01:点亮一颗LED灯(R5F104FEA芯片)

    01.点亮一颗LED灯 一.创建工程 二.查看原理图 三.工程配置 1.引脚复用 2.时钟配置 3.debug设置 4.fix settings完成配置 5.配置各个引脚功能 6.生成代码 四.编写代 ...

  3. 瑞萨开发记录02:定时器闪烁LED灯(R5F104FEA芯片)

    02.定时器闪烁lED灯 一.引脚配置 1.配置LED 2.配置定时器 二.编写代码 1.定时器定时 2.LED引脚定义 3.主函数 三.烧录程序   上一篇博客记录了点亮一颗LED灯以及工程文件的配 ...

  4. 瑞萨开发板编译和烧录

    瑞萨开发版编译和烧录 烧板子是一条充满荆棘的路,尤其是对于之前没有烧过的同学来说,更对于比较冷门的板子来说.去某高校的实验室跑了两趟,和官方技术支持挤牙膏挤了好久才挖点资料过来参考.换了两台电脑,在P ...

  5. 瑞萨RA MCU立创EDA训练营——自制瑞萨开发板

    自制瑞萨开发板 前言 硬件制作 照猫画虎原理图 电源电路 晶振电路 复位电路 MD(BOOT)选择电路 外设电路 原理图一览 PCB一览 焊接 代码调试 实物效果 总结 前言 本着学习(bai pia ...

  6. 零基础无实物一步一步学PLCS7-1200仿真(八)-按键控制数码管显示

    项目要求:按照项目的功能完成按键控制数码管的技术显示. 项目目的:学习比较指令.数学函数指令和加减计数指令和数码管的显示原理. 项目功能:数码管可以显示两位数00-99,然后可通过四个按键完成数码管的 ...

  7. 一个按键控制数码管的开和关_按键控制数码管

    按键控制数码管 1. 实验目标 拓展 FPGA 的应用,加强对 FPGA 设计原理的认识,提高 Quartus II 使用能力. 熟悉元件参数设置,学会仿真和下载到开发板调试,培养差错和排错的能力. ...

  8. 4*4矩阵按键控制数码管显示0-F

    4*4矩阵按键原理图如下: 根据原理图,汇编程序代码如下: 4*4矩阵按键控制数码管显示0-F.刚学单片机汇编,是根据单片机C语言思路来写的,写的不好,如果发现有错误或会导致程序跑飞的,麻烦帮我指出, ...

  9. 51单片机按键控制数码管显示0-9

    实验题目:使用51单片机设计两个按键控制数码管显示0-9,当K1按下减1,当K2按下加1. 理解程序可参考我的另外两个文章; 51单片机数码管显示0-9_学习笔记吧的博客-CSDN博客 51单片机独立 ...

最新文章

  1. AI一分钟 | 谷歌CEO承诺在中国组建更大团队;苹果与清华大学成立研究中心,并将帮助30万名贫困学生
  2. mysql的总结7--存储过程
  3. Nmap源码分析(服务与版本扫描)
  4. Android基于mAppWidget实现手绘地图(五)--如何创建地图资源
  5. SAP UI5列表的排序
  6. 简单c语言课设计题目,C语言课程设计题目
  7. 利用Bdrive打造个人私有云存储解决方案
  8. T-SQL LIKE子句 模糊查询
  9. RFID 打印机是什么
  10. access两位小数不进位_人教版小学数学三年级下册笔算乘法(不进位)公开课优质课课件教案视频...
  11. 2008-03-18 中午日出傍晚雨
  12. java编写一个web 留言板_Java Web在线留言板
  13. php开发环境浏览器有哪些,ie内核浏览器有哪些
  14. php混淆解密,关于php混淆加密解密详解
  15. 查理·芒格:分享12个顶级思维模型
  16. git 拉取最新代码
  17. 鸿蒙系统图标显示下划线,用鸿蒙OS在蜂鸣器上播放一曲《两只老虎》
  18. 全国计算机互联网城市排名,中国互联网+城市排名:杭州第一 北京仅排第八
  19. 老是未能连接一个window服务器,未能连接一个Windows服务 怎么回事
  20. 巅峰对决!2020人工智能创新创业大赛总决赛评委阵容、项目亮点震撼揭晓

热门文章

  1. github 高级搜索命令
  2. 记初次使用git从误删整个项目到恢复所有文件的经历
  3. 个人对rtsp协议的理解
  4. MATLABsimulink对于软件无线电设计的支持
  5. 关于微擎人人商城互动直播通信服务的笔记
  6. 2017 Multi-University Training Contest - Team 6:1003hdu6098、Inversion
  7. Vue项目中安装使用axios
  8. IDAExgit代链接设置
  9. MIUI10.3及以上最新版本 冰箱Ice Box的激活
  10. [论文阅读]Range-Focused Fusion of Camera-IMU-UWB for Accuarte and Drift Reduced Localization