自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(37)
  • 资源 (4)
  • 收藏
  • 关注

原创 C++无名命名空间

一、定义定义:无名命名空间,又称为未命名的命名空间。是指关键字namespace后紧跟花括号括起来的一系列声明语句,不需要对命名空间取名。eg:namespace { int a = 10; int get(void) { return 20; }}生命周期:无名命名空间中定义的变量拥有同静态变量一样的生命周期,在第一次使用前创建,直到程序结束才销毁。作用域:无名命名空间中定义的成员的作用域与该命名空间所在的作用域相

2022-02-01 16:28:27 3723 1

原创 C++ enum class枚举类

一、定义枚举类型:是用户定义的若干枚举常量的集合,属于用户自定义的数据类型。C++枚举包含两种:限定作用域枚举类型和不限定作用域枚举类型。定义限定作用域的枚举类型的一般形式是使用enum class关键字。此类型也是我们本文要讲解的主题:枚举类。eg:enum class open_modes{ input, output, append};二、使用1、用法对于枚举类,访问其成员需要遵循常规的作用域准则,并且成员在枚举类的作用域外是不可以被访问

2022-02-01 11:26:05 10280 4

原创 嵌入式OTA升级实现原理

目录一、简介1.1 概念1.2 优点1.3 实现原理二、MCU OTA升级2.1 制作升级包2.2 下载升级包2.3 验签升级包2.4 更新固件三、Linux OTA升级3.1 系统升级3.2 应用程序升级四、总结一、简介1.1 概念OTA:Over-the-Air Technology,即空中下载技术。OTA升级:通过OTA方式实现固件或软件的升级。只要是通过无线通信方式实现升级的,都可以叫OTA升级,比如网...

2020-09-06 10:42:54 21480 12

原创 使用memset对数组赋值

目录一、memset函数二、使用memset对char数组赋值1、清零操作2、赋为非0值操作三、使用memset对int数组赋值1、清零操作2、赋为非0值操作分析int数组赋非零值的情况如何正确给int数组赋非0值四、总结一、memset函数void *memset(void *s, int ch, size_t n);函数解释:将s中当前位置后...

2020-04-05 13:27:32 17319 3

原创 openssl库简介和编译安装

一、简介OpenSSL ,即open secure sockets layer,是一个开源的安全套接字层的密码库。包括常用的密码加解密算法、常用的密钥算法、证书管理和SSL协议。1、库的主要内容OpenSSL 库主要包含三大部分:openssl: 多用途的命令行工具,可以执行交互或批量命令。libcrypto: 加解密算法库。libssl:加密模块应用库,实现了ssl及tl...

2019-12-29 20:48:58 10032 3

原创 sqlite数据库基础知识总结

sqlite数据库作为一个使用很普遍的小型数据库,是一个实现了开源、无服务器、零配置、事务性的SQL数据库。数据库的主要作用是存储数据,同时实现用户对数据的管理。在sqlite数据库中,对用户来说存储的数据就是数据行中的数据,对数据的管理主要是对数据行的增、删、改、查询操作。数据行的数据存放在数据表,而数据表是存放在数据库文件中,这三者的关系是层层包含关系。本文主要介绍sqlite数据库的基础...

2019-11-06 10:13:15 825

原创 Linux日期时间函数

在应用程序开发过程中,经常要使用到日期时间这些参数,Linux系统中提供了相关的一些API给用户获取日期时间,这些API都放在头文件time.h中。此外,需要注意的是,所有的UNIX系统都使用同一个时间和日期的起点:格林尼治时间(GMT)1970年1月1日午夜(0点)。这是“UNIX纪元的起点”,Linux也不例外。Linux系统中所有的时间都以从UNIX纪元的起点起经过的秒数来衡量。接下...

2019-09-14 13:44:11 1864

原创 知识的提取

学习知识的目的,主要是学以致用,让学习的知识发挥作用。为何说学习知识的目的是学以致用?大部分时候我们学习知识或技能,花费了时间和精力,让这些知识存储在我们的大脑中,目的是为了在适当的环境中,从大脑中提取出这些知识应用到实际的场景中。如果一个知识是我们学习过的,而在需要的时候却不能使用这些知识让其发挥作用,那么对我们自身来说,这种知识跟我们本来就不知道是没什么区别,但我们却曾经为学习这些知识付出了时...

2019-08-18 11:32:09 1377

原创 Makefile文件简介

对于程序开发,我们经常要用make命令来编译链接生成可执行文件,如果“make”、"make all"、“make uboot”、"make uImage"等命令,也会经常使用“make clean”、“make distclean”来清除编译生成的文件。而这些命令的实现涉及到make程序和Makefile文件这些知识,在了解make程序与Makefile文件前,我们带着几个疑问去了解这些知识,...

2019-07-14 11:51:09 748

原创 NFS网络文件系统环境搭建

搭建NFS(网络文件系统),用于开发板与PC Linux之间文件传输,便于开发调试。一、网络准备由于NFS是网络文件系统,是使用网络进行通讯的,最终要实现客户端能访问服务端,所以必须先确保两者的网络是互通的。1、确保PC Linux与开发板的网络是在同一个网段内如PC Linux与开发板都连接在同一个路由器或热点。例:将PC Linux与开发板连接到同一个WiFi,分别查看...

2019-05-29 19:37:01 1629

原创 树莓派镜像(系统)烧录

一、准备1. 下载镜像文件根据需要从树莓派官网(https://www.raspberrypi.org/downloads/raspbian/)下载相应的镜像压缩包文件,分为带桌面和不带桌面版本。2. 将下载的压缩包解压,得到.img镜像文件3. 将要烧录镜像文件的SD卡格式化新的SD卡,没有进行过任何操作(存放文件之类的操作),可以不用进行格式化操作。...

2019-05-28 22:30:24 20710 2

原创 霍尔开关(霍尔传感器)

霍尔开关,属于霍尔传感器的一种,在电子电路系统中应用是比较广泛的。本文我们主要讲霍尔开关的工作原理。一、什么是霍尔开关1、理论依据在将霍尔开关的工作原理前,我们先思考一下,霍尔传感器与我们学过的霍尔效应有什么关系?霍尔传感器的物理原理是霍尔效应,是霍尔效应的一种应用。我们来看看霍尔效应:当一块通有电流的金属或半导体薄片垂直地放在磁场中时,薄片的两端就会产生电位差,这种现象就称为...

2019-05-12 11:47:17 18158 1

原创 行为的动机

面对很多生活常事,我们一般会不假思索立即做出应对的行为。而这个这个简单的过程,已经包含了我们面对一件事情的完整过程:事情的输入——>大脑的处理——>应对方法的输出——>响应事情的行为。事情的输入:事情可能是外在发生的事情,且我们与该事情有交集,比如我们的所见所闻。此外,事情还可能是我们自身内在产生的想法,比如,生物性需求(吃饭、喝水、睡觉等);大脑的处理:大脑会根据我...

2019-01-01 00:11:19 1346

原创 wpa_supplicant、wpa_cli的使用

wpa_supplicant工具包含wpa_supplicant和wpa_cli这2个程序,其中wpa_supplicant程序作为服务端在后台运行,服务wpa_cli客户端的请求,从而实现WiFi的配置连接。wpa_supplicant工具支持wep、wpa、wpa2等加密认证方式。本文接下来介绍如何使用wpa_supplicant、wpa_cli这2个程序进行WiFi的配置。一、wpa_s...

2018-12-25 20:56:23 26553 2

原创 最小Linux系统中如何实现开机自动运行程序(进程)

一、目标将交叉编译生成的可执行文件,放到最小Linux系统中,然后实现板子开机后,最小Linux系统运行起来后,自动执行可执行文件,并将可执行文件进程挂到后台运行。 二、实现1、生成目标可执行文件例:在Ubuntu系统中,创建文件“autorunning.c”,输入以下代码,保持退出。使用命令编译:arm-none-linux-gnueabi-gcc -o auto...

2018-12-16 12:07:59 4288

原创 wpa_cli中切换到热点net_work id后网络ping不通

  本文将从问题的现象、原理、解决方法几个方面来分析,使用wpa_client配置wpa_suppliant使用工具过程遇到的一个问题。一、现象板子上电后连上了一个热点,通过连接该热点后可以ping通网络。由于要切换热点,使用wpa_cli配置到新的热点,wifi模块已经连接到新的热点,但却ping不通网络。具体现象如下:1、上电后已连接的热点:linkdswlan0信息:...

2018-12-11 19:49:52 1599 1

原创 Samba的安装、配置和使用

在Linux系统中安装Samba服务,设置共享目录,window即可通过网络方式访问Linux中Samba服务设置的共享目录。本文接下来介绍Samb服务的安装、配置和使用。一、samba安装与配置1、Ubuntu安装sambasudo apt-get install samba2、修改配置文件命令:sudo vi /etc/samba/smb.conf在最后添加以下内容...

2018-11-25 15:08:24 1273

原创 Windows与Linux的文件共享方式

目录一、windows与Linux安装在同一台电脑的情况1、设置VMware共享目录。2、Linux系统安装Samba服务。3、window中安装FTP或SSH软件。二、windows与Linux不在同一台电脑的情况对于Linux项目开发,如果是使用Windows系统与Linux系统协同工作的,比如在Windows下编辑代码,在Linux编译、运行等,那么经常需要在Wind...

2018-11-25 11:28:02 2316

原创 C语言要点—— 动态内存

*malloc和free1、malloc所分配的是一块连续的内存,以字节为单位,并不带任何的类型信息。2、free用于将动态内存归还系统。void* malloc(size_t size);void free(void* pointer);3、malloc实际分配的内存可能会比请求的稍微多一点,但是不能依赖于编译器的这个行为。4、当请求的动态内存无法满足时,malloc返回NULL。5、当free...

2018-03-18 15:50:33 422

原创 C语言要点—— 指针、数组

*指针的本质1、指针在本质上也是一个变量。2、指针用于保存内存地址的值。3、指针需要占用一定的内存空间,不同类型的指针占用的内存空间大小相同。* *号的意义1、在指针声明时,*号表示所声明的变量为指针。2、在指针使用时,*号表示取指针所指向的内存空间中的值。*传值调用与传址调用1、函数调用的本质是将实参值复制到形参。2、传值调用中实参、形参为各自函数的局部变量,则形参在函数内数值变化不会影响外部...

2018-03-18 11:21:48 580

原创 C语言要点—— 运算符

一、“||""&&"的短路规则1、||从左向右开始计算,当遇到为真的条件时停止计算,整个表达式为真,所有条件为假时表达式为假。2、&&从左向右开始计算,当遇到为假的条件时停止计算,整个表达式为假,所有条件为真时表达式才为真。二、“!”运算符C语言中的逻辑符“!”只认得0,只知道见了0就返回1,因此当其作用的值不是0时,其结果为0。eg:int main(){prin...

2018-03-16 09:23:06 323

原创 C语言要点—— 数据类型、关键字

*数据类型与变量1、数据类型可以理解为固定内存大小的别名。2、数据类型是创建变量的模子。eg,char是1个byte内存的别名,short int是2个byte内存的别名,int是4个byte内存的别名.3、变量是一段实际连续存储空间的别名。程序中通过变量来申请并命名存储空间,通过变量的名字可以使用存储空间。*auto,static,register分析1、auto是c语言中局部变量的默认属性,编...

2018-03-16 09:21:35 2086

翻译 nRF51系列的Gazell协议

介绍:Gazell是一种协议,它可以在一个主机和多达8个设备的星型网络拓扑结构中建立一个强大的无线链路。它的设计目的是减少功率敏感的无线桌面产品的功耗,也适用于一系列其他的无线应用程序。为了尽量减少功率敏感的外围设备的功耗,Gazell使用中央枢纽(主机端),其更放松的电源限制使连接打开,而外围设备可以休眠和节省电力消耗。关于这方面一个典型的例子:一个无线鼠标与一个USB接口,插入到计算机。Gaz...

2018-02-23 17:10:42 6135

原创 && || 与或 逻辑运算符的短路运算

关于&&和||的短路运算问题,我们主要关注三个问题:什么是&&和||的短路运算?有什么用?怎么用?问题一:什么是&&和||的短路运算?1、&&和||属于逻辑运算符。关于&&和||的表达式的运算规则是这样的:表达式1 || 表达式2,只要任意表达式为true,则整个表达式的运算结果为true。表达式1 &&amp...

2018-02-22 10:52:18 72764 10

原创 部分实践方法的总结

“阅读、思考、总结、应用”这几个环节是让知识创造价值,提升自我能力的方法。在此,将过往一年部分阅读、思考、应用的实践方法总结出来。内容主要是关于一些方法的整理。一、二元对立问题生活中经常会遇到要区别好与坏、对与错、合理与不合理等一些对立的问题,事物是客观存在的,好坏、对错等是人为意愿加入的,人为对事物进行划分的。所以人为对事物进行划分的标准就是区分事物的分类,好坏、对错都是依附于特定的标准,事物在...

2018-02-18 10:28:46 2218

原创 聊天中批判性思维的应用

  批判性思维,是对接收到的信息进行分析推理、提问思考,辨别其中合理与非合理的内容。而非对囫囵吞枣地全盘接收信息。 社交,是人必不可少的活动,聊天又是社交中最常见的方式之一。但是在聊天时,是不是别人说的话就是错的?我们说的话就是对的?对与错的评判标准是什么。我们可以将批判性思维应用到社交聊天中,帮助我们更清醒、更有条理(理清聊天内容的框架)地交流,思考交流过程中涉及到的信息、表达方式的合理性...

2018-02-15 12:26:16 1336

原创 单片机MCU软硬件联调基本方法

做MCU软件开发,离不开硬件,软硬件调试的技能也是必须掌握的,现在介绍一些软硬件联调的基本方法。软硬件联调常使用的方法有 :分支思想、分层法、对比法。这些方法不是只属于软硬件联调可用,在软件开发过程也是常用方法,更进一步说是解决问题的常用方法和思想,解决问题是一个概述,具体表现在生活和工作过程遇到的各种各样的具体问题。在进行软硬件调试之前,需要准备和具备的能力:稳压电源、万用表、示波器,以

2017-11-12 10:35:10 13471

原创 单片机MCU学习方法总结

根据个人学习MCU的经验,总结关于MCU的学习方法。本文的主题结构如图:以下按照主题结构图的内容顺序分析。一、目标与计划在开始学习MCU之前,我们先思考以下的问题。整个MCU学习过程下来,很多时候是在对以下问题进行回答。思考:原因:为什么要学MCU?目标:达到什么水平?计划:怎么达到这个水平(怎么学)?用多长时间?1、原因:视个人而定①、为学

2017-07-08 22:31:46 5235 1

原创 Cortex-M3内核简析

MCU的主要组成有:内核、储存器、外设。大部分刚接触MCU的人员一般是从关注外设的使用开始,但对于要深入理解MCU工作原理,了解MCU的内核、储存器这两部分内容是很有必要的。本文将以Cortex-M3内核为例对MCU的内核做一个简要分析。主要关注以下三个问题:问题一、定义:Cortex-M3内核是什么?问题二、结构:Cortex-M3架构是怎么样的?问题三、功能:Cortex-M3架构

2017-07-02 11:01:37 26941 1

原创 STM32的位带操作分析

8051单片机可以直接对某一位IO进行读写操作,而Cortex-M3的位带操作是8051位寻址区的加强版。使用位带操作后,可以使用普通的加载/存储指令对单一的比特进行读写操作。一、相关概念。位带区:支持位带操作的地址区。位带别名区:对别名地址的访问最终作用到位带区的访问上。位带别名区对位带区的访问有个地址映射过程。二、位带操作的原理位带操作的最终目的是想对位带区的比特位

2017-06-25 22:02:46 4600 2

原创 《清醒思考的艺术》

《清醒思考的艺术》书中介绍了各种常见的认知误区和偏差。1、幸存偏误概念:由于日常生活中更容易看到成功、看不到失败(信息的获得性偏差),你会系统性地高估成功的希望。例子:我们总是听到成功者的故事,却认识不到这些成功者的成功概率有多小。摄影师、企业家、艺术家、运动员、建筑师等等一样。原因:信息的获得性偏差,由于媒体本身性质的问题,媒体报道的新闻大部分是成功者的信息。导致我们被动接受

2017-06-24 11:47:42 2906

原创 STM32时钟树分析

对于刚接触STM32的时钟树,对时钟树的理解,可以重点先思考两个问题:1、时钟从哪里来:时钟源。2、时钟怎么供给STM32的系统工作:时钟的流向(输入——>处理——>输出)下面以STM32F4系列的时钟树为例,分析以上两个问题。以下图是STM32F4系列的时钟树。问题一、时钟从哪里来:时钟源。STM32的时钟源主要有:内部时钟、外部时钟、锁相环倍

2017-06-18 16:32:58 13907 1

原创 逗号运算符的使用

在C语言中,逗号可以作为运算符使用。以下主要介绍一下逗号运算符的作用及特征。作用:用于连接多个(两个及两个以上)表达式。格式:表达式1,表达式2,表达式3,....表达式n;eg:b=++a,4-2,a+5;用途:常见的应用是用逗号运算符连接多个表达式,将多个表达式运算后,将最后一个表达式的运算结果赋值给变量。逗号运算符的结合性决定了是将多个表达式中最后一个

2017-04-04 23:04:06 8698 2

原创 扔硬币概率

问题:连续5次扔一枚均匀的硬币,在以下3种结果中,哪种结果出现的可能性最大,请做出选择:A、正-反-正-反-正B、正-正-反-正-正C、正-正-反-反-反-------------------------------------------------------------------------------------------------------------------

2017-02-18 10:08:57 13822

原创 《欲望之源》(《MEAN GENES》)

《欲望之源》(《MEAN GENES》),作者:特里▪伯纳姆,杰伊▪费伦说明:文章内容主要来自书本,加上本人阅读后的一些思考,可能部分观点表达的意思受到本人之前读过的其它资料的影响,如有知道,请联系我补充出处。这是一本进化心理学的书籍,主要讲基因的本质就是生存繁殖的目的,然后围绕基因如何达到尽可能的生存繁殖(贪婪、冒险、合作、配偶、美丽),到达基本的生存繁殖后如何扩大生存繁殖(出轨),

2017-01-26 22:15:00 2901

原创 荒野过河

一道有趣的题:5个男人荒野求生,没有衣服也不会做工具,他们要过一条只吃丁丁的食丁鱼的河,5个男人只有一个可以保护用的杯子,但他们都安全的过了河,请问他们用了什么方法?-------------------------------------------------------------------------------------------------------------

2017-01-18 12:57:13 952

原创 enum枚举变量所占内存大小

既然,struct结构体变量大小等于结构体中的各个成员变量所占内存大小总和,union共用体变量大小等于共用体结构中占用内存最大的成员的内存大小。那么enum枚举变量所占内存大小怎么计算?首先先明白概念:数据类型,指固定内存大小的别名,如int类型为4个字节内存。变量,一段连续存储空间的别名。这段连续存储空间的大小,即变量的大小,由定义该变量的数据类型决定,即该数据类型代表

2017-01-12 23:57:38 63214 4

《Makefile文件简介》代码.zip

文章https://blog.csdn.net/bulebin/article/details/95800720的示例代码。

2019-07-14

C语言要点—— 动态内存

关于C语言中的动态内存分配使用,注意事项。存储的类型,分别存储那些变量。野指针的定义,野指针的由来,如何预防野指针的产生。

2018-03-18

单片机MCU学习方法

关于单片机MCU学习方法的个人总结

2017-07-09

单片机MCU学习方法思维导图

关于单片机MCU学习方法的个人总结

2017-07-09

空空如也

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

TA关注的人

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