/** ****************************************************************************** * @file fm33a0xxev_u7816.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_u7816.h" /** @addtogroup fm33a0xxev_StdPeriph_Driver * @{ */ /** @defgroup U7816 * @brief U7816 driver modules * @{ */ /* U7816ͨµÀ·¢ËÍʹÄÜ¿ØÖÆÎ» (Transmit Enable) 1£ºÍ¨µÀ·¢ËÍʹÄÜ£¬¿É·¢ËÍÊý¾Ý 0£ºÍ¨µÀ·¢ËͽûÖ¹£¬²»¿É·¢ËÍÊý¾Ý£¬²¢¹Ø¶ÏÊä³ö¶Ë¿Ú£¬½«SCLÐźÅת»¯ÎªµÍµçƽ Ïà¹Øº¯Êý */ void U7816_CR_TXEN_Setable(FunState NewState) { if (NewState == ENABLE) { U7816->CR |= (U7816_CR_TXEN_Msk); } else { U7816->CR &= ~(U7816_CR_TXEN_Msk); } } FunState U7816_CR_TXEN_Getable(void) { if (U7816->CR & (U7816_CR_TXEN_Msk)) { return ENABLE; } else { return DISABLE; } } /* U7816ͨµÀ½ÓÊÕʹÄÜ¿ØÖÆÎ» (Receive Enable) 1£ºÍ¨µÀ½ÓÊÕʹÄÜ£¬¿É½ÓÊÕÊý¾Ý 0£ºÍ¨µÀ½ÓÊÕ½ûÖ¹£¬²»¿É½ÓÊÕÊý¾Ý£¬²¢¹Ø¶ÏÊäÈë¶Ë¿Ú Ïà¹Øº¯Êý */ void U7816_CR_RXEN_Setable(FunState NewState) { if (NewState == ENABLE) { U7816->CR |= (U7816_CR_RXEN_Msk); } else { U7816->CR &= ~(U7816_CR_RXEN_Msk); } } FunState U7816_CR_RXEN_Getable(void) { if (U7816->CR & (U7816_CR_RXEN_Msk)) { return ENABLE; } else { return DISABLE; } } /* U7816ʱÖÓCLKÊä³öʹÄÜ¿ØÖÆÎ» (Clock output Enable) 1£º7816ʱÖÓÊä³öʹÄÜ 0£º7816ʱÖÓÊä³ö½ûÖ¹ Ïà¹Øº¯Êý */ void U7816_CR_CKOEN_Setable(FunState NewState) { if (NewState == ENABLE) { U7816->CR |= (U7816_CR_CKOEN_Msk); } else { U7816->CR &= ~(U7816_CR_CKOEN_Msk); } } FunState U7816_CR_CKOEN_Getable(void) { if (U7816->CR & (U7816_CR_CKOEN_Msk)) { return ENABLE; } else { return DISABLE; } } /* U7816ͨµÀÊý¾Ý·¢ËÍÇ¿ÉÏÀ­µç×è×Ô¶¯ÓÐЧ¿ØÖÆÎ» (High-Pullup Automatically) 1£ºÊý¾Ý·¢ËÍʱÉÏÀ­µç×è×Ô¶¯ÓÐЧ£¬½ÓÊÕ̬ÉÏÀ­µç×èÎÞЧ 0£ºÊý¾Ý·¢ËÍʱÉÏÀ­µç×è×Ô¶¯ÓÐЧ¹¦ÄܽûÖ¹£¬ÉÏÀ­µç×èÓÉHPUEN£¬LPUEN¿ØÖÆ Ïà¹Øº¯Êý */ void U7816_CR_HPUAT_Setable(FunState NewState) { if (NewState == ENABLE) { U7816->CR |= (U7816_CR_HPUAT_Msk); } else { U7816->CR &= ~(U7816_CR_HPUAT_Msk); } } FunState U7816_CR_HPUAT_Getable(void) { if (U7816->CR & (U7816_CR_HPUAT_Msk)) { return ENABLE; } else { return DISABLE; } } /* U7816ͨµÀÇ¿ÉÏÀ­Ê¹ÄÜ¿ØÖÆÎ» (High-Pullup Enable) 1£ºÇ¿ÉÏÀ­ÓÐЧ 0£ºÇ¿ÉÏÀ­ÎÞЧ Ïà¹Øº¯Êý */ void U7816_CR_HPUEN_Setable(FunState NewState) { if (NewState == ENABLE) { U7816->CR |= (U7816_CR_HPUEN_Msk); } else { U7816->CR &= ~(U7816_CR_HPUEN_Msk); } } FunState U7816_CR_HPUEN_Getable(void) { if (U7816->CR & (U7816_CR_HPUEN_Msk)) { return ENABLE; } else { return DISABLE; } } /* Guard Time·¢Ëͳ¤¶È¿ØÖÆÎ» (Send long Frame Enable) 1£ºGuard timeΪ3 etu 0£ºGuard timeΪ2 etu Ïà¹Øº¯Êý */ void U7816_FFR_SFREN_Set(uint32_t SetValue) { uint32_t tmpreg; tmpreg = U7816->FFR; tmpreg &= ~(U7816_FFR_SFREN_Msk); tmpreg |= (SetValue & U7816_FFR_SFREN_Msk); U7816->FFR = tmpreg; } uint32_t U7816_FFR_SFREN_Get(void) { return (U7816->FFR & U7816_FFR_SFREN_Msk); } /* ERROR SIGNAL¿í¶ÈÑ¡Ôñ (Error Signal Width) 11£ºERROR SIGNAL¿í¶ÈΪ1ETU; 10£ºERROR SIGNAL¿í¶ÈΪ1.5ETU; 01£ºERROR SIGNAL¿í¶ÈΪ2ETU; 00£ºERROR SIGNAL¿í¶ÈΪ2ETU; Ïà¹Øº¯Êý */ void U7816_FFR_ERSW_Set(uint32_t SetValue) { uint32_t tmpreg; tmpreg = U7816->FFR; tmpreg &= ~(U7816_FFR_ERSW_Msk); tmpreg |= (SetValue & U7816_FFR_ERSW_Msk); U7816->FFR = tmpreg; } uint32_t U7816_FFR_ERSW_Get(void) { return (U7816->FFR & U7816_FFR_ERSW_Msk); } /* ERROR SIGNALºóGUARDTIME¿í¶ÈÑ¡Ôñ£¨½öÔÚ·¢ËÍʱÓÐЧ£© (Error Signal Guard Time) 1£ºERROR SIGNALºóGUARDTIMEΪ1~1.5ETU¡£ 0£ºERROR SIGNALºóGUARDTIMEΪ2~2.5ETU¡£ ERROR SIGNAL¿í¶ÈΪÕûÊýETUʱGUARDTIMEΪ1.5»ò2.5ETU£»ERROR SIGNAL¿í¶ÈΪ1.5ETUʱGUARDTIMEΪ1»ò2ETU Ïà¹Øº¯Êý */ void U7816_FFR_ERSGD_Set(uint32_t SetValue) { uint32_t tmpreg; tmpreg = U7816->FFR; tmpreg &= ~(U7816_FFR_ERSGD_Msk); tmpreg |= (SetValue & U7816_FFR_ERSGD_Msk); U7816->FFR = tmpreg; } uint32_t U7816_FFR_ERSGD_Get(void) { return (U7816->FFR & U7816_FFR_ERSGD_Msk); } /* BGT¿ØÖÆÎ»¡£¿ØÖƽÓÊÕ->·¢ËÍÖ®¼äÊÇ·ñ²åÈëBGT¡£BGTÊǽÓÊÕ->·¢ËÍÖ®¼äÐèÒªµÄ×îСʱ¼ä£¨block guard time enable£© 1£ºBGTʹÄÜ£¬²åÈëBlock guard time(12 etu); 0£ºBGT½ûÖ¹£¬²»²åÈëBlock guard time(12 etu); Ïà¹Øº¯Êý */ void U7816_FFR_BGTEN_Setable(FunState NewState) { if (NewState == ENABLE) { U7816->FFR |= (U7816_FFR_BGTEN_Msk); } else { U7816->FFR &= ~(U7816_FFR_BGTEN_Msk); } } FunState U7816_FFR_BGTEN_Getable(void) { if (U7816->FFR & (U7816_FFR_BGTEN_Msk)) { return ENABLE; } else { return DISABLE; } } /* ¿ØÖƽÓÊÕÊý¾ÝÆæÅ¼Ð£Ñé³ö´íʱ×Ô¶¯ÖØ·¢´ÎÊý (Repeated Times) 1£º3´Î 0£º1´Î Ïà¹Øº¯Êý */ void U7816_FFR_REP_T_Set(uint32_t SetValue) { uint32_t tmpreg; tmpreg = U7816->FFR; tmpreg &= ~(U7816_FFR_REP_T_Msk); tmpreg |= (SetValue & U7816_FFR_REP_T_Msk); U7816->FFR = tmpreg; } uint32_t U7816_FFR_REP_T_Get(void) { return (U7816->FFR & U7816_FFR_REP_T_Msk); } /* ÆæÅ¼Ð£ÑéÀàÐÍÑ¡Ôñ (Parity) 00£ºEven 01£ºOdd 10£ºAlways 1 11£º²»Ð£Ñ飬´¦Àí Ïà¹Øº¯Êý */ void U7816_FFR_PAR_Set(uint32_t SetValue) { uint32_t tmpreg; tmpreg = U7816->FFR; tmpreg &= ~(U7816_FFR_PAR_Msk); tmpreg |= (SetValue & U7816_FFR_PAR_Msk); U7816->FFR = tmpreg; } uint32_t U7816_FFR_PAR_Get(void) { return (U7816->FFR & U7816_FFR_PAR_Msk); } /* Guard Time½ÓÊÕ³¤¶È¿ØÖÆÎ» (Receive short Frame ) 1£ºGuard timeΪ1 etu 0£ºGuard timeΪ2 etu Ïà¹Øº¯Êý */ void U7816_FFR_RFREN_Set(uint32_t SetValue) { uint32_t tmpreg; tmpreg = U7816->FFR; tmpreg &= ~(U7816_FFR_RFREN_Msk); tmpreg |= (SetValue & U7816_FFR_RFREN_Msk); U7816->FFR = tmpreg; } uint32_t U7816_FFR_RFREN_Get(void) { return (U7816->FFR & U7816_FFR_RFREN_Msk); } /* ·¢ËÍÊý¾ÝÆæÅ¼Ð£Ñé´íµÄ´¦Àí·½Ê½Ñ¡Ôñ (Transmit Repeat Enable) 1£ºÊÕµ½ÆæÅ¼Ð£Ñé³ö´í±êÖ¾£¨error signal£©£¬¸ù¾ÝT£½0ЭÒé×Ô¶¯½øÐлط¢¡£ÔÚµ¥Ò»byteÖØ¸´·¢ËÍ´ÎÊý³¬¹ýREP_Tºó£¬ÖÃtx_parity_err±êÖ¾£¬½øÐÐÖÐ¶Ï 0£ºÊÕµ½Error signalʱ²»½øÐÐ×Ô¶¯»Ø·¢£¬ÖÃtx_parity_err±êÖ¾£¬Ö±½ÓÖÐ¶Ï Ïà¹Øº¯Êý */ void U7816_FFR_TREPEN_Setable(FunState NewState) { if (NewState == ENABLE) { U7816->FFR |= (U7816_FFR_TREPEN_Msk); } else { U7816->FFR &= ~(U7816_FFR_TREPEN_Msk); } } FunState U7816_FFR_TREPEN_Getable(void) { if (U7816->FFR & (U7816_FFR_TREPEN_Msk)) { return ENABLE; } else { return DISABLE; } } /* ½ÓÊÕÊý¾ÝÆæÅ¼Ð£Ñé´íµÄ´¦Àí·½Ê½Ñ¡Ôñ (Receive Repeat Enable) 1£ºÆæÅ¼Ð£Ñé´í£¬¸ù¾ÝT=0ЭÒé×Ô¶¯»Ø·¢ERROR SIGNAL¡£µ¥Ò»BYTEÁ¬Ðø½ÓÊÕ´ÎÊý³¬¹ýREP_Tºó£¬ÖÃRX_PARITY_ERR±êÖ¾£¬½øÐÐÖÐ¶Ï 0£ºÆæÅ¼Ð£Ñé´í£¬²»×Ô¶¯·¢ËÍERROR SIGNAL£¬ÖÃRX_PARITY_ERR±êÖ¾£¬½øÐÐÖÐ¶Ï Ïà¹Øº¯Êý */ void U7816_FFR_RREPEN_Setable(FunState NewState) { if (NewState == ENABLE) { U7816->FFR |= (U7816_FFR_RREPEN_Msk); } else { U7816->FFR &= ~(U7816_FFR_RREPEN_Msk); } } FunState U7816_FFR_RREPEN_Getable(void) { if (U7816->FFR & (U7816_FFR_RREPEN_Msk)) { return ENABLE; } else { return DISABLE; } } /* ´«Êä´ÎÐò£¬±àÂ뷽ʽѡÔñ (bit Direction Conversion) 1£º·´Ïò±àÂ룬ÏÈÊÕ·¢MSB£»(ÊÕ·¢Êý¾Ý+УÑéλ)·´Âß¼­µçƽ 0£ºÕýÏò±àÂ룬ÏÈÊÕ·¢LSB £» (ÊÕ·¢Êý¾Ý+УÑéλ)ÕýÂß¼­µçƽ Ïà¹Øº¯Êý */ void U7816_FFR_DICONV_Set(uint32_t SetValue) { uint32_t tmpreg; tmpreg = U7816->FFR; tmpreg &= ~(U7816_FFR_DICONV_Msk); tmpreg |= (SetValue & U7816_FFR_DICONV_Msk); U7816->FFR = tmpreg; } uint32_t U7816_FFR_DICONV_Get(void) { return (U7816->FFR & U7816_FFR_DICONV_Msk); } /* ·¢ËÍʱ²åÈëµÄExtra Guard Timeʱ¼ä£¨ÒÔETUΪµ¥Î»£© (Transmit Extra Guard Time) Ïà¹Øº¯Êý */ void U7816_EGTR_Write(uint32_t SetValue) { U7816->EGTR = (SetValue & U7816_EGTR_TXEGT_Msk); } uint32_t U7816_EGTR_Read(void) { return (U7816->EGTR & U7816_EGTR_TXEGT_Msk); } /* U7816ʱÖÓÊä³ö·ÖƵ¿ØÖƼĴæÆ÷(Clock Divider)£¬¿ØÖÆ7816¹¤×÷ʱÖÓ·ÖÆµÊý¡£ U7816¹¤×÷ʱÖÓÓëAPBCLKµÄ·ÖƵ¹ØÏµ£º F7816=FAPBCLK/(CLKDIV+1) ÌØÊâÇé¿ö£ºCLK_DIVÉèÖóÉ0»ò1ʱ£¬F7816=FAPBCLK/2 ×¢£º7816ЭÒ鹿¶¨µÄ¹¤×÷ʱÖÓ·¶Î§ÊÇ1~5MHZ¡£ Ïà¹Øº¯Êý */ void U7816_PSC_Write(uint32_t SetValue) { U7816->PSC = (SetValue & U7816_PSC_CLKDIV_Msk); } uint32_t U7816_PSC_Read(void) { return (U7816->PSC & U7816_PSC_CLKDIV_Msk); } /* U7816Ô¤·ÖƵ¿ØÖƼĴæÆ÷(Pre-Divider)£¬¿ØÖÆ7816ͨÐÅ·ÖÆµ±È£¨²¨ÌØÂÊ£© Baud £½ F7816/(PDIV £« 1) ×¢Ò⣺PDIV×îС¿ÉÓÃÖµÊÇ0x1£¬Ó¦ÓýûÖ¹ÅäÖÃ0x0 Ïà¹Øº¯Êý */ void U7816_BGR_Write(uint32_t SetValue) { U7816->BGR = (SetValue & U7816_BGR_PDIV_Msk); } uint32_t U7816_BGR_Read(void) { return (U7816->BGR & U7816_BGR_PDIV_Msk); } /* U7816Êý¾Ý½ÓÊÕ»º´æ¼Ä´æÆ÷ (Receive Buffer) Ïà¹Øº¯Êý */ uint32_t U7816_RXBUF_Read(void) { return (U7816->RXBUF & U7816_RXBUF_RXBUF_Msk); } /* U7816Êý¾Ý·¢ËÍ»º´æ¼Ä´æÆ÷ (Transmit Buffer) Ïà¹Øº¯Êý */ void U7816_TXBUF_Write(uint32_t SetValue) { U7816->TXBUF = (SetValue & U7816_TXBUF_TXBUF_Msk); } /* Êý¾Ý½ÓÊÕÖжÏʹÄÜλ¡£¶ÔÓ¦RXIFÖжϱê־λ (Receive Interrupt Enable) 1£ºµ±RXIF¼Ä´æÆ÷ÖÃλʱ²úÉú½ÓÊÕÍê³ÉÖÐ¶Ï 0£º½ûÖ¹½ÓÊÕÍê³ÉÖÐ¶Ï Ïà¹Øº¯Êý */ void U7816_IER_RXIE_Setable(FunState NewState) { if (NewState == ENABLE) { U7816->IER |= (U7816_IER_RXIE_Msk); } else { U7816->IER &= ~(U7816_IER_RXIE_Msk); } } FunState U7816_IER_RXIE_Getable(void) { if (U7816->IER & (U7816_IER_RXIE_Msk)) { return ENABLE; } else { return DISABLE; } } /* Êý¾Ý·¢ËÍÖжÏʹÄÜλ¡£¶ÔÓ¦TXIFÖжϱê־λ(Transmit Interrupt Enable) 1£ºµ±TXIF¼Ä´æÆ÷ÖÃλʱ²úÉú·¢ËÍÍê³ÉÖÐ¶Ï 0£º½ûÖ¹·¢ËÍÍê³ÉÖÐ¶Ï Ïà¹Øº¯Êý */ void U7816_IER_TXIE_Setable(FunState NewState) { if (NewState == ENABLE) { U7816->IER |= (U7816_IER_TXIE_Msk); } else { U7816->IER &= ~(U7816_IER_TXIE_Msk); } } FunState U7816_IER_TXIE_Getable(void) { if (U7816->IER & (U7816_IER_TXIE_Msk)) { return ENABLE; } else { return DISABLE; } } /* Ïß·״̬ÖжÏʹÄÜλ¡£¶ÔÓ¦ERRIFÖжϱê־λ(Line Status Interrupt Enable) 1£ºµ±ERRIF¼Ä´æÆ÷ÖÃλʱ²úÉúÏß·´íÎóÖÐ¶Ï 0£º½ûÖ¹Ïß·´íÎóÖÐ¶Ï Ïà¹Øº¯Êý */ void U7816_IER_LSIE_Setable(FunState NewState) { if (NewState == ENABLE) { U7816->IER |= (U7816_IER_LSIE_Msk); } else { U7816->IER &= ~(U7816_IER_LSIE_Msk); } } FunState U7816_IER_LSIE_Getable(void) { if (U7816->IER & (U7816_IER_LSIE_Msk)) { return ENABLE; } else { return DISABLE; } } /* U7816½Ó¿Ú·¢ËÍÁË´íÎóÐźţ¬ÕýÔڵȴý¶Ô·½ÖØ·¢Êý¾Ý£»(Waiting for Repeat flag) ״̬»ú½øÈë·¢ËÍ´íÎóÐźÅ״̬ʱÖÃ룬ÊÕµ½Êý¾ÝÆðʼλ»òÕß½øÈë·¢ËÍ״̬ʱӲ¼þÇåÁ㣻 Èí¼þÖ»¶Á¡£ Ïà¹Øº¯Êý */ FlagStatus U7816_ISR_WAIT_RPT_Chk(void) { if (U7816->ISR & U7816_ISR_WAIT_RPT_Msk) { return SET; } else { return RESET; } } /* ·¢ËÍÊý¾Ýæ±êÖ¾¡££¨·¢ËÍÍê³Éºó×Ô¶¯ÇåÁ㣩(Transmission busy flag) 1£º´¦ÓÚÊý¾Ý·¢ËÍ״̬£¬·¢ËÍÒÆÎ»¼Ä´æÆ÷ÕýÔÚ·¢ËÍÊý¾Ý¡££¨¿ªÊ¼·¢ËÍÆðʼλÖÃ1£¬Í£Ö¹Î»ÖмäÇåÁ㣩 0£ºÊý¾Ý·¢ËÍ¿ÕÏÐ Ïà¹Øº¯Êý */ FlagStatus U7816_ISR_TXBUSY_Chk(void) { if (U7816->ISR & U7816_ISR_TXBUSY_Msk) { return SET; } else { return RESET; } } /* ½ÓÊÕÊý¾Ýæ±êÖ¾¡££¨½ÓÊÕÍê³Éºó×Ô¶¯ÇåÁ㣩(Receiving busy flag) 1£º´¦ÓÚÊý¾Ý½ÓÊÕ״̬£¬½ÓÊÕÒÆÎ»¼Ä´æÆ÷ÕýÔÚ½ÓÊÕÊý¾Ý¡££¨ÊÕµ½ÆðʼλÖÃ1£¬ÊÕµ½Í£Ö¹Î»ÇåÁ㣬Èô½ÓÊÕÊý¾Ý³ö´íÐèÖØ·¢£¬Ôò»Ø·¢error signalʱÇåÁã¡£¼´Êý¾Ý¼°Ð£Ñéλ½ÓÊÕÖ®ºó£¬ÎÞÂÛÊÇ·ñÐèÒªÖØ·¢£¬¶¼ÐèÒª¼°Ê±Çå³ý¸Ã±êÖ¾£© 0£ºÊý¾Ý½ÓÊÕ¿ÕÏÐ Ïà¹Øº¯Êý */ FlagStatus U7816_ISR_RXBUSY_Chk(void) { if (U7816->ISR & U7816_ISR_RXBUSY_Msk) { return SET; } else { return RESET; } } /* ·¢ËÍÊý¾ÝÆæÅ¼Ð£Ñé´íÎó±ê־λ¡£Ó²¼þÖÃλ£¬Ð´1ÇåÁã (Transmit Parity Error,write 1 to clear) Ïà¹Øº¯Êý */ void U7816_ISR_TPARERR_Clr(void) { U7816->ISR = U7816_ISR_TPARERR_Msk; } FlagStatus U7816_ISR_TPARERR_Chk(void) { if (U7816->ISR & U7816_ISR_TPARERR_Msk) { return SET; } else { return RESET; } } /* ½ÓÊÕÊý¾ÝÆæÅ¼Ð£Ñé´íÎó±ê־λ¡£Ó²¼þÖÃλ£¬Ð´1ÇåÁã (Receive Parity Error flag,write 1 to clear) Ïà¹Øº¯Êý */ void U7816_ISR_RPARERR_Clr(void) { U7816->ISR = U7816_ISR_RPARERR_Msk; } FlagStatus U7816_ISR_RPARERR_Chk(void) { if (U7816->ISR & U7816_ISR_RPARERR_Msk) { return SET; } else { return RESET; } } /* ½ÓÊÕÖ¡¸ñʽ´íÎó±ê־λ¡£Ó²¼þÖÃλ£¬Ð´1ÇåÁã (Frame Error flag,write 1 to clear) 1£ºÖ¡¸ñʽÓдíÎ󣬽ÓÊÕµ½µÄframe×Ö½Ú³¤¶ÈÓÐÎó»ò½ÓÊÕµ½µÄframe»òÕßstopλÓÐÎó 0£º½ÓÊÕÊý¾ÝʱÎÞÆæÅ¼Ð£Ñé´íÎó Ïà¹Øº¯Êý */ void U7816_ISR_FRERR_Clr(void) { U7816->ISR = U7816_ISR_FRERR_Msk; } FlagStatus U7816_ISR_FRERR_Chk(void) { if (U7816->ISR & U7816_ISR_FRERR_Msk) { return SET; } else { return RESET; } } /* ½ÓÊÕÒç³ö´íÎó±ê־λ¡£Ó²¼þÖÃλ£¬Ð´1ÇåÁã (Receive Overflow Error,write 1 to clear) 1£º½ÓÊÕ»º³å¼Ä´æÆ÷δ±»¶Á³ö£¬ÓÖ½ÓÊÕµ½ÐµÄÊý¾Ý£¬Òç³ö´íÎó±êÖ¾ÓÐЧ¡£Ô­½ÓÊÕ»º³å¼Ä´æÆ÷ÄÚÊý¾Ý±»Ð¸²¸Ç 0£ºÎÞÒç³ö´íÎó Ïà¹Øº¯Êý */ void U7816_ISR_OVERR_Clr(void) { U7816->ISR = U7816_ISR_OVERR_Msk; } FlagStatus U7816_ISR_OVERR_Chk(void) { if (U7816->ISR & U7816_ISR_OVERR_Msk) { return SET; } else { return RESET; } } /* ½ÓÊÕÍê³É±êÖ¾(Receive interrupt flag)£¬U7816½Ó¿Ú¿ØÖÆÆ÷ÿÊÕµ½1byteÊý¾Ý£¬¸ù¾Ý½ÓÊÕµÄͨµÀÏàÓ¦·¢³öÒ»´ÎÖжϡ£Ó²¼þÖÃ룬¶ÁÊý¾Ý½ÓÊÕ»º³å¼Ä´æÆ÷ÇåÁã 1£º½ÓÊÕµ½1byteÊý¾Ý£¬Êý¾Ý½ÓÊÕ»º³åÆ÷Âú 0£ºÎ´½ÓÊÕµ½Êý¾Ý£¬Êý¾Ý½ÓÊÕ»º³åÆ÷¿Õ Ïà¹Øº¯Êý */ FlagStatus U7816_ISR_RXIF_Chk(void) { if (U7816->ISR & U7816_ISR_RXIF_Msk) { return SET; } else { return RESET; } } /* ·¢ËÍ»º³åÇø¿Õ±êÖ¾(Transmit interrupt flag)£¬Éϵ縴λºó´Ë±êÖ¾¾Í×Ô¶¯ÖÃ룬±íʾ»º³åÇø¿Õ£¬¿ÉÒÔдÈëÊý¾Ý¡£Èí¼þдÈëÊý¾Ýºó±êÖ¾×Ô¶¯Çå³ý£¬Êý¾Ý´Ó·¢ËÍ»º´æÒÆÈëÒÆÎ»¼Ä´æÆ÷ºóÖÃ1 1£ºÊý¾Ý·¢ËÍ»º³åÆ÷¿Õ 0£ºÊý¾Ý·¢ËÍ»º³åÆ÷ÄÚÓÐÊý¾Ý´ý·¢ËÍ Ïà¹Øº¯Êý */ FlagStatus U7816_ISR_TXIF_Chk(void) { if (U7816->ISR & U7816_ISR_TXIF_Msk) { return SET; } else { return RESET; } } /* ´íÎó±êÖ¾(Error interrupt flag)£¬¼Ä´æÆ÷ÅäÖóö´í»ò´«Êä¹ý³ÌÖгö´í¡£´ËbitÊÇTPARERR¡¢RPARERR¡¢FRERR¡¢OVERRµÄ»ò¡£Èí¼þͨ¹ýÇå³ýÒÔÉÏ´íÎó±êÖ¾¼Ä´æÆ÷À´Çå³ý´Ëbit¡£ Ïà¹Øº¯Êý */ FlagStatus U7816_ISR_ERRIF_Chk(void) { if (U7816->ISR & U7816_ISR_ERRIF_Msk) { return SET; } else { return RESET; } } void U7816_Deinit(void) { U7816->CR = 0x00000000; U7816->FFR = 0x00000006; //U7816->EGTR = 0x00000000; //U7816->PSC = 0x00000000; //U7816->BGR = 0x00000100; //U7816->RXBUF = 0x00000000; //U7816->TXBUF = 0x00000000; //U7816->IER = 0x00000000; //U7816->ISR = 0x00000002; } /* U7816ÍêÕû²ÎÊý³õʼ»¯º¯Êý */ /******************************************* º¯ÊýÃû£ºU7816_Init º¯Êý¹¦ÄÜ: U7816ÍêÕû²ÎÊý³õʼ»¯º¯Êý ÊäÈë²ÎÊý£ºU7816x£ºU78160¡¢U78161 para£ºU7816_InitTypeDefÊý×é Êä³ö²ÎÊý: ÎÞ *******************************************/ void U7816_Init(U7816_InitTypeDef* para) { U7816_CR_TXEN_Setable(para->TXEN); //·¢ËÍʹÄÜ U7816_CR_RXEN_Setable(para->RXEN); //½ÓÊÜʹÄÜ U7816_CR_CKOEN_Setable(para->CKOEN); //U7816ʱÖÓCLKÊä³öʹÄÜ¿ØÖÆ U7816_CR_HPUAT_Setable(para->HPUAT); //U7816ͨµÀÊý¾Ý·¢ËÍÇ¿ÉÏÀ­µç×è×Ô¶¯ÓÐЧ¿ØÖÆ U7816_CR_HPUEN_Setable(para->HPUEN); //U7816ͨµÀÇ¿ÉÏÀ­Ê¹ÄÜ¿ØÖÆ U7816_FFR_ERSW_Set(para->ERSW); //ERROR SIGNAL¿í¶ÈÑ¡Ôñ U7816_FFR_ERSGD_Set(para->ERSGD); //ERROR SIGNALºóGUARDTIME¿í¶ÈÑ¡Ôñ£¨½öÔÚ·¢ËÍʱÓÐЧ£© U7816_FFR_BGTEN_Setable(para->BGTEN); //BGT£¨block guard time£©¿ØÖÆ U7816_FFR_REP_T_Set(para->REP_T); //¿ØÖƽÓÊÕÊý¾ÝÆæÅ¼Ð£Ñé³ö´íʱ×Ô¶¯ÖØ·¢´ÎÊý U7816_FFR_PAR_Set(para->PAR); //ÆæÅ¼Ð£ÑéÀàÐÍÑ¡Ôñ U7816_FFR_SFREN_Set(para->SFREN); //Guard Time³¤¶È¿ØÖÆÎ»£¨·¢ËÍʱÑϸñ°´ÕÕЭÒé2etu£© U7816_FFR_RFREN_Set(para->RFREN); //½ÓÊÕGuard Time³¤¶È¿ØÖÆÎ» U7816_FFR_TREPEN_Setable(para->TREPEN); //»º·¢ËÍÊý¾ÝÆæÅ¼Ð£Ñé´íµÄ´¦Àí·½Ê½Ñ¡Ôñ U7816_FFR_RREPEN_Setable(para->RREPEN); //½ÓÊÕÊý¾ÝÆæÅ¼Ð£Ñé´íµÄ´¦Àí·½Ê½Ñ¡Ôñ U7816_FFR_DICONV_Set(para->DICONV); //´«Êä´ÎÐò·´Ïò±àÂëʹÄÜ U7816_EGTR_Write(para->TXEGT); //·¢ËÍʱ²åÈëµÄEGTʱ¼ä£¨ÒÔETUΪµ¥Î»£© U7816_PSC_Write(para->CLKDIV); //U7816ʱÖÓÊä³ö·ÖƵ¿ØÖƼĴæÆ÷ U7816_BGR_Write(para->PDIV); //U7816Ô¤·ÖƵ¿ØÖƼĴæÆ÷£¬¿ØÖÆ7816ͨÐÅ·ÖÆµ±È£¨²¨ÌØÂÊ£© U7816_IER_RXIE_Setable(para->RXIE); //Êý¾Ý½ÓÊÕÖжÏʹÄÜλ¡£¶ÔÓ¦RX_FLAGÖжϱê־λ U7816_IER_TXIE_Setable(para->TXIE); //Êý¾Ý·¢ËÍÖжÏʹÄÜλ¡£¶ÔÓ¦TX_FLAGÖжϱê־λ U7816_IER_LSIE_Setable(para->LSIE); //Ïß·״̬ÖжÏʹÄÜλ¡£¶ÔÓ¦ERROR_FLAGÖжϱê־λ } /******END OF FILE****/