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.

[参考译文] MSP432P401R:PWM 和计时器出现问题

Guru**** 2524460 points


请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/microcontrollers/msp-low-power-microcontrollers-group/msp430/f/msp-low-power-microcontroller-forum/682818/msp432p401r-problem-with-pwm-and-timer

器件型号:MSP432P401R

您好!

我的项目是使用 TI 驱动程序中的 PWMtimer 和计时器。 当我单独使用 PWM 任务时、工作正常、当我单独使用计时器时工作正常、但当我一起使用时、我的项目是锁定的。 (冻结)。 有什么想法吗?

我 versión 的是 MSP432 SDK 的最后一个 μ m (2.10)。

此致、

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    "有什么想法吗?"

    它与您的代码完全无关。 您应该重点关注其他方面。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    很抱歉、我不明白太好。

    这可能是因为 PWM 驱动器正在使用机罩计时器(可能我需要对配置文件进行一些更改)。

    我使用"timerled"示例测试项目并避免错误(不成功)、我在其他任务中使用 PWM 驱动程序、我还有另外两个任务。 在我添加时间限制任务之前、它的一切工作正常。

    此致。

    *==== timerled.c ===
    */
    
    #include 
    
    /*驱动程序头文件*/
    #include 
    #include 
    #include 
    
    /*板头文件*/
    #include "Board.h"
    
    #include "timer.h"
    
    /*用于切换 LED 的回调。 */
    void mytimerCallback (Timer_handle myHandle);
    
    /*
    === mainThread ====
    //
    void * myTimer (void * arg0)
    {
    /*以微秒为单位的周期和占空比*/
    Timer_handle timer0;
    Timer_Params 参数;
    
    timer_init();
    /*将计时器设置为连续回调模式,以调用回调
    *每1、000、000微秒或1秒运行一次。
    *
    Timer_Params_init (&params);
    params.period = 1000000;
    Params.periodUnits = Timer_Period_US;
    params.timerMode = Timer_Continuous_callback;
    params.timerCallback = mytimerCallback;
    
    timer0 = Timer_open (Board_TIMER4、params);
    
    if (timer0 == NULL){
    /*初始化计时器失败*/
    while (1);
    }
    
    如果(Timer_start (timer0)= Timer_STATUS_ERROR){
    /*无法启动计时器*/
    while (1);
    }
    
    while (1){
    vTaskDelay (PDM_TO_TICKs (100));
    
    }
    
    }/*
    
    
    此回调每1、000、000微秒或1秒调用一次。 由于
    *每次调用此函数时都会切换 LED、因此 LED 将以
    *每2秒闪烁一次的速率闪烁。
    **/
    void mytimerCallback (Timer_handle myHandle)
    {
    queueDebugSend ("[timer]回叫函数");
    
    } 

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    我已阅读文档(simplelink_msp432p4_sdk_2_10_00_14)。 计时器驱动程序使用 Timer_A 和 Timer32、PWM 驱动程序使用 Timer_A 是否与我的问题相关? 在同一项目中同时使用计时器驱动程序和 PWM 是否有技巧?

    Regads、
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    在我三到四次查看我的代码后。 我明白了、现在它正在工作。 因此我的代码出现故障。


    谢谢!!!!