ARM Microcontroller learning tutorials, this series will teach you embedded system design and development, using the LPC1768, an ARM Cortex microcontroller. When compared to normal CPU the LPC is a simple device, with only one processor core and a miniscule amount of memory, yet it still manages to be useful. In fact this simplicity makes it a wonderful learning tool, allowing us to forgo kernel and driver interfaces and work at the lowest level possible, without becoming too complicated to dive head first into.

We’ll exploit the simplicity to teach you about how processors are structured, how to deal with many common protocols and tools, and even how some fundamental parts of an operating system work. The LPC itself has a number of modules, which encapsulate various features of the processor. We’ll be working our way through those modules, explaining why you would use them, how they work, and how to usethem. With each module we learn about, we’ll present exercises and projects that will help you cement that knowledge, and give you a practical examples of how these devices can be used. While we’ll often be working with electronics, no initial knowledge is required, and we’ll give you the resources to learn what you need to know as you go along.

Table of Content – ARM Cortex-M3 LPC1768 Tutorials

  1. Learn Architecture of Cortex-M3 LPC1768
  2. How to Program ARM Cortex-M3 LPC1768
  3. Create Fresh New Keil uVision4 Project for LPC1768
  4. Learn GPIO Configuration in Cortex-M3 LPC1768
  5. Blink LED with LPC1768 Microcontroller
  6. Add Switch to LPC1768 Microcontroller Project
  7. Timer Interrupt in LPC1768 Microcontroller
  8. Learn about Flash Magic to Program LPC1768
  9. Learn about USB Secondary Bootloader in LPC1768

About Umesh Lokhande

Umesh Lokhande holds a Master degree in Scientific Instrumentation from University of Applied Sciences Jena, Germany. and has previously worked at Orbotech, Alere Technologies etc. Umesh is also a founder and first author of BINARYUPDATES.COM


  1. hi,

    its just a observation. what i notice is there is something wrong with letter s in the website font i guess.

  2. Could you please explain how the 1768 is connected to the computer and how the program is downloaded to it?


  3. I saw later that you are using an ARM JTAG Adapter. Can the 1768 be programmed without using that as I don’t have one. Thanks

  4. @Davey: Yes, sure you can program LPC1768 without ARM JTAG Programmer. To do that you need RS232 Cable or FT232RL Adapter or (FTDI Cable). In some of my post I also have shown how to program LPC1768 using serial port here is link to article:

    I want to point out one more thing you may find useful. You can also use USB Bootloader to load your program into chip over USB Port by just simply drag and drop BIN file onto device. Here is link for more details:

  5. That’s how i used to do it but then i replaced the 1768 and i cant get he bootloader to load on the new chip.

  6. Please provide more details about what exactly you’re trying to do?

    As far as I understand your question I must say you can download bootloader code into chip first either by using ISP or JTAG Programming. Once you have bootloader code running onto your chip you have to press buttons to get entered into bootloader mode, where your chip will be detected as Mass storage device so that you can upload binary image of your firmware simply by drag and drop method.

    NOTE: Please provide us more detail about your problem so that we’ll help you in better way

    Have Funful Time with Microchip

    Good Day

  7. sir please upload the uart and ic2 communications also

    • Hello Lakshman, I am working on those tutorials soon will be posted….

    • hello lakshman,

      UART0 Configuration code for 9600 baudrate and pclk is 30Mhz and cpu clock is 120Mhz.

      void uart_config()
      LPC_SC->PCONP |= (1<LCR |= 0X83; // set 8 data bits , 1 stop bit and DLAB bit is 1
      LPC_UART0->DLL = 0x82; // DLL value
      LPC_UART0->DLM = 0x00; // DLM value
      LPC_UART0->FDR = 0X21; // devider value is 1 and multiplayer value is 2
      LPC_UART0->LCR &=(~(1<FCR |=(1<PINSEL0 = 0x50;
      LPC_UART0->THR = 0xAA;

Leave a Reply

Your email address will not be published. Required fields are marked *


Register | Lost your password?