This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

TDA4VM: MCU1_0上定时器输入捕获pwm的例子?

Part Number: TDA4VM

您好,FAE 

    我现在TDA4 mcu1_0上接入了四路pwm输入,我想通过定时器捕获的方式来采集频率,我在8.6的sdk里没找到有关于定时器输入捕获的用法,有什么例子可以参考么?

  • 有什么例子可以参考么?

    TI目前没有官方例子

    我个人为您写了一段示例,希望对您有所帮助

    #define PWM_INSTANCE                (0U)
    #define PWM_TIMER_PERIOD            (100000000U) // 假设PWM信号周期为100ms
    #define PWM_INPUT_CAPTURE_TIMEOUT   (1000000U)   // 输入捕获操作超时时间为1s
    
    void pwmInputCaptureCallback(uint32_t pwmNum, uint32_t timeStamp)
    {
        // 当发生输入捕获事件时调用此回调函数
        // 这里执行进一步的处理
        printf("PWM 输入在时间戳 %u 被捕获\n", timeStamp);
    }
    
    int main()
    {
        // 初始化PWM驱动程序
        ETPWM_init();
    
        // 配置PWM为输入捕获模式
        ETPWM_Handle pwmHandle = ETPWM_open(PWM_INSTANCE, NULL);
        if (pwmHandle == NULL) {
            printf("初始化PWM驱动程序时出错\n");
            return -1;
        }
    
        // 设置PWM周期
        ETPWM_setPeriod(pwmHandle, PWM_TIMER_PERIOD);
    
        // 启用输入捕获模式
        ETPWM_configureInputCapture(pwmHandle);
    
        // 注册输入捕获回调函数
        ETPWM_registerInputCaptureCallback(pwmHandle, pwmInputCaptureCallback);
    
        // 启动PWM
        ETPWM_start(pwmHandle);
    
        // 等待输入捕获事件发生 (或可以在这里执行其他处理)
        while (1) {
            // 在这里添加一些延迟或其他处理
        }
    
        // 关闭PWM句柄
        ETPWM_close(pwmHandle);
    
        return 0;
    }