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.

[参考译文] MSP430FR5972:Clock_timer

Guru**** 2582405 points
Other Parts Discussed in Thread: MSP430FR5972

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

https://e2e.ti.com/support/microcontrollers/msp-low-power-microcontrollers-group/msp430/f/msp-low-power-microcontroller-forum/605242/msp430fr5972-clock_timer

器件型号:MSP430FR5972

各位专家:

我正在为项目使用 MSP430FR5972控制器,我需要调用 内置计时器,以便它可以用于自动驱动连接到 引脚的每个 LED,如下所示

LED

计时器引脚

刺激绿色

TA0.1

刺激黄色

TA0.2

电池绿色

TA1.1

蓄电池黄色

TA1.2

 我希望 GPIO 引脚可以设置为由计时器外设驱动。 可在定时器寄存器中将 LED 设置为开或关(低电平有效)、也可将计时器配置为定期切换引脚、而无需中断或延迟周期。

添加更多内容我使用时钟设置、如下所示:

//时钟系统设置
CSCTL0_H = CSKEY >> 8;  
CSCTL1 = DCOFSEL_4 | DCORSEL;//将 DCO 设置为16MHz
CSCTL2 = SELA_VLOCLK | SELS__DCOCLK | SELM_DCOCLK;//设置 SMCLK = MCLK = DCO、
// ACLK = VLOCLK
CSCTL3 = DIVA__1 | DIVM_1 | DIVM__1;//设置所有分频器
CSCTL0_H = 0;//锁定 CS 寄存器 M

 

您能否帮助您在该模式下使用计时器、或提供任何示例代码来解决我的上述问题?

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

    您好、Himanshu、

    一个选项是、当您想要将输出设置为低电平或高电平时、将引脚的功能从 tax.x 更改为 GPIO、反之亦然、当您想要定期切换引脚时、。

    例如、以下代码会将引脚设置为高电平:

    P1SEL0 &=~BIT6 \\GPIO 输出
    P1SEL1 &=~BIT6
    P1OUT |= BIT6时、将两个选择引脚都设置为零 \\SET 引脚高电平 

    该代码会将该引脚设置为计时器功能:

    P1SEL0 |= BIT6 \\TA0.1
    P1SEL1的选择引脚设置为11 |= BIT6 

    为了设置计时器、以便引脚在没有 ISR 或延迟周期的情况下切换为高电平或低电平、您需要将 LED 直接连接到捕获比较寄存器(CCRx)。 这是通过使用功能选择引脚选择 tax.x 函数、然后为最适合您需求的引脚选择输出模式来完成的。

    此示例代码 展示了如何设置计时器、以便在不中断的情况下输出不同周期和占空比的 PWM。 在此示例代码中、CCR0决定 PWM 信号的周期、CCR1/CCR2和 CCR0之间的关系决定占空比。

     或者、您只能使用 CCR0并使用 TA0CCTL0 = OUTMOD_4在计时器每次计数到 CCR0值时使引脚切换。

    例如、以下代码将每100个时钟周期切换引脚1.5上的输出:

    TA0CCR0 = 100-1;\\timer 将每100个时钟周期翻转
    一次 TA0CCTL0 = OUTMOD_4;\\Toggle
    TA0CTL = tassel_ACLK | MC__UP | TACLR;\\ ACLK、向上计数模式、清零 TAR 

    请告诉我、这是否回答了您的问题、或者您有更多问题。

    此致、

    Matthew

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    感谢 Matthew 的回复。 我的要求是将引脚设置为计时器功能。我可以通过示例了解如何解决此问题、但仍然无法切换 LED。

    LED 连接到 PIN P1.2/TA1.1/TA0CLK/COUT/A2/C2、我在代码中使用的设置为:



    //时钟系统设置
    CSCTL0_H = CSKEY >> 8;//解锁 CS 寄存器
    CSCTL1 = DCOFSEL_4 | DCORSEL;//将 DCO 设置为16MHz
    CSCTL2 = SELA_VLOCLK | SELS__DCOCLK | SELM_DCOCLK;//设置 SMCLK = MCLK = DCO、
    // ACLK = VLOCLK
    CSCTL3 = DIVA__1 | DIVM_1 | DIVM__1;//设置所有分频器
    CSCTL0_H = 0;//锁定 CS 寄存器 M

    P1SEL0 |= BIT2; //将 TA0.1的选择引脚设置为11
    P1SEL1 |= BIT2;
    TA1CCR0 = 1000-1;//计时器将每100个时钟周期翻转一次
    TA1CCTL1 = OUTMOD_4; //切换
    TA1CCR1 = 750; // CCR1 PWM 占空比
    TA1CTL = tassel_1 | MC_1 | TACLR;// ACLK、向上计数模式、清除 TAR

    请说明上述设置是否正确。
    提前感谢。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、Himanshu、

    您的代码中存在的一个问题是 P1.2的选择位:

    您将选择位设置为"11"、这对于引脚 P1.6是正确的、因为 TA0.1功能是引脚 P1.6的第三级功能;但是、对于引脚1.2、TA1.1实际上是主要功能、而不是第三级功能、因此您希望将功能位设置为"01"

    例如:

    P1SEL0 |= BIT2;
    P1SEL1 &=~BIT2; 

    您可以在 MSP430fr5972数据表中获取有关引脚功能的信息。 引脚 P1.2的功能选择位见80页。

    此外、您还需要通过 P1DIR 寄存器将 P1.2引脚设置为输出。

    最后、如果您正在寻找75%的占空比、则需要将输出模式设置为复位/设置、如示例代码所示。 如果您使用切换、它将不会输出所需的占空比。  

    此致、

    Matthew

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

    您好、Matthew、

    我完全同意您的回答。这是我现在使用的代码。仍然无法切换 LED。

    P1SEL0 |= BIT2;

    P1SEL1 &=~BIT2;

    P1DIR |=BIT2;

    TA1CCR0 = 100-1;//计时器将每100个时钟周期翻转一次


    TA1CCTL1 = OUTMOD_4;//切换
    TA1CTL = tassel_1 | MC_1 | TACLR;// ACLK、向上计数模式、清除 TAR

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

    是否禁用 GPIO 高阻抗模式?

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

    您对此问题是否有任何更新?

    此致、
    Matthew