- 博客(22)
- 收藏
- 关注
原创 Linux驱动开发之USB鼠标驱动学习思路
a. 在入口函数init注册usb_driver驱动,出口函数exit卸载usb_driver驱动;①输入子系统,上报事件,把数据编程具体的含义,让人所知道的,如:按下鼠标左键,显示L;c和d点代码:中断是fill-urb中的:usbmouse_as_key_irq函数。d. 当USB主机控制器收到USB设备的数据,会在urb的一个函数irq产生中断;①输入子系统,完成①分配input_dev结构体,②设置产生按键类事件,③注册。提示:看懂文章的前提是会输入子系统、USB总线驱动框架。
2023-08-12 20:34:24
391
原创 CAN协议详解+常见问题汇总,吐血整理!!!
CAN的详解包括:物理层、协议层、STM32有关CAN的配置、软件编程;CAN的常见问题是汇总了网上经常反馈遇到的高频问题
2023-07-12 20:51:44
6601
1
原创 C语言,#include “” 和 #include <>的区别及具体讲解
1. #include “”(针对用户创建的头文件),查找策略是:现在该源文件所在目录下查找,如果头文件找不到,编译器就会在标准位置查找头文件,即自己安装这个软甲的目录下去查找;2. #include <>(针对库文件,已经封装好的函数),查找策略是:直接去标准位置查找头文件,即自己安装这个软甲的目录下去查找,找不到就提示编译错误;答:可以,只不过这样的话查找效率很低,因为要先去源文件目录查找再去标准位置查找,并且这样也分辨不出哪个是用户定义的头文件,哪个是封装好的头文件。答:区别在于查找的策略。
2023-06-22 10:14:36
2678
1
原创 C语言文件操作--被错误使用的feof,一分钟正确认识它
在文件读取过程中,不能用feof函数的返回值来判断文件是否结束,而是当文件读取结束的时候,判断是读取失败结束的,还是遇到文件尾结束的。2. NULL,使用fgets(文件结构体指针),获取文件中的字符串,如果这个字符串返回NULL,说明读取文件结束。1. EOF,使用fgetc(文件结构体指针),获取文件中的一个字符,如果这个字符等于EOF,说明读取文件结束;分为两步骤解决:一、先判断是否结束;1. 使用ferror,表明是读取失败才结束的;2. 使用feof,表示读取的文件末尾才结束的。
2023-06-20 14:35:20
311
原创 C语言,最短时间认识strcpy与memcpy的区别与用处
因为strcpy遇到\0就结束,那么arr1中第一个整型1,在内存中存储(小端存储):01 00 00 00 ,所以一开始是把01放入arr2,然后遇到00,0=\0,所以就拷贝结束了。该函数是从source的位置复制num个字节到destination,遇到\0也不好使,memcpy只认num。代码经过执行,arr2的值是多少?以上就可以把arr1的值全部拷贝到arr2。strcpy:只能拷贝字符串,
2023-06-14 10:49:32
128
1
原创 2. 有关strlen函数的用法及注意点
一、strlen(),括号里面的类型是const char* str--常量char* 指针变量,从首元素的地址开始计数,遇到 '\0' 就结束计数,且计数值不包括\0;答案虽然是74,但是其实是随机值,因为如果是创建字符数组的话,不像字符串默认最后有个\0,字符数组最后没有\0,所以会继续往后计数,遇到随机值等于0才结束。二、(很多人都忽略的点)strlen()函数的返回值是一个无符号的值,所以遇到如下这题,答案是打印:hehe。
2023-06-13 09:58:41
313
1
原创 1. 什么是回调函数?(以最短时间让你了解回调函数功能)
实现方法是:在调用Calc后,执行void Calc(int (*p) (int, int))这个函数里面的代码,那么在这个函数名中,*p代表指向调用函数的地址,int (*p)代表Add那么返回值是int,int (*p) (int, int)代表Add里面两个要加的数是int型,在对printf("%d", p(x, y))打印时,就把从键盘输入的x,y值代入Add中进行计算,然后获得return x+y的返回值。以上是个举例,那么如果想要乘,main函数里面就换成Calc(Mul)。
2023-06-08 10:24:16
90
1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人