#include "comp.h" #include "gpio.h" #include "uart.h" void COMP_IRQHandler(void) { //×¢Òâ¶ÔÊäÈëÐźŵÄÂ˲¨£¬·ñÔòÈÝÒ×Îó´¥·¢ÖÐ¶Ï if(SET == COMP_ISR_CMP1IF_Chk()) { COMP_ISR_CMP1IF_Clr(); //Çå³ýCOMP1ÖжϱêÖ¾ if(SET == COMP_CR1_CMP1OR_Chk()) //±È½ÏÆ÷1 V+µçѹ¸ßÓÚV- { printf("1\r\n"); } else //±È½ÏÆ÷1 V+µçѹµÍÓÚV- { printf("2\r\n"); } } } void Comp1_IO_PF6_Init(void) { CMU_PERCLK_SetableEx(PADCLK, ENABLE); //PADʱÖÓʹÄÜ //COMP1 //Õý¶Ë AnalogIO( LIT_PWR_UNDER_PORT, LIT_PWR_UNDER_PIN ); //ANAC_COMP1CR_V1PSEL_PF6 GPIOx_ANEN_Setable(LIT_PWR_UNDER_PORT, LIT_PWR_UNDER_PIN, ENABLE); } void Comp1_Init(void) { CMU_PERCLK_SetableEx(ANACCLK, ENABLE); //Ä£Äâµç·×ÜÏßʱÖÓʹÄÜ CMU_PERCLK_SetableEx(COMPCLK, ENABLE); //COMP×ÜÏßʱÖÓʹÄÜ //buffer½öÔÚNÊäÈëvref/2ʱÐèÒª´ò¿ª //´ò¿ªºó»áÔö¼Ó0.6uAµÄ¹¦ºÄ //±È½ÏÆ÷1±È½ÏÆ÷2¹«ÓÃÒ»¸öbuffer£¨×îÎÈÍ׵ķ½·¨ÊÇ´ò¿ª buffer£© //´ò¿ªbuffer COMP_ICR_BUFBYP_Setable(DISABLE);//¹Ø±Õbufferbypass COMP_ICR_BUF_OFF_Setable(DISABLE);//´ò¿ªbuffer COMP_PCR_HSCMP1_EN_Set(COMP_PCR_HSCMP1_EN_SLOW); // µÍ¹¦ºÄģʽ COMP_PCR_HSCMPBUF_EN_Set(COMP_PCR_HSCMPBUF_EN_SLOW);// µÍ¹¦ºÄģʽ COMP_CR1_WINMODE_Setable(DISABLE); //½ûÖ¹´°¿Úģʽ COMP_CR1_POLAR_Set(COMP_CR1_POLAR_POS); //ÕýÏòÊä³ö COMP_CR1_DFEN_Setable(DISABLE); //½ûÖ¹Êä³öÂ˲¨ COMP_CR1_V1PSEL_Set(COMP_CR1_V1PSEL_COMP1_INP1); //PF6 COMP_CR1_V1NSEL_Set(COMP_CR1_V1NSEL_VREF); //±È½ÏÆ÷ÖжÏÔ´Ñ¡ÔñÉÏÉýÑØºÍϽµÑØ COMP_ICR_CMP1SEL_Set(COMP_ICR_CMP1SEL_BOTH); COMP_ICR_CMP1IE_Setable(ENABLE); //´ò¿ªÖÐ¶Ï //NVICÖжÏÅäÖà NVIC_DisableIRQ(COMP_IRQn); NVIC_SetPriority(COMP_IRQn,2); //ÖжÏÓÅÏȼ¶ÅäÖà NVIC_EnableIRQ(COMP_IRQn); COMP_CR1_CMP1EN_Setable(ENABLE); //Æô¶¯±È½ÏÆ÷1 }