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:脉冲计数器中断困难

Guru**** 2538240 points


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

https://e2e.ti.com/support/microcontrollers/msp-low-power-microcontrollers-group/msp430/f/msp-low-power-microcontroller-forum/575468/msp432p401r-pulse-counter-interrupt-difficulty

部件号:MSP432P401R

好的,我是一个新手,我正在尝试使用启动板上的TALCK输入引脚来实施脉冲计数器。 我只想在按下按钮时触发一个中断,该按钮会增加一个全局变量计数器。 我可能在这里做了一些愚蠢的事,但任何帮助都值得赞赏

//*************************************************************************************************
////
MSP432 main.c模板-空主模板
////**************************************************************************************


#include "msp.h"

float g_fCount;

void main (void)
{
	
WDTCTL = WDTPW | WDTHOLD; //停止看门狗计时器

TA1CTL = tassel_0 + MC_2 + TAIE;//TALK SOURCE,Cont模式,启用TA1中断

__enable_interrupit();
	
while (1){

}
}

作废TA1_N_IRQHandler (void){
G_fCount++;//增量计数器
TA1CTL =!TAIFG;//将中断标志设置为0
} 

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

    那么,在您的情况下,计时器是错误的外设。 您应改为使用I/O端口中断。 检查源代码示例msp432p401_P1_03.c

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

    但是,在将TALK用作外部时钟输入NO时,可以将计时器配置为事件计数器。

    我的代码如下所示,但由于某种原因应用脉冲时,我的TAR寄存器不会递增:

    //*************************************************************************************************
    ////
    MSP432 main.c模板-空主模板
    ////**************************************************************************************
    
    
    #include "MSP.h"
    
    Int16_t gcount;
    
    void main (void)
    {
    P7DIR ||!BIT2;//WFP 7.2 输入
    P7SEL1 |=!BIT2;//WFP 7.2 控制位one =0
    P7SEL0 |= BIT2;//WFP 7.2 控制位2=1
    
    WDTCTL = WDTPW | WDTHOLD; //停止看门狗计时器
    
    TA1CTL = tassel_0 + MC_2 + TAIE;//TALK SOURCE,Cont模式,启用TA1中断
    
    Gcount += TA1R;
    
    __enable_interrupit();
    
    while (1){
    
    }
    }
    
    作废TA1_N_IRQHandler (void){
    printf("Please work..");
    } 

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

    TA1CTL =!TAIFG;

    要清除单位,请写入TA1CTL &=~TAIFG;。