自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 C/C++——联合体的内存模型和应用

联合体和结构体的区别联合体和结构体都是可以存储不同类型数据的构造数据类型,结构体和共用体的区别在于:结构体的各个成员会占用不同的内存,互相之间没有影响;而共用体的所有成员占用同一段内存,修改一个成员会影响其余所有成员。结构体占用的内存大于等于所有成员占用的内存的总和(成员之间可能会存在缝隙,位域知识),共用体占用的内存等于最长的成员占用的内存。共用体使用了内存覆盖技术,同一时刻只能保存一个成员的值,如果对新的成员赋值,就会把原来成员的值覆盖掉。大端模式和小端模式大端模式(Big-endian..

2021-10-25 16:02:36 343

原创 C/C++——小数在内存中的存储方式

小数的存储方式分为定点数存储和浮点数存储,但是根据IEEE 754 标准,现在用的编译器都是浮点数存储的。首先所有的数据都要先转化成二进制数才能进行存储,但是在转换的过程中会遇到一个问题,小数部分转换成二进制使用“乘二取整法”(就是不断乘以 2,直到小数部分为 0),一个有限位数的小数并不一定能转换成有限位数的二进制,只有末位是 5 的小数才有可能转换成有限位数的二进制,其它的小数都不行。这就造成了转化出来的截取的二进制小数最后一位精度是不确定的。定点数存储,即小数点固定。用4个字节(32位)来存储无

2021-10-25 14:56:57 2537

原创 C/C++——位域的使用

内容先欠着

2021-10-25 14:42:28 1450

原创 C/C++——整数在内存中的存储方式

整数在内存中的存储方式就一句话**在计算机内存中,整数一律采用补码的形式来存储。当读取整数时要采用逆向的转换,也就是将补码转换为原码。**所以在有符号数和无符号数之间相互转换的时候会出现一些问题。下面会举例说明。简要说介绍一下原码、反码、补码:原码:将一个整数转换成二进制形式,就是其原码。反码:对于正数,它的反码就是其原码(原码和反码相同);负数的反码是将原码中除符号位以外的所有位(数值位)取反。补码:对于正数,它的补码就是其原码(原码、反码、补码都相同);负数的补码是其反码加 1。举个例子,

2021-10-24 18:47:07 2720 1

原创 Ubuntu下如何更新python解释器版本

亲测有效1、先update一下sudo apt update2、安装相应的依赖库sudo apt-get install zlib1g-dev libbz2-dev libssl-dev libncurses5-dev libsqlite3-dev libreadline-dev tk-dev libgdbm-dev libdb-dev libpcap-dev xz-utils libexpat1-dev liblzma-dev libffi-dev libc6-dev3、去官网下载你想

2021-10-19 17:48:56 1520 1

原创 Makefile学习笔记(4)—— BSP工程管理实验

写在前面的话:关于Makefile学习笔记系列的文章,是我正在学习的正点原子的阿尔法开发板的内容,所有例程源码均来自正点原子的例程,写这个文章的目的是为了学习Makefile。Makefile代码摘自【正点原子】I.MX6U嵌入式Linux驱动开发指南此节设计到工程目录的管理,makefile中添加了很多文件的路径,工程目录结构如下Makefile代码CROSS_COMPILE ?= arm-linux-gnueabihf-TARGET ?= bspCC := $(CRO

2021-09-23 20:44:04 259

原创 Makefile学习笔记(3)—— 官方SDK移植实验

写在前面的话:关于Makefile学习笔记系列的文章,是我正在学习的正点原子的阿尔法开发板的内容,所有例程源码均来自正点原子的例程,写这个文章的目的是为了学习Makefile。Makefile代码摘自【正点原子】I.MX6U嵌入式Linux驱动开发指南Makefile代码CROSS_COMPILE ?= arm-linux-gnueabihf-NAME ?= ledcCC := $(CROSS_COMPILE)gccLD := $(CROSS_COMPILE)ldO

2021-09-23 19:03:19 220

原创 Makefile学习笔记(2)—— C语言LED灯实验

写在前面的话:关于Makefile学习笔记系列的文章,是我正在学习的正点原子的阿尔法开发板的内容,所有例程源码均来自正点原子的例程,写这个文章的目的是为了学习Makefile。Makefile代码摘自【正点原子】I.MX6U嵌入式Linux驱动开发指南Makefile代码objs := start.o main.oledc.bin:$(objs) arm-linux-gnueabihf-ld -Timx6ul.lds -o ledc.elf $^ arm-linux-gnueabihf-o

2021-09-22 21:48:42 353

原创 Makefile学习笔记(1)—— 汇编LED灯实验

写在前面的话:关于Makefile学习笔记系列的文章,是我正在学习的正点原子的阿尔法开发板的内容,所有例程源码均来自正点原子的例程,写这个文章的目的是为了学习Makefile。Makefile代码摘自【正点原子】I.MX6U嵌入式Linux驱动开发指南 Makefile代码led.bin:led.s arm-linux-gnueabihf-gcc -g -c led.s -o led.o arm-linux-gnueabihf-ld -Ttext 0X87800000 led.o -o led

2021-09-22 20:18:06 232

原创 FileZilla直接安装可能会遇到的问题

正点原子IMX6ULL用FTP共享文件,用FileZilla做客户端时,直接安装可能会遇到这个问题,笔者找了一下,网上基本没有这个问题,原子的论坛上也没有相关帖子。具体如下,附上解决方法这个问题说的是可能没有权限,但是以管理员身份运行同样不行,后来我发现了这个有个通知,点进去看就是window的防护墙的问题。以下是解决方法,按照步骤去设置,就可以正常安装了...

2021-07-29 22:44:03 1044

转载 C++核心编程——内存分区模型

1 内存分区模型C++程序在执行时,将内存大方向划分为4个区域代码区:存放函数体的二进制代码,由操作系统进行管理的全局区:存放全局变量和静态变量以及常量栈区:由编译器自动分配释放, 存放函数的参数值,局部变量等堆区:由程序员分配和释放,若程序员不释放,程序结束时由操作系统回收内存四区意义:不同区域存放的数据,赋予不同的生命周期, 给我们更大的灵活编程。1.1 程序运行前​ 在程序编译后,生成了.exe可执行程序,未执行该程序前分为两个区域。​ 代码区:​ 存放 CPU 执行的机器

2021-05-20 15:31:24 69

原创 C++核心编程——const修饰指针

指针变量所占内存空间由操作系统决定32位操作系统sizeof(int *)=4字节 所有类型都是4字节64位操作系统sizeof(int *)=8字节 所有类型都是8字节NULL(0)用于给指针赋初值,但不可以访问,0-255的内存编号是系统占用的,因此不可以访问。野指针:指针变量指向非法内存空间(系统占用的空间,用户不具有权限访问)。const修饰指针1.常量指针:指针指向可以修改,指向的值不可以修改const int * p=&a; p=&b; 可以修

2021-05-10 20:04:10 66

原创 DS18B20传感器学习问题总结

总的来说,DS18B20学习还是比较简单,毕竟只有3根线嘛,一根信号线。但也就是因为只有1根信号线,对时序要求特别高。本来想要自己按照着时序写,初始化函数和读写函数,但是初始化那个时序,不太好写呀,也有可能是因为我用的是51单片机,延时并不精确,不太好控制时序,导致初始化失败,单片机一直检测不到DS18B20的存在,如果用32的话,延时更准确,初始化应该比较容易成功,最后我也是尝试了各个商家给的代码,改了改,可算是成功了。上面还是总结了一点,就是线越少,时序越不好写,之前写i2c的时序也遇到过类似的问.

2021-02-12 13:14:37 951

原创 LCD1602的学习与理解

LCD1602的学习与理解文章目录LCD1602的学习与理解一、LCD1602知识体系的结构二、初始化程序# 前言看过很多博主的文章,很多都讲得不是很清楚,很可能的原因就是,这些博主在写文章的时候,认为你有一定的基础认知了,才来看的。其实,大部分来找资料的不是小白就是没怎么学明白,脑袋一团浆糊才来找资料的人,结果,看了一些博主的文章,不但没看明白,反而脑袋里又多了一段浆糊。下面我就自己的学习,整理了一下,该怎么去学习和理解LCD1602。一、LCD1602知识体系的结构先看一张我画的整个L

2021-01-18 14:50:57 7524 2

原创 stm32——基于串口控制的双LED

总体思路通过串口输入数据到单片机,单片机判断串口数据中的关键字,然后判定是哪一种模式(或者根据中断按键输入改变的模式)再去对应的模式实现相应的功能整个程序分为两个部分,程序的轮询和中断两部分中断部分包括定时器中断,串口中断,外部中断定时器中断:LED2利用定时器进行延时,中断中执行相应的LED2的操作串口中断:接收PC向单片机发送的数据。外部中断:判断按键状态,改变MODE的值轮询部分数据识别:对串口中断中的数据识别,判定模式数据输出:将可选MODE输出到串口,方便用户在PC机上查看

2020-12-30 19:15:58 1696 1

原创 stm32学习笔记——GPIO_init函数值传递

GPIO_init函数配置void GPIO_init(void){ GPIO_InitTypeDef GPIO_InitStruct; //定义初始化结构体 RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA,ENABLE); //使能GPIOA时钟 GPIO_InitStruct.GPIO_Mode=GPIO_Mode_Out_PP; //配置模式 GPIO_InitStruct.GPIO_Pin

2020-12-21 13:03:10 727 2

原创 stm32学习笔记——基本的地址操作

一、stm32的存储器一共4G大小,地址范围0x0000 0000到0xFFFF FFFF,分成8个块(Block0~Block7),每块大小为512M。其中片上外设地址(0x4000 0000)-(0x5FFFFFFF)一共有3条总线:APB1、APB2、AHB。总线名称总线基地址APB10x4000 0000APB20x4001 0000AHB0x4001 8000APB1、APB2和AHB都是在外设地址(0x4000 0000)偏移,分别偏移0

2020-12-21 12:51:48 8542 5

原创 学习笔记——stm32串口中断函数的逻辑理解

这片文章主要是讲解原子给的代码里面的串口中断的中断函数,前面是我个人的学习路径。关于stm32串口的学习,主要分为以下几个点1.USART的功能和内部结构。功能包括同步、异步模式、双工通信、半工通信等内部结构,参考这张图片,去把各个部分了解清楚就差不多了。2.USART的相关寄存器,看一看有个映像就可以了,主要了解一下这些寄存器对应上面的图,设置哪一部分的就ok了。3.USART的收发格式,波特率的设置,了解硬件流控制。4.USART的中断请求与模式配置,这个比较重要,要认真看一下,因为你

2020-12-10 22:04:51 15871 18

原创 stm32学习之路,方法很重要

学习stm32已经一个月时间了,可算是入门了。相信很多人跟我一样,刚开始学的时候会遇到很多问题,以及对stm32里面众多寄存器的恐惧。要利用stm32官方给的固件库开发,少不了的还是要对寄存器有一定的了解。下面我就谈谈我的入门之路吧。刚开始接触到的时候,还是看原子的视频,但是那个视频就想大型连续剧一样,一看时长就让人没什么欲望学下去了,而且,前面有有两三个小时都是都是些芯片的基本的介绍和选型手册的介绍,其实刚开始学,没必要了解这么多,后面学习有关功能的使用再去了解,就自然能看懂那些手册了,所以原子的视频

2020-12-04 00:09:52 2465 4

原创 汇编源程序在DOSBOX系统下编译连接的过程

首先要知道的是,我们写的程序叫做源程序而操作系统能识别的是机器码,所以就需要把我们写的源程序转变为一个可执行文件(.exe文件)这个笔记主要是记录怎么在DOSBOX中转换的。1.先随便写点简单的代码,保存起来assume cs: abcabc segment mov ax,2 mov cx,11s: add ax,ax loop s mov ax,4c00H int 21Habc endsend我把这个源文件的名字命名成了P4-1.asm,这

2020-11-07 18:04:00 1313

原创 DOSBOX中debug常用指令的使用

仅作为个人学习笔记挂在文件这些操作就不说了吧,一张图就够了进入虚拟c盘,输入debug。接下来先了解一下常用的一些debug中的命令。(命令不区分大小写)一、查看、修改CPU中寄存器的内容:R命令。1.直接输入r,查看寄存器中的内容:2.改变寄存器中的内容:可以观察到ax中的内容由0000改变成了ab23。二、查看内存中的内容:D命令。1.直接输入d,可以查看预设地址内存处的128个字节的内容:输入r查看的内容中最下面一行就是当前所在的地址,即073f:0100,再输入d查看的就

2020-10-22 21:06:00 17300 1

原创 arduino中断函数的学习——定时中断(MsTimer2)

1、定时中断arduino定时器(MsTimer2)学习通过一段代码讲解来学习吧#include<MsTimer2.h> //MsTimer2库int a; //定义一个全局变量,将在被调用的中断函数中使用void fals(){ //中断函数 static int i=0; //定义的一个静态变量,每次进入中断时,i保留上一次的值 if(i%2==0){ //通过i来改变a的值,用a来改变pin 3 的电平 a=0; }

2020-09-17 22:36:35 11828

空空如也

空空如也

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

TA关注的人

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