EASY arm 2200我进入嵌入式开发的台阶(引脚连接)

来源:互联网 发布:时间序列预测 python 编辑:程序博客网 时间:2024/06/06 09:30
我顶 字号:

文章来源: http://blog.21ic.com/user1/898/archives/2005/2702.html


一,引脚连接模块:
  1.  以下为LPC2210芯片.
       管脚连接模块其实是我们接触ARM首先用到的,因为ARM的管腿大多数是复用的,也就是说一个管腿可以做两种或者三种功能使用,而选择管脚的功能就是靠这 个引脚连接模块了.之所以我先学习这个是因为在我的MCS51的生涯中主程序一上来基本上都是进行一些初始化,这让我联想到现在的 ARM身上,当我们使用ARM的时候,用户程序中的主程序我想也不过如此,无非是把各个管腿的功能预先设定好.然后进入主程序的循环.不知道我说的有道理 吗?希望高手们和同我一样的朋友们指正.
      1.应该关注的设置寄存器(我也不知道这样叫合理不合理,如果不合理请您告诉我:)):
       A.   PINSEL0   AND    PINSEL1
    我之所以这样写是由于PINSEL0和PINSEL1每两位控制一个P0口的位,比如PINSEL0[1:0]是设置P0.0口的功能,如果 PINSEL0[1:0]=00的话那么P0.0口的功能就是普通IO口的功能,依次类推PINSEL0和PINSEL1是联合起来配置P0口的.在这里 需要大家注意的是P0.26和P0.31管腿为保留管腿,我们在搭建电路的时候不要利用这两个管腿,利用PINSEL0和PINSEL1也是无法设置这两 个口的.具体的设置数值还需要大家在设计的时候查找一下书籍,需要的管腿功能通过查找手册进行设置.
       B.   PINSEL2
PINSEL2就没有PINSEL0和PINSEL1那么好记住了,前面的都是两位对应一个管腿,而一个小小的PINSEL2却控制着P1口P2口 和P3口.我刚开始看的时候脑袋有点发蒙不知道怎么办,但细细一看还是有一定的规律可寻的.下面我就对PINSEL2的32个位的功能简略的描述一下吧.
PINSEL2[1:0]:无法设置不起作用属于系统保留位.
PINSEL2[2]: 这个位在系统进行复位的时候,数值是根据P1.26引脚的电平决定的,如果P1.26接10K的上拉电阻的话此位设置为0,如果接4.7K下拉电阻的话,则此位为1.
PINSEL2[3]:同样如此但是根据P1.20管脚电平定义的,至于他们为1或者为0具体对应的实现的管腿功能请大家还是参考书籍.
PINSEL2[5:4]:此两位所涉及的管腿比较多.具体设置请大家参照书籍,书上提级了此两位的四种模式,但我觉得我们就记住两种就OK了,一 种是为11的时候一种是为10的时候,当为11时是把相应的管腿设置成普通的IO口,当为10的时候是把他们设置成功能管腿.当然在这里当为11的时候有 少数管腿提供了两个功能一个是普通的IO口一个是AD转换功能,这就需要PINSEL2高位进行进一步设置了,实质就是前面做了大面上的分配,然后在更高 位上进行细致的分配.PINSEL2后面的高位设置也都遵循着这样的规律,在此就不一一列举,我觉得关于这些具体的数值大家了解一下就OK了,到具体做项 目应用的时候翻开我们可爱的书籍进行查找很方便的,而不用费劲脑子记住这些数据,反正我是放弃了呵呵:0.
 
2.启动代码相关部分:
RESETINIT:
                  LDR        R0,PINSEL2
IF:              DEF:EN_CRP
                  LDR     R1,=0X0F814910
                  ELSE
                  LDR     R1,=0X0F814914
                 ENDIF
                 STR     R1,[R0]
代码的解释:将PINSEL2的地址装入R0,然后判断EN_CRP这个宏是否有预定义,大家肯定是不理解,其实说实话我也不理解呵呵,只是书上说 不用关注 这个宏这个宏不需要用户预定义,而是通过ADS里只要选RELINCHIP目标,编译器将会自动预定义这个宏,大家可以用其中这两个数值对照一下 书上,可以发现当有这个宏定义的时候就禁止了JTAG口调试,大概内没有这个宏的时候是可以使用了JTAG的,.我的理解是,这里仅仅是启动代码,如果我 们在用户程序中强行把PINSEL2设置为一个数值的话编译后即使有了宏也是可以使用JTAG的,不知道对否,还请大家指正呀.希望与大家多交流.
今天就先到这里吧,后面我会把关于GPIO的东西贴上来
 
 
希望大家在底下能够讨论一下关于EN_CRP这个宏的预定义,还有就是虽然启动代码关于管腿连接部分的代码虽然当宏预定义后禁止了JTAG功能,但 是在主程序里如果我们再对PINSEL2进行设置的话还是可以在通过编译后使能JTAG的,希望大家关于这个问题讨论一下.我每天都会关注.