h)Tutorials
(/wiki) (/shop)
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.
(/wiki/File:Lpc1768_Memory_Map.jpg)
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)
Values Direction
0 Input
1 Output
Values FIOSET
0 No Effect
Values FIOCLR
0 No Effect
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 }
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 }
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.
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
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
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?
name@example.com SUBSCRIBE
Contact (/contact) About (/about) Warranty (/refund) Terms & Conditions (/terms) Reward points (/rewards)
(https://github.com/ExploreEmbedded)
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