<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[rebuild_embed]]></title><description><![CDATA[专注嵌入式领域]]></description><link>https://blog.csdn.net/u012271722</link><language>zh-cn</language><generator>https://blog.csdn.net/</generator><copyright><![CDATA[Copyright &copy; u012271722]]></copyright><item><title><![CDATA[typedef的语法描述]]></title><link>https://blog.csdn.net/u012271722/article/details/47448765</link><guid>https://blog.csdn.net/u012271722/article/details/47448765</guid><author>u012271722</author><pubDate>Wed, 12 Aug 2015 18:19:12 +0800</pubDate><description><![CDATA[typedef的语法描述 
在现实生活中，信息的概念可能是长度，数量和面积等。在C语言中，信息被抽象为int、float和 double
等基本数据类型。从基本数据类型名称上，不能够看出其所代表的物理属性，并且int、float和double
为系统关键字，不可以修改。为 了解决用户自定义数据类型名称的需求，C语言中引入类型重定义语句
typedef，可以为数据类型定义新的类型名称，从而丰]]></description><category></category></item><item><title><![CDATA[函数返回局部变量]]></title><link>https://blog.csdn.net/u012271722/article/details/47393497</link><guid>https://blog.csdn.net/u012271722/article/details/47393497</guid><author>u012271722</author><pubDate>Mon, 10 Aug 2015 09:07:13 +0800</pubDate><description><![CDATA[一般的来说，函数是可以返回局部变量的。 局部变量的作用域只在函数内部，在函数返回后，局部变量的内存已经释放了。因此，如果函数返回的是局部变量的值，不涉及地址，程序不会出错。但是如果返回的是局部变量的地址(指针)的话，程序运行后会出错。因为函数只是把指针复制后返回了，但是指针指向的内容已经被释放了，这样指针指向的内容就是不可预料的内容，调用就会出错。准确的来说，函数不能通过返回指向栈内存的指针(注意]]></description><category></category></item><item><title><![CDATA[用数组 和 链表 构建栈]]></title><link>https://blog.csdn.net/u012271722/article/details/47374201</link><guid>https://blog.csdn.net/u012271722/article/details/47374201</guid><author>u012271722</author><pubDate>Sun, 09 Aug 2015 11:05:20 +0800</pubDate><description><![CDATA[用C语言构建 数组和链表栈]]></description><category></category></item><item><title><![CDATA[用二级指针作为形参建立二叉树]]></title><link>https://blog.csdn.net/u012271722/article/details/47303105</link><guid>https://blog.csdn.net/u012271722/article/details/47303105</guid><author>u012271722</author><pubDate>Wed, 05 Aug 2015 21:21:37 +0800</pubDate><description><![CDATA[今天在写二叉树的建立时，遇见了指针作为参数的bug。经过查找，进一步的理解了二级指针。
二级指针，也就是指针的指针，作用主要是为了改变指针本身的数据，在这里，可以把指针本身看成一个变量，既然是变量，那就肯定可以修改其内容，所以可以借助一个二级指针来改变指针本身的数据。
用指针作为形参，类似二叉树先序遍递归历的方法，建立二叉树。写了如下代码。
typedef struct node 
{]]></description><category></category></item><item><title><![CDATA[尾递归]]></title><link>https://blog.csdn.net/u012271722/article/details/47283253</link><guid>https://blog.csdn.net/u012271722/article/details/47283253</guid><author>u012271722</author><pubDate>Tue, 04 Aug 2015 21:46:17 +0800</pubDate><description><![CDATA[微博上看到有人在讨论尾递归，想起以前曾看过老赵写的一篇相关的博客，介绍的比较详细了，相信很多人都看过，我也在下面留了言，但挑了个刺，表示文章在关键点上一带而过了，老赵自然是懂的，但看的人如果不深入思考，未必真正的明白，下面我说说我的理解。

什么是尾递归

什么是尾递归呢?(tail recursion), 顾名思议，就是一种“不一样的”递归，说到它的不一样，就得先说说一般的递归。对于一般]]></description><category></category></item><item><title><![CDATA[TCP UDP 校验算法]]></title><link>https://blog.csdn.net/u012271722/article/details/47278477</link><guid>https://blog.csdn.net/u012271722/article/details/47278477</guid><author>u012271722</author><pubDate>Tue, 04 Aug 2015 16:16:40 +0800</pubDate><description><![CDATA[经常看计算机网络相关的书时，每次看到关于IP或者是UDP报头校验和时，都是一笑而过，以为相当简单的东西，不就是16bit数据的相加吗！最近在学习Ping命令的源待时，看到里面有关于校验和的算法。一头雾水，后来查找资料，看到校验和是16bit字的二进制反码和。总是觉得很奇怪，为什么会用反码和，而不是直接求和呢？或者是补码和呢？因为在计算机里面数据是以补码的形式存在啊！经过看书查资料，下面总结一些这个]]></description><category></category></item><item><title><![CDATA[结构体字节对齐]]></title><link>https://blog.csdn.net/u012271722/article/details/47274525</link><guid>https://blog.csdn.net/u012271722/article/details/47274525</guid><author>u012271722</author><pubDate>Tue, 04 Aug 2015 11:37:04 +0800</pubDate><description><![CDATA[结构体(struct)的sizeof值，并不是简单的将其中各元素所占字节相加，而是要考虑到存储空间的字节对齐问题。先看下面定义的两个结构体.
struct
{
  char a;
  short b;
  char c;
}S1;

struct
{
 char  a;
 char  b;
 short c;
}S2;

分别用程序测试得出sizeof(S1)=6 ,]]></description><category></category></item><item><title><![CDATA[编写可变参数c函数]]></title><link>https://blog.csdn.net/u012271722/article/details/47027799</link><guid>https://blog.csdn.net/u012271722/article/details/47027799</guid><author>u012271722</author><pubDate>Thu, 23 Jul 2015 20:27:42 +0800</pubDate><description><![CDATA[前言：本文在很大程度上改编自网友kevintz的“C语言中可变参数的用法”一文，在行文之前先向这位前辈表示真诚的敬意和感谢。
一、什么是可变参数
我们在C语言编程中有时会遇到一些参数个数可变的函数,例如printf()函数,其函数原型为:
int printf( const char* format, ...);
它除了有一个参数format固定以外,后面跟的参数的个数和类型是可变的（用三]]></description><category></category></item><item><title><![CDATA[inline 和 宏定义的区别]]></title><link>https://blog.csdn.net/u012271722/article/details/47027705</link><guid>https://blog.csdn.net/u012271722/article/details/47027705</guid><author>u012271722</author><pubDate>Thu, 23 Jul 2015 20:22:32 +0800</pubDate><description><![CDATA[inline函数是C++引入的机制，目的是解决使用宏定义的一些缺点。

1.为什么要引入内联函数（内联函数的作用）

  用它替代宏定义，消除宏定义的缺点。宏定义使用预处理器实现，做一些简单的字符替换因此不能进行参数有效性的检测。另外它的返回值不能被强制转换为可转换的合适类型，且C++中引入了类及类的访问控制，在涉及到类的保护成员和私有成员就不能用宏定义来操作。

2.inline相比]]></description><category></category></item><item><title><![CDATA[C语言宏定义,内置宏,__FILE__,__LINE__,## 用法]]></title><link>https://blog.csdn.net/u012271722/article/details/47027631</link><guid>https://blog.csdn.net/u012271722/article/details/47027631</guid><author>u012271722</author><pubDate>Thu, 23 Jul 2015 20:18:56 +0800</pubDate><description><![CDATA[当然宏定义非常重要的，它可以帮助我们防止出错，提高代码的可移植性和可读性等。

下面列举一些成熟软件中常用得宏定义

1，防止一个头文件被重复包含
#ifndef COMDEF_H
#define COMDEF_H

//头文件内容 …
#endif

2，重新定义一些类型，防止由于各种平台和编译器的不同，而产生的类型字节数差异，方便移植。
typedef  unsigne]]></description><category></category></item><item><title><![CDATA[NOR和NAND flash区别,RAM 和ROM区别]]></title><link>https://blog.csdn.net/u012271722/article/details/44628729</link><guid>https://blog.csdn.net/u012271722/article/details/44628729</guid><author>u012271722</author><pubDate>Wed, 25 Mar 2015 22:09:04 +0800</pubDate><description><![CDATA[ROM是Read Only Memory的缩写。

RAM是Random Access Memory的缩写。典型的RAM就是计算机的内存。 


RAM有两大类，一种称为静态RAM（Static RAM/SRAM），SRAM速度非常快，是目前读写最快的存储设备了，但是它也非常昂贵，所以只在要求很苛刻的地方使用，譬如CPU的一级缓冲，二级缓冲。另一种称为动态RAM（Dynamic RAM/]]></description><category></category></item><item><title><![CDATA[stm32 PWM input捕获输入模式]]></title><link>https://blog.csdn.net/u012271722/article/details/42173823</link><guid>https://blog.csdn.net/u012271722/article/details/42173823</guid><author>u012271722</author><pubDate>Fri, 26 Dec 2014 16:54:23 +0800</pubDate><description><![CDATA[stm32 定时器pwm输入捕获


输入捕捉的功能是记录下要捕捉的边沿出现的时刻，如果你仅仅捕捉下降沿，那么两次捕捉的差表示输入信号的周期，即两次下降沿之间的时间。

如果要测量低电平的宽度，你应该在捕捉到下降沿的中断处理中把捕捉边沿改变为上升沿，然后把两次捕捉的数值相减就得到了需要测量的低电平宽度。



如果要的测量低电平太窄，中断中来不及改变捕捉方向时，或不想在中断中改变]]></description><category></category></item><item><title><![CDATA[模拟地与数字地详解]]></title><link>https://blog.csdn.net/u012271722/article/details/41722075</link><guid>https://blog.csdn.net/u012271722/article/details/41722075</guid><author>u012271722</author><pubDate>Thu, 04 Dec 2014 11:57:15 +0800</pubDate><description><![CDATA[二者本质是一直的，就是数字地和模拟地都是地。要明白为什么要分开，先听一个故事；我们公司的商务楼，2楼是搞模拟的，3楼是搞数字的，整幢楼只有一部电梯，平时人少的时候还好办，上2楼上3楼互不影响，但每天上下班的时候就不得了了，人多得很，搞数字的要上3楼，总是被2楼搞模拟的人影响，2楼模拟的人要下楼，总是要等电梯上了3楼再下来，互相影响很是麻烦，商务楼的物业为解决这个问题，提出了2个方案：第1个（笑死人]]></description><category></category></item><item><title><![CDATA[基本放大电路-简要总结]]></title><link>https://blog.csdn.net/u012271722/article/details/39403077</link><guid>https://blog.csdn.net/u012271722/article/details/39403077</guid><author>u012271722</author><pubDate>Fri, 19 Sep 2014 21:12:10 +0800</pubDate><description><![CDATA[许久没有更新博客了，最近同时在做好几件事情，有些心乱效率不高。哎，知识的积累还是的稳扎稳打，急不得呀！
这篇文章，我来总结下，模拟电路中基本放大电路的特性。
首先，放大电路放大的对象是变化量（各种信号源），就是把它的电流或者电压放大（功率放大），这本质上是一种能量的控制。放大的信号要做到不失真，那就要分析清楚电路的静态特性和动态特性。这也是我总结的内容。
放大电路可以根据器件的不同分为两大类]]></description><category></category></item><item><title><![CDATA[static和extern 的区别]]></title><link>https://blog.csdn.net/u012271722/article/details/38713051</link><guid>https://blog.csdn.net/u012271722/article/details/38713051</guid><author>u012271722</author><pubDate>Wed, 20 Aug 2014 21:54:06 +0800</pubDate><description><![CDATA[一些基本概念：
1. 编译单元(模块)：
    在IDE开发工具大行其道的今天，对于编译的一些概念很多人已经不再清楚了，很多程序员最怕的就是处理连接错误(LINK ERROR), 因为它不像编译错误那样可以给出你程序错误的具体位置，你常常对这种错误感到懊恼，但是如果你经常使用gcc，makefile等工具在linux或者嵌
 入式下做开发工作的话，那么你可能非常的理解编译与连接的区别！当在]]></description><category></category></item><item><title><![CDATA[二极管、三极管、场效应管的原理及特性]]></title><link>https://blog.csdn.net/u012271722/article/details/38625875</link><guid>https://blog.csdn.net/u012271722/article/details/38625875</guid><author>u012271722</author><pubDate>Sun, 17 Aug 2014 00:24:16 +0800</pubDate><description><![CDATA[本文组要摘出了二极管、三极管、场效应管的原理及特性。主要目的是梳理它们的结构及原理，由于细细写来信息量还是蛮大的，所以难免会会有信息的丢失，但大体的结构是完整的。;-)
一、半导体二极管
       定义：奖PN结用外壳封装起来，并加上电机引线就构成了半导体二极管。
       常见的二极管类型如图（1）

图（1）
普通二极管，主要是利用它正向导通，反向截止的特性（单向导电性）。]]></description><category></category></item><item><title><![CDATA[STM32 库解析及新建工程]]></title><link>https://blog.csdn.net/u012271722/article/details/38500777</link><guid>https://blog.csdn.net/u012271722/article/details/38500777</guid><author>u012271722</author><pubDate>Mon, 11 Aug 2014 22:05:47 +0800</pubDate><description><![CDATA[上一篇文章介绍了keil 开发环境的配置。这篇文章来解析下ST公司提供的固件库，以及怎么新建一个工程。
ST公司官网下载固件库的方法。http://jingyan.baidu.com/article/948f59242eb91dd80ef5f972.html
我使用的是STM32F103VET6,故选择图（1）画红线的固件库。


 
 
 
 
 
 
 
 
 
 ]]></description><category></category></item><item><title><![CDATA[STM32 用jlink下载失败 环境配置]]></title><link>https://blog.csdn.net/u012271722/article/details/38440571</link><guid>https://blog.csdn.net/u012271722/article/details/38440571</guid><author>u012271722</author><pubDate>Fri, 08 Aug 2014 15:51:25 +0800</pubDate><description><![CDATA[今天在新建了一个工程，用jlink下载，突然冒出一个莫名的错误，如图（1）。但是demo的例子可以用jlink下载到开发板里。汗！
度娘上有两种说法：（1），需要clone解锁（用串口下载的方式，刷新flash）（2），环境配置错误。
那就一一排除吧！用串口下载程序，刷新flash，程序下载成功，但转到jlink下载 依旧报错！在百度怎么clone解锁，有好多方法，貌似很复杂，故放弃。尝试方法]]></description><category></category></item><item><title><![CDATA[第一篇博客--致自己]]></title><link>https://blog.csdn.net/u012271722/article/details/38398203</link><guid>https://blog.csdn.net/u012271722/article/details/38398203</guid><author>u012271722</author><pubDate>Wed, 06 Aug 2014 11:15:36 +0800</pubDate><description><![CDATA[今天的日期是2014.8.6，我在CSDN写下ziji]]></description><category></category></item></channel></rss>