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:Comp_E 和中断服务例程

Guru**** 2526840 points


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

https://e2e.ti.com/support/microcontrollers/msp-low-power-microcontrollers-group/msp430/f/msp-low-power-microcontroller-forum/997159/msp430fr6989-comp_e-and-interrupt-service-routine

器件型号:MSP430FR6989

我想在 C7输入变为低电平时捕获中断
使用下面的代码并在调试窗口-寄存器、我可以看到 COUT 从1变为0

CEIV 寄存器更改为0x0002、但中断的 ISR 不会触发
或者调试器不会在唤醒点停止、(我不知道)

我缺失的东西、ISR 未被触发
我需要一些建议

#include
#include "driverlib/MSP430FR5xx_6xx/driverlib.h"

空 Port_Init()



   //将所有端口配置为输出并将所有引脚驱动为低电平
       GPIO_setAsOutputPin (GPIO_PORT_P1、
                           GPIO_PIN0 | GPIO_PIN1 | GPIO_PIN2 | GPIO_PIN3 |
                           GPIO_PIN4 | GPIO_PIN5 | GPIO_PIN6 | GPIO_PIN7);

       GPIO_setOutputLowOnPin (GPIO_PORT_P1、
                           GPIO_PIN0 | GPIO_PIN1 | GPIO_PIN2 | GPIO_PIN3 |
                           GPIO_PIN4 | GPIO_PIN5 | GPIO_PIN6 | GPIO_PIN7);

       GPIO_setAsOutputPin (GPIO_PORT_P2、
                           GPIO_PIN0 | GPIO_PIN1 | GPIO_PIN2 | GPIO_PIN3 |
                           GPIO_PIN4 | GPIO_PIN5 | GPIO_PIN6 | GPIO_PIN7);

       GPIO_setOutputLowOnPin (GPIO_PORT_P2、
                           GPIO_PIN0 | GPIO_PIN1 | GPIO_PIN2 | GPIO_PIN3 |
                           GPIO_PIN4 | GPIO_PIN5 | GPIO_PIN6 | GPIO_PIN7);

       GPIO_setAsOutputPin (GPIO_PORT_P3、
                           GPIO_PIN0 | GPIO_PIN1 | GPIO_PIN2 | GPIO_PIN3 |
                           GPIO_PIN4 | GPIO_PIN5 | GPIO_PIN6 | GPIO_PIN7);

       GPIO_setOutputLowOnPin (GPIO_PORT_P3、
                           GPIO_PIN0 | GPIO_PIN1 | GPIO_PIN2 | GPIO_PIN3 |
                           GPIO_PIN4 | GPIO_PIN5 | GPIO_PIN6 | GPIO_PIN7);

       GPIO_setAsOutputPin (GPIO_PORT_P4、
                           GPIO_PIN0 | GPIO_PIN1 | GPIO_PIN2 | GPIO_PIN3 |
                           GPIO_PIN4 | GPIO_PIN5 | GPIO_PIN6 | GPIO_PIN7);

       GPIO_setOutputLowOnPin (GPIO_PORT_P4、
                           GPIO_PIN0 | GPIO_PIN1 | GPIO_PIN2 | GPIO_PIN3 |
                           GPIO_PIN4 | GPIO_PIN5 | GPIO_PIN6 | GPIO_PIN7);

       GPIO_setAsOutputPin (GPIO_PORT_P5、
                           GPIO_PIN0 | GPIO_PIN1 | GPIO_PIN2 | GPIO_PIN3 |
                           GPIO_PIN4 | GPIO_PIN5 | GPIO_PIN6 | GPIO_PIN7);

       GPIO_setOutputLowOnPin (GPIO_PORT_P5、
                           GPIO_PIN0 | GPIO_PIN1 | GPIO_PIN2 | GPIO_PIN3 |
                           GPIO_PIN4 | GPIO_PIN5 | GPIO_PIN6 | GPIO_PIN7);

       GPIO_setAsOutputPin (GPIO_PORT_P6、
                           GPIO_PIN0 | GPIO_PIN1 | GPIO_PIN2 | GPIO_PIN3 |
                           GPIO_PIN4 | GPIO_PIN5 | GPIO_PIN6 | GPIO_PIN7);

       GPIO_setOutputLowOnPin (GPIO_PORT_P6、
                           GPIO_PIN0 | GPIO_PIN1 | GPIO_PIN2 | GPIO_PIN3 |
                           GPIO_PIN4 | GPIO_PIN5 | GPIO_PIN6 | GPIO_PIN7);


       GPIO_setAsOutputPin (GPIO_PORT_P7、
                           GPIO_PIN0 | GPIO_PIN1 | GPIO_PIN2 | GPIO_PIN3 |
                           GPIO_PIN4 | GPIO_PIN5 | GPIO_PIN6 | GPIO_PIN7);

       GPIO_setOutputLowOnPin (GPIO_PORT_P7、
                           GPIO_PIN0 | GPIO_PIN1 | GPIO_PIN2 | GPIO_PIN3 |
                           GPIO_PIN4 | GPIO_PIN5 | GPIO_PIN6 | GPIO_PIN7);


       GPIO_setAsOutputPin (GPIO_PORT_P8、
                           GPIO_PIN0 | GPIO_PIN1 | GPIO_PIN2 | GPIO_PIN3 |
                           GPIO_PIN4 | GPIO_PIN5 | GPIO_PIN6 | GPIO_PIN7);

       GPIO_setOutputLowOnPin (GPIO_PORT_P8、
                           GPIO_PIN0 | GPIO_PIN1 | GPIO_PIN2 | GPIO_PIN3 |
                           GPIO_PIN4 | GPIO_PIN5 | GPIO_PIN6 | GPIO_PIN7);


       GPIO_setAsOutputPin (GPIO_PORT_P9、
                           GPIO_PIN0 | GPIO_PIN1 | GPIO_PIN2 | GPIO_PIN3 |
                           GPIO_PIN4 | GPIO_PIN5 | GPIO_PIN6 | GPIO_PIN7);

       GPIO_setOutputLowOnPin (GPIO_PORT_P9、
                           GPIO_PIN0 | GPIO_PIN1 | GPIO_PIN2 | GPIO_PIN3 |
                           GPIO_PIN4 | GPIO_PIN5 | GPIO_PIN6 | GPIO_PIN7);

       GPIO_setAsOutputPin (GPIO_PORT_P10、
                           GPIO_PIN0 | GPIO_PIN1 | GPIO_PIN2 | GPIO_PIN3 |
                           GPIO_PIN4 | GPIO_PIN5 | GPIO_PIN6 | GPIO_PIN7);

       GPIO_setOutputLowOnPin (GPIO_PORT_P10、
                           GPIO_PIN0 | GPIO_PIN1 | GPIO_PIN2 | GPIO_PIN3 |
                           GPIO_PIN4 | GPIO_PIN5 | GPIO_PIN6 | GPIO_PIN7);

       GPIO_setAsOutputPin (GPIO_PORT_PJ、
                           GPIO_PIN0 | GPIO_PIN1 | GPIO_PIN2 | GPIO_PIN3 |
                           GPIO_PIN4 | GPIO_PIN5 | GPIO_PIN6 | GPIO_PIN7);

       GPIO_setOutputLowOnPin (GPIO_PORT_PJ、
                           GPIO_PIN0 | GPIO_PIN1 | GPIO_PIN2 | GPIO_PIN3 |
                           GPIO_PIN4 | GPIO_PIN5 | GPIO_PIN6 | GPIO_PIN7);


       //将 PJ.4和 PJ.5配置为 LFXIN 和 LFXOUT 模式的输入引脚

       GPIO_setPeripheralModuleFunctionInputPin (
               GPIO_PORT_PJ、
               GPIO_PIN4 | GPIO_PIN5、
               GPIO_PRIMARY_MODULE_FUNCTION
       );



       PM5CTL0 &=~LOCKLPM5;                      //在初始化中、I/O 在解锁 I/O 端口之前被配置

空 SET_Clock (空)


   //将 DCO 频率设置为8MHz
       CS_setDCOFreq (CS_DCORSEL_0、CS_DCOFSEL_6);

       //配置 MCLK = 8MHz、SMCLK=2MHz 作为 DCOCLK 的时钟源
       CS_initClockSignal (CS_SMCLK、CS_DCOCLK_SELECT、CS_Clock_divider);
       CS_initClockSignal (CS_MCLK、CS_DCOCLK_select、CS_Clock_divider);

       // ACLK 时钟配置

       //将外部时钟频率设置为 ACLK 频率
       cs_setExternalClockSource (32768、0);


       CS_initClockSignal (CS_ACLK、CS_LFXTCLK_select、CS_Clock_divider);
       CS_TurnOnLFXT (CS_LFXT_DRIVE_3);


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

       PMM_unlockLPM5 ();




int main (空)

 WDTCTL = WDTPW | WDTHOLD;                //停止 WDT

 PORT_Init();
 Set_Clock();

 //将 P8.4配置为 C7输入
 P8SEL1 |=BIT4;
 P8SEL0 |= BIT4;



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

 //设置 Comparator_E
 CECTL0 = CEIPEN | CEIPSEL_7;             //启用 V+、输入通道 CE07
 CECTL1 = CEMRVS | CEPWRMD_2;             // CMRVL 选择 REFV - VREF0
                                           //超低功耗比较器模式
 CECTL2 = CER_1 | CERSEL | CEREF04;      // VREF 应用于-端子
                                           // VCC 应用于 R-Ladder;VREF0为 Vcc*1/2
  CECTL3 |= CEPD7;                         //输入缓冲器禁用@P8.4/CE7

 CECTL1 |= CEON;                          //打开 Comparator_E
 CEINT |=CEIE;

 _DELAY_CYCLES (75);                      //基准稳定的延迟

 while (1){
     __no_operation();                        //进行调试
 }



#pragma vector=COMP_E_VECTOR __INTERRUPT void COMP_E_ISR (void)

   Int A;
  switch (__evo_in_range (CEIV、CEIV_CERDYIFG)){
          案例 CEIV_NONE:
              a=a; //表示断点
              中断;
          案例 CEIV_CEIFG:   中断;
          案例 CEIV_CEIIFG:
              中断;
          案例 CEIV_CERDYIFG:   中断;
      }

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

    在 while (1)循环之前添加:

    >_enable_interrupt (); // GIE=1