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.

[参考译文] CCS/MSP430FR5959:HC-SR04中断语法帮助

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

https://e2e.ti.com/support/microcontrollers/msp-low-power-microcontrollers-group/msp430/f/msp-low-power-microcontroller-forum/582416/ccs-msp430fr5959-hc-sr04-interrupt-syntax-help

部件号:MSP430FR5959

工具/软件:Code Composer Studio

您好,

我正在尝试将超声波传感器配置到MSP。 在P1IES之后,程序在中断内部循环。 我不确定是语法问题还是中断的设置。 我找到了用于MSPG系列的示例代码,我转换了语法上的一些内容,但可能并非所有内容都正确。 代码如下

谢谢你。

#include <MSP4S.h>

Int milliseconds;

内部距离;

长传感器;

Void主(void)

 /CSCTL1 = DCOFSEL_0;            //子主时钟1MHz

 WDTCTL = WDTPW + WDTHOLD;         //停止WDT

 TA1CCTL0 = CCIE;               // CCR0中断已启用

 TA1CCR0 = 1000;          // 1MHz时为1ms

 TA1CTL = tassel_2 + MC_1;          // SMCLK,upmode

 //TA1CTL = tassel__ACLK | MC__continuous;

 P1IFG = 0x00;         //清除所有中断标志

 P1DIR |= 0x01;               // WFP 1.0 作为LED的输出

 P1OUT &=~0x01;              //关闭LED

 __bis_sr_register (GIE);

 //_BIS_SR (GIE);             //全局中断启用

 而(1){

  P1IE &=~0x01;      //禁用interupt

  P1DIR |= 0x02;      //触发引脚作为输出

  P1OUT |= 0x02;      //生成脉冲

  __DELAY周期(10);       //用于10us

  P1OUT (输出)&=~0x02;         //停止脉冲

  P1DIR &=~0x04;     //制作引脚WFP 1.2 输入(ECHO)

    P1IFG = 0x00;          //清除标记以防之前发生任何事情

  P1IE |= 0x04;      //在回波引脚上启用interupt

  P1IES &=~0x04;     //回波引脚上的上升沿

    __DELAY周期(3万);      //延时30毫秒(在此时间之后,如果没有检测到物体,回波超时)

    距离=传感器/58;      //将回波长度转换为cm

    如果(距离< 20 &&距离!= 0) P1OUT |= 0x01; //如果距离小于20 cm 且距离不为0,则打开LED。

    否则P1OUT &=~0x01;

 }

}

#pragma vector=Port1_vector

__interrupt void Port_1 (void)

  如果(P1IFG&0x04) //是否有中断待处理?

    {

     如果(!(P1IES&0x04)//这是上升边缘吗?

     {

      TA1CTL|=TALCLR; //清除定时器A

      毫秒= 0;

      P1IES |= 0x04; //下降边缘

     }

     否则

     {

      传感器=(长)毫秒*1000 +(长) TA1R;  //计算回波长度

     }

  P1IFG &=~0x04;       //清除标志

  }

}

#pragma vector=TIMER0_A0_vector

__interrupt void Timer_A (void)

 毫秒++;

}

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

    首先,我建议您使用与您所使用的设备衍生产品相关的示例代码。 这很可能阻止您禁用GPIO开机默认高阻抗模式以激活先前配置的端口设置(PM5CTL0 &=~LOCKLP5;),这可能会导致您的问题。 此外,您正在初始化Timer_A1,但使用Timer_A0中断,因此您应该运行ISR_TRAP无限循环。 HC-SR04也在5V电压下工作,而MSP430器件不支持此电压电平(最大3.6 V),因此我希望在两个器件之间的某个位置有电平转换器。

    此致,
    Ryan