/** ****************************************************************************** * @file fm33a0xxev_comp.c * @author FM33A0XXEV Application Team * @version V1.0.0 * @date 16-April-2020 * @brief This file provides firmware functions to manage the following * functionalities of....: * */ /* Includes ------------------------------------------------------------------*/ #include "fm33a0xxev_comp.h" /** @addtogroup fm33a0xxev_StdPeriph_Driver * @{ */ /** @defgroup COMP * @brief COMP driver modules * @{ */ /* ±È½ÏÆ÷1Êä³öÊý×ÖÂ˲¨³¤¶ÈÅäÖüĴæÆ÷¡£Â˲¨³¤¶ÈÖÜÆÚÊÇDFLEN+1 00010£º3´ÎAPBCLK²ÉÑù ¡­¡­ 11111£º32´ÎAPBCLK²ÉÑù Ïà¹Øº¯Êý */ void COMP_CR1_DFLEN_Set(uint32_t SetValue) { uint32_t tmpreg; tmpreg = COMP->CR1; tmpreg &= ~(COMP_CR1_DFLEN_Msk); tmpreg |= (SetValue & COMP_CR1_DFLEN_Msk); COMP->CR1 = tmpreg; } uint32_t COMP_CR1_DFLEN_Get(void) { return (COMP->CR1 & COMP_CR1_DFLEN_Msk); } /* ±È½ÏÆ÷1´°¿Úģʽ¿ØÖƼĴæÆ÷ 0£º½ûÖ¹´°¿Úģʽ 1£ºÊ¹ÄÜ´°¿Úģʽ Ïà¹Øº¯Êý */ void COMP_CR1_WINMODE_Setable(FunState NewState) { if (NewState == ENABLE) { COMP->CR1 |= (COMP_CR1_WINMODE_Msk); } else { COMP->CR1 &= ~(COMP_CR1_WINMODE_Msk); } } FunState COMP_CR1_WINMODE_Getable(void) { if (COMP->CR1 & (COMP_CR1_WINMODE_Msk)) { return ENABLE; } else { return DISABLE; } } /* ±È½ÏÆ÷1Êä³ö¼«ÐÔ¿ØÖÆ 0£ºÕýÏòÊä³ö 1£ºÈ¡·´Êä³ö Ïà¹Øº¯Êý */ void COMP_CR1_POLAR_Set(uint32_t SetValue) { uint32_t tmpreg; tmpreg = COMP->CR1; tmpreg &= ~(COMP_CR1_POLAR_Msk); tmpreg |= (SetValue & COMP_CR1_POLAR_Msk); COMP->CR1 = tmpreg; } uint32_t COMP_CR1_POLAR_Get(void) { return (COMP->CR1 & COMP_CR1_POLAR_Msk); } /* ±È½ÏÆ÷1Êä³öÊý×ÖÂ˲¨Ê¹ÄÜ 0£º½ûÖ¹Êä³öÊý×ÖÂ˲¨ 1£ºÊ¹ÄÜÊä³öÊý×ÖÂ˲¨ Ïà¹Øº¯Êý */ void COMP_CR1_DFEN_Setable(FunState NewState) { if (NewState == ENABLE) { COMP->CR1 |= (COMP_CR1_DFEN_Msk); } else { COMP->CR1 &= ~(COMP_CR1_DFEN_Msk); } } FunState COMP_CR1_DFEN_Getable(void) { if (COMP->CR1 & (COMP_CR1_DFEN_Msk)) { return ENABLE; } else { return DISABLE; } } /* ±È½ÏÆ÷1Êä³ö£¨Êý×ÖÂ˲¨Ç°£©£¬Èí¼þÖ»¶Á Ïà¹Øº¯Êý */ FlagStatus COMP_CR1_CMP1OR_Chk(void) { if (COMP->CR1 & COMP_CR1_CMP1OR_Msk) { return SET; } else { return RESET; } } /* ±È½ÏÆ÷1Êä³ö£¨Êý×ÖÂ˲¨ºó£©£¬Èí¼þÖ»¶Á Ïà¹Øº¯Êý */ FlagStatus COMP_CR1_CMP1OF_Chk(void) { if (COMP->CR1 & COMP_CR1_CMP1OF_Msk) { return SET; } else { return RESET; } } /* ±È½ÏÆ÷1¸º¼«ÊäÈëÑ¡Ôñ 000£ºCOMP1_INN1 001£ºCOMP1_INN2 010£ºVREF 011£º3/4 VREF 100£º1/2 VREF 101£º1/4 VREF 110£º1/8 VREF 111£ºRFU Ïà¹Øº¯Êý */ void COMP_CR1_V1NSEL_Set(uint32_t SetValue) { uint32_t tmpreg; tmpreg = COMP->CR1; tmpreg &= ~(COMP_CR1_V1NSEL_Msk); tmpreg |= (SetValue & COMP_CR1_V1NSEL_Msk); COMP->CR1 = tmpreg; } uint32_t COMP_CR1_V1NSEL_Get(void) { return (COMP->CR1 & COMP_CR1_V1NSEL_Msk); } /* ±È½ÏÆ÷1Õý¼«ÊäÈëÑ¡Ôñ 00£ºCOMP1_INP1 01£ºCOMP1_INP2 10£ºCOMP1_INP3 11£ºCOMP1_INP4 Ïà¹Øº¯Êý */ void COMP_CR1_V1PSEL_Set(uint32_t SetValue) { uint32_t tmpreg; tmpreg = COMP->CR1; tmpreg &= ~(COMP_CR1_V1PSEL_Msk); tmpreg |= (SetValue & COMP_CR1_V1PSEL_Msk); COMP->CR1 = tmpreg; } uint32_t COMP_CR1_V1PSEL_Get(void) { return (COMP->CR1 & COMP_CR1_V1PSEL_Msk); } /* ±È½ÏÆ÷1ʹÄÜλ 0£º¹Ø±Õ±È½ÏÆ÷1 1£ºÊ¹ÄÜ±È½ÏÆ÷1 Ïà¹Øº¯Êý */ void COMP_CR1_CMP1EN_Setable(FunState NewState) { if (NewState == ENABLE) { COMP->CR1 |= (COMP_CR1_CMP1EN_Msk); } else { COMP->CR1 &= ~(COMP_CR1_CMP1EN_Msk); } } FunState COMP_CR1_CMP1EN_Getable(void) { if (COMP->CR1 & (COMP_CR1_CMP1EN_Msk)) { return ENABLE; } else { return DISABLE; } } /* ±È½ÏÆ÷2Êä³öÊý×ÖÂ˲¨³¤¶ÈÅäÖüĴæÆ÷¡£Â˲¨³¤¶ÈÖÜÆÚÊÇDFLEN+1 00010£º3´ÎAPBCLK²ÉÑù ¡­¡­ 11111£º32´ÎAPBCLK²ÉÑù Ïà¹Øº¯Êý */ void COMP_CR2_DFLEN_Set(uint32_t SetValue) { uint32_t tmpreg; tmpreg = COMP->CR2; tmpreg &= ~(COMP_CR2_DFLEN_Msk); tmpreg |= (SetValue & COMP_CR2_DFLEN_Msk); COMP->CR2 = tmpreg; } uint32_t COMP_CR2_DFLEN_Get(void) { return (COMP->CR2 & COMP_CR2_DFLEN_Msk); } /* ±È½ÏÆ÷2Êä³öÊý×ÖÂ˲¨Ê¹ÄÜ 0£º½ûÖ¹Êä³öÊý×ÖÂ˲¨ 1£ºÊ¹ÄÜÊä³öÊý×ÖÂ˲¨ Ïà¹Øº¯Êý */ void COMP_CR2_DFEN_Setable(FunState NewState) { if (NewState == ENABLE) { COMP->CR2 |= (COMP_CR2_DFEN_Msk); } else { COMP->CR2 &= ~(COMP_CR2_DFEN_Msk); } } FunState COMP_CR2_DFEN_Getable(void) { if (COMP->CR2 & (COMP_CR2_DFEN_Msk)) { return ENABLE; } else { return DISABLE; } } /* ±È½ÏÆ÷2´°¿Úģʽ¿ØÖƼĴæÆ÷ 0£º½ûÖ¹´°¿Úģʽ 1£ºÊ¹ÄÜ´°¿Úģʽ Ïà¹Øº¯Êý */ void COMP_CR2_WINMODE_Setable(FunState NewState) { if (NewState == ENABLE) { COMP->CR2 |= (COMP_CR2_WINMODE_Msk); } else { COMP->CR2 &= ~(COMP_CR2_WINMODE_Msk); } } FunState COMP_CR2_WINMODE_Getable(void) { if (COMP->CR2 & (COMP_CR2_WINMODE_Msk)) { return ENABLE; } else { return DISABLE; } } /* ±È½ÏÆ÷2Êä³ö¼«ÐÔ¿ØÖÆ 0£ºÕýÏòÊä³ö 1£ºÈ¡·´Êä³ö Ïà¹Øº¯Êý */ void COMP_CR2_POLAR_Set(uint32_t SetValue) { uint32_t tmpreg; tmpreg = COMP->CR2; tmpreg &= ~(COMP_CR2_POLAR_Msk); tmpreg |= (SetValue & COMP_CR2_POLAR_Msk); COMP->CR2 = tmpreg; } uint32_t COMP_CR2_POLAR_Get(void) { return (COMP->CR2 & COMP_CR2_POLAR_Msk); } /* ±È½ÏÆ÷2Êä³ö£¨Êý×ÖÂ˲¨Ç°£©£¬Èí¼þÖ»¶Á Ïà¹Øº¯Êý */ FlagStatus COMP_CR2_CMP2OR_Chk(void) { if (COMP->CR2 & COMP_CR2_CMP2OR_Msk) { return SET; } else { return RESET; } } /* ±È½ÏÆ÷2Êä³ö£¨Êý×ÖÂ˲¨ºó£©£¬Èí¼þÖ»¶Á Ïà¹Øº¯Êý */ FlagStatus COMP_CR2_CMP2OF_Chk(void) { if (COMP->CR2 & COMP_CR2_CMP2OF_Msk) { return SET; } else { return RESET; } } /* ±È½ÏÆ÷2¸º¼«ÊäÈëÑ¡Ôñ 000£ºCOMP2_INN1 001£ºCOMP2_INN2 010£ºVREF 011£º3/4 VREF 100£º1/2 VREF 101£º1/4 VREF 110£º1/8 VREF 111£ºREFIN(PD6) */ void COMP_CR2_V2NSEL_Set(uint32_t SetValue) { uint32_t tmpreg; tmpreg = COMP->CR2; tmpreg &= ~(COMP_CR2_V2NSEL_Msk); tmpreg |= (SetValue & COMP_CR2_V2NSEL_Msk); COMP->CR2 = tmpreg; } uint32_t COMP_CR2_V2NSEL_Get(void) { return (COMP->CR2 & COMP_CR2_V2NSEL_Msk); } /* ±È½ÏÆ÷2Õý¼«ÊäÈëÑ¡Ôñ 000£ºCOMP2_INP1 001£ºCOMP2_INP2 010£ºCOMP1_INP1 011£ºCOMP1_INP2 100£ºAVREF 101£ºVDD15 110, 111£ºRFU Ïà¹Øº¯Êý */ void COMP_CR2_V2PSEL_Set(uint32_t SetValue) { uint32_t tmpreg; tmpreg = COMP->CR2; tmpreg &= ~(COMP_CR2_V2PSEL_Msk); tmpreg |= (SetValue & COMP_CR2_V2PSEL_Msk); COMP->CR2 = tmpreg; } uint32_t COMP_CR2_V2PSEL_Get(void) { return (COMP->CR2 & COMP_CR2_V2PSEL_Msk); } /* ±È½ÏÆ÷2ʹÄÜλ 0£º¹Ø±Õ±È½ÏÆ÷2 1£ºÊ¹ÄÜ±È½ÏÆ÷2 Ïà¹Øº¯Êý */ void COMP_CR2_CMP2EN_Setable(FunState NewState) { if (NewState == ENABLE) { COMP->CR2 |= (COMP_CR2_CMP2EN_Msk); } else { COMP->CR2 &= ~(COMP_CR2_CMP2EN_Msk); } } FunState COMP_CR2_CMP2EN_Getable(void) { if (COMP->CR2 & (COMP_CR2_CMP2EN_Msk)) { return ENABLE; } else { return DISABLE; } } /* Out-Of-WindowÖжÏʹÄÜ Ïà¹Øº¯Êý */ void COMP_ICR_OOW_IE_Setable(FunState NewState) { if (NewState == ENABLE) { COMP->ICR |= (COMP_ICR_OOW_IE_Msk); } else { COMP->ICR &= ~(COMP_ICR_OOW_IE_Msk); } } FunState COMP_ICR_OOW_IE_Getable(void) { if (COMP->ICR & (COMP_ICR_OOW_IE_Msk)) { return ENABLE; } else { return DISABLE; } } /* WindowÖжÏʹÄÜ Ïà¹Øº¯Êý */ void COMP_ICR_WIN_IE_Setable(FunState NewState) { if (NewState == ENABLE) { COMP->ICR |= (COMP_ICR_WIN_IE_Msk); } else { COMP->ICR &= ~(COMP_ICR_WIN_IE_Msk); } } FunState COMP_ICR_WIN_IE_Getable(void) { if (COMP->ICR & (COMP_ICR_WIN_IE_Msk)) { return ENABLE; } else { return DISABLE; } } /* ±È½ÏÆ÷Buffer Bypass 0£º²»Bypass±È½ÏÆ÷Buffer 1£ºBypass±È½ÏÆ÷Buffer Ïà¹Øº¯Êý */ void COMP_ICR_BUFBYP_Setable(FunState NewState) { if (NewState == ENABLE) { COMP->ICR |= (COMP_ICR_BUFBYP_Msk); } else { COMP->ICR &= ~(COMP_ICR_BUFBYP_Msk); } } FunState COMP_ICR_BUFBYP_Getable(void) { if (COMP->ICR & (COMP_ICR_BUFBYP_Msk)) { return ENABLE; } else { return DISABLE; } } /* ±È½ÏÆ÷BufferʹÄÜ 0£ºÊ¹ÄÜ±È½ÏÆ÷Buffer 1£º½ûÖ¹±È½ÏÆ÷Buffer Ïà¹Øº¯Êý */ void COMP_ICR_BUF_OFF_Setable(FunState NewState) { if (NewState == ENABLE) { COMP->ICR |= (COMP_ICR_BUF_OFF_Msk); } else { COMP->ICR &= ~(COMP_ICR_BUF_OFF_Msk); } } FunState COMP_ICR_BUF_OFF_Getable(void) { if (COMP->ICR & (COMP_ICR_BUF_OFF_Msk)) { return ENABLE; } else { return DISABLE; } } /* ±È½ÏÆ÷2ÖжÏÔ´Ñ¡Ôñ 00/11£º±È½ÏÆ÷2Êä³öÉÏÉý»òϽµÑزúÉúÖÐ¶Ï 01£º±È½ÏÆ÷2Êä³öÉÏÉýÑØ²úÉúÖÐ¶Ï 10£º±È½ÏÆ÷2Êä³öϽµÑزúÉúÖÐ¶Ï Ïà¹Øº¯Êý */ void COMP_ICR_CMP2SEL_Set(uint32_t SetValue) { uint32_t tmpreg; tmpreg = COMP->ICR; tmpreg &= ~(COMP_ICR_CMP2SEL_Msk); tmpreg |= (SetValue & COMP_ICR_CMP2SEL_Msk); COMP->ICR = tmpreg; } uint32_t COMP_ICR_CMP2SEL_Get(void) { return (COMP->ICR & COMP_ICR_CMP2SEL_Msk); } /* ±È½ÏÆ÷1ÖжÏÔ´Ñ¡Ôñ 00/11£º±È½ÏÆ÷1Êä³öÉÏÉý»òϽµÑزúÉúÖÐ¶Ï 01£º±È½ÏÆ÷1Êä³öÉÏÉýÑØ²úÉúÖÐ¶Ï 10£º±È½ÏÆ÷1Êä³öϽµÑزúÉúÖÐ¶Ï Ïà¹Øº¯Êý */ void COMP_ICR_CMP1SEL_Set(uint32_t SetValue) { uint32_t tmpreg; tmpreg = COMP->ICR; tmpreg &= ~(COMP_ICR_CMP1SEL_Msk); tmpreg |= (SetValue & COMP_ICR_CMP1SEL_Msk); COMP->ICR = tmpreg; } uint32_t COMP_ICR_CMP1SEL_Get(void) { return (COMP->ICR & COMP_ICR_CMP1SEL_Msk); } /* ±È½ÏÆ÷2ÖжÏʹÄÜ Ïà¹Øº¯Êý */ void COMP_ICR_CMP2IE_Setable(FunState NewState) { if (NewState == ENABLE) { COMP->ICR |= (COMP_ICR_CMP2IE_Msk); } else { COMP->ICR &= ~(COMP_ICR_CMP2IE_Msk); } } FunState COMP_ICR_CMP2IE_Getable(void) { if (COMP->ICR & (COMP_ICR_CMP2IE_Msk)) { return ENABLE; } else { return DISABLE; } } /* ±È½ÏÆ÷1ÖжÏʹÄÜ Ïà¹Øº¯Êý */ void COMP_ICR_CMP1IE_Setable(FunState NewState) { if (NewState == ENABLE) { COMP->ICR |= (COMP_ICR_CMP1IE_Msk); } else { COMP->ICR &= ~(COMP_ICR_CMP1IE_Msk); } } FunState COMP_ICR_CMP1IE_Getable(void) { if (COMP->ICR & (COMP_ICR_CMP1IE_Msk)) { return ENABLE; } else { return DISABLE; } } /* Out-of-WindowÖжϱêÖ¾£¬Ó²¼þÖÃ룬Èí¼þд1ÇåÁã Ïà¹Øº¯Êý */ void COMP_ISR_OOW_IF_Clr(void) { COMP->ISR = COMP_ISR_OOW_IF_Msk; } FlagStatus COMP_ISR_OOW_IF_Chk(void) { if (COMP->ISR & COMP_ISR_OOW_IF_Msk) { return SET; } else { return RESET; } } /* WindowÖжϱêÖ¾£¬Ó²¼þÖÃ룬Èí¼þд1ÇåÁã Ïà¹Øº¯Êý */ void COMP_ISR_WIN_IF_Clr(void) { COMP->ISR = COMP_ISR_WIN_IF_Msk; } FlagStatus COMP_ISR_WIN_IF_Chk(void) { if (COMP->ISR & COMP_ISR_WIN_IF_Msk) { return SET; } else { return RESET; } } /* ±È½ÏÆ÷2ÖжϱêÖ¾£¬Ó²¼þÖÃ룬Èí¼þд1ÇåÁã Ïà¹Øº¯Êý */ void COMP_ISR_CMP2IF_Clr(void) { COMP->ISR = COMP_ISR_CMP2IF_Msk; } FlagStatus COMP_ISR_CMP2IF_Chk(void) { if (COMP->ISR & COMP_ISR_CMP2IF_Msk) { return SET; } else { return RESET; } } /* ±È½ÏÆ÷1ÖжϱêÖ¾£¬Ó²¼þÖÃ룬Èí¼þд1ÇåÁã Ïà¹Øº¯Êý */ void COMP_ISR_CMP1IF_Clr(void) { COMP->ISR = COMP_ISR_CMP1IF_Msk; } FlagStatus COMP_ISR_CMP1IF_Chk(void) { if (COMP->ISR & COMP_ISR_CMP1IF_Msk) { return SET; } else { return RESET; } } /* ±È½ÏÆ÷BUFFER¹¤×÷ģʽ 0£ºµÍ¹¦ºÄģʽ 1£º¿ìËÙģʽ Ïà¹Øº¯Êý */ void COMP_PCR_HSCMPBUF_EN_Set(uint32_t SetValue) { uint32_t tmpreg; tmpreg = COMP->PCR; tmpreg &= ~(COMP_PCR_HSCMPBUF_EN_Msk); tmpreg |= (SetValue & COMP_PCR_HSCMPBUF_EN_Msk); COMP->PCR = tmpreg; } uint32_t COMP_PCR_HSCMPBUF_EN_Get(void) { return (COMP->PCR & COMP_PCR_HSCMPBUF_EN_Msk); } /* ±È½ÏÆ÷2¹¤×÷ģʽ 0£ºµÍ¹¦ºÄģʽ 1£º¿ìËÙģʽ Ïà¹Øº¯Êý */ void COMP_PCR_HSCMP2_EN_Set(uint32_t SetValue) { uint32_t tmpreg; tmpreg = COMP->PCR; tmpreg &= ~(COMP_PCR_HSCMP2_EN_Msk); tmpreg |= (SetValue & COMP_PCR_HSCMP2_EN_Msk); COMP->PCR = tmpreg; } uint32_t COMP_PCR_HSCMP2_EN_Get(void) { return (COMP->PCR & COMP_PCR_HSCMP2_EN_Msk); } /* ±È½ÏÆ÷1¹¤×÷ģʽ 0£ºµÍ¹¦ºÄģʽ 1£º¿ìËÙģʽ Ïà¹Øº¯Êý */ void COMP_PCR_HSCMP1_EN_Set(uint32_t SetValue) { uint32_t tmpreg; tmpreg = COMP->PCR; tmpreg &= ~(COMP_PCR_HSCMP1_EN_Msk); tmpreg |= (SetValue & COMP_PCR_HSCMP1_EN_Msk); COMP->PCR = tmpreg; } uint32_t COMP_PCR_HSCMP1_EN_Get(void) { return (COMP->PCR & COMP_PCR_HSCMP1_EN_Msk); } void COMP_Deinit(void) { //COMP->CR1 = 0x00000000; //COMP->CR2 = 0x00000000; //COMP->ICR = ; //COMP->ISR = 0x00000000; } /******END OF FILE****/