MCU: PIC32MX250F128D A1
问题:怎么样才能成功电平变化唤醒MCU?
调试程序,发现不能进入电平变化中断;
关于寄存器设置如下:
- void CN_config()
- {
- // bool tFlag;
- INTDisableInterrupts(); // off interrupt
- TRISCbits.TRISC3 = 1; // ADC button
- TRISBbits.TRISB13 = 1; // hold
- CNCONBbits.ON = 1;
- CNCONCbits.ON = 1;
- // CNPUCbits.CNPUC3 = 1;
- // CNPDBbits.CNPDB13 = 1;
- //// CNCONCbits.ON = TRUE;
- // CNSTATBbits.CNSTATB13 = 0; // up
- // CNSTATCbits.CNSTATC3 = 0;// down
- // tFlag = PORTCbits.RC3;
- // tFlag = PORTBbits.RB13;
- PORTB = PORTB;
- PORTC = PORTC;
- INTSetVectorPriority ( INT_CHANGE_NOTICE_VECTOR, INT_PRIORITY_LEVEL_1 );
- INTSetVectorSubPriority ( INT_CHANGE_NOTICE_VECTOR, INT_SUB_PRIORITY_LEVEL_0 );
- IFS1bits.CNCIF = 0;
- IFS1bits.CNBIF = 0;
- // CNCONCbits.
- // INTEnable ( INT_CNC, INT_ENABLED );// Enable CNCI interrupt IEC1bits.CNCIE = 1;
- // INTEnable ( INT_CNB, INT_ENABLED );
- CNENBbits.CNIEB13 = 1;
- CNENCbits.CNIEC3 = 1;
- INTEnableInterrupts(); // on interrupt
- }
复制代码
下面是进入sleep的程序;
- VOID SYSTEM_EnableWDT ( )
- {
-
- EnterLowPowerMode();
- // // off ADC
- AD1CON1bits.ADON = FALSE; // off adc
- ANSELCbits.ANSC3 = FALSE; // set adc pin is digital
- CN_config();
- while(!U1STAbits.RIDLE);
- U1MODEbits.WAKE = 1; // UART sleep wake up
- SYSTEM_Sleep();
- // WDTCONbits.ON = 0; // off WDT
- OSCCONbits.SLPEN = 0; // wait -> idle
- // // enable ADC
- ANSELCbits.ANSC3 = TRUE;
- AD1CON1bits.ADON = TRUE;
- ExitLowPowerMode();
- }
复制代码
此帖出自
小平头技术问答
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
INTEnable ( INT_CNC, INT_ENABLED );// Enable CNCI interrupt
INTEnable ( INT_CNB, INT_ENABLED );
程序就可以唤醒了;
一周热门 更多>