<?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>LPC Microcontrollers中的主题 CMSIS bug for Timer capture functions</title>
    <link>https://community.nxp.com/t5/LPC-Microcontrollers/CMSIS-bug-for-Timer-capture-functions/m-p/517129#M2023</link>
    <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;STRONG&gt;Content originally posted in LPCWare by tjoAG on Fri Nov 23 00:22:00 MST 2012&lt;/STRONG&gt;&lt;BR /&gt;&lt;SPAN&gt;Hi all&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;There must be something wrong with the Timer capture function in the CMSIS for the LPC17xx!!&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;See this function:&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;lt;code&amp;gt;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;/*********************************************************************//**&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt; * @brief Get Capture Interrupt Status&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt; * @param[in]TIMx Timer selection, should be:&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt; *- LPC_TIM0: TIMER0 peripheral&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt; *- LPC_TIM1: TIMER1 peripheral&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt; *- LPC_TIM2: TIMER2 peripheral&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt; *- LPC_TIM3: TIMER3 peripheral&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt; * @param[in]IntFlag: interrupt type, should be:&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt; * - TIM_MR0_INT: Interrupt for Match channel 0&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt; * - TIM_MR1_INT: Interrupt for Match channel 1&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt; * - TIM_MR2_INT: Interrupt for Match channel 2&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt; * - TIM_MR3_INT: Interrupt for Match channel 3&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt; * - TIM_CR0_INT: Interrupt for Capture channel 0&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt; * - TIM_CR1_INT: Interrupt for Capture channel 1&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt; * @return FlagStatus&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt; * - SET : interrupt&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt; * - RESET : no interrupt&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt; **********************************************************************/&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;FlagStatus TIM_GetIntCaptureStatus(LPC_TIM_TypeDef *TIMx, TIM_INT_TYPE IntFlag)&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;{&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;uint8_t temp;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;temp = (TIMx-&amp;gt;IR) &amp;amp; (1&amp;lt;&amp;lt;(4+IntFlag));&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;if(temp)&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;return SET;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;return RESET;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;}&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;lt;/code&amp;gt;&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;The defines for the function&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;lt;code&amp;gt;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;/***********************************************************************&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt; * Timer device enumeration&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;**********************************************************************/&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;/** @brief interrupt type */&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;typedef enum&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;{&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;TIM_MR0_INT =0, /*!&amp;lt; interrupt for Match channel 0*/&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;TIM_MR1_INT =1, /*!&amp;lt; interrupt for Match channel 1*/&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;TIM_MR2_INT =2, /*!&amp;lt; interrupt for Match channel 2*/&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;TIM_MR3_INT =3, /*!&amp;lt; interrupt for Match channel 3*/&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;TIM_CR0_INT =4, /*!&amp;lt; interrupt for Capture channel 0*/&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;TIM_CR1_INT =5, /*!&amp;lt; interrupt for Capture channel 1*/&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;}TIM_INT_TYPE;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;lt;/code&amp;gt;&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;So getting the capture status for the TIM_CR0_INT would resolve in masking the IR register with:&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;0x100 (1 &amp;lt;&amp;lt; (4 + 4))&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Should have been 0x10 (bit 4)!!!&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Thomas&lt;/SPAN&gt;&lt;BR /&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
    <pubDate>Wed, 15 Jun 2016 17:26:25 GMT</pubDate>
    <dc:creator>lpcware</dc:creator>
    <dc:date>2016-06-15T17:26:25Z</dc:date>
    <item>
      <title>CMSIS bug for Timer capture functions</title>
      <link>https://community.nxp.com/t5/LPC-Microcontrollers/CMSIS-bug-for-Timer-capture-functions/m-p/517129#M2023</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;STRONG&gt;Content originally posted in LPCWare by tjoAG on Fri Nov 23 00:22:00 MST 2012&lt;/STRONG&gt;&lt;BR /&gt;&lt;SPAN&gt;Hi all&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;There must be something wrong with the Timer capture function in the CMSIS for the LPC17xx!!&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;See this function:&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;lt;code&amp;gt;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;/*********************************************************************//**&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt; * @brief Get Capture Interrupt Status&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt; * @param[in]TIMx Timer selection, should be:&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt; *- LPC_TIM0: TIMER0 peripheral&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt; *- LPC_TIM1: TIMER1 peripheral&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt; *- LPC_TIM2: TIMER2 peripheral&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt; *- LPC_TIM3: TIMER3 peripheral&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt; * @param[in]IntFlag: interrupt type, should be:&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt; * - TIM_MR0_INT: Interrupt for Match channel 0&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt; * - TIM_MR1_INT: Interrupt for Match channel 1&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt; * - TIM_MR2_INT: Interrupt for Match channel 2&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt; * - TIM_MR3_INT: Interrupt for Match channel 3&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt; * - TIM_CR0_INT: Interrupt for Capture channel 0&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt; * - TIM_CR1_INT: Interrupt for Capture channel 1&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt; * @return FlagStatus&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt; * - SET : interrupt&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt; * - RESET : no interrupt&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt; **********************************************************************/&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;FlagStatus TIM_GetIntCaptureStatus(LPC_TIM_TypeDef *TIMx, TIM_INT_TYPE IntFlag)&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;{&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;uint8_t temp;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;temp = (TIMx-&amp;gt;IR) &amp;amp; (1&amp;lt;&amp;lt;(4+IntFlag));&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;if(temp)&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;return SET;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;return RESET;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;}&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;lt;/code&amp;gt;&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;The defines for the function&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;lt;code&amp;gt;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;/***********************************************************************&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt; * Timer device enumeration&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;**********************************************************************/&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;/** @brief interrupt type */&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;typedef enum&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;{&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;TIM_MR0_INT =0, /*!&amp;lt; interrupt for Match channel 0*/&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;TIM_MR1_INT =1, /*!&amp;lt; interrupt for Match channel 1*/&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;TIM_MR2_INT =2, /*!&amp;lt; interrupt for Match channel 2*/&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;TIM_MR3_INT =3, /*!&amp;lt; interrupt for Match channel 3*/&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;TIM_CR0_INT =4, /*!&amp;lt; interrupt for Capture channel 0*/&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;TIM_CR1_INT =5, /*!&amp;lt; interrupt for Capture channel 1*/&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;}TIM_INT_TYPE;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;&amp;lt;/code&amp;gt;&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;So getting the capture status for the TIM_CR0_INT would resolve in masking the IR register with:&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;0x100 (1 &amp;lt;&amp;lt; (4 + 4))&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Should have been 0x10 (bit 4)!!!&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Thomas&lt;/SPAN&gt;&lt;BR /&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 15 Jun 2016 17:26:25 GMT</pubDate>
      <guid>https://community.nxp.com/t5/LPC-Microcontrollers/CMSIS-bug-for-Timer-capture-functions/m-p/517129#M2023</guid>
      <dc:creator>lpcware</dc:creator>
      <dc:date>2016-06-15T17:26:25Z</dc:date>
    </item>
    <item>
      <title>Re: CMSIS bug for Timer capture functions</title>
      <link>https://community.nxp.com/t5/LPC-Microcontrollers/CMSIS-bug-for-Timer-capture-functions/m-p/517130#M2024</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;STRONG&gt;Content originally posted in LPCWare by TKoe on Fri Nov 23 01:23:14 MST 2012&lt;/STRONG&gt;&lt;BR /&gt;&lt;SPAN&gt;Hi!&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Yep, looks like the "4+" part is wrong here.&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;The function TIM_GetIntStatus can be used instead though, because that does pretty much the same.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Maybe at one point the capture part was supposed to be an extra typedef where TIM_CR0_INT = 0 and TIM_CR1_INT = 1...&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Regards!&lt;/SPAN&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 15 Jun 2016 17:26:26 GMT</pubDate>
      <guid>https://community.nxp.com/t5/LPC-Microcontrollers/CMSIS-bug-for-Timer-capture-functions/m-p/517130#M2024</guid>
      <dc:creator>lpcware</dc:creator>
      <dc:date>2016-06-15T17:26:26Z</dc:date>
    </item>
  </channel>
</rss>

