自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

原创 物联网-移柯L206模块TCP开发(基于STM32+AT命令)

最近一直在做2g模块联网的项目,用到了移柯L206 2G模块,今天就简单讲一下移柯L206 2G模块基于STM32+AT命令开发TCP联网的过程,参考文档:移柯L206 TCPIP开发流程说明V1.1想要实现模块联网,首先需要配置STM32串口,代码如下:#include "delay.h"#include "iot.h"#include "stdarg.h" #includ...

2019-01-20 21:08:37 2013 2

原创 物联网-移远M26模块OpenCPU开发第3讲(看门狗)

之前在物联网-移远M26模块OpenCPU开发第1讲中提到过需要给外部看门狗芯片喂狗才能正常工作,阅读过的读者应该知道,我是通过周期性的控制M26的一个GPIO引脚电平变化来实现喂狗的。关于其硬件参考设计如下图: 其实,移远M26 OpenCPU自带看门狗管理器,可以使用其内部看门狗管理器来进行喂狗,软件实现的原理如下图:除了执行用户应用期间的喂狗,还可以在芯片启动时和远程...

2018-12-23 13:23:00 3410

原创 物联网-移远M26模块OpenCPU开发第2讲(FLASH处理)

最近有个项目,需要频繁的操作移远M26的内部flash。众所周知,flash的擦写次数为10W次,超过这个次数后flash就没有用了。这个项目需要频繁的对其进行写操作,要想设备工作3~5年,10W明显不够用呀。通过百度和谷歌查找解决办法,找到一个“平衡磨损算法”,大体思想就是将读写操作平均在每一块FLASH上。参见Leeee的博客:Flash存储器磨损均衡原理及实现。当然了只是理论知识,没有具...

2018-12-23 11:13:40 2331

原创 关于移植jSON编译时报错sbrkr.c:(.text+0xc): undefined reference to `_sbrk'处理

最近有个项目需要用到jSON函数,在移植了jSON后编译报错如下:sbrkr.c:(.text+0xc): undefined reference to `_sbrk'。通过百度查询知道原来是GCC编译器不支持malloc、free、memcpy、strlen等函数导致的,正常在嵌入式系统开发过程中都会遇到这个问题。正好这个项目是使用移远M26模块的OpenCPU开发的,好巧不巧的我就遇到...

2018-12-15 13:37:58 2389 1

原创 STM32f407与STM32F103 串口采用DMA收发数据配置方法的异同

最近有个项目需要用到STM32F407ZET6这款芯片,其中有一个串口收发数据的应用。因为之前有用过STMF32F103ZET6通过DMA收发数据的方案,所以我打算移植之前的代码实现这个功能,STM32F103的DMA相关介绍参见STM32F103 DMA介绍之前项目使用的代码如下:/***************************************************...

2018-12-09 20:48:33 4398 8

原创 JAVA学习之类与对象例题分享(两点确定直线并进行相关操作)

最近在自学JAVA,学到类与对象章节,分享一个自我感觉还可以的例题答案,自己编写的,发出来希望大神们知道一二。源程序如下:package Line_Test;public class Line_Test { public static void main(String[] args) { // TODO Auto-generated method stub // 线段测...

2018-11-27 22:52:39 488

原创 物联网-移远M26模块MQTT开发(AT命令)

MQTT(Message Queuing Telemetry Transport,消息队列遥测传输)是IBM开发的一个即时通讯协议,有可能成为物联网的重要组成部分。该协议支持所有平台,几乎可以把所有联网物品和外部连接起来,被用来当做传感器和制动器(比如通过Twitter让房屋联网)的通信协议。MQTT协议是为大量计算能力有限,且工作在低带宽、不可靠的网络的远程传感器和控制设备通讯而设计的协议,...

2018-11-27 22:31:15 9715 3

原创 物联网-移远M26模块OpenCPU开发第1讲

心心恋恋的基于移远M26模块设计的用于开发OpenCPU功能的板子终于完成,废话少说,直接上图:对于板子外观这里不作讨论,毕竟不是我设计的,期望能用吧。可能是由于设计者经验不足的原因吧。我刚拿到板子的时候一看,心想坏了。貌似串口没有进行电平匹配,找来原理图纸一看,还真的没有进行电平匹配。呵呵,这个时候我还能说啥,自己搭电平匹配电路吧。我又打开了M26 OpenCPU硬件参考手册,找到串...

2018-11-18 10:47:34 4289 3

原创 物联网-移远M26模块初识及资料分享

前言      最近有个物联网项目,需要用到2G和4G物联网模块,经过调研比较,最终选择了移远M26(2G)、EC20(4G)和移柯L206(2G)、L506(4G)这四款模组用于前期测试。在这四款中首先介绍一下移远M26这款模块,其他的模块以后再作介绍。正文       M26 模块是一款工业级的四频段 GSM/GPRS 无线模块。其工作频段是: GSM850, EGSM900,DC...

2018-11-17 21:45:04 5587

原创 OK6410开发板学习之外部中断(按键点亮led和蜂鸣器)

有关S3C6410的外部中断程序设计,总结下来就如下几步:1、  设置外部管脚为中断;2、  设置中断触发方式;3、  取消中断屏蔽,使外部中断不屏蔽;4、  设置中断滤波;5、  设置中断号的中断选择,是irq还是fiq,默认为是irq;6、  使能中断号;7、  设置中断号的入口地址;8、  开启向量中断方式并打开全局中断;9、  编写中断处理函数,中断函数前和后要使用嵌入汇编,保存环境和恢复...

2018-05-20 23:24:15 1160

原创 OK6410开发板学习之一步一步实现精简BootLoader(BL1部分)

众所周知,ok6410开发板是一块基于s3c6410芯片的开发板,板载资源丰富。s3c6410是三星电子生产的基于arm11内核的芯片。本文旨在总结一下bootloader操作步骤,用于以后复习、查找。通过分析bootloader行业老大哥uboot代码,总结出要实现OK6410开发板的启动引导,只要实现如下的操作即可:1. 设置异常向量表;2. 设置处理器模式为svc模式;3. 外设基地址初始化...

2018-04-17 22:57:48 436

原创 stm32f1系列单片机实战应用

最近有一个小项目,测量运动自行车速度,上传给上位机软件,处理VR视频播放。正好公司有现成的stm32f1系列单片机开发板,所以我就想到了使用它来实现这个小功能。1. 硬件配置:1.1. 运动自行车; 1.2. 磁感应开关与专用磁铁;          1.3. 基于Stm32f103zet6芯片的开发板(七星虫),如下图;1.4. 连接线若干;1.5. miniusb线缆,用于给开发板供电及串口通...

2018-04-09 15:07:13 2717

原创 基于OK6410开发板Uboot源码简单分析

2018-04-07OK6410开发板是基于三星S3C6410芯片设计的一款开发板,资源比较丰富,可是想要使用这些资源就需要编写相应的启动引导程序,即BootLoader。当然,想要自己凭空写出BootLoader那简直就是天方夜谭,所以我们需要参考行业中现有的BootLoader,在其基础上再结合实际的控制芯片和开发板相关硬件资源编写适合自己的BootLoader代码。如今市面上常用的嵌入式Bo...

2018-04-07 23:49:21 523

原创 LINUX之samba服务器的安装与配置(基于redhat 6.3发行版)

linux系统之间或者linux系统和windows系统之间难免会有共享文件的时候,实现共享的方法有很多,这里简单介绍一下通过samba服务器实现linux系统与windows系统之间的文件共享的方法。我是windows下通过虚拟机安装的linux系统,redhat 6.3发行版。实现samba服务器需要两个前提条件:第一个就是windows与linux之间能够ping的通,所以首先就得知道lin...

2018-03-25 23:15:33 1731

原创 OK6410开发板学习之安装linux系统至开发板

说来惭愧,OK6410开发板自从买来就一直在躺灰,当时连教程也花了1千多大洋了,近来感觉前途迷茫,遂决定将其拿出来研究研究,看是否能够给我新出路。废话不多说,先上一张OK6410开发板大图:不要问我让其躺灰的这些年我干啥了,我也不知道,要不是最近找工作处处碰壁,可能它还得继续躺下去,直至我忘记还有它的存在为止。我记得刚买回来时通过电,一直正常,自带的测试程序,看着好牛逼。然后,我也就是看看了,接下...

2018-03-25 20:42:16 2810 2

原创 STM32F103系列实战之DMA控制器

DMA简介直接存储器存取(DMA)用来提供在外设和存储器之间或者存储器和存储器之间的高速数据传输。无须CPU干预,数据可以通过DMA快速地移动,这就节省了CPU的资源来做其他操作。灵活的12路通用DMA(DMA1上有7个通道, DMA2上有5个通道)可以管理存储器到存储器、设备到存储器和存储器到设备的数据传输;还有一个仲裁器来协调各个DMA请求的优先权。2个DMA控制器支持环形缓冲区的管理,避免了...

2018-03-13 10:20:36 7110

原创 Linux基本命令介绍

linux相关学习软件下载地址:VM12及Linux系统镜像文件LINUX基本命令Linux的基本命令共有上百个,不求全部要记住,但是也得要大体知道有哪些类型的命令。在介绍命令之前先介绍一下提高效率的手段:使用命令行补全和通配符。命令行补全:在输入文件名的时候,只需要输入前面几个字符,然后按下Tab键,Shell会自动把文件名补全。如果以已键入的字符开头的文件不止一个,那么可以连续按下Tab键两次...

2018-03-12 23:57:42 430

原创 STM32F103系列实战之通用同步异步收发器(USART)

通用同步/异步收发器(USART)STM32F103xC、 STM32F103xD和STM32F103xE增强型系列产品中,内置了3个通用同步/异步收发器(USART1、 USART2和USART3),和2个通用异步收发器(UART4和UART5)。这5个接口提供异步通信、支持IrDA SIR ENDEC传输编解码、多处理器通信模式、单线半双工通信模式和LIN主/从功能。USART1接口通信速率可...

2018-03-12 14:31:54 6209 1

原创 数据结构之二叉排序树

上一节我们介绍了二分(折半)查找,也了解了它的优缺点。二分查找的特点:二分查找能够提高有序表中数据元素的查找速度;二分查找的时间复杂度为O(log2n);二分查找是一种静态查找二分查找的不足:当查找表经常变化时,二分查找的整体性能急剧下降。二分查找的硬伤:二分查找基于有序表。 当需要插入或者删除数据元素时,为了能够继续进行二分查找,需要大规...

2018-03-06 18:26:03 618

原创 数据结构之顺序表和有序表查找其实现

顺序表和有序表查找顺序查找定义:从线性表中的第一个(或最后一个)数据元素开始,逐个进行数据元素关键字和给定值的比较,若某个数据元素的关键字和给定值相等则查找成功;如果直到最后一个(或第一个)数据元素,其关键字和给定值都不等时,则查找失败。上一节我们就介绍了简单的顺序查找的方法,代码如下:// 静态查找算法int static_search(int a[], int len, int key){...

2018-03-05 19:41:35 1716

原创 数据结构之查找的概念及简单实现

查找的概念查找是根据给定的某个值,在查找表中确定一个其关键字等于给定值的数据元素。查找表是由同一类型的数据元素(或记录)构成的集合。由于集合中的数据元素之间存在着完全松散的关系,因此查找表是一种非常灵便的数据结构。注意:从逻辑上来说,查找表中的数据元素之间没有本质的关系。查找表可以不是线性表,树结构和图结构中的任意一种。查找的操作分为两种:静态查找和动态查找。1.静态查找:1.1. 查询某个特定的...

2018-03-04 21:43:30 646

原创 数据结构之图的最短路径

图的最短路径最短路径问题:如果从有向图中某一顶点(称为源点)到达另一顶点(称为终点)的路径可能不止一条,如何找到一条路径使得沿此路径上各边上的权值总和达到最小。下面讨论两种最常见的最短路径问题:单源最短路径问题和所有顶点之间的最短路径。1.单源最短路径问题:给定一个带权有向图 D 与源点 v ,求从v 到 D 中其它顶点的最短路径。限定各边上的权值大于0。如何求得这些路径?迪杰斯特拉(Dijkst...

2018-03-03 23:11:50 8658 1

原创 数据结构值图的最小生成树

最小生成树(最小连通网)假设在n个城市之间建立通信联络网,则连通n个城市只需要n-1条线路。这时自然会考虑这样一个问题,如何在最节省经费的前提下建立这个通信网。在每两个城市之间都可以设置一条线路,相应地都要付出一定的经济代价。n个城市之间,最多可能设置n(n-1)/2条线路,那么,如何在这些可能的线路中选择n-1条,以使总的耗费最少呢?可以用连通网来表示n个城市以及n个城市间可能设置的通信线路,其...

2018-03-03 20:43:27 751

原创 数据结构之图的遍历

图的遍历定义:从图中的某一顶点出发,沿着一些边访遍图中所有的顶点,使得每个顶点仅被访问一次。图的遍历算法是求解图的连通性问题、拓扑排序和求关键路径等算法的基础。然而,图的遍历要比树的遍历复杂的多。因为图的任一顶点都可能和其余的顶点相邻接。所以在访问了某个顶点后,可能沿着某条路径搜索之后,又回到该顶点上。为了避免同一个顶点被访问多次,在遍历图的过程中,必须记下每个已访问过的顶点。为此,我们可以设一个...

2018-02-28 20:35:02 1514

原创 数据结构之图的存储结构二及其实现

上一节我们讲述了邻接矩阵法实现图,本节再来讲述一下邻接链表法实现图。邻接链表邻接表是图的一种链式存储结构。在邻接表中,对图中的每个顶点建立一个单链表,第i个单链表中的结点表示依附于顶点vi边(对有向图是以顶点vi为尾的弧)。基本思想:从同一个顶点发出的边链接在同一个链表中,每一个链表结点代表一条边, 结点中保存边的另一顶点的下标和权值。如下图所示:要想通过邻接链表方法实现图,首先得定义一个邻接链表...

2018-02-27 21:57:49 596

原创 数据结构之图的存储结构一及其实现

图的存储结构由于图的结构比较复杂,任意两个顶点之间都可能存在联系,因此无法以数据元素在存储区中的物理位置来表示元素之间的关系,即图没有顺序映像的存储结构,但可以借助数组的数据类型表示元素之间的关系。另一方面,用多重链表表示图是自然的事,它是一种最简单的链式映像结构,即以一个右一个数据域和多个指针域组成的结点表示图中的一个顶点,其中数据域存储该顶点的信息,指针域存储指向其邻接点的指针。但是,由于图中...

2018-02-27 16:44:13 5664 2

原创 数据结构之图的定义及基本术语

图的定义图是由顶点集合(Vertex)及顶点间的关系集合组成的一种数据结构:Graph=( V, E )V = {x | x ∈某个数据对象 } 是顶点的有穷非空集合;E ={ (x, y) | x, y ∈V } 是顶点之间关系的有穷集合,也叫做边(Edge)集合。注:∈为数学符号,表示属于的意思 。例:x∈y:表示x属于y的意思。在图中的数据元素通常称为顶点 V   。下图的都是图的表示 可能...

2018-02-26 20:59:46 4070

原创 数据结构之线索化二叉树

线索化二叉树 在一些项目中需要频繁的遍历二叉树,但是二叉树的遍历比单链表的遍历复杂多了,并且递归总是会有额外开销。。。能不能像链表那样方便的快速遍历二叉树呢?线索化二叉树指的是将二叉树中的结点进行逻辑意义上的“重排列”,使其可以线性的方式访问每一个结点。二叉树线索化之后每个结点都有一个线性下标,通过这个下标可以快速访问结点,而不需要遍历二叉树。这个感觉很像组织链表,但是大家要知道组织链表结点之间的...

2018-02-24 21:42:33 253

原创 数据结构之遍历二叉树

遍历二叉树在二叉树的一些应用中,常常要求在树中查找具有某种特征的结点。这就提出遍历二叉树的问题,即如何按某条搜索路径巡访树中每个结点,使得每个结点均被访问一次,而且仅被访问一次。遍历对线性结构来说,是一个容易解决的问题。而对二叉树则不然,由于二叉树是一种非线性结构,每个结点都可能有两颗子树,因而需要寻找一种规律,以便使二叉树上的结点能排列在一个线性队列上,从而便于遍历。回顾二叉树的递归定义可知,二...

2018-02-24 20:19:24 212

原创 数据结构之二叉树的创建

文章开头首先要感谢一下国嵌嵌入式教育的工作者们。创建二叉树 二叉树不仅比通用树结构简练,而且同时拥有通用树相同的操作。要想创建二叉树,首先就得了解一下二叉树的存储结构。已知二叉树的存储结构分为顺序存储结构和链式存储结构。其中链式存储结构又分为二叉链表和三叉链表。1. 顺序存储结构:按照顺序存储结构的定义,在此约定用一组地址连续的存储单元一次自上而下、自左至右存储完全二叉树上的节点元素,即将完全二叉...

2018-02-24 15:43:59 24813 2

原创 数据结构之二叉树的定义和性质

通过上一节讲解,我们知道通用树结构是采用双亲孩子表示法模型建立的。每个结点都有一个指向其双亲的指针,每个结点都有若干个指向其孩子的指针。如下图:整体实现起来比较复杂,今天我们来讲一下另一种树结构模型:孩子兄弟表示法模型。每个结点都有一个指向其第一个孩子的指针,每个结点都有一个指向其第一个右兄弟的指针。如下图:孩子兄弟表示法:每个结点包含一个数据指针和两个结点指针。1.    数据指针:指向保存于树...

2018-02-17 21:26:06 805

原创 数据结构之通用树结构的实现

之前我们讲了树的定义和操作,这节我们讲一下如何实现这些操作。既然要考虑如何实现,那就得说说树的存储结构。大家都知道树是非线性数据结构,显然我们无法用数组来表示树的逻辑结构。那我们应该怎么办呢?通过什么来表示呢?其实可以设计结构体数组对结点间的关系进行表述。如下图所示:从上图发现,将根结点的双亲定义为-1,表示其没有双亲;将根的孩子结点的双亲定义为0,表示其双亲是根结点;将根结点孩子1的孩子结点的双...

2018-02-17 14:54:38 5292 2

原创 数据结构之树的定义及操作

树的定义树是一种非线性的数据结构树是由 n ( n ≥0 ) 个结点组成的有限集合如果 n = 0,称为空树(如下图a);如果 n > 0,则:1.有一个特定的称之为根(root)的结点,它只有直接后继,但没有直接前驱;2. 除根以外的其它结点划分为 m (m ≥0)0) 个互不相交的有限集合T0,T1,…,Tm-1,每个集合又是一棵树,并且称之为根的子树(subTree)。树家族中的概念(...

2018-02-14 16:40:46 237 1

原创 数据结构之内部排序三

上两节讲解的几种排序方法不是时间复杂度大了,就是不稳定,今天我们讲一下一种时间复杂度低又稳定的一种内部排序方法;归并排序基本思想:将两个或两个以上的有序序列合并成一个新的有序序列:有序序列V[1] …V[m]和V[m+1] …V[n]                                        V[1] …V[n]这种归并方法称为2路归并。将3个有序序列归并为一个新的有序序列,称...

2018-02-13 16:44:26 153

原创 数据结构之内部排序二

上一节我们讲解三种简单的排序算法,虽然这3种排序算法的排序结果都是稳定的,但是他们的时间复杂度都是O(n^2),所以这三种算法不是最佳的排序方法,今天我们讲几个时间复杂度低于这三种的排序算法。排序动画二1.希尔排序基本思想:将待排序列划分为若干组,在每一组内进行插入排序,以使整个序列基本有序,然后再对整个序列进行插入排序。例如:将 n 个数据元素分成d 个子序列:{ R[1],R[1+d],R[1...

2018-02-13 15:28:55 149

原创 数据结构之内部排序一

排序算法演示动画一选择排序选择排序的方法包含:简单选择排序、树形选择排序、堆选择排序等。我们主要讲一下最简单的选择排序:简单选择排序法。基本思想:每一趟 (例如第 i趟,i = 0, 1, …, n-2)在后面 n-i(*1)个待排的数据元素中选出关键字最小的元素, 作为有序元素序列的第 i 个元素。*1.有的书上或教材说是n-i+1,那是因为其他书上或者教材上都是从i = 1开始选择的,而这里是...

2018-02-12 17:22:14 217

原创 数据结构之排序的概念及分类

排序的概念排序的一般定义:排序是计算机内经常进行的一种操作,其目的是将一组“无序”的数据元素调整为“有序”的数据元素。例如:将下列关键字序列52,49, 80, 36, 14, 58, 61, 23, 97, 75调整为14,23, 36, 49, 52, 58, 61 ,75, 80, 97排序的数学定义:假设含n个数据元素的序列为{ R1, R2, …, Rn }其相应的关键字序列为{ K1,...

2018-02-12 14:52:24 279

原创 数据结构之队列的特别实现

队列的特别实现上两节讲的队列实现方式确实提高了顺序队列和链式队列的效率,可是实现过程还是比较复杂。这样就有可能导致错误,其实有即能复用之前的代码,又比较高效的队列实现算法的。那就是用栈来实现,可能有人要说了,栈不是后入先出的吗?怎么可能实现栈呢?大家考虑一下,如果使用两个栈呢?如下图:大家是不是明白一点了呢?下面做个小结:1.组合使用两个栈的“后进先出”可以实现队列的“

2018-02-12 13:41:47 121

原创 数据结构之链式队列的优化

链式队列的优化上一节我们讲了一下顺序队列的优化,本节我们讲一下链式队列的优化。同理,我们得先知道链式队列的瓶颈在哪里。链式队列的瓶颈1.线性表的第一个元素作为队头,线性表的最后一个元素作为队尾;2.入队的新元素是在线性表的最后,时间复杂度为O(n);3.出队的元素即链表的第一个元素,时间复杂度O(1)。问题:如何将入队操作的时间复杂度降低到O(1)?链式队列的优化方案1.定义rear指针始终指向链...

2018-02-10 16:25:41 211

原创 数据结构之顺序队列的优化

顺序队列的优化我们既然想优化顺序队列,首先得知道目前顺序队列的瓶颈在哪里,那样才能对症下药。顺序队列的瓶颈:1.线性表的第一个元素作为队头,线性表的最后一个元素作为队尾;2.入队的新元素是在线性表的最后,时间复杂度为O(1)3.出队时需要将后续的所有元素向前移动,时间复杂度O(n)问题:如何将出队操作的时间复杂度降低到O(1)?顺序队列的优化方案1.定义front使其始终代表队头的下标,出队时将队...

2018-02-10 16:01:57 153

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