12 2011 档案

摘要:预处理器(Preprocessor)1. 用预处理指令#define 声明一个常数,用以表明1年中有多少秒(忽略闰年问题) #define SECONDS_PER_YEAR (60 * 60 * 24 * 365)UL 我在这想看到几件事情: 1). #define 语法的基本知识(例如:不能以分号结束,括号的使用,等等) 2). 懂得预处理器将为你计算常数表达式的值,因此,直接写出你是如何计算一年中有多少秒而不是计算出实际的值,是更清晰而没有代价的。 3). 意识到这个表达式将使一个16位机的整型数溢出-因此要用到长整型符号L,告诉编译器这个常数是的长整型数。 4). 如果你在你的表达式中用 阅读全文
posted @ 2011-12-27 20:35 [无名] 阅读(1733) 评论(0) 推荐(0)
摘要:;**********OPTIONS*******************************;_RAM_STARTADDRESS EQU 0xc000000_ISR_STARTADDRESS EQU 0xc7fff00 ;GCS6:64M DRAM/SDRAM 中断起始地址,这个地址就直接;_ISR_STARTADDRESS EQU 0xc1fff00 ;GCS6:16M DRAM;BUSWIDTH; 16,32 GBLA BUSWIDTH 定义一个全局变量,数据型变量,变量名为BUSWIDTHBUSWIDTH SETA ... 阅读全文
posted @ 2011-12-25 16:22 [无名] 阅读(394) 评论(0) 推荐(0)
摘要:一步一步学习uCOS和ARM体系结构的心得学习必备条件:1、一块开发板——例如44B0开发板,建议初学者不要去购买那些ARM9体系结构的,因为作为初学者来说ARM9体系的东西是很复杂的,买块ARM7的就可以了(先入门,然后再提高);2、学习必备书籍 《Pointer on C》中文名字叫《C和指针》(美)里科|译者:徐波 前提你的了解C指针吧(这本书时非常经典的书籍,完全可以看中文版的,作者翻译的非常到位) 《嵌入式实时操作系统μCOS-II(第二版)》--邵贝贝翻译的(不能不承认邵贝贝是一个非常好的翻译者) 《μC/OS-Ⅱ标准教程》--杨宗德 对于英文不好的朋友可以购买《ARM体系结构与编 阅读全文
posted @ 2011-12-24 10:05 [无名] 阅读(5559) 评论(0) 推荐(0)
摘要:#include<stdio.h>int main(void){ int f = 4; int g = 5; float h = 5.0f; printf("%d\n", f, g); printf("%d %d\n", f); printf("%d %f\n", h, g); return 0;} 上面的代码是错误的。参数不正确。第四章学习知识点:函数:strlen()关键字:const字符串:如何创建和存储字符串如何使用scanf()和printf()读取和显示字符串如何使用strlen()函数获取字符串的长度使用C预 阅读全文
posted @ 2011-12-22 04:35 [无名] 阅读(1615) 评论(0) 推荐(0)
摘要:可以用typedef声明新的类型名来代替已有的类型名。如: typedef int INTEGERtypedef float REAL底子太薄了,哎,惭愧,看看基本运算符吧,赋值运算符:“=”表示,左操作数是一个变量,右操作数可以是其他的表达式,它表示将表达式计算结果的值赋给左边的变量。除法(/)运算的2个变量均为整型,则结果为整除取整。否则结果就是浮点型的。参与模运算(%)的2个变量只能是整型,而不能是浮点型。全局变量初始化默认是0,不过局部变量就是未知数了!等号的返回值:等号返回的是“=”右边的值! 阅读全文
posted @ 2011-12-21 04:55 [无名] 阅读(236) 评论(0) 推荐(0)
摘要:一、内部函数一个函数只能被本文件中其他函数调用,它称为内部函数。在定义内部函数时,在函数名和函数类型的前面加static.static int fun(int a, int b)内部函数又称为静态函数。通常把只能由同一文件使用的函数和外部变量放在一个文件中,在它们前面都冠以static使之局部化,其他文件不能引用。二、外部函数(1)在定义函数时,如果在函数首部的最左端冠以关键字extern,则表示此函数时外部函数,可供其他文件调用。extern int fun(int a, int b)C语言规定,如果在定义函数时省略extern,则隐含为外部函数。(2)在需要调用此函数的文件中用extern 阅读全文
posted @ 2011-12-21 03:18 [无名] 阅读(904) 评论(0) 推荐(0)
摘要:(*(void(*)())0)(),这是在C陷阱与缺陷中,关于解决计算机开机启动后,硬件读取首地址为0位置的子例程的代码。 先看(*fp)(),fp是一个函数指针,*fp就是该指针所指向的函数,(*fp)()就是调用该函数的方式。 我们按照题目要求假设可以的话,则字面上可以写成(*0)();但是,正如(*fp)(),运算符*必须要一个 指针来作操作数,并且是函数指针,这样经过运算符*作用后的结果才能作为函数被调用。因此 ,需要对0进行类型 转换,转换后的意思可以描述为:指向返回值为void类型的函数的指针,其等价于( void (*) () )0。(*0)()加上 0转换后的类型为(... 阅读全文
posted @ 2011-12-21 02:40 [无名] 阅读(672) 评论(0) 推荐(0)
摘要:优先级运算符名称或含义使用形式结合方向说明1[]数组下标数组名[常量表达式]左到右()圆括号(表达式)/函数名(形参表).成员选择(对象)对象.成员名->成员选择(指针)对象指针->成员名2-负号运算符-表达式右到左单目运算符(类型)强制类型转换(数据类型)表达式++自增运算符++变量名/变量名++单目运算符--自减运算符--变量名/变量名--单目运算符*取值运算符*指针变量单目运算符&取地址运算符&变量名单目运算符!逻辑非运算符!表达式单目运算符~按位取反运算符~表达式单目运算符sizeof长度运算符sizeof(表达式)3/除表达式/表达式左到右双目运算符*乘表 阅读全文
posted @ 2011-12-21 01:14 [无名] 阅读(221) 评论(0) 推荐(0)
摘要:打基础还是多看C语言,指针结构体, 阅读全文
posted @ 2011-12-20 00:30 [无名] 阅读(193) 评论(0) 推荐(0)
摘要:#include "..\inc\config.h"void Main(void){ Target_Init(); //目标板初始化,在target.c中定义 Delay(10); //串口0输出 Uart_Printf(0,"***********************\n"); Uart_Printf(0,"欢迎使用ADS开发环境\n"); Uart_Printf(0,"*****************... 阅读全文
posted @ 2011-12-19 20:21 [无名] 阅读(585) 评论(0) 推荐(0)
摘要:都好几天没更新了,主要是UCOS晕了,今天来点简单的吧.先看看GPOI的输入实验:按键电路图:GPF1管教的功能:EINT1要使用GPF1作为EINT1的功能时,只要将GPFCON的3:2位配置成10就可以了!GPF1先配置成Input,先上一个简单的输入输出操作程序吧,惭愧 unsigned char temp_io; temp_io = 0; rGPBDAT = temp_io; while(1) { if( (rGPFDAT & 0x000000002) == 0x00000000) { rGPBDAT = temp_io; temp_io = ~temp_io; } } ... 阅读全文
posted @ 2011-12-18 13:10 [无名] 阅读(380) 评论(0) 推荐(0)
摘要:简单的介绍 打今天起菜鸟的ARM笔记算是开张了,也算给我的这些笔记找个存的地方。为什么要发布出来?也许是大家感兴趣的,其实这些笔记之所以叫笔记而不是文章,是因为它们完全是本人个人学习经验的总结,而这些经验都来自于其他前辈的无私奉献,在这里对这些乐于发表自己经验的前辈致以由衷的感谢!现在我把这些前辈的文章经过自己的理解写出来一方面是对于他们的尊重,另一方面也希望觉得本人的笔记有参考意义的朋友把这种精神继续传下去。再次声明,本人确实是个菜鸟,现在手头的板子是自己画的,以RT&ZQ的板子为底版,对部分电路进行了改动。比如加入了SD卡,IIC总线键盘,触摸屏,GPS,GPRS等等。并对LCD接 阅读全文
posted @ 2011-12-17 18:34 [无名] 阅读(3156) 评论(0) 推荐(0)
摘要:也不知道自己考了多少次四级了,说来惭愧啊!考了这么次都没过,也没啥说的主要是自己没花时间,也不能怨天尤人!可能以后都没机会了。给自己的人生留下了一个遗憾! 今天已经是12月17号了,也该醒悟了,时间真的不多了,抓紧时间!不努力永远改变不了现状,世上哪有随便掉馅饼,就算掉下来了也要起早啊!记住今天考四级的场景,2012/12/17好好记住。冰冻三尺非一日之功!罗马不是一天建成的! 阅读全文
posted @ 2011-12-17 13:45 [无名] 阅读(175) 评论(0) 推荐(0)
摘要:首先下载UCOS-II源码,官方网址是http://micrium.com/page/home在官网上下载2个文件,一个是UCOS系统的源码包以及针对ARM9-S3C2410移植好的文件。 阅读全文
posted @ 2011-12-13 21:13 [无名] 阅读(539) 评论(0) 推荐(2)
摘要:ARM裸机篇---启动代码分析 先搞清楚启动代码和Bootloader的区别,启动代码是指CPU复位后到进入C语言的main函数之前需要执行的那段汇编代码。下面的代码先暂且这样吧,没啥注释的,时间关系,我还是先搞些应用再说^_^;=========================================; NAME: 2410INIT.S; DESC: C start up codes; Configure memory, ISR ,stacks; Initialize C-variables; HISTORY:; 2002.02.25:kwtark: ver 0.0; ... 阅读全文
posted @ 2011-12-13 11:01 [无名] 阅读(4467) 评论(1) 推荐(1)
摘要:BANK0 0x0000 0000 ~~ 0x0800 0000还是算几条地址线好算点,总共27条地址线,所以是128MB, 阅读全文
posted @ 2011-12-13 08:54 [无名] 阅读(1132) 评论(0) 推荐(0)
摘要:问渠哪得清如水,为有源头活水来!老天终于让我点亮华恒板子上一盏灯!这个电路不解释了,看看和CPU是怎么连接的吧!TOUT0 is the PWM output这里提示到TOUT0是一个PWM的输出脚,然后接一个灯来显示状态吧!上图:The Wave Form When a Dead Zone Feature is Enabled,当死区被允许的时候的波形图!先看看GPIO的时候吧,这个脚是个复用脚,可以当做普通IO脚来用,从上图中可以看出TOU0和GPB0复用脚。先玩熟IO操作在谈高级点的,学会走路要紧。接下来操作IO口了。先看看GPB组这组GPIO。上图中就是GPB这组GPIO了,GPB总共 阅读全文
posted @ 2011-12-12 19:35 [无名] 阅读(269) 评论(0) 推荐(0)
摘要:终于谈到流水灯了,先看看电路图吧,图1图1中所示的电路图是Led外接部分,上拉电阻方式连接,然后采用灌电流方式点亮LED灯,主要是看它怎么和我们主控芯片S3C2440相连接。图2图2所示就是LED的负极和S3C2440芯片相连接的部分图了,用到的GPIO脚是GPB7、GPB8、GPB5、GPB6。然后再查DATASHEET即可查到GPB的控制寄存器:图3 GPB配置寄存器、数据寄存器、上拉使能寄存器上图3就是GPB这组IO口的寄存器说明部分了,有各自的地址和说明和复位的初始值,还有为这组IO口保留的寄存器地址。当然我们只用到了GPB、5、6、7、8这4个GPIO口,下面继续看这三个寄存器的详细 阅读全文
posted @ 2011-12-10 21:31 [无名] 阅读(1218) 评论(0) 推荐(0)
摘要:串口应该都很熟悉了,具体通信原理我就不提了,这个百度上都很多讲的,然后就直接看函数了。void Uart_SendByte(int data)//这个函数是发送整型数据,参数为data{ if(whichUart==0)//这个是选中串口0 { if(data=='\n')//然后判断数据不为空 { /*寄存器的原始宏定义, #define rUTRSTAT0 (*(volatile unsigned *)0x50000010) //UART 0 Tx/Rx status*/ while(!(rUTRSTAT... 阅读全文
posted @ 2011-12-08 15:03 [无名] 阅读(5982) 评论(0) 推荐(0)
摘要:汇编: EXPORT Fi EQU 5 AREA F,CODE,READONLY IMPORT g ;使用伪操作IMPORT声明C函数g() ENTRY STR LR,[SP,#-4]! ;保存返回地址 MOV R0,#i ADD R1,R0,R0 ;假设进入程序f时,R0中为i,R1值为2*i ADD R2,R1,R0 ;R2值为3*i ADD R3,R1,R2 ;R3值为5*i STR R3,[SP,#-4]! ;第五个参数5*i通过数据栈sp传递 ADD R3,R1,R1 ;R4值为4*i BL g ;调用c函数g() A... 阅读全文
posted @ 2011-12-08 11:04 [无名] 阅读(3184) 评论(0) 推荐(0)
摘要://汇编与C语言混合编制实验//c程序#include <stdio.h>void strcopy(char *src,const char *dst){int ch;__asm{loop:LDRBch,[src],#1;将src中的字数据写入到变量ch中,并将新地址src+1写入src中。 STRBch,[dst],#1CMPch,#0;BNEloop}}int main(void){const char *a="Hello world!";char b[20];__asm{MOVR0,a//地址赋值MOVR1,b//数组地址赋值BLstrcopy,{R0,R 阅读全文
posted @ 2011-12-07 22:18 [无名] 阅读(341) 评论(0) 推荐(0)
摘要://对0x30100000地址处,分别作字长、半字、字节的读、写int main(void){ unsigned long *ptr =(unsigned long*)0x30100000; unsigned short *ptrh=(unsigned short*)0x30100000; unsigned char *ptrb=(unsigned char*)0x30100000; unsigned char tmpb; unsigned short tmph; unsigned long tmpw; *ptr=0x12345678; tmpw=*ptr; //字长读 *ptr=t... 阅读全文
posted @ 2011-12-07 20:36 [无名] 阅读(695) 评论(0) 推荐(0)
摘要:前面2个都是ARM汇编指令,这个是Thumb,最大的区别就是一个是32位的,一个是16位的,Thumb状态下的寄存器集的子集这个还是慢慢在领会和ARM汇编之间的区别吧,在编写Thumb指令时,先要使用伪指令CODE16声明,而且,在ARM指令中要使用BX指令跳转到Thumb指令,以切换处理器状态。编写ARM指令时,则可使用伪指令CODE32声明。先看程序:;第一段 AREA EXAMPLE3,CODE,READONLY ENTRYMAIN ADR R0,THUMBPROG+1;这里为啥要加1呢,主要是因为:n(1)当操作数寄存器的状态位(位[0])为1时,执行BX指令进入Thumb状态。如果. 阅读全文
posted @ 2011-12-06 10:35 [无名] 阅读(2940) 评论(0) 推荐(0)
摘要:原来只知道一个MOV指令,却不知道还有个MOVS,在书上查找了只有MOV传送指令,num EQU 20;定义一个常量num,值为20;---------------------------------------------------------------------------------------------------;AREA分析如下:;语法格式:;AREA 段名 属性1,属性2,。。。;AREA伪指令用于定义一个代码段或数据段。其中段名若以数字开头,则该段名需用"|";括起来,如|1_test|;属性字段表示该代码段(或数据段) 的相关属性,多个属性用逗号分 阅读全文
posted @ 2011-12-05 09:59 [无名] 阅读(2066) 评论(0) 推荐(0)
只有注册用户登录后才能阅读该文。
posted @ 2011-12-04 21:47 [无名] 阅读(255) 评论(0) 推荐(1)
摘要:为了方便日后查找我还是把一些牛人们的博客地址整理下吧:山哥's 专栏这里记录着我和Java一起走过的一段日子...............【合作双赢】,记住这它,也记住我fudan_abc的Linux内核专栏Linux那些事儿 | Linux内核修炼之道宋宝华:Inside SW,FW and H... 阅读全文
posted @ 2011-12-04 20:24 [无名] 阅读(363) 评论(0) 推荐(0)
摘要:num EQU 3 ;定义一个常量num,值为3 AREA EXAMPLE1,CODE,READONLY ;声明一个代码,名为EXAMPLE1 ENTRY ;指定程序入口点START MOV R0,#1 ;将立即数1保存到R0中 MOV R1,#num ;将常量num的值保存到R1中 BL EMBED ;调用子程序EMBEDEMBED ;子程序开始 ADD R0,R0,R1 ;将R0、R1中的值相加,保存在R0中 MOV PC,LR ;将LR中的值送回PC寄存器, END ;本源程序结束上面这个... 阅读全文
posted @ 2011-12-04 18:50 [无名] 阅读(330) 评论(0) 推荐(0)
摘要:经过一段纠结终于把H-JATG连上了,不容易啊,现在先记下参数来。先看看脚本文件吧:下面这个是2410烧写FLASH的配置脚本文件:FLASH SECTION:SSTSST39VF1601MEMORY SECTION:16-BIT X 1-CHIP0x000000000x30000000XTAL SECTION:NULLTCK SECTION:-1-1SCRIPT SECTION:SoftReset+++Setmem+32-Bit+0x53000000+0x00000000 Setmem+32-Bit+0x4A000008+0xFFFFFFFFSetmem+32-Bit+0x4A00001.. 阅读全文
posted @ 2011-12-04 15:47 [无名] 阅读(866) 评论(0) 推荐(0)
摘要:linux驱动面试题1.解释命令ls-amore具体含义.2.LINUX中的管道指什么重定向又指什么3.GCC-g-otest.elftest.c的具体含义.4.浅述GCC编译器在编译时都有哪几个过程5,在题3的基础上编写一MAKEFILE文件,要求能自动完成编译和清除功能6.说明uclinux和linux的区别7解释下面一组GDB命令的含义.break94runinfoline1218.什么是链接脚本其作用是什么请编写一个简单的链接脚本9.编写一个SHELL脚本程序,将当前目录及其子目录中所有后缀为.O类型文件的文件名输出到用户指定的文件中.10.请写出5个LINUX基本系统调用的函数名称. 阅读全文
posted @ 2011-12-02 23:54 [无名] 阅读(7923) 评论(4) 推荐(1)
摘要:2011年12月1日星期四今天结束了大学的最后一场考试,终于有时间来发菜农大叔的贴了,非常兴奋啊!开始着手定时器的学习,先看芯片手册。芯片内部集成定时器控制器,定时器模块包括4组32位的定时器。TIMER0~TIMER3,提供用户便捷的计数定时功能。定时器模块可支持频率测量,计数,间隔时间测量,时钟产生,延迟时间等功能,定时器可在计时溢出时产生中断信号,也可在操作的过程中提供计数的当前值。在看看系统内存映射:地址空间 标志 控制器Flash & SRAM内存空间0x0000_0000 – 0x0001_FFFF FLASH_BA Flash内存控制空间0x2000_0000 - 0x2 阅读全文
posted @ 2011-12-01 19:37 [无名] 阅读(4017) 评论(0) 推荐(0)