<?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>Kinetis MicrocontrollersのトピックRe: Using PWM mode in KL25z as timer</title>
    <link>https://community.nxp.com/t5/Kinetis-Microcontrollers/Using-PWM-mode-in-KL25z-as-timer/m-p/617151#M36788</link>
    <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Thanks Kerry. just need to initialize the correct clock in the beginning.&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
    <pubDate>Mon, 10 Oct 2016 21:06:32 GMT</pubDate>
    <dc:creator>subhradeepdutta</dc:creator>
    <dc:date>2016-10-10T21:06:32Z</dc:date>
    <item>
      <title>Using PWM mode in KL25z as timer</title>
      <link>https://community.nxp.com/t5/Kinetis-Microcontrollers/Using-PWM-mode-in-KL25z-as-timer/m-p/617145#M36782</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;I am trying to use the PWM mode as a timer to measure the execution time of a certain code block. Can someone guide me on the steps to get that working. Or point me to some resources that might be handy. I have already reviewed the manuals and data sheet. I am using the Kinetis Design Studio 3.&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Sat, 08 Oct 2016 01:02:54 GMT</pubDate>
      <guid>https://community.nxp.com/t5/Kinetis-Microcontrollers/Using-PWM-mode-in-KL25z-as-timer/m-p/617145#M36782</guid>
      <dc:creator>subhradeepdutta</dc:creator>
      <dc:date>2016-10-08T01:02:54Z</dc:date>
    </item>
    <item>
      <title>Re: Using PWM mode in KL25z as timer</title>
      <link>https://community.nxp.com/t5/Kinetis-Microcontrollers/Using-PWM-mode-in-KL25z-as-timer/m-p/617146#M36783</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi Subhradeep,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; If you want to measure the execution time of a certain code block, I highly suggest you use the systick instead of the PWM.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; About the systick method, you can refer to our FRDM-KL25 sample code which can be downloaded from this link:&lt;/P&gt;&lt;P&gt;&lt;A class="link-titled" href="http://cache.nxp.com/files/32bit/software/KL25_SC.exe?fpsp=1&amp;amp;WT_TYPE=Lab%20and%20Test%20Software&amp;amp;WT_VENDOR=FREESCALE&amp;amp;WT_FILE_FORMAT=exe&amp;amp;WT_ASSET=Downloads&amp;amp;fileExt=.exe" title="http://cache.nxp.com/files/32bit/software/KL25_SC.exe?fpsp=1&amp;amp;WT_TYPE=Lab%20and%20Test%20Software&amp;amp;WT_VENDOR=FREESCALE&amp;amp;WT_FILE_FORMAT=exe&amp;amp;WT_ASSET=Downloads&amp;amp;fileExt=.exe"&gt;http://cache.nxp.com/files/32bit/software/KL25_SC.exe?fpsp=1&amp;amp;WT_TYPE=Lab%20and%20Test%20Software&amp;amp;WT_VENDOR=FREESCALE&amp;amp;WT_…&lt;/A&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Folder:kl25_sc_rev10\klxx-sc-baremetal\build\iar\LQRUG_bme_ex1&lt;/P&gt;&lt;P&gt;The following code is measure the GPIOA_PDOR ^= 0x20; execution time:&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; systick_init();&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; logic_op_demo_with_normalc();&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;systick_disable();&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;void systick_init(void)&lt;BR /&gt;{&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;SYST_CVR = 0x0;&amp;nbsp;&amp;nbsp; &amp;nbsp;//clear current timer value&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; SYST_RVR = 0x00FFFFFF;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; SYST_CSR = SysTick_CSR_CLKSOURCE_MASK | SysTick_CSR_ENABLE_MASK;&amp;nbsp; &amp;nbsp;&lt;BR /&gt;}&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;void systick_disable(void)&lt;BR /&gt;{&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; SYST_CSR &amp;amp;= ~SysTick_CSR_ENABLE_MASK;&lt;BR /&gt;}&lt;/P&gt;&lt;P&gt;void logic_op_demo_with_normalc(void)&lt;BR /&gt;{&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; uint32_t cnt_start_value;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; uint32_t cnt_end_value;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;uint32_t execution_cycle;&amp;nbsp;&amp;nbsp; &amp;nbsp;//actual execution cycle&lt;BR /&gt;&amp;nbsp; &lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; //configure PTA5 as GPIO &lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; PORTA_PCR5 = PORT_PCR_MUX(1);&lt;BR /&gt;&amp;nbsp; &lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; //configure PTA5 as output pin&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; GPIOA_PDDR |= 0x20;&lt;BR /&gt;&amp;nbsp; &lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; cnt_start_value = SYST_CVR;&lt;BR /&gt;&amp;nbsp; &lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; GPIOA_PDOR ^= 0x20;&lt;BR /&gt;&amp;nbsp; &lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; cnt_end_value = SYST_CVR;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;execution_cycle = cnt_start_value - cnt_end_value - overhead;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;BR /&gt;#ifdef DEBUG_PRINT&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;printf("systick start value: 0x%x\n\r", cnt_start_value);&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;printf("systick end value: 0x%x\n\r", cnt_end_value);&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;printf("actual execution cycle for logic operation with normal C code: 0x%x\n\r", execution_cycle);&lt;BR /&gt;#endif&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;BR /&gt;}&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;You should better use the systick to measure the code execution time, it is simple,easy and accurate.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Wish it helps you!&lt;/P&gt;&lt;P&gt;If you still have question, please let me know!&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;BR /&gt;Have a great day,&lt;BR /&gt;Kerry&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;-----------------------------------------------------------------------------------------------------------------------&lt;BR /&gt;Note: If this post answers your question, please click the Correct Answer button. Thank you!&lt;BR /&gt;-----------------------------------------------------------------------------------------------------------------------&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Sat, 08 Oct 2016 09:58:03 GMT</pubDate>
      <guid>https://community.nxp.com/t5/Kinetis-Microcontrollers/Using-PWM-mode-in-KL25z-as-timer/m-p/617146#M36783</guid>
      <dc:creator>kerryzhou</dc:creator>
      <dc:date>2016-10-08T09:58:03Z</dc:date>
    </item>
    <item>
      <title>Re: Using PWM mode in KL25z as timer</title>
      <link>https://community.nxp.com/t5/Kinetis-Microcontrollers/Using-PWM-mode-in-KL25z-as-timer/m-p/617147#M36784</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi Kerry&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Thank you for your response. I understand that it can be done using the systick but the requirement is to use a 10us period edge aligned PWM to calculate the time duration. I am aware of what the registers need to be loaded with, I am just looking for a step by step guide, i.e. some kind of algorithm to generate the PWM and then use it to measure code execution time.&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Sat, 08 Oct 2016 10:08:21 GMT</pubDate>
      <guid>https://community.nxp.com/t5/Kinetis-Microcontrollers/Using-PWM-mode-in-KL25z-as-timer/m-p/617147#M36784</guid>
      <dc:creator>subhradeepdutta</dc:creator>
      <dc:date>2016-10-08T10:08:21Z</dc:date>
    </item>
    <item>
      <title>Re: Using PWM mode in KL25z as timer</title>
      <link>https://community.nxp.com/t5/Kinetis-Microcontrollers/Using-PWM-mode-in-KL25z-as-timer/m-p/617148#M36785</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi Subhradeep,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; If you just want to get 10us period PWM, you can refer to the KLQRUG.pdf document:&lt;/P&gt;&lt;P&gt;&lt;A class="link-titled" href="http://cache.nxp.com/files/32bit/doc/quick_ref_guide/KLQRUG.pdf" title="http://cache.nxp.com/files/32bit/doc/quick_ref_guide/KLQRUG.pdf"&gt;http://cache.nxp.com/files/32bit/doc/quick_ref_guide/KLQRUG.pdf&lt;/A&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Chapter 12, you can find the TPM configuration step by step.&lt;/P&gt;&lt;P&gt;Besides, I also help you create a TPM KDS project, and test it on my FRDM-KL25 board, it can output 10us period edge aligned PWM in PTD0.&lt;/P&gt;&lt;P&gt;For the detail configuration, please&amp;nbsp; check my attached KDS project.&lt;/P&gt;&lt;P&gt;This is the test result:&lt;/P&gt;&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper" image-alt="pastedImage_2.png"&gt;&lt;img src="https://community.nxp.com/t5/image/serverpage/image-id/3173i4F74963B7D435D13/image-size/large?v=v2&amp;amp;px=999" role="button" title="pastedImage_2.png" alt="pastedImage_2.png" /&gt;&lt;/span&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Wish it helps you!&lt;/P&gt;&lt;P&gt;If you still have question, please let me know!&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;BR /&gt;Have a great day,&lt;BR /&gt;Kerry&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;-----------------------------------------------------------------------------------------------------------------------&lt;BR /&gt;Note: If this post answers your question, please click the Correct Answer button. Thank you!&lt;BR /&gt;-----------------------------------------------------------------------------------------------------------------------&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Sun, 09 Oct 2016 05:34:54 GMT</pubDate>
      <guid>https://community.nxp.com/t5/Kinetis-Microcontrollers/Using-PWM-mode-in-KL25z-as-timer/m-p/617148#M36785</guid>
      <dc:creator>kerryzhou</dc:creator>
      <dc:date>2016-10-09T05:34:54Z</dc:date>
    </item>
    <item>
      <title>Re: Using PWM mode in KL25z as timer</title>
      <link>https://community.nxp.com/t5/Kinetis-Microcontrollers/Using-PWM-mode-in-KL25z-as-timer/m-p/617149#M36786</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;I forgot to mention that I need to do it without processor expert code.&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;I have some initial config here but it doesnt seem to work correctly&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P style="padding-left: 30px;"&gt;#include "MKL25Z4.h"&lt;/P&gt;&lt;P style="padding-left: 30px;"&gt;void main()&lt;BR /&gt;{&lt;BR /&gt; SIM_SOPT2 |= 0x01000000; //Select MCGFLLCLK as source for TPM&lt;BR /&gt; SIM_SOPT2 &amp;amp;= ~SIM_SOPT2_PLLFLLSEL_MASK;//Clear PLLFLLSEL to select MCGFLLCLK&lt;BR /&gt; SIM_SCGC5 |= 0x00003E00; //Enable Clock to Port A, B, C, D, E&lt;BR /&gt; SIM_SCGC6 |= 0x01000000; //Enable Clock Gating for TPM0&lt;/P&gt;&lt;P style="padding-left: 30px;"&gt;&lt;/P&gt;&lt;P style="padding-left: 30px;"&gt;PORTC_PCR2 = PORT_PCR_ISF_MASK |PORT_PCR_MUX(0x4)| PORT_PCR_DSE_MASK;//Enable PTC2&lt;BR /&gt; PORTC_PCR3 = PORT_PCR_ISF_MASK |PORT_PCR_MUX(0x4)| PORT_PCR_DSE_MASK;//Enable PTC3 as channel outputs of TPM0&lt;BR /&gt; PORTB_BASE_PTR-&amp;gt;PCR[18]=PORT_PCR_MUX(3);&lt;/P&gt;&lt;P style="padding-left: 30px;"&gt;TPM0_SC &amp;amp;= 0xFFFFFFE7;//Disable clock mode CMOD&lt;BR /&gt; TPM0_CNT &amp;amp;= 0xFFFF0000;//Initialize counter&lt;BR /&gt; TPM0_SC |= 0x00000080; //Clear overflow flag&lt;BR /&gt; TPM0_SC &amp;amp;= 0xFFFFFFDF; //Select up counting mode&lt;BR /&gt; TPM0_SC &amp;amp;= 0xFFFFFFF9; //Prescaler selection set to divide by 2&lt;BR /&gt; TPM0_MOD |= 0x0000000C;//Assuming 24 MHz clock to TPM to get 1us resolution&lt;BR /&gt; TPM0_SC |= 0x00000008;//Enable clock mode CMOD&lt;/P&gt;&lt;P style="padding-left: 30px;"&gt;TPM0_C0SC = TPM_CnSC_MSB_MASK| TPM_CnSC_ELSB_MASK;//Channel 0 is set to edge aligned and high true pulses&lt;BR /&gt; //TPM0_C0V = 0x00;//Initialize channel value&lt;/P&gt;&lt;P style="padding-left: 30px;"&gt;PTB_BASE_PTR-&amp;gt;PDDR=1 &amp;lt;&amp;lt; 18;&lt;BR /&gt; for(;;)&lt;BR /&gt; {&lt;BR /&gt; if(TPM0_SC &amp;amp; 0x00000008 == 0x00000008)&lt;BR /&gt; {&lt;BR /&gt; TPM0_SC |= 0x00000080; //Clear overflow flag&lt;BR /&gt; //TPM0_C0V = 0x00;//Not sure about this part&lt;BR /&gt; PTB_BASE_PTR-&amp;gt;PDDR=0 &amp;lt;&amp;lt; 18;&lt;BR /&gt; }&lt;/P&gt;&lt;P style="padding-left: 30px;"&gt;}&lt;BR /&gt;}&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Sun, 09 Oct 2016 05:49:10 GMT</pubDate>
      <guid>https://community.nxp.com/t5/Kinetis-Microcontrollers/Using-PWM-mode-in-KL25z-as-timer/m-p/617149#M36786</guid>
      <dc:creator>subhradeepdutta</dc:creator>
      <dc:date>2016-10-09T05:49:10Z</dc:date>
    </item>
    <item>
      <title>Re: Using PWM mode in KL25z as timer</title>
      <link>https://community.nxp.com/t5/Kinetis-Microcontrollers/Using-PWM-mode-in-KL25z-as-timer/m-p/617150#M36787</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi Subhradeep,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; Actually it is the same, you just need to refer the configuration code.&lt;/P&gt;&lt;P&gt;1. You should know your TPM source clock.&lt;/P&gt;&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper" image-alt="pastedImage_1.png"&gt;&lt;img src="https://community.nxp.com/t5/image/serverpage/image-id/3352i2FD4919E6109F7BC/image-size/large?v=v2&amp;amp;px=999" role="button" title="pastedImage_1.png" alt="pastedImage_1.png" /&gt;&lt;/span&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; From this picture, you can get that the TPM have four source clock: MCGIRCLK, OSCERCLK, MCGFLLCLK, MCGPLLCLK.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; Because I use the OSCERCLK 8Mhz, then the code is:&lt;/P&gt;&lt;P&gt;&amp;nbsp; SIM_SOPT2 = (uint32_t)((SIM_SOPT2 &amp;amp; (uint32_t)~(uint32_t)(&lt;BR /&gt;&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; SIM_SOPT2_TPMSRC(0x01)&lt;BR /&gt;&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; )) | (uint32_t)(&lt;BR /&gt;&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; SIM_SOPT2_TPMSRC(0x02)&lt;BR /&gt;&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;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;2.&amp;nbsp; Configure the TPM module&lt;/P&gt;&lt;P&gt;The TPM input clock is 8Mhz, because you want to get the 10us, then I divide the TPM clock with 8, and get 1Mhz, it is 1us.&lt;/P&gt;&lt;P&gt;Now, if you want to get 10us cycle, you just need to set MOD=9, then you will get (1+9)*1us=10us cycle.&lt;/P&gt;&lt;P&gt;The bare bone TPM code can be initialized like this:&lt;/P&gt;&lt;P&gt;void TPM0_Init(void)&lt;BR /&gt;{&lt;BR /&gt;&amp;nbsp; /* SIM_SCGC6: TPM0=1 */&lt;BR /&gt;&amp;nbsp; SIM_SCGC6 |= SIM_SCGC6_TPM0_MASK;&amp;nbsp; // enable the TPM module&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; TPM0_C0SC = (TPM_CnSC_MSB_MASK | TPM_CnSC_ELSB_MASK);&amp;nbsp; // choose the channel 0 mode as edge-aligned PWM mode &lt;BR /&gt;&amp;nbsp; TPM0_C0V = TPM_CnV_VAL(0x05);&amp;nbsp; // choose channel 0 value = 5, dufy is 5us&lt;BR /&gt;&amp;nbsp; /* TPM0_MOD: MOD=9 */&lt;BR /&gt;&amp;nbsp; TPM0_MOD = (uint32_t)((TPM0_MOD &amp;amp; (uint32_t)~(uint32_t)(&lt;BR /&gt;&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; TPM_MOD_MOD(0xFFF6)&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; )) | (uint32_t)(&lt;BR /&gt;&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; TPM_MOD_MOD(0x09)&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;BR /&gt;&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; // TPM MOD =9 ,it means the TPM cycle is 10us&lt;BR /&gt;&amp;nbsp; /* TPM0_SC: DMA=0,TOF=1,TOIE=1,CPWMS=0,CMOD=1,PS=3 */&lt;BR /&gt;&amp;nbsp; TPM0_SC = (uint32_t)((TPM0_SC &amp;amp; (uint32_t)~(uint32_t)(&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; TPM_SC_DMA_MASK |&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; TPM_SC_CPWMS_MASK |&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; TPM_SC_CMOD(0x02) |&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; TPM_SC_PS(0x04)&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; )) | (uint32_t)(&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; TPM_SC_TOF_MASK |&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; TPM_SC_TOIE_MASK |&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; TPM_SC_CMOD(0x01) |&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; TPM_SC_PS(0x03)&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ));&lt;BR /&gt;}&lt;/P&gt;&lt;P&gt;The test result is the same as PE.&lt;/P&gt;&lt;P&gt;You can try it on your side, but at first, you should make sure your project have 8Mhz OSC at first, you can use the FRDM-KL25 board to test it.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Wish it helps you!&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;BR /&gt;Have a great day,&lt;BR /&gt;Kerry&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;-----------------------------------------------------------------------------------------------------------------------&lt;BR /&gt;Note: If this post answers your question, please click the Correct Answer button. Thank you!&lt;BR /&gt;-----------------------------------------------------------------------------------------------------------------------&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Sun, 09 Oct 2016 06:12:16 GMT</pubDate>
      <guid>https://community.nxp.com/t5/Kinetis-Microcontrollers/Using-PWM-mode-in-KL25z-as-timer/m-p/617150#M36787</guid>
      <dc:creator>kerryzhou</dc:creator>
      <dc:date>2016-10-09T06:12:16Z</dc:date>
    </item>
    <item>
      <title>Re: Using PWM mode in KL25z as timer</title>
      <link>https://community.nxp.com/t5/Kinetis-Microcontrollers/Using-PWM-mode-in-KL25z-as-timer/m-p/617151#M36788</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Thanks Kerry. just need to initialize the correct clock in the beginning.&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Mon, 10 Oct 2016 21:06:32 GMT</pubDate>
      <guid>https://community.nxp.com/t5/Kinetis-Microcontrollers/Using-PWM-mode-in-KL25z-as-timer/m-p/617151#M36788</guid>
      <dc:creator>subhradeepdutta</dc:creator>
      <dc:date>2016-10-10T21:06:32Z</dc:date>
    </item>
  </channel>
</rss>

