自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 GDB调试

2020-12-13 14:41:17 133

原创 什么是Makefile

预定义变量就是已经定义过的变量: AR就是前面进行静态文件库制作需要的命令 ar; CC是C编译器的名字; $^ $< $a这三个只能在命令中使用,不能在依赖和目标文件中使用。Makefile1: app:main.c add.c div.c head.h mult.c sub.c gcc main.c add.c div.c head.h mult.c sub.c -o appMakefile2: app:main.o add.o div.o ...

2020-12-13 12:47:47 256

原创 静态库和动态库

什么是库文件 1. 库文件是计算机上的一类文件,可以简单的把库文件看成一种代码的仓库,它提供给使用者一些可以直接拿来用的变量,函数或者类。2. 库是一种特殊的程序,编写库的程序和编写一般的程序区别不大,只是库不能单独运行。3. 库文件有两种:静态库和动态库(共享库),区别是:静态库在程序的链接阶段被复制到了程序中;动态库在链接的阶段没有被复制到程序中,4. 而是程序在运行时由系统动态加载到内存中供程序调用。5. 库的好处:1.代码保密,2.方便部署和分发 ...

2020-12-12 22:03:35 319

原创 EXIT外设

1. 什么是EXTI2. external interrupt / event controller3. 外部的外设都是通过引脚和单片机进行通讯的,引脚传输的都是0和1的数据,那么将这些0和1组成的数据变成中断和事件的话,就需要一个控制4. 器,这个控制器就是EXTI外设。5. 这个中断传给NVIC,让cpu做出响应,事件的话在内部体现出来就是脉冲,生成的脉冲给DAC,TIM定时器来触发启动。EXTI 总共有 23 个中断/事件线,这些产生的中断和事件分别由下面的这些外设产生:1. 前

2020-12-04 22:49:05 251

原创 中断

一般情况下将异常也看成中断:1. 中断分为 系统异常 和 外设中断2. 这些都可以从数据手册可查3. 中断有一个中断向量表,里面存放着发生中断后需要做出处理的中断函数的指针,然后通过这个指针去寻找这个函数的实现。4. 使用的ST32F429的芯片的中断向量表是放在flash里面的,这些存放中断函数指针的中断向量表的地址是从0x0000000开始的,其实flash映5. 射的地址是有其他地址的,但是这里有重新映射了,就好比是地址偏移。6. NVIC 是嵌套向量中断控制器,控制着整个芯片中断相关的

2020-12-04 20:39:16 128

原创 GPIO和引脚的关系

GPIO和引脚之间的关系就是包含的关系:1. 对于引脚一般可以分为:电源引脚,晶振IO,下载IO,BOOT IO, 复位IO ,以及GPIO.2. 除了GPIO的 这些引脚一般在硬件上都是固定好的,无法进行编辑的。3. 所以引脚包括了GPIO. 4. 具体的引脚的功能和信息可以在单片机相关的数据手册上去查找。(datesheet)...

2020-12-01 20:05:13 3117

原创 二维数组

定义二维数组: a[3][4];意思就是有3个一维数组,每个一维数组有四个字符;相当于三行四列。 //注意这里用的是从第0行开始,对应数组的下标 二维数组的a[0]代表的是第0行的一维数组,a[1]代表的是第1行的一维数组... a[0][1],第0行,第1列的数据,a[1][2]第1行,第二列的数据 //二维数组的类型 例如int a[3][4]的数组类型就是:int [3][4] sizeof(a) = sizeof(int [3][4]) 1 #include <

2020-09-23 14:59:39 11327 1

原创 网络编程1

1 1. 网络基础概念 2 1.1 协议 3 概念:协议事先约定好,大家共同遵守的一组规则,如交通信号灯. 4 从应..

2020-09-09 18:08:06 102

原创 线程同步

线程同步的概念:线程同步,指一个线程发出某一功能调用时,在没有得到结果之前,该调用不返回。同时其它线程为保证数据一致性,不能调用该功能。 线程同步的例子: 创建两个线程,让两个线程共享一个全局变量int number,然后让每个线程数5000次数,看最后打印出这个number值是多少? 1 //线程同步 2 #include <pthread.h> 3 #include <stdlib.h> 4 #include <stdio.h> 5

2020-09-06 10:04:55 77

原创 STL初识

1.STL就是标准模板库;2.从广义上分:算法(algorithm),容器(container),迭代器(iterator),容器和算法之间是通过迭代器无缝连接的;3.STL代码几乎都采用了模板类或者模板函数; STL六大组件简介:1.容器:各种数据结构,用来存放数据,STL容器是一种class template2.算法:各种常用的算法3.迭代器:扮演了容器和算法之间的胶合剂,共有五种类型,从实现角度来看,迭代器是一种将operator*,operator->,operator++,op

2020-08-18 18:48:27 100

原创 C++下的const增强

对于const在cpp里面和c下面的区别:1.const做全局变量的时候,c++和c都是修改失败的; 2.对于const做局部变量的话,在c++里面,指针间接修改是不会改变原先的值的,但是在c语言下是可以改变原先的值的; 是因为,在c++下面语法会出现一个temp的变量; c++的环境下: 1 #include <iostream> 2 using namespace std; 3 4 int main (){ 5 6 const int

2020-08-09 14:54:08 148

原创 Linux内核源码中goto语句经典使用模板

需求:启动一个程序,分配三块内存,只要有一块内存分配失 败,程序结束,并且把之前分配的内存释放归还给Linux操作系统。 1 #include <stdio.h> 2 #include <stdlib.h> 3 4 int main (void){ 5 int a ; 6 7 //分配第一块内存 8 int * p1 = (int *) malloc (sizeof(int)); 9

2020-08-07 19:46:32 438

原创 数据类型的转换

数据类型的转换分两种:隐式转换和强制转换隐式转换的特点:如果表达式中不同数字的数据类型不同,gcc编译器先将不同的数据类型转换成相同的数据类型隐式转换分三种:1.隐式转换中必须把占内存小的类型转换成占内容大的类型; 例如: int a = 0,c; //各占四个字节 char b = 2; //占一个字节 c = a + b; //gcc会先将char类型的转换成int类型的后再去计算2.如果既有整形数据类型还有浮点数据类型,gcc编译器自动将整形数据类型转换成浮点类型;

2020-08-05 18:37:29 194

原创 负数的十进制和二进制转换

1.首先将十进制负数转换成相反数;2.计算相反数的二进制;3.二进制取反后再加一就得到负数的二进制;例如: -14 => 14 => 0000 1110 => 1111 0001 => 1111 0010明确: 有符号类型的数字才有符号位; 二进制的最左边是符号位; 0表示正数,1代表负数; 切记:讨论符号位的前提是必须确定数据类型;1.确定好数据类型为二进制负数;2.先将二进制取反加1;3.将二进制转换成十进制;4.然后将十进制取相反数;例如:ch

2020-08-05 11:04:28 3710

原创 回滚问题

回滚就是超过了范围,回到重新的地方 /*注意占位符*/ 1 #include <stdio.h> 2 3 int main (void) 4 { 5 //char: -128 ~ 127 6 printf("%hhd\n",-128); 7 printf("%hhd\n",127); 8 9 printf("%hhd\n",128);//回滚 (128-128)+ -128 = -128 10 pr..

2020-08-05 09:52:48 156

原创 数据类型

1.一般来说,unsigned int 和 unsigned long 都是4字节的;切记: unsigned int和unsigned long对于gcc编译器来说是不一样的! 对于32/64位的系统,unsigned int都是4字节的; 对于64位系统,unsigned long是8字节的; 对于32位系统,unsigned long是4字节的;2.char类型就是字符类型,但是到底内部存储的还是数字,只是不通表示而已;...

2020-08-04 21:33:01 295

原创 gcc编译源文件的流程三个步骤

gcc的命令语法格式:gcc 选项 源文件两个重要的选项:-o:输出,后面跟上一个输出的新文件;-E:预处理选项;-c:只编译不链接;1.预处理 gcc将头文件包含的内容全部拷贝到源文件中; 对应的选项 -E 例如 gcc -E hello.c -o hello.i; 2.编译 只编译不链接; 对应的选项 -c 例如 gcc -c hello.i -o hello.o; gcc -c hello.c -o hel

2020-08-04 20:42:11 510

原创 vim的基本知识

1.vim的三种模式:可视模式,编辑模式,命令模式2.vim常用的命令 %s/老信息/新信息/g 字符串替换的命令 vs 文件名 左右分屏 sp 文件名 上下分屏 注意:屏幕之间的切换用 ctl + ww3.vim常用的*可视模式*下的快捷键 hjkl 上下左右 行选中:shift+v进入可视模式然后使用方向键选中行 列选中:ctr+v进入可视模式然后使用方向键选中列 选中某个单词:先按住v,然后左右选中 复制:y 粘贴:p 撤销:u 撤销又反悔:ct

2020-08-04 18:19:38 244

原创 Linux的一些命令

**1.echo命令: 打印命令,一般配合 ‘>’ 或者 “>>” 格式:echo 打印的信息 例如:echo 我是大神 格式:echo 打印信息 > 文件名 //清空在添加 echo 打印信息 > >文件名 //直接在文末添加**2.find查找文件命令 格式:find 路径 -name 文件名 例如:find /usr/include -name stdio.h3.grep:在文件中搜索字符串信息命令 格式:

2020-08-04 17:21:00 89

原创 主目录和根目录

主目录和根目录的区别:根目录:就是相当于windows里面的c盘,是所有文件的根,用 / 表示;主目录(家目录):就是根目录下面的home目录下,一般用 ~ 表示,也是/home/;此目录是拿来存放用户的。比如Linux系统下有个用户lisi,他的主目录就是/home/lisi;...

2020-08-04 13:05:37 8510

原创 C语言的一些优先级

遇见多的一些优先级:逻辑非!按位取反~sizeof乘除(左到右)加减(左到右)左移右移(左到右)按位与按位异或按位或

2020-08-01 17:47:31 66

原创 C语言的除法和取余问题

除法 / 的运算当中如果被除数和除数都是int类型的,那么对应的商也是int类型的,会舍弃掉小数的部分;如果被除数和除数当中有小数,也就是浮点类型的,那么对应的商就是浮点类型;15/3 = 5;12/8 = 1;16/5.0 = 3.00000;取余的话,运算对象必须是整数的,结果是整除后的余数,其余数的符号和被除数相同;13 % 3 = 1;13 % -3 = 1;-13 % 3 = -1;...

2020-08-01 17:27:37 9143

原创 关于安装交叉编译工具链的时候出现的问题

查阅了相关的资料表示这是32位和64位不兼容的问题,遂去查阅文献,一般出现的解释是:当我安装完还是出现那个问题,于是继续找通过https://blog.csdn.net/zhengqijun_/article/details/60962128这篇文章,安装32位库因为提示其他的软件包可取代他,因此安排它盘完之后,出现下面的情况:...

2019-12-19 13:04:45 458

空空如也

空空如也

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

TA关注的人

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