自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

  • 博客(32)
  • 资源 (3)
  • 收藏
  • 关注

转载 每个程序员都应该知道的福利

HR是专门负责谈薪资的, 当我们跟HR讨价还价的时候, HR会介绍公司有的福利,而回避公司没有的福利。 作为程序员,我们一定要对跟我们利益息息相关的各种福利细节了如指掌, 各项福利都要跟HR询问清楚,才能比较公司之间的总体福利。 同时还需要掌握些技巧,别让我们的利益会受到损害。  眼下正是年后跳槽的黄金时期,园里的大牛小牛拿了去年的年终奖后,有些肯定想给自己加点工资。园里的大牛小牛都是我们

2012-02-29 00:26:09 823

转载 volatile的作用

283推荐一个定义为volatile的变量是说这变量可能会被意想不到地改变,这样,编译器就不会去假设这个变量的值了。精确地说就是,优化器在用到这个变量时必须每次都小心地重新读取这个变量的值,而不是使用保存在寄存器里的备份。下面是volatile变量的几个例子:    1). 并行设备的硬件寄存器(如:状态寄存器)     2). 一个中断服务子程序中会访问到的非自动变量

2012-02-28 23:17:41 557

转载 常见的面试题

Define 1 . 用预处理指令#define 声明一个常数,用以表明1 年中有多少秒(忽略闰年问题)#define SECONDS_PER_YEAR (60 * 60 * 24 * 365)UL我在这想看到几件事情:•; #define 语法的基本知识(例如:不能以分号结束,括号的使用,等等)•; 懂得预处理器将为你计算常数表达式的值,因此,直接写出你是如何计算一年中有

2012-02-28 22:50:19 858

转载 把学单片机过程中遇到的问题与大家分享

转载▼标签:单片机常见问题指令cpu结构伪指令分类: 单片机一.单片机有4位、8位、16位、32位以及64位现在,请问的是在8位,16位,32位等等是什么意思?答:CPU内部总线的位数就是单片机的位数。这里的位也就是指单片机中CPU处理的数据的位数(一次处理信息的长度)。比如:51单机  属于8位机,就是CPU

2012-02-28 00:09:12 3908

转载 深入理解c语言——‘\0’ ,‘0’, “0” ,0之间的区别

看来基础还是很重要的,基础不扎实就难以学好c语言,就别说写出高质量的c语言代码了。今天,我就被这个问题折磨的不行了,哈哈,不过现在终于明白了‘\0’ ,‘0’, “0” 之间的区别了。困惑和快乐与你分享!   首先比较一下‘\0’和‘0’的区别。有一个共同点就是它们都是字符,在c语言中,字符是按其所对应的ASCII码来存储的,一个字符占一个字节。请翻开你的ASCII字符集表吧,一般在你的C语言

2012-02-27 23:59:30 188388 8

原创 深入理解C语言——#define宏和枚举的区别

(1)从处理过程的角度看:#define宏是由编译预处理器在预编译处理时处理的,而且只做简单的字符串的替换。枚举常量则是在编译的时候确定其值的。(2)从调试的角度看:通常情况下,在编译器里,可以调试枚举常量,而不能调试宏常量。(3)从数据的类型看:#define可以编译任意类型的常量,而枚举只能是定义整型常量。(4)从代码编写角度看:枚举可以一次定义大量常量,而#def

2012-02-27 23:56:16 5784 1

转载 typedef用法

一.基本概念剖析 int* (*a[5])(int, char*); //#1void (*b[10]) (void (*)()); //#2double(*)() (*pa)[9]; //#3 1.C语言中函数声明和数组声明。函数声明一般是这样: int fun(int, double);对应函数指针(pointer to

2012-02-27 23:05:41 641

转载 extern用法

1 基本解释  extern可以置于变量或者函数前,以标示变量或者函数的定义在别的文件中,提示编译器遇到此变量和函数时在其他模块中寻找其定义。  另外,extern也可用来进行链接指定。2 问题:extern 变量  在一个源文件里定义了一个数组:char a[6];  在另外一个文件里用下列语句进行了声明:extern char *a;  请问,这样可以吗?   答案

2012-02-27 22:49:17 501

转载 电子电路知识点总结

0推荐1、 纯净的单晶半导体又称本征半导体,其内部载流子自由电子空穴的数量相等的。2、 射极输出器属共集电极放大电路,由于其电压放大位数约等于1,且输出电压与输入电压同相位,故又称为电压跟随器(射极跟随器)。3、 理想差动放大器其共模电压放大倍数为0,其共模抑制比为∞。4、 一般情况下,在模拟电器中,晶体三极管工作在放大状态,在数字电器中晶体三极管工作在饱和、截止状

2012-02-25 01:10:58 1865

转载 硬件工程师电路设计必须紧记的十大要点

一、电源是系统的血脉,要舍得成本,这对产品的稳定性和通过各种认证是非常有好处的。1.尽量采用∏型滤波,增加10uH电感,每个芯片电源管脚要接104旁路电容;2.采用压敏电阻或瞬态二极管,抑制浪涌;3.模电和数电地分开,大电流和小电流地回路分开,采用磁珠或零欧电阻隔开;4.设计要留有余量,避免电源芯片过热,攻耗达到额定值的50%要用散热片。二、输入IO记得要上拉;三、输出IO

2012-02-25 01:08:11 1279

转载 从电子工程师到研发经理到老板的多面人生

职场拼杀11年,又下海也近3年了,经历了工程师、经理、高管、小老板的过程,因了职业的关系,见识了形形色色的职场角色,发现人真的很可怜。    老板可怜,被客户投诉,被供应商追债,被政府机构盘查,被员工抱怨,被投资人质询业绩,都是没有退路的问题,犹如悬崖边力难独支的枯木,稍一不慎就被滚滚而来的难题逼下了深崖;还听不到完全真实的信息,即便是老板自身的问题,凡事都得靠自己悟,谁会冒大不韪捋虎须,

2012-02-25 00:39:48 1374

转载 入行十多年的电子工程师对研发工作的一点感悟 V1.1

i作为一名10多年工作经验的电子工程师,一下我在一个企业的亲身感受我对研发工作的一点感悟 V1.1一、现有状况分析不觉新人来到我们研发已近一年,这一年里,同一批人员,有的已经很快适应了环境,经过自己的努力和付出,能为研发工作独挡一面,成为某一方面的小专家;有的尽管前期不太适应,但是通过指导和修正,业已慢慢进入了工作状态,相信经过一段时间,会逐步但当起某一方面的研发工作。。。。。

2012-02-25 00:28:54 1645

转载 关于I2C和SPI总线协议

IICvs SPI         现今,在低端数字通信应用领域,我们随处可见IIC (Inter-Integrated Circuit) 和 SPI (Serial Peripheral Interface)的身影。原因是这两种通信协议非常适合近距离低速芯片间通信。Philips(for IIC)和Motorola(for SPI) 出于不同背景和市场需求制定了这两种标准通信协议。

2012-02-24 23:20:08 937

转载 uCOS任务堆栈的深入分析(转)

堆栈作用的就是用来保存局部变量,从本质上讲也就是将CPU寄存器的值保存到RAM中。在uCOS中,每一个任务都有一个独立的任务堆栈。为了深入理解任务堆栈的作用,不妨分析任务从“出生”到“消亡”的整个过程,具体就是分析任务的建立,运行,挂起几种状态中任务堆栈的变化情况。现在假设系统运行着一个由用户创建的用以完成打印工作的任务TPrint。TPrint最初通过OSTaskCreate()函数创建,在该函

2012-02-24 00:33:16 702

转载 深入理解任务堆栈

先来看这一个小函数,猜猜他的运行结果(VC6环境)?#include void  b(){    int data[10];    printf("helloworld!/r/n");    data[11]-=5;}int main(){    b();    return 0;}堆栈溢出,肯定不正常,马上有人叫起来了。没错, 那么结果是什

2012-02-24 00:27:28 2998

转载 USB OTG设计

随着PDA、移动电话、数码相机、打印机等消费类产品的普及,用于这些设备与电脑,或设备与设备之间的高速数据传输技术越来越受到人们的关注,IEEE1394和USB是用于此类传输的两个主要标准。这两个标准都提供即插即用和热插拔功能,都可以向外提供电源,也都支持多个设备的连接。其中IEE1394支持较高的数据传输速度,但相对比较复杂、价格较高,主要用于需要高速通信的AV产品;而最初的USB标准主要面向低速

2012-02-21 00:12:13 1341

转载 堆和栈的区别

一个由c/C++编译的程序占用的内存分为以下几个部分 1、栈区(stack)— 由编译器自动分配释放 ,存放函数的参数值,局部变量的值等。其操作方式类似于数据结构中的栈。 2、堆区(heap) — 一般由程序员分配释放, 若程序员不释放,程序结束时可能由OS回收 。注意它与数据结构中的堆是两回事,分配方式倒是类似于链表,呵呵。 3、全局区(静态区)(static)—,全局变量和静态变量

2012-02-17 00:16:22 1485

转载 51单片机中使用ucos ii的优缺点(好文)

摘要:近年来,在单片机系统中嵌入操作系统已经成为人们越来越关心的一个话题。本文通过对一种源码公开的嵌入式实时操作系统ucos ii的分析,以51系列单片机为例,阐述了在单片机中使用该嵌入式操作系统的优缺点,以及在应用中应当注意的一些问题。关键词:实时操作系统;ucos ii;单片机 引言  早在20世纪60年代,就已经有人开始研究和开发嵌入式操作系统。但直到最近,它才在国内被越来越

2012-02-11 10:36:36 1504

转载 uC/OS-II源码分析(总体思路 三)

OSTimeDly 在Task中,一般执行一段时间之后调用OSTimeDly推迟一段时间再继续运行,OSTimeDly将本进程从Ready TCBList中删除,然后将Delay的时间设置给OSTCBDly,最后调用OS_Sched进行进程调度。void  OSTimeDly (INT16U ticks){    INT8U      y;      if (ticks

2012-02-11 10:31:43 817

转载 uC/OS-II源码分析(总体思路 二)

OSTaskCreate OSTaskCreate负责创建Task所需的数据结构,该函数原形如下所示:INT8U  OSTaskCreate (void (*task)(void *pd), void *p_arg, OS_STK *ptos, INT8U prio)其中task是一个函数指针,指向该Task所开始的函数,当这个Task第一次被调度运行时将会从task处开始运行。

2012-02-11 10:30:50 588

转载 uC/OS-II源码分析(总体思路一)(

首先从main函数开始,下面是uC/OS-II main函数的大致流程:main(){ OSInit(); TaskCreate(...); OSStart();}首先是调用OSInit进行初始化,然后使用TaskCreate创建几个进程/Task,最后调用OSStart,操作系统就开始运行了。 OSInit 最先看看OSInit完成哪些初始化:void

2012-02-11 10:30:09 770

转载 ARM7寄存器分布图

在汇编语言中寄存器R0~R13为保存数据或地址值的通用寄存器。它们是完全通用的寄存器,不会被体系结构作为特殊用途,并且可用于任何使用通用寄存器的指令。其中R0~R7为未分组的寄存器,也就是说对于任何处理器模式,这些寄存器都对应于相同的32位物理寄存器。寄存器R8~R14为分组寄存器。它们所对应的物理寄存器取决于当前的处理器模式,几乎所有允许使用通用寄存器的指令都允许使用分组寄存器。寄存器R8~R1

2012-02-11 10:29:26 1635

转载 ARM汇编中lr(r14)寄存器的作用

lr(r14)的作用问题,这个lr一般来说有两个作用:1.当使用bl或者blx跳转到子过程的时候,r14保存了返回地址,可以在调用过程结尾恢复。2.异常中断发生时,这个异常模式特定的物理R14被设置成该异常模式将要返回的地址。另外注意pc,在调试的时候显示的是当前指令地址,而用mov lr,pc的时候lr保存的是此指令向后数两条指令的地址,大家可以试一下用mov pc,pc,结果得

2012-02-11 10:28:47 1297

转载 uCOS-II中的OS_CPU.h,OS_CPU_A.s,OS_CPU.c

μC/OS-Ⅱ的移植集中在OS_CPU.h,OS_CPU_A.s,OS_CPU.c这三个文件上,下面分别详细介绍三个文件中的函数和需要修改或者编写的代码。1. OS_CPU.h的移植该文件定义了和处理器及编译器相关的定义及一些全局函数声明。由于ARM7 处理器字长为32位,半字长为16位,字节为8位,因此在OS_CPU.h文件修改与编译器相关的定义如下:typedef unsign

2012-02-11 10:28:09 1855

转载 μC/OS-Ⅱ的移植

μC/OS-Ⅱ的大部分代码是用ANSIC写成的,在对μC/OS-Ⅱ进行移植到不同处理器平台时,需要解决的主要问题有:数据类型的重定义、堆栈结构的设计和任务切换时的状态保存与恢复。在μC/OS-Ⅱ移植过程中涉及以上三个问题的代码都有包含在文件OS_CPU.H、OS_CPU_C.C、OS_CPU_A.S中。下面以μC /OS-Ⅱ在LPC2104上的移植为例进行探讨,介绍移植过程中的主要步骤和需要修改的

2012-02-11 10:27:06 776

转载 uCOS-II任务建立示例

#include "config.h"#include "stdlib.h"#define          LED1        (1                   // P1.18控制LED1#define          LED2        (1                   // P1.19控制LED2#define TaskStkLengh 6

2012-02-11 10:26:22 907

转载 uCOS-II任务机制

1.任务是一个无返回的无穷循环。uc/os-ii总是运行进入就绪状态的最高优先级的任务。2. 任务是如何调度(切换)的?因为uc/os-ii总是运行进入就绪状态的最高优先级的任务。所以,确定哪个任务优先级最高,下面该哪个任务运行,这个工作就是由调度器(scheduler)来完成的。任务级的调度是由函数OSSched()完成的,而中断级的调度是由函数OSIntExt()完成。对于OSSc

2012-02-11 10:25:41 1229

转载 uCOS-II核心算法分析(μCOS-Ⅱ)

μC/OS-Ⅱ是一种免费公开源代码、结构小巧、具有可剥夺实时内核的实时操作系统。其内核提供任务调度与管理、时间管理、任务间同步与通信、内存管理和中断服务等功能。适合小型控制系统,具有执行效率高、占用空间小、实时性能优良和可扩展性强等特点,最小内核可编译至2KB。μC/OS-Ⅱ为何如此高效呢?我们从它的核心算法——任务调度算法开始分析。2.1任务调度算法分析   操作系统的实时性主要体现在:

2012-02-11 10:24:56 1015

转载 ucos-ii在ARM7上移植

随着嵌入式技术的快速发展,实时多任务操作系统作为一种软件平台已逐步成为国际嵌入式系统的主流,目前世界上已经有一大批成熟的实时嵌入式操作系统,通常,对嵌入式软件的基本要求是体积小、指令速度快、具有较好的裁减性和可移植性,目前,实时操作系统很多,如 VxWorks , Windows CE , pSOS , QNX , LynxOS 等,这些操作系统都具有高可靠性、强实时性等特点,但他们都是商业操作系

2012-02-11 10:23:55 863

转载 会赚钱的人共有的特征,你是吗?

钱不是万能的,没有钱是万万不行的,最会赚钱的16种人,向之靠拢!  1、很聪明的人  读书学习好与坏与做生意赚钱完全是两码事,书读的好,生意不一定做的好,做生意需要头脑灵活多变,想到就要做到。  2、办事能力和办事效率很强的人  一旦有赚钱的生意马上一步一个脚印的去做,要付诸于行动,敢做、敢干,只有这样才能抓住机会。  3、不安于现状,不断努力的人  “一天三顿饱,老婆孩子热炕头”,一

2012-02-08 23:12:39 1118

转载 STM32 (Cortex-M3) 中NVIC(嵌套向量中断控制)的理解

一、STM32 (Cortex-M3) 中的优先级概念    STM32(Cortex-M3)中有两个优先级的概念:抢占式优先级和响应优先级,也把响应优先级称作“亚优先级”或“副优先级”,每个中断源都需要被指定这两种优先级。1. 何为占先式优先级(pre-emption priority)    高占先式优先级的中断事件会打断当前的主程序/中断程序运行—抢断式优先响应,俗称中断嵌套。

2012-02-06 21:52:10 1141

转载 keil MDK编译器警告和错误详解

1.warning:  #550-D: variable 'd' was set but never used描述:变量'd'定义但从未使用,或者是,虽然这个变量你使用了,但编译器认为变量d所在的语句没有意义,编译器把它优化了.解决:仔细衡量所定义的变量d是否有用,若是认定变量d所在语句有意义,那么尝试用volatile关键字修饰变量d,若是真的没有用,那么删除掉以释放可能的内存.2.

2012-02-01 20:58:49 3711

foxit阅读器

非常好的PDF阅读工具,占用资源少,可以记忆上回打开的地方,多标签

2012-05-13

空空如也

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

TA关注的人

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