<?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 S32K148 SysTick_Handler in S32K</title>
    <link>https://community.nxp.com/t5/S32K/S32K148-SysTick-Handler/m-p/955796#M5314</link>
    <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;//====================================================================================&lt;BR /&gt;//函数名称 : u8 BSPSysTickInit(u32 time, u8 busClock)&lt;BR /&gt;//输入参数 : time:配置时间[1,200000](0.001ms即1us) busClock:总线时钟≥1(M)&lt;BR /&gt;//输出参数 : 初始化结果 TRUE:成功 FALSE:失败&lt;BR /&gt;//函数功能 : 系统闹钟定时中断驱动模块初始化&lt;BR /&gt;//注意事项 : BSP调用,系统us级定时&lt;BR /&gt;//===================================================================================&lt;BR /&gt;u8 BSPSysTickInit(u32 time, u8 busClock)&lt;BR /&gt;{&lt;BR /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;//u32 clkTime = 0;&lt;BR /&gt; &lt;BR /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;//参数错误&lt;BR /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if((0 == time) || (time &amp;gt; 200000) || (0 == busClock))&lt;BR /&gt; &amp;nbsp;&amp;nbsp;&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;return(FALSE);&lt;BR /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;S32_SysTick-&amp;gt;RVR = 0xFFFFFF;//350ms&lt;BR /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;//S32_SysTick-&amp;gt;RVR = 0xBB3F;//1ms&lt;BR /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;S32_SysTick-&amp;gt;CVR = S32_SysTick_CVR_CURRENT(0);&lt;BR /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;S32_SysTick-&amp;gt;CVR = 0;&lt;BR /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;S32_SysTick-&amp;gt;CSR = S32_SysTick_CSR_TICKINT(1) | S32_SysTick_CSR_ENABLE(1);&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;return(TRUE);&lt;BR /&gt;}&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;//====================================================================================&lt;BR /&gt;//函数名称 :void SysTick_Handler(void)&lt;BR /&gt;//输入参数 : void&lt;BR /&gt;//输出参数 : void&lt;BR /&gt;//函数功能 : 系统闹钟定时中断程序&lt;BR /&gt;//注意事项 : 底层调用,用于系统1ms定时&lt;BR /&gt;//====================================================================================&lt;BR /&gt;void SysTick_Handler(void)&lt;/P&gt;&lt;P&gt;{&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;BSPCosRefur();&lt;/P&gt;&lt;P&gt;}&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;//====================================================================================&lt;BR /&gt;//函数名称 : void BSP_ENTER_CRITICAL(void)&lt;BR /&gt;//输入参数 : void&lt;BR /&gt;//输出参数 : void&lt;BR /&gt;//函数功能 : 进入临界区域（禁止中断）&lt;BR /&gt;//注意事项 : &lt;BR /&gt;//====================================================================================&lt;BR /&gt;void BSP_ENTER_CRITICAL(void)&lt;BR /&gt;{&lt;BR /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;INT_SYS_DisableIRQGlobal();&lt;BR /&gt;}&lt;/P&gt;&lt;P&gt;//====================================================================================&lt;BR /&gt;//函数名称 : void BSP_EXIT_CRITICAL(void)&lt;BR /&gt;//输入参数 : void&lt;BR /&gt;//输出参数 : void&lt;BR /&gt;//函数功能 : 切换出临界区域（使能中断）&lt;BR /&gt;//注意事项 : &lt;BR /&gt;//====================================================================================&lt;BR /&gt;void BSP_EXIT_CRITICAL(void)&lt;BR /&gt;{&lt;BR /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;INT_SYS_EnableIRQGlobal();&lt;BR /&gt;}&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;//====================================================================================&lt;BR /&gt;//函数名称 : void BSPCosRefur(void)&lt;BR /&gt;//输入参数 : void&lt;BR /&gt;//输出参数 : void&lt;BR /&gt;//函数功能 : 中断执行函数,设定COS任务标志&lt;BR /&gt;//注意事项 : 1ms定时中断调用&lt;BR /&gt;//====================================================================================&lt;BR /&gt;void BSPCosRefur(void)&lt;BR /&gt;{&lt;BR /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;u8 i = 0;&lt;BR /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;t_COS *pcos;&lt;BR /&gt; &lt;BR /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;sCOSTimer++;&lt;BR /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;BR /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;pcos = &amp;amp;sCosTbl[0];&lt;BR /&gt; &lt;BR /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if(sCOSTimer &amp;gt;= COS_MAX_USEABLE_TIME)&lt;BR /&gt; &amp;nbsp;&amp;nbsp;&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;for(i = 0; i &amp;lt; COS_MAX_NUM; i++)&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;{&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;if(pcos-&amp;gt;CosCtr != 0x0ffffffff)&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;{&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;&amp;nbsp;pcos-&amp;gt;CosCtr -= COS_MAX_USEABLE_TIME;&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;}&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;pcos++;&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;}&lt;BR /&gt; &lt;BR /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;sCOSTimer -= COS_MAX_USEABLE_TIME;&lt;BR /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;BR /&gt; &lt;BR /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;pcos = &amp;amp;sCosTbl[0];&lt;BR /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;for(i = 0; i &amp;lt; COS_MAX_NUM; i++)&lt;BR /&gt; &amp;nbsp;&amp;nbsp;&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;if(pcos-&amp;gt;CosEn == 1)&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;{&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;if(pcos-&amp;gt;CosCtr &amp;lt;= sCOSTimer)&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;{&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;&amp;nbsp;pcos-&amp;gt;CosRdy = 1;&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;}&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;}&lt;BR /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;pcos++;&lt;BR /&gt; &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;u32 watchcounter = 0;&lt;BR /&gt;//===================================================================================&lt;BR /&gt;//函数名称 : int main(void)&lt;BR /&gt;//输入参数 : void&lt;BR /&gt;//输出参数 : void&lt;BR /&gt;//函数功能 : 主函数,自动执行&lt;BR /&gt;//注意事项 :&lt;BR /&gt;//====================================================================================&lt;BR /&gt;int main(void)&lt;BR /&gt;{&lt;BR /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;BSPSystemInit(); //初始化&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;for(;;)&lt;BR /&gt; &amp;nbsp;&amp;nbsp;&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;&lt;SPAN style="color: #ff6600;"&gt;BSPCosTask((void *)0); //执行COS任务&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="color: #ff6600;"&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;//watchcounter++;&lt;/SPAN&gt;&lt;BR /&gt; &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;hello !&lt;/P&gt;&lt;P&gt;&lt;SPAN style="color: #333333; background-color: #f7f8fa; font-weight: normal; font-size: 14px;"&gt;I have a question now.&lt;/SPAN&gt;&lt;/P&gt;&lt;P class="" data-section="0" style="color: #333333; background-color: #f7f8fa; font-weight: normal; font-size: 14px;"&gt;&lt;SPAN class="" data-group="0-0" data-section="0" data-sentence="0"&gt;When I use the system timer to interrupt, the interrupt works, the main function works, and the&amp;nbsp;"&lt;SPAN style="color: #ff6600;"&gt;watchcounter&lt;/SPAN&gt;" variable counts normally.&lt;/SPAN&gt;&lt;/P&gt;&lt;P class="" data-section="1" style="color: #333333; background-color: #f7f8fa; font-weight: normal; font-size: 14px;"&gt;&lt;SPAN class="" data-group="1-0" data-section="1" data-sentence="0"&gt;But when I switch to my g task, the interrupt gets stuck and my &lt;SPAN style="color: #ff6600;"&gt;"BSPCosTask((void *)0)&lt;/SPAN&gt;"&amp;nbsp;task doesn't work properly. Why?&lt;/SPAN&gt;&lt;SPAN class="" data-group="1-1" data-section="1" data-sentence="1"&gt;Is my Systick_Handler configuration abnormal?&lt;/SPAN&gt;&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
    <pubDate>Thu, 22 Aug 2019 04:30:45 GMT</pubDate>
    <dc:creator>347996379</dc:creator>
    <dc:date>2019-08-22T04:30:45Z</dc:date>
    <item>
      <title>S32K148 SysTick_Handler</title>
      <link>https://community.nxp.com/t5/S32K/S32K148-SysTick-Handler/m-p/955796#M5314</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;//====================================================================================&lt;BR /&gt;//函数名称 : u8 BSPSysTickInit(u32 time, u8 busClock)&lt;BR /&gt;//输入参数 : time:配置时间[1,200000](0.001ms即1us) busClock:总线时钟≥1(M)&lt;BR /&gt;//输出参数 : 初始化结果 TRUE:成功 FALSE:失败&lt;BR /&gt;//函数功能 : 系统闹钟定时中断驱动模块初始化&lt;BR /&gt;//注意事项 : BSP调用,系统us级定时&lt;BR /&gt;//===================================================================================&lt;BR /&gt;u8 BSPSysTickInit(u32 time, u8 busClock)&lt;BR /&gt;{&lt;BR /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;//u32 clkTime = 0;&lt;BR /&gt; &lt;BR /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;//参数错误&lt;BR /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if((0 == time) || (time &amp;gt; 200000) || (0 == busClock))&lt;BR /&gt; &amp;nbsp;&amp;nbsp;&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;return(FALSE);&lt;BR /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;S32_SysTick-&amp;gt;RVR = 0xFFFFFF;//350ms&lt;BR /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;//S32_SysTick-&amp;gt;RVR = 0xBB3F;//1ms&lt;BR /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;S32_SysTick-&amp;gt;CVR = S32_SysTick_CVR_CURRENT(0);&lt;BR /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;S32_SysTick-&amp;gt;CVR = 0;&lt;BR /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;S32_SysTick-&amp;gt;CSR = S32_SysTick_CSR_TICKINT(1) | S32_SysTick_CSR_ENABLE(1);&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;return(TRUE);&lt;BR /&gt;}&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;//====================================================================================&lt;BR /&gt;//函数名称 :void SysTick_Handler(void)&lt;BR /&gt;//输入参数 : void&lt;BR /&gt;//输出参数 : void&lt;BR /&gt;//函数功能 : 系统闹钟定时中断程序&lt;BR /&gt;//注意事项 : 底层调用,用于系统1ms定时&lt;BR /&gt;//====================================================================================&lt;BR /&gt;void SysTick_Handler(void)&lt;/P&gt;&lt;P&gt;{&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;BSPCosRefur();&lt;/P&gt;&lt;P&gt;}&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;//====================================================================================&lt;BR /&gt;//函数名称 : void BSP_ENTER_CRITICAL(void)&lt;BR /&gt;//输入参数 : void&lt;BR /&gt;//输出参数 : void&lt;BR /&gt;//函数功能 : 进入临界区域（禁止中断）&lt;BR /&gt;//注意事项 : &lt;BR /&gt;//====================================================================================&lt;BR /&gt;void BSP_ENTER_CRITICAL(void)&lt;BR /&gt;{&lt;BR /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;INT_SYS_DisableIRQGlobal();&lt;BR /&gt;}&lt;/P&gt;&lt;P&gt;//====================================================================================&lt;BR /&gt;//函数名称 : void BSP_EXIT_CRITICAL(void)&lt;BR /&gt;//输入参数 : void&lt;BR /&gt;//输出参数 : void&lt;BR /&gt;//函数功能 : 切换出临界区域（使能中断）&lt;BR /&gt;//注意事项 : &lt;BR /&gt;//====================================================================================&lt;BR /&gt;void BSP_EXIT_CRITICAL(void)&lt;BR /&gt;{&lt;BR /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;INT_SYS_EnableIRQGlobal();&lt;BR /&gt;}&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;//====================================================================================&lt;BR /&gt;//函数名称 : void BSPCosRefur(void)&lt;BR /&gt;//输入参数 : void&lt;BR /&gt;//输出参数 : void&lt;BR /&gt;//函数功能 : 中断执行函数,设定COS任务标志&lt;BR /&gt;//注意事项 : 1ms定时中断调用&lt;BR /&gt;//====================================================================================&lt;BR /&gt;void BSPCosRefur(void)&lt;BR /&gt;{&lt;BR /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;u8 i = 0;&lt;BR /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;t_COS *pcos;&lt;BR /&gt; &lt;BR /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;sCOSTimer++;&lt;BR /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;BR /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;pcos = &amp;amp;sCosTbl[0];&lt;BR /&gt; &lt;BR /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if(sCOSTimer &amp;gt;= COS_MAX_USEABLE_TIME)&lt;BR /&gt; &amp;nbsp;&amp;nbsp;&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;for(i = 0; i &amp;lt; COS_MAX_NUM; i++)&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;{&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;if(pcos-&amp;gt;CosCtr != 0x0ffffffff)&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;{&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;&amp;nbsp;pcos-&amp;gt;CosCtr -= COS_MAX_USEABLE_TIME;&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;}&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;pcos++;&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;}&lt;BR /&gt; &lt;BR /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;sCOSTimer -= COS_MAX_USEABLE_TIME;&lt;BR /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;BR /&gt; &lt;BR /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;pcos = &amp;amp;sCosTbl[0];&lt;BR /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;for(i = 0; i &amp;lt; COS_MAX_NUM; i++)&lt;BR /&gt; &amp;nbsp;&amp;nbsp;&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;if(pcos-&amp;gt;CosEn == 1)&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;{&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;if(pcos-&amp;gt;CosCtr &amp;lt;= sCOSTimer)&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;{&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;&amp;nbsp;pcos-&amp;gt;CosRdy = 1;&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;}&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;}&lt;BR /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;pcos++;&lt;BR /&gt; &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;u32 watchcounter = 0;&lt;BR /&gt;//===================================================================================&lt;BR /&gt;//函数名称 : int main(void)&lt;BR /&gt;//输入参数 : void&lt;BR /&gt;//输出参数 : void&lt;BR /&gt;//函数功能 : 主函数,自动执行&lt;BR /&gt;//注意事项 :&lt;BR /&gt;//====================================================================================&lt;BR /&gt;int main(void)&lt;BR /&gt;{&lt;BR /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;BSPSystemInit(); //初始化&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;for(;;)&lt;BR /&gt; &amp;nbsp;&amp;nbsp;&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;&lt;SPAN style="color: #ff6600;"&gt;BSPCosTask((void *)0); //执行COS任务&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="color: #ff6600;"&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;//watchcounter++;&lt;/SPAN&gt;&lt;BR /&gt; &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;hello !&lt;/P&gt;&lt;P&gt;&lt;SPAN style="color: #333333; background-color: #f7f8fa; font-weight: normal; font-size: 14px;"&gt;I have a question now.&lt;/SPAN&gt;&lt;/P&gt;&lt;P class="" data-section="0" style="color: #333333; background-color: #f7f8fa; font-weight: normal; font-size: 14px;"&gt;&lt;SPAN class="" data-group="0-0" data-section="0" data-sentence="0"&gt;When I use the system timer to interrupt, the interrupt works, the main function works, and the&amp;nbsp;"&lt;SPAN style="color: #ff6600;"&gt;watchcounter&lt;/SPAN&gt;" variable counts normally.&lt;/SPAN&gt;&lt;/P&gt;&lt;P class="" data-section="1" style="color: #333333; background-color: #f7f8fa; font-weight: normal; font-size: 14px;"&gt;&lt;SPAN class="" data-group="1-0" data-section="1" data-sentence="0"&gt;But when I switch to my g task, the interrupt gets stuck and my &lt;SPAN style="color: #ff6600;"&gt;"BSPCosTask((void *)0)&lt;/SPAN&gt;"&amp;nbsp;task doesn't work properly. Why?&lt;/SPAN&gt;&lt;SPAN class="" data-group="1-1" data-section="1" data-sentence="1"&gt;Is my Systick_Handler configuration abnormal?&lt;/SPAN&gt;&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 22 Aug 2019 04:30:45 GMT</pubDate>
      <guid>https://community.nxp.com/t5/S32K/S32K148-SysTick-Handler/m-p/955796#M5314</guid>
      <dc:creator>347996379</dc:creator>
      <dc:date>2019-08-22T04:30:45Z</dc:date>
    </item>
    <item>
      <title>Re: S32K148 SysTick_Handler</title>
      <link>https://community.nxp.com/t5/S32K/S32K148-SysTick-Handler/m-p/955797#M5315</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hello,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Sorry for the late response. Could you please clarify where does your interrupt gets stuck? I took a look at your Systick_Handler, and it's not the best implementation. It's recommended to keep the interrupt handlers as short as possible, and in your case, you have a for loop.&lt;/P&gt;&lt;P&gt;I think you are trying to make a 1ms delay, is this correct? If this is the case, I would recommend you to use the function OSIF_TimeDelay, this function generates any delay in miliseconds. You can find it within the SDK in the files osif_baremetal.c and osif_baremetal.h. If you import the lin_master example provided in the SDK, you will find these files on the following path: lin_master_s32k148 &amp;gt; SDK &amp;gt; rtos &amp;gt; osif.&lt;/P&gt;&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper" image-alt="pastedImage_24.png"&gt;&lt;img src="https://community.nxp.com/t5/image/serverpage/image-id/86091i643AFA6F0C71EA8E/image-size/large?v=v2&amp;amp;px=999" role="button" title="pastedImage_24.png" alt="pastedImage_24.png" /&gt;&lt;/span&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Best regards,&lt;/P&gt;&lt;P&gt;Victor&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 25 Sep 2019 16:44:35 GMT</pubDate>
      <guid>https://community.nxp.com/t5/S32K/S32K148-SysTick-Handler/m-p/955797#M5315</guid>
      <dc:creator>victorjimenez</dc:creator>
      <dc:date>2019-09-25T16:44:35Z</dc:date>
    </item>
  </channel>
</rss>

