请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
器件型号:MSPM0G3507 工具与软件:
hiiii
我想 在特定的 GPIO 变为低电平时将 mspm0g3507置于睡眠模式、并且它应在 GPIO 变为高电平后唤醒
我已为该引脚启用了中断、下面是我的代码
这是将 MCU 置于睡眠模式的正确方法还是其他任何方式???
void main(){
SYSCFG_DL_init();
adc_flag = false;
canrx_flag = false;
gInterruptLine1Status = 0;
DL_SYSCTL_enableSleepOnExit();
DL_TimerG_enableInterrupt(TIMER_0_INST, DL_TIMER_IIDX_ZERO);
DL_TimerG_enableInterrupt(TIMER_1_INST, DL_TIMER_IIDX_ZERO);
DL_TimerG_startCounter(TIMER_0_INST);
DL_TimerG_startCounter(TIMER_1_INST);
NVIC_EnableIRQ(TIMER_0_INST_INT_IRQN);
NVIC_EnableIRQ(TIMER_1_INST_INT_IRQN);
NVIC_EnableIRQ(MCAN0_INST_INT_IRQN);
NVIC_EnableIRQ(ADC12_0_INST_INT_IRQN);
NVIC_EnableIRQ(GPIO_GRP_0_INT_IRQN);
while(1U){
if(ign_status == 0){
DL_VREF_disableInternalRef(VREF);
DL_ADC12_disableConversions(ADC12_0_INST);
DL_UART_Main_disable(UART_0_INST);
DL_UART_Main_disable(UART_1_INST);
DL_MCAN_reset(MCAN0_INST);
__WFI();
}
else if(ign_status == 1){
SYSCFG_DL_MCAN0_init();
DL_ADC12_enableConversions(ADC12_0_INST);
SYSCFG_DL_UART_0_init();
SYSCFG_DL_UART_1_init();
SYSCFG_DL_VREF_init();
}
}
}
void GROUP1_IRQHandler(void)
{
switch (DL_Interrupt_getPendingGroup(DL_INTERRUPT_GROUP_1)) {
case GPIO_GRP_0_INT_IIDX:
ign_status = DL_GPIO_readPins(GPIO_GRP_0_PORT,GPIO_GRP_0_IGN_IN_MCU_PIN);
break;
}
}