关闭

Python基础知识

Python基础知识 Python简介 Python是一门脚本语言,不同于C/C++编译型语言,python是一门解释型语言,不要通过编译生成可执行文件,编写的.py后缀的python源文件便可以通过pyhton解释器就可以执行。Python作为脚本语言,虽然相比C/C++在执行效率方面不高,但是开发效率高,而且Python就为我们提供了非常完善的基础代码库,覆盖了网络、文件、GUI、数据库、...
阅读(3) 评论(0)

AVL平衡树及插入操作的C语言实现

源码地址:http://download.csdn.net/detail/mcu_tian/9555855 AVL平衡二叉树是一种特殊的查找树,是一种每个节点的左右子树深度不超过1。 AVL是绝对平衡树,增删的操作复杂度过高,应用不如红黑树。 AVL树的引入,就是为了解决二叉查找树的不平衡性导致时间复杂度大大下降。 那么AVL就保持住了(BST)的最好时间复杂度O(logn),所以每次的插...
阅读(367) 评论(0)

二叉查找树的查找、插入、删除、释放等基本操作的实现(C语言)

二叉查找树是一种特殊性质的二叉树,该树中的任何一个节点,它的左子树(若存在)的元素值小于节点的元素值,右子树(若存在)的元素值大于节点的元素值。 实现了二叉树查找树的实现以及基本操作,包括查找、插入、删除、初始化、释放等。 源码下载地址:http://download.csdn.net/detail/mcu_tian/9548788 二叉查找树节点的结构定义 相比二叉树,二叉查找树的元素结...
阅读(1847) 评论(0)

二叉树(C语言)

树可以使用链表也可以用数组实现 数组的实现通过下表与树的节点的序列对应,但是该方不够灵活,而且在C语言中,数组不进行下界检查,而且不能进行动态增长。 在比较通用的实现方式使用的是树链表实现。 对于大量的数据输入,链表的线性范文时间太慢,不宜使用,树的大部分操作的运行时间平均为O(log N) 具体参照源码: 二叉树 二叉树是最简单、应用最广泛的树,通过构造表达式树,对表达式树的一些...
阅读(295) 评论(0)

BusyBox制作Initramfs嵌入式Linux根文件系统

嵌入式Linux系统由linux内核与根文件系统两部分构成,两者缺一不可(无根文件系统的内核无法启动) 使用busybox构建嵌入式根文件系统目录结构,配置内核,并且使用Initramfs制作成根文件系统,根文件系统与内核都一起烧写在镜像中 创建目录结构 根目录的目录结构主要包含如下目录 /dev /etc /lib /usr /var /proc /tmp /home /...
阅读(2147) 评论(0)

栈的链表实现(C语言)

源码文件地址 :http://download.csdn.net/detail/mcu_tian/9530628 由前面:http://blog.csdn.net/mcu_tian/article/details/51493081所述 链表实现的栈在操作过程中频繁的pop和push会伴随着频繁的malloc和free,伴随着很大的系统开销。 基于此,在此实现中,通过实现一个空闲节点链表,将p...
阅读(1256) 评论(0)

栈及实现(C语言)以及中缀式到后缀式的转换实例

栈是一种先进后出(后进先出)的线性表,其限制是仅允许在表的一端进行插入和删除运算。 栈可以用链表实现,也可以用数组实现。 在使用链表实现时,栈顶指针指向链表的前端节点,当栈顶指针为NULL时即为空栈。 在进行插入操作时,将节点插入链表的前端节点,并将栈顶指针指向插入节点。 在进行删除操作的时候,将节点栈顶指针指向的节点(非空)删除,栈顶指针指向后面的链表节点。 使用链表实现栈的方...
阅读(912) 评论(0)

常见的几种内排序算法以及实现(C语言)

所有未排序的数组是经过检查合法的 主要的内排序包括冒泡、插入、希尔、堆排序、归并、快速、桶排序等 冒泡排序 冒泡排序应该是排序中最简单的算法了 主要思路如下: 1: 比较相邻的元素。如果第一个比第二个大,就交换他们两个。 2:对每一对相邻元素作同样的工作,从开始第一对到结尾的最后一对。在这一点,最后的元素应该会是最大的数。 3:针对所有的元素重复以上的步骤,除了最后一个。...
阅读(6467) 评论(0)

MDK5错误以及解决方法

之前做stm32用MDK4.7版本,一直好好的。但是最近手痒,加上MDK5可以导入lwip以及ucos,所以就想试试。 在这两天用的程中,磕磕绊绊的遇到不少问题,好在最终都解决了。现在基本上都能够用起,记录一下吧。 1:在新建工程的时候,发现没有对应的device。 MDK5不像MDK4,在安装的时候,device就已经集成在安装包里。对应的芯片设备型号需要我们自己根据需要导入。...
阅读(4647) 评论(0)

lwip网络接口netif

一个系统中可能有多个网络接口,有可能是以太网,有可能是WiFi,也有可能是其他的网络接口。 在lwip中每一个网络接口都由一个netif结构体表示。表示不同网卡的netif结构体链接成一个链表。全局变量struct netif *netif_list指向该链表表头。 全局变量struct netif *netif_default指向的netif结构所表示的网卡为缺省网卡。在发送消息的时候,会首...
阅读(1482) 评论(0)

lwip包缓冲区pbufs

lwip信息包是存储在pbufs中,pbufs作为lwip的数据缓冲区,是由pbuf结构组成的链表。数据存在pbufs链中各个pbuf节点所指向存储块中。 pbuf结构体的定义如下: struct pbuf {   struct pbuf *next;   //pbuf链中下一个pbuf的地址   void *payload; //指向该pbuf的数据存储区的首地址...
阅读(1141) 评论(0)

lwip内存分配方式

Lwip 的动态内存管理机制可以有三种: C 运行时库自带的内存分配策略、动态内存堆(HEAP)分配策略和动态内存池(POOL)分配策略。 库自带的内存分配策略和动态内存堆(HEAP)分配策略这两种两种策略使用者只能从中选择一种。 在opt.h头文件中配置宏MEM_LIBC_MALLOC来配置是使用C库自带的内存分配还是使用使用lwip内部实现的内存分配。 动态内存堆分配策略原理就是在一个事...
阅读(1539) 评论(0)

LwIP在stm32上的无操作系统移植

LwIP是一个轻型IP协议,有无操作系统的支持都可以运行。这里的移植是无操作系统移植。 LwIP虽然是一个轻型的IP协议,但是TCP/IP基本功能都有。而且占用的资源不多,非常适合用于嵌入式系统。 移植的平台:STM32F103VE+MDK 4.7+ LWIP-1.4.1 下载LwIP-1.4.1源码以及contrib-1.4.1_官网地址:http://download.s...
阅读(5702) 评论(0)

gcc中编译包含math.h的程序注意加-lm参数!

#include 程序中用到数学函数.原本只要在程序中加上面这一行就行了. gcc不知道犯什么毛病.不仅程序里要有include,编译的时候也要在指令后面加-lm 否则就这德行了: /tmp/cc4FFwdt.o(.text+0x126): In function `main': : undefined reference to `sqrt' /tmp/cc4FFwd...
阅读(882) 评论(0)

确认当前系统的大小端存储模式

大端模式:数据的高字节,保存在内存的低地址中,而数据的低字节保存在内存的高地址中。 小端模式:数据的高字节,保存在内存的高地址中,而数据的低字节保存在内存的低地址中。 检查当前系统的存储模式为大小端的一种方式是使用union类型数据。 由于union中所有的数据成员共用一个空间,所有的数据成员都是共用一个起始地址。 空间的大小为数据成员中长度最长的数据成员。 具体实现如下...
阅读(360) 评论(0)

UC/OS II消息队列管理实例

实例描述: 平台:MDK4.7+UCOSII+STM32F103 系统移植:http://blog.csdn.net/mcu_tian/article/details/48224361 UCOS II消息队列管理实例工程:http://download.csdn.net/detail/mcu_tian/9164937 该工程实例除了使用消息队列的实例之外,还有在APP文...
阅读(497) 评论(0)

UC/OS II 软件定时器

转载出处:http://www.openedv.com/posts/list/15061.htm UCOSII从V2.83版本以后,加入了软件定时器,这使得UCOSII的功能更加完善,在其上的应用程序开发与移植也更加方便。在实时操作系统中一个好的软件定时器实现要求有较高的精度、较小的处理器开销,且占用较少的存储器资源。 通过前面的学习,我们知道UCOSII通过OSTimTick...
阅读(922) 评论(0)

UC/OS II 内存管理

COSII 采用的是固定分区的方式管理内存。 将连续大块的内存按分区来管理,每个系统中若干个这样的分区,每个分区中又有若干个大小相同的内存块。 在进行内存分配的时候,根据需求从分区中得到几个内存块。而在释放的时候,内存块又重新返回所在的分区。 1:内存管理的数据结构 内存管理的数据结构包括有内存控制块(MCB),空闲内存控制块链表,内存分区等。 其定义如下: typedef s...
阅读(262) 评论(0)

UC/OS II 消息队列

消息邮箱只能保存一条消息,消息队列没有这一局限,可以容纳多条信息队列,按照先进先出(FIFO)的原则发送和接受消息。 消息队列的实体不是操作系统提供的,而是由用户任务提供的。操作系统提供的是对其进行管理的程序。 1:消息队列的数据结构 消息队列的数据结构主要包括消息队列、消息队列控制块(QCB)、消息队列控制块数组、空闲链表、事件控制块(ECB)等。 消息队列的数据结构定义为一个指...
阅读(561) 评论(0)

UC/OS II 消息邮箱

消息邮箱是uC/OS-II中的另一种通信机制,可以使一个任务或者中断服务子程序向另一个任务发送一个指针型的变量。通常该指针指向一个包含了“消息”的特定数据结构。如果该指针为空,说明邮箱是为空,若该指针不为空,则该邮箱是满。消息邮箱才用的数据结构是ECB(事件控制块)。每隔消息邮箱的可以容纳的消息数目是为1。      消息邮箱的管理函数主要有7个。在os_mbox.c中定义。 1:消息邮箱创建...
阅读(434) 评论(0)
49条 共3页1 2 3 下一页 尾页
    个人资料
    • 访问:52848次
    • 积分:977
    • 等级:
    • 排名:千里之外
    • 原创:44篇
    • 转载:4篇
    • 译文:0篇
    • 评论:1条
    文章分类