/**
|
******************************************************************************
|
* @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 etu0£º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£ºEven01£ºOdd10£ºAlways 111£º²»Ð£Ñ飬´¦Àí Ïà¹Øº¯Êý */
|
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 etu0£º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)£¬Éϵ縴λºó´Ë±êÖ¾¾Í×Ô¶¯ÖÃ룬±íʾ»º³åÇø¿Õ£¬¿ÉÒÔдÈëÊý¾Ý¡£Èí¼þдÈëÊý¾Ýºó±êÖ¾×Ô¶¯Çå³ý£¬Êý¾Ý´Ó·¢ËÍ»º´æÒÆÈëÒÆÎ»¼Ä´æÆ÷ºóÖÃ11£ºÊý¾Ý·¢ËÍ»º³åÆ÷¿Õ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****/
|