您好 Al
我尝试了以下代码、并在 MSP430Fr5969 EVM 上获得240-260uA 的电流消耗
int main (空)
{
WDTCTL = WDTPW | WDTHOLD;//停止 WDT
//Init_Clock ();
init_gpio();
//将 P1.0设置为输出引脚。
GPIO_setAsOutputPin (
GPIO_PORT_P1、
GPIO_PIN0
);
//将 P1.0设置为输出低电平。
GPIO_setOutputLowOnPin (
GPIO_PORT_P1、
GPIO_PIN0
);
//配置 GPIO
P3DIR |= BIT5;// P3.5输出方向
P3SEL1 |= BIT5;//在 P3.5/CEOUT 上选择 CEOUT 功能
//禁用 GPIO 上电默认高阻抗模式以激活
//先前配置的端口设置
PM5CTL0 &=~LOCKLPM5;
//设置 Comparator_E
CECTL0 = CEIPEN | CEIPSEL_12;//启用 V+、输入通道 CE1
CECTL1 = CEPWRMD_3;//正常功耗模式
CECTL2 = CEREFL_2 | CERS_3 | CERSEL;// VREF 应用于-terminal
// R 阶梯关闭;带隙基准电压
//提供给基准放大器以获得 Vcref=2.0V
CEINT &=~(CEIFG | CEIIFG | CERDYIFG);//清除任何错误中断
CEINT |= CEIE;//在 CBIFG 的上升沿启用 CompB 中断(CBIES=0)
CECTL3 = BITC;//输入缓冲器禁用@P1.1/CE1
CECTL1 |= CEON;//打开 Comparator_E
_DELAY_CYCLES (75);//基准稳定的延迟
//__no_operation();
while (1)
{
_low_power_mode_4 ();
__no_operation();
}
}
//
//
//这是 COMP_E_Vector 中断矢量服务例程。
//
//
#pragma vector=COMP_E_VECTOR
_interrupt void COMP_E_ISR (void)
{
GPIO_toggleOutputOnPin (
GPIO_PORT_P1、
GPIO_PIN0
);
}
/*
* GPIO 初始化
*
空 Init_GPIO()
{
//将所有 GPIO 引脚设置为输出低电平以实现低功耗
GPIO_setOutputLowOnPin (GPIO_PORT_P1、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_setOutputLowOnPin (GPIO_PORT_P3、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_setOutputLowOnPin (GPIO_PORT_PJ、GPIO_PIN0|GPIO_PIN1|GPIO_PIN2|GPIO_PIN3|GPIO_PIN4|GPIO_PIN5|GPIO_PIN6|GPIO_PIN7|GPIO_PIN8|GPIO_PIN9|GPIO_PIN10|GPIO_PIN11|GPIO_PIN13|GPIO_PIN11|GPIO_PIN13|GPIO_PIN13|GPIO_PIN11|GPIO_PIN13|GPIO_PIN13|GPIO_PIN13|GPIO_PIN12|GPIO_PIN12|GPIO_PIN_PIN12|GPIO_PIN12|GPIO_PIN12
GPIO_setAsOutputPin (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_setAsOutputPin (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_setAsOutputPin (GPIO_PORT_PJ、GPIO_PIN0|GPIO_PIN1|GPIO_PIN2|GPIO_PIN3|GPIO_PIN4|GPIO_PIN5|GPIO_PIN6|GPIO_PIN7|GPIO_PIN8|GPIO_PIN9|GPIO_PIN10|GPIO_PIN11|GPIO_PIN13|GPIO_PIN11|GPIO_PIN13|GPIO_PIN13|GPIO_PIN11|GPIO_PIN13|GPIO_PIN12|GPIO_PIN12|GPIO_PIN12|GPIO_PIN12|GPIO_PIN12|GPIO_PIN12|GPIO_PIN_PIN12
//将 PJ.4和 PJ.5设置为主模块函数输入、LFXT。
GPIO_setPeripheralModuleFunctionInputPin (
GPIO_PORT_PJ、
GPIO_PIN4 + GPIO_PIN5、
GPIO_PRIMARY_MODULE_FUNCTION
);
GPIO_selectInterruptEdge (GPIO_PORT_P1、GPIO_PIN2、GPIO_LOW_TO_HIGH_TRANSITION);
GPIO_setAsInputPinWithPullDownResistor (GPIO_PORT_P1、GPIO_PIN2);
GPIO_clearInterrupt (GPIO_PORT_P1、GPIO_PIN2);
GPIO_enableInterrupt (GPIO_PORT_P1、GPIO_PIN2);
//将 P1.0设置为输出引脚。
GPIO_setAsOutputPin (
GPIO_PORT_P1、
GPIO_PIN0
);
//将 P1.0设置为输出低电平。
GPIO_setOutputHighOnPin (
GPIO_PORT_P1、
GPIO_PIN0
);
//禁用 GPIO 上电默认高阻抗模式
//激活先前配置的端口设置
PMM_unlockLPM5 ();
}
/*
*时钟系统初始化
*
空 Init_Clock ()
{
CSCTL0_H = CSKEY >>8;
cs_setExternalClockSource (LFXT_frequency、HFXT_frequency);
CS_TurnOffHFXT();
CS_TurnOffVLO();
CS_TurnOnLFXT (CS_LFXT_DRIVE_3);
CS_setDCOFreq (CS_DCORSEL_0、CS_DCOFSEL_6);//8MHz
CS_initClockSignal (CS_ACLK、CS_LFXTCLK_select、CS_Clock_divider);
//CS_initClockSignal (CS_SMCLK、CS_DCOCLK_SELECT、CS_Clock_divider);
//CS_initClockSignal (CS_MCLK、CS_DCOCLK_SELECT、CS_Clock_divider);
}
我遇到以下问题:
1) 1)当 V 阈值高于2.0V 但 P3.5变为高电平时、不会生成中断...为什么不生成中断
2) 2)电流消耗约为240-260uA…… 为什么电流消耗很高