[mw_shl_code=c,true]程序如下,但是编译提示:我的USARTx一直未被使用,何问题
//RS485查询接收到的数据
//buf:接收缓存首地址
//len:读到的数据长度
void RS485_Receive_Data(u8 tag,u8 *buf,u8 *len)
{
u8 RS485_RX_BUF[64];
u8 RS485_RX_CNT;
u8 rxlen;
u8 i=0;
USART_TypeDef* USARTx;
switch(tag)
{
case 1:
USARTx=USART1;
rxlen=RS485_RX1_CNT;
for(i=0;i<64;i++)
{
RS485_RX_BUF=RS485_RX1_BUF;
}
RS485_RX_CNT=RS485_RX1_CNT;break;
case 2:
USARTx=USART2;
rxlen=RS485_RX2_CNT;
for(i=0;i<64;i++)
{
RS485_RX_BUF=RS485_RX2_BUF;
}
RS485_RX_CNT=RS485_RX2_CNT;break;
case 3:
USARTx=USART3;
rxlen=RS485_RX3_CNT;
for(i=0;i<64;i++)
{
RS485_RX_BUF=RS485_RX3_BUF;
}
RS485_RX_CNT=RS485_RX3_CNT;break;
case 4:
USARTx=UART4;
rxlen=RS485_RX4_CNT;
for(i=0;i<64;i++)
{
RS485_RX_BUF=RS485_RX4_BUF;
}
RS485_RX_CNT=RS485_RX4_CNT;break;
}
*len=0; //默认为0
delay_ms(10); //等待10ms,连续超过10ms没有接收到一个数据,则认为接收结束
if(rxlen==RS485_RX_CNT&&rxlen)//接收到了数据,且接收完成了
{
for(i=0;i<rxlen;i++)
{
buf=RS485_RX_BUF;
}
*len=RS485_RX_CNT; //记录本次数据长度
switch(tag)
{
case 1:
RS485_RX1_CNT=0;break;
case 2:
RS485_RX2_CNT=0;break;
case 3:
RS485_RX3_CNT=0;break;
case 4:
RS485_RX4_CNT=0;break;
}
RS485_RX_CNT=0; //清零
}
}[/mw_shl_code]
|