摘要: 说一下C语言的存储类说明符:1.Auto 只在块内变量声明中被允许,表示变量具有本地生存期。2.Extern 出现在顶层或块的外部变量函数与变量声明中,表示声明的对象具有静态生存期,连接程序知道其名字。3.Static可以放在函数与变量声明中。在函数定义时, 其只用于指定函数名,而不将函数导出到连接程序。在函数声明中,表示其后面会有定义声明的函数,存储类为static。在数据声明中, 总是表示定义的声明不导出到连接程序。说明:C99中规定,所有顶层的默认存储类标志符都是extern1.函数声明 我们如何来区分哪个头文件中的函数声明在其对应的。c文件中有定义,而哪个又没有呢?这不是必须的,因为无 阅读全文
posted @ 2013-10-14 18:58 amanlikethis 阅读(757) 评论(0) 推荐(0) 编辑
摘要: arm-linux-gcc的优化选项例如(-O2),可以加速我们的程序,使程序执行效率更高。但是,倘若我们就是需要程序慢一点运行,但是优化却把我们的延时函数优化的没有了的时候,这种优化却不是我们想要的。有时候,我们需要事物差的一面。下边的代码是我的main.c程序。#defineGPBCON(*(volatileunsignedlong*)0x56000010)#defineGPBDAT(*(volatileunsignedlong*)0x56000014)#defineGPB5_out(10;dly--);}intmain(void){unsignedlongi=0;GPBCON=GPB5. 阅读全文
posted @ 2013-10-13 21:49 amanlikethis 阅读(2310) 评论(0) 推荐(0) 编辑
摘要: (1)VHDL的描述风格及语法十分类似于一般的计算机高级语言,但是它是一种硬件描述语言。学好VHDL的关键是充分理解VHDL语句和硬件电路的关系。编写VHDL,就是在描述一个电路,我们写完一段程序后,应当对生成的电路做到心中有数,而不能用纯软件的思路来编写VHDL程序(硬件描述语言和单片机程序是有区别的)。(2)语法掌握贵在精不在多。30%的基本VHDL语句就可以完成95%的电路设计,很多生僻的语句并不能被所有的综合工具所支持,在程序移植或被更换软件平台时容易产生兼容性问题,也不利于其他人阅读和修改。建议多用心钻研常用语句,理解这些语句的硬件含义,这比多掌握几个新语法要有用的多。(3)VHDL 阅读全文
posted @ 2013-09-29 16:13 amanlikethis 阅读(529) 评论(0) 推荐(0) 编辑
摘要: VHDL库存储和放置了可被其他VHDL程序调用的数据定义、器件说明、程序包等资源。VHDL库的种类有很多,但最常见的库有IEEE标准库、WORK库。IEEE标准库主要包括STD_LOGIC_1164、NUMERIC_BIT和NUMERIC_STD,其中STD_LOGIC_1164是最重要和最常用的程序包。大部分关于数字系统设计的程序包都是以此程序包设定的标准为基础的。每个VHDL程序的开头一般都要有如下的IEEE库使用说明:LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;这是因为实体说明中要描述的器件的输入、输出端口的数据类型,而这些数据类型在IEEE.STD 阅读全文
posted @ 2013-09-29 16:12 amanlikethis 阅读(1986) 评论(0) 推荐(0) 编辑
摘要: 使用软件:Usboot和MaxDOS_5.6s_U盘版。由于我的U盘容量比较小,暂时只能做DOS启动功能,其它功能如Windows PE,等我以后测试成功后再补充说明。U盘是啥?读音优盘,可以实现两台电脑的文件互相复制,是早期的软盘替代品。启动盘是什么?启动盘的专业解释我就不想多说,我只想说,启动盘的主要功能及用处就是安装系统和维护系统用。系统安装盘大家用过的应该知道,当我们将系统安装盘放进光盘之后,重启电脑就会出现一个安装系统的菜单。其实那个系统安装盘就是一个带启动功能的系统盘。而U盘启动盘就是可以让我们安装系统的时候无需使用光盘,只需要将U盘插到电脑,就可以达到和系统安装光盘一样的效果。使 阅读全文
posted @ 2013-09-29 16:08 amanlikethis 阅读(2108) 评论(0) 推荐(0) 编辑
摘要: 二极管作用:起续流作用。具体说来,就是在继电器线圈断电的时候,线圈两端会产生一个自感电动势,这个自感电势会造成破坏,就在继电器线圈两端反向并联一个二极管,为自感电动势提供一个放电电流回路(续流),从功能上这个二极管叫续流二极管。 阅读全文
posted @ 2013-09-29 15:36 amanlikethis 阅读(808) 评论(0) 推荐(0) 编辑
摘要: 它的基本原理是当单片机上电时,电容短时间内可以看做短路,RST为高电平,从而实现单片机的复位;当单片机工作过程中,按下复位键,那么RST为高电平,单片机复位。 单片机的两种复位状态的区别:上电复位后,单片机就进入初始化状态,片内RAM为随机值;运行过程中,通过复位键复位,单片机进入复位状态,但是RAM值保持为复位前的状态,即复位不会引起RAM的改变。 阅读全文
posted @ 2013-09-29 15:33 amanlikethis 阅读(512) 评论(0) 推荐(0) 编辑
摘要: 原网页:http://www.cnblogs.com/CuriosityWzk/archive/2011/12/25/2301090.htmlWARNING L15: MULTIPLE CALL TO SEGMENT 其实这个问题应该是引起注意的,有可能引起程序冲突,但是一般时候程序运行不会有问题,... 阅读全文
posted @ 2013-09-29 15:31 amanlikethis 阅读(400) 评论(0) 推荐(0) 编辑
摘要: R15 (PC)总是指向“正在取指”的指令,而不是指向“正在执行”的指令或正在“译码”的指令。一般来说,人们习惯性约定将“正在执行的指令作为参考点”,称之为当前第一条指令,因此PC 总是指向第三条指令。当ARM 状态时,每条指令为4 字节长,所以PC 始终指向该指令地址加8 字节的地址,即:PC 值=当前程序执行位置+8;而AXD 中的pc,是为了调试看着方便而修改过的,它指向的是正在执行的指令,即“真正pc-8”! 阅读全文
posted @ 2013-09-28 21:03 amanlikethis 阅读(360) 评论(0) 推荐(0) 编辑
摘要: 我曾经通过查看反汇编代码对KEILC编译器进行了测试,大概有这么一下内容,也得出一些结论。(1)全局变量:如果程序中定义了全局变量,而且初始值不是0。此时,在程序调到main()函数执行前,除了要进行内存清零、初始化堆栈外,还需要将全局变量的初始值加载到内存的指定区域(编译过程中为全局变量分配的空间)。(2)局部变量:局部变量通常使用那些缓冲内存(用作保存运算过程的中间数据)。初始化的局部变量,通常程序中都会对用到的缓冲内存重新赋值。但是,对于没有初始化的局部变量需要注意“无知情的情况下被赋了值”。下边的子函数中定义了变量,但是并未初始化。按照标准C语言的准则,未初始化的变量的初值默认是0,. 阅读全文
posted @ 2013-09-28 21:00 amanlikethis 阅读(1746) 评论(0) 推荐(0) 编辑