自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 C语言 史上最详细快速排序图解,让小白也能轻松理解

快速排序可以看作是冒泡排序的一种升级版,优点就是快速,但是稳定性差。因为是史上最详细快速排序,所以我写的非常细~~基本每一句代码都解释+图解到位了,需要耐心浏览,先上代码,再对代码进行图解,大家也可以先把代码跑一遍,有个底…//快速排序void my_sort(int arr[],int low,int high){ //递归结束条件 if (low >= high) return; //记录数组第一个值和最后一个值 int left = low, right = high;

2020-07-09 14:59:58 9337 27

原创 vscode #ifdef 区域变暗功能取消

在使用VSCode软件编写C/C++语言代码的时候,当代码中出现#ifdef的区域将会变暗,非常影响正常使用。如下图所示在C/C++扩展中,点击后选择扩展设置将C_Cpp:Dim Inactive Regions选项进行取消勾选,即可生效...

2021-11-10 21:36:43 9758 2

原创 compdb/compile_commands.json的生成

compdb/compile_commands.json的生成Compiledb-ninja ← 最简单的方法(此方式不支持Kernel仓库)https://github.com/schspa/compiledb-ninja可参照页面说明生成。(可参考vim配置lsp)如果遇到python模块缺失(如click),可使用以下命令安装:pip install --user click注:可以将compiledb-ninja.py链接到PATH包含的路径中,这样就可以直接用compiledb-ni

2021-10-08 17:56:41 3982

原创 vscode代码跳转

简介:Clangd 是什么1.安装clangd已经包含在llvm中,而llvm针对Linux有预编译的软件包,直接下载解压即可使用。https://mirrors.tuna.tsinghua.edu.cn/github-release/llvm/llvm-project/LLVM%2012.0.1/clang%2Bllvm-12.0.1-x86_64-linux-gnu-ubuntu-16.04.tar.xz可以直接在编译服务器上使用wget、curl等工具下载。解压可使用tar命令:tar -

2021-10-08 17:52:29 2874

原创 linux内核 等待队列的使用

阻塞与非阻塞是设备访问的两种方式。驱动程序需要提供阻塞(等待队列,中断)和非阻塞方式(轮询,异步通知)访问设备。在写阻塞与非阻塞的驱动程序时,经常用到等待队列。等待队列阻塞访问最大的好处就是当设备文件不可操作的时候进程可以进入休眠态,这样可以将cpu资源让出来。但是,当设备文件可以操作的时候就必须唤醒进程,一般在中断函数里面完成唤醒工作。Linux内核提供了等待队列(wait queue)来实现阻塞进程的唤醒工作,如果我们要在驱动使用等待队列,必须创建并初始化一个等待队列头。等待队列头struct

2021-05-09 16:59:32 801 2

原创 vscode 文件标签栏多行显示

最近使用vscode看代码,感觉比source insight用起来更爽,vscode的配置也很多,不经常设置很容易忘记,这里保存一个特别好用的设置,文件标签栏多行显示。不设置时,当打开多个文件时,需要使用鼠标滑动滚动条才能看到后面打开的文件。打开设置后,效果是这样的,打开多个文件时,所以文件都能显示出来,看代码非常的nice!!设置步骤按住 ctrl + shift + p输入 open workspace settings,选择打开工作区设置输入workbench.editor.wr

2021-04-06 10:51:56 42247 6

原创 逻辑分析仪的使用--LA1010

做嵌入式驱动开发,会使用逻辑分析仪是必不可少的技能。什么情况需要使用逻辑分析仪当你编写驱动与设备通信读写数据遇到问题时,可以用逻辑分析仪排除硬件问题,这样我们就可以安心找软件的bug了。这里我以Kingst逻辑分析仪 LA1010型号为例,来说明。连接硬件逻辑分析仪相比示波器,体积优势明显,首先,你需要硬件工程师帮你把板子引出三根线SCL(时钟线) SDA(数据线) GND(接地)。逻辑分析仪USB直连电脑供电,然后选择两个CH通道连上SCL和SDA,这里我把CH0连SCL,CH1连SDA,接

2021-03-17 16:23:59 10563 5

原创 Linux驱动开发--手把手教你如何将自己添加的源码编译进内核

首先找到你项目的驱动源码位置一般各大半导体厂商驱动源码的位置都处于根目录/kernel/driver下,不同厂商可能有一些差别,不过总体区别不大,大不了全局搜driver这个目录,这里以Rockchip厂商的3326芯片为例。驱动源码位置在/kernel/driver先清楚你添加的驱动属于什么类型这里我以添加一个温湿度传感器驱动为例讲解怎么添加驱动源码,传感器属于输入设备,所以应该放在driver/input目录下,一般我们直接在input目录下直接创建一个温湿度传感器的目录就可以了,如果你发现in

2021-03-15 11:17:30 1285 1

原创 温湿度传感器SHTC3驱动开发(二)小白也能轻松理解

1、添加驱动文件话不多说,接着上一讲,我们已经成功创建了设备节点,那接下来就是编写驱动了。在我们项目代码的/kernel/driver/input目录下创建temperature目录并添加驱动文件shtc3.c shtc3.h,添加Makefile和Kconfig。编写框架前我们要知道的几个概念i2c_driver 表示i2c驱动i2c_client 表示i2c设备i2c_adapter 表示i2c适配器i2c总线驱动编写的大体思路是什么?理解下面这两句话至关重要上一篇我们编

2021-03-12 16:50:00 2612 1

原创 温湿度传感器SHTC3驱动开发(一)小白也能轻松理解

首先了解设备硬件原理图添加设备树节点添加驱动文件

2021-03-11 15:10:19 6435

原创 嵌入式开发--按位取反操作

计算机基础知识按位取反,这个实际用到一些计算式知识,你得先清楚原码、反码、补码这几个概念。首先我们要知道计算机底层的存储方式:所有数据都是以二进制形式存在的。二进制数据的存储方式:所有的数值,不论正负,都是以补码方式存储的(因为计算机只会加不会减,所以有了补码的形式)。二进制是机器语言,1、0表示高低电频,使机器的处理起来更加高效便捷。三条规则1.计算机数字运算均是基于补码的2.正数的原码、反码、补码都是一致的3.负数的补码是反码+1,反码是对原码取反,只是最高位(符号位)不变按位取反

2020-12-14 10:26:30 957

原创 有这一篇就够了,带你理解嵌入式内存各种概念

内存什么是内存?在计算机的组成结构中,有一个很重要的部分,就是存储器。存储器是用来存储程序和数据的部件,对于计算机来说,有了存储器才有记忆功能,才能保证正常工作。存储器的种类很多,按其用途可分为主存储器和辅助存储器,主存储器又称内存储器(简称内存),辅助存储器又称外存储器(简称外存)。外存通常是磁性介质或光盘,像硬盘,软盘,CD等,能长期保存信息,并且不依赖与电来保存信息。内存指的就是主板上的存储部件,是CPU直接与之沟通,并用其存储数据的部件,存放当前正在使用的(即执行中)的数据和程序,一旦断电,

2020-12-10 15:10:55 3995

原创 程序员修炼-剑指offer之用两个栈实现队列

之前写过一遍栈的实现,今天说说怎么用栈实现队列的功能题目描述用两个栈来实现一个队列,完成队列的Push和Pop操作。 队列中的元素为int类型。首先做题前明确思路,再动手码代码。1.队列是先进先出,而栈是先进后出2.实现队列就是实现队列的两个操作,入队和出队使用两个栈stack1和stack2,stack1模拟入队,stack2模拟出队操作思路如下:1.入队操作,直接将数据压入stack1栈即可。void push(int node) { stack1.push(node)

2020-10-19 11:21:45 717 3

原创 程序员修炼-剑指offer之字符流中第一个不重复的字符

题目描述请实现一个函数用来找出字符流中第一个只出现一次的字符。例如,当从字符流中只读出前两个字符"go"时,第一个只出现一次的字符是"g"。当从该字符流中读出前六个字符“google"时,第一个只出现一次的字符是"l"。输出描述:如果当前字符流没有存在出现一次的字符,返回#字符。...

2020-07-27 15:06:09 152

原创 程序员修炼-剑指offer之表示数值的字符串

题目:请实现一个函数用来判断字符串是否表示数值(包括整数和小数)。例如,字符串"+100",“5e2”,"-123",“3.1416"和”-1E-16"都表示数值。 但是"12e",“1a3.14”,“1.2.3”,"±5"和"12e+4.3"都不是。审题后首先得总结出所有不是数值的点后再下笔做题,别上手就写代码,很难一把过的(除非你是大神~)1.看小数点,第一种情况是一个数中小数点不能出现两次,第二种情况是e后面不能再出现小数点2.看+和-号,从题目实例中可知+ -号可出现多次,第一次出现+ -的

2020-07-27 10:10:24 121

原创 C语言实现参数可变函数printf

C语言实现参数可变函数printfprintf函数的功能相信不用多说,这应该是大家写代码用的最多的一个函数了,那它是怎么做到参数可变的呢。首先此功能实现可变参数的关键在于利用stdarg.h头文件中的三个函数va_start()va_arg()va_end()然后利用putchar函数输出字符到终端,看代码,我尽量把注释写详细。#include <stdio.h>#include <stdarg.h>//函数声明void printDec(int dec);v

2020-07-08 16:58:12 899

转载 android 开机默认进入指定Launcher

这里总结下我研究这个需求,想出的两种解决方案。第一种方法最简单暴力只要修改apk的AndroidManifest直接上源码<activity android:name="com.android.launcher3.Launcher" android:launchMode="singleTask" android:cl...

2020-03-09 19:20:35 1505

转载 LeetCode 题目讲解大全

收藏一下,大神整理的leetcode答案以及讲解,以后肯定用的上。链接:https://www.cnblogs.com/grandyang/p/4606334.html程序员们加油,感谢原作者。

2019-11-18 15:26:16 216

原创 程序员修炼-C 栈的实现

C 栈的实现工作了几年,发现很多c语言基础的东西基本没用过,已经忘了差不多了,只能通过博客来强迫自己重拾基础了。栈是什么栈又称堆栈,它是一种运算受限的线性表,其限制是仅允许在表的一端进行插入和删除运算。这是我在网上看到最多的一种解释和说法了,在我以往的认知常常就是局部变量在栈区,由系统申请空间和释放,自己手动申请空间的变量在堆区,需要自己手动释放资源,但从来没想过可以自己手动实现栈的功能,看...

2019-11-12 23:17:12 275

空空如也

空空如也

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

TA关注的人

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