📄 fesc_5554_general.c
字号:
void pad_func_config( uint16_t port, uint16_t config)
{
SIU.PCR[port].R = config;
}
/*================================================*/
/* GPIO */
/*================================================*/
void set_GPIO(uint8_t pin,uint8_t val)
{
if( val > 1) //toggle PIN
SIU.GPDO[pin].R = !SIU.GPDO[pin].R; /* Invert gpio port */
else
SIU.GPDO[pin].R = val;
}
/*================================================*/
void set_led(uint8_t led, uint8_t status)
{
set_GPIO(led,status);
}
/*************************************************************************/
/* FUNCTION : delay */
/* PURPOSE : */
/* INPUT NOTES : */
/* RETURN NOTES : None */
/* WARNING : None */
/*************************************************************************/
void delay(uint32_t cnt)
{
uint32_t i=0;
while(i<cnt) i++;
}
/*************************************************************************/
/* FUNCTION : char2num */
/* PURPOSE : conv a character to number */
/* INPUT NOTES : */
/* RETURN NOTES : None */
/* WARNING : for char not in ‘0123456789abcdefABCDEF', return0 */
/*************************************************************************/
uint8_t char2num(uint8_t inch)
{
uint8_t ch;
ch = toupper(inch);
if (( ch <= '9') && (ch >= '0')) return(ch-'0');
else if (( ch <= 'F') && (ch >= 'A')) return(ch-'A'+10);
else return(0);
}
/*-----------------------------------------------*/
/* Dual-Port buffer */
/* one routine pushs data into DPB */
/* another routine pops data from it and process */
/* it loSBP_RTSTUS_OKs like a FIFO, dual-port access */
/*-----------------------------------------------*/
/*************************************************************************/
/* FUNCTION : Flush_DP_Buf */
/* PURPOSE : */
/* INPUT NOTES : */
/* RETURN NOTES : None */
/* WARNING : None */
/*************************************************************************/
void init_dpb(DP_BUF_tag* pt,uint8_t* mem,uint32_t len)
{ uint32_t i;
pt->n = 0;
pt->in_n = 0;
pt->out_n= 0;
pt->len = len;
pt->addr = mem;
for(i=0;i<len;i++) *(mem+i) = 0;
}
/*************************************************************************/
/* FUNCTION : push 1 data into ring buf */
/* PURPOSE : */
/* INPUT NOTES : */
/* RETURN NOTES : None */
/* WARNING : None */
/*************************************************************************/
uint8_t push_dpb_data(DP_BUF_tag* pt,uint8_t data)
{
EnterCritical();
if (pt->n < pt->len) /* buffer full? */
{ *(pt->addr + pt->in_n) = data; /* Put character into buffer */
pt->n++; /* No, increment character count */
/* the n and data must be coherenct */
ExitCritical();
pt->in_n++;
if (pt->in_n == pt->len)
pt->in_n = 0;
return(DP_BUF_SBP_RTSTUS_OK);
}
else
{ ExitCritical();
return(DP_BUF_FULL);
}
}
uint8_t push_dpb_block(DP_BUF_tag* pt,uint8_t* buf,uint8_t len)
{ uint8_t i;
uint8_t* addr;
addr = (pt->addr + pt->in_n);
EnterCritical();
if ((pt->n+len) < pt->len) /* buffer full? */
{ pt->n += len;
for(i=0;i<len;i++) *(addr+i) = *(buf+i); /* Put character into buffer */
/* the n and data must be coherenct */
ExitCritical();
pt->in_n+=len;
if (pt->in_n >= pt->len)
pt->in_n -= pt->len;
return(DP_BUF_SBP_RTSTUS_OK);
}
else
{ ExitCritical();
return(DP_BUF_FULL);
}
}
/*************************************************************************/
/* FUNCTION : pop 1 data from ring buf */
/* PURPOSE : */
/* INPUT NOTES : */
/* RETURN NOTES : None */
/* WARNING : None */
/*************************************************************************/
uint8_t pop_dpb_data(DP_BUF_tag* pt,uint8_t* data)
{
EnterCritical();
if (pt->n >0) /* buffer empty? */
{ pt->n--; /* No, increment character count */
*data = *(pt->addr + pt->out_n); /* Put character into buffer */
ExitCritical();
pt->out_n++;
if (pt->out_n == pt->len) pt->out_n = 0;
return(DP_BUF_SBP_RTSTUS_OK);
}
else
{ ExitCritical();
return( DP_BUF_EMPTY);
}
}
/*************************************************************************/
/* FUNCTION : check ring buf empty */
/* PURPOSE : */
/* INPUT NOTES : */
/* RETURN NOTES : None */
/* WARNING : None */
/*************************************************************************/
/*************************************************************************/
/* FUNCTION : pop 1 data from ring buf */
/* PURPOSE : */
/* INPUT NOTES : */
/* RETURN NOTES : None */
/* WARNING : None */
/*************************************************************************/
//end of file
/*************************************************************************/
/* FUNCTION : */
/* PURPOSE : */
/* INPUT NOTES : */
/* RETURN NOTES : None */
/* WARNING : None */
/*************************************************************************/
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -