<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:taxo="http://purl.org/rss/1.0/modules/taxonomy/" version="2.0">
  <channel>
    <title>topic Systick Exception on KL25Z in Kinetis Microcontrollers</title>
    <link>https://community.nxp.com/t5/Kinetis-Microcontrollers/Systick-Exception-on-KL25Z/m-p/729880#M44626</link>
    <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;I am trying to implement a Systick exception handler that can flash an LED on the FRDM KL25Z board. &amp;nbsp;The code compiles but when I go to debug it I get the following error: "Error in services launch sequence"&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;span class="lia-inline-image-display-wrapper" image-alt="screenshot_1171.png"&gt;&lt;img src="https://community.nxp.com/t5/image/serverpage/image-id/32054iD519A3118BA1D572/image-size/large?v=v2&amp;amp;px=999" role="button" title="screenshot_1171.png" alt="screenshot_1171.png" /&gt;&lt;/span&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;The code is intended to flash an LED on the FRDM board around 1 Hz. &amp;nbsp;I've been able to poll the SysTick without using exceptions/interrupts, but for whatever reason I am missing something while setting this up that blocks execution. &amp;nbsp;I'm trying to write code that is as CMSIS-compliant as possible, so no KDS calls.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;If anyone has a hint about what I should be doing differently with setting up the SysTick exception, I'm all ears. &amp;nbsp;Code below...&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Thanks!&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;James&lt;/P&gt;&lt;P&gt;#Kinetis #Systick #CMSIS &lt;A href="https://community.nxp.com/t5/tag/frdm–kl25z/tg-p"&gt;#frdm–kl25z&lt;/A&gt;‌ &lt;A href="https://community.nxp.com/t5/tag/exception_handler/tg-p"&gt;#exception_handler&lt;/A&gt;‌&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;BLOCKQUOTE class="jive_macro_quote jive-quote jive_text_macro"&gt;&lt;P&gt;&lt;/P&gt;&lt;P style="color: #3933ff; margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;SPAN style="color: #931a68;"&gt;#include&lt;/SPAN&gt;&lt;SPAN style="color: #000000;"&gt; &lt;/SPAN&gt;&amp;lt;stdio.h&amp;gt;&lt;/P&gt;&lt;P style="color: #3933ff; margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;SPAN style="color: #931a68;"&gt;#include&lt;/SPAN&gt;&lt;SPAN style="color: #000000;"&gt; &lt;/SPAN&gt;"board.h"&lt;/P&gt;&lt;P style="color: #3933ff; margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;SPAN style="color: #931a68;"&gt;#include&lt;/SPAN&gt;&lt;SPAN style="color: #000000;"&gt; &lt;/SPAN&gt;"peripherals.h"&lt;/P&gt;&lt;P style="color: #3933ff; margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;SPAN style="color: #931a68;"&gt;#include&lt;/SPAN&gt;&lt;SPAN style="color: #000000;"&gt; &lt;/SPAN&gt;"pin_mux.h"&lt;/P&gt;&lt;P style="color: #3933ff; margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;SPAN style="color: #931a68;"&gt;#include&lt;/SPAN&gt;&lt;SPAN style="color: #000000;"&gt; &lt;/SPAN&gt;"clock_config.h"&lt;/P&gt;&lt;P style="color: #3933ff; margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;SPAN style="color: #931a68;"&gt;#include&lt;/SPAN&gt;&lt;SPAN style="color: #000000;"&gt; &lt;/SPAN&gt;"MKL25Z4.h"&lt;/P&gt;&lt;P style="color: #4e9072; margin: 0.0px 0.0px 0.0px 0.0px;"&gt;/* &lt;SPAN style="color: #91afcb;"&gt;TODO&lt;/SPAN&gt;: insert other include files here. */&lt;/P&gt;&lt;P style="margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;/P&gt;&lt;P style="color: #4e9072; margin: 0.0px 0.0px 0.0px 0.0px;"&gt;/* &lt;SPAN style="color: #91afcb;"&gt;TODO&lt;/SPAN&gt;: insert other definitions and declarations here. */&lt;/P&gt;&lt;P style="margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;/P&gt;&lt;P style="margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;/P&gt;&lt;P style="color: #4e9072; margin: 0.0px 0.0px 0.0px 0.0px;"&gt;/* The system tick interrupt handler vector (and name) is defined in startup_mkl25z4.c&lt;/P&gt;&lt;P style="color: #4e9072; margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;SPAN class=""&gt;&amp;nbsp;&lt;/SPAN&gt;*&lt;/P&gt;&lt;P style="color: #4e9072; margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;SPAN class=""&gt;&amp;nbsp;&lt;/SPAN&gt;* */&lt;/P&gt;&lt;P style="margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;SPAN style="color: #931a68;"&gt;void&lt;/SPAN&gt; SysTick_Handler(&lt;SPAN style="color: #931a68;"&gt;void&lt;/SPAN&gt;)&lt;/P&gt;&lt;P style="margin: 0.0px 0.0px 0.0px 0.0px;"&gt;{&lt;/P&gt;&lt;P style="margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;SPAN class=""&gt; &lt;/SPAN&gt;&lt;SPAN style="color: #931a68;"&gt;static&lt;/SPAN&gt; &lt;SPAN style="color: #931a68;"&gt;int&lt;/SPAN&gt; n = 0;&lt;/P&gt;&lt;P style="margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;/P&gt;&lt;P style="margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;/P&gt;&lt;P style="color: #4e9072; margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;SPAN style="color: #000000;"&gt;&lt;SPAN class=""&gt; &lt;/SPAN&gt;&lt;/SPAN&gt;/* every 500 interrupts / exceptions toggle the LED */&lt;/P&gt;&lt;P style="margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;SPAN class=""&gt; &lt;/SPAN&gt;&lt;SPAN style="color: #931a68;"&gt;if&lt;/SPAN&gt; (n &amp;lt;= 500)&lt;/P&gt;&lt;P style="margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;SPAN class=""&gt; &lt;/SPAN&gt;{&lt;/P&gt;&lt;P style="color: #4e9072; margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;SPAN style="color: #000000;"&gt;&lt;SPAN class=""&gt; &lt;/SPAN&gt;&lt;/SPAN&gt;/* increment the counter. */&lt;/P&gt;&lt;P style="margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;SPAN class=""&gt; &lt;/SPAN&gt;n= n+1;&lt;/P&gt;&lt;P style="margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;SPAN class=""&gt; &lt;/SPAN&gt;}&lt;/P&gt;&lt;P style="color: #931a68; margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;SPAN style="color: #000000;"&gt;&lt;SPAN class=""&gt; &lt;/SPAN&gt;&lt;/SPAN&gt;else&lt;/P&gt;&lt;P style="margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;SPAN class=""&gt; &lt;/SPAN&gt;{&lt;/P&gt;&lt;P style="color: #4e9072; margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;SPAN style="color: #000000;"&gt;&lt;SPAN class=""&gt; &lt;/SPAN&gt;&lt;/SPAN&gt;/* "Port Toggle" on Port B: Toggle green LED on PTB19 */&lt;/P&gt;&lt;P style="margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;SPAN class=""&gt; &lt;/SPAN&gt;PTB-&amp;gt;&lt;SPAN style="color: #0326cc;"&gt;PTOR&lt;/SPAN&gt; = 0x080000;&lt;/P&gt;&lt;P style="color: #4e9072; margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;SPAN style="color: #000000;"&gt;&lt;SPAN class=""&gt; &lt;/SPAN&gt;&lt;/SPAN&gt;/* reset the counter */&lt;/P&gt;&lt;P style="margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;SPAN class=""&gt; &lt;/SPAN&gt;n=0;&lt;/P&gt;&lt;P style="margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;SPAN class=""&gt; &lt;/SPAN&gt;}&lt;/P&gt;&lt;P style="margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;/P&gt;&lt;P style="margin: 0.0px 0.0px 0.0px 0.0px;"&gt;}&lt;/P&gt;&lt;P style="margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;/P&gt;&lt;P style="color: #4e9072; margin: 0.0px 0.0px 0.0px 0.0px;"&gt;/*&lt;/P&gt;&lt;P style="color: #4e9072; margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;SPAN class=""&gt;&amp;nbsp;&lt;/SPAN&gt;* @brief &lt;SPAN class=""&gt;&amp;nbsp; &lt;/SPAN&gt;Application entry point.&lt;/P&gt;&lt;P style="color: #4e9072; margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;SPAN class=""&gt;&lt;/SPAN&gt;&lt;SPAN class=""&gt;&amp;nbsp;&lt;/SPAN&gt;*/&lt;/P&gt;&lt;P style="margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;SPAN style="color: #931a68;"&gt;int&lt;/SPAN&gt; main (&lt;SPAN style="color: #931a68;"&gt;void&lt;/SPAN&gt;) {&lt;/P&gt;&lt;P style="margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;/P&gt;&lt;P style="color: #4e9072; margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;SPAN style="color: #000000;"&gt;&lt;SPAN class=""&gt;&amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;/* Step 1: Turn on Port B via System Integration Module SIM's SCGC5 register.&lt;/P&gt;&lt;P style="color: #4e9072; margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;SPAN class=""&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;* &lt;SPAN class=""&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;Keep existing state of SCGC5 &amp;amp; only set bit 10 to 1. */&lt;/P&gt;&lt;P style="margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;SPAN class=""&gt;&amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;SIM-&amp;gt;&lt;SPAN style="color: #0326cc;"&gt;SCGC5&lt;/SPAN&gt; &lt;SPAN class=""&gt; &lt;/SPAN&gt;|= SIM_SCGC5_PORTB_MASK;&lt;SPAN class=""&gt; &lt;/SPAN&gt;&lt;SPAN style="color: #4e9072;"&gt;// The "mask" is 0x400&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="color: #4e9072; margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;SPAN style="color: #000000;"&gt;&lt;SPAN class=""&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;/P&gt;&lt;P style="color: #4e9072; margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;SPAN style="color: #000000;"&gt;&lt;SPAN class=""&gt;&amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;/* Step 2: Make Port B, Pin 19 a "General Purpose Input or Output" (GPIO)&lt;/P&gt;&lt;P style="color: #4e9072; margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;SPAN class=""&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;* &lt;SPAN class=""&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;Look up section 10.3.1 in the manual.&lt;SPAN class=""&gt;&amp;nbsp; &lt;/SPAN&gt;Alt1 mode is GPIO for Port B 19.&lt;/P&gt;&lt;P style="color: #4e9072; margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;SPAN class=""&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;* &lt;SPAN class=""&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;Look up section 11.5.1 in the manual. The MUX bits are bits 10,9 and 8 of the PCR.&lt;/P&gt;&lt;P style="color: #4e9072; margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;SPAN class=""&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;* &lt;SPAN class=""&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;&lt;SPAN&gt;key terms for searching: "alt0" and "pin control register" in the PDF (&lt;/SPAN&gt;&lt;A class="jive-link-external-small" href="https://community.nxp.com/external-link.jspa?url=https%3A%2F%2Fbit.ly%2F2J2751t" rel="nofollow" target="_blank"&gt;https://bit.ly/2J2751t&lt;/A&gt;&lt;SPAN&gt;)&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="color: #4e9072; margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;SPAN class=""&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;*/&lt;/P&gt;&lt;P style="color: #4e9072; margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;SPAN style="color: #000000;"&gt;&lt;SPAN class=""&gt;&amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;PORTB-&amp;gt;&lt;/SPAN&gt;&lt;SPAN style="color: #0326cc;"&gt;PCR&lt;/SPAN&gt;&lt;SPAN style="color: #000000;"&gt;[19] = 0x100;&lt;SPAN class=""&gt; &lt;/SPAN&gt;&lt;/SPAN&gt;// &lt;SPAN style="text-decoration: underline;"&gt;Mux&lt;/SPAN&gt; @ Alt1 is GPIO: Bits 10,9,8 = 0b001&lt;/P&gt;&lt;P style="color: #4e9072; margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;SPAN style="color: #000000;"&gt;&lt;SPAN class=""&gt;&amp;nbsp; &amp;nbsp;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="color: #4e9072; margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;SPAN style="color: #000000;"&gt;&lt;SPAN class=""&gt;&amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;/* Step 3: Make Port B, pin 19 an output (instead of an input) */&lt;/P&gt;&lt;P style="color: #4e9072; margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;SPAN style="color: #000000;"&gt;&lt;SPAN class=""&gt;&amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;PTB-&amp;gt;&lt;/SPAN&gt;&lt;SPAN style="color: #0326cc;"&gt;PDDR&lt;/SPAN&gt;&lt;SPAN style="color: #000000;"&gt; |= 0x080000;&lt;SPAN class=""&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;/* Bit 19 is a binary "1" (output).&lt;SPAN class=""&gt;&amp;nbsp; &lt;/SPAN&gt;A "0" would be input. */&lt;/P&gt;&lt;P style="color: #4e9072; margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;SPAN style="color: #000000;"&gt;&lt;SPAN class=""&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;/P&gt;&lt;P style="color: #4e9072; margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;SPAN style="color: #000000;"&gt;&lt;SPAN class=""&gt;&amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;// Interrupt / Exception with SysTick&lt;/P&gt;&lt;P style="color: #4e9072; margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;SPAN style="color: #000000;"&gt;&lt;SPAN class=""&gt;&amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN&gt;// &lt;/SPAN&gt;&lt;A class="jive-link-external-small" href="https://community.nxp.com/external-link.jspa?url=https%3A%2F%2Felectronics.stackexchange.com%2Fquestions%2F331650%2Fwhats-the-difference-between-setting-systick-interrupt-in-nvic-and-using-it-as%2F331673" rel="nofollow" target="_blank"&gt;https://electronics.stackexchange.com/questions/331650/whats-the-difference-between-setting-systick-interrupt-in-nvic-and-using-it-as/331673&lt;/A&gt;&lt;/P&gt;&lt;P style="color: #4e9072; margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;SPAN style="color: #000000;"&gt;&lt;SPAN class=""&gt;&amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN&gt;// &lt;/SPAN&gt;&lt;A class="jive-link-external-small" href="https://community.nxp.com/external-link.jspa?url=http%3A%2F%2Fhomepage.cem.itesm.mx%2Fcarbajal%2FMicrocontrollers%2FSLIDES%2FInterrupts.pdf" rel="nofollow" target="_blank"&gt;http://homepage.cem.itesm.mx/carbajal/Microcontrollers/SLIDES/Interrupts.pdf&lt;/A&gt;&lt;/P&gt;&lt;P style="color: #4e9072; margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;SPAN style="color: #000000;"&gt;&lt;SPAN class=""&gt;&amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;//&lt;SPAN class=""&gt;&amp;nbsp; &lt;/SPAN&gt;&lt;A class="jive-link-thread-small" data-containerid="2019" data-containertype="14" data-objectid="311713" data-objecttype="1" href="https://community.nxp.com/thread/311713"&gt;https://community.nxp.com/thread/311713&lt;/A&gt;&lt;/P&gt;&lt;P style="color: #4e9072; margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;SPAN style="color: #000000;"&gt;&lt;SPAN class=""&gt;&amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;//&lt;SPAN class=""&gt;&amp;nbsp; &lt;/SPAN&gt;&lt;A class="jive-link-external-small" href="https://community.nxp.com/external-link.jspa?url=https%3A%2F%2Fmcuoneclipse.com%2F2016%2F08%2F14%2Farm-cortex-m-interrupts-and-freertos-part-1%2F%23more-19365" rel="nofollow" target="_blank"&gt;https://mcuoneclipse.com/2016/08/14/arm-cortex-m-interrupts-and-freertos-part-1/#more-19365&lt;/A&gt;&lt;/P&gt;&lt;P style="margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;/P&gt;&lt;P style="margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;SPAN class=""&gt;&amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;__disable_irq();&lt;SPAN class=""&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="color: #4e9072;"&gt;/* disable all IRQs */&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="color: #4e9072; margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;SPAN style="color: #000000;"&gt;&lt;SPAN class=""&gt;&amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;/* Delay = (N+1)/&lt;SPAN style="text-decoration: underline;"&gt;sysclk&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="color: #4e9072; margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;SPAN class=""&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;* 0.001 [&lt;SPAN style="text-decoration: underline;"&gt;sec&lt;/SPAN&gt;] = (N+1) / (48000000/2) ---&amp;gt; N = 0.001[&lt;SPAN style="text-decoration: underline;"&gt;sec&lt;/SPAN&gt;]*2400000[MHz] - 1&lt;/P&gt;&lt;P style="color: #4e9072; margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;SPAN class=""&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;* So N is 24000-1.&lt;/P&gt;&lt;P style="color: #4e9072; margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;SPAN class=""&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;*/&lt;/P&gt;&lt;P style="margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;SPAN class=""&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;SysTick-&amp;gt;&lt;SPAN style="color: #0326cc;"&gt;LOAD&lt;/SPAN&gt; = 24000-1;&lt;/P&gt;&lt;P style="color: #4e9072; margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;SPAN style="color: #000000;"&gt;&lt;SPAN class=""&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;NVIC_SetPriority(&lt;/SPAN&gt;&lt;SPAN style="color: #0326cc;"&gt;SysTick_IRQn&lt;/SPAN&gt;&lt;SPAN style="color: #000000;"&gt;, (1UL&amp;lt;&amp;lt;__NVIC_PRIO_BITS)-1UL); &lt;/SPAN&gt;/* set Priority for &lt;SPAN style="text-decoration: underline;"&gt;Systick&lt;/SPAN&gt; Interrupt to lowest interrupt */&lt;/P&gt;&lt;P style="margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;/P&gt;&lt;P style="margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;SPAN class=""&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;SysTick-&amp;gt;&lt;SPAN style="color: #0326cc;"&gt;VAL&lt;/SPAN&gt; = 24000-1;&lt;/P&gt;&lt;P style="color: #4e9072; margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;SPAN style="color: #000000;"&gt;&lt;SPAN class=""&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;/* Enable the timer and choose processor clock as the clock source&lt;SPAN class=""&gt;&amp;nbsp; &lt;/SPAN&gt;via Bits 0 and 2&lt;/P&gt;&lt;P style="color: #4e9072; margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;SPAN class=""&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;* Also, enable &lt;SPAN style="text-decoration: underline;"&gt;Systick&lt;/SPAN&gt; to generate Exceptions / Interrupts via Bit 1*/&lt;/P&gt;&lt;P style="margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;SPAN class=""&gt; &lt;/SPAN&gt; SysTick-&amp;gt;&lt;SPAN style="color: #0326cc;"&gt;CTRL&lt;/SPAN&gt;&lt;SPAN class=""&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;= 0b0111;&lt;/P&gt;&lt;P style="color: #4e9072; margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;SPAN style="color: #000000;"&gt;&lt;SPAN class=""&gt; &lt;/SPAN&gt; &lt;/SPAN&gt;/* &lt;SPAN class=""&gt; &lt;/SPAN&gt;= 0b0111&lt;/P&gt;&lt;P style="color: #4e9072; margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;SPAN class=""&gt; &lt;/SPAN&gt;&lt;SPAN class=""&gt;&amp;nbsp; &lt;/SPAN&gt;* &lt;SPAN class=""&gt; &lt;/SPAN&gt;^^^^&lt;/P&gt;&lt;P style="color: #4e9072; margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;SPAN class=""&gt; &lt;/SPAN&gt;&lt;SPAN class=""&gt;&amp;nbsp; &lt;/SPAN&gt;* &lt;SPAN class=""&gt; &lt;/SPAN&gt;||||_________ Bit 0: Enable ( 0 = disable; 1 = enable)&lt;/P&gt;&lt;P style="color: #4e9072; margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;SPAN class=""&gt; &lt;/SPAN&gt;&lt;SPAN class=""&gt;&amp;nbsp; &lt;/SPAN&gt;* &lt;SPAN class=""&gt; &lt;/SPAN&gt;|||__________ Bit 1: TickInt&lt;SPAN class=""&gt;&amp;nbsp; &lt;/SPAN&gt;(interrupt/exception enabling)&lt;/P&gt;&lt;P style="color: #4e9072; margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;SPAN class=""&gt; &lt;/SPAN&gt;&lt;SPAN class=""&gt;&amp;nbsp; &lt;/SPAN&gt;* &lt;SPAN class=""&gt; &lt;/SPAN&gt;||___________ Bit 2: Clock Source (0 = &lt;SPAN style="text-decoration: underline;"&gt;ext&lt;/SPAN&gt;; 1 = &lt;SPAN style="text-decoration: underline;"&gt;proc&lt;/SPAN&gt;. clock)&lt;/P&gt;&lt;P style="color: #4e9072; margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;SPAN class=""&gt; &lt;/SPAN&gt;&lt;SPAN class=""&gt;&amp;nbsp; &lt;/SPAN&gt;* &lt;SPAN class=""&gt; &lt;/SPAN&gt;|____________ Bit 3: Reserved&lt;/P&gt;&lt;P style="color: #4e9072; margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;SPAN class=""&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;*/&lt;/P&gt;&lt;P style="margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;/P&gt;&lt;P style="color: #4e9072; margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;SPAN style="color: #000000;"&gt;&lt;SPAN class=""&gt; &lt;/SPAN&gt; &lt;/SPAN&gt;/* Enable IRQs within NVIC */&lt;/P&gt;&lt;P style="color: #4e9072; margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;SPAN style="color: #000000;"&gt;&lt;SPAN class=""&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;NVIC_EnableIRQ(&lt;/SPAN&gt;&lt;SPAN style="color: #0326cc;"&gt;SysTick_IRQn&lt;/SPAN&gt;&lt;SPAN style="color: #000000;"&gt;); &lt;/SPAN&gt;/* Enable NVIC interrupt */&lt;/P&gt;&lt;P style="margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;/P&gt;&lt;P style="color: #4e9072; margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;SPAN style="color: #000000;"&gt;&lt;SPAN class=""&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;/* Enable IRQs globally */&lt;/P&gt;&lt;P style="margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;SPAN class=""&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;__enable_irq(); &lt;SPAN class=""&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="color: #4e9072;"&gt;/* global enable IRQs */&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;/P&gt;&lt;P style="margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;/P&gt;&lt;P style="margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;/P&gt;&lt;P style="color: #4e9072; margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;SPAN style="color: #000000;"&gt;&lt;SPAN class=""&gt;&amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;/* Toggle LED every 0.5 second to give 1Hz */&lt;/P&gt;&lt;P style="margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;SPAN class=""&gt;&amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="color: #931a68;"&gt;while&lt;/SPAN&gt; (1) {&lt;/P&gt;&lt;P style="margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;/P&gt;&lt;P style="color: #4e9072; margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;SPAN style="color: #000000;"&gt;&lt;SPAN class=""&gt;&amp;nbsp; &amp;nbsp; &lt;SPAN class=""&gt; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;/* do nothing */&lt;/P&gt;&lt;P style="margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;/P&gt;&lt;P style="margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;SPAN class=""&gt;&amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;}&lt;/P&gt;&lt;P style="margin: 0.0px 0.0px 0.0px 0.0px;"&gt;}&lt;/P&gt;&lt;/BLOCKQUOTE&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
    <pubDate>Tue, 29 May 2018 18:55:22 GMT</pubDate>
    <dc:creator>drsmith_yorku</dc:creator>
    <dc:date>2018-05-29T18:55:22Z</dc:date>
    <item>
      <title>Systick Exception on KL25Z</title>
      <link>https://community.nxp.com/t5/Kinetis-Microcontrollers/Systick-Exception-on-KL25Z/m-p/729880#M44626</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;I am trying to implement a Systick exception handler that can flash an LED on the FRDM KL25Z board. &amp;nbsp;The code compiles but when I go to debug it I get the following error: "Error in services launch sequence"&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;span class="lia-inline-image-display-wrapper" image-alt="screenshot_1171.png"&gt;&lt;img src="https://community.nxp.com/t5/image/serverpage/image-id/32054iD519A3118BA1D572/image-size/large?v=v2&amp;amp;px=999" role="button" title="screenshot_1171.png" alt="screenshot_1171.png" /&gt;&lt;/span&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;The code is intended to flash an LED on the FRDM board around 1 Hz. &amp;nbsp;I've been able to poll the SysTick without using exceptions/interrupts, but for whatever reason I am missing something while setting this up that blocks execution. &amp;nbsp;I'm trying to write code that is as CMSIS-compliant as possible, so no KDS calls.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;If anyone has a hint about what I should be doing differently with setting up the SysTick exception, I'm all ears. &amp;nbsp;Code below...&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Thanks!&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;James&lt;/P&gt;&lt;P&gt;#Kinetis #Systick #CMSIS &lt;A href="https://community.nxp.com/t5/tag/frdm–kl25z/tg-p"&gt;#frdm–kl25z&lt;/A&gt;‌ &lt;A href="https://community.nxp.com/t5/tag/exception_handler/tg-p"&gt;#exception_handler&lt;/A&gt;‌&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;BLOCKQUOTE class="jive_macro_quote jive-quote jive_text_macro"&gt;&lt;P&gt;&lt;/P&gt;&lt;P style="color: #3933ff; margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;SPAN style="color: #931a68;"&gt;#include&lt;/SPAN&gt;&lt;SPAN style="color: #000000;"&gt; &lt;/SPAN&gt;&amp;lt;stdio.h&amp;gt;&lt;/P&gt;&lt;P style="color: #3933ff; margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;SPAN style="color: #931a68;"&gt;#include&lt;/SPAN&gt;&lt;SPAN style="color: #000000;"&gt; &lt;/SPAN&gt;"board.h"&lt;/P&gt;&lt;P style="color: #3933ff; margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;SPAN style="color: #931a68;"&gt;#include&lt;/SPAN&gt;&lt;SPAN style="color: #000000;"&gt; &lt;/SPAN&gt;"peripherals.h"&lt;/P&gt;&lt;P style="color: #3933ff; margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;SPAN style="color: #931a68;"&gt;#include&lt;/SPAN&gt;&lt;SPAN style="color: #000000;"&gt; &lt;/SPAN&gt;"pin_mux.h"&lt;/P&gt;&lt;P style="color: #3933ff; margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;SPAN style="color: #931a68;"&gt;#include&lt;/SPAN&gt;&lt;SPAN style="color: #000000;"&gt; &lt;/SPAN&gt;"clock_config.h"&lt;/P&gt;&lt;P style="color: #3933ff; margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;SPAN style="color: #931a68;"&gt;#include&lt;/SPAN&gt;&lt;SPAN style="color: #000000;"&gt; &lt;/SPAN&gt;"MKL25Z4.h"&lt;/P&gt;&lt;P style="color: #4e9072; margin: 0.0px 0.0px 0.0px 0.0px;"&gt;/* &lt;SPAN style="color: #91afcb;"&gt;TODO&lt;/SPAN&gt;: insert other include files here. */&lt;/P&gt;&lt;P style="margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;/P&gt;&lt;P style="color: #4e9072; margin: 0.0px 0.0px 0.0px 0.0px;"&gt;/* &lt;SPAN style="color: #91afcb;"&gt;TODO&lt;/SPAN&gt;: insert other definitions and declarations here. */&lt;/P&gt;&lt;P style="margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;/P&gt;&lt;P style="margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;/P&gt;&lt;P style="color: #4e9072; margin: 0.0px 0.0px 0.0px 0.0px;"&gt;/* The system tick interrupt handler vector (and name) is defined in startup_mkl25z4.c&lt;/P&gt;&lt;P style="color: #4e9072; margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;SPAN class=""&gt;&amp;nbsp;&lt;/SPAN&gt;*&lt;/P&gt;&lt;P style="color: #4e9072; margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;SPAN class=""&gt;&amp;nbsp;&lt;/SPAN&gt;* */&lt;/P&gt;&lt;P style="margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;SPAN style="color: #931a68;"&gt;void&lt;/SPAN&gt; SysTick_Handler(&lt;SPAN style="color: #931a68;"&gt;void&lt;/SPAN&gt;)&lt;/P&gt;&lt;P style="margin: 0.0px 0.0px 0.0px 0.0px;"&gt;{&lt;/P&gt;&lt;P style="margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;SPAN class=""&gt; &lt;/SPAN&gt;&lt;SPAN style="color: #931a68;"&gt;static&lt;/SPAN&gt; &lt;SPAN style="color: #931a68;"&gt;int&lt;/SPAN&gt; n = 0;&lt;/P&gt;&lt;P style="margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;/P&gt;&lt;P style="margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;/P&gt;&lt;P style="color: #4e9072; margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;SPAN style="color: #000000;"&gt;&lt;SPAN class=""&gt; &lt;/SPAN&gt;&lt;/SPAN&gt;/* every 500 interrupts / exceptions toggle the LED */&lt;/P&gt;&lt;P style="margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;SPAN class=""&gt; &lt;/SPAN&gt;&lt;SPAN style="color: #931a68;"&gt;if&lt;/SPAN&gt; (n &amp;lt;= 500)&lt;/P&gt;&lt;P style="margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;SPAN class=""&gt; &lt;/SPAN&gt;{&lt;/P&gt;&lt;P style="color: #4e9072; margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;SPAN style="color: #000000;"&gt;&lt;SPAN class=""&gt; &lt;/SPAN&gt;&lt;/SPAN&gt;/* increment the counter. */&lt;/P&gt;&lt;P style="margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;SPAN class=""&gt; &lt;/SPAN&gt;n= n+1;&lt;/P&gt;&lt;P style="margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;SPAN class=""&gt; &lt;/SPAN&gt;}&lt;/P&gt;&lt;P style="color: #931a68; margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;SPAN style="color: #000000;"&gt;&lt;SPAN class=""&gt; &lt;/SPAN&gt;&lt;/SPAN&gt;else&lt;/P&gt;&lt;P style="margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;SPAN class=""&gt; &lt;/SPAN&gt;{&lt;/P&gt;&lt;P style="color: #4e9072; margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;SPAN style="color: #000000;"&gt;&lt;SPAN class=""&gt; &lt;/SPAN&gt;&lt;/SPAN&gt;/* "Port Toggle" on Port B: Toggle green LED on PTB19 */&lt;/P&gt;&lt;P style="margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;SPAN class=""&gt; &lt;/SPAN&gt;PTB-&amp;gt;&lt;SPAN style="color: #0326cc;"&gt;PTOR&lt;/SPAN&gt; = 0x080000;&lt;/P&gt;&lt;P style="color: #4e9072; margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;SPAN style="color: #000000;"&gt;&lt;SPAN class=""&gt; &lt;/SPAN&gt;&lt;/SPAN&gt;/* reset the counter */&lt;/P&gt;&lt;P style="margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;SPAN class=""&gt; &lt;/SPAN&gt;n=0;&lt;/P&gt;&lt;P style="margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;SPAN class=""&gt; &lt;/SPAN&gt;}&lt;/P&gt;&lt;P style="margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;/P&gt;&lt;P style="margin: 0.0px 0.0px 0.0px 0.0px;"&gt;}&lt;/P&gt;&lt;P style="margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;/P&gt;&lt;P style="color: #4e9072; margin: 0.0px 0.0px 0.0px 0.0px;"&gt;/*&lt;/P&gt;&lt;P style="color: #4e9072; margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;SPAN class=""&gt;&amp;nbsp;&lt;/SPAN&gt;* @brief &lt;SPAN class=""&gt;&amp;nbsp; &lt;/SPAN&gt;Application entry point.&lt;/P&gt;&lt;P style="color: #4e9072; margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;SPAN class=""&gt;&lt;/SPAN&gt;&lt;SPAN class=""&gt;&amp;nbsp;&lt;/SPAN&gt;*/&lt;/P&gt;&lt;P style="margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;SPAN style="color: #931a68;"&gt;int&lt;/SPAN&gt; main (&lt;SPAN style="color: #931a68;"&gt;void&lt;/SPAN&gt;) {&lt;/P&gt;&lt;P style="margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;/P&gt;&lt;P style="color: #4e9072; margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;SPAN style="color: #000000;"&gt;&lt;SPAN class=""&gt;&amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;/* Step 1: Turn on Port B via System Integration Module SIM's SCGC5 register.&lt;/P&gt;&lt;P style="color: #4e9072; margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;SPAN class=""&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;* &lt;SPAN class=""&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;Keep existing state of SCGC5 &amp;amp; only set bit 10 to 1. */&lt;/P&gt;&lt;P style="margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;SPAN class=""&gt;&amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;SIM-&amp;gt;&lt;SPAN style="color: #0326cc;"&gt;SCGC5&lt;/SPAN&gt; &lt;SPAN class=""&gt; &lt;/SPAN&gt;|= SIM_SCGC5_PORTB_MASK;&lt;SPAN class=""&gt; &lt;/SPAN&gt;&lt;SPAN style="color: #4e9072;"&gt;// The "mask" is 0x400&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="color: #4e9072; margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;SPAN style="color: #000000;"&gt;&lt;SPAN class=""&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;/P&gt;&lt;P style="color: #4e9072; margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;SPAN style="color: #000000;"&gt;&lt;SPAN class=""&gt;&amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;/* Step 2: Make Port B, Pin 19 a "General Purpose Input or Output" (GPIO)&lt;/P&gt;&lt;P style="color: #4e9072; margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;SPAN class=""&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;* &lt;SPAN class=""&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;Look up section 10.3.1 in the manual.&lt;SPAN class=""&gt;&amp;nbsp; &lt;/SPAN&gt;Alt1 mode is GPIO for Port B 19.&lt;/P&gt;&lt;P style="color: #4e9072; margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;SPAN class=""&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;* &lt;SPAN class=""&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;Look up section 11.5.1 in the manual. The MUX bits are bits 10,9 and 8 of the PCR.&lt;/P&gt;&lt;P style="color: #4e9072; margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;SPAN class=""&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;* &lt;SPAN class=""&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;&lt;SPAN&gt;key terms for searching: "alt0" and "pin control register" in the PDF (&lt;/SPAN&gt;&lt;A class="jive-link-external-small" href="https://community.nxp.com/external-link.jspa?url=https%3A%2F%2Fbit.ly%2F2J2751t" rel="nofollow" target="_blank"&gt;https://bit.ly/2J2751t&lt;/A&gt;&lt;SPAN&gt;)&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="color: #4e9072; margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;SPAN class=""&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;*/&lt;/P&gt;&lt;P style="color: #4e9072; margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;SPAN style="color: #000000;"&gt;&lt;SPAN class=""&gt;&amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;PORTB-&amp;gt;&lt;/SPAN&gt;&lt;SPAN style="color: #0326cc;"&gt;PCR&lt;/SPAN&gt;&lt;SPAN style="color: #000000;"&gt;[19] = 0x100;&lt;SPAN class=""&gt; &lt;/SPAN&gt;&lt;/SPAN&gt;// &lt;SPAN style="text-decoration: underline;"&gt;Mux&lt;/SPAN&gt; @ Alt1 is GPIO: Bits 10,9,8 = 0b001&lt;/P&gt;&lt;P style="color: #4e9072; margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;SPAN style="color: #000000;"&gt;&lt;SPAN class=""&gt;&amp;nbsp; &amp;nbsp;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="color: #4e9072; margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;SPAN style="color: #000000;"&gt;&lt;SPAN class=""&gt;&amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;/* Step 3: Make Port B, pin 19 an output (instead of an input) */&lt;/P&gt;&lt;P style="color: #4e9072; margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;SPAN style="color: #000000;"&gt;&lt;SPAN class=""&gt;&amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;PTB-&amp;gt;&lt;/SPAN&gt;&lt;SPAN style="color: #0326cc;"&gt;PDDR&lt;/SPAN&gt;&lt;SPAN style="color: #000000;"&gt; |= 0x080000;&lt;SPAN class=""&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;/* Bit 19 is a binary "1" (output).&lt;SPAN class=""&gt;&amp;nbsp; &lt;/SPAN&gt;A "0" would be input. */&lt;/P&gt;&lt;P style="color: #4e9072; margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;SPAN style="color: #000000;"&gt;&lt;SPAN class=""&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;/P&gt;&lt;P style="color: #4e9072; margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;SPAN style="color: #000000;"&gt;&lt;SPAN class=""&gt;&amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;// Interrupt / Exception with SysTick&lt;/P&gt;&lt;P style="color: #4e9072; margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;SPAN style="color: #000000;"&gt;&lt;SPAN class=""&gt;&amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN&gt;// &lt;/SPAN&gt;&lt;A class="jive-link-external-small" href="https://community.nxp.com/external-link.jspa?url=https%3A%2F%2Felectronics.stackexchange.com%2Fquestions%2F331650%2Fwhats-the-difference-between-setting-systick-interrupt-in-nvic-and-using-it-as%2F331673" rel="nofollow" target="_blank"&gt;https://electronics.stackexchange.com/questions/331650/whats-the-difference-between-setting-systick-interrupt-in-nvic-and-using-it-as/331673&lt;/A&gt;&lt;/P&gt;&lt;P style="color: #4e9072; margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;SPAN style="color: #000000;"&gt;&lt;SPAN class=""&gt;&amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN&gt;// &lt;/SPAN&gt;&lt;A class="jive-link-external-small" href="https://community.nxp.com/external-link.jspa?url=http%3A%2F%2Fhomepage.cem.itesm.mx%2Fcarbajal%2FMicrocontrollers%2FSLIDES%2FInterrupts.pdf" rel="nofollow" target="_blank"&gt;http://homepage.cem.itesm.mx/carbajal/Microcontrollers/SLIDES/Interrupts.pdf&lt;/A&gt;&lt;/P&gt;&lt;P style="color: #4e9072; margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;SPAN style="color: #000000;"&gt;&lt;SPAN class=""&gt;&amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;//&lt;SPAN class=""&gt;&amp;nbsp; &lt;/SPAN&gt;&lt;A class="jive-link-thread-small" data-containerid="2019" data-containertype="14" data-objectid="311713" data-objecttype="1" href="https://community.nxp.com/thread/311713"&gt;https://community.nxp.com/thread/311713&lt;/A&gt;&lt;/P&gt;&lt;P style="color: #4e9072; margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;SPAN style="color: #000000;"&gt;&lt;SPAN class=""&gt;&amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;//&lt;SPAN class=""&gt;&amp;nbsp; &lt;/SPAN&gt;&lt;A class="jive-link-external-small" href="https://community.nxp.com/external-link.jspa?url=https%3A%2F%2Fmcuoneclipse.com%2F2016%2F08%2F14%2Farm-cortex-m-interrupts-and-freertos-part-1%2F%23more-19365" rel="nofollow" target="_blank"&gt;https://mcuoneclipse.com/2016/08/14/arm-cortex-m-interrupts-and-freertos-part-1/#more-19365&lt;/A&gt;&lt;/P&gt;&lt;P style="margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;/P&gt;&lt;P style="margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;SPAN class=""&gt;&amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;__disable_irq();&lt;SPAN class=""&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="color: #4e9072;"&gt;/* disable all IRQs */&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="color: #4e9072; margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;SPAN style="color: #000000;"&gt;&lt;SPAN class=""&gt;&amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;/* Delay = (N+1)/&lt;SPAN style="text-decoration: underline;"&gt;sysclk&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="color: #4e9072; margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;SPAN class=""&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;* 0.001 [&lt;SPAN style="text-decoration: underline;"&gt;sec&lt;/SPAN&gt;] = (N+1) / (48000000/2) ---&amp;gt; N = 0.001[&lt;SPAN style="text-decoration: underline;"&gt;sec&lt;/SPAN&gt;]*2400000[MHz] - 1&lt;/P&gt;&lt;P style="color: #4e9072; margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;SPAN class=""&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;* So N is 24000-1.&lt;/P&gt;&lt;P style="color: #4e9072; margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;SPAN class=""&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;*/&lt;/P&gt;&lt;P style="margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;SPAN class=""&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;SysTick-&amp;gt;&lt;SPAN style="color: #0326cc;"&gt;LOAD&lt;/SPAN&gt; = 24000-1;&lt;/P&gt;&lt;P style="color: #4e9072; margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;SPAN style="color: #000000;"&gt;&lt;SPAN class=""&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;NVIC_SetPriority(&lt;/SPAN&gt;&lt;SPAN style="color: #0326cc;"&gt;SysTick_IRQn&lt;/SPAN&gt;&lt;SPAN style="color: #000000;"&gt;, (1UL&amp;lt;&amp;lt;__NVIC_PRIO_BITS)-1UL); &lt;/SPAN&gt;/* set Priority for &lt;SPAN style="text-decoration: underline;"&gt;Systick&lt;/SPAN&gt; Interrupt to lowest interrupt */&lt;/P&gt;&lt;P style="margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;/P&gt;&lt;P style="margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;SPAN class=""&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;SysTick-&amp;gt;&lt;SPAN style="color: #0326cc;"&gt;VAL&lt;/SPAN&gt; = 24000-1;&lt;/P&gt;&lt;P style="color: #4e9072; margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;SPAN style="color: #000000;"&gt;&lt;SPAN class=""&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;/* Enable the timer and choose processor clock as the clock source&lt;SPAN class=""&gt;&amp;nbsp; &lt;/SPAN&gt;via Bits 0 and 2&lt;/P&gt;&lt;P style="color: #4e9072; margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;SPAN class=""&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;* Also, enable &lt;SPAN style="text-decoration: underline;"&gt;Systick&lt;/SPAN&gt; to generate Exceptions / Interrupts via Bit 1*/&lt;/P&gt;&lt;P style="margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;SPAN class=""&gt; &lt;/SPAN&gt; SysTick-&amp;gt;&lt;SPAN style="color: #0326cc;"&gt;CTRL&lt;/SPAN&gt;&lt;SPAN class=""&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;= 0b0111;&lt;/P&gt;&lt;P style="color: #4e9072; margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;SPAN style="color: #000000;"&gt;&lt;SPAN class=""&gt; &lt;/SPAN&gt; &lt;/SPAN&gt;/* &lt;SPAN class=""&gt; &lt;/SPAN&gt;= 0b0111&lt;/P&gt;&lt;P style="color: #4e9072; margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;SPAN class=""&gt; &lt;/SPAN&gt;&lt;SPAN class=""&gt;&amp;nbsp; &lt;/SPAN&gt;* &lt;SPAN class=""&gt; &lt;/SPAN&gt;^^^^&lt;/P&gt;&lt;P style="color: #4e9072; margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;SPAN class=""&gt; &lt;/SPAN&gt;&lt;SPAN class=""&gt;&amp;nbsp; &lt;/SPAN&gt;* &lt;SPAN class=""&gt; &lt;/SPAN&gt;||||_________ Bit 0: Enable ( 0 = disable; 1 = enable)&lt;/P&gt;&lt;P style="color: #4e9072; margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;SPAN class=""&gt; &lt;/SPAN&gt;&lt;SPAN class=""&gt;&amp;nbsp; &lt;/SPAN&gt;* &lt;SPAN class=""&gt; &lt;/SPAN&gt;|||__________ Bit 1: TickInt&lt;SPAN class=""&gt;&amp;nbsp; &lt;/SPAN&gt;(interrupt/exception enabling)&lt;/P&gt;&lt;P style="color: #4e9072; margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;SPAN class=""&gt; &lt;/SPAN&gt;&lt;SPAN class=""&gt;&amp;nbsp; &lt;/SPAN&gt;* &lt;SPAN class=""&gt; &lt;/SPAN&gt;||___________ Bit 2: Clock Source (0 = &lt;SPAN style="text-decoration: underline;"&gt;ext&lt;/SPAN&gt;; 1 = &lt;SPAN style="text-decoration: underline;"&gt;proc&lt;/SPAN&gt;. clock)&lt;/P&gt;&lt;P style="color: #4e9072; margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;SPAN class=""&gt; &lt;/SPAN&gt;&lt;SPAN class=""&gt;&amp;nbsp; &lt;/SPAN&gt;* &lt;SPAN class=""&gt; &lt;/SPAN&gt;|____________ Bit 3: Reserved&lt;/P&gt;&lt;P style="color: #4e9072; margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;SPAN class=""&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;*/&lt;/P&gt;&lt;P style="margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;/P&gt;&lt;P style="color: #4e9072; margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;SPAN style="color: #000000;"&gt;&lt;SPAN class=""&gt; &lt;/SPAN&gt; &lt;/SPAN&gt;/* Enable IRQs within NVIC */&lt;/P&gt;&lt;P style="color: #4e9072; margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;SPAN style="color: #000000;"&gt;&lt;SPAN class=""&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;NVIC_EnableIRQ(&lt;/SPAN&gt;&lt;SPAN style="color: #0326cc;"&gt;SysTick_IRQn&lt;/SPAN&gt;&lt;SPAN style="color: #000000;"&gt;); &lt;/SPAN&gt;/* Enable NVIC interrupt */&lt;/P&gt;&lt;P style="margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;/P&gt;&lt;P style="color: #4e9072; margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;SPAN style="color: #000000;"&gt;&lt;SPAN class=""&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;/* Enable IRQs globally */&lt;/P&gt;&lt;P style="margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;SPAN class=""&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;__enable_irq(); &lt;SPAN class=""&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="color: #4e9072;"&gt;/* global enable IRQs */&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;/P&gt;&lt;P style="margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;/P&gt;&lt;P style="margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;/P&gt;&lt;P style="color: #4e9072; margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;SPAN style="color: #000000;"&gt;&lt;SPAN class=""&gt;&amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;/* Toggle LED every 0.5 second to give 1Hz */&lt;/P&gt;&lt;P style="margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;SPAN class=""&gt;&amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="color: #931a68;"&gt;while&lt;/SPAN&gt; (1) {&lt;/P&gt;&lt;P style="margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;/P&gt;&lt;P style="color: #4e9072; margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;SPAN style="color: #000000;"&gt;&lt;SPAN class=""&gt;&amp;nbsp; &amp;nbsp; &lt;SPAN class=""&gt; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;/* do nothing */&lt;/P&gt;&lt;P style="margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;/P&gt;&lt;P style="margin: 0.0px 0.0px 0.0px 0.0px;"&gt;&lt;SPAN class=""&gt;&amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;}&lt;/P&gt;&lt;P style="margin: 0.0px 0.0px 0.0px 0.0px;"&gt;}&lt;/P&gt;&lt;/BLOCKQUOTE&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Tue, 29 May 2018 18:55:22 GMT</pubDate>
      <guid>https://community.nxp.com/t5/Kinetis-Microcontrollers/Systick-Exception-on-KL25Z/m-p/729880#M44626</guid>
      <dc:creator>drsmith_yorku</dc:creator>
      <dc:date>2018-05-29T18:55:22Z</dc:date>
    </item>
    <item>
      <title>Re: Systick Exception on KL25Z</title>
      <link>https://community.nxp.com/t5/Kinetis-Microcontrollers/Systick-Exception-on-KL25Z/m-p/729881#M44627</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi James&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Here is a 1ms SYSTICK interrupt and handler (works on any Kinetis part):&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: courier new, courier, monospace; font-size: 12px;"&gt;#define TICK_RESOLUTION 1000&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // 1ms tick&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: courier new, courier, monospace; font-size: 12px;"&gt;#define LED_GREEN&amp;nbsp;&amp;nbsp; PORTB_BIT19&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // output to be toggled&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: courier new, courier, monospace; font-size: 12px;"&gt;#define REQUIRED_US (1000000/(TICK_RESOLUTION))&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // the TICK frequency we require in MHz&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="font-family: courier new, courier, monospace; font-size: 12px;"&gt;#define TICK_DIVIDE (((CORE_CLOCK + REQUIRED_US/2)/REQUIRED_US) - 1) // the divide ratio required (for systick)&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: courier new, courier, monospace; font-size: 12px;"&gt;VECTOR_TABLE *ptrVect = (VECTOR_TABLE *)VECTOR_TABLE_OFFSET_REG;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="font-family: courier new, courier, monospace; font-size: 12px;"&gt;ptrVect-&amp;gt;ptrSysTick = _RealTimeInterrupt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // enter interrupt handler&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="font-family: courier new, courier, monospace; font-size: 12px;"&gt;SYSTICK_RELOAD = TICK_DIVIDE;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // set reload value to determine the period&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="font-family: courier new, courier, monospace; font-size: 12px;"&gt;SYSTICK_CURRENT = TICK_DIVIDE;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // write to synchronise the Systick counter after configuration&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="font-family: courier new, courier, monospace; font-size: 12px;"&gt;SYSTEM_HANDLER_12_15_PRIORITY_REGISTER |= (unsigned long)(SYSTICK_PRIORITY &amp;lt;&amp;lt; (24 + __NVIC_PRIORITY_SHIFT)); // enter the SYSTICK priority&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="font-family: courier new, courier, monospace; font-size: 12px;"&gt;SYSTICK_CSR = (SYSTICK_CORE_CLOCK | SYSTICK_ENABLE | SYSTICK_TICKINT); // enable timer and its interrupt&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: courier new, courier, monospace; font-size: 12px;"&gt;_CONFIG_DRIVE_PORT_OUTPUT_VALUE(B, (LED_GREEN), (LED_GREEN), (PORT_ODE | PORT_SRE_SLOW | PORT_DSE_HIGH)); // configure and drive high&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Handler:&lt;BR /&gt;&lt;SPAN style="font-family: courier new, courier, monospace; font-size: 12px;"&gt;// Tick interrupt&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="font-family: courier new, courier, monospace; font-size: 12px;"&gt;//&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="font-family: courier new, courier, monospace; font-size: 12px;"&gt;static __interrupt void _RealTimeInterrupt(void)&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="font-family: courier new, courier, monospace; font-size: 12px;"&gt;{&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="font-family: courier new, courier, monospace; font-size: 12px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; static int iDiv = 0;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="font-family: courier new, courier, monospace; font-size: 12px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; INT_CONT_STATE_REG = PENDSTCLR;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // reset interrupt&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="font-family: courier new, courier, monospace; font-size: 12px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (++iDiv &amp;gt;= 500) {&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // every 500ms&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="font-family: courier new, courier, monospace; font-size: 12px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; _TOGGLE_PORT(B, LED_GREEN);&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="font-family: courier new, courier, monospace; font-size: 12px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; iDiv = 0;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="font-family: courier new, courier, monospace; font-size: 12px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="font-family: courier new, courier, monospace; font-size: 12px;"&gt;}&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Your problem looks to be a debugger issue - try loading a binary at these links or using the uTasker's KL25 simulator.&lt;BR /&gt;&lt;A _jive_internal="true" href="https://community.nxp.com/www.utasker.com/kinetis/FRDM-KL25Z.html" rel="nofollow" target="_blank"&gt;http://www.utasker.com/kinetis/FRDM-KL25Z.html&lt;/A&gt;&lt;BR /&gt;&lt;A _jive_internal="true" href="https://community.nxp.com/www.utasker.com/kinetis/TWR-KL25Z48M.html" rel="nofollow" target="_blank"&gt;http://www.utasker.com/kinetis/TWR-KL25Z48M.html&lt;/A&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;EM&gt;However, your handler is not resetting the Systick interrupt flag which would mean that it would never stop firing.&lt;/EM&gt;&lt;/P&gt;&lt;P&gt;&lt;BR /&gt;Regards&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Mark&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="color: #0000ff;"&gt;&lt;EM&gt;uTasker developer and supporter (+5'000 hours experience on +60 Kinetis derivatives in +80 product developments)&lt;/EM&gt;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="color: #0000ff;"&gt;&lt;EM&gt;&lt;SPAN&gt;Kinetis: &lt;/SPAN&gt;&lt;A _jive_internal="true" href="https://community.nxp.com/www.utasker.com/kinetis.html" rel="nofollow" target="_blank"&gt;http://www.utasker.com/kinetis.html&lt;/A&gt;&lt;/EM&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Tue, 29 May 2018 20:57:42 GMT</pubDate>
      <guid>https://community.nxp.com/t5/Kinetis-Microcontrollers/Systick-Exception-on-KL25Z/m-p/729881#M44627</guid>
      <dc:creator>mjbcswitzerland</dc:creator>
      <dc:date>2018-05-29T20:57:42Z</dc:date>
    </item>
  </channel>
</rss>

