自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 串口编程-

串口编程

2022-10-10 14:08:42 232 1

原创 定时器-C++ Linux

时间轮

2022-10-10 11:05:58 596

原创 时间库<chrono>

chrono

2022-10-10 10:56:32 442

原创 RTC调试

RTC-linux

2022-09-01 15:06:49 326

原创 MMC子系统之SDIO卡驱动

SDIO

2022-08-17 17:20:54 593

原创 UART通信

使用多种物理层接口,定义了数据传输协议。

2022-08-17 15:08:36 359

原创 SPI通信

定义了物理层接口(3+线)和数据传输协议。

2022-08-17 14:24:42 1060

原创 I2C通信

定义了物理层接口(2线)和数据传输协议。

2022-08-17 11:12:00 214

原创 Modbus协议

modbus

2022-08-17 10:23:26 2284

原创 Ubuntu使用记录

笔记

2022-07-06 23:58:23 128

原创 动态内存new / delete

..

2022-06-23 15:08:34 210

原创 debain使用记录

记录

2022-06-23 12:17:36 233

原创 buildroot使用记录

记录

2022-06-23 11:26:57 535

原创 驱动-并发控制

原子操作定义并初始化atomic_t v=ATOMIC_INIT(0);设置atomic_set(atomic_t *v,int i);获取atomic_read(atomic_t *v);加atomic_add(int i, atomic_t *v);减atomic_sub(int i, atomic_t *v);自增atomic_inc(atomic_t *v); 自减atomic_dec(atomic_t *v); 特性:1.保证对一个整数的修改是排他性的。即

2022-05-30 11:41:05 102

原创 网络测速iperf

服务端:使用 iperf3 -s开启服务端客户端:使用iperf3 -c "serverip"测速更多用法参考iperf3 --help

2022-05-30 10:48:25 143

原创 硬盘测试FIO

下载地址:http://git.kernel.dk/cgit/fio/解压后进入源码目录,查看需要的各项配置./configure –help配置buildrk@ubuntu:~/opt/fio-3.30$ ./configure --prefix=./output --cc=aarch64-linux-gnu-gcc --build-static编译make输出make install–prefix=./output,为输出目录,进入此目录。fio 即为所需要的fio工具,将此文

2022-04-21 09:27:08 226

原创 数据结构使用细节记录

顺序查找使用数组构建顺序表时,设置“哨兵”以提高查找效率。《数据结构》清华大学版.P217这个改进能使顺序查找在length>=1000时,进行一次查找所需的平均时间几乎减少一半int Search(SSTable ST,KeyType key){ ST.elem[0].key=key; for(i=ST.length;!Equal(ST.elem[i].key,key);i--); return i;}ST.elem[0]赋 key 值,起监视哨作用,省去

2021-11-06 14:36:31 168

原创 C使用细节记录

函数fgets()char *fgets(char *str, int n, FILE *stream) 从指定的流 stream 读取一行,并把它存储在 str 所指向的字符串内。当读取 (n-1) 个字符时,或者读取到换行符时,或者到达文件末尾时,它会停止,具体视情况而定。使用fgets获取的一行内容(包括回车符),会以字符串的形式(以’\000’结尾)存储下来,后续可用string库函数来处理...

2021-11-04 17:58:07 64

原创 合并记录表(哈希表,树)

牛客网/X为机试/HJ8描述数据表记录包含表索引和数值(int范围的正整数),请对表索引相同的记录进行合并,即将相同索引的数值进行求和运算,输出按照key值升序进行输出。输入描述:先输入键值对的个数然后输入成对的index和value值,以空格隔开输出描述:输出合并后的键值对(多行)示例1输入:40 10 21 23 4输出:0 31 23 4分析这题的重点在于查找时间和存储空间的处理即数据结构的选取。到底是map还是数组还是哈希表可以根据key的范围以及.

2021-08-13 16:42:24 293

原创 哈希表(散列表)

哈希表(散列表)

2021-08-10 21:27:27 132

原创 数组

牛客网/X为机试/HJ3技巧用数组实现去重排序题目描述明明想在学校中请一些同学一起做一项问卷调查,为了实验的客观性,他先用计算机生成了N个1到1000之间的随机整数(N≤1000),对于其中重复的数字,只保留一个,把其余相同的数去掉,不同的数对应着不同的学生的学号。然后再把这些数从小到大排序,按照排好的顺序去找同学做调查。请你协助明明完成“去重”与“排序”的工作(同一个测试用例里可能会有多组数据,希望大家能正确处理)。注:测试用例保证输入参数的正确性,答题者无需验证。测试用例不止一组。当没有新.

2020-12-27 16:49:35 129 1

原创 字符串

牛客网/X为机试/HJ21题目描述密码是我们生活中非常重要的东东,我们的那么一点不能说的秘密就全靠它了。哇哈哈. 接下来渊子要在密码之上再加一套密码,虽然简单但也安全。假设渊子原来一个BBS上的密码为zvbo9441987,为了方便记忆,他通过一种算法把这个密码变换成YUANzhi1987,这个密码是他的名字和出生年份,怎么忘都忘不了,而且可以明目张胆地放在显眼的地方而不被别人知道真正的密码。他是这么变换的,大家都知道手机上的字母: 1–1, abc–2, def–3, ghi–4, jkl–5.

2020-12-27 16:02:28 54

原创 排序------冒插归选快希堆

《大话数据结构》目录冒泡排序插入排序归并排序选择排序快速排序希尔排序堆排序稳定性的意义如果只是简单的进行数字的排序,那么稳定性将毫无意义。如果排序的内容仅仅是一个复杂对象的某一个数字属性,那么稳定性依旧将毫无意义如果要排序的内容是一个复杂对象的多个数字属性,但是其原本的初始顺序毫无意义,那么稳定性依旧将毫无意义。除非要排序的内容是一个复杂对象的多个数字属性,且其原本的初始顺序存在意义,那么我们需要在二次排序的基础上保持原有排序的意义,才需要使用到稳定性的算法,例如要排序的内容是一组原本.

2020-12-09 14:45:14 255

原创 查找------二叉排序树

《大话数据结构》二叉排序树二叉排序树(Binary Sort Tree),又称为二叉查找树。它或者是一棵空树,或者是具有下列性质的二叉树。■若它的左子树不空,则左子树上所有结点的值均小于它的根结构的值;·■若它的右子树不空,则右子树上所有结点的值均大于它的根结点的值;■它的左、右子树也分别为二叉排序树。构造一棵二叉排序树的目的,其实并不是为了排序,而是为了提高查找和插入删除关键字的速度。不管怎么说,在一个有序数据集上的查找,速度总是要快于无序的数据集的,而二叉排序树这种非线性的结构,也有.

2020-12-04 16:33:58 147

原创 查找------顺序查找

《大话数据结构》折半查找折半查找(Binary Search)技术,又称为二分查找。它的前提是线性表中的记录必须是关键码有序(通常从小到大有序),线性表必须采用顺序存储。折半查找的基本思想是:在有序表中,取中间记录作为比较对象,若给定值与中间记录的关键字相等,则查找成功;若给定值小于中间记录的关键字,则在中间记录的左半区继续查找;若给定值大于中间记录的关键字,则在中间记录的右半区继续查找。不断重复上述过程,直到查找成功,或所有查找区域无记录,查找失败为止。因此最终我们折半算法的时间复杂度为O.

2020-11-30 14:55:53 137

原创 为什么引用不能替代指针?

首先,引用 跟 指针 在作用上没有太多区别,作用都是 当遇到较大的 对象作为函数的 参数 传递时,用引用或指针可以节省内存的开销,因为他不像 赋值 传递那样,额外要创建临时变量,并且对形参的修改可以作用于实参。既然这样,引用和指针有什么区别呢?引用是一段内存(一个对象)的别名,引用的大小跟所代表的对象的大小是一样的,定义时必须初始化,并绑定其初始化对象,而指针大小则永远都是机器内存地址长度。(64位8字节,32位4字节)指针可指向nullptr,并且可以再次指向另一个对象但使用起

2020-11-03 16:42:17 1093 1

原创 《C专家编程》阅读记录

序规避误用赋值在比较式中先写常数,如: if(3 ==i),这样,如果不小心误用了赋值符号,就会报错第一章 C:穿越时空的迷雾C预处理器

2020-10-22 14:02:03 154

原创 队列实现

链表queue.h#ifndef QUEUE#define QUEUE#include "stack.h"/* 队列类型 * front: 队头指针 * rear: 队尾指针 * insert: 入队 * delete: 出队 * first: 访问队头 * is_empty: 验空 * */typedef struct q{ node_t *front; node_t *rear; void (*insert)(node_type, struct.

2020-10-21 11:17:12 97

原创 栈实现

数组取自《C专家编程》#define MAXSIZE 100int top = -1;int stack[MAXSIZE];#define pop stack[top--]#define push(s) stack[++top] = s出栈入栈如此之简洁……链表struct listNode{ int val; listNode *next; listNode(int v):val(v),next(nullptr){}};listNode *.

2020-09-14 16:05:51 78

原创 虚函数 纯虚函数

比较虚函数和纯虚函数的一些区别先上代码:#include <iostream>using namespace std;class A{public: ~A() = default; virtual void virtualFun() { cout << "A's virtualfun" << endl; }};class B{public: ~B() = default; vir.

2020-09-11 16:32:19 179

原创 独占指针 unique_ptr

unique_ptr的成员函数 release 和 reset 的区别unique_ptr<T> up;up.release() u放弃对指针的控制权,返回指针并将u置空(nullptr)up.reset() 释放u指向的对象参考:http://en.cppreference.com/w/cpp/memory/unique_ptr/releasehttp://en.cppreference.com/w/cpp/memory/unique_ptr/.

2020-09-10 17:26:37 334

原创 二叉树------路径

求一棵二叉树从根到所有叶子的路径集合 struct TreeNode { int val; TreeNode *left; TreeNode *right; TreeNode(int x) : val(x), left(NULL), right(NULL) {} }; void path(TreeNode *root,vector<vector<int> > &buf,int i) { b.

2020-09-03 15:01:59 87

原创 二叉树-----遍历(递归)

前序 中序 后序 遍历/** * struct TreeNode { * int val; * struct TreeNode *left; * struct TreeNode *right; * }; */class Solution {public: /** * * @param root TreeNode类 the root of binary tree * @return int整型vector<vector<>&gt.

2020-09-02 15:58:50 87

原创 二叉树------创建

利用前序遍历结果和中序遍历结果创建一颗二叉树原理已知前序遍历序列和中序遍历序列,可以唯一确定一颗二叉树;已知后序遍历序列和中序遍历序列,可以唯一确定一颗二叉树;已知前序遍历序列和后序遍历序列,不能确定一颗二叉树;实现输入某二叉树的前序遍历和中序遍历的结果,(输入的前序遍历和中序遍历的结果中都不含重复的数字)输出该二叉树。/** * Definition for binary tree * struct TreeNode { * int val; * TreeN.

2020-09-02 14:42:54 210

原创 uboot移植

选择芯片厂商版本的uboot进行移植学习uboot-imx-rel_imx_4.1.15_2.1.0_ga.tarNXP : I.MAX6ulluboot初次编译首先在 Ubuntu 中安装 ncurses 库,否则编译会报错,安装命令如下:sudo apt-get install libncurses5-dev修改顶层Makefile,给 ARCH 和 CROSS_COMPILE 两个赋值(r.248)ARCH=arm CROSS_COMPILE=arm-linux-gnueab.

2020-08-12 10:00:34 246

原创 make工具和makefile文件

目录make工具makefile文件make工具GNU编译器下的一个自动化编译工具安装:GCC for Windows 64 & 32 bits.设置环境变量将GNU的安装路径 (C:\mingw64\bin )添加到用户环境变量 PATH 中Windows下:make工具显示为mingw32-make.exe将其改名为make 以便使用Linux下:直接使用makefile文件make工具的执行文件Makefile规则格式目标…… : 依赖文件集合……([4制表

2020-07-29 09:50:02 133

原创 STM32延时函数

延时函数滴答定时器实现定时器滴答定时器实现虽然SysTick已经被配置为1ms中断一次的模式,但每个1ms之间SysTick的当前值寄存器是一直在计数的(每计一个数的时间是1/SytemCoreClock)我们便可以利用该机制实现微秒延时函数。可直接添加至delay.c使用//注释描述下一条语句void delay_us(uint32_t us){ __IO uint32_t currentTicks = SysTick->VAL; /* 每毫秒的滴答数 */ con

2020-06-02 14:03:47 1369

原创 IIC/SPI

通信模拟IIC模拟SPI模拟IICSDA-GPIO配置为开漏输出(可双向);void IIC_Start(void){ /*sSDA=1*/ HAL_GPIO_WritePin(sSCL_GPIO_Port,sSDA_Pin, GPIO_PIN_SET); /*sSCL=1*/ HAL_GPIO_WritePin(sSCL_GPIO_Port,sSCL_Pin,GPIO_PIN_SET); HAL_Delay(1); /*sSDA=0*/ HAL_GPIO_Wr

2020-05-25 18:50:11 250

原创 Hart协议

HART:Highway Addressable RemoteTransducer 可寻址远程传感器高速通道兼容数字通信和4~20mA电流模拟通信以1200 Hz代表逻辑“1”,2200 Hz 代表逻辑“0”,在4~20mA 电流上叠加幅度为0. 5mA的正弦调制波传输介质: 一般是双绞线,距离远时可采用屏蔽双绞线串口配置:波特率为1200bps;每个字符由11位组成:1位起始位,8位...

2019-09-17 13:52:17 5845

空空如也

空空如也

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

TA关注的人

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