摘要: 看到一篇很好的博文,分析2410定时器中断的使用的,很详细,和大家分享一下 转载来源于http://www.cnblogs.com/Neddy/archive/2011/07/01/2095176.htmls3c2410提供了5个16位的Timer(Timer0~Timer4),其中Timer0~Timer3支持PulseWidth Modulation—— PWM(脉宽调制 )。Timer4是一个内部定时器(internal timer),PCLK是Timer的信号源,我们通过设置每个Timer相应的Prescaler和ClockDivider把PCLK转换成输入时钟信号传送给各个Ti... 阅读全文
posted @ 2013-12-02 09:10 haotianling 阅读(325) 评论(0) 推荐(0)
摘要: //*****************************************************************//作者:昊天////功能:在ok6410板子上跑裸板程序,用四个按键控制四个led灯的两灭及蜂鸣器的叫声,// 当按键1按下时(此时为低电平)点亮led1同时蜂鸣器响,当松手时,led1灭及蜂鸣器不响 // 以此类推剩下三个键//时间:2012/12/13 22:01//******************************************************************//蜂鸣器---GPF15#define GPF... 阅读全文
posted @ 2013-12-02 09:10 haotianling 阅读(299) 评论(0) 推荐(0)
摘要: wire表示直通,即只要输入有变化,输出马上无条件地反映;reg表示一定要有触发,输出才会反映输入。wire表示直通,即只要输入有变化,输出马上无条件地反映;reg表示一定要有触发,输出才会反映输入。不指定就默认为1位wire类型。专门指定出wire类型,可能是多位或为使程序易读。wire只能被assign连续赋值,reg只能在initial和always中赋值。wire使用在连续赋值语句中,而reg使用在过程赋值语句中。 不指定就默认为1位wire类型。专门指定出wire类型,可能是多位或为使程序易读。wire只能被assign连续赋值,reg只能在initial和always中赋值... 阅读全文
posted @ 2013-12-02 09:10 haotianling 阅读(2195) 评论(0) 推荐(0)
摘要: 原文地址:关于FPGA设计16位乘法器的两种算法作者:ChrisChan部分原代码如下:用特权的右移算法虽复杂点,但节省不少LEs,如下图:用左移算法尽管浅显易懂,但因每次都会从最右端移位,会占用更大面积,速度暂不说,如下图: 阅读全文
posted @ 2013-12-02 09:10 haotianling 阅读(552) 评论(0) 推荐(0)
摘要: 此质料是摘要:>,自己感觉比较有价值,现与大家分享。1.从const inti说起你知道我们声明一个变量时象这样inti;这个i是可能在它处重新变赋值的。如下:int i = 0;i = 20;不过有一天我的程序可能需要这样一个变量(暂且称它变量),在声明时就赋一个初始值。之后我的程序在其它任何处都不会再去重新对它赋值。那我又应该怎么办呢?用const。const int ic =20;ic = 40;有了const修饰的ic我们不称它为变量,而称符号常量,代表着20这个数。这就是const的作用。ic是不能在它处重新赋新值了。认识了const作用之后,另外,我们还要知道格式的写法。有两 阅读全文
posted @ 2013-12-02 09:10 haotianling 阅读(140) 评论(0) 推荐(0)
摘要: 原文地址:键盘消抖--特权同学代码作者:一只大笨鹅首先将按键值保存两次,以检验按键值的变化。当按键值变后将计数器置0,否则继续加1。当计数器值等于fffff的时候,说明按键是正常按下的,接着保存两次,检测值的变化。若相应位有变化,则将相应的led控制取反。(好像新的代码中键值只检验了一次,不过找不到新代码了。)`timescale 1ns / 1ps////////////////////////////////////////////////////////////////////////////////// Company:// Engineer: 特权//// Create Dat... 阅读全文
posted @ 2013-12-02 09:10 haotianling 阅读(565) 评论(0) 推荐(0)
摘要: 每天晚上,睡觉的时候我习惯躺在床上刷刷微波,有些人的微博很有价值,浓缩了他对某件事情或人生深度认识的精华,并以简短的语句表达出来,或者是其看了某本书后的感悟,或直接截图!我感觉我每天在从中吸取营养!昨晚,当我看到下面这条微博后,竟然让我睡不着!这篇微博是周公(广州周立功懂事)的,他为嵌入式在中国的普及做了很大的贡献!应该算嵌入式大佬!睡不着是因为我有同感!我在大学旁边做嵌入式培训有三年,下面是我亲耳听到我的学生说到的现象:现象一:老师开始上课,同学都来点名,点了名后坐了几分钟,大家都从后门出去,有的靠走廊窗户坐的直接翻窗越狱!后来,老师规定上课前点一次名,上课后点一次名,于是,他们出去抽... 阅读全文
posted @ 2013-12-02 09:10 haotianling 阅读(149) 评论(0) 推荐(0)
摘要: stdout,stdin,stderr的中文名字分别是标准输出,标准输入和标准错误。在Linux下,当一个用户进程被创建的时候,系统会自动为该进程创建三个数据流,也就是题目中所提到的这三个。那么什么是数据流呢(stream)?我们知道,一个程序要运行,需要有输入、输出,如果出错,还要能表现出自身的错误。这是就要从某个地方读入数据、将数据输出到某个地方,这就够成了数据流。因此,一个进程初期所拥有的这么三个数据流,就分别是标准输出、标准输入和标准错误,分别用stdout,stdin,stderr来表示。对于这三个数据流来说,默认是表现在用户终端上的,比如我们在c中使用fprintf:fpri... 阅读全文
posted @ 2013-12-02 09:09 haotianling 阅读(556) 评论(0) 推荐(0)
摘要: 命名管道(FIFO)基本概念命名管道和一般的管道基本相同,但也有一些显著的不同:命名管道是在文件系统中作为一个特殊的设备文件而存在的。不同祖先的进程之间可以通过管道共享数据。当共享管道的进程执行完所有的I/O操作以后,命名管道将继续保存在文件系统中以便以后使用。管道只能由相关进程使用,它们共同的祖先进程创建了管道。但是,通过FIFO,不相关的进程也能交换数据。命名管道创建和操作::#include#includeint mkfifo(const char *pathname,mode_t mode);返回:若成功则为0,若出错则为-1一旦已经用mkfifo创建了一个FIFO,就可用ope... 阅读全文
posted @ 2013-12-02 09:09 haotianling 阅读(268) 评论(0) 推荐(0)
摘要: open函数用来打开一个设备,他返回的是一个整型变量,如果这个值等于-1,说明打开文件出现错误,如果为大于0的值参考格式 if(fd=open("/dev/ttys0",O_RDWR | O_NOCTTY |O_NDELAY))<0 {printf("cannot open"};int open(const char *pathname, int oflag, …/*,mode_t mode * / ) ;打开的操作类型有如下几种 1) O_RDONLY只读打开 2) O_WRONLY只写打开 3) O_RDWR读、写打开 4) O_APPEND每 阅读全文
posted @ 2013-12-02 09:09 haotianling 阅读(13586) 评论(0) 推荐(2)