- 博客(33)
- 资源 (8)
- 收藏
- 关注
原创 win10关闭未格式化U盘插入提示格式化弹窗
默认情况下,没有文件系统或文件系统损坏的磁盘插入windows后会提示格式化。该弹窗可以通过修改windows服务来关闭,具体如图。
2022-01-21 10:31:08 2185 1
原创 C语言宏定义的一些用法
do {...} while(0):在宏定义中合理使用do-while(0)可以更规范地使用宏定义/* 没有使用do-while(0)前 */#define Led_On() {LED_Enable; LED = 1;}int main(void){ Led_On(); // 此时,编译会报错,因为替换后是“{LED_Enable; LED = 1;};”多了个分号}/* 使用do-while(0) */#define Led_On() do{LED_Enable
2020-07-08 17:18:57 796
原创 USB通信包标识字段PID
包标识字段PID的定义格式如下图,包标识字段(PID)长度为8bit,由低4bit的类型字段和高4bit的校验字段组成。校验字段是类型字段的补码。例如,PID[3:0] = 0001B时,完整的PID字段则应该是:1110_0001B,表示令牌OUT。PID字段有如下4中类型信息包:令牌包:PID[1:0] = 01B; 握手包:PID[1:0] = 10B; 数据包:PID[1:0]...
2020-03-15 23:10:50 2946 1
原创 USB总线数据流
一、概述USB总线的数据流是USB主机和USB设备数据通信的基础。一般来说,一个完整的USB数据流包含3个阶段——令牌阶段、数据阶段、握手阶段。令牌阶段:定义了传输类型,表征数据流的开始。 数据阶段:包含了本次传输的数据。数据量大小根据端点和传输类型而定,最大为1024Byte。 握手阶段:用于数据的接收方报告此次数据传输是否成功。二、字段在USB协议中,USB数据传输数据流...
2020-03-15 22:25:52 779
原创 C语言:gets、puts、fgets、fput、gets_s函数
char *gets(char *s);int puts(const char *s);gets()函数用于读取整行输入,直到遇到换行符,然后丢弃换行符,存储其余字符,并且在这些字符后面添加一个’\0’使其成为一个C字符串。puts()函数与gets()函数配套使用,该函数用于显示字符串,并在末尾添加一个换行符。通常,gets()函数是不安全的,因为gets()函数只有一个参数s用...
2020-03-08 15:18:06 1253
原创 C语言:指针和数组
const char * p = "Hello World!";const char Array[] = "Hello World!";以上两种声明,p和Array都使用了字符串“Hello World!”的地址。在这种情况下,带双引号的字符串本身决定了预留给字符串的存储空间,但这两种形式并不是完全相同的。数组形式和指针形式有何不同呢?**数组形式(Array[])**在计算机的内存中分...
2020-03-08 10:41:39 160
原创 C语言:const关键字用法
const关键字在C语言中用于保护数据不被修改,即设置数据为只读模式。具体有以下几种用法:1. const创建变量const double PI = 3.1415926; /* const 变量 */const int days[5] = {0, 1, 2, 3, 4}; /* const 数组 */对于const变量和const数组,只能在定义的时候将其初始化,定义完成后即会变成...
2020-03-06 10:02:54 542
原创 如何上传项目到GitHub
第一步:登录自己的Github账号,创建要上传项目的存储库,并填写库名称及相应的描述,然后点击“Create repository”创建项目库:第二步:复制项目存储库链接,用于上传代码第三步:打开本地项目文件夹,创建本地仓库、添加文件、上传更改信息到本地.git仓库最后,将本地仓库上传到GitHub存储库...
2019-10-23 10:20:52 205
原创 创建本地SVN仓库
svn下载地址: https://tortoisesvn.net/downloads.html在本地创建SVN仓库的方法:1.下载安装[tortoisesvn](https://tortoisesvn.net/downloads.html),目前最新版本为1.12.02.选择一个空目录(必须为全空的,否则无法创建成功)(此次试验的路径为 F:\SVN-project)->点击右键--&...
2019-06-13 10:27:54 4100
原创 vscode 向下复制当前行(即visual studio 中的Ctrl + D)功能快捷键
打开vscode左下角键盘快捷键设置,找到copy line down,即可查看当前默认快捷键为“shift + Alt + ↓”双击快捷键,输入自己想要的快捷组合,如Ctrl+D,然后回车即可设置自己的组合了...
2019-02-26 16:38:07 102293 4
原创 Linux设备驱动之字符设备 【1】创建字符设备
创建一个字符设备并在/dev目录下创建节点的基本步骤:#include <linux/module.h>#include <linux/pci.h>#include <linux/kernel.h>#include <linux/delay.h>#include <linux/stddef.h>#include &l...
2019-02-24 16:03:07 516
原创 mini2440 ftp 553 Permission denied.
今天在Ubuntu使用mini2440 自带的ftp功能向开发板传输第一个helloWord文件,遇到以下问题:200 PORT command successful.553 hello: Permission denied.没有权限?什么鬼,我Ubuntu 使用的root用户,mini2440也是root权限,为什么会显示Permission denied.然后细致检查了一下m...
2019-02-20 22:49:21 415
原创 uboot 命令解释机制及添加新命令的方法
/**************************************************************************** * returns: * 1 - command executed, repeatable * 0 - command executed but not repeatable, interrupted commands a...
2019-01-29 22:11:25 748
原创 $(origin O)
$(origin O)该形式是$(origin <variable>),origin是一个能返回<variable>定义位置的函数。$(origin O)的意思是获取变量O定义的位置。 在u-boot的Makefile中的开始位置(line69~line76),有这么一段代码:ifdef Oifeq ("$(origin O)", ...
2019-01-18 09:10:06 1714
原创 Python自带绘图库--turtle库简介
<turtle库>setup(width,height,startx,starty):设置窗体大小及位置,4个参数中后两个是可选的(默认情况在桌面中心);当需要控制窗体大小及显示位置的时候才需要用该函数。 goto(x,y):从当前位置去到点(x,y) bk(d),fb(d):后退或者前进d个单位 seth(angle),left(angle),right(angle):改变...
2019-01-03 12:33:27 1996
原创 Python字符串格式化
例子:程序:print("The total value of your change is ${0:0.2f}".format(total))结果:The total value of your change is $1.50 Format方法是Python内置的字符串方法,该方法是利用字符串作为一种模板,值作为参数插入模板中,从而形成一个新的字符串。形式如下: ...
2019-01-03 12:25:47 224
转载 keil编译后生成的M51文件解析
原文地址:https://blog.csdn.net/liucheng5037/article/details/46934147通过*.m51文件我们可以清楚的看到单片机存储器的使用情况,以及可以看到每个变量包括局部变量的位置。之前碰到一个问题,同样的程序,在small模式下编译后运行没问题,但在large模式下可以编译,但是运行出错。最后查看m51文件,发现了问题,在一个对时序要求很严...
2018-08-09 09:09:32 3509
转载 C语言变量声明加冒号的用法
有些信息在存储时,并不需要占用一个完整的字节, 而只需占几个或一个二进制位。例如在存放一个开关量时,只有0和1 两种状态, 用一位二进位即可。为了节省存储空间,并使处理简便,C语言又提供了一种数据结构,称为“位域”或“位段”。所谓“位域”是把一个字节中的二进位划分为几 个不同的区域,并说明每个区域的位数。每个域有一个域名,允许在程序中按域名进行操作。这样就可以把几个不同的对象用一个字节的二进制位域...
2018-07-25 16:37:31 410
原创 Visual Studio 2017设置回车(enter)代码补全
在默认情况下,visual studio 2017是使用Tab进行代码补全的,对于用惯了sublime 的我来说,总觉得有点不爽,捣鼓着这么主流的IDE肯定是可以设置的,然后各种查找,发现可以通过改动主动提交成员列表为“true”来实现回车自动补全的功能,具体路径如下:工具-->选项-->文本编辑器-->C/C++-->高级-->主动提交成员列表...
2018-03-22 15:14:49 31609 21
原创 keil 编译问题之系统因素影响 hexbin 功能
keil uVision3中的hex2bin.bat批量处理文件对操作系统是有区别的32位系统中的内容为: hexbin.exe Out\Scan.hex Out\Scan.bin i64位系统中的内容为: hexbin-64.exe -p 0 Out\Scan.hex可见,在32位系统中,keil编译转换时候,调用的是hexbin.exe工具;而在64位系统中,调用的是hexbin-64.exe...
2018-03-22 09:03:50 452
原创 友善之臂mini2440 烧录uboot的方法
利用Minitools工具将uboot.bin 文件烧录进mini2440开发板的步骤: 1、用USB线将开发板和电脑相连,开发板的S2开关拨到NOR一侧,打开minitools,打开开发板电源,即可显示“已连接开发板(S3C2440 400MHz......)” 2、勾选‘Linux’--> 'linux bootloader' 3、选择uboot.bin目录 4、...
2018-03-10 15:12:41 1672
原创 关于编译uboot时出现“undefined reference to '__aeabi_unwind_cpp_pr0'”的解决方法
编译uboot的时候出现如上错误,uboot官方给出了解决办法方法如下:编辑uboot根路径下的/lib_arm/eabi_compat.c 文件在最后加入空函数__aeabi_unwind_cpp_pr0(void)即可...
2018-03-10 11:19:40 2126
转载 USB端点详解
__u8 bEndpointAddress; //端点地址:0~3位是端点号,第7位是方向(0-OUT,1-IN)端点地址:总共8位0,1,2,3四位表示端点号,第7位表示端点方向那么由这5位可以确定32个端点地址.其中输入端点0-15输出端点0-15Out endpoint for all omron health devices,所有Omron健康设备的输出端点地址(共8位,包括端点号,端点类...
2018-03-09 15:05:02 5743 2
原创 arm-linux-gcc的使用
1.arm-linux-gcc编译器:1)预处理:将C和汇编源程序进行预处理,生成“.i”目标文件arm-linux-gcc -E -o *.i *.c/*.S2)编译:将“.i”目标文件编译生成“.s”汇编文件arm-linux-gcc -S -o *.s *.c3) 汇编:将编译得到的“.s”汇编文件按照给定的指令集转换成符合一定格式的机器码arm-li
2017-09-20 08:54:56 2230
原创 网络编程——connect()函数用于无连接的网络服务
如果要处理一个面向连接的网络服务(SOCK_STREAM或SOCK_SEQPACKET),那么在开始交换数据以前,需要在一个请求服务的进程套接字(客户端)和提供服务进程的套接字(服务器)之间建立一个连接。使用connect函数来建立连接: #include <sys/types.h> #include <sys/socket.h> int c
2017-08-14 20:24:08 428
原创 基于socket的TCP和UDP通讯的简单建立
最近在学习Linux网络编程,写下此学习笔记。一、建立简单TCP连接的步骤:服务器端: 1.调用socket()函数定义套接字; 2.调用bind()函数绑定本地地址和端口; 3.调用listen()函数启动监听端; 4.调用accept()函数从已连接队列中提取客户链接,accept为阻塞类型函数,当连接队列为空时,阻塞等待; 5.调用IO函数与客户端通讯;
2017-08-12 17:16:52 294
原创 系统移植之uboot源代码简要分析(2)
经过上一篇系统移植之uboot源代码简要分析(1)对uboo进行分析后,我们知道BootLoader的第二阶段启动(BL2)从start_armboot处开始执行,start_armboot函数定义在“lib_arm/board.c”中 void start_armboot (void){ init_fnc_t **init_fnc_ptr; char *s; int m
2017-07-23 16:06:53 383
原创 系统移植之uboot源代码简要分析(1)
本次Linux系统移植是基于三星公司的S5PV210(又名Hummingbird)处理器的移植;采用的BootLoader为三星官方的uboot:android_uboot_smdkv210.tar.bz2 开发平台为Ubuntu12.04 交叉编译工具为arm-linux-gcc4.4.3注:s5pv210属于s5pc11x系列芯片,uboot中使用的是s5pc11x文件重要文件文件目录列表
2017-07-22 15:23:09 530
原创 arm-linux-ld: error: Source object has EABI version 5, but target u-boot has EABI version 0
在移植uboot时候,对uboot源代码进行编译,出现如下版本错误,在网上搜了很多博客文章,也没有解决。 想着,既然是arm-linux-ld交叉编译链的错误,换个版本的编译器能不能解决呢。于是,将原本Ubuntu12.04上装的交叉编译链更改为”arm-linux-gcc 4.4.3”版本。最终顺利解决, uboot1.3.4编译出错 编译步骤: make smdkv2
2017-07-21 12:47:29 1049
原创 一份Makefile的详解
指定编译器为arm-linux-gcc,链接器为arm-linux-ld,用arm-linux-objcopy 来将ELF格式的可执行文件转换为二进制文件.CC = arm-linux-gcc LD = arm-linux-ld OBJCOPY = arm-linux-objcopy OBJDUMP = arm-linux-objdump 指定库文件,”-l” 用来链接放在/lib和/usr/
2017-07-13 12:00:55 277
USB 3.2 Revision 1.0.pdf
2020-03-25
keil hex2bin 转换工具
2018-03-22
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人