ImageVerifierCode 换一换
格式:DOC , 页数:30 ,大小:2.13MB ,
资源ID:3532668      下载积分:20 文钱
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,省得不是一点点
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.wenke99.com/d-3532668.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: QQ登录   微博登录 

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(自己的ARM学习历程(入门版).doc)为本站会员(sk****8)主动上传,文客久久仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知文客久久(发送邮件至hr@wenke99.com或直接QQ联系客服),我们立即给予删除!

自己的ARM学习历程(入门版).doc

1、第一部分 罗嗦与废话(必看)我写这个,再次申明:这不是教程,至少不是教科书式的教程。只是自己学习的一个过程,准确说是我个人学习的一个思维方式,学习顺序。可能我后面的写的有些乱,又有些天马行空,不过这真正是反映我学习的一个先后过程。 说实话,入门真的很痛苦,那种徘徊再门外而不得要领的感觉真的很痛苦,论坛上大多数教程啊例子什么的都是 ADS 的,刚看时那个郁闷啊,特别是对于学单片机用惯 KEIL 的人来说哦,还要再去学 ADS,我们能够像学习 51 单片机一样学习 ARM。 刚开始也是什么都不懂,在论坛上下了好多 ARM 的教程。也逐个浏览下了,就我个人认为,比较好的两本书,也是我自己整个浏览完(

2、注意,是浏览)的两本。一本是“ARM 嵌入式基础教程配套讲义”,这个是 PPT 文档,我没有找到完整的原书。这个教程我从头到尾看了一次,不过看完还是脑袋糊糊的。在这里,我也请大家对它不要钻研,糊糊的看完即可(要看完),大致知道 ARM 是什么意思,知道 ARM 是有一个内核的,ARM 公司开发内核(什么 ARM7,ARM9,AR1M1就是内核不同),然后交给其他公司添加其他外围设备,所以导致 ARM有衍生出很多种类;然后知道 ARM 都几种操作模式,什么用户模式,系统模式等等(我到现在也叫不全),至于具体什么时候用,干什么用,不用管,用的时候再看; 还有就是知道 ARM 分为 ARM 指令集及

3、 Thumb 指令,这个是汇编的,暂且搁搁吧,哎,本来我也是想向 51 一样先学汇编再学 C 的,不过看来看去,还是不知道汇编从何下手;然后看到 PPT 里一直有个什么启动代码的,什么意思?8 懂,留着,到后面就知道了。不过要写出来,有难度。然后。自己看看,反正看完脑袋还是浆糊就对了,你都搞懂了,我想下面的你也不用看了,你是天才。 说说我当初用 keil 学 ARM 的开端。刚开始不知道 keil C51 原来和 KEIL for arm 是两个东西,从论坛上下了例子后,直接 keil 编译,失败 ing。后来下了个 keil for arm 的,想自己建个工程呢,楞是找不到 LPCXX 在哪

4、里,找到 Philips,下面只写着 see NXP就是这个就搞了好久,把 keil C51,KIEL FOR ARM 反复装来装去,然后又下了别的版本的 keil for arm,还是搞不定,再网上找了几个 keil arm的教程,就是看不不到怎么教人找到 LPCXX 栏目的后来,光是这个就搞了两个多星期,没头绪。于是下了个 ADS,看教程,发现。不会用。没法,又转会 keil,一个偶然的以外,被我发现创建时左边有个 NXP 的栏目,于是点开,往下拉,天啊,上帝啊,终于看到然后问题又来了,看了 ADS 的例子(下了一个基于 PROTEUS 的 ARM虚 拟 开 发 技 术 , 是 ADS 的

5、 ), 我 晕 , 文 件 好 多 啊 , 什 么main.c,target.c,starup.c,lpcxx.c,.然后又看 keil 的,我靠,又是一堆文件说实话,对初学者来说,看见这些文件就怕,干嘛搞那么多啊,我无语。 哪些是可以放在一个文件里的?还是必须要分成几个文件的?还是分成的几个文件必须那样命名的?还是这些文件是必须的,哪些是不必要的?哪些是系统的,哪些自己写的,哪些是可以更改的?还机,就建立一个工程,一个程序文件,写两句:SETB P1.0 ,END,OK 。装上那个 dpj.dll(平凡老师的,大家不陌生吧) ,效果就出来的,多为了研究这个问题,我反复实验,一个一个的改,删,

6、得出结论:可以删,通通删(lpcxx。H 是自动生成)。. 然后说说我看的另一本书,也是我现在还在看的一本书(电子档的)“深入浅出 ARM7(上,下)”,这是本好书,建议大家开始写程序看这个。前面的就像看我说的第一本一样,浏览,纯粹的浏览,有个印象即可;有不懂的地方,以后后面写程序时可以再回过头来研究,带着问题学习这是最好的;否则都不明白对后面的学习有什么帮助,看了也白看,没理解,转眼就忘了。 我这里说的,像学 C51 一样学 ARM,只是给大家一个入门的路,只能说入门,更高深的偶也 8 懂。至于到“会” 的程度,我记得曾经学 VC 时有句话说的好“什么叫会 VC,会建个工程,能弹出个Hell

7、o World就叫会 VC 了?”所以这里也说“不是会点亮个 LED 就叫会 ARM的!”至于 “精通”,当今 21 世纪,呵呵,谁敢言“精通” 二字? 那么“入门者 ”和“高手”有什么区别呢?借用当初学单片机时平凡老师的话,“入门者和高手的区别,看到 FEH 这个 16 进制数,入门者只有看到 8 个 LED,7 个灭,1 个亮,然后才能回过头把 FEH 这个数和 LED7 灭 1 亮联想起来;而高手一看到 FEH,脑海里自然就想最后一句正文,我这个应当是大多数正常人的思维模式了,不敢说让大家成为高手,不过入个门应该不是什么难事。如果最后还没有入门的人,只能说我的思维方式不适合你。一种要么你

8、是牛 B 的天才,好了,废话就说到这里了,脑袋又糊了,打游戏去。 王谷成 于 2008 年 12 月 8 日星期一 农历戊子鼠年 冬月十一 晚 第二部分 像学 51 一样学 ARM 一些说明:本文所述的以及附带的 keil-protues 仿真例子,我都一一重新运行了的,能够 protues 仿真,然后基本上逐条逐句都有详尽的注释。例子以及注释主要参考了论坛下的“基于 PROTEUS 的 ARM 虚拟开发技术”(光盘)和 “深入浅出 ARM7(上,下)”,不过不是像“基于”样完全照抄“深入” ,其中有我自己的理解,有些地方有疑问的我都标出了,哪位如果后来解决了可以发到论坛共享下。 我使用的 k

9、eil for arm 版本是 mdk 3.22a,protues 版本是protues 7.2 sp6(自己装第三方库).如果有人仿真不能的话,估计可能是软件版本的问题。大家可以网上搜搜自己下载。 1:开始创建工程点亮一个 LED 还是从最简单的开始,点亮一个 LED。 打开 keilu3(mdk3.22a),进入时如下图: 然后选择 project(工程)New uVision Project(新工程),起一个工程名,保存。 然后进入如下界面 下拉滚条,找到 NXP(founded by Philips),展开,下拉滚条,选择自己所用的 ARM 型号(我下面的都是 LPC2131 的) 确

10、定后弹出一个对话框如下,问你是否要加载启动代码,选择是,这里必须要加载启动代码(不像 51,加启动代码 A51 反而出错) 然后就是和 keil C51 一样了,建立一个程序文件,加载到工程里。然后写程序,编译,链接。要生成 HEX 代码的话,要在 target 里设置,如下图: 好了,开始点亮一个 LED 使用的是 LPC2131,点亮 LED2. 程序如下(后续省略,建附带的例子文件): #include int main() PINSEL0=0X00000000; /P0 口配置为 GPIO 功能 IODIR0=0XFFFFFFFF; IOSET0=0XFFFFFFFF; 闭 IOCLR

11、0=0X00000002; LED KEIL 编译会警告 /P0 口为输出状态 /P0 口置高电平,所有 LED 关/P0.1 置低电平,点亮第二个/这里(19 行)必须空出一行,否则具体的可以看 keilprotues 的例子。 在这里,include 表示是包含一个 LPC213X.H 的文件这个文件在.keilARMINCPhilips 目录下,里面有一些关于寄存器地址的定义,至于到底是如何定义的,先不管他,反正知道用 C语言写,都要包含这个文件就是了。 然后是 PINSEL0=0X00000000 这句,表示把 P0 口用作 GPIO 功能。在 ARM 里,每一个端口可能有很多功能,什

12、么 GPIO,串口,IIC,SPI等等等等,而要让每个端口工作在什么功能下,就要靠 PINSEL0 或PINSEL1 这两个寄存器来选择了,GPIO- General Purpose Input Output,通用输入输出,就是指那些可以通过软件把输入输出设置为高低电平 1,0 之类的端口,类似与 C51 中的 P0,P1,P2 等口。在 ARM里,各端口的默认功能是 GPIO,所以这一句 PINSEL0=0X00000000 可以不要。 IOSET0=0XFFFFFFFF; IOCLR0=0X00000002;IOSET0,IOCLR0 是 P0口设置高低电平的两个寄存器,只有当选择 GPIO 功能时才有效。IOSET0,IOCLR0 为 1 时,相应的端口才输出高或低电平,注意,不是IOCLR0=0 输 出 低 电 平 , IOSET0,IOCLR0 为 0 时 , 也 就 是 说 对IOSET0,IOSET1 赋值(写)0 是无效的。 最后一点,貌似是 mdk 的 BUG?就是 C 程序写完后,要空一行,注意,这行必须是空的,不能有任何字,注释的也不行,否则 keil编译会有警告,可以看看附带的例子,删掉空行试试。

Copyright © 2018-2021 Wenke99.com All rights reserved

工信部备案号浙ICP备20026746号-2  

公安局备案号:浙公网安备33038302330469号

本站为C2C交文档易平台,即用户上传的文档直接卖给下载用户,本站只是网络服务中间平台,所有原创文档下载所得归上传人所有,若您发现上传作品侵犯了您的权利,请立刻联系网站客服并提供证据,平台将在3个工作日内予以改正。