Anda di halaman 1dari 6

3/7/2017 LPC1768:RegisterConfiguration(lpc17xx.

h)Tutorials

(/wiki) (/shop)

LPC1768: Register Con guration(lpc17xx.h) Contents

Objective
In this tutorial we are going to discuss the internal register con guration of lpc1768 or in general lpc17xx family.
At the end of this tutorial you will be familiar with the lpc17xx GPIO and SFR registers and how to access them and con gure them.

LPC1768 Memory Map


As it is 32-bit architecture it can access 2^32 locations(4GB).
This 4Gb of addressable locations are divided into ROM,RAM,GPIO,AHB Peripherals as shown in the below image.
In LPC1768 the GPIO registers are mapped to memory location 0x2009 C000 - 0x2009 FFFF.

(/wiki/File:Lpc1768_Memory_Map.jpg)

Register Con guration


As all the LPC1768 SFRs(Special Function Registers) are de ned in lpc17xx.h, this has to be included at the beginning of our project/code.

LPC1768 has its GPIOs divided into ve ports PORT0 - PORT4, although many of them are not physically 32bit wide. Refer the data sheet for more
info. The Below registers will be used for Con guring and using the GPIOs registers for sending and receiving the Digital signals. A structure

LPC_GPIOn(n= 0,1,2,3) contains all the registers for required for GPIO operation. Refer lpc17xx.h le for more info on the registers.

https://exploreembedded.com/wiki/LPC1768:_Register_Configuration(lpc17xx.h) 1/6
3/7/2017 LPC1768:RegisterConfiguration(lpc17xx.h)Tutorials

(/wiki/File:0_Lpc1768_Gpio.JPG)

PINSEL: GPIO Pins Select Register


Almost all the LPC1768 pins are multiplexed to support more than 1 function. Every GPIO pin has a minimum of one function and max of four
functions. The required function can be selected by con guring the PINSEL register. As there can be up to 4 functions associated with a GPIO pin,
two bits for each pin are available to select the function. This implies that we need two PINSEL registers to con gure a PORT pins. By this the rst
16(P0.0-P0.16) pin functions of PORT0 can be selected by 32 bits of PINSELO register. The remaining 16 bits(P0.16-P0.32) are con gured using
32bits of PINSEL1 register. As mentioned earlier every pin has max of four functions. Below table shows how to select the function for a particular
pin using two bits of the PINSEL register.

Value Function Enumeration

00 Primary (default) function, typically GPIO port PINSEL_FUNC_0

01 First alternate function PINSEL_FUNC_1

10 Second alternate function PINSEL_FUNC_2

11 Third alternate function PINSEL_FUNC_3

FIODIR:Fast GPIO Direction Control Register.


This register individually controls the direction of each port pin.

Values Direction

0 Input

1 Output

FIOSET:Fast Port Output Set Register.


This register controls the state of output pins. Writing 1s produces highs at the corresponding port pins. Writing 0s has no effect. Reading this
register returns the current contents of the port output register not the physical port value.

Values FIOSET

0 No Effect

1 Sets High on Pin

FIOCLR:Fast Port Output Clear Register.


This register controls the state of output pins. Writing 1s produces lows at the corresponding port pins. Writing 0s has no effect.

Values FIOCLR

0 No Effect

1 Sets Low on Pin

FIOPIN:Fast Port Pin Value Register.


This register is used for both reading and writing data from/to the PORT.

Output: Writing to this register places corresponding values in all bits of the particular PORT pins.
Input: The current state of digital port pins can be read from this register, regardless of pin direction or alternate function selection (as long as
pins are not con gured as an input to ADC).
https://exploreembedded.com/wiki/LPC1768:_Register_Configuration(lpc17xx.h) 2/6
3/7/2017 LPC1768:RegisterConfiguration(lpc17xx.h)Tutorials
pins are not con gured as an input to ADC).
Note:It is recommended to con gure the PORT direction and pin function before using it.

Examples
Example 1
Program to demonstrate the LED blinking.
Here rst the PORT2 pins are selected for GPIO using PINSEL register then they are con gured as Output using the FIODIR register.
LEDs are turned ON by sending a high pulse using FIOSET register.
After some time the LEDs are turned OFF by sending the low pulse using FIOCLR register.

1 #include<lpc17xx.h>
2
3 voiddelay(unsignedintcount)
4 {
5 unsignedinti,j;
6 for(i=0;i<count;i++)
7 {
8 for(j=0;j<5000;j++);
9 }
10 }
11
12 /*startthemainprogram*/
13 voidmain()
14 {
15 SystemInit();//ClockandPLLconfiguration
16 LPC_PINCON>PINSEL4=0x000000;//ConfigurethePinsforGPIO;
17 LPC_GPIO2>FIODIR=0xffffffff;//ConfigurethePORTpinsasOUTPUT;
18
19 while(1)
20 {
21
22 /*TurnONalltheledsandwaitforonesecond*/
23 LPC_GPIO2>FIOSET=0xffffffff;//MakeallthePortpinsashigh
24 delay(1000);
25
26 /*TurnOFFalltheLEDsandwaitforonesecond*/
27 LPC_GPIO2>FIOCLR=0xffffffff;//MakeallthePortpinsaslow
28 delay(1000);
29 }
30 }

lpc1768_LedBlink.c view raw https://gist.github.com/SaheblalBagwan/17f76fb2a94206a9ee08/raw/e216e8e1ef4c6866a8ed8c0d148320856c11b824/lpc1768_LedBlink.c


https://gist.github.com/SaheblalBagwan/17f76fb2a94206a9ee08#filelpc1768_ledblinkc hosted with by GitHub https://github.com

Example 2

This is second approach in which FIOPIN register is used for both setting and clearing the PORT pins.
Writing Logic 1 will set the PORT pin and writing 0 will Clear the particular PORT bit.

1 #include<lpc17xx.h>
2
3 voiddelay(unsignedintcount)
4 {
5 unsignedinti,j;
6 for(i=0;i<count;i++)
7 {
8 for(j=0;j<5000;j++);
9 }

https://exploreembedded.com/wiki/LPC1768:_Register_Configuration(lpc17xx.h) 3/6
3/7/2017 LPC1768:RegisterConfiguration(lpc17xx.h)Tutorials
10 }
11
12 /*startthemainprogram*/
13 voidmain()
14 {
15 SystemInit();//ClockandPLLconfiguration
16 LPC_PINCON>PINSEL4=0x000000;//ConfigurethePinsforGPIO;
17 LPC_GPIO2>FIODIR=0xffffffff;//ConfigurethePORTpinsasOUTPUT;
18
19 while(1)
20 {
21
22 /*TurnONalltheledsandwaitforonesecond*/
23 LPC_GPIO2>FIOPIN=0xffffffff;//MakeallthePortpinsashigh
24 delay(1000);
25
26 /*TurnOFFalltheLEDsandwaitforonesecond*/
27 LPC_GPIO2>FIOPIN=0x00;//MakeallthePortpinsaslow
28 delay(1000);
29 }
30 }

lpc1768_LedBlink1.c view raw https://gist.github.com/SaheblalBagwan/f8d0d23dc5ad283f9e46/raw/645b7355df691c0262848128af081a42ea7accbe/lpc1768_LedBlink1.c


https://gist.github.com/SaheblalBagwan/f8d0d23dc5ad283f9e46#filelpc1768_ledblink1c hosted with by GitHub https://github.com

Using Explore Embedded Libraries:

In the above tutorial we just discussed how to con gure the PORTS for GPIO for blinking the Leds.
Once you know the GPIO con gurations, you can directly use the ExploreEmbedded libraries to play around with LEDs.
For that you need to include the gpio.c/gpio.h and the associated les(delay/stdutils).
The below sample code shows how to use the GPIO functions.

Refer this link for more info on GPIO libraries.

1 #include<lpc17xx.h>
2 #include"delay.h"//Userdefinedlibrarywhichconatinsthedelayroutines
3 #include"gpio.h"
4
5 #defineLEDP2_0//LedisconnectedtoP2.0
6
7 /*startthemainprogram*/
8 voidmain()
9 {
10 SystemInit();//ClockandPLLconfiguration
11 GPIO_PinFunction(LED,PINSEL_FUNC_0);//ConfigurePinforGpio
12 GPIO_PinDirection(LED,OUTPUT); //ConfigurethepinasOUTPUT
13
14 while(1)
15 {
16
17 /*TurnOnalltheledsandwaitforonesecond*/
18 GPIO_PinWrite(LED,HIGH);//MakeallthePortpinashigh
19 DELAY_sec(1);
20
21
22 GPIO_PinWrite(LED,LOW);//MakeallthePortpinaslow
23 DELAY_sec(1);
24 }
25 }

https://exploreembedded.com/wiki/LPC1768:_Register_Configuration(lpc17xx.h) 4/6
3/7/2017 LPC1768:RegisterConfiguration(lpc17xx.h)Tutorials

lpc1768_ledBlink_UsingLib.c view raw https://gist.github.com/Amritach/5093f035b3b75909c255/raw/e6c64ec796e3f899e8c91a2395a8d0e4d86fb61f/lpc1768_ledBlink_UsingLib.c


https://gist.github.com/Amritach/5093f035b3b75909c255#filelpc1768_ledblink_usinglibc hosted with by GitHub https://github.com

Downloads
Download the complete project folder from the below link: https://codeload.github.com/ExploreEmbedded/Explore-Cortex-M3-LPC1768-Stick-
DVB-14001/zip/master (https://codeload.github.com/ExploreEmbedded/Explore-Cortex-M3-LPC1768-Stick-DVB-14001/zip/master)

Have a opinion, suggestion , question or feedback about the article let it out here!

0Comments exploreembedded.com/wiki
1 Login

Recommend Share SortbyBest

Startthediscussion

Bethefirsttocomment.

ALSOONEXPLOREEMBEDDED.COM/WIKI

LPC2148TimersTutorials LPC1768:UploadingHexandBinfiles
1comment6monthsago 1comment6monthsago
swaqHeyy,iwantexternalpulsecountercodeforlpc2148 prakharPleasealsoprovidestepsforlinux.Ididcopypastedthe
main.binoftheLEDexample.andpressthereset.(Ialsotypedthe'sync'
commandtoensureitis

LPC1768:Lcd4bit SettingUpFreeRTOSonArduino
10comments6monthsago 1comment6monthsago
MateusPaduanIsthereanychanceofbeingtherise/falldelayoftheEN SudarshanIt'spossibletocontroli2c16x2lcdfromdifferenttask?top
pin? rowofdisplaycanbehandlebyonetask,andbottonroyhandlebyanother
task?

Subscribe d AddDisqustoyoursiteAddDisqusAdd Privacy

Category (/wiki/Special:Categories): LPC1768 Tutorials (/wiki/Category:LPC1768_Tutorials)

Subscribe to hear about our latest Explorations!

name@example.com SUBSCRIBE

Contact (/contact) About (/about) Warranty (/refund) Terms & Conditions (/terms) Reward points (/rewards)

(https://twitter.com/exploreembedded) (https://www.facebook.com/ExploreEmbedded/) (https://www.youtube.com/channel/UCvXGpvPuosEI-ALxvCrSbaA)

(https://github.com/ExploreEmbedded)

Now shipping worldwide from India with

https://exploreembedded.com/wiki/LPC1768:_Register_Configuration(lpc17xx.h) 5/6
3/7/2017 LPC1768:RegisterConfiguration(lpc17xx.h)Tutorials

https://exploreembedded.com/wiki/LPC1768:_Register_Configuration(lpc17xx.h) 6/6

Anda mungkin juga menyukai