NXP

NXP-LPC1768起步之开发环境搭建与GPIO

2019-07-12 11:16发布

1.环境搭建 本工程使用ARM公司MDK414.低版本的可能会导致在MDK中无法下载调试程序。仿真器使用SEGGER公司JlinkV7。 首先新建工程GPIO,选择路径保存,然后会出现选择芯片界面
然后确定新建主文件main.c并追加到工程。 在设置中Option for Target--> Debug中选择Cortesx-M/R J-LINK/J_Trace然后Setting 让系统自动识别Jlink(需要先装好Jlink的驱动,硬件连接好)
Port选SW模式 然后在flash download 中选择编程算法LPC17XX IAP 512kB flash,确定Debug。 然后在Utility中同样按照Debug中选择设定
在Output中勾选Create HEX File,可以生成16进制可执行文件。确定设置就OK。 2.GPIO程序 GPIO操作主要需要配置IO口,IO口为多功能口,设置为IO口,主要设置PINSEL寄存器。然后模式寄存器PINMODE,选择使能上下拉电阻。再然后需要设置IO输入输出寄存器FIODIR。IO口高低电平控制有两种方法,都需要打开MIOMASK(默认是打开的),一种是配置FIOPIN使IO输出高低电平,另一种是配置FIOSET和FIOCLR向对应位写一使IO管脚相应输出高低电平。 /************************************************************************************* * main.c: the main file * NXP --> LPC1768 * * * Author : light * Date : 2012-4-12 * ***************************************************************************************/ #include /******************************************************************************** ** Descriptions :Function that initializes LEDs ** ** parameters :None ** Returned value :None *********************************************************************************/ void DelayMs(unsigned int m) { int i,j; for(i=m;i>0;i--) { for(j=3000;j>0;j--); } } /*-------------------------------------------------------------------------------- PINSEL0 引脚名称 00 01 10 11 复位值 1:0 P0.0 GPIO P0.0 RD1 TXD3 SDA1 00 3:2 P0.1 GPIO P0.1 TD1 RXD3 SCL1 00 5:4 P0.2 GPIO P0.2 TXD0 AD0.7 保留 00 7:6 P0.3 GPIO P0.3 RXD0 AD0.6 保留 00 9:8 P0.4 GPIO P0.4 I2SRX_CLK RD2 CAP2.0 00 11:10 P0.5 GPIO P0.5 I2SRX_WS TD2 CAP2.1 00 13:12 P0.6 GPIO P0.6 I2SRX_SDA SSEL1 MAT2.0 00 15:14 P0.7 GPIO P0.7 I2STX_CLK SCK1 MAT2.1 00 17:16 P0.8 GPIO P0.8 I2STX_WS MISO1 MAT2.2 00 19:18 P0.9 GPIO P0.9 I2STX_SDA MOSI1 MAT2.3 00 21:20 P0.10 GPIO P0.10 TXD2 SDA2 MAT3.0 00 23:22 P0.11 GPIO P0.11 RXD2 SCL2 MAT3.1 00 29:24 - 保留 保留 保留 保留 0 31:30 P0.15 GPIO P0.15 TXD1 SCK0 SCK 00 --------------------------------------------------------------------------------*/ /*-------------------------------------------------------------------------------- PINMODE0 符号 值 描述 复位值 PORT0引脚0片内上拉/下拉电阻控制 1:0 P0.00 模式 00 P0.0引脚使能上拉电阻 00 01 P0.0引脚使能中继模式 10 P0.0引脚既不上拉,也不下拉 11 P0.0引脚使能下拉电阻 … 31:30 P0.15模式 PORT0引脚P0.15片内上拉/下拉电阻控制 00 --------------------------------------------------------------------------------*/ /*-------------------------------------------------------------------------------- 位 符号 值 描述 复位值 31:0 FP0DIR 高速GPIO方向PORTx控制位。 0x0 FP1DIR FIOxDIR的位0控制引脚Px.0, FP2DIR FIOxDIR的位31控制引脚Px.31 FP3DIR 0 控制的引脚为输入引脚 FP4DIR 1 控制的引脚为输出引脚 --------------------------------------------------------------------------------*/ /*-------------------------------------------------------------------------------- 位 符号 值 描述 复位值 31:0 FP0SET 高速GPIO输出值设置位。 0x0 FP1SET FIOxSET的位0控制引脚Px.0, FP2SET FIOxSET的位31控制引脚Px.31 FP3SET 0 控制的引脚输出不改变 FP4SET 1 控制的引脚输出被设为高电平 --------------------------------------------------------------------------------*/ /*-------------------------------------------------------------------------------- 位 符号 值 描述 复位值 31:0 FP0CLR 高速GPIO输出值清零位。 FP1CLR FIOxCLR的位0控制引脚Px.0, FP2CLR FIOxCLR的位31控制引脚Px.31 FP3CLR 0 控制的引脚输出不改变 FP4CLR 1 控制的引脚输出设为低电平 0x0 --------------------------------------------------------------------------------*/ /*-------------------------------------------------------------------------------- 位 符号 值 描述 复位值 31:0 FP0VAL 高速GPIO输出值设置位。 0x0 FP1VAL FIOxPIN的位0对应引脚Px.0, FP2VAL FIOxPIN的位31对应引脚Px.31 FP3VAL 0 控制的引脚输出设为低电平 FP4VAL 1 控制的引脚输出设为高电平 --------------------------------------------------------------------------------*/ /*-------------------------------------------------------------------------------- 位 符号 值 描述 复位值 0x0 31:0 FP0MASK 0 高速GPIO物理引脚访问控制受到FIOxSET、FIOxCLR和FIOxPIN寄存器的写操作影响。 FP1MASK 控制的引脚引脚的当前状态可从FIOxPIN寄存器中读出。 FP2MASK FP3MASK 1 控制的引脚不受FIOxSET、FIOxCLR和FIOxPIN寄存器的写操作影响。 FP4MASK 读取FIOxPIN寄存器时,该位将不会通过物理引脚的状态更新 --------------------------------------------------------------------------------*/ /******************************************************************************** ** Descriptions :Function that initializes LEDs ** ** parameters :None ** Returned value :None *********************************************************************************/ void LedInit(void) { // PINSEL4,PINSEL5 设定P2.0 -- P2.32 端口功能(00,01,10,11) LPC_PINCON->PINSEL4 &= 0XFFFF0000; // p2.0--p2.7设置为IO LPC_PINCON->PINMODE4 &= 0XFFFF0000; // p2.0--p2.7设置为上拉电阻使能 LPC_GPIO2->FIODIR |= 0X000000FF; // p2.0--p2.7设置为输出 } /******************************************************************************** ** Descriptions :Function that LED on ** ** parameters :n , which led is on ** Returned value :None *********************************************************************************/ void LedNOn(unsigned int n) { LPC_GPIO2->FIOSET = (1<FIOCLR = (1<=0;loc--) { LedNOn(loc); DelayMs(1000); LedNOff(loc); DelayMs(1000); } } }