SAM D21 SysTick Example Project

Last modified by Microchip on 2023/11/09 09:01


This page provides a simple SAM D21 System Timer (SysTick) GCC code example for the ATSAMD21J18A MCU. The project configures the SysTick module to produce interrupts every millisecond, using the default CPU clock frequency (1 MHz). The SysTick handler routine is used to count these interrupt events and toggle the onboard LED once every second.

The application is designed to work using the SAM D21 Xplained PRO Evaluation Kit (ATSAMD21-XPRO) which contains the ATSAMD21J18A Arm® Cortex®-M0+ MCU.

SAM D21 Xplained PRO Evaluation Kit

This application uses:

  • CPU Core SysTick Timer Module, clocked by the default CPU clock (1 MHz)
  • PB30 (User LED, LED0)

This code example uses a direct/indirect MCU register C-coding style (i.e., no software framework) and is built using the GCC compiler toolchain within the Atmel Studio 7 IDE.

Visit the following page to learn how to configure this peripheral:

SysTick Configuration

Reference Materials

About SAM D21 Xplained Pro

Purchase SAM D21 Xplained Pro

About Atmel Studio

Atmel Studio Windows Download

Atmel Studio Installation Instructions

Example Project Windows Download

Example Project Linux Download

Example Project Mac OSX Download

Example Project Installation Instructions

We recommend extracting the ZIP file to your C:\ folder.

You should see the folder C:\MTT\32arm\samd21\code-examples-gcc\systick\systick-initialization containing the solution systick-initialization.atsln.

Connection Diagram

SAM D21 Xplained Pro contains an Embedded Debugger (EDBG) that can be used to program and debug the ATSAMD21J18A using Serial Wire Debug (SWD) interface. The EDBG also includes a Virtual Com port interface over UART, a Data Gateway Interface over SPI and TWI, and it monitors four of the SAM D21 GPIOs. Atmel Studio 7 is used as a front-end for the EDBG.

The LED0 is driven by this application and is connected to port PB30 as shown:

The LED0 is driven by this application and is connected to port PB30


Attach the SAM D21 Xplained Pro board to your computer using a USB A-to-MicroB cable. Start Atmel Studio 7. If the board has been successfully enumerated, you should see the board image come up in Studio as shown:

Board image comes up in Studio

The board is identified by the last four digits of its serial number (see the sticker on the bottom of the board). In this example, the last four digits are "1344".

1. Open the Solution

Select File > Open > Project/Solution…

File > Open > Project/Solution

Navigate to the solution folder and select the systick-initialization.atsln solution file:

Solution folder

2. Configure the Debugger

 Next, you need to configure the debugger in Atmel Studio to discover and connect to the target EDBG IC on your Xplained Pro board.
First, navigate to Project > Properties as shown:

Project > Properties

Next, under the project's 'Tool' settings, select your EDBG target from the pull-down. Select 'SWD' as the interface:

Project's Tool settings

Save the tool setting by clicking the Save All button:

Save All button

3. Rebuild/Program the Target

 Finally, click on the Start Without Debugging icon in Atmel Studio which information re-builds the HEX file from the project source code, (ii) downloads/programs the HEX file onto the target MCU, (iii) and releases the target MCU Reset pin, allowing the program to execute.Start Without Debugging icon

If prompted, upgrade the EDBG firmware on the board:

Upgrade the EDBG firmware on the board

You need to click on Start Without Debugging again after a EDBG firmware upgrade in order to rebuild/program the target.


LED0 toggles every second

LED0 toggles every second.


This project has provided a simple example of how to set up and use the SysTick timer on SAM D21 MCU.