<?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>S32KのトピックRe: ResumeAllInterrupts() does not work</title>
    <link>https://community.nxp.com/t5/S32K/ResumeAllInterrupts-does-not-work/m-p/1753250#M28443</link>
    <description>Yes, it does work! Thank you very much!</description>
    <pubDate>Tue, 07 Nov 2023 05:49:44 GMT</pubDate>
    <dc:creator>wjhtu</dc:creator>
    <dc:date>2023-11-07T05:49:44Z</dc:date>
    <item>
      <title>ResumeAllInterrupts() does not work</title>
      <link>https://community.nxp.com/t5/S32K/ResumeAllInterrupts-does-not-work/m-p/1752607#M28413</link>
      <description>&lt;P&gt;Hi,&amp;nbsp;I have a problem when using OsIf_SuspendAllInterrupts() and OsIf_ResumeAllInterrupts() .&lt;/P&gt;&lt;P&gt;I setup a simple project with STM0 in a 5ms periodic interrupt . When I call OsIf_SuspendAllInterrupts() and then call OsIf_ResumeAllInterrupts() immediately&amp;nbsp; the timer resumes and runs normally.&amp;nbsp;&lt;/P&gt;&lt;P&gt;But if I do some "heavy work" betweeen these two functions, for example a soft-delay in several minitues, the timer cannot resumes.&lt;/P&gt;&lt;P&gt;My board is S32K344 EVB RED.&lt;/P&gt;&lt;P&gt;Thank you for any help.&amp;nbsp;&lt;/P&gt;&lt;DIV&gt;My Code:&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;static int os_timer_ms=0;&lt;/DIV&gt;&lt;DIV&gt;void Stm0Ch0Callback(void)&lt;/DIV&gt;&lt;DIV&gt;{&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;os_timer_ms+=5;&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;if(os_timer_ms&amp;gt;99999)&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;{&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;os_timer_ms=0;&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;}&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;if(os_timer_ms%1000==0)&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;printf("os_timer_ms=%d\r\n",os_timer_ms);&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;}&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;void SoftDelayMs(int ms)&lt;/DIV&gt;&lt;DIV&gt;{&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;for(int i=0;i&amp;lt;ms;i++)&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;{&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;for(int j=0;j&amp;lt;16000;j++)&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;{&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;int k=i+j;&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;}&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;}&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;}&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;int main(void)&lt;/DIV&gt;&lt;DIV&gt;{&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;BoardInit();&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;HAL_LED_Init();&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;HAL_UART_Init();&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;HAL_STM0_Init();&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;printf("hello!\r\n");&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; for(;;)&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; {&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; static int timer_ms=0;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; if(timer_ms&amp;lt;os_timer_ms)&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; {&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; timer_ms=os_timer_ms;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; if(timer_ms==5000)&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; {&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; printf("a\r\n");&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; OsIf_SuspendAllInterrupts();&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; printf("b\r\n");&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; SoftDelayMs(5000);&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; printf("c\r\n");&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; OsIf_ResumeAllInterrupts();&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; printf("d\r\n");&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; }&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; }&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; if(exit_code != 0)&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; {&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; break;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; }&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; return exit_code;&lt;/DIV&gt;&lt;DIV&gt;}&lt;/DIV&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Mon, 06 Nov 2023 08:01:35 GMT</pubDate>
      <guid>https://community.nxp.com/t5/S32K/ResumeAllInterrupts-does-not-work/m-p/1752607#M28413</guid>
      <dc:creator>wjhtu</dc:creator>
      <dc:date>2023-11-06T08:01:35Z</dc:date>
    </item>
    <item>
      <title>Re: ResumeAllInterrupts() does not work</title>
      <link>https://community.nxp.com/t5/S32K/ResumeAllInterrupts-does-not-work/m-p/1753221#M28441</link>
      <description>&lt;P&gt;&lt;A href="mailto:Hi@wjhtu" target="_blank"&gt;Hi@wjhtu&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;When you turn off all interrupts, SMT will still count. Then turn on interrupts after a delay, at this time, the value of CNT is already much greater than the set trigger value, and it will no longer trigger interrupts.&lt;BR /&gt;So you can &lt;STRONG&gt;try clearing SMT-&amp;gt;CNT after calling OsIf_ResumeAllInterrupts&lt;/STRONG&gt;, and everything will be fine.&lt;/P&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Senlent_0-1699331397527.png" style="width: 685px;"&gt;&lt;img src="https://community.nxp.com/t5/image/serverpage/image-id/248753i013C95342B125DA9/image-dimensions/685x101?v=v2" width="685" height="101" role="button" title="Senlent_0-1699331397527.png" alt="Senlent_0-1699331397527.png" /&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Tue, 07 Nov 2023 04:30:17 GMT</pubDate>
      <guid>https://community.nxp.com/t5/S32K/ResumeAllInterrupts-does-not-work/m-p/1753221#M28441</guid>
      <dc:creator>Senlent</dc:creator>
      <dc:date>2023-11-07T04:30:17Z</dc:date>
    </item>
    <item>
      <title>Re: ResumeAllInterrupts() does not work</title>
      <link>https://community.nxp.com/t5/S32K/ResumeAllInterrupts-does-not-work/m-p/1753250#M28443</link>
      <description>Yes, it does work! Thank you very much!</description>
      <pubDate>Tue, 07 Nov 2023 05:49:44 GMT</pubDate>
      <guid>https://community.nxp.com/t5/S32K/ResumeAllInterrupts-does-not-work/m-p/1753250#M28443</guid>
      <dc:creator>wjhtu</dc:creator>
      <dc:date>2023-11-07T05:49:44Z</dc:date>
    </item>
  </channel>
</rss>

