自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(24)
  • 收藏
  • 关注

原创 【git】远程仓库的使用

1、git remote查看远程仓库2、git remote -v查看远程仓库的详细信息3、git remote add name url添加远程仓库4、git pull remote_name remote_branch:local_branch将远程仓库的分支拉到本地分支:git pull origin master:mater5、git push re...

2020-01-21 17:06:29 105

原创 【git】获取仓库

git中有两种取得仓库的方法方法1在现有目录中初始化仓库如果你打算使用 Git 来对现有的项目进行管理,你只需要进入该项目目录并输入:git init这个时候,我们仅仅是做了一个初始化的操作,你的项目里的文件还没有被跟踪方法2克隆现有的仓库命令git clonehttps://github.com/tyustli/Cgit clonehttps://git...

2020-01-21 16:50:52 328

原创 git-配置用户信息(一)

当安装完 Git 应该做的第一件事就是设置你的用户名称与邮件地址。这样做很重要,因为每一个 Git 的提交都会 使用这些信息,并且它会写入到你的每一次提交中1、git config --global user.name "name"配置用户名称2、git config --global user.email "email"配置用户邮箱3、git config --glob...

2020-01-21 16:39:41 384

原创 描述符之间的关系

设备描述符里决定了该设备具有多少种配置,每种配置都有一个配置描述符。每个配置描述符中又定义了该配置里有多少个接口,每个接口都有一个接口描述符。在接口描述符里又定义了该接口有多少个端点。每个端点都有一个端点描述符,端点描述符定义了端点的大小、类型等。如果有类特殊描述符的话,它跟在相应的接口描述符之后。注意:配置描述符号、接口描述符、类特殊描述符(如果有)和端点描述符是一起返回的,统称为配置描述符集合。当设备有多个接口,并且接口有多个端点时,数据返回配置描述符集合的格式如下。

2020-01-20 17:30:00 577 1

原创 C-指针加/减一个整数

给指针加上一个整数实际上加的数是这个整数和指针数据类型对应字节数的乘积。用在数组中就是对数组元素的偏移测试程序#include "stdio.h"int main(int argc, char *argv){ int test_arr[10] = {1, 2, 3, 4, 5, 6, 7, 8, 9 ,10}; int test_num = 3; int...

2020-01-19 17:40:49 1161

原创 USB鼠标分析——HID 报告的返回(九)

1、枚举2、设备描述符3、设置地址4、配置描述符5、接口描述符6、HID 描述符7、端点描述符8、字符串描述符9、HID 报告描述符10、HID 报告的返回

2020-01-17 11:30:53 691 1

原创 USB鼠标分析——HID 类特殊请求(八)

USB 鼠标获取完字符串描述符之后,又请求了几次设备描述符和配置描述符,这些描述符在上面已经解析过了,这里就不再重复。在请求 HID 报告描述符之前,主机会有一些类特殊请求。下图为 HID 协议文档中的 HID 报告描述符的示例。关于报告描述符的详细解释参考 HID 协议文档。获取报告描述符的请求如下所示。

2020-01-17 11:29:56 1710 1

原创 USB鼠标分析——字符串描述符(七)

bLength:该描述符的长度bDescriptorType:描述符类型(字符串为 0x03)wLANGID[0]:语言 ID 号 0。

2020-01-16 18:11:03 1408 1

原创 USB鼠标分析——端点描述符(六)

USB鼠标详解阅读顺序1、枚举2、设备描述符3、设置地址4、配置描述符5、接口描述符6、HID 描述符7、端点描述符8、字符串描述符9、HID 报告描述符10、HID 报告的返回linux内核中对端点描述符的定义,目录:linux/include/uapi/linux/usb/ch9.h/* USB_DT_ENDPOINT:...

2020-01-16 16:58:43 2889 1

原创 USB鼠标分析——HID 描述符(五)

HID 类的设备在配置描述符中还需要一个 HID 描述符。它是一个类描述符,跟在接口描述符后面,HID描述符的结构如下所示bLength:该描述符的长度。它的大小与该描述符中下级描述符的个数有关。例如,只有一个下级描述符时,总长度为:1 + 1 +2 + 1 + 1 + 1 + 2 = 9 字节bDescriptorType:描述符的编号。HID 描述符的编号为 0x21bcdHID:2 字节,是该设备所使用的 HID 协议的版本号。

2020-01-16 16:40:27 1628

原创 USB鼠标分析——接口描述符(四)

USB鼠标详解阅读顺序1、枚举2、设备描述符3、设置地址4、配置描述符5、接口描述符6、HID 描述符7、端点描述符8、字符串描述符9、HID 报告描述符10、HID 报告的返回linux内核中对接口描述符的定义,目录:linux/include/uapi/linux/usb/ch9.h/* USB_DT_INTERFACE: ...

2020-01-16 16:09:53 2337 1

原创 USB鼠标分析——配置描述符(三)

bLength:配置描述符的长度。标准的 USB 配置描述符的长度为 9 字节bDescriptorType:描述符的类型。配置描述符的类型编码为 0x02wTotalLength:2 个字节,表示整个配置描述符集合的总长度,包括配置描述符,接口描述符,类特殊描述符(如果有)和端点描述符,注意低字节在前。bNumInterfaces:表示该配置所支持的接口数量。通常功能单一的设备只具有一个接口,而复合设备则具有多个接口bConfiguration:表示该配置的值。

2020-01-16 15:53:37 1534

原创 USB鼠标分析——设置地址(二)

章节我们知道,获取到 USB 的设备描述符之后就会对设备再次进行复位,然后进入设置地址阶段。从 USB 的枚举过程 可知,下一步是获取设备描述符(真心实意的获取),这一部分与。设置完地址之后,后面的通信主机与设备通信都是使用的 0x14 这个地址。设备描述符获取到之后,下一步就是获取配置描述符,数据过程如下。例如,一个 USB 鼠标的设备地址过程如下所示。设置地址的标准请求的代码为。类似,这里不再展开讲解。

2020-01-16 15:17:14 3210 4

原创 USB鼠标分析——设备描述符(一)

USB 设备描述符及各个字段的含义

2020-01-16 14:56:24 2361

原创 【git】变基

假设当前开发过程中 master分支开发并提交了 C3,experiment分支开发并提交了 C4,如下图所示变基的思想:你可以提取在 C4 中引入的补丁和修改,然后在 C3 的基础上再应用一次。在 Git 中,这种操作就叫做 变基。你可以使用 rebase 命令将提交到某一分支上的所有修改都移至另一分支上,就好像“重新 播放”一样上图中运行如下命令:git checkout...

2020-01-15 14:51:02 315

原创 【git】分支

常用命令1、命令:git branch作用:查看仓库本地当前所有的分支2、命令:git branch dev作用:基于当前分支新建 dev 分支3、命令:git checkout dev作用:切换到 dev 分支4、命令:git branch -d dev作用:删除 dev 分支5、命令:git branch -D dev作用:强制删除 ...

2020-01-15 08:31:32 162

原创 USB-标准设备请求

USB标准设备请求linux内核中对标准设备请求的定义,目录:linux/include/uapi/linux/usb/ch9.hstruct usb_ctrlrequest { __u8 bRequestType; __u8 bRequest; __le16 wValue; __le16 wIndex; __le16 wLength;} __attribute...

2020-01-14 17:38:50 1283

原创 USB 枚举过程

枚举过程的详细介绍1、USB主机检测到 USB设备插入后,就会先对设备复位。USB设备在总线复位后其地址为 0 ,这样主机就可以通过地址 0和那些刚刚插入的设备通信。2、USB主机往地址为 0的设备的端点 0发送获取设备描述符的标准请求(这是一个控制传输的建立过程)。设备收到该请求后,会按照主机请求的参数,在数据过程将设备描述符返回给主机。主机在成功获取到一个数据包的设备描述......

2020-01-14 11:07:22 3140 1

原创 RT-Thread内核-rt_list_for_each

1、原型/** * rt_list_for_each - iterate over a list * @pos: the rt_list_t * to use as a loop cursor. * @head: the head for your list. */#define rt_list_for_each(pos, head) \ for (pos = (head)...

2020-01-12 19:48:57 736

原创 单向链表(一)--单向链表操作函数

1、单向链表的结构体定义/** * Single List structure 单链表结构体 */struct rt_slist_node{ struct rt_slist_node *next; /**< point to next node. 指向下一个节点 */};typedef struct rt_slist_node rt_slis...

2020-01-12 19:24:11 888

原创 RT-Thread内核-__rt_ffs函数

1、原型int __rt_ffs(int value)2、作用用于找到参数 value 用二进制表示时,第一个被置 1 的位的索引3、示例程序#include <stdio.h>const unsigned char __lowest_bit_bitmap[] ={ /* 00 */ 0, 0, 1, 0, 2, 0, 1, 0, 3, 0, 1...

2020-01-12 16:13:10 1193

原创 双向链表(二)--双向链表初始化的宏 RT_LIST_OBJECT_INIT

1、定义#define RT_LIST_OBJECT_INIT(object) { &(object), &(object) }2、作用RT_LIST_OBJECT_INIT用于初始化一个双向链表,使双向链表的前一个节点和后一个节点的指针均指向自己。3、示例程序#include <stdio.h>/** * @brief initial...

2020-01-10 14:31:06 623

原创 【kernel】——宏 list_entry/container_of

而 ptr 又是宏 container_of 的一个参数,它是指向 type 结构体中成员 member 的一个指针,所以 __pmtr 也指向 type 结构体成员 member。typeof 是 GNU C 编译器的特有关键字(C 语言中是看不到的),注意 typeof 只在编译期生效,用于得到变量的类型。({ }) 是 GNU C 的语法扩展(C 语言中也是看不到的),它的用法和逗号表达式类似,结果为最后一个语句的值。它的作用是用于计算 TYPE 结构体中成员 MEMBER 的偏移量。

2020-01-09 15:13:55 493

原创 STM32-串口输出

使用 STM32CubeMx工具配置好串口外设。1、uart.c 中定义 bufchar debug_buf[128];2、uart.h中实现串口输出函数#include<stdio.h>extern char debug_buf[128];#define debug(...){ \ int len = 0; \ len = snpr...

2020-01-07 20:42:36 400

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除