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.

[参考译文] MSP430FR6989:来自 TImerA 的切换信号输出

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

https://e2e.ti.com/support/microcontrollers/msp-low-power-microcontrollers-group/msp430/f/msp-low-power-microcontroller-forum/853267/msp430fr6989-output-of-toggle-signal-from-timera

器件型号:MSP430FR6989

我们尝试从 MSP430输出一个用于外部传感器的~1.5MHz 时钟信号。 根据我们的研究、我们认为这应该起作用-

int main (void){

WDTCTL = WDTPW | WDTHOLD;

//Pre-config
P1OUT = 0;
P1SEL0 = 0;
P1SEL1 = 0;

//配置 GPIO
P1DIR |=(BIT0|BIT7); //在此处使用 P1.0 (TA0.1)和 P1.7 (TA0.2)进行调试
P1OUT |=(BIT0|BIT7);

P1SEL0 |=(BIT0|BIT7);
P1SEL1 |=(BIT0|BIT7);

//禁用 GPIO 上电默认高阻抗模式以激活先前配置的端口设置
PM5CTL0 &=~LOCKLPM5;

//计时器设置
TA0CCTL0 = OUTMOD_7; //@注意 OUTMOD_4也不起作用
TA0CCR0 = 20;
TA0CCR0 = 10;
TA0CTL =(TASSEL_SMCLK|MC__UP);

_bis_SR_register (LPM0_bits + GIE);//通过中断输入 LPM0

返回;
} 

为什么这不起作用? 如何将切换(OUTMOD_4)事件输出到引脚?

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    >   TA0CCTL0 = OUTMOD_7;      // @note   OUTMOD_4 didn't work either
    >   TA0CCR0  = 20;
    >   TA0CCR0  = 10;

    TA0.1 corresponds to TA0CCR1, and TA0.2 to TA0CCR2. You should set OUTMOD_7 in TA0CCTL1/2, and the second assignment to TA0CCR0 should be to TA0CCR1/2.

    >    P1SEL0 |= (BIT0|BIT7);
    >    P1SEL1 |= (BIT0|BIT7);
    P1SEL.7=1/1对于 P1.7 (TA0.2)是正确的、但对于 P1.0 (TA0.1)、您需要 P1SEL.0=0/1、因此您应该清除 P1SEL1.0、而不是将其设置。 [参考数据表(SLAS789C)表6-20]

     

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

    感谢 Bruce 的快速回复、马上回来!

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

    感谢 Bruce、这是我切换 P1.7的最终解决方案-

    int main (void){
    
    //系统初始化
    WDTCTL =(WDTPW|WDTHOLD); //停止 WDT
    
    //配置 GPIO (P1.7上的 TA0.2)
    P1DIR =(BIT7);
    P1SEL0 =(BIT7);
    P1SEL1 =(BIT7);
    
    //禁用 GPIO 上电默认高阻抗模式
    PM5CTL0 &=~LOCKLPM5; //激活先前配置的端口设置
    
    //定时器初始化
    TA0CCTL2 = OUTMOD_4; //打开 CCR0 (图25-2)
    TA0CCR0 = 1;
    TA0CTL =(TASSEL_SMCLK|MC__UP); // SMCLK、向上计数模式
    
    //启动
    _bis_SR_register (LPM0_bits + GIE);//输入 LPM0 w 中断
    __no_operation(); //调试位置
    
    返回 EXIT_SUCCESS
    ;}