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

1.环境搭建

本工程使用ARM公司MDK414.低版本的可能会导致在MDK中无法下载调试程序。仿真器使用SEGGER公司JlinkV7。

首先新建工程GPIO,选择路径保存,然后会出现选择芯片界面


然后确定新建主文件main.c并追加到工程。

在设置中Option for Target--> Debug中选择Cortesx-M/R J-LINK/J_Trace然后Setting

让系统自动识别Jlink(需要先装好Jlink的驱动,硬件连接好)

NXP-LPC1768起步之开发环境搭建与GPIO_第1张图片

Port选SW模式

然后在flash download 中选择编程算法LPC17XX IAP 512kB flash,确定Debug。

然后在Utility中同样按照Debug中选择设定

NXP-LPC1768起步之开发环境搭建与GPIO_第2张图片

在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<LPC17XX.h>

/********************************************************************************
** 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<<n);		
}
/********************************************************************************
** Descriptions			:Function that LED off
**
** parameters			:n , which led is 0ff
** Returned value		:None
*********************************************************************************/
void LedNOff(unsigned int n)
{
	LPC_GPIO2->FIOCLR = (1<<n);		
}

/*----------------------------------------------------------------------------
  The main Function 
 *----------------------------------------------------------------------------*/
int main(void)
{
	int loc;
	SystemInit();
	LedInit();	  

	while(1)
	{
		for(loc=7;loc>=0;loc--)
		{
			LedNOn(loc);
			DelayMs(1000);

			LedNOff(loc);
			DelayMs(1000);
		}
	

	}

}


你可能感兴趣的:(function,IO,Flash,Parameters,download,FP)