Is This code correct for interfacing ultra-sonic sensor into i.mx93 (cortex-m33) ?

キャンセル
次の結果を表示 
表示  限定  | 次の代わりに検索 
もしかして: 

Is This code correct for interfacing ultra-sonic sensor into i.mx93 (cortex-m33) ?

944件の閲覧回数
Manjunathb
Contributor II
/*
 * Copyright (c) 2015, Freescale Semiconductor, Inc.
 * Copyright 2016-2021 NXP
 * All rights reserved.
 *
 * SPDX-License-Identifier: BSD-3-Clause
 */

#include "fsl_debug_console.h"
#include "board.h"
#include "app.h"
#include "fsl_tpm.h"
#include "fsl_rgpio.h"

/*******************************************************************************
 * Definitions
 ******************************************************************************/

/*******************************************************************************
 * Prototypes
 ******************************************************************************/

/*******************************************************************************
 * Variables
 ******************************************************************************/
volatile bool tpmIsrFlag = false;
volatile uint32_t risingTime = 0;
volatile uint32_t fallingTime = 0;
volatile bool gotRisingEdge = false;

/*******************************************************************************
 * Code
 ******************************************************************************/
void SetUp(void)
{
    rgpio_pin_config_t out_config ={
        kRGPIO_DigitalOutput,
        0,
    };
   
    /* Trigger pin */
    RGPIO_PinInit(BOARD_RGPIO,TRIG_PIN,&out_config);
    RGPIO_PinWrite(BOARD_RGPIO,TRIG_PIN,0);
}

void SendTrigPulse(void)
{
    RGPIO_PinWrite(BOARD_RGPIO, TRIG_PIN, 1);
    SDK_DelayAtLeastUs(10, SystemCoreClock);
    RGPIO_PinWrite(BOARD_RGPIO, TRIG_PIN, 0);
}

void TPM_INPUT_CAPTURE_HANDLER(void)
{
    uint32_t status = TPM_GetStatusFlags(DEMO_TPM_BASEADDR);
    if (status & TPM_CHANNEL_FLAG)
    {
        uint32_t capturedValue = TPM_GetChannelValue(DEMO_TPM_BASEADDR, BOARD_TPM_INPUT_CAPTURE_CHANNEL);
        // PRINTF("CAPTURED VALUE : %u\r\n",capturedValue);

        if (!gotRisingEdge)
        {
            risingTime = capturedValue;
            gotRisingEdge = true;

            // TPM_SetupInputCapture(DEMO_TPM_BASEADDR,BOARD_TPM_INPUT_CAPTURE_CHANNEL,kTPM_FallingEdge);

        }
        else
        {
            fallingTime = capturedValue;
            tpmIsrFlag = true;
            gotRisingEdge = false;

            // TPM_SetupInputCapture(DEMO_TPM_BASEADDR,BOARD_TPM_INPUT_CAPTURE_CHANNEL,kTPM_RisingEdge);
        }
       
        /* Clear interrupt flag.*/
        TPM_ClearStatusFlags(DEMO_TPM_BASEADDR, TPM_CHANNEL_FLAG);
    }
    SDK_ISR_EXIT_BARRIER;
}

/*!
 * @brief Main function
 */
int main(void)
{
    tpm_config_t tpmInfo;

    /* Board pin, clock, debug console init */
    BOARD_InitHardware();

    SetUp();

    /* Print a note to terminal */
    PRINTF("\r\nTPM input capture example\r\n");
    PRINTF("\r\nOnce the input signal is received the input capture value is printed\r\n");

    TPM_GetDefaultConfig(&tpmInfo);
    /* Initialize TPM module */
    TPM_Init(DEMO_TPM_BASEADDR, &tpmInfo);

    /* Setup input capture on a TPM channel */
    TPM_SetupInputCapture(DEMO_TPM_BASEADDR, BOARD_TPM_INPUT_CAPTURE_CHANNEL, kTPM_RiseAndFallEdge);

    /* Set the timer to be in free-running mode */
    TPM_SetTimerPeriod(DEMO_TPM_BASEADDR,
    TPM_MAX_COUNTER_VALUE(DEMO_TPM_BASEADDR));

    /* Enable channel interrupt when the second edge is detected */
    TPM_EnableInterrupts(DEMO_TPM_BASEADDR, TPM_CHANNEL_INTERRUPT_ENABLE);

    /* Enable at the NVIC */
    EnableIRQ(TPM_INTERRUPT_NUMBER);

    TPM_StartTimer(DEMO_TPM_BASEADDR, kTPM_SystemClock);
 
    while (1)
    {
        SendTrigPulse();
       
        while (tpmIsrFlag != true)
        {
        }
 
        uint32_t ticks = 0;
        if (fallingTime >= risingTime)
            ticks = fallingTime - risingTime;
        else
            ticks = (TPM_MAX_COUNTER_VALUE(DEMO_TPM_BASEADDR) - risingTime) + fallingTime;
   
        float PulseUs = (ticks * 1000000) / TPM_SOURCE_CLOCK ;
        PRINTF("RISING TIME  : %u\r\n",risingTime);
        PRINTF("FALLING TIME : %u\r\n",fallingTime);
        PRINTF("Micro second is : %.2f\r\n",PulseUs);

        SDK_DelayAtLeastUs(60000,SystemCoreClock);
    }
}
 
I have some problems in this code to check the object distance ?
Here SDK_DelayAtLeastUs(10,SystemCoreClock); This API is not giving the 10 us for trigger the pin to start measurement ?
 
ラベル(1)
0 件の賞賛
返信
4 返答(返信)

925件の閲覧回数
JorgeCas
NXP TechSupport
NXP TechSupport

Hello,

The sections of your code are according to the TPM configuration and generation/reading of TRIG and ECHO signals of the ultra-sonic sensor.

To confirm if your function is generating the 10 us signal, I suggest you measure the signal with an oscilloscope or digital analyzer. If the timing is not the expected, you could tune the values to generate the delay since the compiler may optimize the code in such a way that the pulse does not last as expected.

Did you check the operation of the sensor in the board?

Here an example as a reference:

Tutorial: Ultrasonic Ranging with the Freedom Board | MCU on Eclipse

Best regards.

0 件の賞賛
返信

894件の閲覧回数
Manjunathb
Contributor II
/*
 * Copyright (c) 2015, Freescale Semiconductor, Inc.
 * Copyright 2016-2021 NXP
 * All rights reserved.
 *
 * SPDX-License-Identifier: BSD-3-Clause
 */

#include "fsl_debug_console.h"
#include "board.h"
#include "app.h"
#include "fsl_tpm.h"
#include "fsl_rgpio.h"

/*******************************************************************************
 * Definitions
 ******************************************************************************/

/*******************************************************************************
 * Prototypes
 ******************************************************************************/

/*******************************************************************************
 * Variables
 ******************************************************************************/
volatile bool tpmIsrFlag = false;
volatile uint32_t risingTime = 0;
volatile uint32_t fallingTime = 0;
volatile bool gotRisingEdge = false;

/*******************************************************************************
 * Code
 ******************************************************************************/
void SetUp(void)
{
    rgpio_pin_config_t out_config ={
        kRGPIO_DigitalOutput,
        0,
    };
   
    /* Trigger pin */
    RGPIO_PinInit(BOARD_RGPIO,TRIG_PIN,&out_config);
    RGPIO_PinWrite(BOARD_RGPIO,TRIG_PIN,0);
}

void SendTrigPulse(void)
{
    RGPIO_PinWrite(BOARD_RGPIO, TRIG_PIN, 1);
    SDK_DelayAtLeastUs(10, SystemCoreClock);
    RGPIO_PinWrite(BOARD_RGPIO, TRIG_PIN, 0);
}

void TPM_INPUT_CAPTURE_HANDLER(void)
{
    uint32_t status = TPM_GetStatusFlags(DEMO_TPM_BASEADDR);
    if (status & TPM_CHANNEL_FLAG)
    {
        uint32_t capturedValue = TPM_GetChannelValue(DEMO_TPM_BASEADDR, BOARD_TPM_INPUT_CAPTURE_CHANNEL);
        // PRINTF("CAPTURED VALUE : %u\r\n",capturedValue);

        if (!gotRisingEdge)
        {
            risingTime = capturedValue;
            gotRisingEdge = true;

            // TPM_SetupInputCapture(DEMO_TPM_BASEADDR,BOARD_TPM_INPUT_CAPTURE_CHANNEL,kTPM_FallingEdge);

        }
        else
        {
            fallingTime = capturedValue;
            tpmIsrFlag = true;
            gotRisingEdge = false;

            // TPM_SetupInputCapture(DEMO_TPM_BASEADDR,BOARD_TPM_INPUT_CAPTURE_CHANNEL,kTPM_RisingEdge);
        }
       
        /* Clear interrupt flag.*/
        TPM_ClearStatusFlags(DEMO_TPM_BASEADDR, TPM_CHANNEL_FLAG);
    }
    SDK_ISR_EXIT_BARRIER;
}

/*!
 * @brief Main function
 */
int main(void)
{
    tpm_config_t tpmInfo;

    /* Board pin, clock, debug console init */
    BOARD_InitHardware();

    SetUp();

    /* Print a note to terminal */
    PRINTF("\r\nTPM input capture example\r\n");
    PRINTF("\r\nOnce the input signal is received the input capture value is printed\r\n");

    TPM_GetDefaultConfig(&tpmInfo);
    /* Initialize TPM module */
    TPM_Init(DEMO_TPM_BASEADDR, &tpmInfo);

    /* Setup input capture on a TPM channel */
    TPM_SetupInputCapture(DEMO_TPM_BASEADDR, BOARD_TPM_INPUT_CAPTURE_CHANNEL, kTPM_RiseAndFallEdge);

    /* Set the timer to be in free-running mode */
    TPM_SetTimerPeriod(DEMO_TPM_BASEADDR, TPM_MAX_COUNTER_VALUE(DEMO_TPM_BASEADDR));

    /* Enable channel interrupt when the second edge is detected */
    TPM_EnableInterrupts(DEMO_TPM_BASEADDR, TPM_CHANNEL_INTERRUPT_ENABLE);

    /* Enable at the NVIC */
    EnableIRQ(TPM_INTERRUPT_NUMBER);

    TPM_StartTimer(DEMO_TPM_BASEADDR, kTPM_SystemClock);

       while (1)
    {
        SendTrigPulse();
       
        while (tpmIsrFlag != true)
        {
        }

    // PRINTF("\r\nCapture value C(n)V=%x\r\n", TPM_GetChannelValue(DEMO_TPM_BASEADDR, BOARD_TPM_INPUT_CAPTURE_CHANNEL));
        uint32_t ticks = 0;
        if (fallingTime >= risingTime)
            ticks = fallingTime - risingTime;
        else
            ticks = (TPM_MAX_COUNTER_VALUE(DEMO_TPM_BASEADDR) - risingTime) + fallingTime;
   
        uint32_t tpm_clock = CLOCK_GetIpFreq(LPTPM_CLOCK_ROOT);
        float PulseUs = (ticks * 1000000) / tpm_clock ;
        PRINTF("RISING TIME  : %u\r\n",risingTime);
        PRINTF("FALLING TIME : %u\r\n",fallingTime);
        PRINTF("Micro second is : %.2f\r\n",PulseUs);

        float Distance = PulseUs / 58;
        PRINTF("DISTANCE : %.2f\r\n",Distance);

        SDK_DelayAtLeastUs(60000,SystemCoreClock);
    }
}
 
i checked using oscilloscope , its trigger 10 us is correct. But problem is now echo pin ?
its not reading the correct value ?
タグ(1)
0 件の賞賛
返信

912件の閲覧回数
Manjunathb
Contributor II
I have already verified the signal using an oscilloscope, and it shows a 10 µs pulse.

Next, I tested by looping the TRIG pin to the ECHO pin directly and measured the pulse width in code. However, it is printing approximately 66 µs instead of the expected 10 µs.

If the TRIG and ECHO pins are directly connected in a loop, it should measure exactly 10 µs, matching the signal generated. I’m unable to identify where the discrepancy is occurring.

Could this be due to a clock configuration issue or some timing inaccuracy in the capture logic?

I would appreciate your help in identifying and resolving this issue.

Thank you in advance!
0 件の賞賛
返信

914件の閲覧回数
Manjunathb
Contributor II
Thank you for your response!
0 件の賞賛
返信
%3CLINGO-SUB%20id%3D%22lingo-sub-2135797%22%20slang%3D%22en-US%22%20mode%3D%22CREATE%22%3E%E3%81%93%E3%81%AE%E3%82%B3%E3%83%BC%E3%83%89%E3%81%AF%E8%B6%85%E9%9F%B3%E6%B3%A2%E3%82%BB%E3%83%B3%E3%82%B5%E3%82%92%20i.mx93%20(Cortex-m33)%20%E3%81%AB%E6%8E%A5%E7%B6%9A%E3%81%99%E3%82%8B%E3%81%AE%E3%81%AB%E6%AD%A3%E3%81%97%E3%81%84%E3%81%A7%E3%81%99%E3%81%8B%3F%3C%2FLINGO-SUB%3E%3CLINGO-BODY%20id%3D%22lingo-body-2135797%22%20slang%3D%22en-US%22%20mode%3D%22CREATE%22%3E%3CDIV%3E%3CDIV%3E%3CSPAN%3E%2F*%3C%2FSPAN%3E%3C%2FDIV%3E%3CDIV%3E%3CSPAN%3E*%20%E8%91%97%E4%BD%9C%E6%A8%A9%20(c)%202015%E3%80%81Freescale%20Semiconductor%2C%20Inc.%3C%2FSPAN%3E%3C%2FDIV%3E%3CDIV%3E%3CSPAN%3E*%20%E8%91%97%E4%BD%9C%E6%A8%A9%202016-2021%20NXP%3C%2FSPAN%3E%3C%2FDIV%3E%3CDIV%3E%3CSPAN%3E*%20%E7%84%A1%E6%96%AD%E8%BB%A2%E8%BC%89%E3%82%92%E7%A6%81%E3%81%98%E3%81%BE%E3%81%99%E3%80%82%3C%2FSPAN%3E%3C%2FDIV%3E%3CDIV%3E%3CSPAN%3E*%3C%2FSPAN%3E%3C%2FDIV%3E%3CDIV%3E%3CSPAN%3E*%20SPDX%E3%83%A9%E3%82%A4%E3%82%BB%E3%83%B3%E3%82%B9%E8%AD%98%E5%88%A5%E5%AD%90%3A%20BSD-3%E6%9D%A1%E9%A0%85%3C%2FSPAN%3E%3C%2FDIV%3E%3CDIV%3E%3CSPAN%3E*%2F%3C%2FSPAN%3E%3C%2FDIV%3E%3CBR%20%2F%3E%3CDIV%3E%3CSPAN%3E%23include%3C%2FSPAN%3E%20%3CSPAN%3E%22fsl_debug_console.h%22%3C%2FSPAN%3E%3C%2FDIV%3E%3CDIV%3E%3CSPAN%3E%23include%3C%2FSPAN%3E%20%3CSPAN%3E%22board.h%22%3C%2FSPAN%3E%3C%2FDIV%3E%3CDIV%3E%3CSPAN%3E%23include%3C%2FSPAN%3E%20%3CSPAN%3E%22app.h%22%3C%2FSPAN%3E%3C%2FDIV%3E%3CDIV%3E%3CSPAN%3E%23include%3C%2FSPAN%3E%20%3CSPAN%3E%22fsl_tpm.h%22%3C%2FSPAN%3E%3C%2FDIV%3E%3CDIV%3E%3CSPAN%3E%23include%3C%2FSPAN%3E%20%3CSPAN%3E%22fsl_rgpio.h%22%3C%2FSPAN%3E%3C%2FDIV%3E%3CBR%20%2F%3E%3CDIV%3E%3CSPAN%3E%2F****************************************************************************************%3C%2FSPAN%3E%3C%2FDIV%3E%3CDIV%3E%3CSPAN%3E*%20%E5%AE%9A%E7%BE%A9%3C%2FSPAN%3E%3C%2FDIV%3E%3CDIV%3E%3CSPAN%3E**********************************************************************************%2F%3C%2FSPAN%3E%3C%2FDIV%3E%3CBR%20%2F%3E%3CDIV%3E%3CSPAN%3E%2F****************************************************************************************%3C%2FSPAN%3E%3C%2FDIV%3E%3CDIV%3E%3CSPAN%3E*%20%E3%83%97%E3%83%AD%E3%83%88%E3%82%BF%E3%82%A4%E3%83%97%3C%2FSPAN%3E%3C%2FDIV%3E%3CDIV%3E%3CSPAN%3E**********************************************************************************%2F%3C%2FSPAN%3E%3C%2FDIV%3E%3CBR%20%2F%3E%3CDIV%3E%3CSPAN%3E%2F****************************************************************************************%3C%2FSPAN%3E%3C%2FDIV%3E%3CDIV%3E%3CSPAN%3E*%20%E5%A4%89%E6%95%B0%3C%2FSPAN%3E%3C%2FDIV%3E%3CDIV%3E%3CSPAN%3E**********************************************************************************%2F%3C%2FSPAN%3E%3C%2FDIV%3E%3CDIV%3E%3CSPAN%3E%E6%8F%AE%E7%99%BA%E6%80%A7%3C%2FSPAN%3E%3CSPAN%3E%E3%83%96%E3%83%BC%E3%83%AB%3C%2FSPAN%3E%3CSPAN%3EtpmIsrFlag%20%3D%3C%2FSPAN%3E%20%3CSPAN%3Efalse%3C%2FSPAN%3E%20%3CSPAN%3E%3B%3C%2FSPAN%3E%3C%2FDIV%3E%3CDIV%3E%3CSPAN%3E%E6%8F%AE%E7%99%BA%E6%80%A7%3C%2FSPAN%3E%3CSPAN%3Euint32_t%3C%2FSPAN%3E%3CSPAN%3E%E7%AB%8B%E3%81%A1%E4%B8%8A%E3%81%8C%E3%82%8A%E6%99%82%E9%96%93%20%3D%3C%2FSPAN%3E%20%3CSPAN%3E0%3C%2FSPAN%3E%20%3CSPAN%3E%3B%3C%2FSPAN%3E%3C%2FDIV%3E%3CDIV%3E%3CSPAN%3E%E6%8F%AE%E7%99%BA%E6%80%A7%3C%2FSPAN%3E%3CSPAN%3Euint32_t%3C%2FSPAN%3E%3CSPAN%3E%E8%90%BD%E4%B8%8B%E6%99%82%E9%96%93%20%3D%3C%2FSPAN%3E%20%3CSPAN%3E0%3C%2FSPAN%3E%20%3CSPAN%3E%3B%3C%2FSPAN%3E%3C%2FDIV%3E%3CDIV%3E%3CSPAN%3E%E6%8F%AE%E7%99%BA%E6%80%A7%3C%2FSPAN%3E%3CSPAN%3E%E3%83%96%E3%83%BC%E3%83%AB%3C%2FSPAN%3E%3CSPAN%3EgotRisingEdge%20%3D%3C%2FSPAN%3E%20%3CSPAN%3Efalse%3C%2FSPAN%3E%20%3CSPAN%3E%3B%3C%2FSPAN%3E%3C%2FDIV%3E%3CBR%20%2F%3E%3CDIV%3E%3CSPAN%3E%2F****************************************************************************************%3C%2FSPAN%3E%3C%2FDIV%3E%3CDIV%3E%3CSPAN%3E*%20%E3%82%B3%E3%83%BC%E3%83%89%3C%2FSPAN%3E%3C%2FDIV%3E%3CDIV%3E%3CSPAN%3E**********************************************************************************%2F%3C%2FSPAN%3E%3C%2FDIV%3E%3CDIV%3E%3CSPAN%3Evoid%3C%2FSPAN%3E%3CSPAN%3E%E3%82%BB%E3%83%83%E3%83%88%E3%82%A2%E3%83%83%E3%83%97(%3C%2FSPAN%3E%20%3CSPAN%3Evoid%3C%2FSPAN%3E%20%3CSPAN%3E)%3C%2FSPAN%3E%3C%2FDIV%3E%3CDIV%3E%3CSPAN%3E%7B%3C%2FSPAN%3E%3C%2FDIV%3E%3CDIV%3E%3CSPAN%3Ergpio_pin_config_t%20out_config%20%3D%7B%3C%2FSPAN%3E%3C%2FDIV%3E%3CDIV%3E%3CSPAN%3E%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%3C%2FSPAN%3E%3CSPAN%3EkRGPIO_%E3%83%87%E3%82%B8%E3%82%BF%E3%83%AB%E5%87%BA%E5%8A%9B%3C%2FSPAN%3E%3CSPAN%3E%E3%80%81%3C%2FSPAN%3E%3C%2FDIV%3E%3CDIV%3E%3CSPAN%3E%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%3C%2FSPAN%3E%3CSPAN%3E0%3C%2FSPAN%3E%20%3CSPAN%3E%2C%3C%2FSPAN%3E%3C%2FDIV%3E%3CDIV%3E%3CSPAN%3E%7D%3B%3C%2FSPAN%3E%3C%2FDIV%3E%3CDIV%3E%3CSPAN%3E%26nbsp%3B%20%26nbsp%3B%20%3C%2FSPAN%3E%3C%2FDIV%3E%3CDIV%3E%3CSPAN%3E%2F*%20%E3%83%88%E3%83%AA%E3%82%AC%E3%83%BC%E3%83%94%E3%83%B3%20*%2F%3C%2FSPAN%3E%3C%2FDIV%3E%3CDIV%3E%3CSPAN%3ERGPIO_PinInit(%3C%2FSPAN%3E%20%3CSPAN%3EBOARD_RGPIO%3C%2FSPAN%3E%20%3CSPAN%3E%E3%80%81%3C%2FSPAN%3E%20%3CSPAN%3ETRIG_PIN%3C%2FSPAN%3E%20%3CSPAN%3E%E3%80%81%20%26amp%3Bout_config)%3B%3C%2FSPAN%3E%3C%2FDIV%3E%3CDIV%3E%3CSPAN%3ERGPIO_PinWrite(%3C%2FSPAN%3E%20%3CSPAN%3EBOARD_RGPIO%3C%2FSPAN%3E%20%3CSPAN%3E%2C%3C%2FSPAN%3E%20%3CSPAN%3ETRIG_PIN%3C%2FSPAN%3E%20%3CSPAN%3E%2C%3C%2FSPAN%3E%20%3CSPAN%3E0%3C%2FSPAN%3E%20%3CSPAN%3E)%3B%3C%2FSPAN%3E%3C%2FDIV%3E%3CDIV%3E%3CSPAN%3E%7D%3C%2FSPAN%3E%3C%2FDIV%3E%3CBR%20%2F%3E%3CDIV%3E%3CSPAN%3Evoid%3C%2FSPAN%3E%20%3CSPAN%3ESendTrigPulse(%3C%2FSPAN%3E%20%3CSPAN%3Evoid%3C%2FSPAN%3E%20%3CSPAN%3E)%3C%2FSPAN%3E%3C%2FDIV%3E%3CDIV%3E%3CSPAN%3E%7B%3C%2FSPAN%3E%3C%2FDIV%3E%3CDIV%3E%3CSPAN%3ERGPIO_PinWrite(%3C%2FSPAN%3E%20%3CSPAN%3EBOARD_RGPIO%3C%2FSPAN%3E%20%3CSPAN%3E%E3%80%81%3C%2FSPAN%3E%20%3CSPAN%3ETRIG_PIN%3C%2FSPAN%3E%20%3CSPAN%3E%E3%80%81%3C%2FSPAN%3E%20%3CSPAN%3E1%3C%2FSPAN%3E%20%3CSPAN%3E)%3B%3C%2FSPAN%3E%3C%2FDIV%3E%3CDIV%3E%3CSPAN%3ESDK_DelayAtLeastUs(%3C%2FSPAN%3E%20%3CSPAN%3E10%3C%2FSPAN%3E%20%3CSPAN%3E%2C%20SystemCoreClock)%3B%3C%2FSPAN%3E%3C%2FDIV%3E%3CDIV%3E%3CSPAN%3ERGPIO_PinWrite(%3C%2FSPAN%3E%20%3CSPAN%3EBOARD_RGPIO%3C%2FSPAN%3E%20%3CSPAN%3E%2C%3C%2FSPAN%3E%20%3CSPAN%3ETRIG_PIN%3C%2FSPAN%3E%20%3CSPAN%3E%2C%3C%2FSPAN%3E%20%3CSPAN%3E0%3C%2FSPAN%3E%20%3CSPAN%3E)%3B%3C%2FSPAN%3E%3C%2FDIV%3E%3CDIV%3E%3CSPAN%3E%7D%3C%2FSPAN%3E%3C%2FDIV%3E%3CBR%20%2F%3E%3CDIV%3E%3CSPAN%3Evoid%3C%2FSPAN%3E%20%3CSPAN%3ETPM_INPUT_CAPTURE_HANDLER%3C%2FSPAN%3E%20%3CSPAN%3E(%3C%2FSPAN%3E%20%3CSPAN%3Evoid%3C%2FSPAN%3E%20%3CSPAN%3E)%3C%2FSPAN%3E%3C%2FDIV%3E%3CDIV%3E%3CSPAN%3E%7B%3C%2FSPAN%3E%3C%2FDIV%3E%3CDIV%3E%3CSPAN%3E%26nbsp%3B%20%26nbsp%3B%20%3C%2FSPAN%3E%3CSPAN%3Euint32_t%3C%2FSPAN%3E%3CSPAN%3E%E3%82%B9%E3%83%86%E3%83%BC%E3%82%BF%E3%82%B9%20%3D%20TPM_GetStatusFlags(%3C%2FSPAN%3E%20%3CSPAN%3EDEMO_TPM_BASEADDR%3C%2FSPAN%3E%20%3CSPAN%3E)%3B%3C%2FSPAN%3E%3C%2FDIV%3E%3CDIV%3E%3CSPAN%3E%26nbsp%3B%20%26nbsp%3B%20%3C%2FSPAN%3E%3CSPAN%3Eif%3C%2FSPAN%3E%20%3CSPAN%3E(%E3%82%B9%E3%83%86%E3%83%BC%E3%82%BF%E3%82%B9%20%26amp%3B%3C%2FSPAN%3E%20%3CSPAN%3ETPM_CHANNEL_FLAG%3C%2FSPAN%3E%20%3CSPAN%3E)%3C%2FSPAN%3E%3C%2FDIV%3E%3CDIV%3E%3CSPAN%3E%26nbsp%3B%20%26nbsp%3B%20%7B%3C%2FSPAN%3E%3C%2FDIV%3E%3CDIV%3E%3CSPAN%3E%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%3C%2FSPAN%3E%3CSPAN%3Euint32_t%3C%2FSPAN%3E%3CSPAN%3E%E3%82%AD%E3%83%A3%E3%83%97%E3%83%81%E3%83%A3%E3%81%95%E3%82%8C%E3%81%9F%E5%80%A4%20%3D%20TPM_GetChannelValue(%3C%2FSPAN%3E%20%3CSPAN%3EDEMO_TPM_BASEADDR%3C%2FSPAN%3E%20%3CSPAN%3E%E3%80%81%3C%2FSPAN%3E%20%3CSPAN%3EBOARD_TPM_INPUT_CAPTURE_CHANNEL%3C%2FSPAN%3E%20%3CSPAN%3E)%3B%3C%2FSPAN%3E%3C%2FDIV%3E%3CDIV%3E%3CSPAN%3E%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%3C%2FSPAN%3E%3CSPAN%3E%2F%2F%20PRINTF(%22%E3%82%AD%E3%83%A3%E3%83%97%E3%83%81%E3%83%A3%E3%81%95%E3%82%8C%E3%81%9F%E5%80%A4%3A%20%25u%5Cr%5Cn%22%2CcapturedValue)%3B%3C%2FSPAN%3E%3C%2FDIV%3E%3CBR%20%2F%3E%3CDIV%3E%3CSPAN%3E%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%3C%2FSPAN%3E%3CSPAN%3Eif%3C%2FSPAN%3E%20%3CSPAN%3E(!gotRisingEdge)%3C%2FSPAN%3E%3C%2FDIV%3E%3CDIV%3E%3CSPAN%3E%7B%3C%2FSPAN%3E%3C%2FDIV%3E%3CDIV%3E%3CSPAN%3E%E7%AB%8B%E3%81%A1%E4%B8%8A%E3%81%8C%E3%82%8A%E6%99%82%E9%96%93%20%3D%20%E3%82%AD%E3%83%A3%E3%83%97%E3%83%81%E3%83%A3%E3%81%95%E3%82%8C%E3%81%9F%E5%80%A4%3B%3C%2FSPAN%3E%3C%2FDIV%3E%3CDIV%3E%3CSPAN%3EgotRisingEdge%20%3D%3C%2FSPAN%3E%20%3CSPAN%3Etrue%3C%2FSPAN%3E%20%3CSPAN%3E%3B%3C%2FSPAN%3E%3C%2FDIV%3E%3CBR%20%2F%3E%3CDIV%3E%3CSPAN%3E%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%3C%2FSPAN%3E%3CSPAN%3E%2F%2F%20TPM_SetupInputCapture(DEMO_TPM_BASEADDR%E3%80%81BOARD_TPM_INPUT_CAPTURE_CHANNEL%E3%80%81kTPM_FallingEdge)%3B%3C%2FSPAN%3E%3C%2FDIV%3E%3CBR%20%2F%3E%3CDIV%3E%3CSPAN%3E%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%20%7D%3C%2FSPAN%3E%3C%2FDIV%3E%3CDIV%3E%3CSPAN%3E%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%3C%2FSPAN%3E%3CSPAN%3E%E3%81%9D%E3%82%8C%E4%BB%A5%E5%A4%96%3C%2FSPAN%3E%3C%2FDIV%3E%3CDIV%3E%3CSPAN%3E%7B%3C%2FSPAN%3E%3C%2FDIV%3E%3CDIV%3E%3CSPAN%3E%E8%90%BD%E4%B8%8B%E6%99%82%E9%96%93%20%3D%20%E3%82%AD%E3%83%A3%E3%83%97%E3%83%81%E3%83%A3%E3%81%95%E3%82%8C%E3%81%9F%E5%80%A4%3B%3C%2FSPAN%3E%3C%2FDIV%3E%3CDIV%3E%3CSPAN%3EtpmIsrFlag%20%3D%3C%2FSPAN%3E%20%3CSPAN%3Etrue%3C%2FSPAN%3E%20%3CSPAN%3E%3B%3C%2FSPAN%3E%3C%2FDIV%3E%3CDIV%3E%3CSPAN%3EgotRisingEdge%20%3D%3C%2FSPAN%3E%20%3CSPAN%3Efalse%3C%2FSPAN%3E%20%3CSPAN%3E%3B%3C%2FSPAN%3E%3C%2FDIV%3E%3CBR%20%2F%3E%3CDIV%3E%3CSPAN%3E%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%3C%2FSPAN%3E%3CSPAN%3E%2F%2F%20TPM_SetupInputCapture(DEMO_TPM_BASEADDR%E3%80%81BOARD_TPM_INPUT_CAPTURE_CHANNEL%E3%80%81kTPM_RisingEdge)%3B%3C%2FSPAN%3E%3C%2FDIV%3E%3CDIV%3E%3CSPAN%3E%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%20%7D%3C%2FSPAN%3E%3C%2FDIV%3E%3CDIV%3E%3CSPAN%3E%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%3C%2FSPAN%3E%3C%2FDIV%3E%3CDIV%3E%3CSPAN%3E%2F*%20%E5%89%B2%E3%82%8A%E8%BE%BC%E3%81%BF%E3%83%95%E3%83%A9%E3%82%B0%E3%82%92%E3%82%AF%E3%83%AA%E3%82%A2%E3%81%97%E3%81%BE%E3%81%99%E3%80%82*%2F%3C%2FSPAN%3E%3C%2FDIV%3E%3CDIV%3E%3CSPAN%3ETPM_ClearStatusFlags(%3C%2FSPAN%3E%20%3CSPAN%3EDEMO_TPM_BASEADDR%3C%2FSPAN%3E%20%3CSPAN%3E%E3%80%81%3C%2FSPAN%3E%20%3CSPAN%3ETPM_CHANNEL_FLAG%3C%2FSPAN%3E%20%3CSPAN%3E)%3B%3C%2FSPAN%3E%3C%2FDIV%3E%3CDIV%3E%3CSPAN%3E%26nbsp%3B%26nbsp%3B%20%7D%3C%2FSPAN%3E%3C%2FDIV%3E%3CDIV%3E%3CSPAN%3E%26nbsp%3B%20%26nbsp%3B%20%3C%2FSPAN%3E%3CSPAN%3ESDK_ISR_EXIT_BARRIER%3C%2FSPAN%3E%20%3CSPAN%3E%3B%3C%2FSPAN%3E%3C%2FDIV%3E%3CDIV%3E%3CSPAN%3E%7D%3C%2FSPAN%3E%3C%2FDIV%3E%3CBR%20%2F%3E%3CDIV%3E%3CSPAN%3E%2F*!%3C%2FSPAN%3E%3C%2FDIV%3E%3CDIV%3E%3CSPAN%3E*%3C%2FSPAN%3E%20%3CSPAN%3E%40brief%3C%2FSPAN%3E%3CSPAN%3E%E3%83%A1%E3%82%A4%E3%83%B3%E9%96%A2%E6%95%B0%3C%2FSPAN%3E%3C%2FDIV%3E%3CDIV%3E%3CSPAN%3E*%2F%3C%2FSPAN%3E%3C%2FDIV%3E%3CDIV%3E%3CSPAN%3Eint%3C%2FSPAN%3E%20%3CSPAN%3Emain(%3C%2FSPAN%3E%20%3CSPAN%3Evoid%3C%2FSPAN%3E%20%3CSPAN%3E)%3C%2FSPAN%3E%3C%2FDIV%3E%3CDIV%3E%3CSPAN%3E%7B%3C%2FSPAN%3E%3C%2FDIV%3E%3CDIV%3E%3CSPAN%3Etpm_config_t%20tpmInfo%3B%3C%2FSPAN%3E%3C%2FDIV%3E%3CBR%20%2F%3E%3CDIV%3E%3CSPAN%3E%2F*%20%E3%83%9C%E3%83%BC%E3%83%89%E3%83%94%E3%83%B3%E3%80%81%E3%82%AF%E3%83%AD%E3%83%83%E3%82%AF%E3%80%81%E3%83%87%E3%83%90%E3%83%83%E3%82%B0%E3%82%B3%E3%83%B3%E3%82%BD%E3%83%BC%E3%83%AB%E3%81%AE%E5%88%9D%E6%9C%9F%E5%8C%96%20*%2F%3C%2FSPAN%3E%3C%2FDIV%3E%3CDIV%3E%3CSPAN%3EBOARD_InitHardware()%3B%3C%2FSPAN%3E%3C%2FDIV%3E%3CBR%20%2F%3E%3CDIV%3E%3CSPAN%3E%E8%A8%AD%E5%AE%9A%EF%BC%88%EF%BC%89%3B%3C%2FSPAN%3E%3C%2FDIV%3E%3CBR%20%2F%3E%3CDIV%3E%3CSPAN%3E%2F*%20%E7%AB%AF%E6%9C%AB%E3%81%AB%E3%83%A1%E3%83%A2%E3%82%92%E5%8D%B0%E5%88%B7%E3%81%99%E3%82%8B%20*%2F%3C%2FSPAN%3E%3C%2FDIV%3E%3CDIV%3E%3CSPAN%3E%26nbsp%3B%20%26nbsp%3B%20%3C%2FSPAN%3E%3CSPAN%3EPRINTF%3C%2FSPAN%3E%20%3CSPAN%3E(%3C%2FSPAN%3E%20%3CSPAN%3E%22%5Cr%5CnTPM%E5%85%A5%E5%8A%9B%E3%82%AD%E3%83%A3%E3%83%97%E3%83%81%E3%83%A3%E3%81%AE%E4%BE%8B%5Cr%5Cn%22%3C%2FSPAN%3E%20%3CSPAN%3E)%3B%3C%2FSPAN%3E%3C%2FDIV%3E%3CDIV%3E%3CSPAN%3E%26nbsp%3B%20%26nbsp%3B%20%3C%2FSPAN%3E%3CSPAN%3EPRINTF%3C%2FSPAN%3E%20%3CSPAN%3E(%3C%2FSPAN%3E%20%3CSPAN%3E%22%5Cr%5Cn%E5%85%A5%E5%8A%9B%E4%BF%A1%E5%8F%B7%E3%81%8C%E5%8F%97%E4%BF%A1%E3%81%95%E3%82%8C%E3%82%8B%E3%81%A8%E3%80%81%E5%85%A5%E5%8A%9B%E3%82%AD%E3%83%A3%E3%83%97%E3%83%81%E3%83%A3%E5%80%A4%E3%81%8C%E5%87%BA%E5%8A%9B%E3%81%95%E3%82%8C%E3%81%BE%E3%81%99%5Cr%5Cn%22%3C%2FSPAN%3E%20%3CSPAN%3E)%3B%3C%2FSPAN%3E%3C%2FDIV%3E%3CBR%20%2F%3E%3CDIV%3E%3CSPAN%3ETPM_GetDefaultConfig(%26amp%3BtpmInfo)%3B%3C%2FSPAN%3E%3C%2FDIV%3E%3CDIV%3E%3CSPAN%3E%2F*%20TPM%E3%83%A2%E3%82%B8%E3%83%A5%E3%83%BC%E3%83%AB%E3%82%92%E5%88%9D%E6%9C%9F%E5%8C%96%E3%81%99%E3%82%8B%20*%2F%3C%2FSPAN%3E%3C%2FDIV%3E%3CDIV%3E%3CSPAN%3ETPM_Init(%3C%2FSPAN%3E%20%3CSPAN%3EDEMO_TPM_BASEADDR%3C%2FSPAN%3E%20%3CSPAN%3E%2C%20%26amp%3BtpmInfo)%3B%3C%2FSPAN%3E%3C%2FDIV%3E%3CBR%20%2F%3E%3CDIV%3E%3CSPAN%3E%2F*%20TPM%E3%83%81%E3%83%A3%E3%83%8D%E3%83%AB%E3%81%A7%E5%85%A5%E5%8A%9B%E3%82%AD%E3%83%A3%E3%83%97%E3%83%81%E3%83%A3%E3%82%92%E8%A8%AD%E5%AE%9A%E3%81%99%E3%82%8B%20*%2F%3C%2FSPAN%3E%3C%2FDIV%3E%3CDIV%3E%3CSPAN%3ETPM_SetupInputCapture(%3C%2FSPAN%3E%20%3CSPAN%3EDEMO_TPM_BASEADDR%3C%2FSPAN%3E%20%3CSPAN%3E%E3%80%81%3C%2FSPAN%3E%20%3CSPAN%3EBOARD_TPM_INPUT_CAPTURE_CHANNEL%3C%2FSPAN%3E%20%3CSPAN%3E%E3%80%81%3C%2FSPAN%3E%20%3CSPAN%3EkTPM_RiseAndFallEdge%3C%2FSPAN%3E%20%3CSPAN%3E)%3B%3C%2FSPAN%3E%3C%2FDIV%3E%3CBR%20%2F%3E%3CDIV%3E%3CSPAN%3E%2F*%20%E3%82%BF%E3%82%A4%E3%83%9E%E3%83%BC%E3%82%92%E3%83%95%E3%83%AA%E3%83%BC%E3%83%A9%E3%83%B3%E3%83%8B%E3%83%B3%E3%82%B0%E3%83%A2%E3%83%BC%E3%83%89%E3%81%AB%E8%A8%AD%E5%AE%9A%E3%81%99%E3%82%8B%20*%2F%3C%2FSPAN%3E%3C%2FDIV%3E%3CDIV%3E%3CSPAN%3ETPM_SetTimerPeriod(%3C%2FSPAN%3E%20%3CSPAN%3EDEMO_TPM_BASEADDR%3C%2FSPAN%3E%20%3CSPAN%3E%2C%3C%2FSPAN%3E%3C%2FDIV%3E%3CDIV%3E%3CSPAN%3ETPM_MAX_COUNTER_VALUE%3C%2FSPAN%3E%20%3CSPAN%3E(%3C%2FSPAN%3E%20%3CSPAN%3EDEMO_TPM_BASEADDR%3C%2FSPAN%3E%20%3CSPAN%3E))%3B%3C%2FSPAN%3E%3C%2FDIV%3E%3CBR%20%2F%3E%3CDIV%3E%3CSPAN%3E%2F*%202%E7%95%AA%E7%9B%AE%E3%81%AE%E3%82%A8%E3%83%83%E3%82%B8%E3%81%8C%E6%A4%9C%E5%87%BA%E3%81%95%E3%82%8C%E3%81%9F%E3%81%A8%E3%81%8D%E3%81%AB%E3%83%81%E3%83%A3%E3%83%8D%E3%83%AB%E5%89%B2%E3%82%8A%E8%BE%BC%E3%81%BF%E3%82%92%E6%9C%89%E5%8A%B9%E3%81%AB%E3%81%99%E3%82%8B%20*%2F%3C%2FSPAN%3E%3C%2FDIV%3E%3CDIV%3E%3CSPAN%3ETPM_EnableInterrupts(%3C%2FSPAN%3E%20%3CSPAN%3EDEMO_TPM_BASEADDR%3C%2FSPAN%3E%20%3CSPAN%3E%E3%80%81%3C%2FSPAN%3E%20%3CSPAN%3ETPM_CHANNEL_INTERRUPT_ENABLE%3C%2FSPAN%3E%20%3CSPAN%3E)%3B%3C%2FSPAN%3E%3C%2FDIV%3E%3CBR%20%2F%3E%3CDIV%3E%3CSPAN%3E%2F*%20NVIC%20%E3%81%A7%E6%9C%89%E5%8A%B9%E3%81%AB%E3%81%99%E3%82%8B%20*%2F%3C%2FSPAN%3E%3C%2FDIV%3E%3CDIV%3E%3CSPAN%3EEnableIRQ(%3C%2FSPAN%3E%20%3CSPAN%3ETPM_INTERRUPT_NUMBER%3C%2FSPAN%3E%20%3CSPAN%3E)%3B%3C%2FSPAN%3E%3C%2FDIV%3E%3CBR%20%2F%3E%3CDIV%3E%3CSPAN%3ETPM_StartTimer(%3C%2FSPAN%3E%20%3CSPAN%3EDEMO_TPM_BASEADDR%3C%2FSPAN%3E%20%3CSPAN%3E%2C%3C%2FSPAN%3E%20%3CSPAN%3EkTPM_SystemClock%3C%2FSPAN%3E%20%3CSPAN%3E)%3B%3C%2FSPAN%3E%3C%2FDIV%3E%3CDIV%3E%26nbsp%3B%3C%2FDIV%3E%3CDIV%3E%3CSPAN%3E%26nbsp%3B%20%26nbsp%3B%20%3C%2FSPAN%3E%3CSPAN%3E%E4%B8%80%E6%96%B9%3C%2FSPAN%3E%3CSPAN%3E%EF%BC%88%3C%2FSPAN%3E%20%3CSPAN%3E1%3C%2FSPAN%3E%20%3CSPAN%3E%EF%BC%89%3C%2FSPAN%3E%3C%2FDIV%3E%3CDIV%3E%3CSPAN%3E%26nbsp%3B%20%26nbsp%3B%20%7B%3C%2FSPAN%3E%3C%2FDIV%3E%3CDIV%3E%3CSPAN%3E%E9%80%81%E4%BF%A1%E3%83%88%E3%83%AA%E3%82%AC%E3%83%91%E3%83%AB%E3%82%B9()%3B%3C%2FSPAN%3E%3C%2FDIV%3E%3CDIV%3E%3CSPAN%3E%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%3C%2FSPAN%3E%3C%2FDIV%3E%3CDIV%3E%3CSPAN%3E%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%3C%2FSPAN%3E%3CSPAN%3E(tpmIsrFlag%20!%3D%3C%2FSPAN%3E%20%3CSPAN%3Etrue%3C%2FSPAN%3E%20%3CSPAN%3E)%3C%2FSPAN%3E%3CSPAN%3E%E3%81%AE%E5%A0%B4%E5%90%88%3C%2FSPAN%3E%3C%2FDIV%3E%3CDIV%3E%3CSPAN%3E%7B%3C%2FSPAN%3E%3C%2FDIV%3E%3CDIV%3E%3CSPAN%3E%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%20%7D%3C%2FSPAN%3E%3C%2FDIV%3E%3CDIV%3E%26nbsp%3B%3C%2FDIV%3E%3CDIV%3E%3CSPAN%3E%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%3C%2FSPAN%3E%3CSPAN%3Euint32_t%3C%2FSPAN%3E%3CSPAN%3E%E3%83%86%E3%82%A3%E3%83%83%E3%82%AF%20%3D%3C%2FSPAN%3E%20%3CSPAN%3E0%3C%2FSPAN%3E%20%3CSPAN%3E%3B%3C%2FSPAN%3E%3C%2FDIV%3E%3CDIV%3E%3CSPAN%3E%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%3C%2FSPAN%3E%3CSPAN%3E%E4%B8%8B%E9%99%8D%E6%99%82%E9%96%93%20%26gt%3B%3D%20%E4%B8%8A%E6%98%87%E6%99%82%E9%96%93%3C%2FSPAN%3E%3CSPAN%3E%E3%81%AE%E5%A0%B4%E5%90%88%3C%2FSPAN%3E%3C%2FDIV%3E%3CDIV%3E%3CSPAN%3Eticks%20%3D%20%E4%B8%8B%E9%99%8D%E6%99%82%E9%96%93%20-%20%E4%B8%8A%E6%98%87%E6%99%82%E9%96%93%3B%3C%2FSPAN%3E%3C%2FDIV%3E%3CDIV%3E%3CSPAN%3E%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%3C%2FSPAN%3E%3CSPAN%3E%E3%81%9D%E3%82%8C%E4%BB%A5%E5%A4%96%3C%2FSPAN%3E%3C%2FDIV%3E%3CDIV%3E%3CSPAN%3E%E3%83%86%E3%82%A3%E3%83%83%E3%82%AF%20%3D%20(%3C%2FSPAN%3E%20%3CSPAN%3ETPM_MAX_COUNTER_VALUE%3C%2FSPAN%3E%20%3CSPAN%3E(%3C%2FSPAN%3E%20%3CSPAN%3EDEMO_TPM_BASEADDR%3C%2FSPAN%3E%20%3CSPAN%3E)%20-%20%E4%B8%8A%E6%98%87%E6%99%82%E9%96%93)%20%2B%20%E4%B8%8B%E9%99%8D%E6%99%82%E9%96%93%3B%3C%2FSPAN%3E%3C%2FDIV%3E%3CDIV%3E%3CSPAN%3E%26nbsp%3B%20%26nbsp%3B%3C%2FSPAN%3E%3C%2FDIV%3E%3CDIV%3E%3CSPAN%3E%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%3C%2FSPAN%3E%3CSPAN%3Efloat%3C%2FSPAN%3E%20%3CSPAN%3EPulseUs%20%3D%20(%E3%83%86%E3%82%A3%E3%83%83%E3%82%AF%20*%3C%2FSPAN%3E%20%3CSPAN%3E1000000%3C%2FSPAN%3E%20%3CSPAN%3E)%20%2F%3C%2FSPAN%3E%20%3CSPAN%3ETPM_SOURCE_CLOCK%3C%2FSPAN%3E%20%3CSPAN%3E%3B%3C%2FSPAN%3E%3C%2FDIV%3E%3CDIV%3E%3CSPAN%3E%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%3C%2FSPAN%3E%3CSPAN%3EPRINTF%3C%2FSPAN%3E%20%3CSPAN%3E(%3C%2FSPAN%3E%20%3CSPAN%3E%22%E4%B8%8A%E6%98%87%E6%99%82%E9%96%93%3A%20%25u%5Cr%5Cn%22%3C%2FSPAN%3E%20%3CSPAN%3E%2C%E4%B8%8A%E6%98%87%E6%99%82%E9%96%93)%3B%3C%2FSPAN%3E%3C%2FDIV%3E%3CDIV%3E%3CSPAN%3E%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%3C%2FSPAN%3E%3CSPAN%3EPRINTF%3C%2FSPAN%3E%20%3CSPAN%3E(%3C%2FSPAN%3E%20%3CSPAN%3E%22%E8%90%BD%E4%B8%8B%E6%99%82%E9%96%93%3A%20%25u%5Cr%5Cn%22%3C%2FSPAN%3E%20%3CSPAN%3E%2CfallingTime)%3B%3C%2FSPAN%3E%3C%2FDIV%3E%3CDIV%3E%3CSPAN%3E%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%3C%2FSPAN%3E%3CSPAN%3EPRINTF%3C%2FSPAN%3E%20%3CSPAN%3E(%3C%2FSPAN%3E%20%3CSPAN%3E%22%E3%83%9E%E3%82%A4%E3%82%AF%E3%83%AD%E7%A7%92%E3%81%AF%20%3A%20%25.2f%5Cr%5Cn%22%3C%2FSPAN%3E%20%3CSPAN%3E%2CPulseUs)%3B%3C%2FSPAN%3E%3C%2FDIV%3E%3CBR%20%2F%3E%3CDIV%3E%3CSPAN%3ESDK_DelayAtLeastUs(%3C%2FSPAN%3E%20%3CSPAN%3E60000%3C%2FSPAN%3E%20%3CSPAN%3E%2CSystemCoreClock)%3B%3C%2FSPAN%3E%3C%2FDIV%3E%3CDIV%3E%3CSPAN%3E%26nbsp%3B%26nbsp%3B%20%7D%3C%2FSPAN%3E%3C%2FDIV%3E%3CDIV%3E%3CSPAN%3E%7D%3C%2FSPAN%3E%3C%2FDIV%3E%3CDIV%3E%26nbsp%3B%3C%2FDIV%3E%3CDIV%3E%3CSPAN%3E%E3%82%AA%E3%83%96%E3%82%B8%E3%82%A7%E3%82%AF%E3%83%88%E3%81%AE%E8%B7%9D%E9%9B%A2%E3%82%92%E3%83%81%E3%82%A7%E3%83%83%E3%82%AF%E3%81%99%E3%82%8B%E3%81%93%E3%81%AE%E3%82%B3%E3%83%BC%E3%83%89%E3%81%AB%E3%81%AF%E3%81%84%E3%81%8F%E3%81%A4%E3%81%8B%E5%95%8F%E9%A1%8C%E3%81%8C%E3%81%82%E3%82%8A%E3%81%BE%E3%81%99%E3%81%8B%3F%3C%2FSPAN%3E%3C%2FDIV%3E%3CDIV%3E%3CSPAN%3E%E3%81%93%E3%81%93%E3%81%A7%20SDK_DelayAtLeastUs(10%2CSystemCoreClock)%3B%20%E3%81%93%E3%81%AE%20API%20%E3%81%AF%E3%80%81%E3%83%94%E3%83%B3%E3%81%8C%E6%B8%AC%E5%AE%9A%E3%82%92%E9%96%8B%E5%A7%8B%E3%81%99%E3%82%8B%E3%81%9F%E3%82%81%E3%81%AE%E3%83%88%E3%83%AA%E3%82%AC%E3%83%BC%E3%81%A8%E3%81%97%E3%81%A6%2010%20us%20%E3%82%92%E4%B8%8E%E3%81%88%E3%81%A6%E3%81%84%E3%81%AA%E3%81%84%E3%81%AE%E3%81%A7%E3%81%97%E3%82%87%E3%81%86%E3%81%8B%3F%3C%2FSPAN%3E%3C%2FDIV%3E%3CDIV%3E%26nbsp%3B%3C%2FDIV%3E%3CDIV%3E%3CSPAN%3E%3CA%20href%3D%22https%3A%2F%2Fcommunity.nxp.com%2Ft5%2Fc-pwmxy87654%2Fi.MX93EVK%2Fpd-p%2Fi.MX93EVK%22%20class%3D%22lia-product-mention%22%20data-product%3D%222927-1%22%20target%3D%22_blank%22%3Ei.MX93EVK%3C%2FA%3E%3C%2FSPAN%3E%3C%2FDIV%3E%3C%2FDIV%3E%3C%2FLINGO-BODY%3E%3CLINGO-LABS%20id%3D%22lingo-labs-2135797%22%20slang%3D%22en-US%22%20mode%3D%22CREATE%22%3E%3CLINGO-LABEL%3E%E3%82%AF%E3%83%AD%E3%83%83%E3%82%AF%7C%E3%82%BF%E3%82%A4%E3%83%9E%E3%83%BC%3C%2FLINGO-LABEL%3E%3C%2FLINGO-LABS%3E%3CLINGO-SUB%20id%3D%22lingo-sub-2136596%22%20slang%3D%22en-US%22%20mode%3D%22CREATE%22%20translate%3D%22no%22%3ERe%3A%20Is%20This%20code%20correct%20for%20interfacing%20ultra-sonic%20sensor%20into%20i.mx93%20(cortex-m33)%20%3F%3C%2FLINGO-SUB%3E%3CLINGO-BODY%20id%3D%22lingo-body-2136596%22%20slang%3D%22en-US%22%20mode%3D%22CREATE%22%3E%3CDIV%3E%3CDIV%3E%3CSPAN%3E%2F*%3C%2FSPAN%3E%3C%2FDIV%3E%3CDIV%3E%3CSPAN%3E*%20%E8%91%97%E4%BD%9C%E6%A8%A9%20(c)%202015%E3%80%81Freescale%20Semiconductor%2C%20Inc.%3C%2FSPAN%3E%3C%2FDIV%3E%3CDIV%3E%3CSPAN%3E*%20%E8%91%97%E4%BD%9C%E6%A8%A9%202016-2021%20NXP%3C%2FSPAN%3E%3C%2FDIV%3E%3CDIV%3E%3CSPAN%3E*%20%E7%84%A1%E6%96%AD%E8%BB%A2%E8%BC%89%E3%82%92%E7%A6%81%E3%81%98%E3%81%BE%E3%81%99%E3%80%82%3C%2FSPAN%3E%3C%2FDIV%3E%3CDIV%3E%3CSPAN%3E*%3C%2FSPAN%3E%3C%2FDIV%3E%3CDIV%3E%3CSPAN%3E*%20SPDX%E3%83%A9%E3%82%A4%E3%82%BB%E3%83%B3%E3%82%B9%E8%AD%98%E5%88%A5%E5%AD%90%3A%20BSD-3%E6%9D%A1%E9%A0%85%3C%2FSPAN%3E%3C%2FDIV%3E%3CDIV%3E%3CSPAN%3E*%2F%3C%2FSPAN%3E%3C%2FDIV%3E%3CBR%20%2F%3E%3CDIV%3E%3CSPAN%3E%23include%3C%2FSPAN%3E%20%3CSPAN%3E%22fsl_debug_console.h%22%3C%2FSPAN%3E%3C%2FDIV%3E%3CDIV%3E%3CSPAN%3E%23include%3C%2FSPAN%3E%20%3CSPAN%3E%22board.h%22%3C%2FSPAN%3E%3C%2FDIV%3E%3CDIV%3E%3CSPAN%3E%23include%3C%2FSPAN%3E%20%3CSPAN%3E%22app.h%22%3C%2FSPAN%3E%3C%2FDIV%3E%3CDIV%3E%3CSPAN%3E%23include%3C%2FSPAN%3E%20%3CSPAN%3E%22fsl_tpm.h%22%3C%2FSPAN%3E%3C%2FDIV%3E%3CDIV%3E%3CSPAN%3E%23include%3C%2FSPAN%3E%20%3CSPAN%3E%22fsl_rgpio.h%22%3C%2FSPAN%3E%3C%2FDIV%3E%3CBR%20%2F%3E%3CDIV%3E%3CSPAN%3E%2F****************************************************************************************%3C%2FSPAN%3E%3C%2FDIV%3E%3CDIV%3E%3CSPAN%3E*%20%E5%AE%9A%E7%BE%A9%3C%2FSPAN%3E%3C%2FDIV%3E%3CDIV%3E%3CSPAN%3E**********************************************************************************%2F%3C%2FSPAN%3E%3C%2FDIV%3E%3CBR%20%2F%3E%3CDIV%3E%3CSPAN%3E%2F****************************************************************************************%3C%2FSPAN%3E%3C%2FDIV%3E%3CDIV%3E%3CSPAN%3E*%20%E3%83%97%E3%83%AD%E3%83%88%E3%82%BF%E3%82%A4%E3%83%97%3C%2FSPAN%3E%3C%2FDIV%3E%3CDIV%3E%3CSPAN%3E**********************************************************************************%2F%3C%2FSPAN%3E%3C%2FDIV%3E%3CBR%20%2F%3E%3CDIV%3E%3CSPAN%3E%2F****************************************************************************************%3C%2FSPAN%3E%3C%2FDIV%3E%3CDIV%3E%3CSPAN%3E*%20%E5%A4%89%E6%95%B0%3C%2FSPAN%3E%3C%2FDIV%3E%3CDIV%3E%3CSPAN%3E**********************************************************************************%2F%3C%2FSPAN%3E%3C%2FDIV%3E%3CDIV%3E%3CSPAN%3E%E6%8F%AE%E7%99%BA%E6%80%A7%3C%2FSPAN%3E%3CSPAN%3E%E3%83%96%E3%83%BC%E3%83%AB%3C%2FSPAN%3E%3CSPAN%3EtpmIsrFlag%20%3D%3C%2FSPAN%3E%20%3CSPAN%3Efalse%3C%2FSPAN%3E%20%3CSPAN%3E%3B%3C%2FSPAN%3E%3C%2FDIV%3E%3CDIV%3E%3CSPAN%3E%E6%8F%AE%E7%99%BA%E6%80%A7%3C%2FSPAN%3E%3CSPAN%3Euint32_t%3C%2FSPAN%3E%3CSPAN%3E%E7%AB%8B%E3%81%A1%E4%B8%8A%E3%81%8C%E3%82%8A%E6%99%82%E9%96%93%20%3D%3C%2FSPAN%3E%20%3CSPAN%3E0%3C%2FSPAN%3E%20%3CSPAN%3E%3B%3C%2FSPAN%3E%3C%2FDIV%3E%3CDIV%3E%3CSPAN%3E%E6%8F%AE%E7%99%BA%E6%80%A7%3C%2FSPAN%3E%3CSPAN%3Euint32_t%3C%2FSPAN%3E%3CSPAN%3E%E8%90%BD%E4%B8%8B%E6%99%82%E9%96%93%20%3D%3C%2FSPAN%3E%20%3CSPAN%3E0%3C%2FSPAN%3E%20%3CSPAN%3E%3B%3C%2FSPAN%3E%3C%2FDIV%3E%3CDIV%3E%3CSPAN%3E%E6%8F%AE%E7%99%BA%E6%80%A7%3C%2FSPAN%3E%3CSPAN%3E%E3%83%96%E3%83%BC%E3%83%AB%3C%2FSPAN%3E%3CSPAN%3EgotRisingEdge%20%3D%3C%2FSPAN%3E%20%3CSPAN%3Efalse%3C%2FSPAN%3E%20%3CSPAN%3E%3B%3C%2FSPAN%3E%3C%2FDIV%3E%3CBR%20%2F%3E%3CDIV%3E%3CSPAN%3E%2F****************************************************************************************%3C%2FSPAN%3E%3C%2FDIV%3E%3CDIV%3E%3CSPAN%3E*%20%E3%82%B3%E3%83%BC%E3%83%89%3C%2FSPAN%3E%3C%2FDIV%3E%3CDIV%3E%3CSPAN%3E**********************************************************************************%2F%3C%2FSPAN%3E%3C%2FDIV%3E%3CDIV%3E%3CSPAN%3Evoid%3C%2FSPAN%3E%3CSPAN%3E%E3%82%BB%E3%83%83%E3%83%88%E3%82%A2%E3%83%83%E3%83%97(%3C%2FSPAN%3E%20%3CSPAN%3Evoid%3C%2FSPAN%3E%20%3CSPAN%3E)%3C%2FSPAN%3E%3C%2FDIV%3E%3CDIV%3E%3CSPAN%3E%7B%3C%2FSPAN%3E%3C%2FDIV%3E%3CDIV%3E%3CSPAN%3Ergpio_pin_config_t%20out_config%20%3D%7B%3C%2FSPAN%3E%3C%2FDIV%3E%3CDIV%3E%3CSPAN%3E%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%3C%2FSPAN%3E%3CSPAN%3EkRGPIO_%E3%83%87%E3%82%B8%E3%82%BF%E3%83%AB%E5%87%BA%E5%8A%9B%3C%2FSPAN%3E%3CSPAN%3E%E3%80%81%3C%2FSPAN%3E%3C%2FDIV%3E%3CDIV%3E%3CSPAN%3E%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%3C%2FSPAN%3E%3CSPAN%3E0%3C%2FSPAN%3E%20%3CSPAN%3E%2C%3C%2FSPAN%3E%3C%2FDIV%3E%3CDIV%3E%3CSPAN%3E%7D%3B%3C%2FSPAN%3E%3C%2FDIV%3E%3CDIV%3E%3CSPAN%3E%26nbsp%3B%20%26nbsp%3B%20%3C%2FSPAN%3E%3C%2FDIV%3E%3CDIV%3E%3CSPAN%3E%2F*%20%E3%83%88%E3%83%AA%E3%82%AC%E3%83%BC%E3%83%94%E3%83%B3%20*%2F%3C%2FSPAN%3E%3C%2FDIV%3E%3CDIV%3E%3CSPAN%3ERGPIO_PinInit(%3C%2FSPAN%3E%20%3CSPAN%3EBOARD_RGPIO%3C%2FSPAN%3E%20%3CSPAN%3E%E3%80%81%3C%2FSPAN%3E%20%3CSPAN%3ETRIG_PIN%3C%2FSPAN%3E%20%3CSPAN%3E%E3%80%81%20%26amp%3Bout_config)%3B%3C%2FSPAN%3E%3C%2FDIV%3E%3CDIV%3E%3CSPAN%3ERGPIO_PinWrite(%3C%2FSPAN%3E%20%3CSPAN%3EBOARD_RGPIO%3C%2FSPAN%3E%20%3CSPAN%3E%2C%3C%2FSPAN%3E%20%3CSPAN%3ETRIG_PIN%3C%2FSPAN%3E%20%3CSPAN%3E%2C%3C%2FSPAN%3E%20%3CSPAN%3E0%3C%2FSPAN%3E%20%3CSPAN%3E)%3B%3C%2FSPAN%3E%3C%2FDIV%3E%3CDIV%3E%3CSPAN%3E%7D%3C%2FSPAN%3E%3C%2FDIV%3E%3CBR%20%2F%3E%3CDIV%3E%3CSPAN%3Evoid%3C%2FSPAN%3E%20%3CSPAN%3ESendTrigPulse(%3C%2FSPAN%3E%20%3CSPAN%3Evoid%3C%2FSPAN%3E%20%3CSPAN%3E)%3C%2FSPAN%3E%3C%2FDIV%3E%3CDIV%3E%3CSPAN%3E%7B%3C%2FSPAN%3E%3C%2FDIV%3E%3CDIV%3E%3CSPAN%3ERGPIO_PinWrite(%3C%2FSPAN%3E%20%3CSPAN%3EBOARD_RGPIO%3C%2FSPAN%3E%20%3CSPAN%3E%E3%80%81%3C%2FSPAN%3E%20%3CSPAN%3ETRIG_PIN%3C%2FSPAN%3E%20%3CSPAN%3E%E3%80%81%3C%2FSPAN%3E%20%3CSPAN%3E1%3C%2FSPAN%3E%20%3CSPAN%3E)%3B%3C%2FSPAN%3E%3C%2FDIV%3E%3CDIV%3E%3CSPAN%3ESDK_DelayAtLeastUs(%3C%2FSPAN%3E%20%3CSPAN%3E10%3C%2FSPAN%3E%20%3CSPAN%3E%2C%20SystemCoreClock)%3B%3C%2FSPAN%3E%3C%2FDIV%3E%3CDIV%3E%3CSPAN%3ERGPIO_PinWrite(%3C%2FSPAN%3E%20%3CSPAN%3EBOARD_RGPIO%3C%2FSPAN%3E%20%3CSPAN%3E%2C%3C%2FSPAN%3E%20%3CSPAN%3ETRIG_PIN%3C%2FSPAN%3E%20%3CSPAN%3E%2C%3C%2FSPAN%3E%20%3CSPAN%3E0%3C%2FSPAN%3E%20%3CSPAN%3E)%3B%3C%2FSPAN%3E%3C%2FDIV%3E%3CDIV%3E%3CSPAN%3E%7D%3C%2FSPAN%3E%3C%2FDIV%3E%3CBR%20%2F%3E%3CDIV%3E%3CSPAN%3Evoid%3C%2FSPAN%3E%20%3CSPAN%3ETPM_INPUT_CAPTURE_HANDLER%3C%2FSPAN%3E%20%3CSPAN%3E(%3C%2FSPAN%3E%20%3CSPAN%3Evoid%3C%2FSPAN%3E%20%3CSPAN%3E)%3C%2FSPAN%3E%3C%2FDIV%3E%3CDIV%3E%3CSPAN%3E%7B%3C%2FSPAN%3E%3C%2FDIV%3E%3CDIV%3E%3CSPAN%3E%26nbsp%3B%20%26nbsp%3B%20%3C%2FSPAN%3E%3CSPAN%3Euint32_t%3C%2FSPAN%3E%3CSPAN%3E%E3%82%B9%E3%83%86%E3%83%BC%E3%82%BF%E3%82%B9%20%3D%20TPM_GetStatusFlags(%3C%2FSPAN%3E%20%3CSPAN%3EDEMO_TPM_BASEADDR%3C%2FSPAN%3E%20%3CSPAN%3E)%3B%3C%2FSPAN%3E%3C%2FDIV%3E%3CDIV%3E%3CSPAN%3E%26nbsp%3B%20%26nbsp%3B%20%3C%2FSPAN%3E%3CSPAN%3Eif%3C%2FSPAN%3E%20%3CSPAN%3E(%E3%82%B9%E3%83%86%E3%83%BC%E3%82%BF%E3%82%B9%20%26amp%3B%3C%2FSPAN%3E%20%3CSPAN%3ETPM_CHANNEL_FLAG%3C%2FSPAN%3E%20%3CSPAN%3E)%3C%2FSPAN%3E%3C%2FDIV%3E%3CDIV%3E%3CSPAN%3E%26nbsp%3B%20%26nbsp%3B%20%7B%3C%2FSPAN%3E%3C%2FDIV%3E%3CDIV%3E%3CSPAN%3E%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%3C%2FSPAN%3E%3CSPAN%3Euint32_t%3C%2FSPAN%3E%3CSPAN%3E%E3%82%AD%E3%83%A3%E3%83%97%E3%83%81%E3%83%A3%E3%81%95%E3%82%8C%E3%81%9F%E5%80%A4%20%3D%20TPM_GetChannelValue(%3C%2FSPAN%3E%20%3CSPAN%3EDEMO_TPM_BASEADDR%3C%2FSPAN%3E%20%3CSPAN%3E%E3%80%81%3C%2FSPAN%3E%20%3CSPAN%3EBOARD_TPM_INPUT_CAPTURE_CHANNEL%3C%2FSPAN%3E%20%3CSPAN%3E)%3B%3C%2FSPAN%3E%3C%2FDIV%3E%3CDIV%3E%3CSPAN%3E%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%3C%2FSPAN%3E%3CSPAN%3E%2F%2F%20PRINTF(%22%E3%82%AD%E3%83%A3%E3%83%97%E3%83%81%E3%83%A3%E3%81%95%E3%82%8C%E3%81%9F%E5%80%A4%3A%20%25u%5Cr%5Cn%22%2CcapturedValue)%3B%3C%2FSPAN%3E%3C%2FDIV%3E%3CBR%20%2F%3E%3CDIV%3E%3CSPAN%3E%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%3C%2FSPAN%3E%3CSPAN%3Eif%3C%2FSPAN%3E%20%3CSPAN%3E(!gotRisingEdge)%3C%2FSPAN%3E%3C%2FDIV%3E%3CDIV%3E%3CSPAN%3E%7B%3C%2FSPAN%3E%3C%2FDIV%3E%3CDIV%3E%3CSPAN%3E%E7%AB%8B%E3%81%A1%E4%B8%8A%E3%81%8C%E3%82%8A%E6%99%82%E9%96%93%20%3D%20%E3%82%AD%E3%83%A3%E3%83%97%E3%83%81%E3%83%A3%E3%81%95%E3%82%8C%E3%81%9F%E5%80%A4%3B%3C%2FSPAN%3E%3C%2FDIV%3E%3CDIV%3E%3CSPAN%3EgotRisingEdge%20%3D%3C%2FSPAN%3E%20%3CSPAN%3Etrue%3C%2FSPAN%3E%20%3CSPAN%3E%3B%3C%2FSPAN%3E%3C%2FDIV%3E%3CBR%20%2F%3E%3CDIV%3E%3CSPAN%3E%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%3C%2FSPAN%3E%3CSPAN%3E%2F%2F%20TPM_SetupInputCapture(DEMO_TPM_BASEADDR%E3%80%81BOARD_TPM_INPUT_CAPTURE_CHANNEL%E3%80%81kTPM_FallingEdge)%3B%3C%2FSPAN%3E%3C%2FDIV%3E%3CBR%20%2F%3E%3CDIV%3E%3CSPAN%3E%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%20%7D%3C%2FSPAN%3E%3C%2FDIV%3E%3CDIV%3E%3CSPAN%3E%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%3C%2FSPAN%3E%3CSPAN%3E%E3%81%9D%E3%82%8C%E4%BB%A5%E5%A4%96%3C%2FSPAN%3E%3C%2FDIV%3E%3CDIV%3E%3CSPAN%3E%7B%3C%2FSPAN%3E%3C%2FDIV%3E%3CDIV%3E%3CSPAN%3E%E8%90%BD%E4%B8%8B%E6%99%82%E9%96%93%20%3D%20%E3%82%AD%E3%83%A3%E3%83%97%E3%83%81%E3%83%A3%E3%81%95%E3%82%8C%E3%81%9F%E5%80%A4%3B%3C%2FSPAN%3E%3C%2FDIV%3E%3CDIV%3E%3CSPAN%3EtpmIsrFlag%20%3D%3C%2FSPAN%3E%20%3CSPAN%3Etrue%3C%2FSPAN%3E%20%3CSPAN%3E%3B%3C%2FSPAN%3E%3C%2FDIV%3E%3CDIV%3E%3CSPAN%3EgotRisingEdge%20%3D%3C%2FSPAN%3E%20%3CSPAN%3Efalse%3C%2FSPAN%3E%20%3CSPAN%3E%3B%3C%2FSPAN%3E%3C%2FDIV%3E%3CBR%20%2F%3E%3CDIV%3E%3CSPAN%3E%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%3C%2FSPAN%3E%3CSPAN%3E%2F%2F%20TPM_SetupInputCapture(DEMO_TPM_BASEADDR%E3%80%81BOARD_TPM_INPUT_CAPTURE_CHANNEL%E3%80%81kTPM_RisingEdge)%3B%3C%2FSPAN%3E%3C%2FDIV%3E%3CDIV%3E%3CSPAN%3E%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%20%7D%3C%2FSPAN%3E%3C%2FDIV%3E%3CDIV%3E%3CSPAN%3E%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%3C%2FSPAN%3E%3C%2FDIV%3E%3CDIV%3E%3CSPAN%3E%2F*%20%E5%89%B2%E3%82%8A%E8%BE%BC%E3%81%BF%E3%83%95%E3%83%A9%E3%82%B0%E3%82%92%E3%82%AF%E3%83%AA%E3%82%A2%E3%81%97%E3%81%BE%E3%81%99%E3%80%82*%2F%3C%2FSPAN%3E%3C%2FDIV%3E%3CDIV%3E%3CSPAN%3ETPM_ClearStatusFlags(%3C%2FSPAN%3E%20%3CSPAN%3EDEMO_TPM_BASEADDR%3C%2FSPAN%3E%20%3CSPAN%3E%E3%80%81%3C%2FSPAN%3E%20%3CSPAN%3ETPM_CHANNEL_FLAG%3C%2FSPAN%3E%20%3CSPAN%3E)%3B%3C%2FSPAN%3E%3C%2FDIV%3E%3CDIV%3E%3CSPAN%3E%26nbsp%3B%26nbsp%3B%20%7D%3C%2FSPAN%3E%3C%2FDIV%3E%3CDIV%3E%3CSPAN%3E%26nbsp%3B%20%26nbsp%3B%20%3C%2FSPAN%3E%3CSPAN%3ESDK_ISR_EXIT_BARRIER%3C%2FSPAN%3E%20%3CSPAN%3E%3B%3C%2FSPAN%3E%3C%2FDIV%3E%3CDIV%3E%3CSPAN%3E%7D%3C%2FSPAN%3E%3C%2FDIV%3E%3CBR%20%2F%3E%3CDIV%3E%3CSPAN%3E%2F*!%3C%2FSPAN%3E%3C%2FDIV%3E%3CDIV%3E%3CSPAN%3E*%3C%2FSPAN%3E%20%3CSPAN%3E%40brief%3C%2FSPAN%3E%3CSPAN%3E%E3%83%A1%E3%82%A4%E3%83%B3%E9%96%A2%E6%95%B0%3C%2FSPAN%3E%3C%2FDIV%3E%3CDIV%3E%3CSPAN%3E*%2F%3C%2FSPAN%3E%3C%2FDIV%3E%3CDIV%3E%3CSPAN%3Eint%3C%2FSPAN%3E%20%3CSPAN%3Emain(%3C%2FSPAN%3E%20%3CSPAN%3Evoid%3C%2FSPAN%3E%20%3CSPAN%3E)%3C%2FSPAN%3E%3C%2FDIV%3E%3CDIV%3E%3CSPAN%3E%7B%3C%2FSPAN%3E%3C%2FDIV%3E%3CDIV%3E%3CSPAN%3Etpm_config_t%20tpmInfo%3B%3C%2FSPAN%3E%3C%2FDIV%3E%3CBR%20%2F%3E%3CDIV%3E%3CSPAN%3E%2F*%20%E3%83%9C%E3%83%BC%E3%83%89%E3%83%94%E3%83%B3%E3%80%81%E3%82%AF%E3%83%AD%E3%83%83%E3%82%AF%E3%80%81%E3%83%87%E3%83%90%E3%83%83%E3%82%B0%E3%82%B3%E3%83%B3%E3%82%BD%E3%83%BC%E3%83%AB%E3%81%AE%E5%88%9D%E6%9C%9F%E5%8C%96%20*%2F%3C%2FSPAN%3E%3C%2FDIV%3E%3CDIV%3E%3CSPAN%3EBOARD_InitHardware()%3B%3C%2FSPAN%3E%3C%2FDIV%3E%3CBR%20%2F%3E%3CDIV%3E%3CSPAN%3E%E8%A8%AD%E5%AE%9A%EF%BC%88%EF%BC%89%3B%3C%2FSPAN%3E%3C%2FDIV%3E%3CBR%20%2F%3E%3CDIV%3E%3CSPAN%3E%2F*%20%E7%AB%AF%E6%9C%AB%E3%81%AB%E3%83%A1%E3%83%A2%E3%82%92%E5%8D%B0%E5%88%B7%E3%81%99%E3%82%8B%20*%2F%3C%2FSPAN%3E%3C%2FDIV%3E%3CDIV%3E%3CSPAN%3E%26nbsp%3B%20%26nbsp%3B%20%3C%2FSPAN%3E%3CSPAN%3EPRINTF%3C%2FSPAN%3E%20%3CSPAN%3E(%3C%2FSPAN%3E%20%3CSPAN%3E%22%5Cr%5CnTPM%E5%85%A5%E5%8A%9B%E3%82%AD%E3%83%A3%E3%83%97%E3%83%81%E3%83%A3%E3%81%AE%E4%BE%8B%5Cr%5Cn%22%3C%2FSPAN%3E%20%3CSPAN%3E)%3B%3C%2FSPAN%3E%3C%2FDIV%3E%3CDIV%3E%3CSPAN%3E%26nbsp%3B%20%26nbsp%3B%20%3C%2FSPAN%3E%3CSPAN%3EPRINTF%3C%2FSPAN%3E%20%3CSPAN%3E(%3C%2FSPAN%3E%20%3CSPAN%3E%22%5Cr%5Cn%E5%85%A5%E5%8A%9B%E4%BF%A1%E5%8F%B7%E3%81%8C%E5%8F%97%E4%BF%A1%E3%81%95%E3%82%8C%E3%82%8B%E3%81%A8%E3%80%81%E5%85%A5%E5%8A%9B%E3%82%AD%E3%83%A3%E3%83%97%E3%83%81%E3%83%A3%E5%80%A4%E3%81%8C%E5%87%BA%E5%8A%9B%E3%81%95%E3%82%8C%E3%81%BE%E3%81%99%5Cr%5Cn%22%3C%2FSPAN%3E%20%3CSPAN%3E)%3B%3C%2FSPAN%3E%3C%2FDIV%3E%3CBR%20%2F%3E%3CDIV%3E%3CSPAN%3ETPM_GetDefaultConfig(%26amp%3BtpmInfo)%3B%3C%2FSPAN%3E%3C%2FDIV%3E%3CDIV%3E%3CSPAN%3E%2F*%20TPM%E3%83%A2%E3%82%B8%E3%83%A5%E3%83%BC%E3%83%AB%E3%82%92%E5%88%9D%E6%9C%9F%E5%8C%96%E3%81%99%E3%82%8B%20*%2F%3C%2FSPAN%3E%3C%2FDIV%3E%3CDIV%3E%3CSPAN%3ETPM_Init(%3C%2FSPAN%3E%20%3CSPAN%3EDEMO_TPM_BASEADDR%3C%2FSPAN%3E%20%3CSPAN%3E%2C%20%26amp%3BtpmInfo)%3B%3C%2FSPAN%3E%3C%2FDIV%3E%3CBR%20%2F%3E%3CDIV%3E%3CSPAN%3E%2F*%20TPM%E3%83%81%E3%83%A3%E3%83%8D%E3%83%AB%E3%81%A7%E5%85%A5%E5%8A%9B%E3%82%AD%E3%83%A3%E3%83%97%E3%83%81%E3%83%A3%E3%82%92%E8%A8%AD%E5%AE%9A%E3%81%99%E3%82%8B%20*%2F%3C%2FSPAN%3E%3C%2FDIV%3E%3CDIV%3E%3CSPAN%3ETPM_SetupInputCapture(%3C%2FSPAN%3E%20%3CSPAN%3EDEMO_TPM_BASEADDR%3C%2FSPAN%3E%20%3CSPAN%3E%E3%80%81%3C%2FSPAN%3E%20%3CSPAN%3EBOARD_TPM_INPUT_CAPTURE_CHANNEL%3C%2FSPAN%3E%20%3CSPAN%3E%E3%80%81%3C%2FSPAN%3E%20%3CSPAN%3EkTPM_RiseAndFallEdge%3C%2FSPAN%3E%20%3CSPAN%3E)%3B%3C%2FSPAN%3E%3C%2FDIV%3E%3CBR%20%2F%3E%3CDIV%3E%3CSPAN%3E%2F*%20%E3%82%BF%E3%82%A4%E3%83%9E%E3%83%BC%E3%82%92%E3%83%95%E3%83%AA%E3%83%BC%E3%83%A9%E3%83%B3%E3%83%8B%E3%83%B3%E3%82%B0%E3%83%A2%E3%83%BC%E3%83%89%E3%81%AB%E8%A8%AD%E5%AE%9A%E3%81%99%E3%82%8B%20*%2F%3C%2FSPAN%3E%3C%2FDIV%3E%3CDIV%3E%3CSPAN%3ETPM_SetTimerPeriod(%3C%2FSPAN%3E%20%3CSPAN%3EDEMO_TPM_BASEADDR%3C%2FSPAN%3E%20%3CSPAN%3E%2C%3C%2FSPAN%3E%20%3CSPAN%3ETPM_MAX_COUNTER_VALUE%3C%2FSPAN%3E%20%3CSPAN%3E(%3C%2FSPAN%3E%20%3CSPAN%3EDEMO_TPM_BASEADDR%3C%2FSPAN%3E%20%3CSPAN%3E))%3B%3C%2FSPAN%3E%3C%2FDIV%3E%3CBR%20%2F%3E%3CDIV%3E%3CSPAN%3E%2F*%202%E7%95%AA%E7%9B%AE%E3%81%AE%E3%82%A8%E3%83%83%E3%82%B8%E3%81%8C%E6%A4%9C%E5%87%BA%E3%81%95%E3%82%8C%E3%81%9F%E3%81%A8%E3%81%8D%E3%81%AB%E3%83%81%E3%83%A3%E3%83%8D%E3%83%AB%E5%89%B2%E3%82%8A%E8%BE%BC%E3%81%BF%E3%82%92%E6%9C%89%E5%8A%B9%E3%81%AB%E3%81%99%E3%82%8B%20*%2F%3C%2FSPAN%3E%3C%2FDIV%3E%3CDIV%3E%3CSPAN%3ETPM_EnableInterrupts(%3C%2FSPAN%3E%20%3CSPAN%3EDEMO_TPM_BASEADDR%3C%2FSPAN%3E%20%3CSPAN%3E%E3%80%81%3C%2FSPAN%3E%20%3CSPAN%3ETPM_CHANNEL_INTERRUPT_ENABLE%3C%2FSPAN%3E%20%3CSPAN%3E)%3B%3C%2FSPAN%3E%3C%2FDIV%3E%3CBR%20%2F%3E%3CDIV%3E%3CSPAN%3E%2F*%20NVIC%20%E3%81%A7%E6%9C%89%E5%8A%B9%E3%81%AB%E3%81%99%E3%82%8B%20*%2F%3C%2FSPAN%3E%3C%2FDIV%3E%3CDIV%3E%3CSPAN%3EEnableIRQ(%3C%2FSPAN%3E%20%3CSPAN%3ETPM_INTERRUPT_NUMBER%3C%2FSPAN%3E%20%3CSPAN%3E)%3B%3C%2FSPAN%3E%3C%2FDIV%3E%3CBR%20%2F%3E%3CDIV%3E%3CSPAN%3ETPM_StartTimer(%3C%2FSPAN%3E%20%3CSPAN%3EDEMO_TPM_BASEADDR%3C%2FSPAN%3E%20%3CSPAN%3E%2C%3C%2FSPAN%3E%20%3CSPAN%3EkTPM_SystemClock%3C%2FSPAN%3E%20%3CSPAN%3E)%3B%3C%2FSPAN%3E%3C%2FDIV%3E%3CBR%20%2F%3E%3CDIV%3E%3CSPAN%3E%26nbsp%3B%20%26nbsp%3B%3C%2FSPAN%3E%3CSPAN%3E%26nbsp%3B%20%26nbsp%3B%26nbsp%3B%3C%2FSPAN%3E%3CSPAN%3E%E4%B8%80%E6%96%B9%3C%2FSPAN%3E%3CSPAN%3E%EF%BC%88%3C%2FSPAN%3E%20%3CSPAN%3E1%3C%2FSPAN%3E%20%3CSPAN%3E%EF%BC%89%3C%2FSPAN%3E%3C%2FDIV%3E%3CDIV%3E%3CSPAN%3E%26nbsp%3B%20%26nbsp%3B%20%7B%3C%2FSPAN%3E%3C%2FDIV%3E%3CDIV%3E%3CSPAN%3E%E9%80%81%E4%BF%A1%E3%83%88%E3%83%AA%E3%82%AC%E3%83%91%E3%83%AB%E3%82%B9()%3B%3C%2FSPAN%3E%3C%2FDIV%3E%3CDIV%3E%3CSPAN%3E%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%3C%2FSPAN%3E%3C%2FDIV%3E%3CDIV%3E%3CSPAN%3E%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%3C%2FSPAN%3E%3CSPAN%3E(tpmIsrFlag%20!%3D%3C%2FSPAN%3E%20%3CSPAN%3Etrue%3C%2FSPAN%3E%20%3CSPAN%3E)%3C%2FSPAN%3E%3CSPAN%3E%E3%81%AE%E5%A0%B4%E5%90%88%3C%2FSPAN%3E%3C%2FDIV%3E%3CDIV%3E%3CSPAN%3E%7B%3C%2FSPAN%3E%3C%2FDIV%3E%3CDIV%3E%3CSPAN%3E%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%20%7D%3C%2FSPAN%3E%3C%2FDIV%3E%3CBR%20%2F%3E%3CDIV%3E%3CSPAN%3E%26nbsp%3B%20%26nbsp%3B%20%3C%2FSPAN%3E%3CSPAN%3E%2F%2F%20PRINTF(%22%5Cr%5Cn%E3%82%AD%E3%83%A3%E3%83%97%E3%83%81%E3%83%A3%E5%80%A4%20C(n)V%3D%25x%5Cr%5Cn%22%2C%20TPM_GetChannelValue(DEMO_TPM_BASEADDR%2C%20BOARD_TPM_INPUT_CAPTURE_CHANNEL))%3B%3C%2FSPAN%3E%3C%2FDIV%3E%3CDIV%3E%3CSPAN%3E%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%3C%2FSPAN%3E%3CSPAN%3Euint32_t%3C%2FSPAN%3E%3CSPAN%3E%E3%83%86%E3%82%A3%E3%83%83%E3%82%AF%20%3D%3C%2FSPAN%3E%20%3CSPAN%3E0%3C%2FSPAN%3E%20%3CSPAN%3E%3B%3C%2FSPAN%3E%3C%2FDIV%3E%3CDIV%3E%3CSPAN%3E%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%3C%2FSPAN%3E%3CSPAN%3E%E4%B8%8B%E9%99%8D%E6%99%82%E9%96%93%20%26gt%3B%3D%20%E4%B8%8A%E6%98%87%E6%99%82%E9%96%93%3C%2FSPAN%3E%3CSPAN%3E%E3%81%AE%E5%A0%B4%E5%90%88%3C%2FSPAN%3E%3C%2FDIV%3E%3CDIV%3E%3CSPAN%3Eticks%20%3D%20%E4%B8%8B%E9%99%8D%E6%99%82%E9%96%93%20-%20%E4%B8%8A%E6%98%87%E6%99%82%E9%96%93%3B%3C%2FSPAN%3E%3C%2FDIV%3E%3CDIV%3E%3CSPAN%3E%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%3C%2FSPAN%3E%3CSPAN%3E%E3%81%9D%E3%82%8C%E4%BB%A5%E5%A4%96%3C%2FSPAN%3E%3C%2FDIV%3E%3CDIV%3E%3CSPAN%3E%E3%83%86%E3%82%A3%E3%83%83%E3%82%AF%20%3D%20(%3C%2FSPAN%3E%20%3CSPAN%3ETPM_MAX_COUNTER_VALUE%3C%2FSPAN%3E%20%3CSPAN%3E(%3C%2FSPAN%3E%20%3CSPAN%3EDEMO_TPM_BASEADDR%3C%2FSPAN%3E%20%3CSPAN%3E)%20-%20%E4%B8%8A%E6%98%87%E6%99%82%E9%96%93)%20%2B%20%E4%B8%8B%E9%99%8D%E6%99%82%E9%96%93%3B%3C%2FSPAN%3E%3C%2FDIV%3E%3CDIV%3E%3CSPAN%3E%26nbsp%3B%20%26nbsp%3B%3C%2FSPAN%3E%3C%2FDIV%3E%3CDIV%3E%3CSPAN%3E%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%3C%2FSPAN%3E%3CSPAN%3Euint32_t%3C%2FSPAN%3E%20%3CSPAN%3Etpm_clock%20%3D%20CLOCK_GetIpFreq(%3C%2FSPAN%3E%20%3CSPAN%3ELPTPM_CLOCK_ROOT%3C%2FSPAN%3E%20%3CSPAN%3E)%3B%3C%2FSPAN%3E%3C%2FDIV%3E%3CDIV%3E%3CSPAN%3E%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%3C%2FSPAN%3E%3CSPAN%3Efloat%3C%2FSPAN%3E%20%3CSPAN%3EPulseUs%20%3D%20(ticks%20*%3C%2FSPAN%3E%20%3CSPAN%3E1000000%3C%2FSPAN%3E%20%3CSPAN%3E)%20%2F%20tpm_clock%20%3B%3C%2FSPAN%3E%3C%2FDIV%3E%3CDIV%3E%3CSPAN%3E%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%3C%2FSPAN%3E%3CSPAN%3EPRINTF%3C%2FSPAN%3E%20%3CSPAN%3E(%3C%2FSPAN%3E%20%3CSPAN%3E%22%E4%B8%8A%E6%98%87%E6%99%82%E9%96%93%3A%20%25u%5Cr%5Cn%22%3C%2FSPAN%3E%20%3CSPAN%3E%2C%E4%B8%8A%E6%98%87%E6%99%82%E9%96%93)%3B%3C%2FSPAN%3E%3C%2FDIV%3E%3CDIV%3E%3CSPAN%3E%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%3C%2FSPAN%3E%3CSPAN%3EPRINTF%3C%2FSPAN%3E%20%3CSPAN%3E(%3C%2FSPAN%3E%20%3CSPAN%3E%22%E8%90%BD%E4%B8%8B%E6%99%82%E9%96%93%3A%20%25u%5Cr%5Cn%22%3C%2FSPAN%3E%20%3CSPAN%3E%2CfallingTime)%3B%3C%2FSPAN%3E%3C%2FDIV%3E%3CDIV%3E%3CSPAN%3E%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%3C%2FSPAN%3E%3CSPAN%3EPRINTF%3C%2FSPAN%3E%20%3CSPAN%3E(%3C%2FSPAN%3E%20%3CSPAN%3E%22%E3%83%9E%E3%82%A4%E3%82%AF%E3%83%AD%E7%A7%92%E3%81%AF%20%3A%20%25.2f%5Cr%5Cn%22%3C%2FSPAN%3E%20%3CSPAN%3E%2CPulseUs)%3B%3C%2FSPAN%3E%3C%2FDIV%3E%3CBR%20%2F%3E%3CDIV%3E%3CSPAN%3E%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%3C%2FSPAN%3E%3CSPAN%3Efloat%3C%2FSPAN%3E%3CSPAN%3E%E8%B7%9D%E9%9B%A2%20%3D%20PulseUs%20%2F%3C%2FSPAN%3E%20%3CSPAN%3E58%3C%2FSPAN%3E%20%3CSPAN%3E%3B%3C%2FSPAN%3E%3C%2FDIV%3E%3CDIV%3E%3CSPAN%3E%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%3C%2FSPAN%3E%3CSPAN%3EPRINTF%3C%2FSPAN%3E%20%3CSPAN%3E(%3C%2FSPAN%3E%20%3CSPAN%3E%22%E8%B7%9D%E9%9B%A2%3A%20%25.2f%5Cr%5Cn%22%3C%2FSPAN%3E%20%3CSPAN%3E%2C%E8%B7%9D%E9%9B%A2)%3B%3C%2FSPAN%3E%3C%2FDIV%3E%3CBR%20%2F%3E%3CDIV%3E%3CSPAN%3ESDK_DelayAtLeastUs(%3C%2FSPAN%3E%20%3CSPAN%3E60000%3C%2FSPAN%3E%20%3CSPAN%3E%2CSystemCoreClock)%3B%3C%2FSPAN%3E%3C%2FDIV%3E%3CDIV%3E%3CSPAN%3E%26nbsp%3B%26nbsp%3B%20%7D%3C%2FSPAN%3E%3C%2FDIV%3E%3CDIV%3E%3CSPAN%3E%7D%3C%2FSPAN%3E%3C%2FDIV%3E%3CDIV%3E%26nbsp%3B%3C%2FDIV%3E%3CDIV%3E%3CSPAN%3E%E3%82%AA%E3%82%B7%E3%83%AD%E3%82%B9%E3%82%B3%E3%83%BC%E3%83%97%E3%82%92%E4%BD%BF%E7%94%A8%E3%81%97%E3%81%A6%E7%A2%BA%E8%AA%8D%E3%81%97%E3%81%9F%E3%81%A8%E3%81%93%E3%82%8D%E3%80%81%E3%83%88%E3%83%AA%E3%82%AC%E3%83%BC%2010%20us%20%E3%81%AF%E6%AD%A3%E3%81%97%E3%81%84%E3%81%A7%E3%81%99%E3%80%82%E3%81%97%E3%81%8B%E3%81%97%E3%80%81%E5%95%8F%E9%A1%8C%E3%81%AF%E3%82%A8%E3%82%B3%E3%83%BC%E3%83%94%E3%83%B3%E3%81%A7%E3%81%99%E3%81%8B%3F%3C%2FSPAN%3E%3C%2FDIV%3E%3CDIV%3E%3CSPAN%3E%E6%AD%A3%E3%81%97%E3%81%84%E5%80%A4%E3%82%92%E8%AA%AD%E3%81%BF%E5%8F%96%E3%82%8C%E3%81%BE%E3%81%9B%E3%82%93%E3%81%8B%3F%3C%2FSPAN%3E%3C%2FDIV%3E%3C%2FDIV%3E%3C%2FLINGO-BODY%3E%3CLINGO-SUB%20id%3D%22lingo-sub-2136240%22%20slang%3D%22en-US%22%20mode%3D%22CREATE%22%20translate%3D%22no%22%3ERe%3A%20Is%20This%20code%20correct%20for%20interfacing%20ultra-sonic%20sensor%20into%20i.mx93%20(cortex-m33)%20%3F%3C%2FLINGO-SUB%3E%3CLINGO-BODY%20id%3D%22lingo-body-2136240%22%20slang%3D%22en-US%22%20mode%3D%22CREATE%22%3E%E3%81%99%E3%81%A7%E3%81%AB%E3%82%AA%E3%82%B7%E3%83%AD%E3%82%B9%E3%82%B3%E3%83%BC%E3%83%97%E3%82%92%E4%BD%BF%E7%94%A8%E3%81%97%E3%81%A6%E4%BF%A1%E5%8F%B7%E3%82%92%E6%A4%9C%E8%A8%BC%E3%81%97%E3%81%A6%E3%81%8A%E3%82%8A%E3%80%8110%20%C2%B5s%20%E3%81%AE%E3%83%91%E3%83%AB%E3%82%B9%E3%81%8C%E8%A1%A8%E7%A4%BA%E3%81%95%E3%82%8C%E3%81%A6%E3%81%84%E3%81%BE%E3%81%99%E3%80%82%3CBR%20%2F%3E%3CBR%20%2F%3E%E6%AC%A1%E3%81%AB%E3%80%81TRIG%20%E3%83%94%E3%83%B3%E3%82%92%20ECHO%20%E3%83%94%E3%83%B3%E3%81%AB%E7%9B%B4%E6%8E%A5%E3%83%AB%E3%83%BC%E3%83%97%E3%81%95%E3%81%9B%E3%81%A6%E3%83%86%E3%82%B9%E3%83%88%E3%81%97%E3%80%81%E3%82%B3%E3%83%BC%E3%83%89%E5%86%85%E3%81%A7%E3%83%91%E3%83%AB%E3%82%B9%E5%B9%85%E3%82%92%E6%B8%AC%E5%AE%9A%E3%81%97%E3%81%BE%E3%81%97%E3%81%9F%E3%80%82%E3%81%9F%E3%81%A0%E3%81%97%E3%80%81%E4%BA%88%E6%83%B3%E3%81%95%E3%82%8C%E3%81%9F%2010%20%C2%B5s%20%E3%81%A7%E3%81%AF%E3%81%AA%E3%81%8F%E3%80%81%E7%B4%84%2066%20%C2%B5s%20%E3%81%A7%E5%8D%B0%E5%88%B7%E3%81%95%E3%82%8C%E3%81%BE%E3%81%99%E3%80%82%3CBR%20%2F%3E%3CBR%20%2F%3ETRIG%20%E3%83%94%E3%83%B3%E3%81%A8%20ECHO%20%E3%83%94%E3%83%B3%E3%81%8C%E3%83%AB%E3%83%BC%E3%83%97%E5%86%85%E3%81%A7%E7%9B%B4%E6%8E%A5%E3%82%B3%E3%83%8D%E3%82%AF%E3%83%86%E3%83%83%E3%83%89%E3%81%95%E3%82%8C%E3%81%A6%E3%81%84%E3%82%8B%E5%A0%B4%E5%90%88%E3%81%AF%E3%80%81%E7%94%9F%E6%88%90%E3%81%95%E3%82%8C%E3%81%9F%E4%BF%A1%E5%8F%B7%E3%81%A8%E4%B8%80%E8%87%B4%E3%81%99%E3%82%8B%E3%82%88%E3%81%86%E3%81%AB%E6%AD%A3%E7%A2%BA%E3%81%AB%2010%20%C2%B5s%20%E3%81%8C%E6%B8%AC%E5%AE%9A%E3%81%95%E3%82%8C%E3%82%8B%E3%81%AF%E3%81%9A%E3%81%A7%E3%81%99%E3%80%82%E3%81%A9%E3%81%93%E3%81%A7%E7%9F%9B%E7%9B%BE%E3%81%8C%E7%94%9F%E3%81%98%E3%81%A6%E3%81%84%E3%82%8B%E3%81%AE%E3%81%8B%E3%82%92%E7%89%B9%E5%AE%9A%E3%81%A7%E3%81%8D%E3%81%BE%E3%81%9B%E3%82%93%E3%80%82%3CBR%20%2F%3E%3CBR%20%2F%3E%E3%81%93%E3%82%8C%E3%81%AF%E3%82%AF%E3%83%AD%E3%83%83%E3%82%AF%E6%A7%8B%E6%88%90%E3%81%AE%E5%95%8F%E9%A1%8C%E3%80%81%E3%81%BE%E3%81%9F%E3%81%AF%E3%82%AD%E3%83%A3%E3%83%97%E3%83%81%E3%83%A3%20%E3%83%AD%E3%82%B8%E3%83%83%E3%82%AF%E3%81%AE%E3%82%BF%E3%82%A4%E3%83%9F%E3%83%B3%E3%82%B0%E3%81%AE%E4%B8%8D%E6%AD%A3%E7%A2%BA%E3%81%95%E3%81%8C%E5%8E%9F%E5%9B%A0%E3%81%A7%E3%81%97%E3%82%87%E3%81%86%E3%81%8B%3F%3CBR%20%2F%3E%3CBR%20%2F%3E%E3%81%93%E3%81%AE%E5%95%8F%E9%A1%8C%E3%81%AE%E7%89%B9%E5%AE%9A%E3%81%A8%E8%A7%A3%E6%B1%BA%E3%81%AB%E3%81%94%E5%8D%94%E5%8A%9B%E3%81%84%E3%81%9F%E3%81%A0%E3%81%91%E3%82%8C%E3%81%B0%E5%B9%B8%E3%81%84%E3%81%A7%E3%81%99%E3%80%82%3CBR%20%2F%3E%3CBR%20%2F%3E%E3%82%88%E3%82%8D%E3%81%97%E3%81%8F%E3%81%8A%E9%A1%98%E3%81%84%E3%81%97%E3%81%BE%E3%81%99%EF%BC%81%3C%2FLINGO-BODY%3E%3CLINGO-SUB%20id%3D%22lingo-sub-2136235%22%20slang%3D%22en-US%22%20mode%3D%22CREATE%22%20translate%3D%22no%22%3ERe%3A%20Is%20This%20code%20correct%20for%20interfacing%20ultra-sonic%20sensor%20into%20i.mx93%20(cortex-m33)%20%3F%3C%2FLINGO-SUB%3E%3CLINGO-BODY%20id%3D%22lingo-body-2136235%22%20slang%3D%22en-US%22%20mode%3D%22CREATE%22%3E%E3%81%94%E8%BF%94%E4%BF%A1%E3%81%82%E3%82%8A%E3%81%8C%E3%81%A8%E3%81%86%E3%81%94%E3%81%96%E3%81%84%E3%81%BE%E3%81%99%EF%BC%81%3CBR%20%2F%3E%3C%2FLINGO-BODY%3E%3CLINGO-SUB%20id%3D%22lingo-sub-2135963%22%20slang%3D%22en-US%22%20mode%3D%22CREATE%22%20translate%3D%22no%22%3ERe%3A%20Is%20This%20code%20correct%20for%20interfacing%20ultra-sonic%20sensor%20into%20i.mx93%20(cortex-m33)%20%3F%3C%2FLINGO-SUB%3E%3CLINGO-BODY%20id%3D%22lingo-body-2135963%22%20slang%3D%22en-US%22%20mode%3D%22CREATE%22%3E%3CDIV%3E%0A%3CDIV%3E%0A%3CDIV%3E%0A%3CP%3E%E3%81%93%E3%82%93%E3%81%AB%E3%81%A1%E3%81%AF%E3%80%81%3C%2FP%3E%0A%3CP%3E%E3%82%B3%E3%83%BC%E3%83%89%E3%81%AE%E3%82%BB%E3%82%AF%E3%82%B7%E3%83%A7%E3%83%B3%E3%81%AF%E3%80%81TPM%20%E6%A7%8B%E6%88%90%E3%81%A8%E8%B6%85%E9%9F%B3%E6%B3%A2%E3%82%BB%E3%83%B3%E3%82%B5%E3%81%AE%20TRIG%20%E3%81%8A%E3%82%88%E3%81%B3%20ECHO%20%E4%BF%A1%E5%8F%B7%E3%81%AE%E7%94%9F%E6%88%90%2F%E8%AA%AD%E3%81%BF%E5%8F%96%E3%82%8A%E3%81%AB%E5%BF%9C%E3%81%98%E3%81%A6%E7%95%B0%E3%81%AA%E3%82%8A%E3%81%BE%E3%81%99%E3%80%82%3C%2FP%3E%0A%3CP%3E%E9%96%A2%E6%95%B0%E3%81%8C%2010%20us%20%E4%BF%A1%E5%8F%B7%E3%82%92%E7%94%9F%E6%88%90%E3%81%97%E3%81%A6%E3%81%84%E3%82%8B%E3%81%8B%E3%81%A9%E3%81%86%E3%81%8B%E3%82%92%E7%A2%BA%E8%AA%8D%E3%81%99%E3%82%8B%E3%81%AB%E3%81%AF%E3%80%81%E3%82%AA%E3%82%B7%E3%83%AD%E3%82%B9%E3%82%B3%E3%83%BC%E3%83%97%E3%81%BE%E3%81%9F%E3%81%AF%E3%83%87%E3%82%B8%E3%82%BF%E3%83%AB%20%E3%82%A2%E3%83%8A%E3%83%A9%E3%82%A4%E3%82%B6%E3%83%BC%E3%81%A7%E4%BF%A1%E5%8F%B7%E3%82%92%E6%B8%AC%E5%AE%9A%E3%81%99%E3%82%8B%E3%81%93%E3%81%A8%E3%82%92%E3%81%8A%E5%8B%A7%E3%82%81%E3%81%97%E3%81%BE%E3%81%99%E3%80%82%E3%82%BF%E3%82%A4%E3%83%9F%E3%83%B3%E3%82%B0%E3%81%8C%E4%BA%88%E6%83%B3%E3%81%A9%E3%81%8A%E3%82%8A%E3%81%A7%E3%81%AA%E3%81%84%E5%A0%B4%E5%90%88%E3%81%AF%E3%80%81%E3%82%B3%E3%83%B3%E3%83%91%E3%82%A4%E3%83%A9%E3%81%8C%E3%83%91%E3%83%AB%E3%82%B9%E3%81%8C%E4%BA%88%E6%83%B3%E3%81%A9%E3%81%8A%E3%82%8A%E3%81%AB%E6%8C%81%E7%B6%9A%E3%81%97%E3%81%AA%E3%81%84%E3%82%88%E3%81%86%E3%81%AB%E3%82%B3%E3%83%BC%E3%83%89%E3%82%92%E6%9C%80%E9%81%A9%E5%8C%96%E3%81%99%E3%82%8B%E5%8F%AF%E8%83%BD%E6%80%A7%E3%81%8C%E3%81%82%E3%82%8B%E3%81%9F%E3%82%81%E3%80%81%E5%80%A4%E3%82%92%E8%AA%BF%E6%95%B4%E3%81%97%E3%81%A6%E9%81%85%E5%BB%B6%E3%82%92%E7%94%9F%E6%88%90%E3%81%99%E3%82%8B%E3%81%93%E3%81%A8%E3%81%8C%E3%81%A7%E3%81%8D%E3%81%BE%E3%81%99%E3%80%82%3C%2FP%3E%0A%3CP%3E%E3%83%9C%E3%83%BC%E3%83%89%E5%86%85%E3%81%AE%E3%82%BB%E3%83%B3%E3%82%B5%E3%81%AE%E5%8B%95%E4%BD%9C%E3%82%92%E7%A2%BA%E8%AA%8D%E3%81%97%E3%81%BE%E3%81%97%E3%81%9F%E3%81%8B%EF%BC%9F%3C%2FP%3E%0A%3CP%3E%E5%8F%82%E8%80%83%E3%81%A8%E3%81%97%E3%81%A6%E4%BE%8B%E3%82%92%E7%A4%BA%E3%81%97%E3%81%BE%E3%81%99%E3%80%82%3C%2FP%3E%0A%3CP%3E%3CA%20href%3D%22https%3A%2F%2Fmcuoneclipse.com%2F2013%2F01%2F01%2Ftutorial-ultrasonic-ranging-with-the-freedom-board%2F%22%20target%3D%22_blank%22%20rel%3D%22nofollow%20noopener%20noreferrer%22%3E%E3%83%81%E3%83%A5%E3%83%BC%E3%83%88%E3%83%AA%E3%82%A2%E3%83%AB%3A%20Freedom%20Board%20%E3%82%92%E4%BD%BF%E7%94%A8%E3%81%97%E3%81%9F%E8%B6%85%E9%9F%B3%E6%B3%A2%E6%B8%AC%E8%B7%9D%20%7C%20Eclipse%20%E4%B8%8A%E3%81%AE%20MCU%3C%2FA%3E%3C%2FP%3E%0A%3CP%3E%E3%82%88%E3%82%8D%E3%81%97%E3%81%8F%E3%81%8A%E9%A1%98%E3%81%84%E3%81%84%E3%81%9F%E3%81%97%E3%81%BE%E3%81%99%E3%80%82%3C%2FP%3E%0A%3C%2FDIV%3E%0A%3C%2FDIV%3E%0A%3C%2FDIV%3E%3C%2FLINGO-BODY%3E