我想在 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: 中断;
}
}