LPC21XX系列 ARM编程要点:
1. 未使用的引脚初始化时设置为输出。
2. 从掉电模式唤醒后,PLL的恢复必须由软件完成。通常先将PLL激活并等待锁定,然后再将PLL连接。
3. 复位后,存储器加速模块MAM默认为禁止状态。在改变MAM定时值时,必须先关闭MAM。
4. 在编程和操作过程中不允许访问Flash存储器。
5. 3.3V和1.8V电源设计最大电流分别为600mA和300mA,可使用SPX1117。
6. ARM端口做输入输出时与单片机有区别,实例如下:
a) 要将P0.8、P0.9设置为TxD1、RxD1,则PINSEL0=(PINSEL0 & 0xFFF0FFFF)|(0x05<<16)
b) 设置P0.0为高电平,则程序为
PINSEL0=PINSEL0 & 0xFFFFFFFC 设置P0.0为GPIO
IO0DIR= IO0DIR | 0x00000001 设置P0.0方向为输出
IO0SET= 0x00000001 设置P0.0口状态,输出高电平
c) 读取P0.0引脚状态,则程序为
PINSEL0=PINSEL0 & 0xFFFFFFFC 设置P0.0为GPIO
IO0DIR= IO0DIR & 0xFFFFFFFE 设置P0.0方向为输入
PinStat=IO0PIN 从IO0PIN读取P0.0口状态
d) 将八位无符号整形变量Data输出到P0.0~P0.7,则程序为
PINSEL0=PINSEL0 & 0xFFFF0000 设置P0.0为GPIO
IO0DIR= IO0DIR | 0xFF 设置P0.0~P0.7方向为输出
IO0CLR= 0xFF 清零P0.0~P0.7的输出状态
IO0SET=Data Data中为1的位输出高电平
e) 将八位无符号整形变量Data输出到P0.0~P0.7,则程序为
PINSEL0=PINSEL0 & 0xFFFF0000 设置P0.0为GPIO
IO0DIR= IO0DIR | 0xFF 设置P0.0~P0.7方向为输出
IO0PIN= (IO0SET & 0xFFFFFF00)| Data 写IO0PIN,输出数据
7. 关于中断
在处理IRQ中断过程中,IRQ中断默认是被禁止的;
在启动代码中默认是关闭IRQ和FIQ的,如果要使用需要设置CPSR寄存器的I位或F位,这需要在特权模式下处理,最简单的方法是在启动代码中设置;
8. 关于SPI
SPI控制寄存器用来控制SPI时钟,通过SPI状态寄存器的SPIF位可查询数据传输是否完成,SPI数据寄存器用于提供发送和接收的数据字节。
SPI可设置成主机模式或者从机模式。处于主机模式时,SPI时钟寄存器用来控制时钟频率,该寄存器必须在数据传输之前设定。处于从机模式时,该寄存器无效。当设计为从机模式时,其对应的SSEL被选中时才有效。当设计为主机模式时,对应的SSEL端口需接上拉电阻(置高)。