#include "comp.h"
|
#include "power_manage.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
|
}
|