自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 MVC介绍

 MVC:    <br />     MVC是三个单词的缩写,分别为: 模型(Model),视图(View)和控制Controller)。 MVC模式的目的就是实现Web系统的职能分工。 Model层实现系统中的业务逻辑,通常可以用JavaBean或EJB来实现。 View层用于与用户的交互,通常用JSP来实现。 Controller层是Model与View之间沟通的桥梁,它可以分派用户的请求并选择恰当的视图以用于显示,同时它也可以解释用户的输入并将它们映射为模型层可执行的操作。<br />视图视图是

2010-12-14 16:44:00 467

原创 微过虑驱动实现问题总结

在用微过虑驱动实现文件系统的过滤时应该注意以下一些问题:<br />1、ddk的安装选择。我安装的是ddk3790.1830这个版本,一开始写一些驱动时并没有什么问题,可是在实现文件系统方面的过滤时,发现很多函数根本无法识别,经过研究发现这个版本并没有关于文件系统过滤这个模块,于是重新安装了一个6001.18002版本的,问题得到解决。<br /> <br />2、写微过滤驱动时,在编译过程中总是报错,对于以flt开头的函数都报错link 2109,查了一下是缺少fltmgr.lib这个库。一开始是用pra

2010-12-06 21:02:00 1533

转载 使用WinDbg和虚拟机调试驱动程序

环境配置:——对文章作了些文字修改;——加入了使用VMware虚拟机配置的相关内容,而不是只根据个人喜好只写的Virtual PC的配置;——加入了虚拟机操作系统为Vista32的配置情况,Vista64后续有了调试经验后再加上;软件下载:WinDbg:http://www.microsoft.com/whdc/devtools/debugging/default.mspxVirtualPC:http://www.microsoft.com/downloadS/details.aspx?FamilyID=0

2010-10-12 16:22:00 1024

转载 让VS2005也可以编译驱动

<br /> <br />此文参考了http://blog.chinaunix.net/u/25096/showart_480854.html<br />感谢sislcb大牛对我的帮助,真的非常感谢<br />虽然我不懂编程,但是我总是想玩玩,看到那么多人都驱动来驱动去的,我也想驱动一下,无奈我不会编程,我想<br />我不会编程我总可以编译一个SYS吧,于是我就拉出来Easy Sys,用DDK build了一下,居然没看到SYS,郁闷<br />于是我就上网找呀找,结果还是没找到,那些文章我也看不大明白,

2010-10-12 11:10:00 412

原创 CC2430DMA学习

<br /><br />    DMA(直接内存控制),DMA可以在外设之间传递数据而不要CPU的干预,节约了大量的CPU时间,并且减轻了CPU的负担,是一种快速高效的通信方式,在CC2430中集成了DMA控制器,提供5个DMA通道,并且官方推荐使用DMA方式传送RF寄存器中的数据,而且为了方便DMA对数据进行传输CC2430中对RF寄存器,硬件寄存器等进行了映射,全部映射到了XDATA区域,这样就可以用DMA来读取寄存器的数据,给操作带来了很大的方便。下面我们就对CC2430中集成的DMA进行试验。<br

2010-10-11 15:36:00 909

原创 CC2430通过中断来接收无线射频数据

1、 通过在RFD中读取数据和存放数据,我们可以实现无线通信。    TXFIFO和RXFIFO可以通过SFR寄存器RFD(0xD9)进行存取。     写寄存器RFD就是写TXFIFO,读寄存器RFD就是读RXFIFO。 <br /> RF寄存器位RFSTATUS.FIFO和RFSTATUS.FIFOP提供了接收FIFO里的数据信。注意,RFSTATUS.FIFO和RFSTATUS.FIFOP仅仅用于RXFIFO。 <br /> <br /> 2、接收模式 <br /> 接接收收模模式式 <br /> <

2010-10-08 16:50:00 2809 3

原创 关于java不同类之间的数据共享

<br />经常性的在不同类之间 需要共享一些数据。<br />为了解决这个问题,我之前的解决办法是将要共享的数据所在的类作为一个参数传入,这样便可以获取,但是这种方法不是很好。比较累赘。<br />第二种解决办法是创建一个类。该类存放所有要共享的数据,将这些设置为静态,这样需要用到的时候便可以简单获取即可。这种方法简洁而且高效。<br /> <br />例子:<br />package indexd;public class Constans{ public final static Stri

2010-10-05 09:42:00 4120

原创 中断

当硬件设备需要和系统通信的时候,他首先要发出一个异步的中断信号区打断内核正在执行的工作。中断通常对应一个中断号(http://baike.baidu.com/view/1607576.htm)。内核通过这个中断号区查找相应的中断服务程序,并调用这个程序响应和处理中断。

2010-10-05 09:37:00 636

原创 嵌入式ZigBee串口模块的设计

<br />摘要:ZigBee技术具有低复杂度,低功耗,低成本等优势,在监测和控制领域具有广阔的应用前景。为了解决嵌入式ZigBee通信设计问题,本文介绍CHIPCON公司的CC2430如何实现通过串口与终端通讯,讨论了串行通讯模式的选择与设置, 并给出了一个具体的设计方案,实验证明:设计方案是可行的。<br />  1.引言<br />  近年来随着数字技术,微电子技术以及通信技术的发展,无线通信技术凭借其组网时受地理环境制约小这一巨大优势,在许多领域逐渐得到重视。ZigBee 是一个符合IEEE802.

2010-09-20 11:32:00 1220

原创 网络&网络编程

网络按照OSI参考模型可分为七层:<br /> 物理层<br />  物理层规定了激活、维持、关闭通信端点之间的机械特性、电气特性、功能特性以及过程特性。该层为上<br />  层协议提供了一个传输数据的物理媒体。<br />  在这一层,数据的单位称为比特(bit)。<br />  属于物理层定义的典型规范代表包括:EIA/TIA RS-232、EIA/TIA RS-449、V.35、RJ-45等。数据链路层<br />  数据链路层在不可靠的物理介质上提供可靠的传输。该层的作用包括:物理地址寻址、数据的

2010-09-19 20:50:00 319

原创 Windows核心编程:内存映射文件

<br /><br />    与虚拟内存相似,内存映射文件允许开发人员预定一块地址空间区域并给区域调拨物理存储器。不同之处在于内存映射文件的物理存储器来自磁盘上已有的文件,而不是来自系统的页交换文件。一旦把文件映射到地址空间,我们就可以对它进行访问,就好像整个文件都已经在被载入内存一样。<br />     内存映射主要用于以下三种情况:<br />系统使用内存映射文件来载入并运行.exe和动态链接库(DLL)。这大量节省了页交换文件的空间以及应用程序启动的时间。开发人员可以使用内存映射文件来访问磁盘

2010-09-17 17:24:00 733

原创 创建DLL

<br />方法1、使用头文件导出:<br /> <br /><br />dlltest.h<br />#ifdef MYLIBAPI<br />#else<br />#define MYLIBAPI extern "C" _declspec(dllexport)<br />#endif<br /><br />MYLIBAPI int add(int a,int b);<br /><br /><br />dlltest.cpp<br /><br />#include <windows.h><br /

2010-09-17 17:23:00 278

原创 未完

<br />UTX0IF :应该是完成中断标志。完成中断后为1.

2010-09-17 16:55:00 236

转载 串口收发总结

<br />串口的问题是我之前做过的那个项目的一个比较重点的问题,之前的文章里也说过了不少,这里就主要说一下他的流程好了。<br />    首先需要明确的是串口的任务只是有串口接收数据和串口发送数据两个部分(可能有的朋友会觉得这是一句废话,但是这两个部分是有区别的)。在串口接收数据的这个部分有两种方法——查询法和中断法,查询法就是要串口一直处于等待的状态,看串口上是不是有数据(主要是看URX0IF的值,一旦是1,表示串口上有数据并且串口上的数据已经接收完毕可以进行下一步的操作了)一旦数据接收完毕,就开始对

2010-09-17 16:01:00 788

转载 CC2430基础实验——外部中断

外部中断实验是使用两个按键来翻转LED状态,但这里两个按键不是做键盘用,二是产生中断触发信号。    实验共用到P1、P1/P0DIR、P1/P0SEL、P1/P0INP、PICTL、IEN1和P0IFG几个个寄存器。其中前几个的作用前面的文章里应经介绍过了,这里就不再重复说明了。这里主要是讲一下后几个寄存器的作用。其中PICTL为P口中断控制寄存器;P0IFG为P1口中断标志寄存器;IEN1为中断使能寄存器1。    这个实验是到目前为止我改动最大的一个实验了,我想主要还是这个基础实验以前不是跑在2430

2010-09-17 11:00:00 1489

原创 T3定时器

实现步骤:1、将T3/4配置寄存复位<br />#define TIMER34_INIT(timer) / do { / T##timer##CTL = 0x06; / //T3控制器,可以用来启动T3或者设置分频以及设置工作模式:如自动重装 之类 T##timer##CCTL0 = 0x00; / //通道0比较控制寄存器 T##timer##CC0 = 0x00; / //通道0比较寄存器

2010-09-17 10:04:00 3064

原创 T2定时器

T2IE<br />定时器2中断使能。<br />1:开中断<br />0:关中断<br /> T2PEROF2<br />可以用来设置比较中断和溢出中断<br /> T2PEROF2 |= 0x80;//设置为比较中断<br /> T2PEROF2 |= 0x40;//设置为溢出中断<br /> T2CNF:<br />用来启动或者停止定时器<br /> 定时器如何赋定时初值1、开启溢出中断//溢出中断 -#define SET_TIMER2_CAP_INT() / do{

2010-09-16 17:15:00 1700

原创 定时器T1

分频:<br /> 按照我的理解,单片机经PLL锁相后,会有一个主频供CPU内核操作。这个主频一般比较高,如果直接作为定时期的基频,在定时器位数一定(较低)的情况下,往往中断可实现的最大定时时间比较短,会频繁触发中断,严重影响效率。因此内部设计硬分频器,将主频分频(就是主频的1/N)作为定时器的基频,这样的话,在定时精度要求不严格的场合(如秒脉冲),可以延长中断单元的运行时间,减少中断请求的次数。 即延长中断时间。自动重装:当定时器的计数器从初值开始计数直到溢出产生中断后会自动将其重新初始化为初值.源码:

2010-09-16 16:25:00 847

原创 按钮控制灯

/*****************************************//按键初始化*****************************************/void InitKey(void){ /* P1SEL &= ~0X0C; //P12 P13输入 P1DIR &= ~0X0C; //按键在P12 P13 P1INP |= 0x0c; //三态 */ P0SEL&=~0X10; P0DIR&=~0X10; P0I

2010-09-16 15:54:00 638

原创 控制灯

1、设置输入和输出:PXDIR<br />X:序号<br />DIR:方向,1是输出,0是输入。<br />如: 设置P1_0和PI_1为输出 P1DIR|=0X03<br /> 2、状态<br />1:灯灭<br />0:灯闪亮<br /><br />3、实例:<br />#include <ioCC2430.h>#define uint unsigned int#define uchar unsigned char//定义控制灯的端口#define RLED P1_0 /

2010-09-16 15:23:00 360

原创 IAR工程创建环境配置

1)先创建一个空的工程2)右击项目选择options进入设置界面。

2010-09-15 20:15:00 729

原创 sql存储过程

<br /> 语法:create proc procname(@para1,@para2)asbeginprocedure~~~end执行调用:exec procname@para1=?,@para2=?;实例:<br />程序员工资表:ProWage<br />字段名称<br />数据类型<br />说明<br />ID<br />int<br />自动编号,主键<br />PName<br />Char(10)<br />程序员姓名<br />Wage<br />int<br />工资<br />创建一

2010-09-10 18:49:00 769

原创 sql事务和存储过程

<br /><br />sql事务处理 (转)<br /> <br />---------------------理------------论-----------------------<br />1.什么是事务:事务是一个不可分割的工作逻辑单元,在数据库系统上执行并发操作时事务是做为最小的控制单元来使用的。他包含的所有数据库操作命令作为一个整体一起向系提交或撤消,这一组数据库操作命令要么都执行,要么都不执行。<br />2.事务的语句<br />开始事物:BEGIN TRANSACTION<br />提

2010-09-10 18:17:00 436

原创 sql自定义函数

<br /><br />SQL Server 2005 自定义函数语汇小结<br /> <br />由于工作的需要,了解下SQL Server2005 函数的写法,现在总结一下:<br />对于SQL Server 2005 数据库而言,函数与存储过程在语法方面是有很大的相同点,<br />最大的不同就是函数有返回值,直接使用returns,而存储过程则使用output来声明输出变量<br />一、下面先说明下,如何创建函数<br />1、创建没有返回值与没有参数的函数<br />CREATE FU

2010-09-10 17:59:00 478

原创 sql 触发器

<br /><br />SQL触发器实例1<br />定义: 何为触发器?在SQL Server里面也就是对某一个表的一定的操作,触发某种条件,从而执行的一段程序。触发器是一个特殊的存储过程。 <br />     常见的触发器有三种:分别应用于Insert , Update , Delete 事件。 <br /><br />     我为什么要使用触发器?比如,这么两个表: <br /><br />     Create Table Student(             --学生表 <br

2010-09-10 17:48:00 619

原创 递归实现两个链表合并

面试题:递归实现两个链表合并<br />不用递归如下: <br />Node* mergeAction(Node* head1, Node* head2){//两个链表的合并操作 Node* head=(Node*)malloc(sizeof(Node)); Node* q=head; while(head1 && head2){ if(head1->data<=head2->data){ Node* p=(Nod

2010-09-09 16:37:00 607

原创 全排列递归算法

<br />字母全排列 首先可以看出,全排列其实就是阶乘,3个字母会有3阶乘种表现,4字母会有4阶乘种 上面fat的变化是有规律的 ,我们要得到全排列的做法是: 将三个字母分别作为开头,然后 调整除了第一个字符之外的位置,即fat 将后两个调整 fta 当有4个字母时,如golf,那么分别让g,o,l,f打头,当g打头是后面是olf,那就可以回到上面fat的例子 这就是递归的表现,4个字母是四种字母打头的后面是3的全排列,3个字母又是3种字母打头的后面是2的

2010-09-09 14:09:00 426

原创 c++笔试题目

N人报数问题int luck_number(int n,int u) { /*该函数返回最后留下来的人的编号*/ /*其中, n是总人数,u是不幸运数(报数到该数退出)*/ int *pep,i,j,k; pep=(int *)malloc(n*sizeof(int)); for(i=0;i判断单链表是否有回路int has_circle(node*head){ int pos1=0; node *cur

2010-09-08 18:19:00 275

原创 虚拟内存

<br />要申请虚拟内存,有以下2个步骤:<br /> 1、预订地址空间区域2、 调拨物理存储器<br />LPVOID VirtualAlloc(  LPVOID lpAddress, // region to reserve or commit  SIZE_T dwSize, // size of region  DWORD flAllocationType, // type of allocation  DWORD flProtect // type of access protec

2010-09-06 20:24:00 359

原创 线程2

线程只有一个内核对象和有个栈,几乎不涉及记录活动,所以不占用内存。HANDLE CreateThread(  LPSECURITY_ATTRIBUTES lpThreadAttributes,//NULL的话则句柄不开继承  DWORD dwStackSize,//线程堆栈大小,一般=0  LPTHREAD_START_ROUTINE lpStartAddress,//指向线程函数的指针,形式:@函数名 //DWORD WINAPI ThreadProc (LPVOID pPa

2010-09-05 15:35:00 242

原创 线程

线程只有一个内核对象和有个栈,几乎不涉及记录活动,所以不占用内存。HANDLE CreateThread(  LPSECURITY_ATTRIBUTES lpThreadAttributes,//NULL的话则句柄不开继承  DWORD dwStackSize,//线程堆栈大小,一般=0  LPTHREAD_START_ROUTINE lpStartAddress,//指向线程函数的指针,形式:@函数名 //DWORD WINAPI ThreadProc (LPVOID pPa

2010-09-04 21:08:00 201

原创 进程

进程构成 内核对象。操作系统用来管理进程地址空间。包含所有可执行文件和DLL模块代码。进程实例句柄句柄可以用HINSTANCE和HMODULE来表示,两者一致。获取加载基地址GetModuleHandle(PCTSTR psmodule);返回可执行文件加载的基地址。如果向其传递NULL值,会返回进程地址空间的可执行文件的基地址,即使GetModuleHandle代码在一个DLL文件中返回值仍是可执行文件的基地址而不是DLL文件的基地址。创建进程:BOOL CreateProcess  (  LPC

2010-09-02 16:38:00 319

原创 内核对象

<br />15:23:54 内核对象<br />内核对象是一个内存块,有操作系统分配,这个内存块是一个数据结构,存放着对象的相关信息。<br />用于创建内核对象的所有函数几乎都有一个指向一个SECURITY_ATTRIBUTES结构的指针<br /> <br />typedef struct _SECURITY_ATTRIBUTES {  DWORD nLength; LPVOID lpSecurityDescriptor; BOOL bInheritHandle

2010-09-02 15:24:00 260

原创 字符串处理

两种编码格式:ANSI 单字符编码UNICODE 双字节字符编码在winodws vista 中,每个unicode字符都是用UTF-16编码的(unicode transformation fomart)。声明unicode字符串方法如下:   wchar_t  c=L'A';TCHARTCHAR 是为了统一多语言编码而设计的,程序编译为 ANSI, TCHAR 就是相当于 CHAR,当程序编译为 UNICODE, TCHAR 就相当于 WCHAR.函数中的字符串类型:ANSI string:PCSTRU

2010-09-02 14:28:00 242

cc2430基础实验

cc2430基础实验,cc2430基础实验

2010-10-14

Windows+Mobile编程起步

Windows+Mobile编程起步Windows+Mobile编程起步

2010-03-28

windowsmobile 编程

windowsmobile 编程 实力开发

2010-03-18

空空如也

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

TA关注的人

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